From e41619775f0ab57d67d4f49637768417730d68c0 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 21 Sep 2023 11:58:51 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=E3=83=97=E3=83=AD=E3=83=95?= =?UTF-8?q?=E3=82=A3=E3=83=BC=E3=83=AB=E3=81=A7=E3=81=AE=E3=83=AA=E3=83=B3?= =?UTF-8?q?=E3=82=AF=E6=A4=9C=E8=A8=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolve #11099 --- CHANGELOG.md | 1 + locales/index.d.ts | 1 + locales/ja-JP.yml | 1 + .../migration/1695260774117-verified-links.js | 11 ++++ .../src/core/entities/UserEntityService.ts | 1 + packages/backend/src/models/UserProfile.ts | 6 ++ .../backend/src/models/json-schema/user.ts | 9 +++ .../src/server/api/endpoints/i/update.ts | 55 +++++++++++++++++-- packages/backend/test/e2e/users.ts | 2 + packages/frontend/.storybook/fakes.ts | 1 + packages/frontend/src/pages/user/home.vue | 10 +++- packages/misskey-js/etc/misskey-js.api.md | 1 + packages/misskey-js/src/entities.ts | 1 + 13 files changed, 93 insertions(+), 7 deletions(-) create mode 100644 packages/backend/migration/1695260774117-verified-links.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 2492b187ac..18c5d5f558 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ - Feat: 二要素認証のバックアップコードが生成されるようになりました - ref. https://github.com/MisskeyIO/misskey/pull/121 - Feat: 二要素認証でパスキーをサポートするようになりました +- Feat: プロフィールでのリンク検証 - Feat: 通知をテストできるようになりました - Feat: PWAのアイコンが設定できるようになりました - Enhance: manifest.jsonをオーバーライド可能に diff --git a/locales/index.d.ts b/locales/index.d.ts index 649b0be44a..bd1f10d86e 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -1116,6 +1116,7 @@ export interface Locale { "loadConversation": string; "pinnedList": string; "keepScreenOn": string; + "verifiedLink": string; "_announcement": { "forExistingUsers": string; "forExistingUsersDescription": string; diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 69228ed17e..8e684111fd 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1113,6 +1113,7 @@ loadReplies: "返信を見る" loadConversation: "会話を見る" pinnedList: "ピン留めされたリスト" keepScreenOn: "デバイスの画面を常にオンにする" +verifiedLink: "このリンク先の所有者であることが確認されました" _announcement: forExistingUsers: "既存ユーザーのみ" diff --git a/packages/backend/migration/1695260774117-verified-links.js b/packages/backend/migration/1695260774117-verified-links.js new file mode 100644 index 0000000000..18e0571d81 --- /dev/null +++ b/packages/backend/migration/1695260774117-verified-links.js @@ -0,0 +1,11 @@ +export class VerifiedLinks1695260774117 { + name = 'VerifiedLinks1695260774117' + + async up(queryRunner) { + await queryRunner.query(`ALTER TABLE "user_profile" ADD "verifiedLinks" character varying array NOT NULL DEFAULT '{}'`); + } + + async down(queryRunner) { + await queryRunner.query(`ALTER TABLE "user_profile" DROP COLUMN "verifiedLinks"`); + } +} diff --git a/packages/backend/src/core/entities/UserEntityService.ts b/packages/backend/src/core/entities/UserEntityService.ts index c0909a663d..7bef410bf9 100644 --- a/packages/backend/src/core/entities/UserEntityService.ts +++ b/packages/backend/src/core/entities/UserEntityService.ts @@ -384,6 +384,7 @@ export class UserEntityService implements OnModuleInit { birthday: profile!.birthday, lang: profile!.lang, fields: profile!.fields, + verifiedLinks: profile!.verifiedLinks, followersCount: followersCount ?? 0, followingCount: followingCount ?? 0, notesCount: user.notesCount, diff --git a/packages/backend/src/models/UserProfile.ts b/packages/backend/src/models/UserProfile.ts index 6c7ffe4c39..e4405c9da7 100644 --- a/packages/backend/src/models/UserProfile.ts +++ b/packages/backend/src/models/UserProfile.ts @@ -48,6 +48,12 @@ export class MiUserProfile { value: string; }[]; + @Column('varchar', { + array: true, + default: '{}', + }) + public verifiedLinks: string[]; + @Column('varchar', { length: 32, nullable: true, }) diff --git a/packages/backend/src/models/json-schema/user.ts b/packages/backend/src/models/json-schema/user.ts index 3314464c31..8d0e4e72ed 100644 --- a/packages/backend/src/models/json-schema/user.ts +++ b/packages/backend/src/models/json-schema/user.ts @@ -169,6 +169,15 @@ export const packedUserDetailedNotMeOnlySchema = { }, }, }, + verifiedLinks: { + type: 'array', + nullable: false, optional: false, + items: { + type: 'string', + nullable: false, optional: false, + format: 'url', + }, + }, followersCount: { type: 'number', nullable: false, optional: false, diff --git a/packages/backend/src/server/api/endpoints/i/update.ts b/packages/backend/src/server/api/endpoints/i/update.ts index 3953b19002..b11e091957 100644 --- a/packages/backend/src/server/api/endpoints/i/update.ts +++ b/packages/backend/src/server/api/endpoints/i/update.ts @@ -6,11 +6,13 @@ import RE2 from 're2'; import * as mfm from 'mfm-js'; import { Inject, Injectable } from '@nestjs/common'; +import ms from 'ms'; +import { JSDOM } from 'jsdom'; import { extractCustomEmojisFromMfm } from '@/misc/extract-custom-emojis-from-mfm.js'; import { extractHashtags } from '@/misc/extract-hashtags.js'; import * as Acct from '@/misc/acct.js'; import type { UsersRepository, DriveFilesRepository, UserProfilesRepository, PagesRepository } from '@/models/_.js'; -import type { MiUser } from '@/models/User.js'; +import type { MiLocalUser, MiUser } from '@/models/User.js'; import { birthdaySchema, descriptionSchema, locationSchema, nameSchema } from '@/models/User.js'; import type { MiUserProfile } from '@/models/UserProfile.js'; import { notificationTypes } from '@/types.js'; @@ -27,6 +29,9 @@ import { RoleService } from '@/core/RoleService.js'; import { CacheService } from '@/core/CacheService.js'; import { RemoteUserResolveService } from '@/core/RemoteUserResolveService.js'; import { DriveFileEntityService } from '@/core/entities/DriveFileEntityService.js'; +import { HttpRequestService } from '@/core/HttpRequestService.js'; +import type { Config } from '@/config.js'; +import { safeForSql } from '@/misc/safe-for-sql.js'; import { ApiLoggerService } from '../../ApiLoggerService.js'; import { ApiError } from '../../error.js'; @@ -37,6 +42,11 @@ export const meta = { kind: 'write:account', + limit: { + duration: ms('1hour'), + max: 10, + }, + errors: { noSuchAvatar: { message: 'No such avatar file.', @@ -173,6 +183,9 @@ export const paramDef = { @Injectable() export default class extends Endpoint { // eslint-disable-line import/no-default-export constructor( + @Inject(DI.config) + private config: Config, + @Inject(DI.usersRepository) private usersRepository: UsersRepository, @@ -195,9 +208,10 @@ export default class extends Endpoint { // eslint- private hashtagService: HashtagService, private roleService: RoleService, private cacheService: CacheService, + private httpRequestService: HttpRequestService, ) { super(meta, paramDef, async (ps, _user, token) => { - const user = await this.usersRepository.findOneByOrFail({ id: _user.id }); + const user = await this.usersRepository.findOneByOrFail({ id: _user.id }) as MiLocalUser; const isSecure = token == null; const updates = {} as Partial; @@ -296,9 +310,9 @@ export default class extends Endpoint { // eslint- if (ps.fields) { profileUpdates.fields = ps.fields - .filter(x => typeof x.name === 'string' && x.name !== '' && typeof x.value === 'string' && x.value !== '') + .filter(x => typeof x.name === 'string' && x.name.trim() !== '' && typeof x.value === 'string' && x.value.trim() !== '') .map(x => { - return { name: x.name, value: x.value }; + return { name: x.name.trim(), value: x.value.trim() }; }); } @@ -364,7 +378,11 @@ export default class extends Endpoint { // eslint- if (Object.keys(updates).includes('alsoKnownAs')) { this.cacheService.uriPersonCache.set(this.userEntityService.genLocalUserUri(user.id), { ...user, ...updates }); } - if (Object.keys(profileUpdates).length > 0) await this.userProfilesRepository.update(user.id, profileUpdates); + + await this.userProfilesRepository.update(user.id, { + ...profileUpdates, + verifiedLinks: [], + }); const iObj = await this.userEntityService.pack(user.id, user, { detail: true, @@ -386,7 +404,34 @@ export default class extends Endpoint { // eslint- // フォロワーにUpdateを配信 this.accountUpdateService.publishToFollowers(user.id); + const urls = updatedProfile.fields.filter(x => x.value.startsWith('https://')); + for (const url of urls) { + this.verifyLink(url.value, user); + } + return iObj; }); } + + private async verifyLink(url: string, user: MiLocalUser) { + if (!safeForSql(url)) return; + + const html = await this.httpRequestService.getHtml(url); + + const { window } = new JSDOM(html); + const doc = window.document; + + const myLink = `${this.config.url}/@${user.username}`; + + const includesMyLink = Array.from(doc.getElementsByTagName('a')).some(a => a.href === myLink); + + if (includesMyLink) { + await this.userProfilesRepository.createQueryBuilder('profile').update() + .where('userId = :userId', { userId: user.id }) + .set({ + verifiedLinks: () => `array_append("verifiedLinks", '${url}')`, // ここでSQLインジェクションされそうなのでとりあえず safeForSql で弾いている + }) + .execute(); + } + } } diff --git a/packages/backend/test/e2e/users.ts b/packages/backend/test/e2e/users.ts index 2c396813ff..13cea0cfc2 100644 --- a/packages/backend/test/e2e/users.ts +++ b/packages/backend/test/e2e/users.ts @@ -102,6 +102,7 @@ describe('ユーザー', () => { birthday: user.birthday, lang: user.lang, fields: user.fields, + verifiedLinks: user.verifiedLinks, followersCount: user.followersCount, followingCount: user.followingCount, notesCount: user.notesCount, @@ -369,6 +370,7 @@ describe('ユーザー', () => { assert.strictEqual(response.birthday, null); assert.strictEqual(response.lang, null); assert.deepStrictEqual(response.fields, []); + assert.deepStrictEqual(response.verifiedLinks, []); assert.strictEqual(response.followersCount, 0); assert.strictEqual(response.followingCount, 0); assert.strictEqual(response.notesCount, 0); diff --git a/packages/frontend/.storybook/fakes.ts b/packages/frontend/.storybook/fakes.ts index 14481deeea..2bda89196a 100644 --- a/packages/frontend/.storybook/fakes.ts +++ b/packages/frontend/.storybook/fakes.ts @@ -89,6 +89,7 @@ export function userDetailed(id = 'someuserid', username = 'miskist', host = 'mi value: 'https://misskey-hub.net', }, ], + verifiedLinks: [], followersCount: 1024, followingCount: 16, hasPendingFollowRequestFromYou: false, diff --git a/packages/frontend/src/pages/user/home.vue b/packages/frontend/src/pages/user/home.vue index 8195c40bf9..385c81a97f 100644 --- a/packages/frontend/src/pages/user/home.vue +++ b/packages/frontend/src/pages/user/home.vue @@ -101,6 +101,7 @@ SPDX-License-Identifier: AGPL-3.0-only
+
@@ -671,7 +672,12 @@ onUnmounted(() => { diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md index 99b3852b02..fd2d0ced02 100644 --- a/packages/misskey-js/etc/misskey-js.api.md +++ b/packages/misskey-js/etc/misskey-js.api.md @@ -2778,6 +2778,7 @@ type UserDetailed = UserLite & { name: string; value: string; }[]; + verifiedLinks: string[]; followersCount: number; followingCount: number; hasPendingFollowRequestFromYou: boolean; diff --git a/packages/misskey-js/src/entities.ts b/packages/misskey-js/src/entities.ts index 2876339102..018210c96b 100644 --- a/packages/misskey-js/src/entities.ts +++ b/packages/misskey-js/src/entities.ts @@ -38,6 +38,7 @@ export type UserDetailed = UserLite & { description: string | null; ffVisibility: 'public' | 'followers' | 'private'; fields: {name: string; value: string}[]; + verifiedLinks: string[]; followersCount: number; followingCount: number; hasPendingFollowRequestFromYou: boolean; From b654446f937531f1d635da44397f11c507b4da69 Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 21 Sep 2023 15:14:08 +0900 Subject: [PATCH 2/4] enhance(frontend): tweak ui --- locales/index.d.ts | 1 + locales/ja-JP.yml | 1 + packages/frontend/src/pages/settings/profile.vue | 3 +++ 3 files changed, 5 insertions(+) diff --git a/locales/index.d.ts b/locales/index.d.ts index bd1f10d86e..c4379409fd 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -2021,6 +2021,7 @@ export interface Locale { "metadataContent": string; "changeAvatar": string; "changeBanner": string; + "verifiedLinkDescription": string; }; "_exportOrImport": { "allNotes": string; diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 8e684111fd..f39bc52822 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -1936,6 +1936,7 @@ _profile: metadataContent: "内容" changeAvatar: "アイコン画像を変更" changeBanner: "バナー画像を変更" + verifiedLinkDescription: "内容にURLを設定すると、リンク先のWebサイトに自分のプロフィールへのリンクが含まれている場合に所有者確認済みアイコンを表示させることができます。" _exportOrImport: allNotes: "全てのノート" diff --git a/packages/frontend/src/pages/settings/profile.vue b/packages/frontend/src/pages/settings/profile.vue index e045009c1b..5e4889f61c 100644 --- a/packages/frontend/src/pages/settings/profile.vue +++ b/packages/frontend/src/pages/settings/profile.vue @@ -76,6 +76,8 @@ SPDX-License-Identifier: AGPL-3.0-only + + {{ i18n.ts._profile.verifiedLinkDescription }} @@ -119,6 +121,7 @@ import { langmap } from '@/scripts/langmap.js'; import { definePageMetadata } from '@/scripts/page-metadata.js'; import { claimAchievement } from '@/scripts/achievements.js'; import { defaultStore } from '@/store.js'; +import MkInfo from '@/components/MkInfo.vue'; const Sortable = defineAsyncComponent(() => import('vuedraggable').then(x => x.default)); From 51c3ef556154116e0da3ecc89f75e33d44c197ef Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 21 Sep 2023 15:24:47 +0900 Subject: [PATCH 3/4] update deps --- packages/frontend/package.json | 4 +- pnpm-lock.yaml | 103 +++++++++------------------------ 2 files changed, 29 insertions(+), 78 deletions(-) diff --git a/packages/frontend/package.json b/packages/frontend/package.json index 1b3f78c2b3..8c3b49f18b 100644 --- a/packages/frontend/package.json +++ b/packages/frontend/package.json @@ -59,13 +59,13 @@ "querystring": "0.2.1", "rollup": "3.29.2", "sanitize-html": "2.11.0", - "sass": "1.67.0", + "sass": "1.68.0", "strict-event-emitter-types": "2.0.0", "textarea-caret": "3.1.0", "three": "0.156.1", "throttle-debounce": "5.0.0", "tinycolor2": "1.6.0", - "tsc-alias": "1.8.7", + "tsc-alias": "1.8.8", "tsconfig-paths": "4.2.0", "twemoji-parser": "14.0.0", "typescript": "5.2.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a1fe5c9e21..8649cd581f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -770,8 +770,8 @@ importers: specifier: 2.11.0 version: 2.11.0 sass: - specifier: 1.67.0 - version: 1.67.0 + specifier: 1.68.0 + version: 1.68.0 strict-event-emitter-types: specifier: 2.0.0 version: 2.0.0 @@ -788,8 +788,8 @@ importers: specifier: 1.6.0 version: 1.6.0 tsc-alias: - specifier: 1.8.7 - version: 1.8.7 + specifier: 1.8.8 + version: 1.8.8 tsconfig-paths: specifier: 4.2.0 version: 4.2.0 @@ -807,7 +807,7 @@ importers: version: 1.8.1 vite: specifier: 4.4.9 - version: 4.4.9(@types/node@20.6.3)(sass@1.67.0)(terser@5.20.0) + version: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) vue: specifier: 3.3.4 version: 3.3.4 @@ -976,7 +976,7 @@ importers: version: 7.4.2 storybook-addon-misskey-theme: specifier: github:misskey-dev/storybook-addon-misskey-theme - version: github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@7.4.3)(@storybook/components@7.4.2)(@storybook/core-events@7.4.3)(@storybook/manager-api@7.4.3)(@storybook/preview-api@7.4.3)(@storybook/theming@7.4.3)(@storybook/types@7.4.3)(react-dom@18.2.0)(react@18.2.0) + version: github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@7.4.3)(@storybook/components@7.4.3)(@storybook/core-events@7.4.3)(@storybook/manager-api@7.4.3)(@storybook/preview-api@7.4.3)(@storybook/theming@7.4.3)(@storybook/types@7.4.3)(react-dom@18.2.0)(react@18.2.0) summaly: specifier: github:misskey-dev/summaly version: github.com/misskey-dev/summaly/d2d8db49943ccb201c1b1b283e9d0a630519fac7 @@ -985,7 +985,7 @@ importers: version: 1.0.3 vitest: specifier: 0.34.4 - version: 0.34.4(happy-dom@10.0.3)(sass@1.67.0)(terser@5.20.0) + version: 0.34.4(happy-dom@10.0.3)(sass@1.68.0)(terser@5.20.0) vitest-fetch-mock: specifier: 0.2.2 version: 0.2.2(vitest@0.34.4) @@ -4262,7 +4262,7 @@ packages: magic-string: 0.27.0 react-docgen-typescript: 2.2.2(typescript@5.2.2) typescript: 5.2.2 - vite: 4.4.9(@types/node@20.6.3)(sass@1.67.0)(terser@5.20.0) + vite: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) dev: true /@jridgewell/gen-mapping@0.3.2: @@ -6300,7 +6300,7 @@ packages: remark-slug: 6.1.0 rollup: 3.29.2 typescript: 5.2.2 - vite: 4.4.9(@types/node@20.6.3)(sass@1.67.0)(terser@5.20.0) + vite: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) transitivePeerDependencies: - encoding - supports-color @@ -6413,29 +6413,6 @@ packages: - supports-color dev: true - /@storybook/components@7.4.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-ecbDzSUd74vf6IwHsbQr+9mVRxKWLmwd9zJ8RHMcR8UejTRAAR/eVvYoCG331TQ8TrhTmHTy5xCVv47pm6ORkQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@radix-ui/react-select': 1.2.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toolbar': 1.0.4(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 7.4.2 - '@storybook/csf': 0.1.0 - '@storybook/global': 5.0.0 - '@storybook/theming': 7.4.2(react-dom@18.2.0)(react@18.2.0) - '@storybook/types': 7.4.2 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - use-resize-observer: 9.1.0(react-dom@18.2.0)(react@18.2.0) - util-deprecate: 1.0.2 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - dev: true - /@storybook/components@7.4.3(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-qwRW8wGUuM+H6oKUXXoIDrZECXh/lzowrWXFAzZiocovYEhPtZfl/yvJLWHjOwtka3n7lA7J7EtcjWe8/tueJQ==} peerDependencies: @@ -6861,7 +6838,7 @@ packages: react: 18.2.0 react-docgen: 6.0.0-alpha.3 react-dom: 18.2.0(react@18.2.0) - vite: 4.4.9(@types/node@20.6.3)(sass@1.67.0)(terser@5.20.0) + vite: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) transitivePeerDependencies: - '@preact/preset-vite' - encoding @@ -6979,20 +6956,6 @@ packages: ts-dedent: 2.2.0 dev: true - /@storybook/theming@7.4.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-wVmxZHVCqDoZgUOXTS4HRV4UClLtCydRNOEuUZ7X08QIPSA1FVL3gEpTQJfgCsyBX/cwSSofAMUbzAGEVNo+9g==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - dependencies: - '@emotion/use-insertion-effect-with-fallbacks': 1.0.0(react@18.2.0) - '@storybook/client-logger': 7.4.2 - '@storybook/global': 5.0.0 - memoizerific: 1.11.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true - /@storybook/theming@7.4.3(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-u5wLwWmhGcTmkcs6f2wDGv+w8wzwbNJat0WaIIbwdJfX7arH6nO5HkBhNxvl6FUFxX0tovp/e9ULzxVPc356jw==} peerDependencies: @@ -7040,7 +7003,7 @@ packages: magic-string: 0.30.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - vite: 4.4.9(@types/node@20.6.3)(sass@1.67.0)(terser@5.20.0) + vite: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) vue-docgen-api: 4.64.1(vue@3.3.4) transitivePeerDependencies: - '@preact/preset-vite' @@ -7524,7 +7487,7 @@ packages: dom-accessibility-api: 0.5.16 lodash: 4.17.21 redent: 3.0.0 - vitest: 0.34.4(happy-dom@10.0.3)(sass@1.67.0)(terser@5.20.0) + vitest: 0.34.4(happy-dom@10.0.3)(sass@1.68.0)(terser@5.20.0) dev: true /@testing-library/user-event@14.4.3(@testing-library/dom@9.2.0): @@ -8322,7 +8285,7 @@ packages: '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.22.11) magic-string: 0.27.0 react-refresh: 0.14.0 - vite: 4.4.9(@types/node@20.6.3)(sass@1.67.0)(terser@5.20.0) + vite: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) transitivePeerDependencies: - supports-color dev: true @@ -8334,7 +8297,7 @@ packages: vite: ^4.0.0 vue: ^3.2.25 dependencies: - vite: 4.4.9(@types/node@20.6.3)(sass@1.67.0)(terser@5.20.0) + vite: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) vue: 3.3.4 /@vitest/coverage-v8@0.34.4(vitest@0.34.4): @@ -8353,7 +8316,7 @@ packages: std-env: 3.3.3 test-exclude: 6.0.0 v8-to-istanbul: 9.1.0 - vitest: 0.34.4(happy-dom@10.0.3)(sass@1.67.0)(terser@5.20.0) + vitest: 0.34.4(happy-dom@10.0.3)(sass@1.68.0)(terser@5.20.0) transitivePeerDependencies: - supports-color dev: true @@ -17407,8 +17370,8 @@ packages: postcss: 8.4.30 dev: false - /sass@1.67.0: - resolution: {integrity: sha512-SVrO9ZeX/QQyEGtuZYCVxoeAL5vGlYjJ9p4i4HFuekWl8y/LtJ7tJc10Z+ck1c8xOuoBm2MYzcLfTAffD0pl/A==} + /sass@1.68.0: + resolution: {integrity: sha512-Lmj9lM/fef0nQswm1J2HJcEsBUba4wgNx2fea6yJHODREoMFnwRpZydBnX/RjyXw2REIwdkbqE4hrTo4qfDBUA==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -18622,18 +18585,6 @@ packages: resolution: {integrity: sha512-vDWbsl26LIcPGmDpoVzjEP6+hvHZkBkLW7JpvwbCv/5IYPJlsbzCVXY3wsCeAxAUeTclNOUZxnLdGh3VBD/J6w==} dev: true - /tsc-alias@1.8.7: - resolution: {integrity: sha512-59Q/zUQa3miTf99mLbSqaW0hi1jt4WoG8Uhe5hSZJHQpSoFW9eEwvW7jlKMHXWvT+zrzy3SN9PE/YBhQ+WVydA==} - hasBin: true - dependencies: - chokidar: 3.5.3 - commander: 9.5.0 - globby: 11.1.0 - mylas: 2.1.13 - normalize-path: 3.0.0 - plimit-lit: 1.5.0 - dev: false - /tsc-alias@1.8.8: resolution: {integrity: sha512-OYUOd2wl0H858NvABWr/BoSKNERw3N9GTi3rHPK8Iv4O1UyUXIrTTOAZNHsjlVpXFOhpJBVARI1s+rzwLivN3Q==} hasBin: true @@ -19183,7 +19134,7 @@ packages: core-util-is: 1.0.2 extsprintf: 1.3.0 - /vite-node@0.34.4(@types/node@20.6.3)(sass@1.67.0)(terser@5.20.0): + /vite-node@0.34.4(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0): resolution: {integrity: sha512-ho8HtiLc+nsmbwZMw8SlghESEE3KxJNp04F/jPUCLVvaURwt0d+r9LxEqCX5hvrrOQ0GSyxbYr5ZfRYhQ0yVKQ==} engines: {node: '>=v14.18.0'} hasBin: true @@ -19193,7 +19144,7 @@ packages: mlly: 1.4.0 pathe: 1.1.1 picocolors: 1.0.0 - vite: 4.4.9(@types/node@20.6.3)(sass@1.67.0)(terser@5.20.0) + vite: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) transitivePeerDependencies: - '@types/node' - less @@ -19209,7 +19160,7 @@ packages: resolution: {integrity: sha512-p4D8CFVhZS412SyQX125qxyzOgIFouwOcvjZWk6bQbNPR1wtaEzFT6jZxAjf1dejlGqa6fqHcuCvQea6EWUkUA==} dev: true - /vite@4.4.9(@types/node@20.6.3)(sass@1.67.0)(terser@5.20.0): + /vite@4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0): resolution: {integrity: sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true @@ -19241,7 +19192,7 @@ packages: esbuild: 0.18.17 postcss: 8.4.30 rollup: 3.29.2 - sass: 1.67.0 + sass: 1.68.0 terser: 5.20.0 optionalDependencies: fsevents: 2.3.2 @@ -19253,12 +19204,12 @@ packages: vitest: '>=0.16.0' dependencies: cross-fetch: 3.1.5 - vitest: 0.34.4(happy-dom@10.0.3)(sass@1.67.0)(terser@5.20.0) + vitest: 0.34.4(happy-dom@10.0.3)(sass@1.68.0)(terser@5.20.0) transitivePeerDependencies: - encoding dev: true - /vitest@0.34.4(happy-dom@10.0.3)(sass@1.67.0)(terser@5.20.0): + /vitest@0.34.4(happy-dom@10.0.3)(sass@1.68.0)(terser@5.20.0): resolution: {integrity: sha512-SE/laOsB6995QlbSE6BtkpXDeVNLJc1u2LHRG/OpnN4RsRzM3GQm4nm3PQCK5OBtrsUqnhzLdnT7se3aeNGdlw==} engines: {node: '>=v14.18.0'} hasBin: true @@ -19311,8 +19262,8 @@ packages: strip-literal: 1.0.1 tinybench: 2.5.0 tinypool: 0.7.0 - vite: 4.4.9(@types/node@20.6.3)(sass@1.67.0)(terser@5.20.0) - vite-node: 0.34.4(@types/node@20.6.3)(sass@1.67.0)(terser@5.20.0) + vite: 4.4.9(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) + vite-node: 0.34.4(@types/node@20.6.3)(sass@1.68.0)(terser@5.20.0) why-is-node-running: 2.2.2 transitivePeerDependencies: - less @@ -19855,7 +19806,7 @@ packages: sharp: 0.31.3 dev: false - github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@7.4.3)(@storybook/components@7.4.2)(@storybook/core-events@7.4.3)(@storybook/manager-api@7.4.3)(@storybook/preview-api@7.4.3)(@storybook/theming@7.4.3)(@storybook/types@7.4.3)(react-dom@18.2.0)(react@18.2.0): + github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640(@storybook/blocks@7.4.3)(@storybook/components@7.4.3)(@storybook/core-events@7.4.3)(@storybook/manager-api@7.4.3)(@storybook/preview-api@7.4.3)(@storybook/theming@7.4.3)(@storybook/types@7.4.3)(react-dom@18.2.0)(react@18.2.0): resolution: {tarball: https://codeload.github.com/misskey-dev/storybook-addon-misskey-theme/tar.gz/cf583db098365b2ccc81a82f63ca9c93bc32b640} id: github.com/misskey-dev/storybook-addon-misskey-theme/cf583db098365b2ccc81a82f63ca9c93bc32b640 name: storybook-addon-misskey-theme @@ -19877,7 +19828,7 @@ packages: optional: true dependencies: '@storybook/blocks': 7.4.3(react-dom@18.2.0)(react@18.2.0) - '@storybook/components': 7.4.2(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 7.4.3(react-dom@18.2.0)(react@18.2.0) '@storybook/core-events': 7.4.3 '@storybook/manager-api': 7.4.3(react-dom@18.2.0)(react@18.2.0) '@storybook/preview-api': 7.4.3 From f195fa4ab91d94072b31de0fdd6b488361db266c Mon Sep 17 00:00:00 2001 From: syuilo Date: Thu, 21 Sep 2023 15:24:50 +0900 Subject: [PATCH 4/4] 2023.9.0-beta.10 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index efb463a1dc..8b5f574947 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "misskey", - "version": "2023.9.0-beta.9", + "version": "2023.9.0-beta.10", "codename": "nasubi", "repository": { "type": "git",