From 48ea805999c6cb8e900aeaec6edaf68788bd51e0 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 23 Mar 2021 11:53:25 +0900 Subject: perf(server): Redis接続をストリーミング接続ごとに作らず、プロセス全体で共有するように MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/api/streaming.ts | 33 ++++++++------------------------- 1 file changed, 8 insertions(+), 25 deletions(-) (limited to 'src/server') diff --git a/src/server/api/streaming.ts b/src/server/api/streaming.ts index 10f2a70bad..4ec0c51374 100644 --- a/src/server/api/streaming.ts +++ b/src/server/api/streaming.ts @@ -1,12 +1,11 @@ import * as http from 'http'; import * as websocket from 'websocket'; -import * as redis from 'redis'; import MainStreamConnection from './stream'; import { ParsedUrlQuery } from 'querystring'; import authenticate from './authenticate'; import { EventEmitter } from 'events'; -import config from '../../config'; +import redisClient from '../../db/redis'; module.exports = (server: http.Server) => { // Init websocket server @@ -24,37 +23,21 @@ module.exports = (server: http.Server) => { const connection = request.accept(); - let ev: EventEmitter; + const ev = new EventEmitter(); - // Connect to Redis - const subscriber = redis.createClient( - config.redis.port, - config.redis.host, - { - password: config.redis.pass - } - ); - - subscriber.subscribe(config.host); - - ev = new EventEmitter(); - - subscriber.on('message', async (_, data) => { - const obj = JSON.parse(data); + async function onRedisMessage(_: string, data: string) { + const parsed = JSON.parse(data); + ev.emit(parsed.channel, parsed.message); + } - ev.emit(obj.channel, obj.message); - }); - - connection.once('close', () => { - subscriber.unsubscribe(); - subscriber.quit(); - }); + redisClient.on('message', onRedisMessage); const main = new MainStreamConnection(connection, ev, user, app); connection.once('close', () => { ev.removeAllListeners(); main.dispose(); + redisClient.off('message', onRedisMessage); }); connection.on('message', async (data) => { -- cgit v1.2.3-freya From 5c3a56b2832ac625552a7d261cd38fb118d813f4 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 23 Mar 2021 14:54:09 +0900 Subject: fix bug https://github.com/syuilo/misskey/commit/48ea805999c6cb8e900aeaec6edaf68788bd51e0#commitcomment-48584326 --- src/db/redis.ts | 25 ++++++++++++---------- src/misc/app-lock.ts | 6 +++--- src/server/api/endpoints/admin/server-info.ts | 4 ++-- src/server/api/endpoints/get-online-users-count.ts | 4 ++-- src/server/api/limiter.ts | 6 +++--- src/server/api/service/discord.ts | 10 ++++----- src/server/api/service/github.ts | 10 ++++----- src/server/api/service/twitter.ts | 10 ++++----- src/server/api/streaming.ts | 2 +- src/server/web/index.ts | 4 ++-- 10 files changed, 42 insertions(+), 39 deletions(-) (limited to 'src/server') diff --git a/src/db/redis.ts b/src/db/redis.ts index 7570aa59bf..5b6fc05df9 100644 --- a/src/db/redis.ts +++ b/src/db/redis.ts @@ -1,16 +1,19 @@ import * as redis from 'redis'; import config from '../config'; -const client = redis.createClient( - config.redis.port, - config.redis.host, - { - password: config.redis.pass, - prefix: config.redis.prefix, - db: config.redis.db || 0 - } -); +export function createConnection() { + return redis.createClient( + config.redis.port, + config.redis.host, + { + password: config.redis.pass, + prefix: config.redis.prefix, + db: config.redis.db || 0 + } + ); +} -client.subscribe(config.host); +export const subsdcriber = createConnection(); +subsdcriber.subscribe(config.host); -export default client; +export const redisClient = createConnection(); diff --git a/src/misc/app-lock.ts b/src/misc/app-lock.ts index 847299b46d..9ae2cba478 100644 --- a/src/misc/app-lock.ts +++ b/src/misc/app-lock.ts @@ -1,4 +1,4 @@ -import redis from '../db/redis'; +import { redisClient } from '../db/redis'; import { promisify } from 'util'; /** @@ -7,8 +7,8 @@ import { promisify } from 'util'; const retryDelay = 100; const lock: (key: string, timeout?: number) => Promise<() => void> - = redis - ? promisify(require('redis-lock')(redis, retryDelay)) + = redisClient + ? promisify(require('redis-lock')(redisClient, retryDelay)) : async () => () => { }; /** diff --git a/src/server/api/endpoints/admin/server-info.ts b/src/server/api/endpoints/admin/server-info.ts index 3b48a811e5..33e6190974 100644 --- a/src/server/api/endpoints/admin/server-info.ts +++ b/src/server/api/endpoints/admin/server-info.ts @@ -2,7 +2,7 @@ import * as os from 'os'; import * as si from 'systeminformation'; import { getConnection } from 'typeorm'; import define from '../../define'; -import redis from '../../../../db/redis'; +import { redisClient } from '../../../../db/redis'; export const meta = { requireCredential: true as const, @@ -115,7 +115,7 @@ export default define(meta, async () => { os: os.platform(), node: process.version, psql: await getConnection().query('SHOW server_version').then(x => x[0].server_version), - redis: redis.server_info.redis_version, + redis: redisClient.server_info.redis_version, cpu: { model: os.cpus()[0].model, cores: os.cpus().length diff --git a/src/server/api/endpoints/get-online-users-count.ts b/src/server/api/endpoints/get-online-users-count.ts index 7521104886..520948ac6b 100644 --- a/src/server/api/endpoints/get-online-users-count.ts +++ b/src/server/api/endpoints/get-online-users-count.ts @@ -1,5 +1,5 @@ import define from '../define'; -import redis from '../../../db/redis'; +import { redisClient } from '../../../db/redis'; import config from '../../../config'; export const meta = { @@ -13,7 +13,7 @@ export const meta = { export default define(meta, (ps, user) => { return new Promise((res, rej) => { - redis.pubsub('numsub', config.host, (_, x) => { + redisClient.pubsub('numsub', config.host, (_, x) => { res({ count: x[1] }); diff --git a/src/server/api/limiter.ts b/src/server/api/limiter.ts index 48d12d3cc6..de41158586 100644 --- a/src/server/api/limiter.ts +++ b/src/server/api/limiter.ts @@ -1,5 +1,5 @@ import * as Limiter from 'ratelimiter'; -import limiterDB from '../../db/redis'; +import { redisClient } from '../../db/redis'; import { IEndpoint } from './endpoints'; import getAcct from '../../misc/acct/render'; import { User } from '../../models/entities/user'; @@ -35,7 +35,7 @@ export default (endpoint: IEndpoint, user: User) => new Promise((ok, reject) => id: `${user.id}:${key}:min`, duration: limitation.minInterval, max: 1, - db: limiterDB! + db: redisClient }); minIntervalLimiter.get((err, info) => { @@ -63,7 +63,7 @@ export default (endpoint: IEndpoint, user: User) => new Promise((ok, reject) => id: `${user.id}:${key}`, duration: limitation.duration, max: limitation.max, - db: limiterDB! + db: redisClient }); limiter.get((err, info) => { diff --git a/src/server/api/service/discord.ts b/src/server/api/service/discord.ts index fce840cde5..0ee268e772 100644 --- a/src/server/api/service/discord.ts +++ b/src/server/api/service/discord.ts @@ -4,7 +4,7 @@ import { getJson } from '../../../misc/fetch'; import { OAuth2 } from 'oauth'; import config from '../../../config'; import { publishMainStream } from '../../../services/stream'; -import redis from '../../../db/redis'; +import { redisClient } from '../../../db/redis'; import { v4 as uuid } from 'uuid'; import signin from '../common/signin'; import { fetchMeta } from '../../../misc/fetch-meta'; @@ -96,7 +96,7 @@ router.get('/connect/discord', async ctx => { response_type: 'code' }; - redis.set(userToken, JSON.stringify(params)); + redisClient.set(userToken, JSON.stringify(params)); const oauth2 = await getOAuth2(); ctx.redirect(oauth2!.getAuthorizeUrl(params)); @@ -118,7 +118,7 @@ router.get('/signin/discord', async ctx => { httpOnly: true }); - redis.set(sessid, JSON.stringify(params)); + redisClient.set(sessid, JSON.stringify(params)); const oauth2 = await getOAuth2(); ctx.redirect(oauth2!.getAuthorizeUrl(params)); @@ -145,7 +145,7 @@ router.get('/dc/cb', async ctx => { } const { redirect_uri, state } = await new Promise((res, rej) => { - redis.get(sessid, async (_, state) => { + redisClient.get(sessid, async (_, state) => { res(JSON.parse(state)); }); }); @@ -216,7 +216,7 @@ router.get('/dc/cb', async ctx => { } const { redirect_uri, state } = await new Promise((res, rej) => { - redis.get(userToken, async (_, state) => { + redisClient.get(userToken, async (_, state) => { res(JSON.parse(state)); }); }); diff --git a/src/server/api/service/github.ts b/src/server/api/service/github.ts index 2b10fa02a0..7ca95fc112 100644 --- a/src/server/api/service/github.ts +++ b/src/server/api/service/github.ts @@ -4,7 +4,7 @@ import { getJson } from '../../../misc/fetch'; import { OAuth2 } from 'oauth'; import config from '../../../config'; import { publishMainStream } from '../../../services/stream'; -import redis from '../../../db/redis'; +import { redisClient } from '../../../db/redis'; import { v4 as uuid } from 'uuid'; import signin from '../common/signin'; import { fetchMeta } from '../../../misc/fetch-meta'; @@ -95,7 +95,7 @@ router.get('/connect/github', async ctx => { state: uuid() }; - redis.set(userToken, JSON.stringify(params)); + redisClient.set(userToken, JSON.stringify(params)); const oauth2 = await getOath2(); ctx.redirect(oauth2!.getAuthorizeUrl(params)); @@ -116,7 +116,7 @@ router.get('/signin/github', async ctx => { httpOnly: true }); - redis.set(sessid, JSON.stringify(params)); + redisClient.set(sessid, JSON.stringify(params)); const oauth2 = await getOath2(); ctx.redirect(oauth2!.getAuthorizeUrl(params)); @@ -143,7 +143,7 @@ router.get('/gh/cb', async ctx => { } const { redirect_uri, state } = await new Promise((res, rej) => { - redis.get(sessid, async (_, state) => { + redisClient.get(sessid, async (_, state) => { res(JSON.parse(state)); }); }); @@ -194,7 +194,7 @@ router.get('/gh/cb', async ctx => { } const { redirect_uri, state } = await new Promise((res, rej) => { - redis.get(userToken, async (_, state) => { + redisClient.get(userToken, async (_, state) => { res(JSON.parse(state)); }); }); diff --git a/src/server/api/service/twitter.ts b/src/server/api/service/twitter.ts index 97e9d3a7fc..7985042d27 100644 --- a/src/server/api/service/twitter.ts +++ b/src/server/api/service/twitter.ts @@ -2,7 +2,7 @@ import * as Koa from 'koa'; import * as Router from '@koa/router'; import { v4 as uuid } from 'uuid'; import autwh from 'autwh'; -import redis from '../../../db/redis'; +import { redisClient } from '../../../db/redis'; import { publishMainStream } from '../../../services/stream'; import config from '../../../config'; import signin from '../common/signin'; @@ -89,7 +89,7 @@ router.get('/connect/twitter', async ctx => { const twAuth = await getTwAuth(); const twCtx = await twAuth!.begin(); - redis.set(userToken, JSON.stringify(twCtx)); + redisClient.set(userToken, JSON.stringify(twCtx)); ctx.redirect(twCtx.url); }); @@ -99,7 +99,7 @@ router.get('/signin/twitter', async ctx => { const sessid = uuid(); - redis.set(sessid, JSON.stringify(twCtx)); + redisClient.set(sessid, JSON.stringify(twCtx)); ctx.cookies.set('signin_with_twitter_sid', sessid, { path: '/', @@ -124,7 +124,7 @@ router.get('/tw/cb', async ctx => { } const get = new Promise((res, rej) => { - redis.get(sessid, async (_, twCtx) => { + redisClient.get(sessid, async (_, twCtx) => { res(twCtx); }); }); @@ -153,7 +153,7 @@ router.get('/tw/cb', async ctx => { } const get = new Promise((res, rej) => { - redis.get(userToken, async (_, twCtx) => { + redisClient.get(userToken, async (_, twCtx) => { res(twCtx); }); }); diff --git a/src/server/api/streaming.ts b/src/server/api/streaming.ts index 4ec0c51374..81b83edcf5 100644 --- a/src/server/api/streaming.ts +++ b/src/server/api/streaming.ts @@ -5,7 +5,7 @@ import MainStreamConnection from './stream'; import { ParsedUrlQuery } from 'querystring'; import authenticate from './authenticate'; import { EventEmitter } from 'events'; -import redisClient from '../../db/redis'; +import { subsdcriber as redisClient } from '../../db/redis'; module.exports = (server: http.Server) => { // Init websocket server diff --git a/src/server/web/index.ts b/src/server/web/index.ts index ea356206ff..6558627437 100644 --- a/src/server/web/index.ts +++ b/src/server/web/index.ts @@ -21,7 +21,7 @@ import { Users, Notes, Emojis, UserProfiles, Pages, Channels, Clips } from '../. import parseAcct from '../../misc/acct/parse'; import { getNoteSummary } from '../../misc/get-note-summary'; import { getConnection } from 'typeorm'; -import redis from '../../db/redis'; +import { redisClient } from '../../db/redis'; import locales = require('../../../locales'); const markdown = MarkdownIt({ @@ -379,7 +379,7 @@ router.get('/info', async ctx => { os: os.platform(), node: process.version, psql: await getConnection().query('SHOW server_version').then(x => x[0].server_version), - redis: redis.server_info.redis_version, + redis: redisClient.server_info.redis_version, cpu: { model: os.cpus()[0].model, cores: os.cpus().length -- cgit v1.2.3-freya From 7e4a800352dd1de91a7a6c457b39f297d76fd9bf Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 23 Mar 2021 15:06:56 +0900 Subject: noteのread処理 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/misc/antenna-cache.ts | 36 +++++++++++++ src/misc/check-hit-antenna.ts | 14 +++-- src/models/repositories/user.ts | 7 +-- src/server/api/endpoints/antennas/create.ts | 7 ++- src/server/api/endpoints/antennas/delete.ts | 3 ++ src/server/api/endpoints/antennas/update.ts | 3 ++ src/server/api/stream/index.ts | 15 ++---- src/services/note/create.ts | 20 ++++---- src/services/note/read.ts | 79 +++++++++++++++++++---------- src/services/stream.ts | 5 ++ 10 files changed, 132 insertions(+), 57 deletions(-) create mode 100644 src/misc/antenna-cache.ts (limited to 'src/server') diff --git a/src/misc/antenna-cache.ts b/src/misc/antenna-cache.ts new file mode 100644 index 0000000000..6be1c18db5 --- /dev/null +++ b/src/misc/antenna-cache.ts @@ -0,0 +1,36 @@ +import { Antennas } from '../models'; +import { Antenna } from '../models/entities/antenna'; +import { subsdcriber } from '../db/redis'; + +let antennasFetched = false; +let antennas: Antenna[] = []; + +export async function getAntennas() { + if (!antennasFetched) { + antennas = await Antennas.find(); + antennasFetched = true; + } + + return antennas; +} + +subsdcriber.on('message', async (_, data) => { + const obj = JSON.parse(data); + + if (obj.channel === 'internal') { + const { type, body } = obj.message; + switch (type) { + case 'antennaCreated': + antennas.push(body); + break; + case 'antennaUpdated': + antennas[antennas.findIndex(a => a.id === body.id)] = body; + break; + case 'antennaDeleted': + antennas = antennas.filter(a => a.id !== body.id); + break; + default: + break; + } + } +}); diff --git a/src/misc/check-hit-antenna.ts b/src/misc/check-hit-antenna.ts index 0464f14131..9897dd414e 100644 --- a/src/misc/check-hit-antenna.ts +++ b/src/misc/check-hit-antenna.ts @@ -4,18 +4,24 @@ import { User } from '../models/entities/user'; import { UserListJoinings, UserGroupJoinings } from '../models'; import parseAcct from './acct/parse'; import { getFullApAccount } from './convert-host'; +import { PackedNote } from '../models/repositories/note'; -export async function checkHitAntenna(antenna: Antenna, note: Note, noteUser: User, followers: User['id'][]): Promise { +/** + * noteUserFollowers / antennaUserFollowing はどちらか一方が指定されていればよい + */ +export async function checkHitAntenna(antenna: Antenna, note: (Note | PackedNote), noteUser: { username: string; host: string | null; }, noteUserFollowers?: User['id'][], antennaUserFollowing?: User['id'][]): Promise { if (note.visibility === 'specified') return false; if (note.visibility === 'followers') { - if (!followers.includes(antenna.userId)) return false; + if (noteUserFollowers && !noteUserFollowers.includes(antenna.userId)) return false; + if (antennaUserFollowing && !antennaUserFollowing.includes(note.userId)) return false; } if (!antenna.withReplies && note.replyId != null) return false; if (antenna.src === 'home') { - if (!followers.includes(antenna.userId)) return false; + if (noteUserFollowers && !noteUserFollowers.includes(antenna.userId)) return false; + if (antennaUserFollowing && !antennaUserFollowing.includes(note.userId)) return false; } else if (antenna.src === 'list') { const listUsers = (await UserListJoinings.find({ userListId: antenna.userListId! @@ -75,7 +81,7 @@ export async function checkHitAntenna(antenna: Antenna, note: Note, noteUser: Us } if (antenna.withFile) { - if (note.fileIds.length === 0) return false; + if (note.fileIds && note.fileIds.length === 0) return false; } // TODO: eval expression diff --git a/src/models/repositories/user.ts b/src/models/repositories/user.ts index 53c06f3f16..3d897e1663 100644 --- a/src/models/repositories/user.ts +++ b/src/models/repositories/user.ts @@ -6,6 +6,7 @@ import config from '../../config'; import { SchemaType } from '../../misc/schema'; import { awaitAll } from '../../prelude/await-all'; import { populateEmojis } from '../../misc/populate-emojis'; +import { getAntennas } from '../../misc/antenna-cache'; export type PackedUser = SchemaType; @@ -97,10 +98,10 @@ export class UserRepository extends Repository { } public async getHasUnreadAntenna(userId: User['id']): Promise { - const antennas = await Antennas.find({ userId }); + const myAntennas = (await getAntennas()).filter(a => a.userId === userId); - const unread = antennas.length > 0 ? await AntennaNotes.findOne({ - antennaId: In(antennas.map(x => x.id)), + const unread = myAntennas.length > 0 ? await AntennaNotes.findOne({ + antennaId: In(myAntennas.map(x => x.id)), read: false }) : null; diff --git a/src/server/api/endpoints/antennas/create.ts b/src/server/api/endpoints/antennas/create.ts index b5f0eead2a..7210c992cd 100644 --- a/src/server/api/endpoints/antennas/create.ts +++ b/src/server/api/endpoints/antennas/create.ts @@ -4,6 +4,7 @@ import { genId } from '../../../../misc/gen-id'; import { Antennas, UserLists, UserGroupJoinings } from '../../../../models'; import { ID } from '../../../../misc/cafy-id'; import { ApiError } from '../../error'; +import { publishInternalEvent } from '../../../../services/stream'; export const meta = { desc: { @@ -108,7 +109,7 @@ export default define(meta, async (ps, user) => { } } - const antenna = await Antennas.save({ + const antenna = await Antennas.insert({ id: genId(), createdAt: new Date(), userId: user.id, @@ -123,7 +124,9 @@ export default define(meta, async (ps, user) => { withReplies: ps.withReplies, withFile: ps.withFile, notify: ps.notify, - }); + }).then(x => Antennas.findOneOrFail(x.identifiers[0])); + + publishInternalEvent('antennaCreated', antenna); return await Antennas.pack(antenna); }); diff --git a/src/server/api/endpoints/antennas/delete.ts b/src/server/api/endpoints/antennas/delete.ts index 9008c37c8e..adaf2d0d85 100644 --- a/src/server/api/endpoints/antennas/delete.ts +++ b/src/server/api/endpoints/antennas/delete.ts @@ -3,6 +3,7 @@ import { ID } from '../../../../misc/cafy-id'; import define from '../../define'; import { ApiError } from '../../error'; import { Antennas } from '../../../../models'; +import { publishInternalEvent } from '../../../../services/stream'; export const meta = { desc: { @@ -42,4 +43,6 @@ export default define(meta, async (ps, user) => { } await Antennas.delete(antenna.id); + + publishInternalEvent('antennaDeleted', antenna); }); diff --git a/src/server/api/endpoints/antennas/update.ts b/src/server/api/endpoints/antennas/update.ts index 58f4e68c89..22764b7411 100644 --- a/src/server/api/endpoints/antennas/update.ts +++ b/src/server/api/endpoints/antennas/update.ts @@ -3,6 +3,7 @@ import { ID } from '../../../../misc/cafy-id'; import define from '../../define'; import { ApiError } from '../../error'; import { Antennas, UserLists, UserGroupJoinings } from '../../../../models'; +import { publishInternalEvent } from '../../../../services/stream'; export const meta = { desc: { @@ -141,5 +142,7 @@ export default define(meta, async (ps, user) => { notify: ps.notify, }); + publishInternalEvent('antennaUpdated', Antennas.findOneOrFail(antenna.id)); + return await Antennas.pack(antenna.id); }); diff --git a/src/server/api/stream/index.ts b/src/server/api/stream/index.ts index 99ae558696..1dcc31d32f 100644 --- a/src/server/api/stream/index.ts +++ b/src/server/api/stream/index.ts @@ -168,17 +168,10 @@ export default class Connection { if (note == null) return; if (this.user && (note.userId !== this.user.id)) { - if (note.mentions && note.mentions.includes(this.user.id)) { - readNote(this.user.id, [note]); - } else if (note.visibleUserIds && note.visibleUserIds.includes(this.user.id)) { - readNote(this.user.id, [note]); - } - - if (this.followingChannels.has(note.channelId)) { - // TODO - } - - // TODO: アンテナの既読処理 + readNote(this.user.id, [note], { + following: this.following, + followingChannels: this.followingChannels, + }); } } diff --git a/src/services/note/create.ts b/src/services/note/create.ts index 4a737e8516..b9c1676c58 100644 --- a/src/services/note/create.ts +++ b/src/services/note/create.ts @@ -33,6 +33,7 @@ import { countSameRenotes } from '../../misc/count-same-renotes'; import { deliverToRelays } from '../relay'; import { Channel } from '../../models/entities/channel'; import { normalizeForSearch } from '../../misc/normalize-for-search'; +import { getAntennas } from '../../misc/antenna-cache'; type NotificationType = 'reply' | 'renote' | 'quote' | 'mention'; @@ -241,6 +242,7 @@ export default async (user: User, data: Option, silent = false) => new Promise { @@ -262,17 +264,15 @@ export default async (user: User, data: Option, silent = false) => new Promise { + .then(async followings => { const followers = followings.map(f => f.followerId); - Antennas.find().then(async antennas => { - for (const antenna of antennas) { - checkHitAntenna(antenna, note, user, followers).then(hit => { - if (hit) { - addNoteToAntenna(antenna, note, user); - } - }); - } - }); + for (const antenna of (await getAntennas())) { + checkHitAntenna(antenna, note, user, followers).then(hit => { + if (hit) { + addNoteToAntenna(antenna, note, user); + } + }); + } }); // Channel diff --git a/src/services/note/read.ts b/src/services/note/read.ts index 35279db411..91b523bd1d 100644 --- a/src/services/note/read.ts +++ b/src/services/note/read.ts @@ -1,23 +1,59 @@ import { publishMainStream } from '../stream'; import { Note } from '../../models/entities/note'; import { User } from '../../models/entities/user'; -import { NoteUnreads, Antennas, AntennaNotes, Users } from '../../models'; +import { NoteUnreads, AntennaNotes, Users } from '../../models'; import { Not, IsNull, In } from 'typeorm'; +import { Channel } from '../../models/entities/channel'; +import { checkHitAntenna } from '../../misc/check-hit-antenna'; +import { getAntennas } from '../../misc/antenna-cache'; +import { PackedNote } from '../../models/repositories/note'; /** * Mark notes as read */ export default async function( userId: User['id'], - noteIds: Note['id'][] + notes: (Note | PackedNote)[], + info: { + following: Set; + followingChannels: Set; + } ) { - async function careNoteUnreads() { + const myAntennas = (await getAntennas()).filter(a => a.userId === userId); + const readMentions: (Note | PackedNote)[] = []; + const readSpecifiedNotes: (Note | PackedNote)[] = []; + const readChannelNotes: (Note | PackedNote)[] = []; + const readAntennaNotes: (Note | PackedNote)[] = []; + + for (const note of notes) { + if (note.mentions && note.mentions.includes(userId)) { + readMentions.push(note); + } else if (note.visibleUserIds && note.visibleUserIds.includes(userId)) { + readSpecifiedNotes.push(note); + } + + if (note.channelId && info.followingChannels.has(note.channelId)) { + readChannelNotes.push(note); + } + + if (note.user != null) { // たぶんnullになることは無いはずだけど一応 + for (const antenna of myAntennas) { + if (checkHitAntenna(antenna, note, note.user as any, undefined, Array.from(info.following))) { + readAntennaNotes.push(note); + } + } + } + } + + if ((readMentions.length > 0) || (readSpecifiedNotes.length > 0) || (readChannelNotes.length > 0)) { // Remove the record await NoteUnreads.delete({ userId: userId, - noteId: In(noteIds), + noteId: In([...readMentions.map(n => n.id), ...readSpecifiedNotes.map(n => n.id), ...readChannelNotes.map(n => n.id)]), }); + // TODO: ↓まとめてクエリしたい + NoteUnreads.count({ userId: userId, isMentioned: true @@ -49,33 +85,25 @@ export default async function( }); } - async function careAntenna() { - const antennas = await Antennas.find({ userId }); - - await Promise.all(antennas.map(async antenna => { - const countBefore = await AntennaNotes.count({ - antennaId: antenna.id, - read: false - }); - - if (countBefore === 0) return; - - await AntennaNotes.update({ - antennaId: antenna.id, - noteId: In(noteIds) - }, { - read: true - }); + if (readAntennaNotes.length > 0) { + await AntennaNotes.update({ + antennaId: In(myAntennas.map(a => a.id)), + noteId: In(readAntennaNotes.map(n => n.id)) + }, { + read: true + }); - const countAfter = await AntennaNotes.count({ + // TODO: まとめてクエリしたい + for (const antenna of myAntennas) { + const count = await AntennaNotes.count({ antennaId: antenna.id, read: false }); - if (countAfter === 0) { + if (count === 0) { publishMainStream(userId, 'readAntenna', antenna); } - })); + } Users.getHasUnreadAntenna(userId).then(unread => { if (!unread) { @@ -83,7 +111,4 @@ export default async function( } }); } - - careNoteUnreads(); - careAntenna(); } diff --git a/src/services/stream.ts b/src/services/stream.ts index a8855b62e6..6d7c2c4922 100644 --- a/src/services/stream.ts +++ b/src/services/stream.ts @@ -20,6 +20,10 @@ class Publisher { })); } + public publishInternalEvent = (type: string, value?: any): void => { + this.publish('internal', type, typeof value === 'undefined' ? null : value); + } + public publishUserEvent = (userId: User['id'], type: string, value?: any): void => { this.publish(`user:${userId}`, type, typeof value === 'undefined' ? null : value); } @@ -88,6 +92,7 @@ const publisher = new Publisher(); export default publisher; +export const publishInternalEvent = publisher.publishInternalEvent; export const publishUserEvent = publisher.publishUserEvent; export const publishBroadcastStream = publisher.publishBroadcastStream; export const publishMainStream = publisher.publishMainStream; -- cgit v1.2.3-freya From cd4680b422f1740ce212ff50925632b0d55db398 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 23 Mar 2021 15:12:47 +0900 Subject: fix --- src/server/api/endpoints/notes/mentions.ts | 2 +- src/services/note/read.ts | 23 ++++++++++++++++++----- 2 files changed, 19 insertions(+), 6 deletions(-) (limited to 'src/server') diff --git a/src/server/api/endpoints/notes/mentions.ts b/src/server/api/endpoints/notes/mentions.ts index 30368ea578..32e71acc05 100644 --- a/src/server/api/endpoints/notes/mentions.ts +++ b/src/server/api/endpoints/notes/mentions.ts @@ -83,7 +83,7 @@ export default define(meta, async (ps, user) => { const mentions = await query.take(ps.limit!).getMany(); - read(user.id, mentions.map(note => note.id)); + read(user.id, mentions); return await Notes.packMany(mentions, user); }); diff --git a/src/services/note/read.ts b/src/services/note/read.ts index 91b523bd1d..4e8c76cbee 100644 --- a/src/services/note/read.ts +++ b/src/services/note/read.ts @@ -1,7 +1,7 @@ import { publishMainStream } from '../stream'; import { Note } from '../../models/entities/note'; import { User } from '../../models/entities/user'; -import { NoteUnreads, AntennaNotes, Users } from '../../models'; +import { NoteUnreads, AntennaNotes, Users, Followings, ChannelFollowings } from '../../models'; import { Not, IsNull, In } from 'typeorm'; import { Channel } from '../../models/entities/channel'; import { checkHitAntenna } from '../../misc/check-hit-antenna'; @@ -14,11 +14,24 @@ import { PackedNote } from '../../models/repositories/note'; export default async function( userId: User['id'], notes: (Note | PackedNote)[], - info: { - following: Set; + info?: { + following: Set; followingChannels: Set; } ) { + const following = info?.following ? info.following : new Set((await Followings.find({ + where: { + followerId: userId + }, + select: ['followeeId'] + })).map(x => x.followeeId)); + const followingChannels = info?.followingChannels ? info.followingChannels : new Set((await ChannelFollowings.find({ + where: { + followerId: userId + }, + select: ['followeeId'] + })).map(x => x.followeeId)); + const myAntennas = (await getAntennas()).filter(a => a.userId === userId); const readMentions: (Note | PackedNote)[] = []; const readSpecifiedNotes: (Note | PackedNote)[] = []; @@ -32,13 +45,13 @@ export default async function( readSpecifiedNotes.push(note); } - if (note.channelId && info.followingChannels.has(note.channelId)) { + if (note.channelId && followingChannels.has(note.channelId)) { readChannelNotes.push(note); } if (note.user != null) { // たぶんnullになることは無いはずだけど一応 for (const antenna of myAntennas) { - if (checkHitAntenna(antenna, note, note.user as any, undefined, Array.from(info.following))) { + if (checkHitAntenna(antenna, note, note.user as any, undefined, Array.from(following))) { readAntennaNotes.push(note); } } -- cgit v1.2.3-freya From 94fd5485b6cc5d69bfbb706d5d65e48ccfa45ea8 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Tue, 23 Mar 2021 15:22:31 +0900 Subject: Use TRUNCATE (#7385) --- src/server/api/endpoints/admin/delete-logs.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/server') diff --git a/src/server/api/endpoints/admin/delete-logs.ts b/src/server/api/endpoints/admin/delete-logs.ts index 3719387312..1caea46ea0 100644 --- a/src/server/api/endpoints/admin/delete-logs.ts +++ b/src/server/api/endpoints/admin/delete-logs.ts @@ -14,5 +14,5 @@ export const meta = { }; export default define(meta, async (ps) => { - await Logs.delete({}); + await Logs.clear(); // TRUNCATE }); -- cgit v1.2.3-freya From 8432c2c9eab5f40b8add842240224129cc2f9c54 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 23 Mar 2021 17:24:40 +0900 Subject: refactor(build): gulpを経由しないでTypeScriptのビルドを行うように MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit path aliasをサーバーサイドでも使ったりしたいため --- assets/client/manifest.json | 28 ---------- gulpfile.ts | 12 ----- package.json | 12 +++-- src/@types/meta.json.d.ts | 3 -- src/boot/master.ts | 2 +- src/config/load.ts | 2 +- src/server/web/manifest.json | 28 ++++++++++ src/server/web/manifest.ts | 2 +- src/tsconfig.json | 3 ++ yarn.lock | 120 +++++++++++++++++++++++++++++++++---------- 10 files changed, 134 insertions(+), 78 deletions(-) delete mode 100644 assets/client/manifest.json delete mode 100644 src/@types/meta.json.d.ts create mode 100644 src/server/web/manifest.json (limited to 'src/server') diff --git a/assets/client/manifest.json b/assets/client/manifest.json deleted file mode 100644 index 48030a2980..0000000000 --- a/assets/client/manifest.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "short_name": "Misskey", - "name": "Misskey", - "start_url": "/", - "display": "standalone", - "background_color": "#313a42", - "theme_color": "#86b300", - "icons": [ - { - "src": "/static-assets/icons/192.png", - "sizes": "192x192", - "type": "image/png" - }, - { - "src": "/static-assets/icons/512.png", - "sizes": "512x512", - "type": "image/png" - } - ], - "share_target": { - "action": "/share/", - "params": { - "title": "title", - "text": "text", - "url": "url" - } - } -} diff --git a/gulpfile.ts b/gulpfile.ts index 771a5c0e32..bcd50890e2 100644 --- a/gulpfile.ts +++ b/gulpfile.ts @@ -4,7 +4,6 @@ import * as fs from 'fs'; import * as gulp from 'gulp'; -import * as ts from 'gulp-typescript'; import * as rimraf from 'rimraf'; import * as replace from 'gulp-replace'; const terser = require('gulp-terser'); @@ -13,16 +12,6 @@ const cssnano = require('gulp-cssnano'); const locales: { [x: string]: any } = require('./locales'); const meta = require('./package.json'); -gulp.task('build:ts', () => { - const tsProject = ts.createProject('./src/tsconfig.json'); - - return tsProject - .src() - .pipe(tsProject()) - .on('error', () => {}) - .pipe(gulp.dest('./built/')); -}); - gulp.task('build:copy:views', () => gulp.src('./src/server/web/views/**/*').pipe(gulp.dest('./built/server/web/views')) ); @@ -78,7 +67,6 @@ gulp.task('cleanall', gulp.parallel('clean', cb => )); gulp.task('build', gulp.parallel( - 'build:ts', 'build:copy', )); diff --git a/package.json b/package.json index 0f40837a6f..299fe4e5fa 100644 --- a/package.json +++ b/package.json @@ -15,11 +15,13 @@ "ormconfig": "node ./built/ormconfig.js", "migrate": "ts-node ./node_modules/typeorm/cli.js migration:run", "migrateandstart": "npm run migrate && npm run start", - "build": "npm run build-webpack && npm run build-gulp", + "build": "npm run build-webpack && npm run build-ts && npm run build-gulp", "build-webpack": "webpack", + "build-ts": "tsc -p src/tsconfig.json || echo done. && tsc-alias -p src/tsconfig.json", "build-gulp": "gulp build", "watch": "concurrently \"npm:watch-*\"", "watch-webpack": "webpack --watch", + "watch-ts": "tsc -w -p src/tsconfig.json && tsc-alias -w -p src/tsconfig.json", "watch-gulp": "gulp watch", "clean": "gulp clean", "cleanall": "gulp cleanall", @@ -64,6 +66,9 @@ "@types/jsonld": "1.5.5", "@types/katex": "0.11.0", "@types/koa": "2.13.1", + "@types/koa__cors": "3.0.2", + "@types/koa__multer": "2.0.2", + "@types/koa__router": "8.0.4", "@types/koa-bodyparser": "4.3.0", "@types/koa-cors": "0.0.0", "@types/koa-favicon": "2.0.19", @@ -71,9 +76,6 @@ "@types/koa-mount": "4.0.0", "@types/koa-send": "4.1.2", "@types/koa-views": "2.0.4", - "@types/koa__cors": "3.0.2", - "@types/koa__multer": "2.0.2", - "@types/koa__router": "8.0.4", "@types/markdown-it": "12.0.1", "@types/matter-js": "0.14.10", "@types/mocha": "8.2.1", @@ -148,7 +150,6 @@ "gulp-replace": "1.0.0", "gulp-terser": "2.0.1", "gulp-tslint": "8.1.4", - "gulp-typescript": "6.0.0-alpha.1", "hard-source-webpack-plugin": "0.13.1", "html-minifier": "4.0.0", "http-proxy-agent": "4.0.1", @@ -234,6 +235,7 @@ "tmp": "0.2.1", "ts-loader": "8.0.18", "ts-node": "9.1.1", + "tsc-alias": "1.2.8", "tslint": "6.1.3", "tslint-sonarts": "1.9.0", "typeorm": "0.2.31", diff --git a/src/@types/meta.json.d.ts b/src/@types/meta.json.d.ts deleted file mode 100644 index ab812682b6..0000000000 --- a/src/@types/meta.json.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare module '*/meta.json' { - const version: string; -} diff --git a/src/boot/master.ts b/src/boot/master.ts index aded102912..33ccec55d0 100644 --- a/src/boot/master.ts +++ b/src/boot/master.ts @@ -12,7 +12,7 @@ import { lessThan } from '../prelude/array'; import { program } from '../argv'; import { showMachineInfo } from '../misc/show-machine-info'; import { initDb } from '../db/postgre'; -import * as meta from '../meta.json'; +const meta = require('../meta.json'); const logger = new Logger('core', 'cyan'); const bootLogger = logger.createSubLogger('boot', 'magenta', false); diff --git a/src/config/load.ts b/src/config/load.ts index 558bc68e10..0929e80414 100644 --- a/src/config/load.ts +++ b/src/config/load.ts @@ -5,7 +5,7 @@ import * as fs from 'fs'; import * as yaml from 'js-yaml'; import { Source, Mixin } from './types'; -import * as meta from '../meta.json'; +const meta = require('../meta.json'); /** * Path of configuration directory diff --git a/src/server/web/manifest.json b/src/server/web/manifest.json new file mode 100644 index 0000000000..48030a2980 --- /dev/null +++ b/src/server/web/manifest.json @@ -0,0 +1,28 @@ +{ + "short_name": "Misskey", + "name": "Misskey", + "start_url": "/", + "display": "standalone", + "background_color": "#313a42", + "theme_color": "#86b300", + "icons": [ + { + "src": "/static-assets/icons/192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/static-assets/icons/512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "share_target": { + "action": "/share/", + "params": { + "title": "title", + "text": "text", + "url": "url" + } + } +} diff --git a/src/server/web/manifest.ts b/src/server/web/manifest.ts index 2f3eb89030..167230330a 100644 --- a/src/server/web/manifest.ts +++ b/src/server/web/manifest.ts @@ -1,5 +1,5 @@ import * as Koa from 'koa'; -import * as manifest from '../../../assets/client/manifest.json'; +import * as manifest from './manifest.json'; import { fetchMeta } from '../../misc/fetch-meta'; module.exports = async (ctx: Koa.Context) => { diff --git a/src/tsconfig.json b/src/tsconfig.json index 95cb35fc5f..527acb859b 100644 --- a/src/tsconfig.json +++ b/src/tsconfig.json @@ -21,6 +21,9 @@ "emitDecoratorMetadata": true, "resolveJsonModule": true, "isolatedModules": true, + "rootDir": "./", + "baseUrl": "./", + "outDir": "../built", "typeRoots": [ "../node_modules/@types", "./@types" diff --git a/yarn.lock b/yarn.lock index eecd562aac..2cca0a7eb2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -239,6 +239,22 @@ resolved "https://registry.yarnpkg.com/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.0-3.tgz#b658a7c1f35d4eb04ac85749da693be483442b25" integrity sha512-fCM7+R9M7Y/ipKC5n9hukGpJHhe53JOENGqtku/KWtpXsnbGik3AS5zfJYEupV2uXOw/5S0RSSfttQ2hNIrmFA== +"@jfonx/console-utils@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@jfonx/console-utils/-/console-utils-1.0.3.tgz#cbb7f911e4191a4a2fe1ba4807d29f100b5d099f" + integrity sha512-/XbnqjWc7yNZVLAJJO9rimfIz9DYte+cj3EF9hwhIv7vw6ok2t3cjl0huYsmD89srKH03vWjeqAcIH86CuYj3g== + dependencies: + colors "^1.3.3" + +"@jfonx/file-utils@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@jfonx/file-utils/-/file-utils-3.0.1.tgz#8d3d6e931a283420fe29802ea71c28dd397cd8d3" + integrity sha512-qwH0CuzWmghtTHGMyuPHj6SJPQgWeiXFJBfrxCWMbzxVCa3aLZPEfzSdlSnC/UABsk6feRkNdHXw59rVshNPqw== + dependencies: + "@jfonx/console-utils" "^1.0.3" + comment-json "^4.1.0" + find-up "^4.1.0" + "@koa/cors@3.1.0": version "3.1.0" resolved "https://registry.yarnpkg.com/@koa/cors/-/cors-3.1.0.tgz#618bb073438cfdbd3ebd0e648a76e33b84f3a3b2" @@ -1707,6 +1723,11 @@ array-sort@^1.0.0: get-value "^2.0.6" kind-of "^5.0.2" +array-timsort@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-timsort/-/array-timsort-1.0.3.tgz#3c9e4199e54fb2b9c3fe5976396a21614ef0d926" + integrity sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ== + array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -2453,7 +2474,7 @@ cheerio@^0.22.0: lodash.reject "^4.4.0" lodash.some "^4.4.0" -chokidar@3.5.1, "chokidar@>=2.0.0 <4.0.0", chokidar@^2.0.0, chokidar@^3.3.1: +chokidar@3.5.1, "chokidar@>=2.0.0 <4.0.0", chokidar@^2.0.0, chokidar@^3.3.1, chokidar@^3.5.0: version "3.3.1" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== @@ -2793,7 +2814,7 @@ commander@^2.12.1, commander@^2.19.0, commander@^2.20.0, commander@~2.20.3: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^6.0.0: +commander@^6.0.0, commander@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== @@ -2803,6 +2824,17 @@ commander@^7.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-7.0.0.tgz#3e2bbfd8bb6724760980988fb5b22b7ee6b71ab2" integrity sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA== +comment-json@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-4.1.0.tgz#09d08f0fbc4ad5eeccbac20f469adbb967dcbd2c" + integrity sha512-WEghmVYaNq9NlWbrkzQTSsya9ycLyxJxpTQfZEan6a5Jomnjw18zS3Podf8q1Zf9BvonvQd/+Z7Z39L7KKzzdQ== + dependencies: + array-timsort "^1.0.3" + core-util-is "^1.0.2" + esprima "^4.0.1" + has-own-prop "^2.0.0" + repeat-string "^1.6.1" + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -2946,7 +2978,7 @@ core-js@3.9.1: resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.9.1.tgz#cec8de593db8eb2a85ffb0dbdeb312cb6e5460ae" integrity sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg== -core-util-is@1.0.2, core-util-is@~1.0.0: +core-util-is@1.0.2, core-util-is@^1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= @@ -4259,6 +4291,14 @@ find-cache-dir@^2.0.0: make-dir "^2.0.0" pkg-dir "^3.0.0" +find-node-modules@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/find-node-modules/-/find-node-modules-2.1.2.tgz#57565a3455baf671b835bc6b2134a9b938b9c53c" + integrity sha512-x+3P4mbtRPlSiVE1Qco0Z4YLU8WFiFcuWTf3m75OV9Uzcfs2Bg+O9N+r/K0AnmINBW06KpfqKwYJbFlFq4qNug== + dependencies: + findup-sync "^4.0.0" + merge "^2.1.0" + find-up@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -4282,7 +4322,7 @@ find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@^4.0.0: +find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== @@ -4310,6 +4350,16 @@ findup-sync@^3.0.0: micromatch "^3.0.4" resolve-dir "^1.0.1" +findup-sync@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-4.0.0.tgz#956c9cdde804052b881b428512905c4a5f2cdef0" + integrity sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^4.0.2" + resolve-dir "^1.0.1" + fined@^1.0.1: version "1.2.0" resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" @@ -4652,6 +4702,18 @@ globby@^11.0.1: merge2 "^1.3.0" slash "^3.0.0" +globby@^11.0.2: + version "11.0.3" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" + integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" + glogg@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" @@ -4764,18 +4826,6 @@ gulp-tslint@8.1.4: plugin-error "1.0.1" through "~2.3.8" -gulp-typescript@6.0.0-alpha.1: - version "6.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/gulp-typescript/-/gulp-typescript-6.0.0-alpha.1.tgz#fcb0dbbc79c34201f0945c6323c194a8f5455a04" - integrity sha512-KoT0TTfjfT7w3JItHkgFH1T/zK4oXWC+a8xxKfniRfVcA0Fa1bKrIhztYelYmb+95RB80OLMBreknYkdwzdi2Q== - dependencies: - ansi-colors "^4.1.1" - plugin-error "^1.0.1" - source-map "^0.7.3" - through2 "^3.0.1" - vinyl "^2.2.0" - vinyl-fs "^3.0.3" - gulp@4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" @@ -4847,6 +4897,11 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-own-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-own-prop/-/has-own-prop-2.0.0.tgz#f0f95d58f65804f5d218db32563bb85b8e0417af" + integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== + has-symbols@^1.0.0, has-symbols@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" @@ -6533,6 +6588,11 @@ merge2@^1.3.0: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +merge@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/merge/-/merge-2.1.1.tgz#59ef4bf7e0b3e879186436e8481c06a6c162ca98" + integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w== + methods@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -8689,7 +8749,7 @@ readable-stream@1.1.x: isarray "0.0.1" string_decoder "~0.10.x" -"readable-stream@2 || 3", readable-stream@3, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: +readable-stream@3, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -9503,7 +9563,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3, source-map@~0.7.2: +source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -10168,13 +10228,6 @@ through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through2@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/through2/-/through2-3.0.1.tgz#39276e713c3302edf9e388dd9c812dd3b825bd5a" - integrity sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww== - dependencies: - readable-stream "2 || 3" - through2@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" @@ -10358,6 +10411,19 @@ ts-node@9.1.1: source-map-support "^0.5.17" yn "3.1.1" +tsc-alias@1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/tsc-alias/-/tsc-alias-1.2.8.tgz#d88bfce778c0b31d095a132209b4eefe7e16cc16" + integrity sha512-29WMSalu0cW/VuNeTEs/CPjz5z5Ae2ZBlTV0gjeoQwJNjZ5sDyPmu1C0rDmvOLPEJyo/iwqOMtNAlG17fEqBCw== + dependencies: + "@jfonx/console-utils" "^1.0.3" + "@jfonx/file-utils" "^3.0.1" + chokidar "^3.5.0" + commander "^6.2.1" + find-node-modules "^2.1.0" + globby "^11.0.2" + normalize-path "^3.0.0" + tslib@^1.13.0: version "1.13.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" @@ -10772,7 +10838,7 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vinyl-fs@^3.0.0, vinyl-fs@^3.0.3: +vinyl-fs@^3.0.0: version "3.0.3" resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== @@ -10815,7 +10881,7 @@ vinyl-sourcemaps-apply@^0.2.1: dependencies: source-map "^0.5.1" -vinyl@^2.0.0, vinyl@^2.2.0: +vinyl@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== -- cgit v1.2.3-freya From c74fe3c6e2aae3df4624b9b3a55b45293223ebf5 Mon Sep 17 00:00:00 2001 From: syuilo Date: Tue, 23 Mar 2021 17:43:07 +0900 Subject: refactor: Use path alias --- src/argv.ts | 2 +- src/boot/master.ts | 6 +++--- src/client/components/autocomplete.vue | 4 ++-- src/client/components/emoji-picker.vue | 2 +- src/client/components/notification.vue | 2 +- src/client/components/poll-editor.vue | 2 +- src/client/components/post-form.vue | 6 +++--- src/client/components/token-generate-window.vue | 2 +- src/client/components/user-info.vue | 2 +- src/client/components/user-preview.vue | 2 +- src/client/filters/user.ts | 4 ++-- src/client/i18n.ts | 2 +- src/client/pages/follow.vue | 2 +- src/client/pages/instance/abuses.vue | 2 +- src/client/pages/instance/settings.vue | 2 +- src/client/pages/instance/users.vue | 2 +- src/client/pages/messaging/index.vue | 2 +- src/client/pages/messaging/messaging-room.form.vue | 2 +- src/client/pages/messaging/messaging-room.vue | 2 +- src/client/pages/my-antennas/index.antenna.vue | 2 +- src/client/pages/room/room.vue | 2 +- src/client/pages/user/index.vue | 2 +- src/client/scripts/gen-search-query.ts | 2 +- src/client/scripts/get-user-menu.ts | 2 +- src/client/sw/compose-notification.ts | 4 ++-- src/client/sw/sw.ts | 2 +- src/client/ui/chat/post-form.vue | 6 +++--- src/db/elasticsearch.ts | 2 +- src/db/postgre.ts | 2 +- src/db/redis.ts | 2 +- src/mfm/language.ts | 4 ++-- src/mfm/to-html.ts | 2 +- src/mfm/to-string.ts | 2 +- src/misc/captcha.ts | 2 +- src/misc/convert-host.ts | 2 +- src/misc/download-url.ts | 2 +- src/misc/fetch.ts | 2 +- src/misc/gen-id.ts | 2 +- src/models/repositories/antenna.ts | 2 +- src/models/repositories/app.ts | 2 +- src/models/repositories/blocking.ts | 2 +- src/models/repositories/channel.ts | 2 +- src/models/repositories/clip.ts | 2 +- src/models/repositories/drive-file.ts | 8 ++++---- src/models/repositories/drive-folder.ts | 2 +- src/models/repositories/federation-instance.ts | 2 +- src/models/repositories/following.ts | 2 +- src/models/repositories/hashtag.ts | 2 +- src/models/repositories/messaging-message.ts | 2 +- src/models/repositories/muting.ts | 2 +- src/models/repositories/note-reaction.ts | 4 ++-- src/models/repositories/note.ts | 6 +++--- src/models/repositories/notification.ts | 4 ++-- src/models/repositories/page.ts | 2 +- src/models/repositories/user-group.ts | 2 +- src/models/repositories/user-list.ts | 2 +- src/models/repositories/user.ts | 8 ++++---- src/queue/index.ts | 2 +- src/queue/initialize.ts | 2 +- src/queue/processors/db/export-blocking.ts | 2 +- src/queue/processors/db/export-following.ts | 2 +- src/queue/processors/db/export-mute.ts | 2 +- src/queue/processors/db/export-user-lists.ts | 2 +- src/queue/processors/db/import-following.ts | 6 +++--- src/queue/processors/db/import-user-lists.ts | 8 ++++---- src/queue/processors/deliver.ts | 6 +++--- src/queue/processors/inbox.ts | 4 ++-- src/queue/queues.ts | 2 +- src/remote/activitypub/db-resolver.ts | 2 +- src/remote/activitypub/kernel/announce/note.ts | 6 +++--- src/remote/activitypub/kernel/create/note.ts | 4 ++-- src/remote/activitypub/kernel/delete/note.ts | 2 +- src/remote/activitypub/kernel/flag/index.ts | 4 ++-- src/remote/activitypub/kernel/read.ts | 2 +- src/remote/activitypub/misc/ld-signature.ts | 2 +- src/remote/activitypub/models/image.ts | 2 +- src/remote/activitypub/models/note.ts | 10 +++++----- src/remote/activitypub/models/person.ts | 10 +++++----- src/remote/activitypub/models/question.ts | 2 +- src/remote/activitypub/renderer/accept.ts | 2 +- src/remote/activitypub/renderer/add.ts | 2 +- src/remote/activitypub/renderer/announce.ts | 2 +- src/remote/activitypub/renderer/block.ts | 2 +- src/remote/activitypub/renderer/create.ts | 2 +- src/remote/activitypub/renderer/delete.ts | 2 +- src/remote/activitypub/renderer/emoji.ts | 2 +- src/remote/activitypub/renderer/follow-relay.ts | 2 +- src/remote/activitypub/renderer/follow-user.ts | 2 +- src/remote/activitypub/renderer/follow.ts | 2 +- src/remote/activitypub/renderer/hashtag.ts | 2 +- src/remote/activitypub/renderer/index.ts | 4 ++-- src/remote/activitypub/renderer/key.ts | 2 +- src/remote/activitypub/renderer/like.ts | 2 +- src/remote/activitypub/renderer/mention.ts | 2 +- src/remote/activitypub/renderer/note.ts | 2 +- src/remote/activitypub/renderer/person.ts | 4 ++-- src/remote/activitypub/renderer/question.ts | 2 +- src/remote/activitypub/renderer/read.ts | 2 +- src/remote/activitypub/renderer/reject.ts | 2 +- src/remote/activitypub/renderer/remove.ts | 2 +- src/remote/activitypub/renderer/undo.ts | 2 +- src/remote/activitypub/renderer/update.ts | 2 +- src/remote/activitypub/renderer/vote.ts | 2 +- src/remote/activitypub/request.ts | 6 +++--- src/remote/activitypub/resolver.ts | 4 ++-- src/remote/resolve-user.ts | 4 ++-- src/remote/webfinger.ts | 2 +- src/server/activitypub.ts | 4 ++-- src/server/activitypub/featured.ts | 2 +- src/server/activitypub/followers.ts | 4 ++-- src/server/activitypub/following.ts | 4 ++-- src/server/activitypub/outbox.ts | 4 ++-- src/server/api/2fa.ts | 2 +- src/server/api/authenticate.ts | 2 +- .../api/common/generate-native-user-token.ts | 2 +- src/server/api/common/getters.ts | 2 +- src/server/api/common/read-messaging-message.ts | 2 +- src/server/api/common/signin.ts | 4 ++-- src/server/api/common/signup.ts | 4 ++-- src/server/api/define.ts | 2 +- src/server/api/endpoints.ts | 2 +- .../api/endpoints/admin/abuse-user-reports.ts | 2 +- .../api/endpoints/admin/announcements/create.ts | 2 +- .../api/endpoints/admin/announcements/delete.ts | 2 +- .../api/endpoints/admin/announcements/list.ts | 2 +- .../api/endpoints/admin/announcements/update.ts | 2 +- .../endpoints/admin/delete-all-files-of-a-user.ts | 2 +- src/server/api/endpoints/admin/drive/files.ts | 2 +- src/server/api/endpoints/admin/drive/show-file.ts | 2 +- src/server/api/endpoints/admin/emoji/add.ts | 4 ++-- src/server/api/endpoints/admin/emoji/copy.ts | 4 ++-- .../api/endpoints/admin/emoji/list-remote.ts | 4 ++-- src/server/api/endpoints/admin/emoji/list.ts | 2 +- src/server/api/endpoints/admin/emoji/remove.ts | 2 +- src/server/api/endpoints/admin/emoji/update.ts | 2 +- .../federation/refresh-remote-instance-metadata.ts | 2 +- .../endpoints/admin/federation/update-instance.ts | 2 +- src/server/api/endpoints/admin/invite.ts | 2 +- src/server/api/endpoints/admin/moderators/add.ts | 2 +- .../api/endpoints/admin/moderators/remove.ts | 2 +- src/server/api/endpoints/admin/promo/create.ts | 2 +- src/server/api/endpoints/admin/reset-password.ts | 2 +- .../endpoints/admin/resolve-abuse-user-report.ts | 2 +- .../api/endpoints/admin/show-moderation-logs.ts | 2 +- src/server/api/endpoints/admin/show-user.ts | 2 +- src/server/api/endpoints/admin/silence-user.ts | 2 +- src/server/api/endpoints/admin/suspend-user.ts | 2 +- src/server/api/endpoints/admin/unsilence-user.ts | 2 +- src/server/api/endpoints/admin/unsuspend-user.ts | 2 +- src/server/api/endpoints/admin/update-meta.ts | 4 ++-- .../api/endpoints/admin/update-remote-user.ts | 2 +- src/server/api/endpoints/announcements.ts | 2 +- src/server/api/endpoints/antennas/create.ts | 4 ++-- src/server/api/endpoints/antennas/delete.ts | 2 +- src/server/api/endpoints/antennas/notes.ts | 2 +- src/server/api/endpoints/antennas/show.ts | 2 +- src/server/api/endpoints/antennas/update.ts | 2 +- src/server/api/endpoints/ap/show.ts | 6 +++--- src/server/api/endpoints/app/create.ts | 4 ++-- src/server/api/endpoints/app/show.ts | 2 +- src/server/api/endpoints/auth/accept.ts | 4 ++-- src/server/api/endpoints/auth/session/generate.ts | 4 ++-- src/server/api/endpoints/blocking/create.ts | 2 +- src/server/api/endpoints/blocking/delete.ts | 2 +- src/server/api/endpoints/blocking/list.ts | 2 +- src/server/api/endpoints/channels/create.ts | 4 ++-- src/server/api/endpoints/channels/follow.ts | 4 ++-- src/server/api/endpoints/channels/followed.ts | 2 +- src/server/api/endpoints/channels/owned.ts | 2 +- src/server/api/endpoints/channels/show.ts | 2 +- src/server/api/endpoints/channels/timeline.ts | 2 +- src/server/api/endpoints/channels/unfollow.ts | 2 +- src/server/api/endpoints/channels/update.ts | 2 +- src/server/api/endpoints/charts/user/drive.ts | 2 +- src/server/api/endpoints/charts/user/following.ts | 2 +- src/server/api/endpoints/charts/user/notes.ts | 2 +- src/server/api/endpoints/charts/user/reactions.ts | 2 +- src/server/api/endpoints/clips/add-note.ts | 4 ++-- src/server/api/endpoints/clips/create.ts | 2 +- src/server/api/endpoints/clips/delete.ts | 2 +- src/server/api/endpoints/clips/notes.ts | 2 +- src/server/api/endpoints/clips/show.ts | 2 +- src/server/api/endpoints/clips/update.ts | 2 +- src/server/api/endpoints/drive.ts | 2 +- src/server/api/endpoints/drive/files.ts | 2 +- .../api/endpoints/drive/files/attached-notes.ts | 2 +- src/server/api/endpoints/drive/files/create.ts | 2 +- src/server/api/endpoints/drive/files/delete.ts | 2 +- src/server/api/endpoints/drive/files/find.ts | 2 +- src/server/api/endpoints/drive/files/show.ts | 2 +- src/server/api/endpoints/drive/files/update.ts | 2 +- .../api/endpoints/drive/files/upload-from-url.ts | 2 +- src/server/api/endpoints/drive/folders.ts | 2 +- src/server/api/endpoints/drive/folders/create.ts | 4 ++-- src/server/api/endpoints/drive/folders/delete.ts | 2 +- src/server/api/endpoints/drive/folders/find.ts | 2 +- src/server/api/endpoints/drive/folders/show.ts | 2 +- src/server/api/endpoints/drive/folders/update.ts | 2 +- src/server/api/endpoints/drive/stream.ts | 2 +- src/server/api/endpoints/federation/followers.ts | 2 +- src/server/api/endpoints/federation/following.ts | 2 +- src/server/api/endpoints/federation/instances.ts | 4 ++-- .../api/endpoints/federation/show-instance.ts | 4 ++-- src/server/api/endpoints/federation/users.ts | 2 +- src/server/api/endpoints/following/create.ts | 2 +- src/server/api/endpoints/following/delete.ts | 2 +- .../api/endpoints/following/requests/accept.ts | 2 +- .../api/endpoints/following/requests/cancel.ts | 2 +- .../api/endpoints/following/requests/reject.ts | 2 +- src/server/api/endpoints/games/reversi/games.ts | 2 +- .../api/endpoints/games/reversi/games/show.ts | 2 +- .../api/endpoints/games/reversi/games/surrender.ts | 2 +- src/server/api/endpoints/games/reversi/match.ts | 4 ++-- src/server/api/endpoints/get-online-users-count.ts | 2 +- src/server/api/endpoints/hashtags/show.ts | 2 +- src/server/api/endpoints/hashtags/trend.ts | 6 +++--- src/server/api/endpoints/hashtags/users.ts | 2 +- src/server/api/endpoints/i/2fa/key-done.ts | 2 +- src/server/api/endpoints/i/2fa/register-key.ts | 2 +- src/server/api/endpoints/i/2fa/register.ts | 2 +- src/server/api/endpoints/i/favorites.ts | 2 +- src/server/api/endpoints/i/import-following.ts | 2 +- src/server/api/endpoints/i/import-user-lists.ts | 2 +- src/server/api/endpoints/i/notifications.ts | 2 +- src/server/api/endpoints/i/page-likes.ts | 2 +- src/server/api/endpoints/i/pages.ts | 2 +- src/server/api/endpoints/i/pin.ts | 2 +- src/server/api/endpoints/i/read-announcement.ts | 4 ++-- src/server/api/endpoints/i/registry/set.ts | 2 +- src/server/api/endpoints/i/revoke-token.ts | 2 +- src/server/api/endpoints/i/signin-history.ts | 2 +- src/server/api/endpoints/i/unpin.ts | 2 +- src/server/api/endpoints/i/update-email.ts | 2 +- src/server/api/endpoints/i/update.ts | 8 ++++---- src/server/api/endpoints/i/user-group-invites.ts | 2 +- src/server/api/endpoints/messaging/messages.ts | 2 +- .../api/endpoints/messaging/messages/create.ts | 2 +- .../api/endpoints/messaging/messages/delete.ts | 2 +- .../api/endpoints/messaging/messages/read.ts | 2 +- src/server/api/endpoints/meta.ts | 6 +++--- src/server/api/endpoints/miauth/gen-token.ts | 4 ++-- src/server/api/endpoints/mute/create.ts | 4 ++-- src/server/api/endpoints/mute/delete.ts | 2 +- src/server/api/endpoints/mute/list.ts | 2 +- src/server/api/endpoints/notes.ts | 2 +- src/server/api/endpoints/notes/children.ts | 2 +- src/server/api/endpoints/notes/clips.ts | 2 +- src/server/api/endpoints/notes/conversation.ts | 2 +- src/server/api/endpoints/notes/create.ts | 6 +++--- src/server/api/endpoints/notes/delete.ts | 2 +- src/server/api/endpoints/notes/favorites/create.ts | 4 ++-- src/server/api/endpoints/notes/favorites/delete.ts | 2 +- src/server/api/endpoints/notes/global-timeline.ts | 4 ++-- src/server/api/endpoints/notes/hybrid-timeline.ts | 4 ++-- src/server/api/endpoints/notes/local-timeline.ts | 4 ++-- src/server/api/endpoints/notes/mentions.ts | 2 +- src/server/api/endpoints/notes/polls/vote.ts | 4 ++-- src/server/api/endpoints/notes/reactions.ts | 2 +- src/server/api/endpoints/notes/reactions/create.ts | 2 +- src/server/api/endpoints/notes/reactions/delete.ts | 2 +- src/server/api/endpoints/notes/renotes.ts | 2 +- src/server/api/endpoints/notes/replies.ts | 2 +- src/server/api/endpoints/notes/search-by-tag.ts | 6 +++--- src/server/api/endpoints/notes/search.ts | 4 ++-- src/server/api/endpoints/notes/show.ts | 2 +- src/server/api/endpoints/notes/state.ts | 2 +- src/server/api/endpoints/notes/timeline.ts | 2 +- src/server/api/endpoints/notes/unrenote.ts | 2 +- .../api/endpoints/notes/user-list-timeline.ts | 2 +- src/server/api/endpoints/notes/watching/create.ts | 2 +- src/server/api/endpoints/notes/watching/delete.ts | 2 +- src/server/api/endpoints/page-push.ts | 2 +- src/server/api/endpoints/pages/create.ts | 4 ++-- src/server/api/endpoints/pages/delete.ts | 2 +- src/server/api/endpoints/pages/like.ts | 4 ++-- src/server/api/endpoints/pages/show.ts | 2 +- src/server/api/endpoints/pages/unlike.ts | 2 +- src/server/api/endpoints/pages/update.ts | 2 +- src/server/api/endpoints/pinned-users.ts | 4 ++-- src/server/api/endpoints/promo/read.ts | 4 ++-- src/server/api/endpoints/room/show.ts | 4 ++-- src/server/api/endpoints/sw/register.ts | 4 ++-- src/server/api/endpoints/users/clips.ts | 2 +- src/server/api/endpoints/users/followers.ts | 4 ++-- src/server/api/endpoints/users/following.ts | 4 ++-- .../users/get-frequently-replied-users.ts | 2 +- src/server/api/endpoints/users/groups/create.ts | 2 +- src/server/api/endpoints/users/groups/delete.ts | 2 +- .../endpoints/users/groups/invitations/accept.ts | 4 ++-- .../endpoints/users/groups/invitations/reject.ts | 2 +- src/server/api/endpoints/users/groups/invite.ts | 4 ++-- src/server/api/endpoints/users/groups/pull.ts | 2 +- src/server/api/endpoints/users/groups/show.ts | 2 +- src/server/api/endpoints/users/groups/transfer.ts | 2 +- src/server/api/endpoints/users/groups/update.ts | 2 +- src/server/api/endpoints/users/lists/create.ts | 2 +- src/server/api/endpoints/users/lists/delete.ts | 2 +- src/server/api/endpoints/users/lists/pull.ts | 2 +- src/server/api/endpoints/users/lists/push.ts | 2 +- src/server/api/endpoints/users/lists/show.ts | 2 +- src/server/api/endpoints/users/lists/update.ts | 2 +- src/server/api/endpoints/users/notes.ts | 2 +- src/server/api/endpoints/users/pages.ts | 2 +- src/server/api/endpoints/users/relation.ts | 2 +- src/server/api/endpoints/users/report-abuse.ts | 4 ++-- src/server/api/endpoints/users/show.ts | 2 +- src/server/api/endpoints/users/stats.ts | 2 +- src/server/api/limiter.ts | 2 +- src/server/api/openapi/description.ts | 2 +- src/server/api/openapi/gen-spec.ts | 2 +- src/server/api/openapi/schemas.ts | 2 +- src/server/api/private/signin.ts | 4 ++-- src/server/api/private/signup.ts | 4 ++-- src/server/api/service/discord.ts | 6 +++--- src/server/api/service/github.ts | 6 +++--- src/server/api/service/twitter.ts | 4 ++-- src/server/api/stream/channels/antenna.ts | 2 +- src/server/api/stream/channels/channel.ts | 2 +- src/server/api/stream/channels/global-timeline.ts | 6 +++--- src/server/api/stream/channels/hashtag.ts | 4 ++-- src/server/api/stream/channels/home-timeline.ts | 4 ++-- src/server/api/stream/channels/hybrid-timeline.ts | 6 +++--- src/server/api/stream/channels/local-timeline.ts | 6 +++--- src/server/api/stream/channels/user-list.ts | 2 +- src/server/file/send-drive-file.ts | 6 +++--- src/server/index.ts | 6 +++--- src/server/nodeinfo.ts | 4 ++-- src/server/proxy/proxy-media.ts | 6 +++--- src/server/web/feed.ts | 2 +- src/server/web/index.ts | 8 ++++---- src/server/web/manifest.ts | 2 +- src/server/web/url-preview.ts | 6 +++--- src/server/well-known.ts | 6 +++--- src/services/add-note-to-antenna.ts | 4 ++-- src/services/blocking/create.ts | 2 +- src/services/chart/charts/classes/active-users.ts | 2 +- src/services/chart/charts/classes/drive.ts | 2 +- src/services/chart/charts/classes/federation.ts | 2 +- src/services/chart/charts/classes/hashtag.ts | 2 +- src/services/chart/charts/classes/instance.ts | 4 ++-- src/services/chart/charts/classes/network.ts | 2 +- src/services/chart/charts/classes/notes.ts | 2 +- .../chart/charts/classes/per-user-drive.ts | 2 +- .../chart/charts/classes/per-user-following.ts | 2 +- .../chart/charts/classes/per-user-notes.ts | 2 +- .../chart/charts/classes/per-user-reactions.ts | 2 +- src/services/chart/charts/classes/test-grouped.ts | 2 +- src/services/chart/charts/classes/test-unique.ts | 2 +- src/services/chart/charts/classes/test.ts | 2 +- src/services/chart/charts/classes/users.ts | 2 +- src/services/chart/core.ts | 4 ++-- src/services/chart/index.ts | 2 +- src/services/create-notification.ts | 2 +- src/services/create-system-user.ts | 4 ++-- src/services/drive/add-file.ts | 10 +++++----- src/services/drive/delete-file.ts | 4 ++-- src/services/drive/internal-storage.ts | 2 +- src/services/drive/s3.ts | 2 +- src/services/drive/upload-from-url.ts | 4 ++-- src/services/fetch-instance-metadata.ts | 4 ++-- src/services/following/create.ts | 6 +++--- src/services/following/requests/accept.ts | 2 +- src/services/following/requests/cancel.ts | 2 +- src/services/following/requests/create.ts | 2 +- src/services/i/pin.ts | 6 +++--- src/services/insert-moderation-log.ts | 2 +- src/services/instance-actor.ts | 2 +- src/services/logger.ts | 4 ++-- src/services/messages/create.ts | 2 +- src/services/messages/delete.ts | 2 +- src/services/note/create.ts | 22 +++++++++++----------- src/services/note/delete.ts | 4 ++-- src/services/note/polls/vote.ts | 2 +- src/services/note/reaction/create.ts | 6 +++--- src/services/note/reaction/delete.ts | 4 ++-- src/services/note/read.ts | 4 ++-- src/services/note/unread.ts | 2 +- src/services/note/watch.ts | 2 +- src/services/push-notification.ts | 4 ++-- src/services/register-or-fetch-instance-doc.ts | 6 +++--- src/services/relay.ts | 2 +- src/services/send-email-notification.ts | 2 +- src/services/send-email.ts | 4 ++-- src/services/stream.ts | 2 +- src/services/suspend-user.ts | 2 +- src/services/unsuspend-user.ts | 2 +- src/services/update-hashtag.ts | 4 ++-- src/services/user-list/push.ts | 4 ++-- src/tools/accept-migration.ts | 2 +- src/tools/add-emoji.ts | 2 +- src/tools/resync-remote-user.ts | 2 +- 391 files changed, 557 insertions(+), 557 deletions(-) (limited to 'src/server') diff --git a/src/argv.ts b/src/argv.ts index a92338f867..9c69a450db 100644 --- a/src/argv.ts +++ b/src/argv.ts @@ -1,5 +1,5 @@ import * as program from 'commander'; -import config from './config'; +import config from '@/config'; program .version(config.version) diff --git a/src/boot/master.ts b/src/boot/master.ts index 33ccec55d0..ef8692b308 100644 --- a/src/boot/master.ts +++ b/src/boot/master.ts @@ -6,11 +6,11 @@ import * as isRoot from 'is-root'; import { getConnection } from 'typeorm'; import Logger from '../services/logger'; -import loadConfig from '../config/load'; -import { Config } from '../config/types'; +import loadConfig from '@/config/load'; +import { Config } from '@/config/types'; import { lessThan } from '../prelude/array'; import { program } from '../argv'; -import { showMachineInfo } from '../misc/show-machine-info'; +import { showMachineInfo } from '@/misc/show-machine-info'; import { initDb } from '../db/postgre'; const meta = require('../meta.json'); diff --git a/src/client/components/autocomplete.vue b/src/client/components/autocomplete.vue index 2014c710a5..35cfb77301 100644 --- a/src/client/components/autocomplete.vue +++ b/src/client/components/autocomplete.vue @@ -29,9 +29,9 @@