summaryrefslogtreecommitdiff
path: root/src/server/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/api')
-rw-r--r--src/server/api/bot/core.ts439
-rw-r--r--src/server/api/bot/interfaces/line.ts238
-rw-r--r--src/server/api/common/get-host-lower.ts2
-rw-r--r--src/server/api/endpoints/aggregation/posts.ts5
-rw-r--r--src/server/api/endpoints/aggregation/users.ts5
-rw-r--r--src/server/api/endpoints/aggregation/users/activity.ts15
-rw-r--r--src/server/api/endpoints/aggregation/users/followers.ts2
-rw-r--r--src/server/api/endpoints/aggregation/users/following.ts2
-rw-r--r--src/server/api/endpoints/aggregation/users/post.ts15
-rw-r--r--src/server/api/endpoints/aggregation/users/reaction.ts12
-rw-r--r--src/server/api/endpoints/app/create.ts10
-rw-r--r--src/server/api/endpoints/app/name_id/available.ts2
-rw-r--r--src/server/api/endpoints/app/show.ts8
-rw-r--r--src/server/api/endpoints/auth/accept.ts10
-rw-r--r--src/server/api/endpoints/auth/session/generate.ts2
-rw-r--r--src/server/api/endpoints/auth/session/show.ts10
-rw-r--r--src/server/api/endpoints/auth/session/userkey.ts2
-rw-r--r--src/server/api/endpoints/drive.ts3
-rw-r--r--src/server/api/endpoints/drive/files.ts6
-rw-r--r--src/server/api/endpoints/drive/files/create.ts6
-rw-r--r--src/server/api/endpoints/drive/files/delete.ts3
-rw-r--r--src/server/api/endpoints/drive/files/find.ts6
-rw-r--r--src/server/api/endpoints/drive/files/show.ts6
-rw-r--r--src/server/api/endpoints/drive/files/update.ts6
-rw-r--r--src/server/api/endpoints/drive/folders.ts2
-rw-r--r--src/server/api/endpoints/drive/folders/create.ts6
-rw-r--r--src/server/api/endpoints/drive/folders/find.ts6
-rw-r--r--src/server/api/endpoints/drive/folders/show.ts6
-rw-r--r--src/server/api/endpoints/drive/folders/update.ts8
-rw-r--r--src/server/api/endpoints/drive/stream.ts6
-rw-r--r--src/server/api/endpoints/following/create.ts7
-rw-r--r--src/server/api/endpoints/following/delete.ts7
-rw-r--r--src/server/api/endpoints/following/requests/accept.ts4
-rw-r--r--src/server/api/endpoints/following/requests/cancel.ts4
-rw-r--r--src/server/api/endpoints/following/requests/list.ts3
-rw-r--r--src/server/api/endpoints/following/requests/reject.ts4
-rw-r--r--src/server/api/endpoints/following/stalk.ts3
-rw-r--r--src/server/api/endpoints/following/unstalk.ts3
-rw-r--r--src/server/api/endpoints/hashtags/trend.ts5
-rw-r--r--src/server/api/endpoints/i.ts8
-rw-r--r--src/server/api/endpoints/i/2fa/done.ts7
-rw-r--r--src/server/api/endpoints/i/2fa/register.ts7
-rw-r--r--src/server/api/endpoints/i/2fa/unregister.ts7
-rw-r--r--src/server/api/endpoints/i/authorized_apps.ts6
-rw-r--r--src/server/api/endpoints/i/change_password.ts7
-rw-r--r--src/server/api/endpoints/i/favorites.ts6
-rw-r--r--src/server/api/endpoints/i/notifications.ts6
-rw-r--r--src/server/api/endpoints/i/pin.ts7
-rw-r--r--src/server/api/endpoints/i/regenerate_token.ts7
-rw-r--r--src/server/api/endpoints/i/signin_history.ts6
-rw-r--r--src/server/api/endpoints/i/update.ts8
-rw-r--r--src/server/api/endpoints/i/update_client_setting.ts9
-rw-r--r--src/server/api/endpoints/i/update_home.ts4
-rw-r--r--src/server/api/endpoints/i/update_mobile_home.ts4
-rw-r--r--src/server/api/endpoints/i/update_widget.ts12
-rw-r--r--src/server/api/endpoints/messaging/history.ts6
-rw-r--r--src/server/api/endpoints/messaging/messages.ts4
-rw-r--r--src/server/api/endpoints/messaging/messages/create.ts7
-rw-r--r--src/server/api/endpoints/meta.ts2
-rw-r--r--src/server/api/endpoints/mute/create.ts7
-rw-r--r--src/server/api/endpoints/mute/delete.ts7
-rw-r--r--src/server/api/endpoints/mute/list.ts7
-rw-r--r--src/server/api/endpoints/my/apps.ts6
-rw-r--r--src/server/api/endpoints/notes.ts2
-rw-r--r--src/server/api/endpoints/notes/conversation.ts12
-rw-r--r--src/server/api/endpoints/notes/create.ts11
-rw-r--r--src/server/api/endpoints/notes/delete.ts3
-rw-r--r--src/server/api/endpoints/notes/favorites/create.ts6
-rw-r--r--src/server/api/endpoints/notes/favorites/delete.ts6
-rw-r--r--src/server/api/endpoints/notes/global-timeline.ts6
-rw-r--r--src/server/api/endpoints/notes/local-timeline.ts6
-rw-r--r--src/server/api/endpoints/notes/mentions.ts10
-rw-r--r--src/server/api/endpoints/notes/polls/recommendation.ts6
-rw-r--r--src/server/api/endpoints/notes/polls/vote.ts19
-rw-r--r--src/server/api/endpoints/notes/reactions.ts10
-rw-r--r--src/server/api/endpoints/notes/reactions/create.ts6
-rw-r--r--src/server/api/endpoints/notes/reactions/delete.ts8
-rw-r--r--src/server/api/endpoints/notes/replies.ts3
-rw-r--r--src/server/api/endpoints/notes/reposts.ts10
-rw-r--r--src/server/api/endpoints/notes/search.ts364
-rw-r--r--src/server/api/endpoints/notes/search_by_tag.ts26
-rw-r--r--src/server/api/endpoints/notes/show.ts10
-rw-r--r--src/server/api/endpoints/notes/timeline.ts6
-rw-r--r--src/server/api/endpoints/notes/trend.ts10
-rw-r--r--src/server/api/endpoints/notes/user-list-timeline.ts6
-rw-r--r--src/server/api/endpoints/notifications/mark_as_read_all.ts4
-rw-r--r--src/server/api/endpoints/reversi/games.ts3
-rw-r--r--src/server/api/endpoints/reversi/games/show.ts3
-rw-r--r--src/server/api/endpoints/reversi/invitations.ts3
-rw-r--r--src/server/api/endpoints/reversi/match.ts4
-rw-r--r--src/server/api/endpoints/reversi/match/cancel.ts3
-rw-r--r--src/server/api/endpoints/sw/register.ts6
-rw-r--r--src/server/api/endpoints/username/available.ts8
-rw-r--r--src/server/api/endpoints/users.ts7
-rw-r--r--src/server/api/endpoints/users/followers.ts7
-rw-r--r--src/server/api/endpoints/users/following.ts11
-rw-r--r--src/server/api/endpoints/users/get_frequently_replied_users.ts9
-rw-r--r--src/server/api/endpoints/users/lists/create.ts6
-rw-r--r--src/server/api/endpoints/users/lists/list.ts3
-rw-r--r--src/server/api/endpoints/users/lists/push.ts4
-rw-r--r--src/server/api/endpoints/users/lists/show.ts3
-rw-r--r--src/server/api/endpoints/users/notes.ts7
-rw-r--r--src/server/api/endpoints/users/recommendation.ts11
-rw-r--r--src/server/api/endpoints/users/search.ts73
-rw-r--r--src/server/api/endpoints/users/search_by_username.ts7
-rw-r--r--src/server/api/endpoints/users/show.ts9
-rw-r--r--src/server/api/private/signup.ts2
-rw-r--r--src/server/api/service/github.ts4
-rw-r--r--src/server/api/stream/notes-stats.ts2
-rw-r--r--src/server/api/stream/requests.ts19
-rw-r--r--src/server/api/stream/reversi-game.ts14
-rw-r--r--src/server/api/stream/server-stats.ts2
-rw-r--r--src/server/api/streaming.ts6
113 files changed, 245 insertions, 1587 deletions
diff --git a/src/server/api/bot/core.ts b/src/server/api/bot/core.ts
deleted file mode 100644
index d41af48057..0000000000
--- a/src/server/api/bot/core.ts
+++ /dev/null
@@ -1,439 +0,0 @@
-import * as EventEmitter from 'events';
-import * as bcrypt from 'bcryptjs';
-
-import User, { IUser, init as initUser, ILocalUser } from '../../../models/user';
-
-import getNoteSummary from '../../../renderers/get-note-summary';
-import getUserName from '../../../renderers/get-user-name';
-import getUserSummary from '../../../renderers/get-user-summary';
-import parseAcct from '../../../acct/parse';
-import getNotificationSummary from '../../../renderers/get-notification-summary';
-
-const hmm = [
- '?',
- 'ふぅ~む...?',
- 'ちょっと何言ってるかわからないです',
- '「ヘルプ」と言うと利用可能な操作が確認できますよ'
-];
-
-/**
- * Botの頭脳
- */
-export default class BotCore extends EventEmitter {
- public user: IUser = null;
-
- private context: Context = null;
-
- constructor(user?: IUser) {
- super();
-
- this.user = user;
- }
-
- public clearContext() {
- this.setContext(null);
- }
-
- public setContext(context: Context) {
- this.context = context;
- this.emit('updated');
-
- if (context) {
- context.on('updated', () => {
- this.emit('updated');
- });
- }
- }
-
- public export() {
- return {
- user: this.user,
- context: this.context ? this.context.export() : null
- };
- }
-
- protected _import(data) {
- this.user = data.user ? initUser(data.user) : null;
- this.setContext(data.context ? Context.import(this, data.context) : null);
- }
-
- public static import(data) {
- const bot = new BotCore();
- bot._import(data);
- return bot;
- }
-
- public async q(query: string): Promise<string> {
- if (this.context != null) {
- return await this.context.q(query);
- }
-
- if (/^@[a-zA-Z0-9_]+$/.test(query)) {
- return await this.showUserCommand(query);
- }
-
- switch (query) {
- case 'ping':
- return 'PONG';
-
- case 'help':
- case 'ヘルプ':
- return '利用可能なコマンド一覧です:\n' +
- 'help: これです\n' +
- 'me: アカウント情報を見ます\n' +
- 'login, signin: サインインします\n' +
- 'logout, signout: サインアウトします\n' +
- 'note: 投稿します\n' +
- 'tl: タイムラインを見ます\n' +
- 'no: 通知を見ます\n' +
- '@<ユーザー名>: ユーザーを表示します\n' +
- '\n' +
- 'タイムラインや通知を見た後、「次」というとさらに遡ることができます。';
-
- case 'me':
- return this.user ? `${getUserName(this.user)}としてサインインしています。\n\n${getUserSummary(this.user)}` : 'サインインしていません';
-
- case 'login':
- case 'signin':
- case 'ログイン':
- case 'サインイン':
- if (this.user != null) return '既にサインインしていますよ!';
- this.setContext(new SigninContext(this));
- return await this.context.greet();
-
- case 'logout':
- case 'signout':
- case 'ログアウト':
- case 'サインアウト':
- if (this.user == null) return '今はサインインしてないですよ!';
- this.signout();
- return 'ご利用ありがとうございました <3';
-
- case 'note':
- case '投稿':
- if (this.user == null) return 'まずサインインしてください。';
- this.setContext(new NoteContext(this));
- return await this.context.greet();
-
- case 'tl':
- case 'タイムライン':
- if (this.user == null) return 'まずサインインしてください。';
- this.setContext(new TlContext(this));
- return await this.context.greet();
-
- case 'no':
- case 'notifications':
- case '通知':
- if (this.user == null) return 'まずサインインしてください。';
- this.setContext(new NotificationsContext(this));
- return await this.context.greet();
-
- case 'guessing-game':
- case '数当てゲーム':
- this.setContext(new GuessingGameContext(this));
- return await this.context.greet();
-
- default:
- return hmm[Math.floor(Math.random() * hmm.length)];
- }
- }
-
- public signin(user: IUser) {
- this.user = user;
- this.emit('signin', user);
- this.emit('updated');
- }
-
- public signout() {
- const user = this.user;
- this.user = null;
- this.emit('signout', user);
- this.emit('updated');
- }
-
- public async refreshUser() {
- this.user = await User.findOne({
- _id: this.user._id
- }, {
- fields: {
- data: false
- }
- });
-
- this.emit('updated');
- }
-
- public async showUserCommand(q: string): Promise<string> {
- try {
- const user = await require('../endpoints/users/show')(parseAcct(q.substr(1)), this.user);
-
- const text = getUserSummary(user);
-
- return text;
- } catch (e) {
- return `問題が発生したようです...: ${e}`;
- }
- }
-}
-
-abstract class Context extends EventEmitter {
- protected bot: BotCore;
-
- public abstract async greet(): Promise<string>;
- public abstract async q(query: string): Promise<string>;
- public abstract export(): any;
-
- constructor(bot: BotCore) {
- super();
- this.bot = bot;
- }
-
- public static import(bot: BotCore, data: any) {
- if (data.type == 'guessing-game') return GuessingGameContext.import(bot, data.content);
- if (data.type == 'note') return NoteContext.import(bot, data.content);
- if (data.type == 'tl') return TlContext.import(bot, data.content);
- if (data.type == 'notifications') return NotificationsContext.import(bot, data.content);
- if (data.type == 'signin') return SigninContext.import(bot, data.content);
- return null;
- }
-}
-
-class SigninContext extends Context {
- private temporaryUser: ILocalUser = null;
-
- public async greet(): Promise<string> {
- return 'まずユーザー名を教えてください:';
- }
-
- public async q(query: string): Promise<string> {
- if (this.temporaryUser == null) {
- // Fetch user
- const user = await User.findOne({
- usernameLower: query.toLowerCase(),
- host: null
- }, {
- fields: {
- data: false
- }
- }) as ILocalUser;
-
- if (user === null) {
- return `${query}というユーザーは存在しませんでした... もう一度教えてください:`;
- } else {
- this.temporaryUser = user;
- this.emit('updated');
- return `パスワードを教えてください:`;
- }
- } else {
- // Compare password
- const same = await bcrypt.compare(query, this.temporaryUser.password);
-
- if (same) {
- this.bot.signin(this.temporaryUser);
- this.bot.clearContext();
- return `${getUserName(this.temporaryUser)}さん、おかえりなさい!`;
- } else {
- return `パスワードが違います... もう一度教えてください:`;
- }
- }
- }
-
- public export() {
- return {
- type: 'signin',
- content: {
- temporaryUser: this.temporaryUser
- }
- };
- }
-
- public static import(bot: BotCore, data: any) {
- const context = new SigninContext(bot);
- context.temporaryUser = data.temporaryUser;
- return context;
- }
-}
-
-class NoteContext extends Context {
- public async greet(): Promise<string> {
- return '内容:';
- }
-
- public async q(query: string): Promise<string> {
- await require('../endpoints/notes/create')({
- text: query
- }, this.bot.user);
- this.bot.clearContext();
- return '投稿しましたよ!';
- }
-
- public export() {
- return {
- type: 'note'
- };
- }
-
- public static import(bot: BotCore, data: any) {
- const context = new NoteContext(bot);
- return context;
- }
-}
-
-class TlContext extends Context {
- private next: string = null;
-
- public async greet(): Promise<string> {
- return await this.getTl();
- }
-
- public async q(query: string): Promise<string> {
- if (query == '次') {
- return await this.getTl();
- } else {
- this.bot.clearContext();
- return await this.bot.q(query);
- }
- }
-
- private async getTl() {
- const tl = await require('../endpoints/notes/timeline')({
- limit: 5,
- untilId: this.next ? this.next : undefined
- }, this.bot.user);
-
- if (tl.length > 0) {
- this.next = tl[tl.length - 1].id;
- this.emit('updated');
-
- const text = tl
- .map(note => `${getUserName(note.user)}\n「${getNoteSummary(note)}」`)
- .join('\n-----\n');
-
- return text;
- } else {
- return 'タイムラインに表示するものがありません...';
- }
- }
-
- public export() {
- return {
- type: 'tl',
- content: {
- next: this.next,
- }
- };
- }
-
- public static import(bot: BotCore, data: any) {
- const context = new TlContext(bot);
- context.next = data.next;
- return context;
- }
-}
-
-class NotificationsContext extends Context {
- private next: string = null;
-
- public async greet(): Promise<string> {
- return await this.getNotifications();
- }
-
- public async q(query: string): Promise<string> {
- if (query == '次') {
- return await this.getNotifications();
- } else {
- this.bot.clearContext();
- return await this.bot.q(query);
- }
- }
-
- private async getNotifications() {
- const notifications = await require('../endpoints/i/notifications')({
- limit: 5,
- untilId: this.next ? this.next : undefined
- }, this.bot.user);
-
- if (notifications.length > 0) {
- this.next = notifications[notifications.length - 1].id;
- this.emit('updated');
-
- const text = notifications
- .map(notification => getNotificationSummary(notification))
- .join('\n-----\n');
-
- return text;
- } else {
- return '通知はありません';
- }
- }
-
- public export() {
- return {
- type: 'notifications',
- content: {
- next: this.next,
- }
- };
- }
-
- public static import(bot: BotCore, data: any) {
- const context = new NotificationsContext(bot);
- context.next = data.next;
- return context;
- }
-}
-
-class GuessingGameContext extends Context {
- private secret: number;
- private history: number[] = [];
-
- public async greet(): Promise<string> {
- this.secret = Math.floor(Math.random() * 100);
- this.emit('updated');
- return '0~100の秘密の数を当ててみてください:';
- }
-
- public async q(query: string): Promise<string> {
- if (query == 'やめる') {
- this.bot.clearContext();
- return 'やめました。';
- }
-
- const guess = parseInt(query, 10);
-
- if (isNaN(guess)) {
- return '整数で推測してください。「やめる」と言うとゲームをやめます。';
- }
-
- const firsttime = this.history.indexOf(guess) === -1;
-
- this.history.push(guess);
- this.emit('updated');
-
- if (this.secret < guess) {
- return firsttime ? `${guess}よりも小さいですね` : `もう一度言いますが${guess}より小さいですよ`;
- } else if (this.secret > guess) {
- return firsttime ? `${guess}よりも大きいですね` : `もう一度言いますが${guess}より大きいですよ`;
- } else {
- this.bot.clearContext();
- return `正解です🎉 (${this.history.length}回目で当てました)`;
- }
- }
-
- public export() {
- return {
- type: 'guessing-game',
- content: {
- secret: this.secret,
- history: this.history
- }
- };
- }
-
- public static import(bot: BotCore, data: any) {
- const context = new GuessingGameContext(bot);
- context.secret = data.secret;
- context.history = data.history;
- return context;
- }
-}
diff --git a/src/server/api/bot/interfaces/line.ts b/src/server/api/bot/interfaces/line.ts
deleted file mode 100644
index 733315391d..0000000000
--- a/src/server/api/bot/interfaces/line.ts
+++ /dev/null
@@ -1,238 +0,0 @@
-import * as EventEmitter from 'events';
-import * as Router from 'koa-router';
-import * as request from 'request';
-import * as crypto from 'crypto';
-import User from '../../../../models/user';
-import config from '../../../../config';
-import BotCore from '../core';
-import _redis from '../../../../db/redis';
-import prominence = require('prominence');
-import getAcct from '../../../../acct/render';
-import parseAcct from '../../../../acct/parse';
-import getNoteSummary from '../../../../renderers/get-note-summary';
-import getUserName from '../../../../renderers/get-user-name';
-
-const redis = prominence(_redis);
-
-// SEE: https://developers.line.me/media/messaging-api/messages/sticker_list.pdf
-const stickers = [
- '297',
- '298',
- '299',
- '300',
- '301',
- '302',
- '303',
- '304',
- '305',
- '306',
- '307'
-];
-
-class LineBot extends BotCore {
- private replyToken: string;
-
- private reply(messages: any[]) {
- request.post({
- url: 'https://api.line.me/v2/bot/message/reply',
- headers: {
- 'Authorization': `Bearer ${config.line_bot.channel_access_token}`
- },
- json: {
- replyToken: this.replyToken,
- messages: messages
- }
- }, (err, res, body) => {
- if (err) {
- console.error(err);
- return;
- }
- });
- }
-
- public async react(ev: any): Promise<void> {
- this.replyToken = ev.replyToken;
-
- switch (ev.type) {
- // メッセージ
- case 'message':
- switch (ev.message.type) {
- // テキスト
- case 'text':
- const res = await this.q(ev.message.text);
- if (res == null) return;
- // 返信
- this.reply([{
- type: 'text',
- text: res
- }]);
- break;
-
- // スタンプ
- case 'sticker':
- // スタンプで返信
- this.reply([{
- type: 'sticker',
- packageId: '4',
- stickerId: stickers[Math.floor(Math.random() * stickers.length)]
- }]);
- break;
- }
- break;
-
- // noteback
- case 'noteback':
- const data = ev.noteback.data;
- const cmd = data.split('|')[0];
- const arg = data.split('|')[1];
- switch (cmd) {
- case 'showtl':
- this.showUserTimelineNoteback(arg);
- break;
- }
- break;
- }
- }
-
- public static import(data) {
- const bot = new LineBot();
- bot._import(data);
- return bot;
- }
-
- public async showUserCommand(q: string) {
- const user = await require('../../endpoints/users/show')(parseAcct(q.substr(1)), this.user);
-
- const acct = getAcct(user);
- const actions = [];
-
- actions.push({
- type: 'noteback',
- label: 'タイムラインを見る',
- data: `showtl|${user.id}`
- });
-
- if (user.twitter) {
- actions.push({
- type: 'uri',
- label: 'Twitterアカウントを見る',
- uri: `https://twitter.com/${user.twitter.screenName}`
- });
- }
-
- actions.push({
- type: 'uri',
- label: 'Webで見る',
- uri: `${config.url}/@${acct}`
- });
-
- this.reply([{
- type: 'template',
- altText: await super.showUserCommand(q),
- template: {
- type: 'buttons',
- thumbnailImageUrl: `${user.avatarUrl}?thumbnail&size=1024`,
- title: `${getUserName(user)} (@${acct})`,
- text: user.description || '(no description)',
- actions: actions
- }
- }]);
-
- return null;
- }
-
- public async showUserTimelineNoteback(userId: string) {
- const tl = await require('../../endpoints/users/notes')({
- userId: userId,
- limit: 5
- }, this.user);
-
- const text = `${getUserName(tl[0].user)}さんのタイムラインはこちらです:\n\n` + tl
- .map(note => getNoteSummary(note))
- .join('\n-----\n');
-
- this.reply([{
- type: 'text',
- text: text
- }]);
- }
-}
-
-const handler = new EventEmitter();
-
-handler.on('event', async (ev) => {
-
- const sourceId = ev.source.userId;
- const sessionId = `line-bot-sessions:${sourceId}`;
-
- const session = await redis.get(sessionId);
- let bot: LineBot;
-
- if (session == null) {
- const user = await User.findOne({
- host: null,
- 'line': {
- userId: sourceId
- }
- });
-
- bot = new LineBot(user);
-
- bot.on('signin', user => {
- User.update(user._id, {
- $set: {
- 'line': {
- userId: sourceId
- }
- }
- });
- });
-
- bot.on('signout', user => {
- User.update(user._id, {
- $set: {
- 'line': {
- userId: null
- }
- }
- });
- });
-
- redis.set(sessionId, JSON.stringify(bot.export()));
- } else {
- bot = LineBot.import(JSON.parse(session));
- }
-
- bot.on('updated', () => {
- redis.set(sessionId, JSON.stringify(bot.export()));
- });
-
- if (session != null) bot.refreshUser();
-
- bot.react(ev);
-});
-
-// Init router
-const router = new Router();
-
-if (config.line_bot) {
- router.post('/hooks/line', ctx => {
- const sig1 = ctx.headers['x-line-signature'];
-
- const hash = crypto.createHmac('SHA256', config.line_bot.channel_secret)
- .update(ctx.request.rawBody);
-
- const sig2 = hash.digest('base64');
-
- // シグネチャ比較
- if (sig1 === sig2) {
- ctx.request.body.events.forEach(ev => {
- handler.emit('event', ev);
- });
- } else {
- ctx.status = 400;
- }
- });
-}
-
-module.exports = router;
diff --git a/src/server/api/common/get-host-lower.ts b/src/server/api/common/get-host-lower.ts
index 550c233001..92704b4aa9 100644
--- a/src/server/api/common/get-host-lower.ts
+++ b/src/server/api/common/get-host-lower.ts
@@ -1,5 +1,5 @@
import { toUnicode } from 'punycode';
-export default host => {
+export default (host: string) => {
return toUnicode(host).toLowerCase();
};
diff --git a/src/server/api/endpoints/aggregation/posts.ts b/src/server/api/endpoints/aggregation/posts.ts
index d348cadae9..9ada9cd3f5 100644
--- a/src/server/api/endpoints/aggregation/posts.ts
+++ b/src/server/api/endpoints/aggregation/posts.ts
@@ -1,13 +1,10 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
import Note from '../../../../models/note';
/**
* Aggregate notes
*/
-module.exports = params => new Promise(async (res, rej) => {
+module.exports = (params: any) => new Promise(async (res, rej) => {
// Get 'limit' parameter
const [limit = 365, limitErr] = $.num.optional().range(1, 365).get(params.limit);
if (limitErr) return rej('invalid limit param');
diff --git a/src/server/api/endpoints/aggregation/users.ts b/src/server/api/endpoints/aggregation/users.ts
index b116c1454b..c084404d0a 100644
--- a/src/server/api/endpoints/aggregation/users.ts
+++ b/src/server/api/endpoints/aggregation/users.ts
@@ -1,13 +1,10 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
import User from '../../../../models/user';
/**
* Aggregate users
*/
-module.exports = params => new Promise(async (res, rej) => {
+module.exports = (params: any) => new Promise(async (res, rej) => {
// Get 'limit' parameter
const [limit = 365, limitErr] = $.num.optional().range(1, 365).get(params.limit);
if (limitErr) return rej('invalid limit param');
diff --git a/src/server/api/endpoints/aggregation/users/activity.ts b/src/server/api/endpoints/aggregation/users/activity.ts
index 9109487ac6..d4c716d65b 100644
--- a/src/server/api/endpoints/aggregation/users/activity.ts
+++ b/src/server/api/endpoints/aggregation/users/activity.ts
@@ -1,6 +1,3 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import User from '../../../../../models/user';
import Note from '../../../../../models/note';
@@ -10,7 +7,7 @@ import Note from '../../../../../models/note';
/**
* Aggregate activity of a user
*/
-module.exports = (params) => new Promise(async (res, rej) => {
+module.exports = (params: any) => new Promise(async (res, rej) => {
// Get 'limit' parameter
const [limit = 365, limitErr] = $.num.optional().range(1, 365).get(params.limit);
if (limitErr) return rej('invalid limit param');
@@ -73,13 +70,13 @@ module.exports = (params) => new Promise(async (res, rej) => {
} }
]);
- datas.forEach(data => {
+ datas.forEach((data: any) => {
data.date = data._id;
delete data._id;
- data.notes = (data.data.filter(x => x.type == 'note')[0] || { count: 0 }).count;
- data.renotes = (data.data.filter(x => x.type == 'renote')[0] || { count: 0 }).count;
- data.replies = (data.data.filter(x => x.type == 'reply')[0] || { count: 0 }).count;
+ data.notes = (data.data.filter((x: any) => x.type == 'note')[0] || { count: 0 }).count;
+ data.renotes = (data.data.filter((x: any) => x.type == 'renote')[0] || { count: 0 }).count;
+ data.replies = (data.data.filter((x: any) => x.type == 'reply')[0] || { count: 0 }).count;
delete data.data;
});
@@ -89,7 +86,7 @@ module.exports = (params) => new Promise(async (res, rej) => {
for (let i = 0; i < limit; i++) {
const day = new Date(new Date().setDate(new Date().getDate() - i));
- const data = datas.filter(d =>
+ const data = datas.filter((d: any) =>
d.date.year == day.getFullYear() && d.date.month == day.getMonth() + 1 && d.date.day == day.getDate()
)[0];
diff --git a/src/server/api/endpoints/aggregation/users/followers.ts b/src/server/api/endpoints/aggregation/users/followers.ts
index dfcaf8462f..847f376079 100644
--- a/src/server/api/endpoints/aggregation/users/followers.ts
+++ b/src/server/api/endpoints/aggregation/users/followers.ts
@@ -8,7 +8,7 @@ import FollowedLog from '../../../../../models/followed-log';
/**
* Aggregate followers of a user
*/
-module.exports = (params) => new Promise(async (res, rej) => {
+module.exports = (params: any) => new Promise(async (res, rej) => {
// Get 'userId' parameter
const [userId, userIdErr] = $.type(ID).get(params.userId);
if (userIdErr) return rej('invalid userId param');
diff --git a/src/server/api/endpoints/aggregation/users/following.ts b/src/server/api/endpoints/aggregation/users/following.ts
index 5f826fd71c..6c52752f98 100644
--- a/src/server/api/endpoints/aggregation/users/following.ts
+++ b/src/server/api/endpoints/aggregation/users/following.ts
@@ -8,7 +8,7 @@ import FollowingLog from '../../../../../models/following-log';
/**
* Aggregate following of a user
*/
-module.exports = (params) => new Promise(async (res, rej) => {
+module.exports = (params: any) => new Promise(async (res, rej) => {
// Get 'userId' parameter
const [userId, userIdErr] = $.type(ID).get(params.userId);
if (userIdErr) return rej('invalid userId param');
diff --git a/src/server/api/endpoints/aggregation/users/post.ts b/src/server/api/endpoints/aggregation/users/post.ts
index 11f9ef14cd..28ba1482bf 100644
--- a/src/server/api/endpoints/aggregation/users/post.ts
+++ b/src/server/api/endpoints/aggregation/users/post.ts
@@ -1,6 +1,3 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import User from '../../../../../models/user';
import Note from '../../../../../models/note';
@@ -8,7 +5,7 @@ import Note from '../../../../../models/note';
/**
* Aggregate note of a user
*/
-module.exports = (params) => new Promise(async (res, rej) => {
+module.exports = (params: any) => new Promise(async (res, rej) => {
// Get 'userId' parameter
const [userId, userIdErr] = $.type(ID).get(params.userId);
if (userIdErr) return rej('invalid userId param');
@@ -67,13 +64,13 @@ module.exports = (params) => new Promise(async (res, rej) => {
} }
]);
- datas.forEach(data => {
+ datas.forEach((data: any) => {
data.date = data._id;
delete data._id;
- data.notes = (data.data.filter(x => x.type == 'note')[0] || { count: 0 }).count;
- data.renotes = (data.data.filter(x => x.type == 'renote')[0] || { count: 0 }).count;
- data.replies = (data.data.filter(x => x.type == 'reply')[0] || { count: 0 }).count;
+ data.notes = (data.data.filter((x: any) => x.type == 'note')[0] || { count: 0 }).count;
+ data.renotes = (data.data.filter((x: any) => x.type == 'renote')[0] || { count: 0 }).count;
+ data.replies = (data.data.filter((x: any) => x.type == 'reply')[0] || { count: 0 }).count;
delete data.data;
});
@@ -83,7 +80,7 @@ module.exports = (params) => new Promise(async (res, rej) => {
for (let i = 0; i < 30; i++) {
const day = new Date(new Date().setDate(new Date().getDate() - i));
- const data = datas.filter(d =>
+ const data = datas.filter((d: any) =>
d.date.year == day.getFullYear() && d.date.month == day.getMonth() + 1 && d.date.day == day.getDate()
)[0];
diff --git a/src/server/api/endpoints/aggregation/users/reaction.ts b/src/server/api/endpoints/aggregation/users/reaction.ts
index 2de2840258..adb5acfb4e 100644
--- a/src/server/api/endpoints/aggregation/users/reaction.ts
+++ b/src/server/api/endpoints/aggregation/users/reaction.ts
@@ -1,17 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import User from '../../../../../models/user';
import Reaction from '../../../../../models/note-reaction';
/**
* Aggregate reaction of a user
- *
- * @param {any} params
- * @return {Promise<any>}
*/
-module.exports = (params) => new Promise(async (res, rej) => {
+module.exports = (params: any) => new Promise(async (res, rej) => {
// Get 'userId' parameter
const [userId, userIdErr] = $.type(ID).get(params.userId);
if (userIdErr) return rej('invalid userId param');
@@ -48,7 +42,7 @@ module.exports = (params) => new Promise(async (res, rej) => {
}}
]);
- datas.forEach(data => {
+ datas.forEach((data: any) => {
data.date = data._id;
delete data._id;
});
@@ -58,7 +52,7 @@ module.exports = (params) => new Promise(async (res, rej) => {
for (let i = 0; i < 30; i++) {
const day = new Date(new Date().setDate(new Date().getDate() - i));
- const data = datas.filter(d =>
+ const data = datas.filter((d: any) =>
d.date.year == day.getFullYear() && d.date.month == day.getMonth() + 1 && d.date.day == day.getDate()
)[0];
diff --git a/src/server/api/endpoints/app/create.ts b/src/server/api/endpoints/app/create.ts
index 553bd2381a..c7bc91a079 100644
--- a/src/server/api/endpoints/app/create.ts
+++ b/src/server/api/endpoints/app/create.ts
@@ -1,9 +1,7 @@
-/**
- * Module dependencies
- */
import rndstr from 'rndstr';
import $ from 'cafy';
import App, { isValidNameId, pack } from '../../../../models/app';
+import { ILocalUser } from '../../../../models/user';
/**
* @swagger
@@ -60,12 +58,8 @@ import App, { isValidNameId, pack } from '../../../../models/app';
/**
* Create an app
- *
- * @param {any} params
- * @param {any} user
- * @return {Promise<any>}
*/
-module.exports = async (params, user) => new Promise(async (res, rej) => {
+module.exports = async (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'nameId' parameter
const [nameId, nameIdErr] = $.str.pipe(isValidNameId).get(params.nameId);
if (nameIdErr) return rej('invalid nameId param');
diff --git a/src/server/api/endpoints/app/name_id/available.ts b/src/server/api/endpoints/app/name_id/available.ts
index 135bb7d2b4..58101a7e6a 100644
--- a/src/server/api/endpoints/app/name_id/available.ts
+++ b/src/server/api/endpoints/app/name_id/available.ts
@@ -40,7 +40,7 @@ import { isValidNameId } from '../../../../../models/app';
* @param {any} params
* @return {Promise<any>}
*/
-module.exports = async (params) => new Promise(async (res, rej) => {
+module.exports = async (params: any) => new Promise(async (res, rej) => {
// Get 'nameId' parameter
const [nameId, nameIdErr] = $.str.pipe(isValidNameId).get(params.nameId);
if (nameIdErr) return rej('invalid nameId param');
diff --git a/src/server/api/endpoints/app/show.ts b/src/server/api/endpoints/app/show.ts
index 8d742ab182..2b98a3f142 100644
--- a/src/server/api/endpoints/app/show.ts
+++ b/src/server/api/endpoints/app/show.ts
@@ -1,8 +1,6 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
-import App, { pack } from '../../../../models/app';
+import App, { pack, IApp } from '../../../../models/app';
+import { ILocalUser } from '../../../../models/user';
/**
* @swagger
@@ -37,7 +35,7 @@ import App, { pack } from '../../../../models/app';
/**
* Show an app
*/
-module.exports = (params, user, app) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser, app: IApp) => new Promise(async (res, rej) => {
const isSecure = user != null && app == null;
// Get 'appId' parameter
diff --git a/src/server/api/endpoints/auth/accept.ts b/src/server/api/endpoints/auth/accept.ts
index 695fbb0803..fc6cbc473d 100644
--- a/src/server/api/endpoints/auth/accept.ts
+++ b/src/server/api/endpoints/auth/accept.ts
@@ -1,12 +1,10 @@
-/**
- * Module dependencies
- */
import rndstr from 'rndstr';
const crypto = require('crypto');
import $ from 'cafy';
import App from '../../../../models/app';
import AuthSess from '../../../../models/auth-session';
import AccessToken from '../../../../models/access-token';
+import { ILocalUser } from '../../../../models/user';
/**
* @swagger
@@ -33,12 +31,8 @@ import AccessToken from '../../../../models/access-token';
/**
* Accept
- *
- * @param {any} params
- * @param {any} user
- * @return {Promise<any>}
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'token' parameter
const [token, tokenErr] = $.str.get(params.token);
if (tokenErr) return rej('invalid token param');
diff --git a/src/server/api/endpoints/auth/session/generate.ts b/src/server/api/endpoints/auth/session/generate.ts
index d649a8d902..5a4d99ff3b 100644
--- a/src/server/api/endpoints/auth/session/generate.ts
+++ b/src/server/api/endpoints/auth/session/generate.ts
@@ -44,7 +44,7 @@ import config from '../../../../../config';
* @param {any} params
* @return {Promise<any>}
*/
-module.exports = (params) => new Promise(async (res, rej) => {
+module.exports = (params: any) => new Promise(async (res, rej) => {
// Get 'appSecret' parameter
const [appSecret, appSecretErr] = $.str.get(params.appSecret);
if (appSecretErr) return rej('invalid appSecret param');
diff --git a/src/server/api/endpoints/auth/session/show.ts b/src/server/api/endpoints/auth/session/show.ts
index 434cc264a0..3d3b6bbf61 100644
--- a/src/server/api/endpoints/auth/session/show.ts
+++ b/src/server/api/endpoints/auth/session/show.ts
@@ -1,8 +1,6 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
import AuthSess, { pack } from '../../../../../models/auth-session';
+import { ILocalUser } from '../../../../../models/user';
/**
* @swagger
@@ -46,12 +44,8 @@ import AuthSess, { pack } from '../../../../../models/auth-session';
/**
* Show a session
- *
- * @param {any} params
- * @param {any} user
- * @return {Promise<any>}
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'token' parameter
const [token, tokenErr] = $.str.get(params.token);
if (tokenErr) return rej('invalid token param');
diff --git a/src/server/api/endpoints/auth/session/userkey.ts b/src/server/api/endpoints/auth/session/userkey.ts
index 3026b477f1..3ea48fbe34 100644
--- a/src/server/api/endpoints/auth/session/userkey.ts
+++ b/src/server/api/endpoints/auth/session/userkey.ts
@@ -49,7 +49,7 @@ import { pack } from '../../../../../models/user';
* @param {any} params
* @return {Promise<any>}
*/
-module.exports = (params) => new Promise(async (res, rej) => {
+module.exports = (params: any) => new Promise(async (res, rej) => {
// Get 'appSecret' parameter
const [appSecret, appSecretErr] = $.str.get(params.appSecret);
if (appSecretErr) return rej('invalid appSecret param');
diff --git a/src/server/api/endpoints/drive.ts b/src/server/api/endpoints/drive.ts
index 26944dbc15..9caad273c8 100644
--- a/src/server/api/endpoints/drive.ts
+++ b/src/server/api/endpoints/drive.ts
@@ -1,9 +1,10 @@
import DriveFile from '../../../models/drive-file';
+import { ILocalUser } from '../../../models/user';
/**
* Get drive information
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Calculate drive usage
const usage = await DriveFile
.aggregate([{
diff --git a/src/server/api/endpoints/drive/files.ts b/src/server/api/endpoints/drive/files.ts
index 0f0e3d65a8..efce750747 100644
--- a/src/server/api/endpoints/drive/files.ts
+++ b/src/server/api/endpoints/drive/files.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import DriveFile, { pack } from '../../../../models/drive-file';
+import { ILocalUser } from '../../../../models/user';
/**
* Get drive files
*/
-module.exports = async (params, user, app) => {
+module.exports = async (params: any, user: ILocalUser) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) throw 'invalid limit param';
diff --git a/src/server/api/endpoints/drive/files/create.ts b/src/server/api/endpoints/drive/files/create.ts
index dd748d6bba..db2626af09 100644
--- a/src/server/api/endpoints/drive/files/create.ts
+++ b/src/server/api/endpoints/drive/files/create.ts
@@ -1,15 +1,13 @@
-/**
- * Module dependencies
- */
import * as fs from 'fs';
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import { validateFileName, pack } from '../../../../../models/drive-file';
import create from '../../../../../services/drive/add-file';
+import { ILocalUser } from '../../../../../models/user';
/**
* Create a file
*/
-module.exports = async (file, params, user): Promise<any> => {
+module.exports = async (file: any, params: any, user: ILocalUser): Promise<any> => {
if (file == null) {
throw 'file is required';
}
diff --git a/src/server/api/endpoints/drive/files/delete.ts b/src/server/api/endpoints/drive/files/delete.ts
index a722b4e825..17eb0eb4b9 100644
--- a/src/server/api/endpoints/drive/files/delete.ts
+++ b/src/server/api/endpoints/drive/files/delete.ts
@@ -2,11 +2,12 @@ import $ from 'cafy'; import ID from '../../../../../cafy-id';
import DriveFile from '../../../../../models/drive-file';
import del from '../../../../../services/drive/delete-file';
import { publishDriveStream } from '../../../../../publishers/stream';
+import { ILocalUser } from '../../../../../models/user';
/**
* Delete a file
*/
-module.exports = async (params, user) => {
+module.exports = async (params: any, user: ILocalUser) => {
// Get 'fileId' parameter
const [fileId, fileIdErr] = $.type(ID).get(params.fileId);
if (fileIdErr) throw 'invalid fileId param';
diff --git a/src/server/api/endpoints/drive/files/find.ts b/src/server/api/endpoints/drive/files/find.ts
index 98165990fe..75ab91f0a1 100644
--- a/src/server/api/endpoints/drive/files/find.ts
+++ b/src/server/api/endpoints/drive/files/find.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import DriveFile, { pack } from '../../../../../models/drive-file';
+import { ILocalUser } from '../../../../../models/user';
/**
* Find a file(s)
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'name' parameter
const [name, nameErr] = $.str.get(params.name);
if (nameErr) return rej('invalid name param');
diff --git a/src/server/api/endpoints/drive/files/show.ts b/src/server/api/endpoints/drive/files/show.ts
index c7efda7ab0..e7dca486c5 100644
--- a/src/server/api/endpoints/drive/files/show.ts
+++ b/src/server/api/endpoints/drive/files/show.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import DriveFile, { pack } from '../../../../../models/drive-file';
+import { ILocalUser } from '../../../../../models/user';
/**
* Show a file
*/
-module.exports = async (params, user) => {
+module.exports = async (params: any, user: ILocalUser) => {
// Get 'fileId' parameter
const [fileId, fileIdErr] = $.type(ID).get(params.fileId);
if (fileIdErr) throw 'invalid fileId param';
diff --git a/src/server/api/endpoints/drive/files/update.ts b/src/server/api/endpoints/drive/files/update.ts
index 12fa8e025d..825683b214 100644
--- a/src/server/api/endpoints/drive/files/update.ts
+++ b/src/server/api/endpoints/drive/files/update.ts
@@ -1,15 +1,13 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import DriveFolder from '../../../../../models/drive-folder';
import DriveFile, { validateFileName, pack } from '../../../../../models/drive-file';
import { publishDriveStream } from '../../../../../publishers/stream';
+import { ILocalUser } from '../../../../../models/user';
/**
* Update a file
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'fileId' parameter
const [fileId, fileIdErr] = $.type(ID).get(params.fileId);
if (fileIdErr) return rej('invalid fileId param');
diff --git a/src/server/api/endpoints/drive/folders.ts b/src/server/api/endpoints/drive/folders.ts
index bc6c50eb99..fac9780325 100644
--- a/src/server/api/endpoints/drive/folders.ts
+++ b/src/server/api/endpoints/drive/folders.ts
@@ -7,7 +7,7 @@ import DriveFolder, { pack } from '../../../../models/drive-folder';
/**
* Get drive folders
*/
-module.exports = (params, user, app) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser, app: IApp) => new Promise(async (res, rej) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) return rej('invalid limit param');
diff --git a/src/server/api/endpoints/drive/folders/create.ts b/src/server/api/endpoints/drive/folders/create.ts
index 62e3b6f6e8..8f06b0f668 100644
--- a/src/server/api/endpoints/drive/folders/create.ts
+++ b/src/server/api/endpoints/drive/folders/create.ts
@@ -1,14 +1,12 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import DriveFolder, { isValidFolderName, pack } from '../../../../../models/drive-folder';
import { publishDriveStream } from '../../../../../publishers/stream';
+import { ILocalUser } from '../../../../../models/user';
/**
* Create drive folder
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'name' parameter
const [name = '無題のフォルダー', nameErr] = $.str.optional().pipe(isValidFolderName).get(params.name);
if (nameErr) return rej('invalid name param');
diff --git a/src/server/api/endpoints/drive/folders/find.ts b/src/server/api/endpoints/drive/folders/find.ts
index 9703d9e99d..b3238b5c32 100644
--- a/src/server/api/endpoints/drive/folders/find.ts
+++ b/src/server/api/endpoints/drive/folders/find.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import DriveFolder, { pack } from '../../../../../models/drive-folder';
+import { ILocalUser } from '../../../../../models/user';
/**
* Find a folder(s)
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'name' parameter
const [name, nameErr] = $.str.get(params.name);
if (nameErr) return rej('invalid name param');
diff --git a/src/server/api/endpoints/drive/folders/show.ts b/src/server/api/endpoints/drive/folders/show.ts
index 44f1889001..c9b4930a76 100644
--- a/src/server/api/endpoints/drive/folders/show.ts
+++ b/src/server/api/endpoints/drive/folders/show.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import DriveFolder, { pack } from '../../../../../models/drive-folder';
+import { ILocalUser } from '../../../../../models/user';
/**
* Show a folder
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'folderId' parameter
const [folderId, folderIdErr] = $.type(ID).get(params.folderId);
if (folderIdErr) return rej('invalid folderId param');
diff --git a/src/server/api/endpoints/drive/folders/update.ts b/src/server/api/endpoints/drive/folders/update.ts
index e24d8a14cd..f126c09f5b 100644
--- a/src/server/api/endpoints/drive/folders/update.ts
+++ b/src/server/api/endpoints/drive/folders/update.ts
@@ -1,14 +1,12 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import DriveFolder, { isValidFolderName, pack } from '../../../../../models/drive-folder';
import { publishDriveStream } from '../../../../../publishers/stream';
+import { ILocalUser } from '../../../../../models/user';
/**
* Update a folder
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'folderId' parameter
const [folderId, folderIdErr] = $.type(ID).get(params.folderId);
if (folderIdErr) return rej('invalid folderId param');
@@ -48,7 +46,7 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
}
// Check if the circular reference will occur
- async function checkCircle(folderId) {
+ async function checkCircle(folderId: any): Promise<boolean> {
// Fetch folder
const folder2 = await DriveFolder.findOne({
_id: folderId
diff --git a/src/server/api/endpoints/drive/stream.ts b/src/server/api/endpoints/drive/stream.ts
index 8cb3a99b42..515f74645a 100644
--- a/src/server/api/endpoints/drive/stream.ts
+++ b/src/server/api/endpoints/drive/stream.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import DriveFile, { pack } from '../../../../models/drive-file';
+import { ILocalUser } from '../../../../models/user';
/**
* Get drive stream
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) return rej('invalid limit param');
diff --git a/src/server/api/endpoints/following/create.ts b/src/server/api/endpoints/following/create.ts
index b9610658d1..3e45b8da53 100644
--- a/src/server/api/endpoints/following/create.ts
+++ b/src/server/api/endpoints/following/create.ts
@@ -1,15 +1,12 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
-import User, { pack } from '../../../../models/user';
+import User, { pack, ILocalUser } from '../../../../models/user';
import Following from '../../../../models/following';
import create from '../../../../services/following/create';
/**
* Follow a user
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
const follower = user;
// Get 'userId' parameter
diff --git a/src/server/api/endpoints/following/delete.ts b/src/server/api/endpoints/following/delete.ts
index 4fcdaf5a82..0af8813cf9 100644
--- a/src/server/api/endpoints/following/delete.ts
+++ b/src/server/api/endpoints/following/delete.ts
@@ -1,15 +1,12 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
-import User, { pack } from '../../../../models/user';
+import User, { pack, ILocalUser } from '../../../../models/user';
import Following from '../../../../models/following';
import deleteFollowing from '../../../../services/following/delete';
/**
* Unfollow a user
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
const follower = user;
// Get 'userId' parameter
diff --git a/src/server/api/endpoints/following/requests/accept.ts b/src/server/api/endpoints/following/requests/accept.ts
index 705d3b161a..a09e32e4d9 100644
--- a/src/server/api/endpoints/following/requests/accept.ts
+++ b/src/server/api/endpoints/following/requests/accept.ts
@@ -1,11 +1,11 @@
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import acceptFollowRequest from '../../../../../services/following/requests/accept';
-import User from '../../../../../models/user';
+import User, { ILocalUser } from '../../../../../models/user';
/**
* Accept a follow request
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'userId' parameter
const [followerId, followerIdErr] = $.type(ID).get(params.userId);
if (followerIdErr) return rej('invalid userId param');
diff --git a/src/server/api/endpoints/following/requests/cancel.ts b/src/server/api/endpoints/following/requests/cancel.ts
index 388a54890b..f2a40854c2 100644
--- a/src/server/api/endpoints/following/requests/cancel.ts
+++ b/src/server/api/endpoints/following/requests/cancel.ts
@@ -1,11 +1,11 @@
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import cancelFollowRequest from '../../../../../services/following/requests/cancel';
-import User, { pack } from '../../../../../models/user';
+import User, { pack, ILocalUser } from '../../../../../models/user';
/**
* Cancel a follow request
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'userId' parameter
const [followeeId, followeeIdErr] = $.type(ID).get(params.userId);
if (followeeIdErr) return rej('invalid userId param');
diff --git a/src/server/api/endpoints/following/requests/list.ts b/src/server/api/endpoints/following/requests/list.ts
index e8364335d1..287c5a8e46 100644
--- a/src/server/api/endpoints/following/requests/list.ts
+++ b/src/server/api/endpoints/following/requests/list.ts
@@ -1,10 +1,11 @@
//import $ from 'cafy'; import ID from '../../../../../cafy-id';
import FollowRequest, { pack } from '../../../../../models/follow-request';
+import { ILocalUser } from '../../../../../models/user';
/**
* Get all pending received follow requests
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
const reqs = await FollowRequest.find({
followeeId: user._id
});
diff --git a/src/server/api/endpoints/following/requests/reject.ts b/src/server/api/endpoints/following/requests/reject.ts
index 1cfb562b55..69dddf1355 100644
--- a/src/server/api/endpoints/following/requests/reject.ts
+++ b/src/server/api/endpoints/following/requests/reject.ts
@@ -1,11 +1,11 @@
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import rejectFollowRequest from '../../../../../services/following/requests/reject';
-import User from '../../../../../models/user';
+import User, { ILocalUser } from '../../../../../models/user';
/**
* Reject a follow request
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'userId' parameter
const [followerId, followerIdErr] = $.type(ID).get(params.userId);
if (followerIdErr) return rej('invalid userId param');
diff --git a/src/server/api/endpoints/following/stalk.ts b/src/server/api/endpoints/following/stalk.ts
index f0bc8cbdfc..b9d19d57b4 100644
--- a/src/server/api/endpoints/following/stalk.ts
+++ b/src/server/api/endpoints/following/stalk.ts
@@ -1,10 +1,11 @@
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Following from '../../../../models/following';
+import { ILocalUser } from '../../../../models/user';
/**
* Stalk a user
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
const follower = user;
// Get 'userId' parameter
diff --git a/src/server/api/endpoints/following/unstalk.ts b/src/server/api/endpoints/following/unstalk.ts
index 0d0a018c34..255f22ca1f 100644
--- a/src/server/api/endpoints/following/unstalk.ts
+++ b/src/server/api/endpoints/following/unstalk.ts
@@ -1,10 +1,11 @@
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Following from '../../../../models/following';
+import { ILocalUser } from '../../../../models/user';
/**
* Unstalk a user
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
const follower = user;
// Get 'userId' parameter
diff --git a/src/server/api/endpoints/hashtags/trend.ts b/src/server/api/endpoints/hashtags/trend.ts
index 947dd6e448..17af9d6a9a 100644
--- a/src/server/api/endpoints/hashtags/trend.ts
+++ b/src/server/api/endpoints/hashtags/trend.ts
@@ -45,7 +45,10 @@ module.exports = () => new Promise(async (res, rej) => {
return res([]);
}
- const tags = [];
+ const tags: Array<{
+ name: string;
+ count: number;
+ }> = [];
// カウント
data.map(x => x._id).forEach(x => {
diff --git a/src/server/api/endpoints/i.ts b/src/server/api/endpoints/i.ts
index 379c3c4d88..5c769a02fd 100644
--- a/src/server/api/endpoints/i.ts
+++ b/src/server/api/endpoints/i.ts
@@ -1,12 +1,10 @@
-/**
- * Module dependencies
- */
-import User, { pack } from '../../../models/user';
+import User, { pack, ILocalUser } from '../../../models/user';
+import { IApp } from '../../../models/app';
/**
* Show myself
*/
-module.exports = (params, user, app) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser, app: IApp) => new Promise(async (res, rej) => {
const isSecure = user != null && app == null;
// Serialize
diff --git a/src/server/api/endpoints/i/2fa/done.ts b/src/server/api/endpoints/i/2fa/done.ts
index 1a2706aa84..61f13c4c61 100644
--- a/src/server/api/endpoints/i/2fa/done.ts
+++ b/src/server/api/endpoints/i/2fa/done.ts
@@ -1,11 +1,8 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
import * as speakeasy from 'speakeasy';
-import User from '../../../../../models/user';
+import User, { ILocalUser } from '../../../../../models/user';
-module.exports = async (params, user) => new Promise(async (res, rej) => {
+module.exports = async (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'token' parameter
const [token, tokenErr] = $.str.get(params.token);
if (tokenErr) return rej('invalid token param');
diff --git a/src/server/api/endpoints/i/2fa/register.ts b/src/server/api/endpoints/i/2fa/register.ts
index d314e1a280..d05892c84b 100644
--- a/src/server/api/endpoints/i/2fa/register.ts
+++ b/src/server/api/endpoints/i/2fa/register.ts
@@ -1,14 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
import * as speakeasy from 'speakeasy';
import * as QRCode from 'qrcode';
-import User from '../../../../../models/user';
+import User, { ILocalUser } from '../../../../../models/user';
import config from '../../../../../config';
-module.exports = async (params, user) => new Promise(async (res, rej) => {
+module.exports = async (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'password' parameter
const [password, passwordErr] = $.str.get(params.password);
if (passwordErr) return rej('invalid password param');
diff --git a/src/server/api/endpoints/i/2fa/unregister.ts b/src/server/api/endpoints/i/2fa/unregister.ts
index 336a3564ab..fc197cb1e4 100644
--- a/src/server/api/endpoints/i/2fa/unregister.ts
+++ b/src/server/api/endpoints/i/2fa/unregister.ts
@@ -1,11 +1,8 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
-import User from '../../../../../models/user';
+import User, { ILocalUser } from '../../../../../models/user';
-module.exports = async (params, user) => new Promise(async (res, rej) => {
+module.exports = async (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'password' parameter
const [password, passwordErr] = $.str.get(params.password);
if (passwordErr) return rej('invalid password param');
diff --git a/src/server/api/endpoints/i/authorized_apps.ts b/src/server/api/endpoints/i/authorized_apps.ts
index d15bd67bf2..cfc93c1518 100644
--- a/src/server/api/endpoints/i/authorized_apps.ts
+++ b/src/server/api/endpoints/i/authorized_apps.ts
@@ -1,14 +1,12 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
import AccessToken from '../../../../models/access-token';
import { pack } from '../../../../models/app';
+import { ILocalUser } from '../../../../models/user';
/**
* Get authorized apps of my account
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) return rej('invalid limit param');
diff --git a/src/server/api/endpoints/i/change_password.ts b/src/server/api/endpoints/i/change_password.ts
index a1a1a43406..9851fa895a 100644
--- a/src/server/api/endpoints/i/change_password.ts
+++ b/src/server/api/endpoints/i/change_password.ts
@@ -1,14 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
-import User from '../../../../models/user';
+import User, { ILocalUser } from '../../../../models/user';
/**
* Change password
*/
-module.exports = async (params, user) => new Promise(async (res, rej) => {
+module.exports = async (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'currentPasword' parameter
const [currentPassword, currentPasswordErr] = $.str.get(params.currentPasword);
if (currentPasswordErr) return rej('invalid currentPasword param');
diff --git a/src/server/api/endpoints/i/favorites.ts b/src/server/api/endpoints/i/favorites.ts
index 23517baaff..dc343afaed 100644
--- a/src/server/api/endpoints/i/favorites.ts
+++ b/src/server/api/endpoints/i/favorites.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Favorite, { pack } from '../../../../models/favorite';
+import { ILocalUser } from '../../../../models/user';
/**
* Get favorited notes
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) return rej('invalid limit param');
diff --git a/src/server/api/endpoints/i/notifications.ts b/src/server/api/endpoints/i/notifications.ts
index ba9c47508c..ce283fe48f 100644
--- a/src/server/api/endpoints/i/notifications.ts
+++ b/src/server/api/endpoints/i/notifications.ts
@@ -1,17 +1,15 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Notification from '../../../../models/notification';
import Mute from '../../../../models/mute';
import { pack } from '../../../../models/notification';
import { getFriendIds } from '../../common/get-friends';
import read from '../../common/read-notification';
+import { ILocalUser } from '../../../../models/user';
/**
* Get notifications
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'following' parameter
const [following = false, followingError] =
$.bool.optional().get(params.following);
diff --git a/src/server/api/endpoints/i/pin.ts b/src/server/api/endpoints/i/pin.ts
index 423f0ac4ae..7f4a45e1f5 100644
--- a/src/server/api/endpoints/i/pin.ts
+++ b/src/server/api/endpoints/i/pin.ts
@@ -1,15 +1,12 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
-import User from '../../../../models/user';
+import User, { ILocalUser } from '../../../../models/user';
import Note from '../../../../models/note';
import { pack } from '../../../../models/user';
/**
* Pin note
*/
-module.exports = async (params, user) => new Promise(async (res, rej) => {
+module.exports = async (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'noteId' parameter
const [noteId, noteIdErr] = $.type(ID).get(params.noteId);
if (noteIdErr) return rej('invalid noteId param');
diff --git a/src/server/api/endpoints/i/regenerate_token.ts b/src/server/api/endpoints/i/regenerate_token.ts
index 6e1e571297..3ffab5428e 100644
--- a/src/server/api/endpoints/i/regenerate_token.ts
+++ b/src/server/api/endpoints/i/regenerate_token.ts
@@ -1,16 +1,13 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
import * as bcrypt from 'bcryptjs';
-import User from '../../../../models/user';
+import User, { ILocalUser } from '../../../../models/user';
import event from '../../../../publishers/stream';
import generateUserToken from '../../common/generate-native-user-token';
/**
* Regenerate native token
*/
-module.exports = async (params, user) => new Promise(async (res, rej) => {
+module.exports = async (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'password' parameter
const [password, passwordErr] = $.str.get(params.password);
if (passwordErr) return rej('invalid password param');
diff --git a/src/server/api/endpoints/i/signin_history.ts b/src/server/api/endpoints/i/signin_history.ts
index 63a74b41b1..4ab9881f34 100644
--- a/src/server/api/endpoints/i/signin_history.ts
+++ b/src/server/api/endpoints/i/signin_history.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Signin, { pack } from '../../../../models/signin';
+import { ILocalUser } from '../../../../models/user';
/**
* Get signin history of my account
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) return rej('invalid limit param');
diff --git a/src/server/api/endpoints/i/update.ts b/src/server/api/endpoints/i/update.ts
index 1a1da997c9..57b050ebc4 100644
--- a/src/server/api/endpoints/i/update.ts
+++ b/src/server/api/endpoints/i/update.ts
@@ -1,16 +1,14 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
-import User, { isValidName, isValidDescription, isValidLocation, isValidBirthday, pack } from '../../../../models/user';
+import User, { isValidName, isValidDescription, isValidLocation, isValidBirthday, pack, ILocalUser } from '../../../../models/user';
import event from '../../../../publishers/stream';
import DriveFile from '../../../../models/drive-file';
import acceptAllFollowRequests from '../../../../services/following/requests/accept-all';
+import { IApp } from '../../../../models/app';
/**
* Update myself
*/
-module.exports = async (params, user, app) => new Promise(async (res, rej) => {
+module.exports = async (params: any, user: ILocalUser, app: IApp) => new Promise(async (res, rej) => {
const isSecure = user != null && app == null;
const updates = {} as any;
diff --git a/src/server/api/endpoints/i/update_client_setting.ts b/src/server/api/endpoints/i/update_client_setting.ts
index e91d7565fd..6d6e8ed24a 100644
--- a/src/server/api/endpoints/i/update_client_setting.ts
+++ b/src/server/api/endpoints/i/update_client_setting.ts
@@ -1,14 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
-import User from '../../../../models/user';
+import User, { ILocalUser } from '../../../../models/user';
import event from '../../../../publishers/stream';
/**
* Update myself
*/
-module.exports = async (params, user) => new Promise(async (res, rej) => {
+module.exports = async (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'name' parameter
const [name, nameErr] = $.str.get(params.name);
if (nameErr) return rej('invalid name param');
@@ -17,7 +14,7 @@ module.exports = async (params, user) => new Promise(async (res, rej) => {
const [value, valueErr] = $.any.nullable().get(params.value);
if (valueErr) return rej('invalid value param');
- const x = {};
+ const x: any = {};
x[`clientSettings.${name}`] = value;
await User.update(user._id, {
diff --git a/src/server/api/endpoints/i/update_home.ts b/src/server/api/endpoints/i/update_home.ts
index 48f6dbbb7a..511a647d88 100644
--- a/src/server/api/endpoints/i/update_home.ts
+++ b/src/server/api/endpoints/i/update_home.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import User from '../../../../models/user';
+import User, { ILocalUser } from '../../../../models/user';
import event from '../../../../publishers/stream';
-module.exports = async (params, user) => new Promise(async (res, rej) => {
+module.exports = async (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'home' parameter
const [home, homeErr] = $.arr(
$.obj.strict()
diff --git a/src/server/api/endpoints/i/update_mobile_home.ts b/src/server/api/endpoints/i/update_mobile_home.ts
index d285a0a72d..b1f25624fd 100644
--- a/src/server/api/endpoints/i/update_mobile_home.ts
+++ b/src/server/api/endpoints/i/update_mobile_home.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import User from '../../../../models/user';
+import User, { ILocalUser } from '../../../../models/user';
import event from '../../../../publishers/stream';
-module.exports = async (params, user) => new Promise(async (res, rej) => {
+module.exports = async (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'home' parameter
const [home, homeErr] = $.arr(
$.obj.strict()
diff --git a/src/server/api/endpoints/i/update_widget.ts b/src/server/api/endpoints/i/update_widget.ts
index b37761bde1..82bb04d1f4 100644
--- a/src/server/api/endpoints/i/update_widget.ts
+++ b/src/server/api/endpoints/i/update_widget.ts
@@ -1,8 +1,8 @@
import $ from 'cafy';
-import User from '../../../../models/user';
+import User, { ILocalUser } from '../../../../models/user';
import event from '../../../../publishers/stream';
-module.exports = async (params, user) => new Promise(async (res, rej) => {
+module.exports = async (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'id' parameter
const [id, idErr] = $.str.get(params.id);
if (idErr) return rej('invalid id param');
@@ -18,7 +18,7 @@ module.exports = async (params, user) => new Promise(async (res, rej) => {
//#region Desktop home
if (widget == null && user.clientSettings.home) {
const desktopHome = user.clientSettings.home;
- widget = desktopHome.find(w => w.id == id);
+ widget = desktopHome.find((w: any) => w.id == id);
if (widget) {
widget.data = data;
@@ -34,7 +34,7 @@ module.exports = async (params, user) => new Promise(async (res, rej) => {
//#region Mobile home
if (widget == null && user.clientSettings.mobileHome) {
const mobileHome = user.clientSettings.mobileHome;
- widget = mobileHome.find(w => w.id == id);
+ widget = mobileHome.find((w: any) => w.id == id);
if (widget) {
widget.data = data;
@@ -50,8 +50,8 @@ module.exports = async (params, user) => new Promise(async (res, rej) => {
//#region Deck
if (widget == null && user.clientSettings.deck && user.clientSettings.deck.columns) {
const deck = user.clientSettings.deck;
- deck.columns.filter(c => c.type == 'widgets').forEach(c => {
- c.widgets.forEach(w => {
+ deck.columns.filter((c: any) => c.type == 'widgets').forEach((c: any) => {
+ c.widgets.forEach((w: any) => {
if (w.id == id) widget = w;
});
});
diff --git a/src/server/api/endpoints/messaging/history.ts b/src/server/api/endpoints/messaging/history.ts
index ec97642f17..713ba9dd7f 100644
--- a/src/server/api/endpoints/messaging/history.ts
+++ b/src/server/api/endpoints/messaging/history.ts
@@ -1,15 +1,13 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
import History from '../../../../models/messaging-history';
import Mute from '../../../../models/mute';
import { pack } from '../../../../models/messaging-message';
+import { ILocalUser } from '../../../../models/user';
/**
* Show messaging history
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) return rej('invalid limit param');
diff --git a/src/server/api/endpoints/messaging/messages.ts b/src/server/api/endpoints/messaging/messages.ts
index 9c3a48334b..3eb20ec06b 100644
--- a/src/server/api/endpoints/messaging/messages.ts
+++ b/src/server/api/endpoints/messaging/messages.ts
@@ -1,13 +1,13 @@
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Message from '../../../../models/messaging-message';
-import User from '../../../../models/user';
+import User, { ILocalUser } from '../../../../models/user';
import { pack } from '../../../../models/messaging-message';
import read from '../../common/read-messaging-message';
/**
* Get messages
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'userId' parameter
const [recipientId, recipientIdErr] = $.type(ID).get(params.userId);
if (recipientIdErr) return rej('invalid userId param');
diff --git a/src/server/api/endpoints/messaging/messages/create.ts b/src/server/api/endpoints/messaging/messages/create.ts
index 41238de1e1..b3e4f6a8cd 100644
--- a/src/server/api/endpoints/messaging/messages/create.ts
+++ b/src/server/api/endpoints/messaging/messages/create.ts
@@ -1,11 +1,8 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import Message from '../../../../../models/messaging-message';
import { isValidText } from '../../../../../models/messaging-message';
import History from '../../../../../models/messaging-history';
-import User from '../../../../../models/user';
+import User, { ILocalUser } from '../../../../../models/user';
import Mute from '../../../../../models/mute';
import DriveFile from '../../../../../models/drive-file';
import { pack } from '../../../../../models/messaging-message';
@@ -17,7 +14,7 @@ import config from '../../../../../config';
/**
* Create a message
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'userId' parameter
const [recipientId, recipientIdErr] = $.type(ID).get(params.userId);
if (recipientIdErr) return rej('invalid userId param');
diff --git a/src/server/api/endpoints/meta.ts b/src/server/api/endpoints/meta.ts
index 0e9ecf47df..ce460d0b8b 100644
--- a/src/server/api/endpoints/meta.ts
+++ b/src/server/api/endpoints/meta.ts
@@ -38,7 +38,7 @@ const client = require('../../../../built/client/meta.json');
/**
* Show core info
*/
-module.exports = (params) => new Promise(async (res, rej) => {
+module.exports = (params: any) => new Promise(async (res, rej) => {
const meta: any = (await Meta.findOne()) || {};
res({
diff --git a/src/server/api/endpoints/mute/create.ts b/src/server/api/endpoints/mute/create.ts
index 534020c671..415745e2c3 100644
--- a/src/server/api/endpoints/mute/create.ts
+++ b/src/server/api/endpoints/mute/create.ts
@@ -1,14 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
-import User from '../../../../models/user';
+import User, { ILocalUser } from '../../../../models/user';
import Mute from '../../../../models/mute';
/**
* Mute a user
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
const muter = user;
// Get 'userId' parameter
diff --git a/src/server/api/endpoints/mute/delete.ts b/src/server/api/endpoints/mute/delete.ts
index 949aff64ba..2d1d286585 100644
--- a/src/server/api/endpoints/mute/delete.ts
+++ b/src/server/api/endpoints/mute/delete.ts
@@ -1,14 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
-import User from '../../../../models/user';
+import User, { ILocalUser } from '../../../../models/user';
import Mute from '../../../../models/mute';
/**
* Unmute a user
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
const muter = user;
// Get 'userId' parameter
diff --git a/src/server/api/endpoints/mute/list.ts b/src/server/api/endpoints/mute/list.ts
index cf89f7e959..8b0171be33 100644
--- a/src/server/api/endpoints/mute/list.ts
+++ b/src/server/api/endpoints/mute/list.ts
@@ -1,15 +1,12 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Mute from '../../../../models/mute';
-import { pack } from '../../../../models/user';
+import { pack, ILocalUser } from '../../../../models/user';
import { getFriendIds } from '../../common/get-friends';
/**
* Get muted users of a user
*/
-module.exports = (params, me) => new Promise(async (res, rej) => {
+module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
// Get 'iknow' parameter
const [iknow = false, iknowErr] = $.bool.optional().get(params.iknow);
if (iknowErr) return rej('invalid iknow param');
diff --git a/src/server/api/endpoints/my/apps.ts b/src/server/api/endpoints/my/apps.ts
index 086e0b8965..7687afd0c7 100644
--- a/src/server/api/endpoints/my/apps.ts
+++ b/src/server/api/endpoints/my/apps.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
import App, { pack } from '../../../../models/app';
+import { ILocalUser } from '../../../../models/user';
/**
* Get my apps
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) return rej('invalid limit param');
diff --git a/src/server/api/endpoints/notes.ts b/src/server/api/endpoints/notes.ts
index e6fe80ac8a..5554e53aa4 100644
--- a/src/server/api/endpoints/notes.ts
+++ b/src/server/api/endpoints/notes.ts
@@ -7,7 +7,7 @@ import Note, { pack } from '../../../models/note';
/**
* Get all notes
*/
-module.exports = (params) => new Promise(async (res, rej) => {
+module.exports = (params: any) => new Promise(async (res, rej) => {
// Get 'local' parameter
const [local, localErr] = $.bool.optional().get(params.local);
if (localErr) return rej('invalid local param');
diff --git a/src/server/api/endpoints/notes/conversation.ts b/src/server/api/endpoints/notes/conversation.ts
index 02f7229ccf..b2bc6a2e72 100644
--- a/src/server/api/endpoints/notes/conversation.ts
+++ b/src/server/api/endpoints/notes/conversation.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
-import Note, { pack } from '../../../../models/note';
+import Note, { pack, INote } from '../../../../models/note';
+import { ILocalUser } from '../../../../models/user';
/**
* Show conversation of a note
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'noteId' parameter
const [noteId, noteIdErr] = $.type(ID).get(params.noteId);
if (noteIdErr) return rej('invalid noteId param');
@@ -29,10 +27,10 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
return rej('note not found');
}
- const conversation = [];
+ const conversation: INote[] = [];
let i = 0;
- async function get(id) {
+ async function get(id: any) {
i++;
const p = await Note.findOne({ _id: id });
diff --git a/src/server/api/endpoints/notes/create.ts b/src/server/api/endpoints/notes/create.ts
index 446764e1d6..64f3b5ce26 100644
--- a/src/server/api/endpoints/notes/create.ts
+++ b/src/server/api/endpoints/notes/create.ts
@@ -1,9 +1,6 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Note, { INote, isValidText, isValidCw, pack } from '../../../../models/note';
-import User, { ILocalUser } from '../../../../models/user';
+import User, { ILocalUser, IUser } from '../../../../models/user';
import DriveFile from '../../../../models/drive-file';
import create from '../../../../services/note/create';
import { IApp } from '../../../../models/app';
@@ -11,7 +8,7 @@ import { IApp } from '../../../../models/app';
/**
* Create a note
*/
-module.exports = (params, user: ILocalUser, app: IApp) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser, app: IApp) => new Promise(async (res, rej) => {
// Get 'visibility' parameter
const [visibility = 'public', visibilityErr] = $.str.optional().or(['public', 'home', 'followers', 'specified', 'private']).get(params.visibility);
if (visibilityErr) return rej('invalid visibility');
@@ -20,7 +17,7 @@ module.exports = (params, user: ILocalUser, app: IApp) => new Promise(async (res
const [visibleUserIds, visibleUserIdsErr] = $.arr($.type(ID)).optional().unique().min(1).get(params.visibleUserIds);
if (visibleUserIdsErr) return rej('invalid visibleUserIds');
- let visibleUsers = [];
+ let visibleUsers: IUser[] = [];
if (visibleUserIds !== undefined) {
visibleUsers = await Promise.all(visibleUserIds.map(id => User.findOne({
_id: id
@@ -132,7 +129,7 @@ module.exports = (params, user: ILocalUser, app: IApp) => new Promise(async (res
if (pollErr) return rej('invalid poll');
if (poll) {
- (poll as any).choices = (poll as any).choices.map((choice, i) => ({
+ (poll as any).choices = (poll as any).choices.map((choice: string, i: number) => ({
id: i, // IDを付与
text: choice.trim(),
votes: 0
diff --git a/src/server/api/endpoints/notes/delete.ts b/src/server/api/endpoints/notes/delete.ts
index 9bbb1541d6..70bcdbaab9 100644
--- a/src/server/api/endpoints/notes/delete.ts
+++ b/src/server/api/endpoints/notes/delete.ts
@@ -1,11 +1,12 @@
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Note from '../../../../models/note';
import deleteNote from '../../../../services/note/delete';
+import { ILocalUser } from '../../../../models/user';
/**
* Delete a note
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'noteId' parameter
const [noteId, noteIdErr] = $.type(ID).get(params.noteId);
if (noteIdErr) return rej('invalid noteId param');
diff --git a/src/server/api/endpoints/notes/favorites/create.ts b/src/server/api/endpoints/notes/favorites/create.ts
index 6832b52f75..23f7ac5f8d 100644
--- a/src/server/api/endpoints/notes/favorites/create.ts
+++ b/src/server/api/endpoints/notes/favorites/create.ts
@@ -1,14 +1,12 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import Favorite from '../../../../../models/favorite';
import Note from '../../../../../models/note';
+import { ILocalUser } from '../../../../../models/user';
/**
* Favorite a note
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'noteId' parameter
const [noteId, noteIdErr] = $.type(ID).get(params.noteId);
if (noteIdErr) return rej('invalid noteId param');
diff --git a/src/server/api/endpoints/notes/favorites/delete.ts b/src/server/api/endpoints/notes/favorites/delete.ts
index 07112dae15..7d2d2b4cb5 100644
--- a/src/server/api/endpoints/notes/favorites/delete.ts
+++ b/src/server/api/endpoints/notes/favorites/delete.ts
@@ -1,14 +1,12 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import Favorite from '../../../../../models/favorite';
import Note from '../../../../../models/note';
+import { ILocalUser } from '../../../../../models/user';
/**
* Unfavorite a note
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'noteId' parameter
const [noteId, noteIdErr] = $.type(ID).get(params.noteId);
if (noteIdErr) return rej('invalid noteId param');
diff --git a/src/server/api/endpoints/notes/global-timeline.ts b/src/server/api/endpoints/notes/global-timeline.ts
index 2d4f2b6368..24ffdbcba7 100644
--- a/src/server/api/endpoints/notes/global-timeline.ts
+++ b/src/server/api/endpoints/notes/global-timeline.ts
@@ -1,15 +1,13 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Note from '../../../../models/note';
import Mute from '../../../../models/mute';
import { pack } from '../../../../models/note';
+import { ILocalUser } from '../../../../models/user';
/**
* Get timeline of global
*/
-module.exports = async (params, user) => {
+module.exports = async (params: any, user: ILocalUser) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) throw 'invalid limit param';
diff --git a/src/server/api/endpoints/notes/local-timeline.ts b/src/server/api/endpoints/notes/local-timeline.ts
index 734cc9af0a..48490638d2 100644
--- a/src/server/api/endpoints/notes/local-timeline.ts
+++ b/src/server/api/endpoints/notes/local-timeline.ts
@@ -1,15 +1,13 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Note from '../../../../models/note';
import Mute from '../../../../models/mute';
import { pack } from '../../../../models/note';
+import { ILocalUser } from '../../../../models/user';
/**
* Get timeline of local
*/
-module.exports = async (params, user) => {
+module.exports = async (params: any, user: ILocalUser) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) throw 'invalid limit param';
diff --git a/src/server/api/endpoints/notes/mentions.ts b/src/server/api/endpoints/notes/mentions.ts
index 163a6b4866..45511603af 100644
--- a/src/server/api/endpoints/notes/mentions.ts
+++ b/src/server/api/endpoints/notes/mentions.ts
@@ -1,19 +1,13 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Note from '../../../../models/note';
import { getFriendIds } from '../../common/get-friends';
import { pack } from '../../../../models/note';
+import { ILocalUser } from '../../../../models/user';
/**
* Get mentions of myself
- *
- * @param {any} params
- * @param {any} user
- * @return {Promise<any>}
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'following' parameter
const [following = false, followingError] =
$.bool.optional().get(params.following);
diff --git a/src/server/api/endpoints/notes/polls/recommendation.ts b/src/server/api/endpoints/notes/polls/recommendation.ts
index a272378d19..640140c3d1 100644
--- a/src/server/api/endpoints/notes/polls/recommendation.ts
+++ b/src/server/api/endpoints/notes/polls/recommendation.ts
@@ -1,14 +1,12 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
import Vote from '../../../../../models/poll-vote';
import Note, { pack } from '../../../../../models/note';
+import { ILocalUser } from '../../../../../models/user';
/**
* Get recommended polls
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) return rej('invalid limit param');
diff --git a/src/server/api/endpoints/notes/polls/vote.ts b/src/server/api/endpoints/notes/polls/vote.ts
index f8f4515308..72ac6bb202 100644
--- a/src/server/api/endpoints/notes/polls/vote.ts
+++ b/src/server/api/endpoints/notes/polls/vote.ts
@@ -1,6 +1,3 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import Vote from '../../../../../models/poll-vote';
import Note from '../../../../../models/note';
@@ -8,11 +5,12 @@ import Watching from '../../../../../models/note-watching';
import watch from '../../../../../services/note/watch';
import { publishNoteStream } from '../../../../../publishers/stream';
import notify from '../../../../../publishers/notify';
+import { ILocalUser } from '../../../../../models/user';
/**
* Vote poll of a note
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'noteId' parameter
const [noteId, noteIdErr] = $.type(ID).get(params.noteId);
if (noteIdErr) return rej('invalid noteId param');
@@ -58,8 +56,8 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
// Send response
res();
- const inc = {};
- inc[`poll.choices.${findWithAttr(note.poll.choices, 'id', choice)}.votes`] = 1;
+ const inc: any = {};
+ inc[`poll.choices.${note.poll.choices.findIndex(c => c.id == choice)}.votes`] = 1;
// Increment votes count
await Note.update({ _id: note._id }, {
@@ -100,12 +98,3 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
watch(user._id, note);
}
});
-
-function findWithAttr(array, attr, value) {
- for (let i = 0; i < array.length; i += 1) {
- if (array[i][attr] === value) {
- return i;
- }
- }
- return -1;
-}
diff --git a/src/server/api/endpoints/notes/reactions.ts b/src/server/api/endpoints/notes/reactions.ts
index 4ad952a7a1..d3b2d43432 100644
--- a/src/server/api/endpoints/notes/reactions.ts
+++ b/src/server/api/endpoints/notes/reactions.ts
@@ -1,18 +1,12 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Note from '../../../../models/note';
import Reaction, { pack } from '../../../../models/note-reaction';
+import { ILocalUser } from '../../../../models/user';
/**
* Show reactions of a note
- *
- * @param {any} params
- * @param {any} user
- * @return {Promise<any>}
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'noteId' parameter
const [noteId, noteIdErr] = $.type(ID).get(params.noteId);
if (noteIdErr) return rej('invalid noteId param');
diff --git a/src/server/api/endpoints/notes/reactions/create.ts b/src/server/api/endpoints/notes/reactions/create.ts
index 21757cb427..33e457e308 100644
--- a/src/server/api/endpoints/notes/reactions/create.ts
+++ b/src/server/api/endpoints/notes/reactions/create.ts
@@ -1,15 +1,13 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import Note from '../../../../../models/note';
import create from '../../../../../services/note/reaction/create';
import { validateReaction } from '../../../../../models/note-reaction';
+import { ILocalUser } from '../../../../../models/user';
/**
* React to a note
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'noteId' parameter
const [noteId, noteIdErr] = $.type(ID).get(params.noteId);
if (noteIdErr) return rej('invalid noteId param');
diff --git a/src/server/api/endpoints/notes/reactions/delete.ts b/src/server/api/endpoints/notes/reactions/delete.ts
index afb8629112..1f2d662511 100644
--- a/src/server/api/endpoints/notes/reactions/delete.ts
+++ b/src/server/api/endpoints/notes/reactions/delete.ts
@@ -1,14 +1,12 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import Reaction from '../../../../../models/note-reaction';
import Note from '../../../../../models/note';
+import { ILocalUser } from '../../../../../models/user';
/**
* Unreact to a note
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'noteId' parameter
const [noteId, noteIdErr] = $.type(ID).get(params.noteId);
if (noteIdErr) return rej('invalid noteId param');
@@ -45,7 +43,7 @@ module.exports = (params, user) => new Promise(async (res, rej) => {
// Send response
res();
- const dec = {};
+ const dec: any = {};
dec[`reactionCounts.${exist.reaction}`] = -1;
// Decrement reactions count
diff --git a/src/server/api/endpoints/notes/replies.ts b/src/server/api/endpoints/notes/replies.ts
index 608027f6b1..4aaf1d322b 100644
--- a/src/server/api/endpoints/notes/replies.ts
+++ b/src/server/api/endpoints/notes/replies.ts
@@ -1,10 +1,11 @@
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Note, { pack } from '../../../../models/note';
+import { ILocalUser } from '../../../../models/user';
/**
* Get replies of a note
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'noteId' parameter
const [noteId, noteIdErr] = $.type(ID).get(params.noteId);
if (noteIdErr) return rej('invalid noteId param');
diff --git a/src/server/api/endpoints/notes/reposts.ts b/src/server/api/endpoints/notes/reposts.ts
index 3098211b61..ea3f174e1a 100644
--- a/src/server/api/endpoints/notes/reposts.ts
+++ b/src/server/api/endpoints/notes/reposts.ts
@@ -1,17 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Note, { pack } from '../../../../models/note';
+import { ILocalUser } from '../../../../models/user';
/**
* Show a renotes of a note
- *
- * @param {any} params
- * @param {any} user
- * @return {Promise<any>}
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'noteId' parameter
const [noteId, noteIdErr] = $.type(ID).get(params.noteId);
if (noteIdErr) return rej('invalid noteId param');
diff --git a/src/server/api/endpoints/notes/search.ts b/src/server/api/endpoints/notes/search.ts
deleted file mode 100644
index 9705dcfd6e..0000000000
--- a/src/server/api/endpoints/notes/search.ts
+++ /dev/null
@@ -1,364 +0,0 @@
-/**
- * Module dependencies
- */
-import $ from 'cafy'; import ID from '../../../../cafy-id';
-const escapeRegexp = require('escape-regexp');
-import Note from '../../../../models/note';
-import User from '../../../../models/user';
-import Mute from '../../../../models/mute';
-import { getFriendIds } from '../../common/get-friends';
-import { pack } from '../../../../models/note';
-
-/**
- * Search a note
- *
- * @param {any} params
- * @param {any} me
- * @return {Promise<any>}
- */
-module.exports = (params, me) => new Promise(async (res, rej) => {
- // Get 'text' parameter
- const [text, textError] = $.str.optional().get(params.text);
- if (textError) return rej('invalid text param');
-
- // Get 'includeUserIds' parameter
- const [includeUserIds = [], includeUserIdsErr] = $.arr($.type(ID)).optional().get(params.includeUserIds);
- if (includeUserIdsErr) return rej('invalid includeUserIds param');
-
- // Get 'excludeUserIds' parameter
- const [excludeUserIds = [], excludeUserIdsErr] = $.arr($.type(ID)).optional().get(params.excludeUserIds);
- if (excludeUserIdsErr) return rej('invalid excludeUserIds param');
-
- // Get 'includeUserUsernames' parameter
- const [includeUserUsernames = [], includeUserUsernamesErr] = $.arr($.str).optional().get(params.includeUserUsernames);
- if (includeUserUsernamesErr) return rej('invalid includeUserUsernames param');
-
- // Get 'excludeUserUsernames' parameter
- const [excludeUserUsernames = [], excludeUserUsernamesErr] = $.arr($.str).optional().get(params.excludeUserUsernames);
- if (excludeUserUsernamesErr) return rej('invalid excludeUserUsernames param');
-
- // Get 'following' parameter
- const [following = null, followingErr] = $.bool.optional().nullable().get(params.following);
- if (followingErr) return rej('invalid following param');
-
- // Get 'mute' parameter
- const [mute = 'mute_all', muteErr] = $.str.optional().get(params.mute);
- if (muteErr) return rej('invalid mute param');
-
- // Get 'reply' parameter
- const [reply = null, replyErr] = $.bool.optional().nullable().get(params.reply);
- if (replyErr) return rej('invalid reply param');
-
- // Get 'renote' parameter
- const [renote = null, renoteErr] = $.bool.optional().nullable().get(params.renote);
- if (renoteErr) return rej('invalid renote param');
-
- // Get 'media' parameter
- const [media = null, mediaErr] = $.bool.optional().nullable().get(params.media);
- if (mediaErr) return rej('invalid media param');
-
- // Get 'poll' parameter
- const [poll = null, pollErr] = $.bool.optional().nullable().get(params.poll);
- if (pollErr) return rej('invalid poll param');
-
- // Get 'sinceDate' parameter
- const [sinceDate, sinceDateErr] = $.num.optional().get(params.sinceDate);
- if (sinceDateErr) throw 'invalid sinceDate param';
-
- // Get 'untilDate' parameter
- const [untilDate, untilDateErr] = $.num.optional().get(params.untilDate);
- if (untilDateErr) throw 'invalid untilDate param';
-
- // Get 'offset' parameter
- const [offset = 0, offsetErr] = $.num.optional().min(0).get(params.offset);
- if (offsetErr) return rej('invalid offset param');
-
- // Get 'limit' parameter
- const [limit = 10, limitErr] = $.num.optional().range(1, 30).get(params.limit);
- if (limitErr) return rej('invalid limit param');
-
- let includeUsers = includeUserIds;
- if (includeUserUsernames != null) {
- const ids = (await Promise.all(includeUserUsernames.map(async (username) => {
- const _user = await User.findOne({
- usernameLower: username.toLowerCase()
- });
- return _user ? _user._id : null;
- }))).filter(id => id != null);
- includeUsers = includeUsers.concat(ids);
- }
-
- let excludeUsers = excludeUserIds;
- if (excludeUserUsernames != null) {
- const ids = (await Promise.all(excludeUserUsernames.map(async (username) => {
- const _user = await User.findOne({
- usernameLower: username.toLowerCase()
- });
- return _user ? _user._id : null;
- }))).filter(id => id != null);
- excludeUsers = excludeUsers.concat(ids);
- }
-
- search(res, rej, me, text, includeUsers, excludeUsers, following,
- mute, reply, renote, media, poll, sinceDate, untilDate, offset, limit);
-});
-
-async function search(
- res, rej, me, text, includeUserIds, excludeUserIds, following,
- mute, reply, renote, media, poll, sinceDate, untilDate, offset, max) {
-
- let q: any = {
- $and: []
- };
-
- const push = x => q.$and.push(x);
-
- if (text) {
- // 完全一致検索
- if (/"""(.+?)"""/.test(text)) {
- const x = text.match(/"""(.+?)"""/)[1];
- push({
- text: x
- });
- } else {
- const tags = text.split(' ').filter(x => x[0] == '#');
- if (tags) {
- push({
- $and: tags.map(x => ({
- tags: x
- }))
- });
- }
-
- push({
- $and: text.split(' ').map(x => ({
- // キーワードが-で始まる場合そのキーワードを除外する
- text: x[0] == '-' ? {
- $not: new RegExp(escapeRegexp(x.substr(1)))
- } : new RegExp(escapeRegexp(x))
- }))
- });
- }
- }
-
- if (includeUserIds && includeUserIds.length != 0) {
- push({
- userId: {
- $in: includeUserIds
- }
- });
- } else if (excludeUserIds && excludeUserIds.length != 0) {
- push({
- userId: {
- $nin: excludeUserIds
- }
- });
- }
-
- if (following != null && me != null) {
- const ids = await getFriendIds(me._id, false);
- push({
- userId: following ? {
- $in: ids
- } : {
- $nin: ids.concat(me._id)
- }
- });
- }
-
- if (me != null) {
- const mutes = await Mute.find({
- muterId: me._id,
- deletedAt: { $exists: false }
- });
- const mutedUserIds = mutes.map(m => m.muteeId);
-
- switch (mute) {
- case 'mute_all':
- push({
- userId: {
- $nin: mutedUserIds
- },
- '_reply.userId': {
- $nin: mutedUserIds
- },
- '_renote.userId': {
- $nin: mutedUserIds
- }
- });
- break;
- case 'mute_related':
- push({
- '_reply.userId': {
- $nin: mutedUserIds
- },
- '_renote.userId': {
- $nin: mutedUserIds
- }
- });
- break;
- case 'mute_direct':
- push({
- userId: {
- $nin: mutedUserIds
- }
- });
- break;
- case 'direct_only':
- push({
- userId: {
- $in: mutedUserIds
- }
- });
- break;
- case 'related_only':
- push({
- $or: [{
- '_reply.userId': {
- $in: mutedUserIds
- }
- }, {
- '_renote.userId': {
- $in: mutedUserIds
- }
- }]
- });
- break;
- case 'all_only':
- push({
- $or: [{
- userId: {
- $in: mutedUserIds
- }
- }, {
- '_reply.userId': {
- $in: mutedUserIds
- }
- }, {
- '_renote.userId': {
- $in: mutedUserIds
- }
- }]
- });
- break;
- }
- }
-
- if (reply != null) {
- if (reply) {
- push({
- replyId: {
- $exists: true,
- $ne: null
- }
- });
- } else {
- push({
- $or: [{
- replyId: {
- $exists: false
- }
- }, {
- replyId: null
- }]
- });
- }
- }
-
- if (renote != null) {
- if (renote) {
- push({
- renoteId: {
- $exists: true,
- $ne: null
- }
- });
- } else {
- push({
- $or: [{
- renoteId: {
- $exists: false
- }
- }, {
- renoteId: null
- }]
- });
- }
- }
-
- if (media != null) {
- if (media) {
- push({
- mediaIds: {
- $exists: true,
- $ne: null
- }
- });
- } else {
- push({
- $or: [{
- mediaIds: {
- $exists: false
- }
- }, {
- mediaIds: null
- }]
- });
- }
- }
-
- if (poll != null) {
- if (poll) {
- push({
- poll: {
- $exists: true,
- $ne: null
- }
- });
- } else {
- push({
- $or: [{
- poll: {
- $exists: false
- }
- }, {
- poll: null
- }]
- });
- }
- }
-
- if (sinceDate) {
- push({
- createdAt: {
- $gt: new Date(sinceDate)
- }
- });
- }
-
- if (untilDate) {
- push({
- createdAt: {
- $lt: new Date(untilDate)
- }
- });
- }
-
- if (q.$and.length == 0) {
- q = {};
- }
-
- // Search notes
- const notes = await Note
- .find(q, {
- sort: {
- _id: -1
- },
- limit: max,
- skip: offset
- });
-
- // Serialize
- res(await Promise.all(notes.map(async note =>
- await pack(note, me))));
-}
diff --git a/src/server/api/endpoints/notes/search_by_tag.ts b/src/server/api/endpoints/notes/search_by_tag.ts
index 1eb4cde49c..9be7cfffb6 100644
--- a/src/server/api/endpoints/notes/search_by_tag.ts
+++ b/src/server/api/endpoints/notes/search_by_tag.ts
@@ -1,6 +1,6 @@
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Note from '../../../../models/note';
-import User from '../../../../models/user';
+import User, { ILocalUser } from '../../../../models/user';
import Mute from '../../../../models/mute';
import { getFriendIds } from '../../common/get-friends';
import { pack } from '../../../../models/note';
@@ -8,7 +8,7 @@ import { pack } from '../../../../models/note';
/**
* Search notes by tag
*/
-module.exports = (params, me) => new Promise(async (res, rej) => {
+module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
// Get 'tag' parameter
const [tag, tagError] = $.str.get(params.tag);
if (tagError) return rej('invalid tag param');
@@ -69,7 +69,6 @@ module.exports = (params, me) => new Promise(async (res, rej) => {
const [limit = 10, limitErr] = $.num.optional().range(1, 30).get(params.limit);
if (limitErr) return rej('invalid limit param');
- let includeUsers = includeUserIds;
if (includeUserUsernames != null) {
const ids = (await Promise.all(includeUserUsernames.map(async (username) => {
const _user = await User.findOne({
@@ -77,10 +76,10 @@ module.exports = (params, me) => new Promise(async (res, rej) => {
});
return _user ? _user._id : null;
}))).filter(id => id != null);
- includeUsers = includeUsers.concat(ids);
+
+ ids.forEach(id => includeUserIds.push(id));
}
- let excludeUsers = excludeUserIds;
if (excludeUserUsernames != null) {
const ids = (await Promise.all(excludeUserUsernames.map(async (username) => {
const _user = await User.findOne({
@@ -88,16 +87,9 @@ module.exports = (params, me) => new Promise(async (res, rej) => {
});
return _user ? _user._id : null;
}))).filter(id => id != null);
- excludeUsers = excludeUsers.concat(ids);
- }
-
- search(res, rej, me, tag, includeUsers, excludeUsers, following,
- mute, reply, renote, media, poll, sinceDate, untilDate, offset, limit);
-});
-async function search(
- res, rej, me, tag, includeUserIds, excludeUserIds, following,
- mute, reply, renote, media, poll, sinceDate, untilDate, offset, max) {
+ ids.forEach(id => excludeUserIds.push(id));
+ }
let q: any = {
$and: [{
@@ -105,7 +97,7 @@ async function search(
}]
};
- const push = x => q.$and.push(x);
+ const push = (x: any) => q.$and.push(x);
if (includeUserIds && includeUserIds.length != 0) {
push({
@@ -320,10 +312,10 @@ async function search(
sort: {
_id: -1
},
- limit: max,
+ limit: limit,
skip: offset
});
// Serialize
res(await Promise.all(notes.map(note => pack(note, me))));
-}
+});
diff --git a/src/server/api/endpoints/notes/show.ts b/src/server/api/endpoints/notes/show.ts
index 78dc55a703..1ba7145996 100644
--- a/src/server/api/endpoints/notes/show.ts
+++ b/src/server/api/endpoints/notes/show.ts
@@ -1,17 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Note, { pack } from '../../../../models/note';
+import { ILocalUser } from '../../../../models/user';
/**
* Show a note
- *
- * @param {any} params
- * @param {any} user
- * @return {Promise<any>}
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'noteId' parameter
const [noteId, noteIdErr] = $.type(ID).get(params.noteId);
if (noteIdErr) return rej('invalid noteId param');
diff --git a/src/server/api/endpoints/notes/timeline.ts b/src/server/api/endpoints/notes/timeline.ts
index f1d741d5ee..18c0acd379 100644
--- a/src/server/api/endpoints/notes/timeline.ts
+++ b/src/server/api/endpoints/notes/timeline.ts
@@ -1,16 +1,14 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Note from '../../../../models/note';
import Mute from '../../../../models/mute';
import { getFriends } from '../../common/get-friends';
import { pack } from '../../../../models/note';
+import { ILocalUser } from '../../../../models/user';
/**
* Get timeline of myself
*/
-module.exports = async (params, user, app) => {
+module.exports = async (params: any, user: ILocalUser) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) throw 'invalid limit param';
diff --git a/src/server/api/endpoints/notes/trend.ts b/src/server/api/endpoints/notes/trend.ts
index 4735bec51e..9c0a1bb112 100644
--- a/src/server/api/endpoints/notes/trend.ts
+++ b/src/server/api/endpoints/notes/trend.ts
@@ -1,18 +1,12 @@
-/**
- * Module dependencies
- */
const ms = require('ms');
import $ from 'cafy';
import Note, { pack } from '../../../../models/note';
+import { ILocalUser } from '../../../../models/user';
/**
* Get trend notes
- *
- * @param {any} params
- * @param {any} user
- * @return {Promise<any>}
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) return rej('invalid limit param');
diff --git a/src/server/api/endpoints/notes/user-list-timeline.ts b/src/server/api/endpoints/notes/user-list-timeline.ts
index a74a5141f9..8aa800b712 100644
--- a/src/server/api/endpoints/notes/user-list-timeline.ts
+++ b/src/server/api/endpoints/notes/user-list-timeline.ts
@@ -1,16 +1,14 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Note from '../../../../models/note';
import Mute from '../../../../models/mute';
import { pack } from '../../../../models/note';
import UserList from '../../../../models/user-list';
+import { ILocalUser } from '../../../../models/user';
/**
* Get timeline of a user list
*/
-module.exports = async (params, user, app) => {
+module.exports = async (params: any, user: ILocalUser) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) throw 'invalid limit param';
diff --git a/src/server/api/endpoints/notifications/mark_as_read_all.ts b/src/server/api/endpoints/notifications/mark_as_read_all.ts
index 7a48ca3e62..faaaf65a2d 100644
--- a/src/server/api/endpoints/notifications/mark_as_read_all.ts
+++ b/src/server/api/endpoints/notifications/mark_as_read_all.ts
@@ -1,11 +1,11 @@
import Notification from '../../../../models/notification';
import event from '../../../../publishers/stream';
-import User from '../../../../models/user';
+import User, { ILocalUser } from '../../../../models/user';
/**
* Mark as read all notifications
*/
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Update documents
await Notification.update({
notifieeId: user._id,
diff --git a/src/server/api/endpoints/reversi/games.ts b/src/server/api/endpoints/reversi/games.ts
index 9d879ecf23..1455f191f7 100644
--- a/src/server/api/endpoints/reversi/games.ts
+++ b/src/server/api/endpoints/reversi/games.ts
@@ -1,7 +1,8 @@
import $ from 'cafy'; import ID from '../../../../cafy-id';
import ReversiGame, { pack } from '../../../../models/reversi-game';
+import { ILocalUser } from '../../../../models/user';
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'my' parameter
const [my = false, myErr] = $.bool.optional().get(params.my);
if (myErr) return rej('invalid my param');
diff --git a/src/server/api/endpoints/reversi/games/show.ts b/src/server/api/endpoints/reversi/games/show.ts
index f32eb23513..d70ee547a2 100644
--- a/src/server/api/endpoints/reversi/games/show.ts
+++ b/src/server/api/endpoints/reversi/games/show.ts
@@ -1,8 +1,9 @@
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import ReversiGame, { pack } from '../../../../../models/reversi-game';
import Reversi from '../../../../../reversi/core';
+import { ILocalUser } from '../../../../../models/user';
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'gameId' parameter
const [gameId, gameIdErr] = $.type(ID).get(params.gameId);
if (gameIdErr) return rej('invalid gameId param');
diff --git a/src/server/api/endpoints/reversi/invitations.ts b/src/server/api/endpoints/reversi/invitations.ts
index fc487205a9..d7727071ae 100644
--- a/src/server/api/endpoints/reversi/invitations.ts
+++ b/src/server/api/endpoints/reversi/invitations.ts
@@ -1,6 +1,7 @@
import Matching, { pack as packMatching } from '../../../../models/reversi-matching';
+import { ILocalUser } from '../../../../models/user';
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Find session
const invitations = await Matching.find({
childId: user._id
diff --git a/src/server/api/endpoints/reversi/match.ts b/src/server/api/endpoints/reversi/match.ts
index 5a699ddbae..907df7cf43 100644
--- a/src/server/api/endpoints/reversi/match.ts
+++ b/src/server/api/endpoints/reversi/match.ts
@@ -1,11 +1,11 @@
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Matching, { pack as packMatching } from '../../../../models/reversi-matching';
import ReversiGame, { pack as packGame } from '../../../../models/reversi-game';
-import User from '../../../../models/user';
+import User, { ILocalUser } from '../../../../models/user';
import publishUserStream, { publishReversiStream } from '../../../../publishers/stream';
import { eighteight } from '../../../../reversi/maps';
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'userId' parameter
const [childId, childIdErr] = $.type(ID).get(params.userId);
if (childIdErr) return rej('invalid userId param');
diff --git a/src/server/api/endpoints/reversi/match/cancel.ts b/src/server/api/endpoints/reversi/match/cancel.ts
index bc8a4cd640..1c9c799dbe 100644
--- a/src/server/api/endpoints/reversi/match/cancel.ts
+++ b/src/server/api/endpoints/reversi/match/cancel.ts
@@ -1,6 +1,7 @@
import Matching from '../../../../../models/reversi-matching';
+import { ILocalUser } from '../../../../../models/user';
-module.exports = (params, user) => new Promise(async (res, rej) => {
+module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
await Matching.remove({
parentId: user._id
});
diff --git a/src/server/api/endpoints/sw/register.ts b/src/server/api/endpoints/sw/register.ts
index b22a8b08ef..f04a77fa4d 100644
--- a/src/server/api/endpoints/sw/register.ts
+++ b/src/server/api/endpoints/sw/register.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
import Subscription from '../../../../models/sw-subscription';
+import { ILocalUser } from '../../../../models/user';
/**
* subscribe service worker
*/
-module.exports = async (params, user, app) => new Promise(async (res, rej) => {
+module.exports = async (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'endpoint' parameter
const [endpoint, endpointErr] = $.str.get(params.endpoint);
if (endpointErr) return rej('invalid endpoint param');
diff --git a/src/server/api/endpoints/username/available.ts b/src/server/api/endpoints/username/available.ts
index b11bec4e58..aad3adc514 100644
--- a/src/server/api/endpoints/username/available.ts
+++ b/src/server/api/endpoints/username/available.ts
@@ -1,17 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
import User from '../../../../models/user';
import { validateUsername } from '../../../../models/user';
/**
* Check available username
- *
- * @param {any} params
- * @return {Promise<any>}
*/
-module.exports = async (params) => new Promise(async (res, rej) => {
+module.exports = async (params: any) => new Promise(async (res, rej) => {
// Get 'username' parameter
const [username, usernameError] = $.str.pipe(validateUsername).get(params.username);
if (usernameError) return rej('invalid username param');
diff --git a/src/server/api/endpoints/users.ts b/src/server/api/endpoints/users.ts
index eb581cb7e6..b8df6f3ecf 100644
--- a/src/server/api/endpoints/users.ts
+++ b/src/server/api/endpoints/users.ts
@@ -1,13 +1,10 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
-import User, { pack } from '../../../models/user';
+import User, { pack, ILocalUser } from '../../../models/user';
/**
* Lists all users
*/
-module.exports = (params, me) => new Promise(async (res, rej) => {
+module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) return rej('invalid limit param');
diff --git a/src/server/api/endpoints/users/followers.ts b/src/server/api/endpoints/users/followers.ts
index 810cd7341b..53133ee969 100644
--- a/src/server/api/endpoints/users/followers.ts
+++ b/src/server/api/endpoints/users/followers.ts
@@ -1,8 +1,5 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
-import User from '../../../../models/user';
+import User, { ILocalUser } from '../../../../models/user';
import Following from '../../../../models/following';
import { pack } from '../../../../models/user';
import { getFriendIds } from '../../common/get-friends';
@@ -10,7 +7,7 @@ import { getFriendIds } from '../../common/get-friends';
/**
* Get followers of a user
*/
-module.exports = (params, me) => new Promise(async (res, rej) => {
+module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
// Get 'userId' parameter
const [userId, userIdErr] = $.type(ID).get(params.userId);
if (userIdErr) return rej('invalid userId param');
diff --git a/src/server/api/endpoints/users/following.ts b/src/server/api/endpoints/users/following.ts
index 3373b9d632..2061200198 100644
--- a/src/server/api/endpoints/users/following.ts
+++ b/src/server/api/endpoints/users/following.ts
@@ -1,20 +1,13 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
-import User from '../../../../models/user';
+import User, { ILocalUser } from '../../../../models/user';
import Following from '../../../../models/following';
import { pack } from '../../../../models/user';
import { getFriendIds } from '../../common/get-friends';
/**
* Get following users of a user
- *
- * @param {any} params
- * @param {any} me
- * @return {Promise<any>}
*/
-module.exports = (params, me) => new Promise(async (res, rej) => {
+module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
// Get 'userId' parameter
const [userId, userIdErr] = $.type(ID).get(params.userId);
if (userIdErr) return rej('invalid userId param');
diff --git a/src/server/api/endpoints/users/get_frequently_replied_users.ts b/src/server/api/endpoints/users/get_frequently_replied_users.ts
index 64d737a06b..ba8779d334 100644
--- a/src/server/api/endpoints/users/get_frequently_replied_users.ts
+++ b/src/server/api/endpoints/users/get_frequently_replied_users.ts
@@ -1,11 +1,8 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import Note from '../../../../models/note';
-import User, { pack } from '../../../../models/user';
+import User, { pack, ILocalUser } from '../../../../models/user';
-module.exports = (params, me) => new Promise(async (res, rej) => {
+module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
// Get 'userId' parameter
const [userId, userIdErr] = $.type(ID).get(params.userId);
if (userIdErr) return rej('invalid userId param');
@@ -64,7 +61,7 @@ module.exports = (params, me) => new Promise(async (res, rej) => {
}
});
- const repliedUsers = {};
+ const repliedUsers: any = {};
// Extract replies from recent notes
replyTargetNotes.forEach(note => {
diff --git a/src/server/api/endpoints/users/lists/create.ts b/src/server/api/endpoints/users/lists/create.ts
index 100a78b872..cdd1a0d813 100644
--- a/src/server/api/endpoints/users/lists/create.ts
+++ b/src/server/api/endpoints/users/lists/create.ts
@@ -1,13 +1,11 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
import UserList, { pack } from '../../../../../models/user-list';
+import { ILocalUser } from '../../../../../models/user';
/**
* Create a user list
*/
-module.exports = async (params, user) => new Promise(async (res, rej) => {
+module.exports = async (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
// Get 'title' parameter
const [title, titleErr] = $.str.range(1, 100).get(params.title);
if (titleErr) return rej('invalid title param');
diff --git a/src/server/api/endpoints/users/lists/list.ts b/src/server/api/endpoints/users/lists/list.ts
index d19339a1f5..bf8391d863 100644
--- a/src/server/api/endpoints/users/lists/list.ts
+++ b/src/server/api/endpoints/users/lists/list.ts
@@ -1,9 +1,10 @@
import UserList, { pack } from '../../../../../models/user-list';
+import { ILocalUser } from '../../../../../models/user';
/**
* Add a user to a user list
*/
-module.exports = async (params, me) => new Promise(async (res, rej) => {
+module.exports = async (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
// Fetch lists
const userLists = await UserList.find({
userId: me._id,
diff --git a/src/server/api/endpoints/users/lists/push.ts b/src/server/api/endpoints/users/lists/push.ts
index da5a9a134c..d8a3b3c9aa 100644
--- a/src/server/api/endpoints/users/lists/push.ts
+++ b/src/server/api/endpoints/users/lists/push.ts
@@ -1,6 +1,6 @@
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import UserList from '../../../../../models/user-list';
-import User, { pack as packUser, isRemoteUser, getGhost } from '../../../../../models/user';
+import User, { pack as packUser, isRemoteUser, getGhost, ILocalUser } from '../../../../../models/user';
import { publishUserListStream } from '../../../../../publishers/stream';
import ap from '../../../../../remote/activitypub/renderer';
import renderFollow from '../../../../../remote/activitypub/renderer/follow';
@@ -9,7 +9,7 @@ import { deliver } from '../../../../../queue';
/**
* Add a user to a user list
*/
-module.exports = async (params, me) => new Promise(async (res, rej) => {
+module.exports = async (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
// Get 'listId' parameter
const [listId, listIdErr] = $.type(ID).get(params.listId);
if (listIdErr) return rej('invalid listId param');
diff --git a/src/server/api/endpoints/users/lists/show.ts b/src/server/api/endpoints/users/lists/show.ts
index 16cb3382fd..e4ae239613 100644
--- a/src/server/api/endpoints/users/lists/show.ts
+++ b/src/server/api/endpoints/users/lists/show.ts
@@ -1,10 +1,11 @@
import $ from 'cafy'; import ID from '../../../../../cafy-id';
import UserList, { pack } from '../../../../../models/user-list';
+import { ILocalUser } from '../../../../../models/user';
/**
* Show a user list
*/
-module.exports = async (params, me) => new Promise(async (res, rej) => {
+module.exports = async (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
// Get 'listId' parameter
const [listId, listIdErr] = $.type(ID).get(params.listId);
if (listIdErr) return rej('invalid listId param');
diff --git a/src/server/api/endpoints/users/notes.ts b/src/server/api/endpoints/users/notes.ts
index 061c363d0f..222a8d950a 100644
--- a/src/server/api/endpoints/users/notes.ts
+++ b/src/server/api/endpoints/users/notes.ts
@@ -1,15 +1,12 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
import getHostLower from '../../common/get-host-lower';
import Note, { pack } from '../../../../models/note';
-import User from '../../../../models/user';
+import User, { ILocalUser } from '../../../../models/user';
/**
* Get notes of a user
*/
-module.exports = (params, me) => new Promise(async (res, rej) => {
+module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
// Get 'userId' parameter
const [userId, userIdErr] = $.type(ID).optional().get(params.userId);
if (userIdErr) return rej('invalid userId param');
diff --git a/src/server/api/endpoints/users/recommendation.ts b/src/server/api/endpoints/users/recommendation.ts
index 23821a552f..1d0d889f11 100644
--- a/src/server/api/endpoints/users/recommendation.ts
+++ b/src/server/api/endpoints/users/recommendation.ts
@@ -1,20 +1,13 @@
-/**
- * Module dependencies
- */
const ms = require('ms');
import $ from 'cafy';
-import User, { pack } from '../../../../models/user';
+import User, { pack, ILocalUser } from '../../../../models/user';
import { getFriendIds } from '../../common/get-friends';
import Mute from '../../../../models/mute';
/**
* Get recommended users
- *
- * @param {any} params
- * @param {any} me
- * @return {Promise<any>}
*/
-module.exports = (params, me) => new Promise(async (res, rej) => {
+module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
// Get 'limit' parameter
const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
if (limitErr) return rej('invalid limit param');
diff --git a/src/server/api/endpoints/users/search.ts b/src/server/api/endpoints/users/search.ts
index 95b9e4f4bb..e29c8d32f1 100644
--- a/src/server/api/endpoints/users/search.ts
+++ b/src/server/api/endpoints/users/search.ts
@@ -1,40 +1,19 @@
-/**
- * Module dependencies
- */
-import * as mongo from 'mongodb';
import $ from 'cafy';
-import User, { pack } from '../../../../models/user';
-import config from '../../../../config';
+import User, { pack, ILocalUser } from '../../../../models/user';
const escapeRegexp = require('escape-regexp');
/**
* Search a user
- *
- * @param {any} params
- * @param {any} me
- * @return {Promise<any>}
*/
-module.exports = (params, me) => new Promise(async (res, rej) => {
+module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
// Get 'query' parameter
const [query, queryError] = $.str.pipe(x => x != '').get(params.query);
if (queryError) return rej('invalid query param');
- // Get 'offset' parameter
- const [offset = 0, offsetErr] = $.num.optional().min(0).get(params.offset);
- if (offsetErr) return rej('invalid offset param');
-
// Get 'max' parameter
const [max = 10, maxErr] = $.num.optional().range(1, 30).get(params.max);
if (maxErr) return rej('invalid max param');
- // If Elasticsearch is available, search by $
- // If not, search by MongoDB
- (config.elasticsearch.enable ? byElasticsearch : byNative)
- (res, rej, me, query, offset, max);
-});
-
-// Search by MongoDB
-async function byNative(res, rej, me, query, offset, max) {
const escapedQuery = escapeRegexp(query);
// Search users
@@ -51,49 +30,5 @@ async function byNative(res, rej, me, query, offset, max) {
});
// Serialize
- res(await Promise.all(users.map(async user =>
- await pack(user, me, { detail: true }))));
-}
-
-// Search by Elasticsearch
-async function byElasticsearch(res, rej, me, query, offset, max) {
- const es = require('../../db/elasticsearch');
-
- es.search({
- index: 'misskey',
- type: 'user',
- body: {
- size: max,
- from: offset,
- query: {
- simple_query_string: {
- fields: ['username', 'name', 'bio'],
- query: query,
- default_operator: 'and'
- }
- }
- }
- }, async (error, response) => {
- if (error) {
- console.error(error);
- return res(500);
- }
-
- if (response.hits.total === 0) {
- return res([]);
- }
-
- const hits = response.hits.hits.map(hit => new mongo.ObjectID(hit._id));
-
- const users = await User
- .find({
- _id: {
- $in: hits
- }
- });
-
- // Serialize
- res(await Promise.all(users.map(async user =>
- await pack(user, me, { detail: true }))));
- });
-}
+ res(await Promise.all(users.map(user => pack(user, me, { detail: true }))));
+});
diff --git a/src/server/api/endpoints/users/search_by_username.ts b/src/server/api/endpoints/users/search_by_username.ts
index 7c9fbba0fa..937f9af589 100644
--- a/src/server/api/endpoints/users/search_by_username.ts
+++ b/src/server/api/endpoints/users/search_by_username.ts
@@ -1,13 +1,10 @@
-/**
- * Module dependencies
- */
import $ from 'cafy';
-import User, { pack } from '../../../../models/user';
+import User, { pack, ILocalUser } from '../../../../models/user';
/**
* Search a user by username
*/
-module.exports = (params, me) => new Promise(async (res, rej) => {
+module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
// Get 'query' parameter
const [query, queryError] = $.str.get(params.query);
if (queryError) return rej('invalid query param');
diff --git a/src/server/api/endpoints/users/show.ts b/src/server/api/endpoints/users/show.ts
index b8c6ff25c4..bf7e2a2312 100644
--- a/src/server/api/endpoints/users/show.ts
+++ b/src/server/api/endpoints/users/show.ts
@@ -1,8 +1,5 @@
-/**
- * Module dependencies
- */
import $ from 'cafy'; import ID from '../../../../cafy-id';
-import User, { pack } from '../../../../models/user';
+import User, { pack, ILocalUser } from '../../../../models/user';
import resolveRemoteUser from '../../../../remote/resolve-user';
const cursorOption = { fields: { data: false } };
@@ -10,7 +7,7 @@ const cursorOption = { fields: { data: false } };
/**
* Show user(s)
*/
-module.exports = (params, me) => new Promise(async (res, rej) => {
+module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
let user;
// Get 'userId' parameter
@@ -49,7 +46,7 @@ module.exports = (params, me) => new Promise(async (res, rej) => {
return rej('failed to resolve remote user');
}
} else {
- const q = userId !== undefined
+ const q: any = userId !== undefined
? { _id: userId }
: { usernameLower: username.toLowerCase(), host: null };
diff --git a/src/server/api/private/signup.ts b/src/server/api/private/signup.ts
index fee899b374..cb47d400b0 100644
--- a/src/server/api/private/signup.ts
+++ b/src/server/api/private/signup.ts
@@ -1,7 +1,7 @@
import * as Koa from 'koa';
import * as bcrypt from 'bcryptjs';
import { generate as generateKeypair } from '../../../crypto_key';
-import recaptcha = require('recaptcha-promise');
+const recaptcha = require('recaptcha-promise');
import User, { IUser, validateUsername, validatePassword, pack } from '../../../models/user';
import generateUserToken from '../common/generate-native-user-token';
import config from '../../../config';
diff --git a/src/server/api/service/github.ts b/src/server/api/service/github.ts
index da33648a16..9024740a96 100644
--- a/src/server/api/service/github.ts
+++ b/src/server/api/service/github.ts
@@ -11,7 +11,7 @@ const handler = new EventEmitter();
let bot: IUser;
-const post = async text => {
+const post = async (text: string) => {
if (bot == null) {
const account = await User.findOne({
usernameLower: config.github_bot.username.toLowerCase()
@@ -90,7 +90,7 @@ handler.on('push', event => {
case 'refs/heads/master':
const pusher = event.pusher;
const compare = event.compare;
- const commits = event.commits;
+ const commits: any[] = event.commits;
post([
`Pushed by **${pusher.name}** with ?[${commits.length} commit${commits.length > 1 ? 's' : ''}](${compare}):`,
commits.reverse().map(commit => `・[?[${commit.id.substr(0, 7)}](${commit.url})] ${commit.message.split('\n')[0]}`).join('\n'),
diff --git a/src/server/api/stream/notes-stats.ts b/src/server/api/stream/notes-stats.ts
index 739b325848..ab00620018 100644
--- a/src/server/api/stream/notes-stats.ts
+++ b/src/server/api/stream/notes-stats.ts
@@ -4,7 +4,7 @@ import Xev from 'xev';
const ev = new Xev();
export default function(request: websocket.request, connection: websocket.connection): void {
- const onStats = stats => {
+ const onStats = (stats: any) => {
connection.send(JSON.stringify({
type: 'stats',
body: stats
diff --git a/src/server/api/stream/requests.ts b/src/server/api/stream/requests.ts
deleted file mode 100644
index d7bb5e6c5c..0000000000
--- a/src/server/api/stream/requests.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import * as websocket from 'websocket';
-import Xev from 'xev';
-
-const ev = new Xev();
-
-export default function(request: websocket.request, connection: websocket.connection): void {
- const onRequest = request => {
- connection.send(JSON.stringify({
- type: 'request',
- body: request
- }));
- };
-
- ev.addListener('request', onRequest);
-
- connection.on('close', () => {
- ev.removeListener('request', onRequest);
- });
-}
diff --git a/src/server/api/stream/reversi-game.ts b/src/server/api/stream/reversi-game.ts
index 63d9b220b0..ea8a9741d2 100644
--- a/src/server/api/stream/reversi-game.ts
+++ b/src/server/api/stream/reversi-game.ts
@@ -61,7 +61,7 @@ export default function(request: websocket.request, connection: websocket.connec
}
});
- async function updateSettings(settings) {
+ async function updateSettings(settings: any) {
const game = await ReversiGame.findOne({ _id: gameId });
if (game.isStarted) return;
@@ -78,7 +78,7 @@ export default function(request: websocket.request, connection: websocket.connec
publishReversiGameStream(gameId, 'update-settings', settings);
}
- async function initForm(form) {
+ async function initForm(form: any) {
const game = await ReversiGame.findOne({ _id: gameId });
if (game.isStarted) return;
@@ -100,7 +100,7 @@ export default function(request: websocket.request, connection: websocket.connec
});
}
- async function updateForm(id, value) {
+ async function updateForm(id: string, value: any) {
const game = await ReversiGame.findOne({ _id: gameId });
if (game.isStarted) return;
@@ -108,7 +108,7 @@ export default function(request: websocket.request, connection: websocket.connec
const form = game.user1Id.equals(user._id) ? game.form2 : game.form1;
- const item = form.find(i => i.id == id);
+ const item = form.find((i: any) => i.id == id);
if (item == null) return;
@@ -131,7 +131,7 @@ export default function(request: websocket.request, connection: websocket.connec
});
}
- async function message(message) {
+ async function message(message: any) {
message.id = Math.random();
publishReversiGameStream(gameId, 'message', {
userId: user._id,
@@ -246,7 +246,7 @@ export default function(request: websocket.request, connection: websocket.connec
}
// 石を打つ
- async function set(pos) {
+ async function set(pos: number) {
const game = await ReversiGame.findOne({ _id: gameId });
if (!game.isStarted) return;
@@ -315,7 +315,7 @@ export default function(request: websocket.request, connection: websocket.connec
}
}
- async function check(crc32) {
+ async function check(crc32: string) {
const game = await ReversiGame.findOne({ _id: gameId });
if (!game.isStarted) return;
diff --git a/src/server/api/stream/server-stats.ts b/src/server/api/stream/server-stats.ts
index 342170a21e..2a058de6c3 100644
--- a/src/server/api/stream/server-stats.ts
+++ b/src/server/api/stream/server-stats.ts
@@ -4,7 +4,7 @@ import Xev from 'xev';
const ev = new Xev();
export default function(request: websocket.request, connection: websocket.connection): void {
- const onStats = stats => {
+ const onStats = (stats: any) => {
connection.send(JSON.stringify({
type: 'stats',
body: stats
diff --git a/src/server/api/streaming.ts b/src/server/api/streaming.ts
index a3e4ed6f85..81adff0b58 100644
--- a/src/server/api/streaming.ts
+++ b/src/server/api/streaming.ts
@@ -14,7 +14,6 @@ import reversiGameStream from './stream/reversi-game';
import reversiStream from './stream/reversi';
import serverStatsStream from './stream/server-stats';
import notesStatsStream from './stream/notes-stats';
-import requestsStream from './stream/requests';
import { ParsedUrlQuery } from 'querystring';
import authenticate from './authenticate';
@@ -39,11 +38,6 @@ module.exports = (server: http.Server) => {
return;
}
- if (request.resourceURL.pathname === '/requests') {
- requestsStream(request, connection);
- return;
- }
-
// Connect to Redis
const subscriber = redis.createClient(
config.redis.port, config.redis.host);