summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorsyuilo <4439005+syuilo@users.noreply.github.com>2025-02-15 10:24:22 +0900
committerGitHub <noreply@github.com>2025-02-15 10:24:22 +0900
commitffd8cf07e683eae95858d89fa9e5d85bf271c4d6 (patch)
tree8bfb9ce0377ff711d60460ed8676f830c3a570ee /packages
parentfix(frontend): Play の再読込時に UI が以前の状態を引き継い... (diff)
downloadsharkey-ffd8cf07e683eae95858d89fa9e5d85bf271c4d6.tar.gz
sharkey-ffd8cf07e683eae95858d89fa9e5d85bf271c4d6.tar.bz2
sharkey-ffd8cf07e683eae95858d89fa9e5d85bf271c4d6.zip
update deps (#15311)
* wip * bump misskey-dev/eslint-plugin * lint fixes (backend) * lint fixes (frontend) * lint fixes (frontend-embed) * rollback nsfwjs to 4.2.0 ref: infinitered/nsfwjs#904 * rollback openapi-typescript to v6 v7でOpenAPIのバリデーションが入るようになった関係でスコープ外での変更が避けられないため一時的に戻した * lint fixes (misskey-js) * temporarily disable errored lint rule (frontend-shared) * fix lint * temporarily ignore errored file for lint (frontend-shared) * rollback simplewebauthn/server to 12.0.0 v13 contains breaking changes that require some decision making * lint fixes (frontend-shared) * build misskey-js with types * fix(backend): migrate simplewebauthn/server to v12 * fix(misskey-js/autogen): ignore indent rules to generate consistent output * attempt to fix test changes due to capricorn86/happy-dom#1617 (XMLSerializer now produces valid XML) * attempt to fix test changes due to capricorn86/happy-dom#1617 (XMLSerializer now produces valid XML) * fix test * fix test * fix test * Apply suggestions from code review Co-authored-by: anatawa12 <anatawa12@icloud.com> * bump summaly to v5.2.0 * update tabler-icons to v3.30.0-based --------- Co-authored-by: かっこかり <67428053+kakkokari-gtyih@users.noreply.github.com> Co-authored-by: anatawa12 <anatawa12@icloud.com>
Diffstat (limited to 'packages')
-rw-r--r--packages/backend/package.json82
-rw-r--r--packages/backend/src/config.ts8
-rw-r--r--packages/backend/src/core/CaptchaService.ts6
-rw-r--r--packages/backend/src/core/FanoutTimelineService.ts3
-rw-r--r--packages/backend/src/core/GlobalEventService.ts2
-rw-r--r--packages/backend/src/core/MfmService.ts3
-rw-r--r--packages/backend/src/core/UserWebhookService.ts2
-rw-r--r--packages/backend/src/core/WebAuthnService.ts18
-rw-r--r--packages/backend/src/core/entities/UserEntityService.ts4
-rw-r--r--packages/backend/src/misc/json-schema.ts4
-rw-r--r--packages/backend/src/misc/json-value.ts2
-rw-r--r--packages/backend/src/models/User.ts8
-rw-r--r--packages/backend/src/postgres.ts2
-rw-r--r--packages/backend/src/queue/processors/CheckModeratorsActivityProcessorService.ts2
-rw-r--r--packages/backend/src/queue/types.ts10
-rw-r--r--packages/backend/src/server/api/endpoints.ts2
-rw-r--r--packages/backend/src/server/api/stream/channel.ts6
-rw-r--r--packages/backend/test-federation/test/utils.ts2
-rw-r--r--packages/backend/test/e2e/fetch-resource.ts10
-rw-r--r--packages/backend/test/unit/MfmService.ts4
-rw-r--r--packages/frontend-embed/package.json48
-rw-r--r--packages/frontend-embed/src/post-message.ts2
-rw-r--r--packages/frontend-shared/eslint.config.js7
-rw-r--r--packages/frontend-shared/js/embed-page.ts2
-rw-r--r--packages/frontend-shared/js/emojilist.ts2
-rw-r--r--packages/frontend-shared/js/i18n.ts1
-rw-r--r--packages/frontend/eslint.config.js2
-rw-r--r--packages/frontend/package.json102
-rw-r--r--packages/frontend/src/components/MkCaptcha.vue2
-rw-r--r--packages/frontend/src/components/MkDialog.vue1
-rw-r--r--packages/frontend/src/components/MkNotificationSelectWindow.vue2
-rw-r--r--packages/frontend/src/components/MkSortOrderEditor.define.ts4
-rw-r--r--packages/frontend/src/components/MkSystemWebhookEditor.vue2
-rw-r--r--packages/frontend/src/components/MkTimeline.vue18
-rw-r--r--packages/frontend/src/components/MkUserAnnouncementEditDialog.vue2
-rw-r--r--packages/frontend/src/components/grid/MkGrid.vue2
-rw-r--r--packages/frontend/src/components/grid/cell-validators.ts8
-rw-r--r--packages/frontend/src/components/grid/cell.ts6
-rw-r--r--packages/frontend/src/components/grid/column.ts2
-rw-r--r--packages/frontend/src/components/grid/grid.ts8
-rw-r--r--packages/frontend/src/components/grid/row.ts6
-rw-r--r--packages/frontend/src/local-storage.ts3
-rw-r--r--packages/frontend/src/nirax.ts2
-rw-r--r--packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue2
-rw-r--r--packages/frontend/src/pages/admin/custom-emojis-manager.local.register.vue2
-rw-r--r--packages/frontend/src/pages/admin/custom-emojis-manager.remote.vue2
-rw-r--r--packages/frontend/src/pages/search.note.vue2
-rw-r--r--packages/frontend/src/scripts/aiscript/api.ts2
-rw-r--r--packages/frontend/src/scripts/file-drop.ts2
-rw-r--r--packages/frontend/src/scripts/format-time-string.ts2
-rw-r--r--packages/frontend/src/scripts/key-event.ts14
-rw-r--r--packages/frontend/src/scripts/stream-mock.ts6
-rw-r--r--packages/frontend/src/store.ts2
-rw-r--r--packages/frontend/src/types/menu.ts2
-rw-r--r--packages/misskey-bubble-game/package.json14
-rw-r--r--packages/misskey-js/eslint.config.js6
-rw-r--r--packages/misskey-js/etc/misskey-js.api.md6
-rw-r--r--packages/misskey-js/generator/eslint.config.js6
-rw-r--r--packages/misskey-js/generator/package.json12
-rw-r--r--packages/misskey-js/generator/src/generator.ts2
-rw-r--r--packages/misskey-js/generator/tsconfig.json2
-rw-r--r--packages/misskey-js/package.json18
-rw-r--r--packages/misskey-js/src/api.types.ts8
-rw-r--r--packages/misskey-js/src/autogen/endpoint.ts2
-rw-r--r--packages/misskey-js/src/entities.ts6
-rw-r--r--packages/misskey-js/src/streaming.ts6
-rw-r--r--packages/misskey-reversi/package.json14
-rw-r--r--packages/sw/package.json10
68 files changed, 298 insertions, 266 deletions
diff --git a/packages/backend/package.json b/packages/backend/package.json
index 757912755a..d6d87c54ae 100644
--- a/packages/backend/package.json
+++ b/packages/backend/package.json
@@ -69,28 +69,28 @@
"dependencies": {
"@aws-sdk/client-s3": "3.620.0",
"@aws-sdk/lib-storage": "3.620.0",
- "@bull-board/api": "6.5.0",
- "@bull-board/fastify": "6.5.0",
- "@bull-board/ui": "6.5.0",
+ "@bull-board/api": "6.7.0",
+ "@bull-board/fastify": "6.7.0",
+ "@bull-board/ui": "6.7.0",
"@discordapp/twemoji": "15.1.0",
- "@fastify/accepts": "5.0.1",
- "@fastify/cookie": "11.0.1",
- "@fastify/cors": "10.0.1",
- "@fastify/express": "4.0.1",
+ "@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/multipart": "9.0.1",
- "@fastify/static": "8.0.2",
- "@fastify/view": "10.0.1",
+ "@fastify/multipart": "9.0.2",
+ "@fastify/static": "8.0.4",
+ "@fastify/view": "10.0.2",
"@misskey-dev/sharp-read-bmp": "1.2.0",
- "@misskey-dev/summaly": "5.1.0",
- "@napi-rs/canvas": "0.1.56",
- "@nestjs/common": "10.4.7",
- "@nestjs/core": "10.4.7",
- "@nestjs/testing": "10.4.7",
+ "@misskey-dev/summaly": "5.2.0",
+ "@napi-rs/canvas": "0.1.65",
+ "@nestjs/common": "11.0.1",
+ "@nestjs/core": "11.0.1",
+ "@nestjs/testing": "11.0.1",
"@peertube/http-signature": "1.7.0",
- "@sentry/node": "8.38.0",
- "@sentry/profiling-node": "8.38.0",
- "@simplewebauthn/server": "10.0.1",
+ "@sentry/node": "8.50.0",
+ "@sentry/profiling-node": "8.50.0",
+ "@simplewebauthn/server": "12.0.0",
"@sinonjs/fake-timers": "11.2.2",
"@smithy/node-http-handler": "2.5.0",
"@swc/cli": "0.3.12",
@@ -103,10 +103,10 @@
"bcryptjs": "2.4.3",
"blurhash": "2.0.5",
"body-parser": "1.20.3",
- "bullmq": "5.26.1",
+ "bullmq": "5.34.10",
"cacheable-lookup": "7.0.0",
"cbor": "9.0.2",
- "chalk": "5.3.0",
+ "chalk": "5.4.1",
"chalk-template": "1.1.0",
"chokidar": "3.6.0",
"cli-highlight": "2.1.11",
@@ -114,35 +114,35 @@
"content-disposition": "0.5.4",
"date-fns": "2.30.0",
"deep-email-validator": "0.1.21",
- "fastify": "5.0.0",
+ "fastify": "5.2.1",
"fastify-raw-body": "5.0.0",
"feed": "4.2.2",
"file-type": "19.6.0",
"fluent-ffmpeg": "2.1.3",
"form-data": "4.0.1",
- "got": "14.4.4",
- "happy-dom": "15.11.4",
+ "got": "14.4.5",
+ "happy-dom": "16.6.0",
"hpagent": "1.2.0",
"htmlescape": "1.1.1",
"http-link-header": "1.1.3",
- "ioredis": "5.4.1",
+ "ioredis": "5.4.2",
"ip-cidr": "4.0.2",
"ipaddr.js": "2.2.0",
"is-svg": "5.1.0",
"js-yaml": "4.1.0",
- "jsdom": "24.1.1",
+ "jsdom": "26.0.0",
"json5": "2.2.3",
- "jsonld": "8.3.2",
+ "jsonld": "8.3.3",
"jsrsasign": "11.1.0",
"juice": "11.0.0",
- "meilisearch": "0.45.0",
+ "meilisearch": "0.48.2",
"mfm-js": "0.24.0",
"microformats-parser": "2.0.2",
"mime-types": "2.1.35",
"misskey-js": "workspace:*",
"misskey-reversi": "workspace:*",
"ms": "3.0.0-canary.1",
- "nanoid": "5.0.8",
+ "nanoid": "5.0.9",
"nested-property": "4.0.0",
"node-fetch": "3.3.2",
"nodemailer": "6.9.16",
@@ -151,7 +151,7 @@
"oauth2orize": "1.12.0",
"oauth2orize-pkce": "0.1.2",
"os-utils": "0.0.14",
- "otpauth": "9.3.4",
+ "otpauth": "9.3.6",
"parse5": "7.2.1",
"pg": "8.13.1",
"pkce-challenge": "4.1.0",
@@ -167,19 +167,19 @@
"rename": "1.0.4",
"rss-parser": "3.13.0",
"rxjs": "7.8.1",
- "sanitize-html": "2.13.1",
- "secure-json-parse": "2.7.0",
+ "sanitize-html": "2.14.0",
+ "secure-json-parse": "3.0.2",
"sharp": "0.33.5",
"slacc": "0.0.10",
"strict-event-emitter-types": "2.0.0",
"stringz": "2.1.0",
- "systeminformation": "5.23.5",
+ "systeminformation": "5.25.11",
"tinycolor2": "1.6.0",
"tmp": "0.2.3",
"tsc-alias": "1.8.10",
"tsconfig-paths": "4.2.0",
"typeorm": "0.3.20",
- "typescript": "5.6.3",
+ "typescript": "5.7.3",
"ulid": "2.3.0",
"vary": "1.1.2",
"web-push": "3.6.7",
@@ -189,7 +189,7 @@
"devDependencies": {
"@jest/globals": "29.7.0",
"@nestjs/platform-express": "10.4.7",
- "@simplewebauthn/types": "10.0.0",
+ "@simplewebauthn/types": "12.0.0",
"@swc/jest": "0.2.37",
"@types/accepts": "1.3.7",
"@types/archiver": "6.0.3",
@@ -204,11 +204,11 @@
"@types/js-yaml": "4.0.9",
"@types/jsdom": "21.1.7",
"@types/jsonld": "1.5.15",
- "@types/jsrsasign": "10.5.14",
+ "@types/jsrsasign": "10.5.15",
"@types/mime-types": "2.1.4",
"@types/ms": "0.7.34",
- "@types/node": "22.9.0",
- "@types/nodemailer": "6.4.16",
+ "@types/node": "22.10.7",
+ "@types/nodemailer": "6.4.17",
"@types/oauth": "0.9.6",
"@types/oauth2orize": "1.11.5",
"@types/oauth2orize-pkce": "0.1.2",
@@ -227,16 +227,16 @@
"@types/vary": "1.1.3",
"@types/web-push": "3.6.4",
"@types/ws": "8.5.13",
- "@typescript-eslint/eslint-plugin": "7.17.0",
- "@typescript-eslint/parser": "7.17.0",
+ "@typescript-eslint/eslint-plugin": "8.20.0",
+ "@typescript-eslint/parser": "8.20.0",
"aws-sdk-client-mock": "4.0.1",
"cross-env": "7.0.3",
- "eslint-plugin-import": "2.30.0",
+ "eslint-plugin-import": "2.31.0",
"execa": "8.0.1",
"fkill": "9.0.0",
"jest": "29.7.0",
"jest-mock": "29.7.0",
- "nodemon": "3.1.7",
+ "nodemon": "3.1.9",
"pid-port": "1.0.0",
"simple-oauth2": "5.1.0"
}
diff --git a/packages/backend/src/config.ts b/packages/backend/src/config.ts
index c0b1484804..d5fd2ba558 100644
--- a/packages/backend/src/config.ts
+++ b/packages/backend/src/config.ts
@@ -105,8 +105,8 @@ type Source = {
logging?: {
sql?: {
- disableQueryTruncation? : boolean,
- enableQueryParamLogging? : boolean,
+ disableQueryTruncation?: boolean,
+ enableQueryParamLogging?: boolean,
}
}
};
@@ -166,8 +166,8 @@ export type Config = {
signToActivityPubGet: boolean | undefined;
logging?: {
sql?: {
- disableQueryTruncation? : boolean,
- enableQueryParamLogging? : boolean,
+ disableQueryTruncation?: boolean,
+ enableQueryParamLogging?: boolean,
}
}
diff --git a/packages/backend/src/core/CaptchaService.ts b/packages/backend/src/core/CaptchaService.ts
index 8c7f66236e..ee081f29b0 100644
--- a/packages/backend/src/core/CaptchaService.ts
+++ b/packages/backend/src/core/CaptchaService.ts
@@ -43,7 +43,7 @@ export type CaptchaSetting = {
siteKey: string | null;
secretKey: string | null;
}
-}
+};
export class CaptchaError extends Error {
public readonly code: CaptchaErrorCode;
@@ -59,11 +59,11 @@ export class CaptchaError extends Error {
export type CaptchaSaveSuccess = {
success: true;
-}
+};
export type CaptchaSaveFailure = {
success: false;
error: CaptchaError;
-}
+};
export type CaptchaSaveResult = CaptchaSaveSuccess | CaptchaSaveFailure;
type CaptchaResponse = {
diff --git a/packages/backend/src/core/FanoutTimelineService.ts b/packages/backend/src/core/FanoutTimelineService.ts
index f6dabfadcd..24999bf4da 100644
--- a/packages/backend/src/core/FanoutTimelineService.ts
+++ b/packages/backend/src/core/FanoutTimelineService.ts
@@ -9,7 +9,7 @@ import { DI } from '@/di-symbols.js';
import { bindThis } from '@/decorators.js';
import { IdService } from '@/core/IdService.js';
-export type FanoutTimelineName =
+export type FanoutTimelineName = (
// home timeline
| `homeTimeline:${string}`
| `homeTimelineWithFiles:${string}` // only notes with files are included
@@ -37,6 +37,7 @@ export type FanoutTimelineName =
// role timelines
| `roleTimeline:${string}` // any notes are included
+);
@Injectable()
export class FanoutTimelineService {
diff --git a/packages/backend/src/core/GlobalEventService.ts b/packages/backend/src/core/GlobalEventService.ts
index 03646ff566..224fdabc4c 100644
--- a/packages/backend/src/core/GlobalEventService.ts
+++ b/packages/backend/src/core/GlobalEventService.ts
@@ -211,7 +211,7 @@ type SerializedAll<T> = {
type UndefinedAsNullAll<T> = {
[K in keyof T]: T[K] extends undefined ? null : T[K];
-}
+};
export interface InternalEventTypes {
userChangeSuspendedState: { id: MiUser['id']; isSuspended: MiUser['isSuspended']; };
diff --git a/packages/backend/src/core/MfmService.ts b/packages/backend/src/core/MfmService.ts
index bf06d4457e..00208927e2 100644
--- a/packages/backend/src/core/MfmService.ts
+++ b/packages/backend/src/core/MfmService.ts
@@ -492,7 +492,8 @@ export class MfmService {
appendChildren(nodes, body);
- const serialized = new XMLSerializer().serializeToString(body);
+ // Remove the unnecessary namespace
+ const serialized = new XMLSerializer().serializeToString(body).replace(/^\s*<p xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">/, '<p>');
happyDOM.close().catch(err => {});
diff --git a/packages/backend/src/core/UserWebhookService.ts b/packages/backend/src/core/UserWebhookService.ts
index b1728671ae..9b0a598a1b 100644
--- a/packages/backend/src/core/UserWebhookService.ts
+++ b/packages/backend/src/core/UserWebhookService.ts
@@ -15,7 +15,7 @@ import { QueueService } from '@/core/QueueService.js';
import type { OnApplicationShutdown } from '@nestjs/common';
export type UserWebhookPayload<T extends WebhookEventTypes> =
- T extends 'note' | 'reply' | 'renote' |'mention' ? {
+ T extends 'note' | 'reply' | 'renote' | 'mention' ? {
note: Packed<'Note'>,
} :
T extends 'follow' | 'unfollow' ? {
diff --git a/packages/backend/src/core/WebAuthnService.ts b/packages/backend/src/core/WebAuthnService.ts
index ed75e4f467..372e1e2ab7 100644
--- a/packages/backend/src/core/WebAuthnService.ts
+++ b/packages/backend/src/core/WebAuthnService.ts
@@ -127,11 +127,11 @@ export class WebAuthnService {
const { registrationInfo } = verification;
return {
- credentialID: registrationInfo.credentialID,
- credentialPublicKey: registrationInfo.credentialPublicKey,
+ credentialID: registrationInfo.credential.id,
+ credentialPublicKey: registrationInfo.credential.publicKey,
attestationObject: registrationInfo.attestationObject,
fmt: registrationInfo.fmt,
- counter: registrationInfo.counter,
+ counter: registrationInfo.credential.counter,
userVerified: registrationInfo.userVerified,
credentialDeviceType: registrationInfo.credentialDeviceType,
credentialBackedUp: registrationInfo.credentialBackedUp,
@@ -212,9 +212,9 @@ export class WebAuthnService {
expectedChallenge: challenge,
expectedOrigin: relyingParty.origin,
expectedRPID: relyingParty.rpId,
- authenticator: {
- credentialID: key.id,
- credentialPublicKey: Buffer.from(key.publicKey, 'base64url'),
+ credential: {
+ id: key.id,
+ publicKey: Buffer.from(key.publicKey, 'base64url'),
counter: key.counter,
transports: key.transports ? key.transports as AuthenticatorTransportFuture[] : undefined,
},
@@ -292,9 +292,9 @@ export class WebAuthnService {
expectedChallenge: challenge,
expectedOrigin: relyingParty.origin,
expectedRPID: relyingParty.rpId,
- authenticator: {
- credentialID: key.id,
- credentialPublicKey: Buffer.from(key.publicKey, 'base64url'),
+ credential: {
+ id: key.id,
+ publicKey: Buffer.from(key.publicKey, 'base64url'),
counter: key.counter,
transports: key.transports ? key.transports as AuthenticatorTransportFuture[] : undefined,
},
diff --git a/packages/backend/src/core/entities/UserEntityService.ts b/packages/backend/src/core/entities/UserEntityService.ts
index d3c087a153..fbd3892dd4 100644
--- a/packages/backend/src/core/entities/UserEntityService.ts
+++ b/packages/backend/src/core/entities/UserEntityService.ts
@@ -57,12 +57,14 @@ const ajv = new Ajv();
function isLocalUser(user: MiUser): user is MiLocalUser;
function isLocalUser<T extends { host: MiUser['host'] }>(user: T): user is (T & { host: null; });
+
function isLocalUser(user: MiUser | { host: MiUser['host'] }): boolean {
return user.host == null;
}
function isRemoteUser(user: MiUser): user is MiRemoteUser;
function isRemoteUser<T extends { host: MiUser['host'] }>(user: T): user is (T & { host: string; });
+
function isRemoteUser(user: MiUser | { host: MiUser['host'] }): boolean {
return !isLocalUser(user);
}
@@ -78,7 +80,7 @@ export type UserRelation = {
isBlocked: boolean
isMuted: boolean
isRenoteMuted: boolean
-}
+};
@Injectable()
export class UserEntityService implements OnModuleInit {
diff --git a/packages/backend/src/misc/json-schema.ts b/packages/backend/src/misc/json-schema.ts
index f612591eda..ac74d68c95 100644
--- a/packages/backend/src/misc/json-schema.ts
+++ b/packages/backend/src/misc/json-schema.ts
@@ -143,7 +143,7 @@ type OfSchema = {
readonly anyOf?: ReadonlyArray<Schema>;
readonly oneOf?: ReadonlyArray<Schema>;
readonly allOf?: ReadonlyArray<Schema>;
-}
+};
export interface Schema extends OfSchema {
readonly type?: TypeStringef;
@@ -217,7 +217,7 @@ type ObjectSchemaTypeDef<p extends Schema> =
:
p['anyOf'] extends ReadonlyArray<Schema> ? never : // see CONTRIBUTING.md
p['allOf'] extends ReadonlyArray<Schema> ? UnionToIntersection<UnionSchemaType<p['allOf']>> :
- any
+ any;
type ObjectSchemaType<p extends Schema> = NullOrUndefined<p, ObjectSchemaTypeDef<p>>;
diff --git a/packages/backend/src/misc/json-value.ts b/packages/backend/src/misc/json-value.ts
index bd7fe12058..195f7c4d47 100644
--- a/packages/backend/src/misc/json-value.ts
+++ b/packages/backend/src/misc/json-value.ts
@@ -4,7 +4,7 @@
*/
export type JsonValue = JsonArray | JsonObject | string | number | boolean | null;
-export type JsonObject = {[K in string]?: JsonValue};
+export type JsonObject = { [K in string]?: JsonValue };
export type JsonArray = JsonValue[];
export function isJsonObject(value: JsonValue | undefined): value is JsonObject {
diff --git a/packages/backend/src/models/User.ts b/packages/backend/src/models/User.ts
index 96de30c4c2..549d78a22c 100644
--- a/packages/backend/src/models/User.ts
+++ b/packages/backend/src/models/User.ts
@@ -288,24 +288,24 @@ export class MiUser {
export type MiLocalUser = MiUser & {
host: null;
uri: null;
-}
+};
export type MiPartialLocalUser = Partial<MiUser> & {
id: MiUser['id'];
host: null;
uri: null;
-}
+};
export type MiRemoteUser = MiUser & {
host: string;
uri: string;
-}
+};
export type MiPartialRemoteUser = Partial<MiUser> & {
id: MiUser['id'];
host: string;
uri: string;
-}
+};
export const localUsernameSchema = { type: 'string', pattern: /^\w{1,20}$/.toString().slice(1, -1) } as const;
export const passwordSchema = { type: 'string', minLength: 1 } as const;
diff --git a/packages/backend/src/postgres.ts b/packages/backend/src/postgres.ts
index d09240eba1..8a0b7d97d7 100644
--- a/packages/backend/src/postgres.ts
+++ b/packages/backend/src/postgres.ts
@@ -92,7 +92,7 @@ const sqlLogger = dbLogger.createSubLogger('sql', 'gray');
export type LoggerProps = {
disableQueryTruncation?: boolean;
enableQueryParamLogging?: boolean;
-}
+};
function highlightSql(sql: string) {
return highlight.highlight(sql, {
diff --git a/packages/backend/src/queue/processors/CheckModeratorsActivityProcessorService.ts b/packages/backend/src/queue/processors/CheckModeratorsActivityProcessorService.ts
index 2e84430e72..c9fe4fca73 100644
--- a/packages/backend/src/queue/processors/CheckModeratorsActivityProcessorService.ts
+++ b/packages/backend/src/queue/processors/CheckModeratorsActivityProcessorService.ts
@@ -29,7 +29,7 @@ export type ModeratorInactivityEvaluationResult = {
isModeratorsInactive: boolean;
inactiveModerators: MiUser[];
remainingTime: ModeratorInactivityRemainingTime;
-}
+};
export type ModeratorInactivityRemainingTime = {
time: number;
diff --git a/packages/backend/src/queue/types.ts b/packages/backend/src/queue/types.ts
index 5db919a149..757daea88b 100644
--- a/packages/backend/src/queue/types.ts
+++ b/packages/backend/src/queue/types.ts
@@ -38,7 +38,7 @@ export type RelationshipJobData = {
silent?: boolean;
requestId?: string;
withReplies?: boolean;
-}
+};
export type DbJobData<T extends keyof DbJobMap> = DbJobMap[T];
@@ -61,11 +61,11 @@ export type DbJobMap = {
importUserLists: DbUserImportJobData;
importCustomEmojis: DbUserImportJobData;
deleteAccount: DbUserDeleteJobData;
-}
+};
export type DbJobDataWithUser = {
user: ThinUser;
-}
+};
export type DbExportFollowingData = {
user: ThinUser;
@@ -75,7 +75,7 @@ export type DbExportFollowingData = {
export type DBExportAntennasData = {
user: ThinUser
-}
+};
export type DbUserDeleteJobData = {
user: ThinUser;
@@ -91,7 +91,7 @@ export type DbUserImportJobData = {
export type DBAntennaImportJobData = {
user: ThinUser,
antenna: Antenna
-}
+};
export type DbUserImportToDbJobData = {
user: ThinUser;
diff --git a/packages/backend/src/server/api/endpoints.ts b/packages/backend/src/server/api/endpoints.ts
index a9a2ebc041..7f4ca9c0e0 100644
--- a/packages/backend/src/server/api/endpoints.ts
+++ b/packages/backend/src/server/api/endpoints.ts
@@ -122,7 +122,7 @@ export type IEndpointMeta = (Omit<IEndpointMetaBase, 'requireCrential' | 'requir
}) | (Omit<IEndpointMetaBase, 'requireAdmin' | 'kind'> & {
requireAdmin: true,
kind: (typeof permissions)[number],
-})
+});
export interface IEndpoint {
name: string;
diff --git a/packages/backend/src/server/api/stream/channel.ts b/packages/backend/src/server/api/stream/channel.ts
index 84cb552369..686aea423c 100644
--- a/packages/backend/src/server/api/stream/channel.ts
+++ b/packages/backend/src/server/api/stream/channel.ts
@@ -82,8 +82,8 @@ export default abstract class Channel {
this.connection = connection;
}
- public send(payload: { type: string, body: JsonValue }): void
- public send(type: string, payload: JsonValue): void
+ public send(payload: { type: string, body: JsonValue }): void;
+ public send(type: string, payload: JsonValue): void;
@bindThis
public send(typeOrPayload: { type: string, body: JsonValue } | string, payload?: JsonValue) {
const type = payload === undefined ? (typeOrPayload as { type: string, body: JsonValue }).type : (typeOrPayload as string);
@@ -108,4 +108,4 @@ export type MiChannelService<T extends boolean> = {
requireCredential: T;
kind: T extends true ? string : string | null | undefined;
create: (id: string, connection: Connection) => Channel;
-}
+};
diff --git a/packages/backend/test-federation/test/utils.ts b/packages/backend/test-federation/test/utils.ts
index 093277cdb4..db8da5025a 100644
--- a/packages/backend/test-federation/test/utils.ts
+++ b/packages/backend/test-federation/test/utils.ts
@@ -22,7 +22,7 @@ export type LoginUser = SigninResponse & {
client: Misskey.api.APIClient;
username: string;
password: string;
-}
+};
/** used for avoiding overload and some endpoints */
export type Request = <
diff --git a/packages/backend/test/e2e/fetch-resource.ts b/packages/backend/test/e2e/fetch-resource.ts
index 8ea4cb9800..b85cebf724 100644
--- a/packages/backend/test/e2e/fetch-resource.ts
+++ b/packages/backend/test/e2e/fetch-resource.ts
@@ -10,13 +10,13 @@ import { channel, clip, cookie, galleryPost, page, play, post, signup, simpleGet
import type { SimpleGetResponse } from '../utils.js';
import type * as misskey from 'misskey-js';
-// Request Accept
+// Request Accept in lowercase
const ONLY_AP = 'application/activity+json';
const PREFER_AP = 'application/activity+json, */*';
const PREFER_HTML = 'text/html, */*';
const UNSPECIFIED = '*/*';
-// Response Content-Type
+// Response Content-Type in lowercase
const AP = 'application/activity+json; charset=utf-8';
const HTML = 'text/html; charset=utf-8';
const JSON_UTF8 = 'application/json; charset=utf-8';
@@ -44,7 +44,8 @@ describe('Webリソース', () => {
const { path, accept, cookie, type } = param;
const res = await simpleGet(path, accept, cookie);
assert.strictEqual(res.status, 200);
- assert.strictEqual(res.type, type ?? HTML);
+ // Header values are case-insensitive
+ assert.strictEqual(res.type?.toLowerCase(), (type ?? HTML).toLowerCase());
return res;
};
@@ -95,8 +96,7 @@ describe('Webリソース', () => {
describe.each([
{ path: '/', type: HTML },
{ path: '/docs/ja-JP/about', type: HTML }, // "指定されたURLに該当するページはありませんでした。"
- // fastify-static gives charset=UTF-8 instead of utf-8 and that's okay
- { path: '/api-doc', type: 'text/html; charset=UTF-8' },
+ { path: '/api-doc', type: HTML },
{ path: '/api.json', type: JSON_UTF8 },
{ path: '/api-console', type: HTML },
{ path: '/_info_card_', type: HTML },
diff --git a/packages/backend/test/unit/MfmService.ts b/packages/backend/test/unit/MfmService.ts
index 36af8823f6..7350da3cae 100644
--- a/packages/backend/test/unit/MfmService.ts
+++ b/packages/backend/test/unit/MfmService.ts
@@ -24,13 +24,13 @@ describe('MfmService', () => {
describe('toHtml', () => {
test('br', () => {
const input = 'foo\nbar\nbaz';
- const output = '<p><span>foo<br>bar<br>baz</span></p>';
+ const output = '<p><span>foo<br />bar<br />baz</span></p>';
assert.equal(mfmService.toHtml(mfm.parse(input)), output);
});
test('br alt', () => {
const input = 'foo\r\nbar\rbaz';
- const output = '<p><span>foo<br>bar<br>baz</span></p>';
+ const output = '<p><span>foo<br />bar<br />baz</span></p>';
assert.equal(mfmService.toHtml(mfm.parse(input)), output);
});
diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json
index ab5026ab0d..c173dc53d0 100644
--- a/packages/frontend-embed/package.json
+++ b/packages/frontend-embed/package.json
@@ -13,11 +13,11 @@
"@discordapp/twemoji": "15.1.0",
"@rollup/plugin-json": "6.1.0",
"@rollup/plugin-replace": "5.0.7",
- "@rollup/pluginutils": "5.1.3",
- "@tabler/icons-webfont": "https://github.com/misskey-dev/tabler-icons/archive/refs/tags/3.29.0-mi.1913+5921534bc.tar.gz",
+ "@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",
- "@vitejs/plugin-vue": "5.2.0",
- "@vue/compiler-sfc": "3.5.12",
+ "@vitejs/plugin-vue": "5.2.1",
+ "@vue/compiler-sfc": "3.5.13",
"astring": "1.9.0",
"buraha": "0.0.1",
"estree-walker": "3.0.3",
@@ -25,47 +25,47 @@
"misskey-js": "workspace:*",
"frontend-shared": "workspace:*",
"punycode.js": "2.3.1",
- "rollup": "4.26.0",
- "sass": "1.79.4",
- "shiki": "1.22.2",
+ "rollup": "4.31.0",
+ "sass": "1.83.4",
+ "shiki": "1.27.2",
"tinycolor2": "1.6.0",
"tsc-alias": "1.8.10",
"tsconfig-paths": "4.2.0",
- "typescript": "5.6.3",
+ "typescript": "5.7.3",
"uuid": "10.0.0",
"json5": "2.2.3",
- "vite": "5.4.11",
- "vue": "3.5.12"
+ "vite": "6.0.7",
+ "vue": "3.5.13"
},
"devDependencies": {
- "@misskey-dev/summaly": "5.1.0",
+ "@misskey-dev/summaly": "5.2.0",
"@testing-library/vue": "8.1.0",
"@types/estree": "1.0.6",
"@types/micromatch": "4.0.9",
- "@types/node": "22.9.0",
+ "@types/node": "22.10.7",
"@types/punycode.js": "npm:@types/punycode@2.1.4",
"@types/tinycolor2": "1.4.6",
"@types/uuid": "10.0.0",
"@types/ws": "8.5.13",
- "@typescript-eslint/eslint-plugin": "7.17.0",
- "@typescript-eslint/parser": "7.17.0",
+ "@typescript-eslint/eslint-plugin": "8.20.0",
+ "@typescript-eslint/parser": "8.20.0",
"@vitest/coverage-v8": "1.6.0",
- "@vue/runtime-core": "3.5.12",
+ "@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.31.0",
- "fast-glob": "3.3.2",
- "happy-dom": "10.0.3",
+ "eslint-plugin-vue": "9.32.0",
+ "fast-glob": "3.3.3",
+ "happy-dom": "16.6.0",
"intersection-observer": "0.12.2",
"micromatch": "4.0.8",
- "msw": "2.6.4",
- "nodemon": "3.1.7",
- "prettier": "3.3.3",
- "start-server-and-test": "2.0.8",
+ "msw": "2.7.0",
+ "nodemon": "3.1.9",
+ "prettier": "3.4.2",
+ "start-server-and-test": "2.0.10",
"vite-plugin-turbosnap": "1.0.3",
- "vue-component-type-helpers": "2.1.10",
+ "vue-component-type-helpers": "2.2.0",
"vue-eslint-parser": "9.4.3",
- "vue-tsc": "2.1.10"
+ "vue-tsc": "2.2.0"
}
}
diff --git a/packages/frontend-embed/src/post-message.ts b/packages/frontend-embed/src/post-message.ts
index fd8eb8a5d2..93b57c380b 100644
--- a/packages/frontend-embed/src/post-message.ts
+++ b/packages/frontend-embed/src/post-message.ts
@@ -21,7 +21,7 @@ export type MiPostMessageEvent<T extends PostMessageEventType = PostMessageEvent
type: T;
iframeId?: string;
payload?: PostMessageEventPayload[T];
-}
+};
let defaultIframeId: string | null = null;
diff --git a/packages/frontend-shared/eslint.config.js b/packages/frontend-shared/eslint.config.js
index a3ab438336..63323aeddc 100644
--- a/packages/frontend-shared/eslint.config.js
+++ b/packages/frontend-shared/eslint.config.js
@@ -98,4 +98,11 @@ export default [
'vue/attribute-hyphenation': ['error', 'never'],
},
},
+ {
+ ignores: [
+ // TODO: Error while loading rule '@typescript-eslint/naming-convention': Cannot use 'in' operator to search for 'type' in undefined のため一時的に無効化
+ // See https://github.com/misskey-dev/misskey/pull/15311
+ 'js/i18n.ts',
+ ],
+ },
];
diff --git a/packages/frontend-shared/js/embed-page.ts b/packages/frontend-shared/js/embed-page.ts
index d5555a98c3..2a9b7eb478 100644
--- a/packages/frontend-shared/js/embed-page.ts
+++ b/packages/frontend-shared/js/embed-page.ts
@@ -6,7 +6,7 @@
//#region Embed関連の定義
/** 埋め込みの対象となるエンティティ(/embed/xxx の xxx の部分と対応させる) */
-const embeddableEntities = [
+export const embeddableEntities = [
'notes',
'user-timeline',
'clips',
diff --git a/packages/frontend-shared/js/emojilist.ts b/packages/frontend-shared/js/emojilist.ts
index bde30a864f..adccb60ac2 100644
--- a/packages/frontend-shared/js/emojilist.ts
+++ b/packages/frontend-shared/js/emojilist.ts
@@ -9,7 +9,7 @@ export type UnicodeEmojiDef = {
name: string;
char: string;
category: typeof unicodeEmojiCategories[number];
-}
+};
// initial converted from https://github.com/muan/emojilib/commit/242fe68be86ed6536843b83f7e32f376468b38fb
import _emojilist from './emojilist.json';
diff --git a/packages/frontend-shared/js/i18n.ts b/packages/frontend-shared/js/i18n.ts
index 18232691fa..480cfcd642 100644
--- a/packages/frontend-shared/js/i18n.ts
+++ b/packages/frontend-shared/js/i18n.ts
@@ -2,6 +2,7 @@
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
+
import type { ILocale, ParameterizedString } from '../../../locales/index.js';
// eslint-disable-next-line @typescript-eslint/no-explicit-any
diff --git a/packages/frontend/eslint.config.js b/packages/frontend/eslint.config.js
index 7805256fd4..8aa70c66a2 100644
--- a/packages/frontend/eslint.config.js
+++ b/packages/frontend/eslint.config.js
@@ -47,6 +47,8 @@ export default [
'@typescript-eslint/no-empty-interface': ['error', {
allowSingleExtends: true,
}],
+ // defineExposeが誤検知されてしまう
+ '@typescript-eslint/no-unused-expressions': 'off',
'import/consistent-type-specifier-style': ['error', 'prefer-top-level'],
// window の禁止理由: グローバルスコープと衝突し、予期せぬ結果を招くため
// e の禁止理由: error や event など、複数のキーワードの頭文字であり分かりにくいため
diff --git a/packages/frontend/package.json b/packages/frontend/package.json
index 804160baad..8e486d8125 100644
--- a/packages/frontend/package.json
+++ b/packages/frontend/package.json
@@ -22,23 +22,23 @@
"@misskey-dev/browser-image-resizer": "2024.1.0",
"@rollup/plugin-json": "6.1.0",
"@rollup/plugin-replace": "5.0.7",
- "@rollup/pluginutils": "5.1.3",
+ "@rollup/pluginutils": "5.1.4",
"@syuilo/aiscript": "0.19.0",
- "@tabler/icons-webfont": "https://github.com/misskey-dev/tabler-icons/archive/refs/tags/3.29.0-mi.1913+5921534bc.tar.gz",
+ "@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",
- "@vitejs/plugin-vue": "5.2.0",
- "@vue/compiler-sfc": "3.5.12",
+ "@vitejs/plugin-vue": "5.2.1",
+ "@vue/compiler-sfc": "3.5.13",
"aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.1.15",
"astring": "1.9.0",
"broadcast-channel": "7.0.0",
"buraha": "0.0.1",
"canvas-confetti": "1.9.3",
- "chart.js": "4.4.6",
+ "chart.js": "4.4.7",
"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.18.1",
+ "chartjs-plugin-zoom": "2.2.0",
+ "chromatic": "11.25.0",
"compare-versions": "6.1.1",
"cropperjs": "2.0.0-rc.2",
"date-fns": "2.30.0",
@@ -56,50 +56,50 @@
"misskey-reversi": "workspace:*",
"photoswipe": "5.4.4",
"punycode.js": "2.3.1",
- "rollup": "4.26.0",
- "sanitize-html": "2.13.1",
- "sass": "1.79.3",
- "shiki": "1.22.2",
+ "rollup": "4.31.0",
+ "sanitize-html": "2.14.0",
+ "sass": "1.83.4",
+ "shiki": "1.27.2",
"strict-event-emitter-types": "2.0.0",
"textarea-caret": "3.1.0",
- "three": "0.169.0",
+ "three": "0.172.0",
"throttle-debounce": "5.0.2",
"tinycolor2": "1.6.0",
"tsc-alias": "1.8.10",
"tsconfig-paths": "4.2.0",
- "typescript": "5.6.3",
- "uuid": "10.0.0",
+ "typescript": "5.7.3",
+ "uuid": "11.0.5",
"v-code-diff": "1.13.1",
- "vite": "5.4.11",
- "vue": "3.5.12",
+ "vite": "6.0.7",
+ "vue": "3.5.13",
"vuedraggable": "next"
},
"devDependencies": {
- "@misskey-dev/summaly": "5.1.0",
- "@storybook/addon-actions": "8.4.4",
- "@storybook/addon-essentials": "8.4.4",
- "@storybook/addon-interactions": "8.4.4",
- "@storybook/addon-links": "8.4.4",
- "@storybook/addon-mdx-gfm": "8.4.4",
- "@storybook/addon-storysource": "8.4.4",
- "@storybook/blocks": "8.4.4",
- "@storybook/components": "8.4.4",
- "@storybook/core-events": "8.4.4",
- "@storybook/manager-api": "8.4.4",
- "@storybook/preview-api": "8.4.4",
- "@storybook/react": "8.4.4",
- "@storybook/react-vite": "8.4.4",
- "@storybook/test": "8.4.4",
- "@storybook/theming": "8.4.4",
- "@storybook/types": "8.4.4",
- "@storybook/vue3": "8.4.4",
- "@storybook/vue3-vite": "8.4.4",
+ "@misskey-dev/summaly": "5.2.0",
+ "@storybook/addon-actions": "8.5.0",
+ "@storybook/addon-essentials": "8.5.0",
+ "@storybook/addon-interactions": "8.5.0",
+ "@storybook/addon-links": "8.5.0",
+ "@storybook/addon-mdx-gfm": "8.5.0",
+ "@storybook/addon-storysource": "8.5.0",
+ "@storybook/blocks": "8.5.0",
+ "@storybook/components": "8.5.0",
+ "@storybook/core-events": "8.5.0",
+ "@storybook/manager-api": "8.5.0",
+ "@storybook/preview-api": "8.5.0",
+ "@storybook/react": "8.5.0",
+ "@storybook/react-vite": "8.5.0",
+ "@storybook/test": "8.5.0",
+ "@storybook/theming": "8.5.0",
+ "@storybook/types": "8.5.0",
+ "@storybook/vue3": "8.5.0",
+ "@storybook/vue3-vite": "8.5.0",
"@testing-library/vue": "8.1.0",
- "@types/canvas-confetti": "^1.6.4",
+ "@types/canvas-confetti": "1.6.4",
"@types/estree": "1.0.6",
"@types/matter-js": "0.19.7",
"@types/micromatch": "4.0.9",
- "@types/node": "22.9.0",
+ "@types/node": "22.10.7",
"@types/punycode.js": "npm:@types/punycode@2.1.4",
"@types/sanitize-html": "2.13.0",
"@types/seedrandom": "3.0.8",
@@ -107,34 +107,34 @@
"@types/tinycolor2": "1.4.6",
"@types/uuid": "10.0.0",
"@types/ws": "8.5.13",
- "@typescript-eslint/eslint-plugin": "7.17.0",
- "@typescript-eslint/parser": "7.17.0",
+ "@typescript-eslint/eslint-plugin": "8.20.0",
+ "@typescript-eslint/parser": "8.20.0",
"@vitest/coverage-v8": "1.6.0",
- "@vue/runtime-core": "3.5.12",
+ "@vue/runtime-core": "3.5.13",
"acorn": "8.14.0",
"cross-env": "7.0.3",
- "cypress": "13.15.2",
+ "cypress": "14.0.0",
"eslint-plugin-import": "2.31.0",
- "eslint-plugin-vue": "9.31.0",
- "fast-glob": "3.3.2",
- "happy-dom": "10.0.3",
+ "eslint-plugin-vue": "9.32.0",
+ "fast-glob": "3.3.3",
+ "happy-dom": "16.6.0",
"intersection-observer": "0.12.2",
"micromatch": "4.0.8",
- "msw": "2.6.4",
+ "msw": "2.7.0",
"msw-storybook-addon": "2.0.4",
- "nodemon": "3.1.7",
- "prettier": "3.3.3",
+ "nodemon": "3.1.9",
+ "prettier": "3.4.2",
"react": "18.3.1",
"react-dom": "18.3.1",
"seedrandom": "3.0.5",
- "start-server-and-test": "2.0.8",
- "storybook": "8.4.4",
+ "start-server-and-test": "2.0.10",
+ "storybook": "8.5.0",
"storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme",
"vite-plugin-turbosnap": "1.0.3",
"vitest": "1.6.0",
"vitest-fetch-mock": "0.2.2",
- "vue-component-type-helpers": "2.1.10",
+ "vue-component-type-helpers": "2.2.0",
"vue-eslint-parser": "9.4.3",
- "vue-tsc": "2.1.10"
+ "vue-tsc": "2.2.0"
}
}
diff --git a/packages/frontend/src/components/MkCaptcha.vue b/packages/frontend/src/components/MkCaptcha.vue
index b1167bbac6..134f8226d4 100644
--- a/packages/frontend/src/components/MkCaptcha.vue
+++ b/packages/frontend/src/components/MkCaptcha.vue
@@ -50,6 +50,8 @@ type CaptchaContainer = {
};
declare global {
+ // Window を拡張してるため、空ではない
+ // eslint-disable-next-line @typescript-eslint/no-empty-object-type
interface Window extends CaptchaContainer { }
}
diff --git a/packages/frontend/src/components/MkDialog.vue b/packages/frontend/src/components/MkDialog.vue
index b095a1cd4a..6c9fa3167a 100644
--- a/packages/frontend/src/components/MkDialog.vue
+++ b/packages/frontend/src/components/MkDialog.vue
@@ -142,6 +142,7 @@ const okButtonDisabledReason = computed<null | 'charactersExceeded' | 'character
// overload function を使いたいので lint エラーを無視する
function done(canceled: true): void;
function done(canceled: false, result: Result): void; // eslint-disable-line no-redeclare
+
function done(canceled: boolean, result?: Result): void { // eslint-disable-line no-redeclare
emit('done', { canceled, result } as { canceled: true } | { canceled: false, result: Result });
modal.value?.close();
diff --git a/packages/frontend/src/components/MkNotificationSelectWindow.vue b/packages/frontend/src/components/MkNotificationSelectWindow.vue
index 90a3e48187..a0fb7fea83 100644
--- a/packages/frontend/src/components/MkNotificationSelectWindow.vue
+++ b/packages/frontend/src/components/MkNotificationSelectWindow.vue
@@ -39,7 +39,7 @@ import MkModalWindow from '@/components/MkModalWindow.vue';
import { notificationTypes } from '@@/js/const.js';
import { i18n } from '@/i18n.js';
-type TypesMap = Record<typeof notificationTypes[number], Ref<boolean>>
+type TypesMap = Record<typeof notificationTypes[number], Ref<boolean>>;
const emit = defineEmits<{
(ev: 'done', v: { excludeTypes: string[] }): void,
diff --git a/packages/frontend/src/components/MkSortOrderEditor.define.ts b/packages/frontend/src/components/MkSortOrderEditor.define.ts
index f023b5d72b..e56b93f98a 100644
--- a/packages/frontend/src/components/MkSortOrderEditor.define.ts
+++ b/packages/frontend/src/components/MkSortOrderEditor.define.ts
@@ -3,9 +3,9 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
-export type SortOrderDirection = '+' | '-'
+export type SortOrderDirection = '+' | '-';
export type SortOrder<T extends string> = {
key: T;
direction: SortOrderDirection;
-}
+};
diff --git a/packages/frontend/src/components/MkSystemWebhookEditor.vue b/packages/frontend/src/components/MkSystemWebhookEditor.vue
index 6a03c8acaa..7e92726dcb 100644
--- a/packages/frontend/src/components/MkSystemWebhookEditor.vue
+++ b/packages/frontend/src/components/MkSystemWebhookEditor.vue
@@ -114,7 +114,7 @@ type EventType = {
userCreated: boolean;
inactiveModeratorsWarning: boolean;
inactiveModeratorsInvitationOnlyChanged: boolean;
-}
+};
const emit = defineEmits<{
(ev: 'submitted', result: MkSystemWebhookResult): void;
diff --git a/packages/frontend/src/components/MkTimeline.vue b/packages/frontend/src/components/MkTimeline.vue
index d88ff60a51..7bae240ddd 100644
--- a/packages/frontend/src/components/MkTimeline.vue
+++ b/packages/frontend/src/components/MkTimeline.vue
@@ -57,15 +57,15 @@ provide('tl_withSensitive', computed(() => props.withSensitive));
provide('inChannel', computed(() => props.src === 'channel'));
type TimelineQueryType = {
- antennaId?: string,
- withRenotes?: boolean,
- withReplies?: boolean,
- withFiles?: boolean,
- visibility?: string,
- listId?: string,
- channelId?: string,
- roleId?: string
-}
+ antennaId?: string,
+ withRenotes?: boolean,
+ withReplies?: boolean,
+ withFiles?: boolean,
+ visibility?: string,
+ listId?: string,
+ channelId?: string,
+ roleId?: string
+};
const prComponent = shallowRef<InstanceType<typeof MkPullToRefresh>>();
const tlComponent = shallowRef<InstanceType<typeof MkNotes>>();
diff --git a/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue b/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue
index fe499fabbf..34991fa0dd 100644
--- a/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue
+++ b/packages/frontend/src/components/MkUserAnnouncementEditDialog.vue
@@ -62,7 +62,7 @@ import MkTextarea from '@/components/MkTextarea.vue';
import MkSwitch from '@/components/MkSwitch.vue';
import MkRadios from '@/components/MkRadios.vue';
-type AdminAnnouncementType = Misskey.entities.AdminAnnouncementsCreateRequest & { id: string; }
+type AdminAnnouncementType = Misskey.entities.AdminAnnouncementsCreateRequest & { id: string; };
const props = defineProps<{
user: Misskey.entities.User,
diff --git a/packages/frontend/src/components/grid/MkGrid.vue b/packages/frontend/src/components/grid/MkGrid.vue
index 84f1f754b2..c89e23c135 100644
--- a/packages/frontend/src/components/grid/MkGrid.vue
+++ b/packages/frontend/src/components/grid/MkGrid.vue
@@ -79,7 +79,7 @@ type RowHolder = {
row: GridRow,
cells: GridCell[],
origin: DataSource,
-}
+};
const emit = defineEmits<{
(ev: 'event', event: GridEvent, context: GridContext): void;
diff --git a/packages/frontend/src/components/grid/cell-validators.ts b/packages/frontend/src/components/grid/cell-validators.ts
index 56d7f0f13d..7310a82c9e 100644
--- a/packages/frontend/src/components/grid/cell-validators.ts
+++ b/packages/frontend/src/components/grid/cell-validators.ts
@@ -18,25 +18,25 @@ export type ValidatorParams = {
export type ValidatorResult = {
valid: boolean;
message?: string;
-}
+};
export type GridCellValidator = {
name?: string;
ignoreViolation?: boolean;
validate: (params: ValidatorParams) => ValidatorResult;
-}
+};
export type ValidateViolation = {
valid: boolean;
params: ValidatorParams;
violations: ValidateViolationItem[];
-}
+};
export type ValidateViolationItem = {
valid: boolean;
validator: GridCellValidator;
result: ValidatorResult;
-}
+};
export function cellValidation(allCells: GridCell[], cell: GridCell, newValue: CellValue): ValidateViolation {
const { column, row } = cell;
diff --git a/packages/frontend/src/components/grid/cell.ts b/packages/frontend/src/components/grid/cell.ts
index 2569c6d50d..d347d05bdb 100644
--- a/packages/frontend/src/components/grid/cell.ts
+++ b/packages/frontend/src/components/grid/cell.ts
@@ -15,7 +15,7 @@ export type CellValue = string | boolean | number | undefined | null | Array<unk
export type CellAddress = {
row: number;
col: number;
-}
+};
export const CELL_ADDRESS_NONE: CellAddress = {
row: -1,
@@ -32,13 +32,13 @@ export type GridCell = {
contentSize: Size;
setting: GridCellSetting;
violation: ValidateViolation;
-}
+};
export type GridCellContextMenuFactory = (col: GridColumn, row: GridRow, value: CellValue, context: GridContext) => MenuItem[];
export type GridCellSetting = {
contextMenuFactory?: GridCellContextMenuFactory;
-}
+};
export function createCell(
column: GridColumn,
diff --git a/packages/frontend/src/components/grid/column.ts b/packages/frontend/src/components/grid/column.ts
index 6780c8a3a7..6a694b39ec 100644
--- a/packages/frontend/src/components/grid/column.ts
+++ b/packages/frontend/src/components/grid/column.ts
@@ -40,7 +40,7 @@ export type GridColumn = {
setting: GridColumnSetting;
width: string;
contentSize: Size;
-}
+};
export function createColumn(setting: GridColumnSetting, index: number): GridColumn {
return {
diff --git a/packages/frontend/src/components/grid/grid.ts b/packages/frontend/src/components/grid/grid.ts
index 03947b7ee3..0428e6493c 100644
--- a/packages/frontend/src/components/grid/grid.ts
+++ b/packages/frontend/src/components/grid/grid.ts
@@ -21,7 +21,7 @@ export type GridSetting = {
export type DataSource = Record<string, CellValue>;
-export type GridState =
+export type GridState = (
'normal' |
'cellSelecting' |
'cellEditing' |
@@ -29,19 +29,19 @@ export type GridState =
'colSelecting' |
'rowSelecting' |
'hidden'
- ;
+);
export type Size = {
width: number;
height: number;
-}
+};
export type SizeStyle = number | 'auto' | undefined;
export type AdditionalStyle = {
className?: string;
style?: Record<string, string | number>;
-}
+};
export class GridEventEmitter extends EventEmitter<{
'forceRefreshContentSize': void;
diff --git a/packages/frontend/src/components/grid/row.ts b/packages/frontend/src/components/grid/row.ts
index f34770312a..42da22193f 100644
--- a/packages/frontend/src/components/grid/row.ts
+++ b/packages/frontend/src/components/grid/row.ts
@@ -27,7 +27,7 @@ export type GridRowStyleRuleConditionParams = {
export type GridRowStyleRule = {
condition: (params: GridRowStyleRuleConditionParams) => boolean;
applyStyle: AdditionalStyle;
-}
+};
export type GridRowContextMenuFactory = (row: GridRow, context: GridContext) => MenuItem[];
@@ -40,7 +40,7 @@ export type GridRowSetting = {
events?: {
delete?: (rows: GridRow[]) => void;
}
-}
+};
export type GridRow = {
index: number;
@@ -48,7 +48,7 @@ export type GridRow = {
using: boolean;
setting: GridRowSetting;
additionalStyles: AdditionalStyle[];
-}
+};
export function createRow(index: number, using: boolean, setting: GridRowSetting): GridRow {
return {
diff --git a/packages/frontend/src/local-storage.ts b/packages/frontend/src/local-storage.ts
index 5b8ba77e01..9c8863f863 100644
--- a/packages/frontend/src/local-storage.ts
+++ b/packages/frontend/src/local-storage.ts
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
-export type Keys =
+export type Keys = (
'v' |
'lastVersion' |
'instance' |
@@ -40,6 +40,7 @@ export type Keys =
'emojis' | // DEPRECATED, stored in indexeddb (13.9.0~);
`channelLastReadedAt:${string}` |
`idbfallback::${string}`
+);
// セッション毎に廃棄されるLocalStorage代替(セーフモードなどで使用できそう)
//const safeSessionStorage = new Map<Keys, string>();
diff --git a/packages/frontend/src/nirax.ts b/packages/frontend/src/nirax.ts
index ec4ac9d91a..0374d03c48 100644
--- a/packages/frontend/src/nirax.ts
+++ b/packages/frontend/src/nirax.ts
@@ -65,7 +65,7 @@ export type RouterEvent = {
key: string;
}) => void;
same: () => void;
-}
+};
export type Resolved = {
route: RouteDef;
diff --git a/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue b/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue
index b69457e05e..5916efbc52 100644
--- a/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue
+++ b/packages/frontend/src/pages/admin/custom-emojis-manager.local.list.vue
@@ -109,7 +109,7 @@ type GridItem = {
publicUrl?: string | null;
originalUrl?: string | null;
type: string | null;
-}
+};
function setupGrid(): GridSetting {
const $style = useCssModule();
diff --git a/packages/frontend/src/pages/admin/custom-emojis-manager.local.register.vue b/packages/frontend/src/pages/admin/custom-emojis-manager.local.register.vue
index da85d38a40..d6ee8ea49c 100644
--- a/packages/frontend/src/pages/admin/custom-emojis-manager.local.register.vue
+++ b/packages/frontend/src/pages/admin/custom-emojis-manager.local.register.vue
@@ -124,7 +124,7 @@ type GridItem = {
localOnly: boolean;
roleIdsThatCanBeUsedThisEmojiAsReaction: { id: string, name: string }[];
type: string | null;
-}
+};
function setupGrid(): GridSetting {
const $style = useCssModule();
diff --git a/packages/frontend/src/pages/admin/custom-emojis-manager.remote.vue b/packages/frontend/src/pages/admin/custom-emojis-manager.remote.vue
index 21ffe558ca..609d445d79 100644
--- a/packages/frontend/src/pages/admin/custom-emojis-manager.remote.vue
+++ b/packages/frontend/src/pages/admin/custom-emojis-manager.remote.vue
@@ -168,7 +168,7 @@ type GridItem = {
url: string;
name: string;
host: string;
-}
+};
function setupGrid(): GridSetting {
const $style = useCssModule();
diff --git a/packages/frontend/src/pages/search.note.vue b/packages/frontend/src/pages/search.note.vue
index 4cb149a58b..14b9f7a741 100644
--- a/packages/frontend/src/pages/search.note.vue
+++ b/packages/frontend/src/pages/search.note.vue
@@ -93,7 +93,7 @@ const noteSearchableScope = instance.noteSearchableScope ?? 'local';
const hostSelect = ref<'all' | 'local' | 'specified'>('all');
-const setHostSelectWithInput = (after:string|undefined|null, before:string|undefined|null) => {
+const setHostSelectWithInput = (after: string | undefined | null, before: string | undefined | null) => {
if (before === after) return;
if (after === '') hostSelect.value = 'all';
else hostSelect.value = 'specified';
diff --git a/packages/frontend/src/scripts/aiscript/api.ts b/packages/frontend/src/scripts/aiscript/api.ts
index e203c51bba..2c0c8c816e 100644
--- a/packages/frontend/src/scripts/aiscript/api.ts
+++ b/packages/frontend/src/scripts/aiscript/api.ts
@@ -76,7 +76,7 @@ export function createAiScriptEnv(opts: { storageKey: string, token?: string })
// バグがあればundefinedもあり得るため念のため
if (typeof token.value !== 'string') throw new Error('invalid token');
}
- const actualToken: string|null = token?.value ?? opts.token ?? null;
+ const actualToken: string | null = token?.value ?? opts.token ?? null;
if (param == null) {
throw new errors.AiScriptRuntimeError('expected param');
}
diff --git a/packages/frontend/src/scripts/file-drop.ts b/packages/frontend/src/scripts/file-drop.ts
index c2e863c0dc..4259fe25e9 100644
--- a/packages/frontend/src/scripts/file-drop.ts
+++ b/packages/frontend/src/scripts/file-drop.ts
@@ -15,7 +15,7 @@ export type DroppedDirectory = {
isFile: false;
path: string;
children: DroppedItem[];
-}
+};
export async function extractDroppedItems(ev: DragEvent): Promise<DroppedItem[]> {
const dropItems = ev.dataTransfer?.items;
diff --git a/packages/frontend/src/scripts/format-time-string.ts b/packages/frontend/src/scripts/format-time-string.ts
index 35ad77d982..d383f143e1 100644
--- a/packages/frontend/src/scripts/format-time-string.ts
+++ b/packages/frontend/src/scripts/format-time-string.ts
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: AGPL-3.0-only
*/
-const defaultLocaleStringFormats: {[index: string]: string} = {
+const defaultLocaleStringFormats: { [index: string]: string } = {
'weekday': 'narrow',
'era': 'narrow',
'year': 'numeric',
diff --git a/packages/frontend/src/scripts/key-event.ts b/packages/frontend/src/scripts/key-event.ts
index a72776d48c..020a6c2174 100644
--- a/packages/frontend/src/scripts/key-event.ts
+++ b/packages/frontend/src/scripts/key-event.ts
@@ -7,7 +7,7 @@
* {@link KeyboardEvent.code} の値を表す文字列。不足分は適宜追加する
* @see https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values
*/
-export type KeyCode =
+export type KeyCode = (
| 'Backspace'
| 'Tab'
| 'Enter'
@@ -94,32 +94,32 @@ export type KeyCode =
| 'Quote'
| 'Meta'
| 'AltGraph'
- ;
+);
/**
* 修飾キーを表す文字列。不足分は適宜追加する。
*/
-export type KeyModifier =
+export type KeyModifier = (
| 'Shift'
| 'Control'
| 'Alt'
| 'Meta'
- ;
+);
/**
* 押下されたキー以外の状態を表す文字列。不足分は適宜追加する。
*/
-export type KeyState =
+export type KeyState = (
| 'composing'
| 'repeat'
- ;
+);
export type KeyEventHandler = {
modifiers?: KeyModifier[];
states?: KeyState[];
code: KeyCode | 'any';
handler: (event: KeyboardEvent) => void;
-}
+};
export function handleKeyEvent(event: KeyboardEvent, handlers: KeyEventHandler[]) {
function checkModifier(ev: KeyboardEvent, modifiers? : KeyModifier[]) {
diff --git a/packages/frontend/src/scripts/stream-mock.ts b/packages/frontend/src/scripts/stream-mock.ts
index cb0e607fcb..9b1b368de4 100644
--- a/packages/frontend/src/scripts/stream-mock.ts
+++ b/packages/frontend/src/scripts/stream-mock.ts
@@ -37,9 +37,9 @@ export class StreamMock extends EventEmitter<StreamEvents> implements IStream {
// do nothing
}
- public send(typeOrPayload: string): void
- public send(typeOrPayload: string, payload: any): void
- public send(typeOrPayload: Record<string, any> | any[]): void
+ public send(typeOrPayload: string): void;
+ public send(typeOrPayload: string, payload: any): void;
+ public send(typeOrPayload: Record<string, any> | any[]): void;
public send(typeOrPayload: string | Record<string, any> | any[], payload?: any): void {
// do nothing
}
diff --git a/packages/frontend/src/store.ts b/packages/frontend/src/store.ts
index e9650bcf1f..16b900e052 100644
--- a/packages/frontend/src/store.ts
+++ b/packages/frontend/src/store.ts
@@ -56,7 +56,7 @@ export type SoundStore = {
fileUrl: string;
volume: number;
-}
+};
export const postFormActions: PostFormAction[] = [];
export const userActions: UserAction[] = [];
diff --git a/packages/frontend/src/types/menu.ts b/packages/frontend/src/types/menu.ts
index 046799536f..7cadef136d 100644
--- a/packages/frontend/src/types/menu.ts
+++ b/packages/frontend/src/types/menu.ts
@@ -6,7 +6,7 @@
import * as Misskey from 'misskey-js';
import type { ComputedRef, Ref } from 'vue';
-interface MenuRadioOptionsDef extends Record<string, any> { }
+type MenuRadioOptionsDef = Record<string, any>;
export type MenuAction = (ev: MouseEvent) => void;
diff --git a/packages/misskey-bubble-game/package.json b/packages/misskey-bubble-game/package.json
index 97620e484a..96c453e73e 100644
--- a/packages/misskey-bubble-game/package.json
+++ b/packages/misskey-bubble-game/package.json
@@ -24,14 +24,14 @@
"devDependencies": {
"@types/matter-js": "0.19.7",
"@types/seedrandom": "3.0.8",
- "@types/node": "22.9.0",
- "@typescript-eslint/eslint-plugin": "7.1.0",
- "@typescript-eslint/parser": "7.1.0",
- "nodemon": "3.1.7",
+ "@types/node": "22.10.7",
+ "@typescript-eslint/eslint-plugin": "8.20.0",
+ "@typescript-eslint/parser": "8.20.0",
+ "nodemon": "3.1.9",
"execa": "8.0.1",
- "typescript": "5.6.3",
- "esbuild": "0.24.0",
- "glob": "11.0.0"
+ "typescript": "5.7.3",
+ "esbuild": "0.24.2",
+ "glob": "11.0.1"
},
"files": [
"built"
diff --git a/packages/misskey-js/eslint.config.js b/packages/misskey-js/eslint.config.js
index d8173f30e9..496892d897 100644
--- a/packages/misskey-js/eslint.config.js
+++ b/packages/misskey-js/eslint.config.js
@@ -26,4 +26,10 @@ export default [
},
},
},
+ {
+ files: ['src/autogen/**/*.ts', 'src/autogen/**/*.tsx'],
+ rules: {
+ '@stylistic/indent': 'off',
+ },
+ },
];
diff --git a/packages/misskey-js/etc/misskey-js.api.md b/packages/misskey-js/etc/misskey-js.api.md
index ac7babb250..1b935364f1 100644
--- a/packages/misskey-js/etc/misskey-js.api.md
+++ b/packages/misskey-js/etc/misskey-js.api.md
@@ -7,7 +7,7 @@
import type { AuthenticationResponseJSON } from '@simplewebauthn/types';
import { EventEmitter } from 'eventemitter3';
import { Options } from 'reconnecting-websocket';
-import type { PublicKeyCredentialRequestOptionsJSON } from '@simplewebauthn/types';
+import type { PublicKeyCredentialRequestOptionsJSON as PublicKeyCredentialRequestOptionsJSON_2 } from '@simplewebauthn/types';
import _ReconnectingWebSocket from 'reconnecting-websocket';
// Warning: (ae-forgotten-export) The symbol "components" needs to be exported by the entry point index.d.ts
@@ -3106,12 +3106,12 @@ type SigninFlowResponse = {
} | {
finished: false;
next: 'passkey';
- authRequest: PublicKeyCredentialRequestOptionsJSON;
+ authRequest: PublicKeyCredentialRequestOptionsJSON_2;
};
// @public (undocumented)
type SigninWithPasskeyInitResponse = {
- option: PublicKeyCredentialRequestOptionsJSON;
+ option: PublicKeyCredentialRequestOptionsJSON_2;
context: string;
};
diff --git a/packages/misskey-js/generator/eslint.config.js b/packages/misskey-js/generator/eslint.config.js
index 4bf78c3b91..7139f88f5b 100644
--- a/packages/misskey-js/generator/eslint.config.js
+++ b/packages/misskey-js/generator/eslint.config.js
@@ -14,4 +14,10 @@ export default [
},
},
},
+ {
+ files: ['built/autogen/**.ts'],
+ rules: {
+ '@stylistic/indent': 'off',
+ },
+ },
];
diff --git a/packages/misskey-js/generator/package.json b/packages/misskey-js/generator/package.json
index b796bf8775..4203456889 100644
--- a/packages/misskey-js/generator/package.json
+++ b/packages/misskey-js/generator/package.json
@@ -8,14 +8,14 @@
},
"devDependencies": {
"@readme/openapi-parser": "2.6.0",
- "@types/node": "22.9.0",
- "@typescript-eslint/eslint-plugin": "7.17.0",
- "@typescript-eslint/parser": "7.17.0",
+ "@types/node": "22.10.7",
+ "@typescript-eslint/eslint-plugin": "8.20.0",
+ "@typescript-eslint/parser": "8.20.0",
"openapi-types": "12.1.3",
- "openapi-typescript": "6.7.3",
+ "openapi-typescript": "6.7.6",
"ts-case-convert": "2.1.0",
- "tsx": "4.4.0",
- "typescript": "5.6.3"
+ "tsx": "4.19.2",
+ "typescript": "5.7.3"
},
"files": [
"built"
diff --git a/packages/misskey-js/generator/src/generator.ts b/packages/misskey-js/generator/src/generator.ts
index a77ffeedc2..889051f3e8 100644
--- a/packages/misskey-js/generator/src/generator.ts
+++ b/packages/misskey-js/generator/src/generator.ts
@@ -173,7 +173,7 @@ async function generateEndpoints(
endpointOutputLine.push(
...endpoints.map(it => '\t' + it.toLine()),
);
- endpointOutputLine.push('}');
+ endpointOutputLine.push('};');
endpointOutputLine.push('');
function generateEndpointReqMediaTypesType() {
diff --git a/packages/misskey-js/generator/tsconfig.json b/packages/misskey-js/generator/tsconfig.json
index c814df612e..d65042dc6d 100644
--- a/packages/misskey-js/generator/tsconfig.json
+++ b/packages/misskey-js/generator/tsconfig.json
@@ -3,7 +3,7 @@
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
- "moduleResolution": "nodenext",
+ "moduleResolution": "node16",
"strict": true,
"strictFunctionTypes": true,
"strictNullChecks": true,
diff --git a/packages/misskey-js/package.json b/packages/misskey-js/package.json
index 601c261a05..afc1e6a1d1 100644
--- a/packages/misskey-js/package.json
+++ b/packages/misskey-js/package.json
@@ -35,29 +35,29 @@
"directory": "packages/misskey-js"
},
"devDependencies": {
- "@microsoft/api-extractor": "7.47.11",
+ "@microsoft/api-extractor": "7.49.1",
"@swc/jest": "0.2.37",
"@types/jest": "29.5.14",
- "@types/node": "22.9.0",
- "@typescript-eslint/eslint-plugin": "7.17.0",
- "@typescript-eslint/parser": "7.17.0",
+ "@types/node": "22.10.7",
+ "@typescript-eslint/eslint-plugin": "8.20.0",
+ "@typescript-eslint/parser": "8.20.0",
"jest": "29.7.0",
"jest-fetch-mock": "3.0.3",
"jest-websocket-mock": "2.5.0",
"mock-socket": "9.3.1",
"ncp": "2.0.0",
- "nodemon": "3.1.7",
+ "nodemon": "3.1.9",
"execa": "8.0.1",
"tsd": "0.31.2",
- "typescript": "5.6.3",
- "esbuild": "0.24.0",
- "glob": "11.0.0"
+ "typescript": "5.7.3",
+ "esbuild": "0.24.2",
+ "glob": "11.0.1"
},
"files": [
"built"
],
"dependencies": {
- "@simplewebauthn/types": "11.0.0",
+ "@simplewebauthn/types": "12.0.0",
"eventemitter3": "5.0.1",
"reconnecting-websocket": "4.4.0"
}
diff --git a/packages/misskey-js/src/api.types.ts b/packages/misskey-js/src/api.types.ts
index 838949f8e1..fa803194bf 100644
--- a/packages/misskey-js/src/api.types.ts
+++ b/packages/misskey-js/src/api.types.ts
@@ -33,14 +33,15 @@ type IsCaseMatched<E extends keyof Endpoints, P extends Endpoints[E]['req'], C e
Endpoints[E]['res'] extends SwitchCase
// eslint-disable-next-line @typescript-eslint/no-explicit-any
? IsNeverType<StrictExtract<Endpoints[E]['res']['$switch']['$cases'][C], [P, any]>> extends false ? true : false
- : false
+ : false;
type GetCaseResult<E extends keyof Endpoints, P extends Endpoints[E]['req'], C extends number> =
Endpoints[E]['res'] extends SwitchCase
// eslint-disable-next-line @typescript-eslint/no-explicit-any
? StrictExtract<Endpoints[E]['res']['$switch']['$cases'][C], [P, any]>[1]
- : never
+ : never;
+/* eslint-disable @stylistic/indent */
export type SwitchCaseResponseType<E extends keyof Endpoints, P extends Endpoints[E]['req']> = Endpoints[E]['res'] extends SwitchCase
? IsCaseMatched<E, P, 0> extends true ? GetCaseResult<E, P, 0> :
IsCaseMatched<E, P, 1> extends true ? GetCaseResult<E, P, 1> :
@@ -53,6 +54,7 @@ export type SwitchCaseResponseType<E extends keyof Endpoints, P extends Endpoint
IsCaseMatched<E, P, 8> extends true ? GetCaseResult<E, P, 8> :
IsCaseMatched<E, P, 9> extends true ? GetCaseResult<E, P, 9> :
Endpoints[E]['res']['$switch']['$default'] : Endpoints[E]['res'];
+/* eslint-enable @stylistic/indent */
export type Endpoints = Overwrite<
Gen,
@@ -106,4 +108,4 @@ export type Endpoints = Overwrite<
res: AdminRolesCreateResponse;
}
}
->
+>;
diff --git a/packages/misskey-js/src/autogen/endpoint.ts b/packages/misskey-js/src/autogen/endpoint.ts
index a9903b9139..2de0bc9808 100644
--- a/packages/misskey-js/src/autogen/endpoint.ts
+++ b/packages/misskey-js/src/autogen/endpoint.ts
@@ -973,7 +973,7 @@ export type Endpoints = {
'users/show': { req: UsersShowRequest; res: UsersShowResponse };
'users/update-memo': { req: UsersUpdateMemoRequest; res: EmptyResponse };
'v2/admin/emoji/list': { req: V2AdminEmojiListRequest; res: V2AdminEmojiListResponse };
-}
+};
/**
* NOTE: The content-type for all endpoints not listed here is application/json.
diff --git a/packages/misskey-js/src/entities.ts b/packages/misskey-js/src/entities.ts
index dd88791ed0..f04ab25148 100644
--- a/packages/misskey-js/src/entities.ts
+++ b/packages/misskey-js/src/entities.ts
@@ -258,11 +258,11 @@ export type SignupRequest = {
'g-recaptcha-response'?: string | null;
'turnstile-response'?: string | null;
'm-captcha-response'?: string | null;
-}
+};
export type SignupResponse = MeDetailed & {
token: string;
-}
+};
export type SignupPendingRequest = {
code: string;
@@ -313,4 +313,4 @@ export type SigninWithPasskeyResponse = {
type Values<T extends Record<PropertyKey, unknown>> = T[keyof T];
-export type PartialRolePolicyOverride = Partial<{[k in keyof RolePolicies]: Omit<Values<Role['policies']>, 'value'> & { value: RolePolicies[k] }}>;
+export type PartialRolePolicyOverride = Partial<{ [k in keyof RolePolicies]: Omit<Values<Role['policies']>, 'value'> & { value: RolePolicies[k] } }>;
diff --git a/packages/misskey-js/src/streaming.ts b/packages/misskey-js/src/streaming.ts
index 0ef2d1e7a1..371f3f1d13 100644
--- a/packages/misskey-js/src/streaming.ts
+++ b/packages/misskey-js/src/streaming.ts
@@ -197,9 +197,9 @@ export default class Stream extends EventEmitter<StreamEvents> implements IStrea
* Send a message to connection
* ! ストリーム上のやり取りはすべてJSONで行われます !
*/
- public send(typeOrPayload: string): void
- public send(typeOrPayload: string, payload: unknown): void
- public send(typeOrPayload: Record<string, unknown> | unknown[]): void
+ public send(typeOrPayload: string): void;
+ public send(typeOrPayload: string, payload: unknown): void;
+ public send(typeOrPayload: Record<string, unknown> | unknown[]): void;
public send(typeOrPayload: string | Record<string, unknown> | unknown[], payload?: unknown): void {
if (typeof typeOrPayload === 'string') {
this.stream.send(JSON.stringify({
diff --git a/packages/misskey-reversi/package.json b/packages/misskey-reversi/package.json
index 951dd1c65a..cc1ae90313 100644
--- a/packages/misskey-reversi/package.json
+++ b/packages/misskey-reversi/package.json
@@ -22,14 +22,14 @@
"lint": "pnpm typecheck && pnpm eslint"
},
"devDependencies": {
- "@types/node": "22.9.0",
- "@typescript-eslint/eslint-plugin": "7.1.0",
- "@typescript-eslint/parser": "7.1.0",
+ "@types/node": "22.10.7",
+ "@typescript-eslint/eslint-plugin": "8.20.0",
+ "@typescript-eslint/parser": "8.20.0",
"execa": "8.0.1",
- "nodemon": "3.1.7",
- "typescript": "5.6.3",
- "esbuild": "0.24.0",
- "glob": "11.0.0"
+ "nodemon": "3.1.9",
+ "typescript": "5.7.3",
+ "esbuild": "0.24.2",
+ "glob": "11.0.1"
},
"files": [
"built"
diff --git a/packages/sw/package.json b/packages/sw/package.json
index dddd6e8bd7..95e1510181 100644
--- a/packages/sw/package.json
+++ b/packages/sw/package.json
@@ -9,16 +9,16 @@
"lint": "pnpm typecheck && pnpm eslint"
},
"dependencies": {
- "esbuild": "0.24.0",
+ "esbuild": "0.24.2",
"idb-keyval": "6.2.1",
"misskey-js": "workspace:*"
},
"devDependencies": {
- "@typescript-eslint/parser": "7.17.0",
+ "@typescript-eslint/parser": "8.20.0",
"@typescript/lib-webworker": "npm:@types/serviceworker@0.0.67",
- "eslint-plugin-import": "2.30.0",
- "nodemon": "3.1.7",
- "typescript": "5.6.3"
+ "eslint-plugin-import": "2.31.0",
+ "nodemon": "3.1.9",
+ "typescript": "5.7.3"
},
"type": "module"
}