Merge branch 'develop' into fix-freebsd

This commit is contained in:
kakkokari-gtyih 2025-02-16 18:47:18 +09:00
commit 710aa0b68e
17 changed files with 3752 additions and 4497 deletions

View File

@ -2,6 +2,7 @@
### General
- Feat: アクセストークン発行時に通知するように
- 依存関係の更新
### Client
- Feat: 投稿フォームで画像をプレビュー可能に
@ -19,10 +20,12 @@
### Server
- Fix: `following/invalidate`でフォロワーを解除しようとしているユーザーの情報を返すように
- Fix: オブジェクトストレージの設定でPrefixを設定していなかった場合nullまたは空文字になる問題を修正
- Fix: pgroongaでの検索時にはじめのキーワードのみが検索に使用される問題を修正
(Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/886)
- Fix: メールアドレスの形式が正しくなければ以降の処理を行わないように
- Fix: FreeBSDで起動できない問題を修正
(Cherry-picked from https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/887)
## 2025.2.0
### General

View File

@ -6,7 +6,7 @@
"type": "git",
"url": "https://github.com/misskey-dev/misskey.git"
},
"packageManager": "pnpm@9.6.0",
"packageManager": "pnpm@9.15.4",
"workspaces": [
"packages/frontend-shared",
"packages/frontend",
@ -47,7 +47,7 @@
"cleanall": "pnpm clean-all"
},
"resolutions": {
"chokidar": "3.5.3",
"chokidar": "3.6.0",
"lodash": "4.17.21"
},
"dependencies": {
@ -56,26 +56,26 @@
"fast-glob": "3.3.3",
"ignore-walk": "6.0.5",
"js-yaml": "4.1.0",
"postcss": "8.5.1",
"postcss": "8.5.2",
"tar": "6.2.1",
"terser": "5.37.0",
"terser": "5.39.0",
"typescript": "5.7.3",
"esbuild": "0.25.0",
"glob": "11.0.1"
},
"devDependencies": {
"@misskey-dev/eslint-plugin": "2.1.0",
"@types/node": "22.10.7",
"@typescript-eslint/eslint-plugin": "8.20.0",
"@typescript-eslint/parser": "8.20.0",
"@types/node": "22.13.4",
"@typescript-eslint/eslint-plugin": "8.24.0",
"@typescript-eslint/parser": "8.24.0",
"cross-env": "7.0.3",
"cypress": "14.0.0",
"eslint": "9.18.0",
"globals": "15.14.0",
"cypress": "14.0.3",
"eslint": "9.20.1",
"globals": "15.15.0",
"ncp": "2.0.0",
"start-server-and-test": "2.0.10"
},
"optionalDependencies": {
"@tensorflow/tfjs-core": "4.4.0"
"@tensorflow/tfjs-core": "4.22.0"
}
}

View File

@ -37,20 +37,20 @@
},
"optionalDependencies": {
"@swc/core-android-arm64": "1.3.11",
"@swc/core-darwin-arm64": "1.3.56",
"@swc/core-darwin-x64": "1.3.56",
"@swc/core-darwin-arm64": "1.10.16",
"@swc/core-darwin-x64": "1.10.16",
"@swc/core-freebsd-x64": "1.3.11",
"@swc/core-linux-arm-gnueabihf": "1.3.56",
"@swc/core-linux-arm64-gnu": "1.3.56",
"@swc/core-linux-arm64-musl": "1.3.56",
"@swc/core-linux-x64-gnu": "1.3.56",
"@swc/core-linux-x64-musl": "1.3.56",
"@swc/core-win32-arm64-msvc": "1.3.56",
"@swc/core-win32-ia32-msvc": "1.3.56",
"@swc/core-win32-x64-msvc": "1.3.56",
"@tensorflow/tfjs": "4.4.0",
"@tensorflow/tfjs-node": "4.4.0",
"bufferutil": "4.0.7",
"@swc/core-linux-arm-gnueabihf": "1.10.16",
"@swc/core-linux-arm64-gnu": "1.10.16",
"@swc/core-linux-arm64-musl": "1.10.16",
"@swc/core-linux-x64-gnu": "1.10.16",
"@swc/core-linux-x64-musl": "1.10.16",
"@swc/core-win32-arm64-msvc": "1.10.16",
"@swc/core-win32-ia32-msvc": "1.10.16",
"@swc/core-win32-x64-msvc": "1.10.16",
"@tensorflow/tfjs": "4.22.0",
"@tensorflow/tfjs-node": "4.22.0",
"bufferutil": "4.0.9",
"slacc-android-arm-eabi": "0.0.10",
"slacc-android-arm64": "0.0.10",
"slacc-darwin-arm64": "0.0.10",
@ -64,36 +64,36 @@
"slacc-linux-x64-musl": "0.0.10",
"slacc-win32-arm64-msvc": "0.0.10",
"slacc-win32-x64-msvc": "0.0.10",
"utf-8-validate": "6.0.3"
"utf-8-validate": "6.0.5"
},
"dependencies": {
"@aws-sdk/client-s3": "3.620.0",
"@aws-sdk/lib-storage": "3.620.0",
"@bull-board/api": "6.7.0",
"@bull-board/fastify": "6.7.0",
"@bull-board/ui": "6.7.0",
"@aws-sdk/client-s3": "3.749.0",
"@aws-sdk/lib-storage": "3.749.0",
"@bull-board/api": "6.7.7",
"@bull-board/fastify": "6.7.7",
"@bull-board/ui": "6.7.7",
"@discordapp/twemoji": "15.1.0",
"@fastify/accepts": "5.0.2",
"@fastify/cookie": "11.0.2",
"@fastify/cors": "10.0.2",
"@fastify/express": "4.0.2",
"@fastify/http-proxy": "10.0.1",
"@fastify/http-proxy": "10.0.2",
"@fastify/multipart": "9.0.3",
"@fastify/static": "8.0.4",
"@fastify/static": "8.1.0",
"@fastify/view": "10.0.2",
"@misskey-dev/sharp-read-bmp": "1.2.0",
"@misskey-dev/summaly": "5.2.0",
"@nestjs/common": "11.0.1",
"@nestjs/core": "11.0.1",
"@nestjs/testing": "11.0.1",
"@nestjs/common": "11.0.9",
"@nestjs/core": "11.0.9",
"@nestjs/testing": "11.0.9",
"@peertube/http-signature": "1.7.0",
"@sentry/node": "8.50.0",
"@sentry/profiling-node": "8.50.0",
"@sentry/node": "8.55.0",
"@sentry/profiling-node": "8.55.0",
"@simplewebauthn/server": "12.0.0",
"@sinonjs/fake-timers": "11.2.2",
"@sinonjs/fake-timers": "11.3.1",
"@smithy/node-http-handler": "2.5.0",
"@swc/cli": "0.3.12",
"@swc/core": "1.9.2",
"@swc/cli": "0.6.0",
"@swc/core": "1.10.16",
"@twemoji/parser": "15.1.1",
"accepts": "1.3.8",
"ajv": "8.17.1",
@ -102,7 +102,7 @@
"bcryptjs": "2.4.3",
"blurhash": "2.0.5",
"body-parser": "1.20.3",
"bullmq": "5.34.10",
"bullmq": "5.41.0",
"cacheable-lookup": "7.0.0",
"canvas": "3.1.0",
"cbor": "9.0.2",
@ -119,13 +119,13 @@
"feed": "4.2.2",
"file-type": "19.6.0",
"fluent-ffmpeg": "2.1.3",
"form-data": "4.0.1",
"got": "14.4.5",
"happy-dom": "16.6.0",
"form-data": "4.0.2",
"got": "14.4.6",
"happy-dom": "16.8.1",
"hpagent": "1.2.0",
"htmlescape": "1.1.1",
"http-link-header": "1.1.3",
"ioredis": "5.4.2",
"ioredis": "5.5.0",
"ip-cidr": "4.0.2",
"ipaddr.js": "2.2.0",
"is-svg": "5.1.0",
@ -142,10 +142,10 @@
"misskey-js": "workspace:*",
"misskey-reversi": "workspace:*",
"ms": "3.0.0-canary.1",
"nanoid": "5.0.9",
"nanoid": "5.1.0",
"nested-property": "4.0.0",
"node-fetch": "3.3.2",
"nodemailer": "6.9.16",
"nodemailer": "6.10.0",
"nsfwjs": "4.2.0",
"oauth": "0.10.0",
"oauth2orize": "1.12.0",
@ -153,7 +153,7 @@
"os-utils": "0.0.14",
"otpauth": "9.3.6",
"parse5": "7.2.1",
"pg": "8.13.1",
"pg": "8.13.3",
"pkce-challenge": "4.1.0",
"probe-image-size": "7.2.3",
"promise-limit": "2.7.0",
@ -188,7 +188,7 @@
},
"devDependencies": {
"@jest/globals": "29.7.0",
"@nestjs/platform-express": "10.4.7",
"@nestjs/platform-express": "10.4.15",
"@simplewebauthn/types": "12.0.0",
"@swc/jest": "0.2.37",
"@types/accepts": "1.3.7",
@ -207,12 +207,12 @@
"@types/jsrsasign": "10.5.15",
"@types/mime-types": "2.1.4",
"@types/ms": "0.7.34",
"@types/node": "22.10.7",
"@types/node": "22.13.4",
"@types/nodemailer": "6.4.17",
"@types/oauth": "0.9.6",
"@types/oauth2orize": "1.11.5",
"@types/oauth2orize-pkce": "0.1.2",
"@types/pg": "8.11.10",
"@types/pg": "8.11.11",
"@types/pug": "2.0.10",
"@types/qrcode": "1.5.5",
"@types/random-seed": "0.3.5",
@ -226,10 +226,10 @@
"@types/tmp": "0.2.6",
"@types/vary": "1.1.3",
"@types/web-push": "3.6.4",
"@types/ws": "8.5.13",
"@typescript-eslint/eslint-plugin": "8.20.0",
"@typescript-eslint/parser": "8.20.0",
"aws-sdk-client-mock": "4.0.1",
"@types/ws": "8.5.14",
"@typescript-eslint/eslint-plugin": "8.24.0",
"@typescript-eslint/parser": "8.24.0",
"aws-sdk-client-mock": "4.1.0",
"cross-env": "7.0.3",
"eslint-plugin-import": "2.31.0",
"execa": "8.0.1",
@ -237,7 +237,7 @@
"jest": "29.7.0",
"jest-mock": "29.7.0",
"nodemon": "3.1.9",
"pid-port": "1.0.0",
"pid-port": "1.0.2",
"simple-oauth2": "5.1.0"
}
}

View File

@ -164,6 +164,13 @@ export class EmailService {
available: boolean;
reason: null | 'used' | 'format' | 'disposable' | 'mx' | 'smtp' | 'banned' | 'network' | 'blacklist';
}> {
if (!this.utilityService.validateEmailFormat(emailAddress)) {
return {
available: false,
reason: 'format',
};
}
const exist = await this.userProfilesRepository.countBy({
emailVerified: true,
email: emailAddress,

View File

@ -220,7 +220,7 @@ export class SearchService {
.leftJoinAndSelect('renote.user', 'renoteUser');
if (this.config.fulltextSearch?.provider === 'sqlPgroonga') {
query.andWhere('note.text &@ :q', { q });
query.andWhere('note.text &@~ :q', { q });
} else {
query.andWhere('LOWER(note.text) LIKE :q', { q: `%${ sqlLikeEscape(q.toLowerCase()) }%` });
}

View File

@ -38,6 +38,14 @@ export class UtilityService {
return this.punyHost(uri) === this.toPuny(this.config.host);
}
// メールアドレスのバリデーションを行う
// https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address
@bindThis
public validateEmailFormat(email: string): boolean {
const regexp = /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
return regexp.test(email);
}
@bindThis
public isBlockedHost(blockedHosts: string[], host: string | null): boolean {
if (host == null) return false;

View File

@ -12,7 +12,7 @@
"dependencies": {
"@discordapp/twemoji": "15.1.0",
"@rollup/plugin-json": "6.1.0",
"@rollup/plugin-replace": "5.0.7",
"@rollup/plugin-replace": "6.0.2",
"@rollup/pluginutils": "5.1.4",
"@tabler/icons-webfont": "https://github.com/misskey-dev/tabler-icons/archive/refs/tags/3.30.0-mi.1932+ab127beee.tar.gz",
"@twemoji/parser": "15.1.1",
@ -27,12 +27,12 @@
"punycode.js": "2.3.1",
"rollup": "4.34.7",
"sass": "1.85.0",
"shiki": "1.29.2",
"shiki": "2.4.1",
"tinycolor2": "1.6.0",
"tsc-alias": "1.8.10",
"tsconfig-paths": "4.2.0",
"typescript": "5.7.3",
"uuid": "10.0.0",
"uuid": "11.0.5",
"json5": "2.2.3",
"vite": "6.1.0",
"vue": "3.5.13"
@ -45,18 +45,17 @@
"@types/node": "22.13.4",
"@types/punycode.js": "npm:@types/punycode@2.1.4",
"@types/tinycolor2": "1.4.6",
"@types/uuid": "10.0.0",
"@types/ws": "8.5.14",
"@typescript-eslint/eslint-plugin": "8.24.0",
"@typescript-eslint/parser": "8.24.0",
"@vitest/coverage-v8": "1.6.1",
"@vitest/coverage-v8": "3.0.5",
"@vue/runtime-core": "3.5.13",
"acorn": "8.14.0",
"cross-env": "7.0.3",
"eslint-plugin-import": "2.31.0",
"eslint-plugin-vue": "9.32.0",
"fast-glob": "3.3.3",
"happy-dom": "16.8.1",
"happy-dom": "17.1.0",
"intersection-observer": "0.12.2",
"micromatch": "4.0.8",
"msw": "2.7.0",
@ -64,8 +63,8 @@
"prettier": "3.5.1",
"start-server-and-test": "2.0.10",
"vite-plugin-turbosnap": "1.0.3",
"vue-component-type-helpers": "2.2.0",
"vue-component-type-helpers": "2.2.2",
"vue-eslint-parser": "9.4.3",
"vue-tsc": "2.2.0"
"vue-tsc": "2.2.2"
}
}

View File

@ -22,8 +22,8 @@
},
"devDependencies": {
"@types/node": "22.13.4",
"@typescript-eslint/eslint-plugin": "7.18.0",
"@typescript-eslint/parser": "7.18.0",
"@typescript-eslint/eslint-plugin": "8.24.0",
"@typescript-eslint/parser": "8.24.0",
"esbuild": "0.25.0",
"eslint-plugin-vue": "9.32.0",
"nodemon": "3.1.9",

View File

@ -21,7 +21,7 @@
"@mcaptcha/vanilla-glue": "0.1.0-alpha-3",
"@misskey-dev/browser-image-resizer": "2024.1.0",
"@rollup/plugin-json": "6.1.0",
"@rollup/plugin-replace": "5.0.7",
"@rollup/plugin-replace": "6.0.2",
"@rollup/pluginutils": "5.1.4",
"@syuilo/aiscript": "0.19.0",
"@tabler/icons-webfont": "https://github.com/misskey-dev/tabler-icons/archive/refs/tags/3.30.0-mi.1932+ab127beee.tar.gz",
@ -41,7 +41,7 @@
"chromatic": "11.25.2",
"compare-versions": "6.1.1",
"cropperjs": "2.0.0-rc.2",
"date-fns": "2.30.0",
"date-fns": "4.1.0",
"estree-walker": "3.0.3",
"eventemitter3": "5.0.1",
"frontend-shared": "workspace:*",
@ -59,7 +59,7 @@
"rollup": "4.34.7",
"sanitize-html": "2.14.0",
"sass": "1.85.0",
"shiki": "1.29.2",
"shiki": "2.4.1",
"strict-event-emitter-types": "2.0.0",
"textarea-caret": "3.1.0",
"three": "0.173.0",
@ -105,11 +105,10 @@
"@types/seedrandom": "3.0.8",
"@types/throttle-debounce": "5.0.2",
"@types/tinycolor2": "1.4.6",
"@types/uuid": "10.0.0",
"@types/ws": "8.5.14",
"@typescript-eslint/eslint-plugin": "8.24.0",
"@typescript-eslint/parser": "8.24.0",
"@vitest/coverage-v8": "1.6.1",
"@vitest/coverage-v8": "3.0.5",
"@vue/runtime-core": "3.5.13",
"acorn": "8.14.0",
"cross-env": "7.0.3",
@ -117,24 +116,24 @@
"eslint-plugin-import": "2.31.0",
"eslint-plugin-vue": "9.32.0",
"fast-glob": "3.3.3",
"happy-dom": "16.8.1",
"happy-dom": "17.1.0",
"intersection-observer": "0.12.2",
"micromatch": "4.0.8",
"msw": "2.7.0",
"msw-storybook-addon": "2.0.4",
"nodemon": "3.1.9",
"prettier": "3.5.1",
"react": "18.3.1",
"react-dom": "18.3.1",
"react": "19.0.0",
"react-dom": "19.0.0",
"seedrandom": "3.0.5",
"start-server-and-test": "2.0.10",
"storybook": "8.5.6",
"storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme",
"vite-plugin-turbosnap": "1.0.3",
"vitest": "1.6.1",
"vitest": "3.0.5",
"vitest-fetch-mock": "0.4.3",
"vue-component-type-helpers": "2.2.0",
"vue-component-type-helpers": "2.2.2",
"vue-eslint-parser": "9.4.3",
"vue-tsc": "2.2.0"
"vue-tsc": "2.2.2"
}
}

View File

@ -28,7 +28,7 @@
"@typescript-eslint/eslint-plugin": "8.24.0",
"@typescript-eslint/parser": "8.24.0",
"nodemon": "3.1.9",
"execa": "8.0.1",
"execa": "9.5.2",
"typescript": "5.7.3",
"esbuild": "0.25.0",
"glob": "11.0.1"

View File

@ -7,10 +7,10 @@
"generate": "tsx src/generator.ts && eslint ./built/**/*.ts --fix"
},
"devDependencies": {
"@readme/openapi-parser": "2.6.0",
"@types/node": "22.10.7",
"@typescript-eslint/eslint-plugin": "8.20.0",
"@typescript-eslint/parser": "8.20.0",
"@readme/openapi-parser": "2.7.0",
"@types/node": "22.13.4",
"@typescript-eslint/eslint-plugin": "8.24.0",
"@typescript-eslint/parser": "8.24.0",
"openapi-types": "12.1.3",
"openapi-typescript": "6.7.6",
"ts-case-convert": "2.1.0",

View File

@ -35,12 +35,12 @@
"directory": "packages/misskey-js"
},
"devDependencies": {
"@microsoft/api-extractor": "7.49.1",
"@microsoft/api-extractor": "7.50.0",
"@swc/jest": "0.2.37",
"@types/jest": "29.5.14",
"@types/node": "22.10.7",
"@typescript-eslint/eslint-plugin": "8.20.0",
"@typescript-eslint/parser": "8.20.0",
"@types/node": "22.13.4",
"@typescript-eslint/eslint-plugin": "8.24.0",
"@typescript-eslint/parser": "8.24.0",
"jest": "29.7.0",
"jest-fetch-mock": "3.0.3",
"jest-websocket-mock": "2.5.0",

View File

@ -25,7 +25,7 @@
"@types/node": "22.13.4",
"@typescript-eslint/eslint-plugin": "8.24.0",
"@typescript-eslint/parser": "8.24.0",
"execa": "8.0.1",
"execa": "9.5.2",
"nodemon": "3.1.9",
"typescript": "5.7.3",
"esbuild": "0.25.0",

File diff suppressed because it is too large Load Diff

View File

@ -14,7 +14,9 @@
"dependencyDashboardOSVVulnerabilitySummary": "unresolved",
"ignoreDeps": [
// https://github.com/misskey-dev/misskey/pull/15489#issuecomment-2660717458
"@typescript/lib-webworker"
"@typescript/lib-webworker",
// https://github.com/misskey-dev/misskey/pull/15494#issuecomment-2660775258
"nsfwjs",
],
"packageRules": [
{

File diff suppressed because it is too large Load Diff

View File

@ -10,15 +10,15 @@
},
"devDependencies": {
"@types/mdast": "4.0.4",
"@types/node": "22.9.0",
"@vitest/coverage-v8": "1.1.3",
"@types/node": "22.13.4",
"@vitest/coverage-v8": "3.0.5",
"mdast-util-to-string": "4.0.0",
"remark": "15.0.1",
"remark-parse": "11.0.0",
"typescript": "5.6.3",
"typescript": "5.7.3",
"unified": "11.0.5",
"vite": "5.4.12",
"vite-node": "1.1.3",
"vitest": "1.6.1"
"vite": "6.1.0",
"vite-node": "3.0.5",
"vitest": "3.0.5"
}
}