mirror of
https://github.com/misskey-dev/misskey.git
synced 2025-03-16 09:55:16 +09:00
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>
This commit is contained in:
parent
1e88aa9d81
commit
ffd8cf07e6
30
package.json
30
package.json
@ -51,29 +51,29 @@
|
|||||||
"lodash": "4.17.21"
|
"lodash": "4.17.21"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"cssnano": "6.1.2",
|
"cssnano": "7.0.6",
|
||||||
"execa": "8.0.1",
|
"execa": "8.0.1",
|
||||||
"fast-glob": "3.3.2",
|
"fast-glob": "3.3.3",
|
||||||
"ignore-walk": "6.0.5",
|
"ignore-walk": "6.0.5",
|
||||||
"js-yaml": "4.1.0",
|
"js-yaml": "4.1.0",
|
||||||
"postcss": "8.4.49",
|
"postcss": "8.5.1",
|
||||||
"tar": "6.2.1",
|
"tar": "6.2.1",
|
||||||
"terser": "5.36.0",
|
"terser": "5.37.0",
|
||||||
"typescript": "5.6.3",
|
"typescript": "5.7.3",
|
||||||
"esbuild": "0.24.0",
|
"esbuild": "0.24.2",
|
||||||
"glob": "11.0.0"
|
"glob": "11.0.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@misskey-dev/eslint-plugin": "2.0.3",
|
"@misskey-dev/eslint-plugin": "2.1.0",
|
||||||
"@types/node": "22.9.0",
|
"@types/node": "22.10.7",
|
||||||
"@typescript-eslint/eslint-plugin": "7.17.0",
|
"@typescript-eslint/eslint-plugin": "8.20.0",
|
||||||
"@typescript-eslint/parser": "7.17.0",
|
"@typescript-eslint/parser": "8.20.0",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"cypress": "13.15.2",
|
"cypress": "14.0.0",
|
||||||
"eslint": "9.14.0",
|
"eslint": "9.18.0",
|
||||||
"globals": "15.12.0",
|
"globals": "15.14.0",
|
||||||
"ncp": "2.0.0",
|
"ncp": "2.0.0",
|
||||||
"start-server-and-test": "2.0.8"
|
"start-server-and-test": "2.0.10"
|
||||||
},
|
},
|
||||||
"optionalDependencies": {
|
"optionalDependencies": {
|
||||||
"@tensorflow/tfjs-core": "4.4.0"
|
"@tensorflow/tfjs-core": "4.4.0"
|
||||||
|
@ -69,28 +69,28 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@aws-sdk/client-s3": "3.620.0",
|
"@aws-sdk/client-s3": "3.620.0",
|
||||||
"@aws-sdk/lib-storage": "3.620.0",
|
"@aws-sdk/lib-storage": "3.620.0",
|
||||||
"@bull-board/api": "6.5.0",
|
"@bull-board/api": "6.7.0",
|
||||||
"@bull-board/fastify": "6.5.0",
|
"@bull-board/fastify": "6.7.0",
|
||||||
"@bull-board/ui": "6.5.0",
|
"@bull-board/ui": "6.7.0",
|
||||||
"@discordapp/twemoji": "15.1.0",
|
"@discordapp/twemoji": "15.1.0",
|
||||||
"@fastify/accepts": "5.0.1",
|
"@fastify/accepts": "5.0.2",
|
||||||
"@fastify/cookie": "11.0.1",
|
"@fastify/cookie": "11.0.2",
|
||||||
"@fastify/cors": "10.0.1",
|
"@fastify/cors": "10.0.2",
|
||||||
"@fastify/express": "4.0.1",
|
"@fastify/express": "4.0.2",
|
||||||
"@fastify/http-proxy": "10.0.1",
|
"@fastify/http-proxy": "10.0.1",
|
||||||
"@fastify/multipart": "9.0.1",
|
"@fastify/multipart": "9.0.2",
|
||||||
"@fastify/static": "8.0.2",
|
"@fastify/static": "8.0.4",
|
||||||
"@fastify/view": "10.0.1",
|
"@fastify/view": "10.0.2",
|
||||||
"@misskey-dev/sharp-read-bmp": "1.2.0",
|
"@misskey-dev/sharp-read-bmp": "1.2.0",
|
||||||
"@misskey-dev/summaly": "5.1.0",
|
"@misskey-dev/summaly": "5.2.0",
|
||||||
"@napi-rs/canvas": "0.1.56",
|
"@napi-rs/canvas": "0.1.65",
|
||||||
"@nestjs/common": "10.4.7",
|
"@nestjs/common": "11.0.1",
|
||||||
"@nestjs/core": "10.4.7",
|
"@nestjs/core": "11.0.1",
|
||||||
"@nestjs/testing": "10.4.7",
|
"@nestjs/testing": "11.0.1",
|
||||||
"@peertube/http-signature": "1.7.0",
|
"@peertube/http-signature": "1.7.0",
|
||||||
"@sentry/node": "8.38.0",
|
"@sentry/node": "8.50.0",
|
||||||
"@sentry/profiling-node": "8.38.0",
|
"@sentry/profiling-node": "8.50.0",
|
||||||
"@simplewebauthn/server": "10.0.1",
|
"@simplewebauthn/server": "12.0.0",
|
||||||
"@sinonjs/fake-timers": "11.2.2",
|
"@sinonjs/fake-timers": "11.2.2",
|
||||||
"@smithy/node-http-handler": "2.5.0",
|
"@smithy/node-http-handler": "2.5.0",
|
||||||
"@swc/cli": "0.3.12",
|
"@swc/cli": "0.3.12",
|
||||||
@ -103,10 +103,10 @@
|
|||||||
"bcryptjs": "2.4.3",
|
"bcryptjs": "2.4.3",
|
||||||
"blurhash": "2.0.5",
|
"blurhash": "2.0.5",
|
||||||
"body-parser": "1.20.3",
|
"body-parser": "1.20.3",
|
||||||
"bullmq": "5.26.1",
|
"bullmq": "5.34.10",
|
||||||
"cacheable-lookup": "7.0.0",
|
"cacheable-lookup": "7.0.0",
|
||||||
"cbor": "9.0.2",
|
"cbor": "9.0.2",
|
||||||
"chalk": "5.3.0",
|
"chalk": "5.4.1",
|
||||||
"chalk-template": "1.1.0",
|
"chalk-template": "1.1.0",
|
||||||
"chokidar": "3.6.0",
|
"chokidar": "3.6.0",
|
||||||
"cli-highlight": "2.1.11",
|
"cli-highlight": "2.1.11",
|
||||||
@ -114,35 +114,35 @@
|
|||||||
"content-disposition": "0.5.4",
|
"content-disposition": "0.5.4",
|
||||||
"date-fns": "2.30.0",
|
"date-fns": "2.30.0",
|
||||||
"deep-email-validator": "0.1.21",
|
"deep-email-validator": "0.1.21",
|
||||||
"fastify": "5.0.0",
|
"fastify": "5.2.1",
|
||||||
"fastify-raw-body": "5.0.0",
|
"fastify-raw-body": "5.0.0",
|
||||||
"feed": "4.2.2",
|
"feed": "4.2.2",
|
||||||
"file-type": "19.6.0",
|
"file-type": "19.6.0",
|
||||||
"fluent-ffmpeg": "2.1.3",
|
"fluent-ffmpeg": "2.1.3",
|
||||||
"form-data": "4.0.1",
|
"form-data": "4.0.1",
|
||||||
"got": "14.4.4",
|
"got": "14.4.5",
|
||||||
"happy-dom": "15.11.4",
|
"happy-dom": "16.6.0",
|
||||||
"hpagent": "1.2.0",
|
"hpagent": "1.2.0",
|
||||||
"htmlescape": "1.1.1",
|
"htmlescape": "1.1.1",
|
||||||
"http-link-header": "1.1.3",
|
"http-link-header": "1.1.3",
|
||||||
"ioredis": "5.4.1",
|
"ioredis": "5.4.2",
|
||||||
"ip-cidr": "4.0.2",
|
"ip-cidr": "4.0.2",
|
||||||
"ipaddr.js": "2.2.0",
|
"ipaddr.js": "2.2.0",
|
||||||
"is-svg": "5.1.0",
|
"is-svg": "5.1.0",
|
||||||
"js-yaml": "4.1.0",
|
"js-yaml": "4.1.0",
|
||||||
"jsdom": "24.1.1",
|
"jsdom": "26.0.0",
|
||||||
"json5": "2.2.3",
|
"json5": "2.2.3",
|
||||||
"jsonld": "8.3.2",
|
"jsonld": "8.3.3",
|
||||||
"jsrsasign": "11.1.0",
|
"jsrsasign": "11.1.0",
|
||||||
"juice": "11.0.0",
|
"juice": "11.0.0",
|
||||||
"meilisearch": "0.45.0",
|
"meilisearch": "0.48.2",
|
||||||
"mfm-js": "0.24.0",
|
"mfm-js": "0.24.0",
|
||||||
"microformats-parser": "2.0.2",
|
"microformats-parser": "2.0.2",
|
||||||
"mime-types": "2.1.35",
|
"mime-types": "2.1.35",
|
||||||
"misskey-js": "workspace:*",
|
"misskey-js": "workspace:*",
|
||||||
"misskey-reversi": "workspace:*",
|
"misskey-reversi": "workspace:*",
|
||||||
"ms": "3.0.0-canary.1",
|
"ms": "3.0.0-canary.1",
|
||||||
"nanoid": "5.0.8",
|
"nanoid": "5.0.9",
|
||||||
"nested-property": "4.0.0",
|
"nested-property": "4.0.0",
|
||||||
"node-fetch": "3.3.2",
|
"node-fetch": "3.3.2",
|
||||||
"nodemailer": "6.9.16",
|
"nodemailer": "6.9.16",
|
||||||
@ -151,7 +151,7 @@
|
|||||||
"oauth2orize": "1.12.0",
|
"oauth2orize": "1.12.0",
|
||||||
"oauth2orize-pkce": "0.1.2",
|
"oauth2orize-pkce": "0.1.2",
|
||||||
"os-utils": "0.0.14",
|
"os-utils": "0.0.14",
|
||||||
"otpauth": "9.3.4",
|
"otpauth": "9.3.6",
|
||||||
"parse5": "7.2.1",
|
"parse5": "7.2.1",
|
||||||
"pg": "8.13.1",
|
"pg": "8.13.1",
|
||||||
"pkce-challenge": "4.1.0",
|
"pkce-challenge": "4.1.0",
|
||||||
@ -167,19 +167,19 @@
|
|||||||
"rename": "1.0.4",
|
"rename": "1.0.4",
|
||||||
"rss-parser": "3.13.0",
|
"rss-parser": "3.13.0",
|
||||||
"rxjs": "7.8.1",
|
"rxjs": "7.8.1",
|
||||||
"sanitize-html": "2.13.1",
|
"sanitize-html": "2.14.0",
|
||||||
"secure-json-parse": "2.7.0",
|
"secure-json-parse": "3.0.2",
|
||||||
"sharp": "0.33.5",
|
"sharp": "0.33.5",
|
||||||
"slacc": "0.0.10",
|
"slacc": "0.0.10",
|
||||||
"strict-event-emitter-types": "2.0.0",
|
"strict-event-emitter-types": "2.0.0",
|
||||||
"stringz": "2.1.0",
|
"stringz": "2.1.0",
|
||||||
"systeminformation": "5.23.5",
|
"systeminformation": "5.25.11",
|
||||||
"tinycolor2": "1.6.0",
|
"tinycolor2": "1.6.0",
|
||||||
"tmp": "0.2.3",
|
"tmp": "0.2.3",
|
||||||
"tsc-alias": "1.8.10",
|
"tsc-alias": "1.8.10",
|
||||||
"tsconfig-paths": "4.2.0",
|
"tsconfig-paths": "4.2.0",
|
||||||
"typeorm": "0.3.20",
|
"typeorm": "0.3.20",
|
||||||
"typescript": "5.6.3",
|
"typescript": "5.7.3",
|
||||||
"ulid": "2.3.0",
|
"ulid": "2.3.0",
|
||||||
"vary": "1.1.2",
|
"vary": "1.1.2",
|
||||||
"web-push": "3.6.7",
|
"web-push": "3.6.7",
|
||||||
@ -189,7 +189,7 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@jest/globals": "29.7.0",
|
"@jest/globals": "29.7.0",
|
||||||
"@nestjs/platform-express": "10.4.7",
|
"@nestjs/platform-express": "10.4.7",
|
||||||
"@simplewebauthn/types": "10.0.0",
|
"@simplewebauthn/types": "12.0.0",
|
||||||
"@swc/jest": "0.2.37",
|
"@swc/jest": "0.2.37",
|
||||||
"@types/accepts": "1.3.7",
|
"@types/accepts": "1.3.7",
|
||||||
"@types/archiver": "6.0.3",
|
"@types/archiver": "6.0.3",
|
||||||
@ -204,11 +204,11 @@
|
|||||||
"@types/js-yaml": "4.0.9",
|
"@types/js-yaml": "4.0.9",
|
||||||
"@types/jsdom": "21.1.7",
|
"@types/jsdom": "21.1.7",
|
||||||
"@types/jsonld": "1.5.15",
|
"@types/jsonld": "1.5.15",
|
||||||
"@types/jsrsasign": "10.5.14",
|
"@types/jsrsasign": "10.5.15",
|
||||||
"@types/mime-types": "2.1.4",
|
"@types/mime-types": "2.1.4",
|
||||||
"@types/ms": "0.7.34",
|
"@types/ms": "0.7.34",
|
||||||
"@types/node": "22.9.0",
|
"@types/node": "22.10.7",
|
||||||
"@types/nodemailer": "6.4.16",
|
"@types/nodemailer": "6.4.17",
|
||||||
"@types/oauth": "0.9.6",
|
"@types/oauth": "0.9.6",
|
||||||
"@types/oauth2orize": "1.11.5",
|
"@types/oauth2orize": "1.11.5",
|
||||||
"@types/oauth2orize-pkce": "0.1.2",
|
"@types/oauth2orize-pkce": "0.1.2",
|
||||||
@ -227,16 +227,16 @@
|
|||||||
"@types/vary": "1.1.3",
|
"@types/vary": "1.1.3",
|
||||||
"@types/web-push": "3.6.4",
|
"@types/web-push": "3.6.4",
|
||||||
"@types/ws": "8.5.13",
|
"@types/ws": "8.5.13",
|
||||||
"@typescript-eslint/eslint-plugin": "7.17.0",
|
"@typescript-eslint/eslint-plugin": "8.20.0",
|
||||||
"@typescript-eslint/parser": "7.17.0",
|
"@typescript-eslint/parser": "8.20.0",
|
||||||
"aws-sdk-client-mock": "4.0.1",
|
"aws-sdk-client-mock": "4.0.1",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"eslint-plugin-import": "2.30.0",
|
"eslint-plugin-import": "2.31.0",
|
||||||
"execa": "8.0.1",
|
"execa": "8.0.1",
|
||||||
"fkill": "9.0.0",
|
"fkill": "9.0.0",
|
||||||
"jest": "29.7.0",
|
"jest": "29.7.0",
|
||||||
"jest-mock": "29.7.0",
|
"jest-mock": "29.7.0",
|
||||||
"nodemon": "3.1.7",
|
"nodemon": "3.1.9",
|
||||||
"pid-port": "1.0.0",
|
"pid-port": "1.0.0",
|
||||||
"simple-oauth2": "5.1.0"
|
"simple-oauth2": "5.1.0"
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,7 @@ export type CaptchaSetting = {
|
|||||||
siteKey: string | null;
|
siteKey: string | null;
|
||||||
secretKey: string | null;
|
secretKey: string | null;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
export class CaptchaError extends Error {
|
export class CaptchaError extends Error {
|
||||||
public readonly code: CaptchaErrorCode;
|
public readonly code: CaptchaErrorCode;
|
||||||
@ -59,11 +59,11 @@ export class CaptchaError extends Error {
|
|||||||
|
|
||||||
export type CaptchaSaveSuccess = {
|
export type CaptchaSaveSuccess = {
|
||||||
success: true;
|
success: true;
|
||||||
}
|
};
|
||||||
export type CaptchaSaveFailure = {
|
export type CaptchaSaveFailure = {
|
||||||
success: false;
|
success: false;
|
||||||
error: CaptchaError;
|
error: CaptchaError;
|
||||||
}
|
};
|
||||||
export type CaptchaSaveResult = CaptchaSaveSuccess | CaptchaSaveFailure;
|
export type CaptchaSaveResult = CaptchaSaveSuccess | CaptchaSaveFailure;
|
||||||
|
|
||||||
type CaptchaResponse = {
|
type CaptchaResponse = {
|
||||||
|
@ -9,7 +9,7 @@ import { DI } from '@/di-symbols.js';
|
|||||||
import { bindThis } from '@/decorators.js';
|
import { bindThis } from '@/decorators.js';
|
||||||
import { IdService } from '@/core/IdService.js';
|
import { IdService } from '@/core/IdService.js';
|
||||||
|
|
||||||
export type FanoutTimelineName =
|
export type FanoutTimelineName = (
|
||||||
// home timeline
|
// home timeline
|
||||||
| `homeTimeline:${string}`
|
| `homeTimeline:${string}`
|
||||||
| `homeTimelineWithFiles:${string}` // only notes with files are included
|
| `homeTimelineWithFiles:${string}` // only notes with files are included
|
||||||
@ -37,6 +37,7 @@ export type FanoutTimelineName =
|
|||||||
|
|
||||||
// role timelines
|
// role timelines
|
||||||
| `roleTimeline:${string}` // any notes are included
|
| `roleTimeline:${string}` // any notes are included
|
||||||
|
);
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class FanoutTimelineService {
|
export class FanoutTimelineService {
|
||||||
|
@ -211,7 +211,7 @@ type SerializedAll<T> = {
|
|||||||
|
|
||||||
type UndefinedAsNullAll<T> = {
|
type UndefinedAsNullAll<T> = {
|
||||||
[K in keyof T]: T[K] extends undefined ? null : T[K];
|
[K in keyof T]: T[K] extends undefined ? null : T[K];
|
||||||
}
|
};
|
||||||
|
|
||||||
export interface InternalEventTypes {
|
export interface InternalEventTypes {
|
||||||
userChangeSuspendedState: { id: MiUser['id']; isSuspended: MiUser['isSuspended']; };
|
userChangeSuspendedState: { id: MiUser['id']; isSuspended: MiUser['isSuspended']; };
|
||||||
|
@ -492,7 +492,8 @@ export class MfmService {
|
|||||||
|
|
||||||
appendChildren(nodes, body);
|
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 => {});
|
happyDOM.close().catch(err => {});
|
||||||
|
|
||||||
|
@ -127,11 +127,11 @@ export class WebAuthnService {
|
|||||||
const { registrationInfo } = verification;
|
const { registrationInfo } = verification;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
credentialID: registrationInfo.credentialID,
|
credentialID: registrationInfo.credential.id,
|
||||||
credentialPublicKey: registrationInfo.credentialPublicKey,
|
credentialPublicKey: registrationInfo.credential.publicKey,
|
||||||
attestationObject: registrationInfo.attestationObject,
|
attestationObject: registrationInfo.attestationObject,
|
||||||
fmt: registrationInfo.fmt,
|
fmt: registrationInfo.fmt,
|
||||||
counter: registrationInfo.counter,
|
counter: registrationInfo.credential.counter,
|
||||||
userVerified: registrationInfo.userVerified,
|
userVerified: registrationInfo.userVerified,
|
||||||
credentialDeviceType: registrationInfo.credentialDeviceType,
|
credentialDeviceType: registrationInfo.credentialDeviceType,
|
||||||
credentialBackedUp: registrationInfo.credentialBackedUp,
|
credentialBackedUp: registrationInfo.credentialBackedUp,
|
||||||
@ -212,9 +212,9 @@ export class WebAuthnService {
|
|||||||
expectedChallenge: challenge,
|
expectedChallenge: challenge,
|
||||||
expectedOrigin: relyingParty.origin,
|
expectedOrigin: relyingParty.origin,
|
||||||
expectedRPID: relyingParty.rpId,
|
expectedRPID: relyingParty.rpId,
|
||||||
authenticator: {
|
credential: {
|
||||||
credentialID: key.id,
|
id: key.id,
|
||||||
credentialPublicKey: Buffer.from(key.publicKey, 'base64url'),
|
publicKey: Buffer.from(key.publicKey, 'base64url'),
|
||||||
counter: key.counter,
|
counter: key.counter,
|
||||||
transports: key.transports ? key.transports as AuthenticatorTransportFuture[] : undefined,
|
transports: key.transports ? key.transports as AuthenticatorTransportFuture[] : undefined,
|
||||||
},
|
},
|
||||||
@ -292,9 +292,9 @@ export class WebAuthnService {
|
|||||||
expectedChallenge: challenge,
|
expectedChallenge: challenge,
|
||||||
expectedOrigin: relyingParty.origin,
|
expectedOrigin: relyingParty.origin,
|
||||||
expectedRPID: relyingParty.rpId,
|
expectedRPID: relyingParty.rpId,
|
||||||
authenticator: {
|
credential: {
|
||||||
credentialID: key.id,
|
id: key.id,
|
||||||
credentialPublicKey: Buffer.from(key.publicKey, 'base64url'),
|
publicKey: Buffer.from(key.publicKey, 'base64url'),
|
||||||
counter: key.counter,
|
counter: key.counter,
|
||||||
transports: key.transports ? key.transports as AuthenticatorTransportFuture[] : undefined,
|
transports: key.transports ? key.transports as AuthenticatorTransportFuture[] : undefined,
|
||||||
},
|
},
|
||||||
|
@ -57,12 +57,14 @@ const ajv = new Ajv();
|
|||||||
|
|
||||||
function isLocalUser(user: MiUser): user is MiLocalUser;
|
function isLocalUser(user: MiUser): user is MiLocalUser;
|
||||||
function isLocalUser<T extends { host: MiUser['host'] }>(user: T): user is (T & { host: null; });
|
function isLocalUser<T extends { host: MiUser['host'] }>(user: T): user is (T & { host: null; });
|
||||||
|
|
||||||
function isLocalUser(user: MiUser | { host: MiUser['host'] }): boolean {
|
function isLocalUser(user: MiUser | { host: MiUser['host'] }): boolean {
|
||||||
return user.host == null;
|
return user.host == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function isRemoteUser(user: MiUser): user is MiRemoteUser;
|
function isRemoteUser(user: MiUser): user is MiRemoteUser;
|
||||||
function isRemoteUser<T extends { host: MiUser['host'] }>(user: T): user is (T & { host: string; });
|
function isRemoteUser<T extends { host: MiUser['host'] }>(user: T): user is (T & { host: string; });
|
||||||
|
|
||||||
function isRemoteUser(user: MiUser | { host: MiUser['host'] }): boolean {
|
function isRemoteUser(user: MiUser | { host: MiUser['host'] }): boolean {
|
||||||
return !isLocalUser(user);
|
return !isLocalUser(user);
|
||||||
}
|
}
|
||||||
@ -78,7 +80,7 @@ export type UserRelation = {
|
|||||||
isBlocked: boolean
|
isBlocked: boolean
|
||||||
isMuted: boolean
|
isMuted: boolean
|
||||||
isRenoteMuted: boolean
|
isRenoteMuted: boolean
|
||||||
}
|
};
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class UserEntityService implements OnModuleInit {
|
export class UserEntityService implements OnModuleInit {
|
||||||
|
@ -143,7 +143,7 @@ type OfSchema = {
|
|||||||
readonly anyOf?: ReadonlyArray<Schema>;
|
readonly anyOf?: ReadonlyArray<Schema>;
|
||||||
readonly oneOf?: ReadonlyArray<Schema>;
|
readonly oneOf?: ReadonlyArray<Schema>;
|
||||||
readonly allOf?: ReadonlyArray<Schema>;
|
readonly allOf?: ReadonlyArray<Schema>;
|
||||||
}
|
};
|
||||||
|
|
||||||
export interface Schema extends OfSchema {
|
export interface Schema extends OfSchema {
|
||||||
readonly type?: TypeStringef;
|
readonly type?: TypeStringef;
|
||||||
@ -217,7 +217,7 @@ type ObjectSchemaTypeDef<p extends Schema> =
|
|||||||
:
|
:
|
||||||
p['anyOf'] extends ReadonlyArray<Schema> ? never : // see CONTRIBUTING.md
|
p['anyOf'] extends ReadonlyArray<Schema> ? never : // see CONTRIBUTING.md
|
||||||
p['allOf'] extends ReadonlyArray<Schema> ? UnionToIntersection<UnionSchemaType<p['allOf']>> :
|
p['allOf'] extends ReadonlyArray<Schema> ? UnionToIntersection<UnionSchemaType<p['allOf']>> :
|
||||||
any
|
any;
|
||||||
|
|
||||||
type ObjectSchemaType<p extends Schema> = NullOrUndefined<p, ObjectSchemaTypeDef<p>>;
|
type ObjectSchemaType<p extends Schema> = NullOrUndefined<p, ObjectSchemaTypeDef<p>>;
|
||||||
|
|
||||||
|
@ -288,24 +288,24 @@ export class MiUser {
|
|||||||
export type MiLocalUser = MiUser & {
|
export type MiLocalUser = MiUser & {
|
||||||
host: null;
|
host: null;
|
||||||
uri: null;
|
uri: null;
|
||||||
}
|
};
|
||||||
|
|
||||||
export type MiPartialLocalUser = Partial<MiUser> & {
|
export type MiPartialLocalUser = Partial<MiUser> & {
|
||||||
id: MiUser['id'];
|
id: MiUser['id'];
|
||||||
host: null;
|
host: null;
|
||||||
uri: null;
|
uri: null;
|
||||||
}
|
};
|
||||||
|
|
||||||
export type MiRemoteUser = MiUser & {
|
export type MiRemoteUser = MiUser & {
|
||||||
host: string;
|
host: string;
|
||||||
uri: string;
|
uri: string;
|
||||||
}
|
};
|
||||||
|
|
||||||
export type MiPartialRemoteUser = Partial<MiUser> & {
|
export type MiPartialRemoteUser = Partial<MiUser> & {
|
||||||
id: MiUser['id'];
|
id: MiUser['id'];
|
||||||
host: string;
|
host: string;
|
||||||
uri: string;
|
uri: string;
|
||||||
}
|
};
|
||||||
|
|
||||||
export const localUsernameSchema = { type: 'string', pattern: /^\w{1,20}$/.toString().slice(1, -1) } as const;
|
export const localUsernameSchema = { type: 'string', pattern: /^\w{1,20}$/.toString().slice(1, -1) } as const;
|
||||||
export const passwordSchema = { type: 'string', minLength: 1 } as const;
|
export const passwordSchema = { type: 'string', minLength: 1 } as const;
|
||||||
|
@ -92,7 +92,7 @@ const sqlLogger = dbLogger.createSubLogger('sql', 'gray');
|
|||||||
export type LoggerProps = {
|
export type LoggerProps = {
|
||||||
disableQueryTruncation?: boolean;
|
disableQueryTruncation?: boolean;
|
||||||
enableQueryParamLogging?: boolean;
|
enableQueryParamLogging?: boolean;
|
||||||
}
|
};
|
||||||
|
|
||||||
function highlightSql(sql: string) {
|
function highlightSql(sql: string) {
|
||||||
return highlight.highlight(sql, {
|
return highlight.highlight(sql, {
|
||||||
|
@ -29,7 +29,7 @@ export type ModeratorInactivityEvaluationResult = {
|
|||||||
isModeratorsInactive: boolean;
|
isModeratorsInactive: boolean;
|
||||||
inactiveModerators: MiUser[];
|
inactiveModerators: MiUser[];
|
||||||
remainingTime: ModeratorInactivityRemainingTime;
|
remainingTime: ModeratorInactivityRemainingTime;
|
||||||
}
|
};
|
||||||
|
|
||||||
export type ModeratorInactivityRemainingTime = {
|
export type ModeratorInactivityRemainingTime = {
|
||||||
time: number;
|
time: number;
|
||||||
|
@ -38,7 +38,7 @@ export type RelationshipJobData = {
|
|||||||
silent?: boolean;
|
silent?: boolean;
|
||||||
requestId?: string;
|
requestId?: string;
|
||||||
withReplies?: boolean;
|
withReplies?: boolean;
|
||||||
}
|
};
|
||||||
|
|
||||||
export type DbJobData<T extends keyof DbJobMap> = DbJobMap[T];
|
export type DbJobData<T extends keyof DbJobMap> = DbJobMap[T];
|
||||||
|
|
||||||
@ -61,11 +61,11 @@ export type DbJobMap = {
|
|||||||
importUserLists: DbUserImportJobData;
|
importUserLists: DbUserImportJobData;
|
||||||
importCustomEmojis: DbUserImportJobData;
|
importCustomEmojis: DbUserImportJobData;
|
||||||
deleteAccount: DbUserDeleteJobData;
|
deleteAccount: DbUserDeleteJobData;
|
||||||
}
|
};
|
||||||
|
|
||||||
export type DbJobDataWithUser = {
|
export type DbJobDataWithUser = {
|
||||||
user: ThinUser;
|
user: ThinUser;
|
||||||
}
|
};
|
||||||
|
|
||||||
export type DbExportFollowingData = {
|
export type DbExportFollowingData = {
|
||||||
user: ThinUser;
|
user: ThinUser;
|
||||||
@ -75,7 +75,7 @@ export type DbExportFollowingData = {
|
|||||||
|
|
||||||
export type DBExportAntennasData = {
|
export type DBExportAntennasData = {
|
||||||
user: ThinUser
|
user: ThinUser
|
||||||
}
|
};
|
||||||
|
|
||||||
export type DbUserDeleteJobData = {
|
export type DbUserDeleteJobData = {
|
||||||
user: ThinUser;
|
user: ThinUser;
|
||||||
@ -91,7 +91,7 @@ export type DbUserImportJobData = {
|
|||||||
export type DBAntennaImportJobData = {
|
export type DBAntennaImportJobData = {
|
||||||
user: ThinUser,
|
user: ThinUser,
|
||||||
antenna: Antenna
|
antenna: Antenna
|
||||||
}
|
};
|
||||||
|
|
||||||
export type DbUserImportToDbJobData = {
|
export type DbUserImportToDbJobData = {
|
||||||
user: ThinUser;
|
user: ThinUser;
|
||||||
|
@ -122,7 +122,7 @@ export type IEndpointMeta = (Omit<IEndpointMetaBase, 'requireCrential' | 'requir
|
|||||||
}) | (Omit<IEndpointMetaBase, 'requireAdmin' | 'kind'> & {
|
}) | (Omit<IEndpointMetaBase, 'requireAdmin' | 'kind'> & {
|
||||||
requireAdmin: true,
|
requireAdmin: true,
|
||||||
kind: (typeof permissions)[number],
|
kind: (typeof permissions)[number],
|
||||||
})
|
});
|
||||||
|
|
||||||
export interface IEndpoint {
|
export interface IEndpoint {
|
||||||
name: string;
|
name: string;
|
||||||
|
@ -82,8 +82,8 @@ export default abstract class Channel {
|
|||||||
this.connection = connection;
|
this.connection = connection;
|
||||||
}
|
}
|
||||||
|
|
||||||
public send(payload: { type: string, body: JsonValue }): void
|
public send(payload: { type: string, body: JsonValue }): void;
|
||||||
public send(type: string, payload: JsonValue): void
|
public send(type: string, payload: JsonValue): void;
|
||||||
@bindThis
|
@bindThis
|
||||||
public send(typeOrPayload: { type: string, body: JsonValue } | string, payload?: JsonValue) {
|
public send(typeOrPayload: { type: string, body: JsonValue } | string, payload?: JsonValue) {
|
||||||
const type = payload === undefined ? (typeOrPayload as { type: string, body: JsonValue }).type : (typeOrPayload as string);
|
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;
|
requireCredential: T;
|
||||||
kind: T extends true ? string : string | null | undefined;
|
kind: T extends true ? string : string | null | undefined;
|
||||||
create: (id: string, connection: Connection) => Channel;
|
create: (id: string, connection: Connection) => Channel;
|
||||||
}
|
};
|
||||||
|
@ -22,7 +22,7 @@ export type LoginUser = SigninResponse & {
|
|||||||
client: Misskey.api.APIClient;
|
client: Misskey.api.APIClient;
|
||||||
username: string;
|
username: string;
|
||||||
password: string;
|
password: string;
|
||||||
}
|
};
|
||||||
|
|
||||||
/** used for avoiding overload and some endpoints */
|
/** used for avoiding overload and some endpoints */
|
||||||
export type Request = <
|
export type Request = <
|
||||||
|
@ -10,13 +10,13 @@ import { channel, clip, cookie, galleryPost, page, play, post, signup, simpleGet
|
|||||||
import type { SimpleGetResponse } from '../utils.js';
|
import type { SimpleGetResponse } from '../utils.js';
|
||||||
import type * as misskey from 'misskey-js';
|
import type * as misskey from 'misskey-js';
|
||||||
|
|
||||||
// Request Accept
|
// Request Accept in lowercase
|
||||||
const ONLY_AP = 'application/activity+json';
|
const ONLY_AP = 'application/activity+json';
|
||||||
const PREFER_AP = 'application/activity+json, */*';
|
const PREFER_AP = 'application/activity+json, */*';
|
||||||
const PREFER_HTML = 'text/html, */*';
|
const PREFER_HTML = 'text/html, */*';
|
||||||
const UNSPECIFIED = '*/*';
|
const UNSPECIFIED = '*/*';
|
||||||
|
|
||||||
// Response Content-Type
|
// Response Content-Type in lowercase
|
||||||
const AP = 'application/activity+json; charset=utf-8';
|
const AP = 'application/activity+json; charset=utf-8';
|
||||||
const HTML = 'text/html; charset=utf-8';
|
const HTML = 'text/html; charset=utf-8';
|
||||||
const JSON_UTF8 = 'application/json; charset=utf-8';
|
const JSON_UTF8 = 'application/json; charset=utf-8';
|
||||||
@ -44,7 +44,8 @@ describe('Webリソース', () => {
|
|||||||
const { path, accept, cookie, type } = param;
|
const { path, accept, cookie, type } = param;
|
||||||
const res = await simpleGet(path, accept, cookie);
|
const res = await simpleGet(path, accept, cookie);
|
||||||
assert.strictEqual(res.status, 200);
|
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;
|
return res;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -95,8 +96,7 @@ describe('Webリソース', () => {
|
|||||||
describe.each([
|
describe.each([
|
||||||
{ path: '/', type: HTML },
|
{ path: '/', type: HTML },
|
||||||
{ path: '/docs/ja-JP/about', type: HTML }, // "指定されたURLに該当するページはありませんでした。"
|
{ 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: HTML },
|
||||||
{ path: '/api-doc', type: 'text/html; charset=UTF-8' },
|
|
||||||
{ path: '/api.json', type: JSON_UTF8 },
|
{ path: '/api.json', type: JSON_UTF8 },
|
||||||
{ path: '/api-console', type: HTML },
|
{ path: '/api-console', type: HTML },
|
||||||
{ path: '/_info_card_', type: HTML },
|
{ path: '/_info_card_', type: HTML },
|
||||||
|
@ -24,13 +24,13 @@ describe('MfmService', () => {
|
|||||||
describe('toHtml', () => {
|
describe('toHtml', () => {
|
||||||
test('br', () => {
|
test('br', () => {
|
||||||
const input = 'foo\nbar\nbaz';
|
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);
|
assert.equal(mfmService.toHtml(mfm.parse(input)), output);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('br alt', () => {
|
test('br alt', () => {
|
||||||
const input = 'foo\r\nbar\rbaz';
|
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);
|
assert.equal(mfmService.toHtml(mfm.parse(input)), output);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -13,11 +13,11 @@
|
|||||||
"@discordapp/twemoji": "15.1.0",
|
"@discordapp/twemoji": "15.1.0",
|
||||||
"@rollup/plugin-json": "6.1.0",
|
"@rollup/plugin-json": "6.1.0",
|
||||||
"@rollup/plugin-replace": "5.0.7",
|
"@rollup/plugin-replace": "5.0.7",
|
||||||
"@rollup/pluginutils": "5.1.3",
|
"@rollup/pluginutils": "5.1.4",
|
||||||
"@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",
|
"@twemoji/parser": "15.1.1",
|
||||||
"@vitejs/plugin-vue": "5.2.0",
|
"@vitejs/plugin-vue": "5.2.1",
|
||||||
"@vue/compiler-sfc": "3.5.12",
|
"@vue/compiler-sfc": "3.5.13",
|
||||||
"astring": "1.9.0",
|
"astring": "1.9.0",
|
||||||
"buraha": "0.0.1",
|
"buraha": "0.0.1",
|
||||||
"estree-walker": "3.0.3",
|
"estree-walker": "3.0.3",
|
||||||
@ -25,47 +25,47 @@
|
|||||||
"misskey-js": "workspace:*",
|
"misskey-js": "workspace:*",
|
||||||
"frontend-shared": "workspace:*",
|
"frontend-shared": "workspace:*",
|
||||||
"punycode.js": "2.3.1",
|
"punycode.js": "2.3.1",
|
||||||
"rollup": "4.26.0",
|
"rollup": "4.31.0",
|
||||||
"sass": "1.79.4",
|
"sass": "1.83.4",
|
||||||
"shiki": "1.22.2",
|
"shiki": "1.27.2",
|
||||||
"tinycolor2": "1.6.0",
|
"tinycolor2": "1.6.0",
|
||||||
"tsc-alias": "1.8.10",
|
"tsc-alias": "1.8.10",
|
||||||
"tsconfig-paths": "4.2.0",
|
"tsconfig-paths": "4.2.0",
|
||||||
"typescript": "5.6.3",
|
"typescript": "5.7.3",
|
||||||
"uuid": "10.0.0",
|
"uuid": "10.0.0",
|
||||||
"json5": "2.2.3",
|
"json5": "2.2.3",
|
||||||
"vite": "5.4.11",
|
"vite": "6.0.7",
|
||||||
"vue": "3.5.12"
|
"vue": "3.5.13"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@misskey-dev/summaly": "5.1.0",
|
"@misskey-dev/summaly": "5.2.0",
|
||||||
"@testing-library/vue": "8.1.0",
|
"@testing-library/vue": "8.1.0",
|
||||||
"@types/estree": "1.0.6",
|
"@types/estree": "1.0.6",
|
||||||
"@types/micromatch": "4.0.9",
|
"@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/punycode.js": "npm:@types/punycode@2.1.4",
|
||||||
"@types/tinycolor2": "1.4.6",
|
"@types/tinycolor2": "1.4.6",
|
||||||
"@types/uuid": "10.0.0",
|
"@types/uuid": "10.0.0",
|
||||||
"@types/ws": "8.5.13",
|
"@types/ws": "8.5.13",
|
||||||
"@typescript-eslint/eslint-plugin": "7.17.0",
|
"@typescript-eslint/eslint-plugin": "8.20.0",
|
||||||
"@typescript-eslint/parser": "7.17.0",
|
"@typescript-eslint/parser": "8.20.0",
|
||||||
"@vitest/coverage-v8": "1.6.0",
|
"@vitest/coverage-v8": "1.6.0",
|
||||||
"@vue/runtime-core": "3.5.12",
|
"@vue/runtime-core": "3.5.13",
|
||||||
"acorn": "8.14.0",
|
"acorn": "8.14.0",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"eslint-plugin-import": "2.31.0",
|
"eslint-plugin-import": "2.31.0",
|
||||||
"eslint-plugin-vue": "9.31.0",
|
"eslint-plugin-vue": "9.32.0",
|
||||||
"fast-glob": "3.3.2",
|
"fast-glob": "3.3.3",
|
||||||
"happy-dom": "10.0.3",
|
"happy-dom": "16.6.0",
|
||||||
"intersection-observer": "0.12.2",
|
"intersection-observer": "0.12.2",
|
||||||
"micromatch": "4.0.8",
|
"micromatch": "4.0.8",
|
||||||
"msw": "2.6.4",
|
"msw": "2.7.0",
|
||||||
"nodemon": "3.1.7",
|
"nodemon": "3.1.9",
|
||||||
"prettier": "3.3.3",
|
"prettier": "3.4.2",
|
||||||
"start-server-and-test": "2.0.8",
|
"start-server-and-test": "2.0.10",
|
||||||
"vite-plugin-turbosnap": "1.0.3",
|
"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-eslint-parser": "9.4.3",
|
||||||
"vue-tsc": "2.1.10"
|
"vue-tsc": "2.2.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ export type MiPostMessageEvent<T extends PostMessageEventType = PostMessageEvent
|
|||||||
type: T;
|
type: T;
|
||||||
iframeId?: string;
|
iframeId?: string;
|
||||||
payload?: PostMessageEventPayload[T];
|
payload?: PostMessageEventPayload[T];
|
||||||
}
|
};
|
||||||
|
|
||||||
let defaultIframeId: string | null = null;
|
let defaultIframeId: string | null = null;
|
||||||
|
|
||||||
|
@ -98,4 +98,11 @@ export default [
|
|||||||
'vue/attribute-hyphenation': ['error', 'never'],
|
'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',
|
||||||
|
],
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
//#region Embed関連の定義
|
//#region Embed関連の定義
|
||||||
|
|
||||||
/** 埋め込みの対象となるエンティティ(/embed/xxx の xxx の部分と対応させる) */
|
/** 埋め込みの対象となるエンティティ(/embed/xxx の xxx の部分と対応させる) */
|
||||||
const embeddableEntities = [
|
export const embeddableEntities = [
|
||||||
'notes',
|
'notes',
|
||||||
'user-timeline',
|
'user-timeline',
|
||||||
'clips',
|
'clips',
|
||||||
|
@ -9,7 +9,7 @@ export type UnicodeEmojiDef = {
|
|||||||
name: string;
|
name: string;
|
||||||
char: string;
|
char: string;
|
||||||
category: typeof unicodeEmojiCategories[number];
|
category: typeof unicodeEmojiCategories[number];
|
||||||
}
|
};
|
||||||
|
|
||||||
// initial converted from https://github.com/muan/emojilib/commit/242fe68be86ed6536843b83f7e32f376468b38fb
|
// initial converted from https://github.com/muan/emojilib/commit/242fe68be86ed6536843b83f7e32f376468b38fb
|
||||||
import _emojilist from './emojilist.json';
|
import _emojilist from './emojilist.json';
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
* SPDX-FileCopyrightText: syuilo and misskey-project
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import type { ILocale, ParameterizedString } from '../../../locales/index.js';
|
import type { ILocale, ParameterizedString } from '../../../locales/index.js';
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
@ -47,6 +47,8 @@ export default [
|
|||||||
'@typescript-eslint/no-empty-interface': ['error', {
|
'@typescript-eslint/no-empty-interface': ['error', {
|
||||||
allowSingleExtends: true,
|
allowSingleExtends: true,
|
||||||
}],
|
}],
|
||||||
|
// defineExposeが誤検知されてしまう
|
||||||
|
'@typescript-eslint/no-unused-expressions': 'off',
|
||||||
'import/consistent-type-specifier-style': ['error', 'prefer-top-level'],
|
'import/consistent-type-specifier-style': ['error', 'prefer-top-level'],
|
||||||
// window の禁止理由: グローバルスコープと衝突し、予期せぬ結果を招くため
|
// window の禁止理由: グローバルスコープと衝突し、予期せぬ結果を招くため
|
||||||
// e の禁止理由: error や event など、複数のキーワードの頭文字であり分かりにくいため
|
// e の禁止理由: error や event など、複数のキーワードの頭文字であり分かりにくいため
|
||||||
|
@ -22,23 +22,23 @@
|
|||||||
"@misskey-dev/browser-image-resizer": "2024.1.0",
|
"@misskey-dev/browser-image-resizer": "2024.1.0",
|
||||||
"@rollup/plugin-json": "6.1.0",
|
"@rollup/plugin-json": "6.1.0",
|
||||||
"@rollup/plugin-replace": "5.0.7",
|
"@rollup/plugin-replace": "5.0.7",
|
||||||
"@rollup/pluginutils": "5.1.3",
|
"@rollup/pluginutils": "5.1.4",
|
||||||
"@syuilo/aiscript": "0.19.0",
|
"@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",
|
"@twemoji/parser": "15.1.1",
|
||||||
"@vitejs/plugin-vue": "5.2.0",
|
"@vitejs/plugin-vue": "5.2.1",
|
||||||
"@vue/compiler-sfc": "3.5.12",
|
"@vue/compiler-sfc": "3.5.13",
|
||||||
"aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.1.15",
|
"aiscript-vscode": "github:aiscript-dev/aiscript-vscode#v0.1.15",
|
||||||
"astring": "1.9.0",
|
"astring": "1.9.0",
|
||||||
"broadcast-channel": "7.0.0",
|
"broadcast-channel": "7.0.0",
|
||||||
"buraha": "0.0.1",
|
"buraha": "0.0.1",
|
||||||
"canvas-confetti": "1.9.3",
|
"canvas-confetti": "1.9.3",
|
||||||
"chart.js": "4.4.6",
|
"chart.js": "4.4.7",
|
||||||
"chartjs-adapter-date-fns": "3.0.0",
|
"chartjs-adapter-date-fns": "3.0.0",
|
||||||
"chartjs-chart-matrix": "2.0.1",
|
"chartjs-chart-matrix": "2.0.1",
|
||||||
"chartjs-plugin-gradient": "0.6.1",
|
"chartjs-plugin-gradient": "0.6.1",
|
||||||
"chartjs-plugin-zoom": "2.0.1",
|
"chartjs-plugin-zoom": "2.2.0",
|
||||||
"chromatic": "11.18.1",
|
"chromatic": "11.25.0",
|
||||||
"compare-versions": "6.1.1",
|
"compare-versions": "6.1.1",
|
||||||
"cropperjs": "2.0.0-rc.2",
|
"cropperjs": "2.0.0-rc.2",
|
||||||
"date-fns": "2.30.0",
|
"date-fns": "2.30.0",
|
||||||
@ -56,50 +56,50 @@
|
|||||||
"misskey-reversi": "workspace:*",
|
"misskey-reversi": "workspace:*",
|
||||||
"photoswipe": "5.4.4",
|
"photoswipe": "5.4.4",
|
||||||
"punycode.js": "2.3.1",
|
"punycode.js": "2.3.1",
|
||||||
"rollup": "4.26.0",
|
"rollup": "4.31.0",
|
||||||
"sanitize-html": "2.13.1",
|
"sanitize-html": "2.14.0",
|
||||||
"sass": "1.79.3",
|
"sass": "1.83.4",
|
||||||
"shiki": "1.22.2",
|
"shiki": "1.27.2",
|
||||||
"strict-event-emitter-types": "2.0.0",
|
"strict-event-emitter-types": "2.0.0",
|
||||||
"textarea-caret": "3.1.0",
|
"textarea-caret": "3.1.0",
|
||||||
"three": "0.169.0",
|
"three": "0.172.0",
|
||||||
"throttle-debounce": "5.0.2",
|
"throttle-debounce": "5.0.2",
|
||||||
"tinycolor2": "1.6.0",
|
"tinycolor2": "1.6.0",
|
||||||
"tsc-alias": "1.8.10",
|
"tsc-alias": "1.8.10",
|
||||||
"tsconfig-paths": "4.2.0",
|
"tsconfig-paths": "4.2.0",
|
||||||
"typescript": "5.6.3",
|
"typescript": "5.7.3",
|
||||||
"uuid": "10.0.0",
|
"uuid": "11.0.5",
|
||||||
"v-code-diff": "1.13.1",
|
"v-code-diff": "1.13.1",
|
||||||
"vite": "5.4.11",
|
"vite": "6.0.7",
|
||||||
"vue": "3.5.12",
|
"vue": "3.5.13",
|
||||||
"vuedraggable": "next"
|
"vuedraggable": "next"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@misskey-dev/summaly": "5.1.0",
|
"@misskey-dev/summaly": "5.2.0",
|
||||||
"@storybook/addon-actions": "8.4.4",
|
"@storybook/addon-actions": "8.5.0",
|
||||||
"@storybook/addon-essentials": "8.4.4",
|
"@storybook/addon-essentials": "8.5.0",
|
||||||
"@storybook/addon-interactions": "8.4.4",
|
"@storybook/addon-interactions": "8.5.0",
|
||||||
"@storybook/addon-links": "8.4.4",
|
"@storybook/addon-links": "8.5.0",
|
||||||
"@storybook/addon-mdx-gfm": "8.4.4",
|
"@storybook/addon-mdx-gfm": "8.5.0",
|
||||||
"@storybook/addon-storysource": "8.4.4",
|
"@storybook/addon-storysource": "8.5.0",
|
||||||
"@storybook/blocks": "8.4.4",
|
"@storybook/blocks": "8.5.0",
|
||||||
"@storybook/components": "8.4.4",
|
"@storybook/components": "8.5.0",
|
||||||
"@storybook/core-events": "8.4.4",
|
"@storybook/core-events": "8.5.0",
|
||||||
"@storybook/manager-api": "8.4.4",
|
"@storybook/manager-api": "8.5.0",
|
||||||
"@storybook/preview-api": "8.4.4",
|
"@storybook/preview-api": "8.5.0",
|
||||||
"@storybook/react": "8.4.4",
|
"@storybook/react": "8.5.0",
|
||||||
"@storybook/react-vite": "8.4.4",
|
"@storybook/react-vite": "8.5.0",
|
||||||
"@storybook/test": "8.4.4",
|
"@storybook/test": "8.5.0",
|
||||||
"@storybook/theming": "8.4.4",
|
"@storybook/theming": "8.5.0",
|
||||||
"@storybook/types": "8.4.4",
|
"@storybook/types": "8.5.0",
|
||||||
"@storybook/vue3": "8.4.4",
|
"@storybook/vue3": "8.5.0",
|
||||||
"@storybook/vue3-vite": "8.4.4",
|
"@storybook/vue3-vite": "8.5.0",
|
||||||
"@testing-library/vue": "8.1.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/estree": "1.0.6",
|
||||||
"@types/matter-js": "0.19.7",
|
"@types/matter-js": "0.19.7",
|
||||||
"@types/micromatch": "4.0.9",
|
"@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/punycode.js": "npm:@types/punycode@2.1.4",
|
||||||
"@types/sanitize-html": "2.13.0",
|
"@types/sanitize-html": "2.13.0",
|
||||||
"@types/seedrandom": "3.0.8",
|
"@types/seedrandom": "3.0.8",
|
||||||
@ -107,34 +107,34 @@
|
|||||||
"@types/tinycolor2": "1.4.6",
|
"@types/tinycolor2": "1.4.6",
|
||||||
"@types/uuid": "10.0.0",
|
"@types/uuid": "10.0.0",
|
||||||
"@types/ws": "8.5.13",
|
"@types/ws": "8.5.13",
|
||||||
"@typescript-eslint/eslint-plugin": "7.17.0",
|
"@typescript-eslint/eslint-plugin": "8.20.0",
|
||||||
"@typescript-eslint/parser": "7.17.0",
|
"@typescript-eslint/parser": "8.20.0",
|
||||||
"@vitest/coverage-v8": "1.6.0",
|
"@vitest/coverage-v8": "1.6.0",
|
||||||
"@vue/runtime-core": "3.5.12",
|
"@vue/runtime-core": "3.5.13",
|
||||||
"acorn": "8.14.0",
|
"acorn": "8.14.0",
|
||||||
"cross-env": "7.0.3",
|
"cross-env": "7.0.3",
|
||||||
"cypress": "13.15.2",
|
"cypress": "14.0.0",
|
||||||
"eslint-plugin-import": "2.31.0",
|
"eslint-plugin-import": "2.31.0",
|
||||||
"eslint-plugin-vue": "9.31.0",
|
"eslint-plugin-vue": "9.32.0",
|
||||||
"fast-glob": "3.3.2",
|
"fast-glob": "3.3.3",
|
||||||
"happy-dom": "10.0.3",
|
"happy-dom": "16.6.0",
|
||||||
"intersection-observer": "0.12.2",
|
"intersection-observer": "0.12.2",
|
||||||
"micromatch": "4.0.8",
|
"micromatch": "4.0.8",
|
||||||
"msw": "2.6.4",
|
"msw": "2.7.0",
|
||||||
"msw-storybook-addon": "2.0.4",
|
"msw-storybook-addon": "2.0.4",
|
||||||
"nodemon": "3.1.7",
|
"nodemon": "3.1.9",
|
||||||
"prettier": "3.3.3",
|
"prettier": "3.4.2",
|
||||||
"react": "18.3.1",
|
"react": "18.3.1",
|
||||||
"react-dom": "18.3.1",
|
"react-dom": "18.3.1",
|
||||||
"seedrandom": "3.0.5",
|
"seedrandom": "3.0.5",
|
||||||
"start-server-and-test": "2.0.8",
|
"start-server-and-test": "2.0.10",
|
||||||
"storybook": "8.4.4",
|
"storybook": "8.5.0",
|
||||||
"storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme",
|
"storybook-addon-misskey-theme": "github:misskey-dev/storybook-addon-misskey-theme",
|
||||||
"vite-plugin-turbosnap": "1.0.3",
|
"vite-plugin-turbosnap": "1.0.3",
|
||||||
"vitest": "1.6.0",
|
"vitest": "1.6.0",
|
||||||
"vitest-fetch-mock": "0.2.2",
|
"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-eslint-parser": "9.4.3",
|
||||||
"vue-tsc": "2.1.10"
|
"vue-tsc": "2.2.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,6 +50,8 @@ type CaptchaContainer = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
|
// Window を拡張してるため、空ではない
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
||||||
interface Window extends CaptchaContainer { }
|
interface Window extends CaptchaContainer { }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -142,6 +142,7 @@ const okButtonDisabledReason = computed<null | 'charactersExceeded' | 'character
|
|||||||
// overload function を使いたいので lint エラーを無視する
|
// overload function を使いたいので lint エラーを無視する
|
||||||
function done(canceled: true): void;
|
function done(canceled: true): void;
|
||||||
function done(canceled: false, result: Result): void; // eslint-disable-line no-redeclare
|
function done(canceled: false, result: Result): void; // eslint-disable-line no-redeclare
|
||||||
|
|
||||||
function done(canceled: boolean, 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 });
|
emit('done', { canceled, result } as { canceled: true } | { canceled: false, result: Result });
|
||||||
modal.value?.close();
|
modal.value?.close();
|
||||||
|
@ -39,7 +39,7 @@ import MkModalWindow from '@/components/MkModalWindow.vue';
|
|||||||
import { notificationTypes } from '@@/js/const.js';
|
import { notificationTypes } from '@@/js/const.js';
|
||||||
import { i18n } from '@/i18n.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<{
|
const emit = defineEmits<{
|
||||||
(ev: 'done', v: { excludeTypes: string[] }): void,
|
(ev: 'done', v: { excludeTypes: string[] }): void,
|
||||||
|
@ -3,9 +3,9 @@
|
|||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export type SortOrderDirection = '+' | '-'
|
export type SortOrderDirection = '+' | '-';
|
||||||
|
|
||||||
export type SortOrder<T extends string> = {
|
export type SortOrder<T extends string> = {
|
||||||
key: T;
|
key: T;
|
||||||
direction: SortOrderDirection;
|
direction: SortOrderDirection;
|
||||||
}
|
};
|
||||||
|
@ -114,7 +114,7 @@ type EventType = {
|
|||||||
userCreated: boolean;
|
userCreated: boolean;
|
||||||
inactiveModeratorsWarning: boolean;
|
inactiveModeratorsWarning: boolean;
|
||||||
inactiveModeratorsInvitationOnlyChanged: boolean;
|
inactiveModeratorsInvitationOnlyChanged: boolean;
|
||||||
}
|
};
|
||||||
|
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
(ev: 'submitted', result: MkSystemWebhookResult): void;
|
(ev: 'submitted', result: MkSystemWebhookResult): void;
|
||||||
|
@ -65,7 +65,7 @@ type TimelineQueryType = {
|
|||||||
listId?: string,
|
listId?: string,
|
||||||
channelId?: string,
|
channelId?: string,
|
||||||
roleId?: string
|
roleId?: string
|
||||||
}
|
};
|
||||||
|
|
||||||
const prComponent = shallowRef<InstanceType<typeof MkPullToRefresh>>();
|
const prComponent = shallowRef<InstanceType<typeof MkPullToRefresh>>();
|
||||||
const tlComponent = shallowRef<InstanceType<typeof MkNotes>>();
|
const tlComponent = shallowRef<InstanceType<typeof MkNotes>>();
|
||||||
|
@ -62,7 +62,7 @@ import MkTextarea from '@/components/MkTextarea.vue';
|
|||||||
import MkSwitch from '@/components/MkSwitch.vue';
|
import MkSwitch from '@/components/MkSwitch.vue';
|
||||||
import MkRadios from '@/components/MkRadios.vue';
|
import MkRadios from '@/components/MkRadios.vue';
|
||||||
|
|
||||||
type AdminAnnouncementType = Misskey.entities.AdminAnnouncementsCreateRequest & { id: string; }
|
type AdminAnnouncementType = Misskey.entities.AdminAnnouncementsCreateRequest & { id: string; };
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
user: Misskey.entities.User,
|
user: Misskey.entities.User,
|
||||||
|
@ -79,7 +79,7 @@ type RowHolder = {
|
|||||||
row: GridRow,
|
row: GridRow,
|
||||||
cells: GridCell[],
|
cells: GridCell[],
|
||||||
origin: DataSource,
|
origin: DataSource,
|
||||||
}
|
};
|
||||||
|
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
(ev: 'event', event: GridEvent, context: GridContext): void;
|
(ev: 'event', event: GridEvent, context: GridContext): void;
|
||||||
|
@ -18,25 +18,25 @@ export type ValidatorParams = {
|
|||||||
export type ValidatorResult = {
|
export type ValidatorResult = {
|
||||||
valid: boolean;
|
valid: boolean;
|
||||||
message?: string;
|
message?: string;
|
||||||
}
|
};
|
||||||
|
|
||||||
export type GridCellValidator = {
|
export type GridCellValidator = {
|
||||||
name?: string;
|
name?: string;
|
||||||
ignoreViolation?: boolean;
|
ignoreViolation?: boolean;
|
||||||
validate: (params: ValidatorParams) => ValidatorResult;
|
validate: (params: ValidatorParams) => ValidatorResult;
|
||||||
}
|
};
|
||||||
|
|
||||||
export type ValidateViolation = {
|
export type ValidateViolation = {
|
||||||
valid: boolean;
|
valid: boolean;
|
||||||
params: ValidatorParams;
|
params: ValidatorParams;
|
||||||
violations: ValidateViolationItem[];
|
violations: ValidateViolationItem[];
|
||||||
}
|
};
|
||||||
|
|
||||||
export type ValidateViolationItem = {
|
export type ValidateViolationItem = {
|
||||||
valid: boolean;
|
valid: boolean;
|
||||||
validator: GridCellValidator;
|
validator: GridCellValidator;
|
||||||
result: ValidatorResult;
|
result: ValidatorResult;
|
||||||
}
|
};
|
||||||
|
|
||||||
export function cellValidation(allCells: GridCell[], cell: GridCell, newValue: CellValue): ValidateViolation {
|
export function cellValidation(allCells: GridCell[], cell: GridCell, newValue: CellValue): ValidateViolation {
|
||||||
const { column, row } = cell;
|
const { column, row } = cell;
|
||||||
|
@ -15,7 +15,7 @@ export type CellValue = string | boolean | number | undefined | null | Array<unk
|
|||||||
export type CellAddress = {
|
export type CellAddress = {
|
||||||
row: number;
|
row: number;
|
||||||
col: number;
|
col: number;
|
||||||
}
|
};
|
||||||
|
|
||||||
export const CELL_ADDRESS_NONE: CellAddress = {
|
export const CELL_ADDRESS_NONE: CellAddress = {
|
||||||
row: -1,
|
row: -1,
|
||||||
@ -32,13 +32,13 @@ export type GridCell = {
|
|||||||
contentSize: Size;
|
contentSize: Size;
|
||||||
setting: GridCellSetting;
|
setting: GridCellSetting;
|
||||||
violation: ValidateViolation;
|
violation: ValidateViolation;
|
||||||
}
|
};
|
||||||
|
|
||||||
export type GridCellContextMenuFactory = (col: GridColumn, row: GridRow, value: CellValue, context: GridContext) => MenuItem[];
|
export type GridCellContextMenuFactory = (col: GridColumn, row: GridRow, value: CellValue, context: GridContext) => MenuItem[];
|
||||||
|
|
||||||
export type GridCellSetting = {
|
export type GridCellSetting = {
|
||||||
contextMenuFactory?: GridCellContextMenuFactory;
|
contextMenuFactory?: GridCellContextMenuFactory;
|
||||||
}
|
};
|
||||||
|
|
||||||
export function createCell(
|
export function createCell(
|
||||||
column: GridColumn,
|
column: GridColumn,
|
||||||
|
@ -40,7 +40,7 @@ export type GridColumn = {
|
|||||||
setting: GridColumnSetting;
|
setting: GridColumnSetting;
|
||||||
width: string;
|
width: string;
|
||||||
contentSize: Size;
|
contentSize: Size;
|
||||||
}
|
};
|
||||||
|
|
||||||
export function createColumn(setting: GridColumnSetting, index: number): GridColumn {
|
export function createColumn(setting: GridColumnSetting, index: number): GridColumn {
|
||||||
return {
|
return {
|
||||||
|
@ -21,7 +21,7 @@ export type GridSetting = {
|
|||||||
|
|
||||||
export type DataSource = Record<string, CellValue>;
|
export type DataSource = Record<string, CellValue>;
|
||||||
|
|
||||||
export type GridState =
|
export type GridState = (
|
||||||
'normal' |
|
'normal' |
|
||||||
'cellSelecting' |
|
'cellSelecting' |
|
||||||
'cellEditing' |
|
'cellEditing' |
|
||||||
@ -29,19 +29,19 @@ export type GridState =
|
|||||||
'colSelecting' |
|
'colSelecting' |
|
||||||
'rowSelecting' |
|
'rowSelecting' |
|
||||||
'hidden'
|
'hidden'
|
||||||
;
|
);
|
||||||
|
|
||||||
export type Size = {
|
export type Size = {
|
||||||
width: number;
|
width: number;
|
||||||
height: number;
|
height: number;
|
||||||
}
|
};
|
||||||
|
|
||||||
export type SizeStyle = number | 'auto' | undefined;
|
export type SizeStyle = number | 'auto' | undefined;
|
||||||
|
|
||||||
export type AdditionalStyle = {
|
export type AdditionalStyle = {
|
||||||
className?: string;
|
className?: string;
|
||||||
style?: Record<string, string | number>;
|
style?: Record<string, string | number>;
|
||||||
}
|
};
|
||||||
|
|
||||||
export class GridEventEmitter extends EventEmitter<{
|
export class GridEventEmitter extends EventEmitter<{
|
||||||
'forceRefreshContentSize': void;
|
'forceRefreshContentSize': void;
|
||||||
|
@ -27,7 +27,7 @@ export type GridRowStyleRuleConditionParams = {
|
|||||||
export type GridRowStyleRule = {
|
export type GridRowStyleRule = {
|
||||||
condition: (params: GridRowStyleRuleConditionParams) => boolean;
|
condition: (params: GridRowStyleRuleConditionParams) => boolean;
|
||||||
applyStyle: AdditionalStyle;
|
applyStyle: AdditionalStyle;
|
||||||
}
|
};
|
||||||
|
|
||||||
export type GridRowContextMenuFactory = (row: GridRow, context: GridContext) => MenuItem[];
|
export type GridRowContextMenuFactory = (row: GridRow, context: GridContext) => MenuItem[];
|
||||||
|
|
||||||
@ -40,7 +40,7 @@ export type GridRowSetting = {
|
|||||||
events?: {
|
events?: {
|
||||||
delete?: (rows: GridRow[]) => void;
|
delete?: (rows: GridRow[]) => void;
|
||||||
}
|
}
|
||||||
}
|
};
|
||||||
|
|
||||||
export type GridRow = {
|
export type GridRow = {
|
||||||
index: number;
|
index: number;
|
||||||
@ -48,7 +48,7 @@ export type GridRow = {
|
|||||||
using: boolean;
|
using: boolean;
|
||||||
setting: GridRowSetting;
|
setting: GridRowSetting;
|
||||||
additionalStyles: AdditionalStyle[];
|
additionalStyles: AdditionalStyle[];
|
||||||
}
|
};
|
||||||
|
|
||||||
export function createRow(index: number, using: boolean, setting: GridRowSetting): GridRow {
|
export function createRow(index: number, using: boolean, setting: GridRowSetting): GridRow {
|
||||||
return {
|
return {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
* SPDX-License-Identifier: AGPL-3.0-only
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export type Keys =
|
export type Keys = (
|
||||||
'v' |
|
'v' |
|
||||||
'lastVersion' |
|
'lastVersion' |
|
||||||
'instance' |
|
'instance' |
|
||||||
@ -40,6 +40,7 @@ export type Keys =
|
|||||||
'emojis' | // DEPRECATED, stored in indexeddb (13.9.0~);
|
'emojis' | // DEPRECATED, stored in indexeddb (13.9.0~);
|
||||||
`channelLastReadedAt:${string}` |
|
`channelLastReadedAt:${string}` |
|
||||||
`idbfallback::${string}`
|
`idbfallback::${string}`
|
||||||
|
);
|
||||||
|
|
||||||
// セッション毎に廃棄されるLocalStorage代替(セーフモードなどで使用できそう)
|
// セッション毎に廃棄されるLocalStorage代替(セーフモードなどで使用できそう)
|
||||||
//const safeSessionStorage = new Map<Keys, string>();
|
//const safeSessionStorage = new Map<Keys, string>();
|
||||||
|
@ -65,7 +65,7 @@ export type RouterEvent = {
|
|||||||
key: string;
|
key: string;
|
||||||
}) => void;
|
}) => void;
|
||||||
same: () => void;
|
same: () => void;
|
||||||
}
|
};
|
||||||
|
|
||||||
export type Resolved = {
|
export type Resolved = {
|
||||||
route: RouteDef;
|
route: RouteDef;
|
||||||
|
@ -109,7 +109,7 @@ type GridItem = {
|
|||||||
publicUrl?: string | null;
|
publicUrl?: string | null;
|
||||||
originalUrl?: string | null;
|
originalUrl?: string | null;
|
||||||
type: string | null;
|
type: string | null;
|
||||||
}
|
};
|
||||||
|
|
||||||
function setupGrid(): GridSetting {
|
function setupGrid(): GridSetting {
|
||||||
const $style = useCssModule();
|
const $style = useCssModule();
|
||||||
|
@ -124,7 +124,7 @@ type GridItem = {
|
|||||||
localOnly: boolean;
|
localOnly: boolean;
|
||||||
roleIdsThatCanBeUsedThisEmojiAsReaction: { id: string, name: string }[];
|
roleIdsThatCanBeUsedThisEmojiAsReaction: { id: string, name: string }[];
|
||||||
type: string | null;
|
type: string | null;
|
||||||
}
|
};
|
||||||
|
|
||||||
function setupGrid(): GridSetting {
|
function setupGrid(): GridSetting {
|
||||||
const $style = useCssModule();
|
const $style = useCssModule();
|
||||||
|
@ -168,7 +168,7 @@ type GridItem = {
|
|||||||
url: string;
|
url: string;
|
||||||
name: string;
|
name: string;
|
||||||
host: string;
|
host: string;
|
||||||
}
|
};
|
||||||
|
|
||||||
function setupGrid(): GridSetting {
|
function setupGrid(): GridSetting {
|
||||||
const $style = useCssModule();
|
const $style = useCssModule();
|
||||||
|
@ -15,7 +15,7 @@ export type DroppedDirectory = {
|
|||||||
isFile: false;
|
isFile: false;
|
||||||
path: string;
|
path: string;
|
||||||
children: DroppedItem[];
|
children: DroppedItem[];
|
||||||
}
|
};
|
||||||
|
|
||||||
export async function extractDroppedItems(ev: DragEvent): Promise<DroppedItem[]> {
|
export async function extractDroppedItems(ev: DragEvent): Promise<DroppedItem[]> {
|
||||||
const dropItems = ev.dataTransfer?.items;
|
const dropItems = ev.dataTransfer?.items;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* {@link KeyboardEvent.code} の値を表す文字列。不足分は適宜追加する
|
* {@link KeyboardEvent.code} の値を表す文字列。不足分は適宜追加する
|
||||||
* @see https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_code_values
|
||||||
*/
|
*/
|
||||||
export type KeyCode =
|
export type KeyCode = (
|
||||||
| 'Backspace'
|
| 'Backspace'
|
||||||
| 'Tab'
|
| 'Tab'
|
||||||
| 'Enter'
|
| 'Enter'
|
||||||
@ -94,32 +94,32 @@ export type KeyCode =
|
|||||||
| 'Quote'
|
| 'Quote'
|
||||||
| 'Meta'
|
| 'Meta'
|
||||||
| 'AltGraph'
|
| 'AltGraph'
|
||||||
;
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修飾キーを表す文字列。不足分は適宜追加する。
|
* 修飾キーを表す文字列。不足分は適宜追加する。
|
||||||
*/
|
*/
|
||||||
export type KeyModifier =
|
export type KeyModifier = (
|
||||||
| 'Shift'
|
| 'Shift'
|
||||||
| 'Control'
|
| 'Control'
|
||||||
| 'Alt'
|
| 'Alt'
|
||||||
| 'Meta'
|
| 'Meta'
|
||||||
;
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 押下されたキー以外の状態を表す文字列。不足分は適宜追加する。
|
* 押下されたキー以外の状態を表す文字列。不足分は適宜追加する。
|
||||||
*/
|
*/
|
||||||
export type KeyState =
|
export type KeyState = (
|
||||||
| 'composing'
|
| 'composing'
|
||||||
| 'repeat'
|
| 'repeat'
|
||||||
;
|
);
|
||||||
|
|
||||||
export type KeyEventHandler = {
|
export type KeyEventHandler = {
|
||||||
modifiers?: KeyModifier[];
|
modifiers?: KeyModifier[];
|
||||||
states?: KeyState[];
|
states?: KeyState[];
|
||||||
code: KeyCode | 'any';
|
code: KeyCode | 'any';
|
||||||
handler: (event: KeyboardEvent) => void;
|
handler: (event: KeyboardEvent) => void;
|
||||||
}
|
};
|
||||||
|
|
||||||
export function handleKeyEvent(event: KeyboardEvent, handlers: KeyEventHandler[]) {
|
export function handleKeyEvent(event: KeyboardEvent, handlers: KeyEventHandler[]) {
|
||||||
function checkModifier(ev: KeyboardEvent, modifiers? : KeyModifier[]) {
|
function checkModifier(ev: KeyboardEvent, modifiers? : KeyModifier[]) {
|
||||||
|
@ -37,9 +37,9 @@ export class StreamMock extends EventEmitter<StreamEvents> implements IStream {
|
|||||||
// do nothing
|
// do nothing
|
||||||
}
|
}
|
||||||
|
|
||||||
public send(typeOrPayload: string): void
|
public send(typeOrPayload: string): void;
|
||||||
public send(typeOrPayload: string, payload: any): void
|
public send(typeOrPayload: string, payload: any): void;
|
||||||
public send(typeOrPayload: Record<string, any> | any[]): void
|
public send(typeOrPayload: Record<string, any> | any[]): void;
|
||||||
public send(typeOrPayload: string | Record<string, any> | any[], payload?: any): void {
|
public send(typeOrPayload: string | Record<string, any> | any[], payload?: any): void {
|
||||||
// do nothing
|
// do nothing
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ export type SoundStore = {
|
|||||||
fileUrl: string;
|
fileUrl: string;
|
||||||
|
|
||||||
volume: number;
|
volume: number;
|
||||||
}
|
};
|
||||||
|
|
||||||
export const postFormActions: PostFormAction[] = [];
|
export const postFormActions: PostFormAction[] = [];
|
||||||
export const userActions: UserAction[] = [];
|
export const userActions: UserAction[] = [];
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
import * as Misskey from 'misskey-js';
|
import * as Misskey from 'misskey-js';
|
||||||
import type { ComputedRef, Ref } from 'vue';
|
import type { ComputedRef, Ref } from 'vue';
|
||||||
|
|
||||||
interface MenuRadioOptionsDef extends Record<string, any> { }
|
type MenuRadioOptionsDef = Record<string, any>;
|
||||||
|
|
||||||
export type MenuAction = (ev: MouseEvent) => void;
|
export type MenuAction = (ev: MouseEvent) => void;
|
||||||
|
|
||||||
|
@ -24,14 +24,14 @@
|
|||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/matter-js": "0.19.7",
|
"@types/matter-js": "0.19.7",
|
||||||
"@types/seedrandom": "3.0.8",
|
"@types/seedrandom": "3.0.8",
|
||||||
"@types/node": "22.9.0",
|
"@types/node": "22.10.7",
|
||||||
"@typescript-eslint/eslint-plugin": "7.1.0",
|
"@typescript-eslint/eslint-plugin": "8.20.0",
|
||||||
"@typescript-eslint/parser": "7.1.0",
|
"@typescript-eslint/parser": "8.20.0",
|
||||||
"nodemon": "3.1.7",
|
"nodemon": "3.1.9",
|
||||||
"execa": "8.0.1",
|
"execa": "8.0.1",
|
||||||
"typescript": "5.6.3",
|
"typescript": "5.7.3",
|
||||||
"esbuild": "0.24.0",
|
"esbuild": "0.24.2",
|
||||||
"glob": "11.0.0"
|
"glob": "11.0.1"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"built"
|
"built"
|
||||||
|
@ -26,4 +26,10 @@ export default [
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
files: ['src/autogen/**/*.ts', 'src/autogen/**/*.tsx'],
|
||||||
|
rules: {
|
||||||
|
'@stylistic/indent': 'off',
|
||||||
|
},
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
import type { AuthenticationResponseJSON } from '@simplewebauthn/types';
|
import type { AuthenticationResponseJSON } from '@simplewebauthn/types';
|
||||||
import { EventEmitter } from 'eventemitter3';
|
import { EventEmitter } from 'eventemitter3';
|
||||||
import { Options } from 'reconnecting-websocket';
|
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';
|
import _ReconnectingWebSocket from 'reconnecting-websocket';
|
||||||
|
|
||||||
// Warning: (ae-forgotten-export) The symbol "components" needs to be exported by the entry point index.d.ts
|
// 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;
|
finished: false;
|
||||||
next: 'passkey';
|
next: 'passkey';
|
||||||
authRequest: PublicKeyCredentialRequestOptionsJSON;
|
authRequest: PublicKeyCredentialRequestOptionsJSON_2;
|
||||||
};
|
};
|
||||||
|
|
||||||
// @public (undocumented)
|
// @public (undocumented)
|
||||||
type SigninWithPasskeyInitResponse = {
|
type SigninWithPasskeyInitResponse = {
|
||||||
option: PublicKeyCredentialRequestOptionsJSON;
|
option: PublicKeyCredentialRequestOptionsJSON_2;
|
||||||
context: string;
|
context: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -14,4 +14,10 @@ export default [
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
files: ['built/autogen/**.ts'],
|
||||||
|
rules: {
|
||||||
|
'@stylistic/indent': 'off',
|
||||||
|
},
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
@ -8,14 +8,14 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@readme/openapi-parser": "2.6.0",
|
"@readme/openapi-parser": "2.6.0",
|
||||||
"@types/node": "22.9.0",
|
"@types/node": "22.10.7",
|
||||||
"@typescript-eslint/eslint-plugin": "7.17.0",
|
"@typescript-eslint/eslint-plugin": "8.20.0",
|
||||||
"@typescript-eslint/parser": "7.17.0",
|
"@typescript-eslint/parser": "8.20.0",
|
||||||
"openapi-types": "12.1.3",
|
"openapi-types": "12.1.3",
|
||||||
"openapi-typescript": "6.7.3",
|
"openapi-typescript": "6.7.6",
|
||||||
"ts-case-convert": "2.1.0",
|
"ts-case-convert": "2.1.0",
|
||||||
"tsx": "4.4.0",
|
"tsx": "4.19.2",
|
||||||
"typescript": "5.6.3"
|
"typescript": "5.7.3"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"built"
|
"built"
|
||||||
|
@ -173,7 +173,7 @@ async function generateEndpoints(
|
|||||||
endpointOutputLine.push(
|
endpointOutputLine.push(
|
||||||
...endpoints.map(it => '\t' + it.toLine()),
|
...endpoints.map(it => '\t' + it.toLine()),
|
||||||
);
|
);
|
||||||
endpointOutputLine.push('}');
|
endpointOutputLine.push('};');
|
||||||
endpointOutputLine.push('');
|
endpointOutputLine.push('');
|
||||||
|
|
||||||
function generateEndpointReqMediaTypesType() {
|
function generateEndpointReqMediaTypesType() {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"target": "ESNext",
|
"target": "ESNext",
|
||||||
"module": "ESNext",
|
"module": "ESNext",
|
||||||
"moduleResolution": "nodenext",
|
"moduleResolution": "node16",
|
||||||
"strict": true,
|
"strict": true,
|
||||||
"strictFunctionTypes": true,
|
"strictFunctionTypes": true,
|
||||||
"strictNullChecks": true,
|
"strictNullChecks": true,
|
||||||
|
@ -35,29 +35,29 @@
|
|||||||
"directory": "packages/misskey-js"
|
"directory": "packages/misskey-js"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@microsoft/api-extractor": "7.47.11",
|
"@microsoft/api-extractor": "7.49.1",
|
||||||
"@swc/jest": "0.2.37",
|
"@swc/jest": "0.2.37",
|
||||||
"@types/jest": "29.5.14",
|
"@types/jest": "29.5.14",
|
||||||
"@types/node": "22.9.0",
|
"@types/node": "22.10.7",
|
||||||
"@typescript-eslint/eslint-plugin": "7.17.0",
|
"@typescript-eslint/eslint-plugin": "8.20.0",
|
||||||
"@typescript-eslint/parser": "7.17.0",
|
"@typescript-eslint/parser": "8.20.0",
|
||||||
"jest": "29.7.0",
|
"jest": "29.7.0",
|
||||||
"jest-fetch-mock": "3.0.3",
|
"jest-fetch-mock": "3.0.3",
|
||||||
"jest-websocket-mock": "2.5.0",
|
"jest-websocket-mock": "2.5.0",
|
||||||
"mock-socket": "9.3.1",
|
"mock-socket": "9.3.1",
|
||||||
"ncp": "2.0.0",
|
"ncp": "2.0.0",
|
||||||
"nodemon": "3.1.7",
|
"nodemon": "3.1.9",
|
||||||
"execa": "8.0.1",
|
"execa": "8.0.1",
|
||||||
"tsd": "0.31.2",
|
"tsd": "0.31.2",
|
||||||
"typescript": "5.6.3",
|
"typescript": "5.7.3",
|
||||||
"esbuild": "0.24.0",
|
"esbuild": "0.24.2",
|
||||||
"glob": "11.0.0"
|
"glob": "11.0.1"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"built"
|
"built"
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@simplewebauthn/types": "11.0.0",
|
"@simplewebauthn/types": "12.0.0",
|
||||||
"eventemitter3": "5.0.1",
|
"eventemitter3": "5.0.1",
|
||||||
"reconnecting-websocket": "4.4.0"
|
"reconnecting-websocket": "4.4.0"
|
||||||
}
|
}
|
||||||
|
@ -33,14 +33,15 @@ type IsCaseMatched<E extends keyof Endpoints, P extends Endpoints[E]['req'], C e
|
|||||||
Endpoints[E]['res'] extends SwitchCase
|
Endpoints[E]['res'] extends SwitchCase
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
? IsNeverType<StrictExtract<Endpoints[E]['res']['$switch']['$cases'][C], [P, any]>> extends false ? true : false
|
? 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> =
|
type GetCaseResult<E extends keyof Endpoints, P extends Endpoints[E]['req'], C extends number> =
|
||||||
Endpoints[E]['res'] extends SwitchCase
|
Endpoints[E]['res'] extends SwitchCase
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
? StrictExtract<Endpoints[E]['res']['$switch']['$cases'][C], [P, any]>[1]
|
? 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
|
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, 0> extends true ? GetCaseResult<E, P, 0> :
|
||||||
IsCaseMatched<E, P, 1> extends true ? GetCaseResult<E, P, 1> :
|
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, 8> extends true ? GetCaseResult<E, P, 8> :
|
||||||
IsCaseMatched<E, P, 9> extends true ? GetCaseResult<E, P, 9> :
|
IsCaseMatched<E, P, 9> extends true ? GetCaseResult<E, P, 9> :
|
||||||
Endpoints[E]['res']['$switch']['$default'] : Endpoints[E]['res'];
|
Endpoints[E]['res']['$switch']['$default'] : Endpoints[E]['res'];
|
||||||
|
/* eslint-enable @stylistic/indent */
|
||||||
|
|
||||||
export type Endpoints = Overwrite<
|
export type Endpoints = Overwrite<
|
||||||
Gen,
|
Gen,
|
||||||
@ -106,4 +108,4 @@ export type Endpoints = Overwrite<
|
|||||||
res: AdminRolesCreateResponse;
|
res: AdminRolesCreateResponse;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
>
|
>;
|
||||||
|
@ -973,7 +973,7 @@ export type Endpoints = {
|
|||||||
'users/show': { req: UsersShowRequest; res: UsersShowResponse };
|
'users/show': { req: UsersShowRequest; res: UsersShowResponse };
|
||||||
'users/update-memo': { req: UsersUpdateMemoRequest; res: EmptyResponse };
|
'users/update-memo': { req: UsersUpdateMemoRequest; res: EmptyResponse };
|
||||||
'v2/admin/emoji/list': { req: V2AdminEmojiListRequest; res: V2AdminEmojiListResponse };
|
'v2/admin/emoji/list': { req: V2AdminEmojiListRequest; res: V2AdminEmojiListResponse };
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* NOTE: The content-type for all endpoints not listed here is application/json.
|
* NOTE: The content-type for all endpoints not listed here is application/json.
|
||||||
|
@ -258,11 +258,11 @@ export type SignupRequest = {
|
|||||||
'g-recaptcha-response'?: string | null;
|
'g-recaptcha-response'?: string | null;
|
||||||
'turnstile-response'?: string | null;
|
'turnstile-response'?: string | null;
|
||||||
'm-captcha-response'?: string | null;
|
'm-captcha-response'?: string | null;
|
||||||
}
|
};
|
||||||
|
|
||||||
export type SignupResponse = MeDetailed & {
|
export type SignupResponse = MeDetailed & {
|
||||||
token: string;
|
token: string;
|
||||||
}
|
};
|
||||||
|
|
||||||
export type SignupPendingRequest = {
|
export type SignupPendingRequest = {
|
||||||
code: string;
|
code: string;
|
||||||
|
@ -197,9 +197,9 @@ export default class Stream extends EventEmitter<StreamEvents> implements IStrea
|
|||||||
* Send a message to connection
|
* Send a message to connection
|
||||||
* ! ストリーム上のやり取りはすべてJSONで行われます !
|
* ! ストリーム上のやり取りはすべてJSONで行われます !
|
||||||
*/
|
*/
|
||||||
public send(typeOrPayload: string): void
|
public send(typeOrPayload: string): void;
|
||||||
public send(typeOrPayload: string, payload: unknown): void
|
public send(typeOrPayload: string, payload: unknown): void;
|
||||||
public send(typeOrPayload: Record<string, unknown> | unknown[]): void
|
public send(typeOrPayload: Record<string, unknown> | unknown[]): void;
|
||||||
public send(typeOrPayload: string | Record<string, unknown> | unknown[], payload?: unknown): void {
|
public send(typeOrPayload: string | Record<string, unknown> | unknown[], payload?: unknown): void {
|
||||||
if (typeof typeOrPayload === 'string') {
|
if (typeof typeOrPayload === 'string') {
|
||||||
this.stream.send(JSON.stringify({
|
this.stream.send(JSON.stringify({
|
||||||
|
@ -22,14 +22,14 @@
|
|||||||
"lint": "pnpm typecheck && pnpm eslint"
|
"lint": "pnpm typecheck && pnpm eslint"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "22.9.0",
|
"@types/node": "22.10.7",
|
||||||
"@typescript-eslint/eslint-plugin": "7.1.0",
|
"@typescript-eslint/eslint-plugin": "8.20.0",
|
||||||
"@typescript-eslint/parser": "7.1.0",
|
"@typescript-eslint/parser": "8.20.0",
|
||||||
"execa": "8.0.1",
|
"execa": "8.0.1",
|
||||||
"nodemon": "3.1.7",
|
"nodemon": "3.1.9",
|
||||||
"typescript": "5.6.3",
|
"typescript": "5.7.3",
|
||||||
"esbuild": "0.24.0",
|
"esbuild": "0.24.2",
|
||||||
"glob": "11.0.0"
|
"glob": "11.0.1"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
"built"
|
"built"
|
||||||
|
@ -9,16 +9,16 @@
|
|||||||
"lint": "pnpm typecheck && pnpm eslint"
|
"lint": "pnpm typecheck && pnpm eslint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"esbuild": "0.24.0",
|
"esbuild": "0.24.2",
|
||||||
"idb-keyval": "6.2.1",
|
"idb-keyval": "6.2.1",
|
||||||
"misskey-js": "workspace:*"
|
"misskey-js": "workspace:*"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@typescript-eslint/parser": "7.17.0",
|
"@typescript-eslint/parser": "8.20.0",
|
||||||
"@typescript/lib-webworker": "npm:@types/serviceworker@0.0.67",
|
"@typescript/lib-webworker": "npm:@types/serviceworker@0.0.67",
|
||||||
"eslint-plugin-import": "2.30.0",
|
"eslint-plugin-import": "2.31.0",
|
||||||
"nodemon": "3.1.7",
|
"nodemon": "3.1.9",
|
||||||
"typescript": "5.6.3"
|
"typescript": "5.7.3"
|
||||||
},
|
},
|
||||||
"type": "module"
|
"type": "module"
|
||||||
}
|
}
|
||||||
|
5830
pnpm-lock.yaml
generated
5830
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user