wip
This commit is contained in:
		
							parent
							
								
									d53d45f797
								
							
						
					
					
						commit
						11439afde7
					
				
					 54 changed files with 260 additions and 260 deletions
				
			
		| 
						 | 
					@ -89,7 +89,7 @@
 | 
				
			||||||
		"autwh": "0.1.0",
 | 
							"autwh": "0.1.0",
 | 
				
			||||||
		"bcryptjs": "2.4.3",
 | 
							"bcryptjs": "2.4.3",
 | 
				
			||||||
		"bootstrap-vue": "2.0.0-rc.11",
 | 
							"bootstrap-vue": "2.0.0-rc.11",
 | 
				
			||||||
		"cafy": "8.0.0",
 | 
							"cafy": "11.0.0",
 | 
				
			||||||
		"chalk": "2.4.1",
 | 
							"chalk": "2.4.1",
 | 
				
			||||||
		"crc-32": "1.2.0",
 | 
							"crc-32": "1.2.0",
 | 
				
			||||||
		"css-loader": "0.28.11",
 | 
							"css-loader": "0.28.11",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
import * as mongo from 'mongodb';
 | 
					import * as mongo from 'mongodb';
 | 
				
			||||||
import { Query } from 'cafy';
 | 
					import { Context } from 'cafy';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const isAnId = (x: any) => mongo.ObjectID.isValid(x);
 | 
					export const isAnId = (x: any) => mongo.ObjectID.isValid(x);
 | 
				
			||||||
export const isNotAnId = (x: any) => !isAnId(x);
 | 
					export const isNotAnId = (x: any) => !isAnId(x);
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,7 @@ export const isNotAnId = (x: any) => !isAnId(x);
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * ID
 | 
					 * ID
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
export default class ID extends Query<mongo.ObjectID> {
 | 
					export default class ID extends Context<mongo.ObjectID> {
 | 
				
			||||||
	constructor() {
 | 
						constructor() {
 | 
				
			||||||
		super();
 | 
							super();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@ import Note from '../../../../models/note';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 365, limitErr] = $.num.optional().range(1, 365).get(params.limit);
 | 
						const [limit = 365, limitErr] = $.num.optional.range(1, 365).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const datas = await Note
 | 
						const datas = await Note
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@ import User from '../../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 365, limitErr] = $.num.optional().range(1, 365).get(params.limit);
 | 
						const [limit = 365, limitErr] = $.num.optional.range(1, 365).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const users = await User
 | 
						const users = await User
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,7 @@ import Note from '../../../../../models/note';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 365, limitErr] = $.num.optional().range(1, 365).get(params.limit);
 | 
						const [limit = 365, limitErr] = $.num.optional.range(1, 365).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'userId' parameter
 | 
						// Get 'userId' parameter
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -78,7 +78,7 @@ module.exports = async (params: any, user: ILocalUser) => new Promise(async (res
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'callbackUrl' parameter
 | 
						// Get 'callbackUrl' parameter
 | 
				
			||||||
	// TODO: Check it is valid url
 | 
						// TODO: Check it is valid url
 | 
				
			||||||
	const [callbackUrl = null, callbackUrlErr] = $.str.optional().nullable().get(params.callbackUrl);
 | 
						const [callbackUrl = null, callbackUrlErr] = $.str.optional.nullable.get(params.callbackUrl);
 | 
				
			||||||
	if (callbackUrlErr) return rej('invalid callbackUrl param');
 | 
						if (callbackUrlErr) return rej('invalid callbackUrl param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Generate secret
 | 
						// Generate secret
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -39,11 +39,11 @@ module.exports = (params: any, user: ILocalUser, app: IApp) => new Promise(async
 | 
				
			||||||
	const isSecure = user != null && app == null;
 | 
						const isSecure = user != null && app == null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'appId' parameter
 | 
						// Get 'appId' parameter
 | 
				
			||||||
	const [appId, appIdErr] = $.type(ID).optional().get(params.appId);
 | 
						const [appId, appIdErr] = $.type(ID).optional.get(params.appId);
 | 
				
			||||||
	if (appIdErr) return rej('invalid appId param');
 | 
						if (appIdErr) return rej('invalid appId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'nameId' parameter
 | 
						// Get 'nameId' parameter
 | 
				
			||||||
	const [nameId, nameIdErr] = $.str.optional().get(params.nameId);
 | 
						const [nameId, nameIdErr] = $.str.optional.get(params.nameId);
 | 
				
			||||||
	if (nameIdErr) return rej('invalid nameId param');
 | 
						if (nameIdErr) return rej('invalid nameId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (appId === undefined && nameId === undefined) {
 | 
						if (appId === undefined && nameId === undefined) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,15 +7,15 @@ import { ILocalUser } from '../../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = async (params: any, user: ILocalUser) => {
 | 
					module.exports = async (params: any, user: ILocalUser) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) throw 'invalid limit param';
 | 
						if (limitErr) throw 'invalid limit param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceId' parameter
 | 
						// Get 'sinceId' parameter
 | 
				
			||||||
	const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
 | 
						const [sinceId, sinceIdErr] = $.type(ID).optional.get(params.sinceId);
 | 
				
			||||||
	if (sinceIdErr) throw 'invalid sinceId param';
 | 
						if (sinceIdErr) throw 'invalid sinceId param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilId' parameter
 | 
						// Get 'untilId' parameter
 | 
				
			||||||
	const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
 | 
						const [untilId, untilIdErr] = $.type(ID).optional.get(params.untilId);
 | 
				
			||||||
	if (untilIdErr) throw 'invalid untilId param';
 | 
						if (untilIdErr) throw 'invalid untilId param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check if both of sinceId and untilId is specified
 | 
						// Check if both of sinceId and untilId is specified
 | 
				
			||||||
| 
						 | 
					@ -24,11 +24,11 @@ module.exports = async (params: any, user: ILocalUser) => {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'folderId' parameter
 | 
						// Get 'folderId' parameter
 | 
				
			||||||
	const [folderId = null, folderIdErr] = $.type(ID).optional().nullable().get(params.folderId);
 | 
						const [folderId = null, folderIdErr] = $.type(ID).optional.nullable.get(params.folderId);
 | 
				
			||||||
	if (folderIdErr) throw 'invalid folderId param';
 | 
						if (folderIdErr) throw 'invalid folderId param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'type' parameter
 | 
						// Get 'type' parameter
 | 
				
			||||||
	const [type, typeErr] = $.str.optional().match(/^[a-zA-Z\/\-\*]+$/).get(params.type);
 | 
						const [type, typeErr] = $.str.optional.match(/^[a-zA-Z\/\-\*]+$/).get(params.type);
 | 
				
			||||||
	if (typeErr) throw 'invalid type param';
 | 
						if (typeErr) throw 'invalid type param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Construct query
 | 
						// Construct query
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -28,7 +28,7 @@ module.exports = async (file: any, params: any, user: ILocalUser): Promise<any>
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'folderId' parameter
 | 
						// Get 'folderId' parameter
 | 
				
			||||||
	const [folderId = null, folderIdErr] = $.type(ID).optional().nullable().get(params.folderId);
 | 
						const [folderId = null, folderIdErr] = $.type(ID).optional.nullable.get(params.folderId);
 | 
				
			||||||
	if (folderIdErr) throw 'invalid folderId param';
 | 
						if (folderIdErr) throw 'invalid folderId param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	function cleanup() {
 | 
						function cleanup() {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,7 +11,7 @@ module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej)
 | 
				
			||||||
	if (nameErr) return rej('invalid name param');
 | 
						if (nameErr) return rej('invalid name param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'folderId' parameter
 | 
						// Get 'folderId' parameter
 | 
				
			||||||
	const [folderId = null, folderIdErr] = $.type(ID).optional().nullable().get(params.folderId);
 | 
						const [folderId = null, folderIdErr] = $.type(ID).optional.nullable.get(params.folderId);
 | 
				
			||||||
	if (folderIdErr) return rej('invalid folderId param');
 | 
						if (folderIdErr) return rej('invalid folderId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Issue query
 | 
						// Issue query
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,12 +24,12 @@ module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'name' parameter
 | 
						// Get 'name' parameter
 | 
				
			||||||
	const [name, nameErr] = $.str.optional().pipe(validateFileName).get(params.name);
 | 
						const [name, nameErr] = $.str.optional.pipe(validateFileName).get(params.name);
 | 
				
			||||||
	if (nameErr) return rej('invalid name param');
 | 
						if (nameErr) return rej('invalid name param');
 | 
				
			||||||
	if (name) file.filename = name;
 | 
						if (name) file.filename = name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'folderId' parameter
 | 
						// Get 'folderId' parameter
 | 
				
			||||||
	const [folderId, folderIdErr] = $.type(ID).optional().nullable().get(params.folderId);
 | 
						const [folderId, folderIdErr] = $.type(ID).optional.nullable.get(params.folderId);
 | 
				
			||||||
	if (folderIdErr) return rej('invalid folderId param');
 | 
						if (folderIdErr) return rej('invalid folderId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (folderId !== undefined) {
 | 
						if (folderId !== undefined) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@ module.exports = async (params: any, user: ILocalUser): Promise<any> => {
 | 
				
			||||||
	if (urlErr) throw 'invalid url param';
 | 
						if (urlErr) throw 'invalid url param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'folderId' parameter
 | 
						// Get 'folderId' parameter
 | 
				
			||||||
	const [folderId = null, folderIdErr] = $.type(ID).optional().nullable().get(params.folderId);
 | 
						const [folderId = null, folderIdErr] = $.type(ID).optional.nullable.get(params.folderId);
 | 
				
			||||||
	if (folderIdErr) throw 'invalid folderId param';
 | 
						if (folderIdErr) throw 'invalid folderId param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return pack(await uploadFromUrl(url, user, folderId));
 | 
						return pack(await uploadFromUrl(url, user, folderId));
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,15 +7,15 @@ import { ILocalUser } from '../../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceId' parameter
 | 
						// Get 'sinceId' parameter
 | 
				
			||||||
	const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
 | 
						const [sinceId, sinceIdErr] = $.type(ID).optional.get(params.sinceId);
 | 
				
			||||||
	if (sinceIdErr) return rej('invalid sinceId param');
 | 
						if (sinceIdErr) return rej('invalid sinceId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilId' parameter
 | 
						// Get 'untilId' parameter
 | 
				
			||||||
	const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
 | 
						const [untilId, untilIdErr] = $.type(ID).optional.get(params.untilId);
 | 
				
			||||||
	if (untilIdErr) return rej('invalid untilId param');
 | 
						if (untilIdErr) return rej('invalid untilId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check if both of sinceId and untilId is specified
 | 
						// Check if both of sinceId and untilId is specified
 | 
				
			||||||
| 
						 | 
					@ -24,7 +24,7 @@ module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'folderId' parameter
 | 
						// Get 'folderId' parameter
 | 
				
			||||||
	const [folderId = null, folderIdErr] = $.type(ID).optional().nullable().get(params.folderId);
 | 
						const [folderId = null, folderIdErr] = $.type(ID).optional.nullable.get(params.folderId);
 | 
				
			||||||
	if (folderIdErr) return rej('invalid folderId param');
 | 
						if (folderIdErr) return rej('invalid folderId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Construct query
 | 
						// Construct query
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,11 +8,11 @@ import { ILocalUser } from '../../../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'name' parameter
 | 
						// Get 'name' parameter
 | 
				
			||||||
	const [name = '無題のフォルダー', nameErr] = $.str.optional().pipe(isValidFolderName).get(params.name);
 | 
						const [name = '無題のフォルダー', nameErr] = $.str.optional.pipe(isValidFolderName).get(params.name);
 | 
				
			||||||
	if (nameErr) return rej('invalid name param');
 | 
						if (nameErr) return rej('invalid name param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'parentId' parameter
 | 
						// Get 'parentId' parameter
 | 
				
			||||||
	const [parentId = null, parentIdErr] = $.type(ID).optional().nullable().get(params.parentId);
 | 
						const [parentId = null, parentIdErr] = $.type(ID).optional.nullable.get(params.parentId);
 | 
				
			||||||
	if (parentIdErr) return rej('invalid parentId param');
 | 
						if (parentIdErr) return rej('invalid parentId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// If the parent folder is specified
 | 
						// If the parent folder is specified
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,7 +11,7 @@ module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej)
 | 
				
			||||||
	if (nameErr) return rej('invalid name param');
 | 
						if (nameErr) return rej('invalid name param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'parentId' parameter
 | 
						// Get 'parentId' parameter
 | 
				
			||||||
	const [parentId = null, parentIdErr] = $.type(ID).optional().nullable().get(params.parentId);
 | 
						const [parentId = null, parentIdErr] = $.type(ID).optional.nullable.get(params.parentId);
 | 
				
			||||||
	if (parentIdErr) return rej('invalid parentId param');
 | 
						if (parentIdErr) return rej('invalid parentId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Issue query
 | 
						// Issue query
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,12 +23,12 @@ module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'name' parameter
 | 
						// Get 'name' parameter
 | 
				
			||||||
	const [name, nameErr] = $.str.optional().pipe(isValidFolderName).get(params.name);
 | 
						const [name, nameErr] = $.str.optional.pipe(isValidFolderName).get(params.name);
 | 
				
			||||||
	if (nameErr) return rej('invalid name param');
 | 
						if (nameErr) return rej('invalid name param');
 | 
				
			||||||
	if (name) folder.name = name;
 | 
						if (name) folder.name = name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'parentId' parameter
 | 
						// Get 'parentId' parameter
 | 
				
			||||||
	const [parentId, parentIdErr] = $.type(ID).optional().nullable().get(params.parentId);
 | 
						const [parentId, parentIdErr] = $.type(ID).optional.nullable.get(params.parentId);
 | 
				
			||||||
	if (parentIdErr) return rej('invalid parentId param');
 | 
						if (parentIdErr) return rej('invalid parentId param');
 | 
				
			||||||
	if (parentId !== undefined) {
 | 
						if (parentId !== undefined) {
 | 
				
			||||||
		if (parentId === null) {
 | 
							if (parentId === null) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,15 +7,15 @@ import { ILocalUser } from '../../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceId' parameter
 | 
						// Get 'sinceId' parameter
 | 
				
			||||||
	const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
 | 
						const [sinceId, sinceIdErr] = $.type(ID).optional.get(params.sinceId);
 | 
				
			||||||
	if (sinceIdErr) return rej('invalid sinceId param');
 | 
						if (sinceIdErr) return rej('invalid sinceId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilId' parameter
 | 
						// Get 'untilId' parameter
 | 
				
			||||||
	const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
 | 
						const [untilId, untilIdErr] = $.type(ID).optional.get(params.untilId);
 | 
				
			||||||
	if (untilIdErr) return rej('invalid untilId param');
 | 
						if (untilIdErr) return rej('invalid untilId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check if both of sinceId and untilId is specified
 | 
						// Check if both of sinceId and untilId is specified
 | 
				
			||||||
| 
						 | 
					@ -24,7 +24,7 @@ module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'type' parameter
 | 
						// Get 'type' parameter
 | 
				
			||||||
	const [type, typeErr] = $.str.optional().match(/^[a-zA-Z\/\-\*]+$/).get(params.type);
 | 
						const [type, typeErr] = $.str.optional.match(/^[a-zA-Z\/\-\*]+$/).get(params.type);
 | 
				
			||||||
	if (typeErr) return rej('invalid type param');
 | 
						if (typeErr) return rej('invalid type param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Construct query
 | 
						// Construct query
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,15 +8,15 @@ import { ILocalUser } from '../../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'offset' parameter
 | 
						// Get 'offset' parameter
 | 
				
			||||||
	const [offset = 0, offsetErr] = $.num.optional().min(0).get(params.offset);
 | 
						const [offset = 0, offsetErr] = $.num.optional.min(0).get(params.offset);
 | 
				
			||||||
	if (offsetErr) return rej('invalid offset param');
 | 
						if (offsetErr) return rej('invalid offset param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sort' parameter
 | 
						// Get 'sort' parameter
 | 
				
			||||||
	const [sort = 'desc', sortError] = $.str.optional().or('desc asc').get(params.sort);
 | 
						const [sort = 'desc', sortError] = $.str.optional.or('desc asc').get(params.sort);
 | 
				
			||||||
	if (sortError) return rej('invalid sort param');
 | 
						if (sortError) return rej('invalid sort param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get tokens
 | 
						// Get tokens
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,15 +7,15 @@ import { ILocalUser } from '../../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceId' parameter
 | 
						// Get 'sinceId' parameter
 | 
				
			||||||
	const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
 | 
						const [sinceId, sinceIdErr] = $.type(ID).optional.get(params.sinceId);
 | 
				
			||||||
	if (sinceIdErr) return rej('invalid sinceId param');
 | 
						if (sinceIdErr) return rej('invalid sinceId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilId' parameter
 | 
						// Get 'untilId' parameter
 | 
				
			||||||
	const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
 | 
						const [untilId, untilIdErr] = $.type(ID).optional.get(params.untilId);
 | 
				
			||||||
	if (untilIdErr) return rej('invalid untilId param');
 | 
						if (untilIdErr) return rej('invalid untilId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check if both of sinceId and untilId is specified
 | 
						// Check if both of sinceId and untilId is specified
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,27 +12,27 @@ import { ILocalUser } from '../../../../models/user';
 | 
				
			||||||
module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'following' parameter
 | 
						// Get 'following' parameter
 | 
				
			||||||
	const [following = false, followingError] =
 | 
						const [following = false, followingError] =
 | 
				
			||||||
		$.bool.optional().get(params.following);
 | 
							$.bool.optional.get(params.following);
 | 
				
			||||||
	if (followingError) return rej('invalid following param');
 | 
						if (followingError) return rej('invalid following param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'markAsRead' parameter
 | 
						// Get 'markAsRead' parameter
 | 
				
			||||||
	const [markAsRead = true, markAsReadErr] = $.bool.optional().get(params.markAsRead);
 | 
						const [markAsRead = true, markAsReadErr] = $.bool.optional.get(params.markAsRead);
 | 
				
			||||||
	if (markAsReadErr) return rej('invalid markAsRead param');
 | 
						if (markAsReadErr) return rej('invalid markAsRead param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'type' parameter
 | 
						// Get 'type' parameter
 | 
				
			||||||
	const [type, typeErr] = $.arr($.str).optional().unique().get(params.type);
 | 
						const [type, typeErr] = $.arr($.str).optional.unique().get(params.type);
 | 
				
			||||||
	if (typeErr) return rej('invalid type param');
 | 
						if (typeErr) return rej('invalid type param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceId' parameter
 | 
						// Get 'sinceId' parameter
 | 
				
			||||||
	const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
 | 
						const [sinceId, sinceIdErr] = $.type(ID).optional.get(params.sinceId);
 | 
				
			||||||
	if (sinceIdErr) return rej('invalid sinceId param');
 | 
						if (sinceIdErr) return rej('invalid sinceId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilId' parameter
 | 
						// Get 'untilId' parameter
 | 
				
			||||||
	const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
 | 
						const [untilId, untilIdErr] = $.type(ID).optional.get(params.untilId);
 | 
				
			||||||
	if (untilIdErr) return rej('invalid untilId param');
 | 
						if (untilIdErr) return rej('invalid untilId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check if both of sinceId and untilId is specified
 | 
						// Check if both of sinceId and untilId is specified
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,15 +7,15 @@ import { ILocalUser } from '../../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceId' parameter
 | 
						// Get 'sinceId' parameter
 | 
				
			||||||
	const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
 | 
						const [sinceId, sinceIdErr] = $.type(ID).optional.get(params.sinceId);
 | 
				
			||||||
	if (sinceIdErr) return rej('invalid sinceId param');
 | 
						if (sinceIdErr) return rej('invalid sinceId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilId' parameter
 | 
						// Get 'untilId' parameter
 | 
				
			||||||
	const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
 | 
						const [untilId, untilIdErr] = $.type(ID).optional.get(params.untilId);
 | 
				
			||||||
	if (untilIdErr) return rej('invalid untilId param');
 | 
						if (untilIdErr) return rej('invalid untilId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check if both of sinceId and untilId is specified
 | 
						// Check if both of sinceId and untilId is specified
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,57 +14,57 @@ module.exports = async (params: any, user: ILocalUser, app: IApp) => new Promise
 | 
				
			||||||
	const updates = {} as any;
 | 
						const updates = {} as any;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'name' parameter
 | 
						// Get 'name' parameter
 | 
				
			||||||
	const [name, nameErr] = $.str.optional().nullable().pipe(isValidName).get(params.name);
 | 
						const [name, nameErr] = $.str.optional.nullable.pipe(isValidName).get(params.name);
 | 
				
			||||||
	if (nameErr) return rej('invalid name param');
 | 
						if (nameErr) return rej('invalid name param');
 | 
				
			||||||
	if (name) updates.name = name;
 | 
						if (name) updates.name = name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'description' parameter
 | 
						// Get 'description' parameter
 | 
				
			||||||
	const [description, descriptionErr] = $.str.optional().nullable().pipe(isValidDescription).get(params.description);
 | 
						const [description, descriptionErr] = $.str.optional.nullable.pipe(isValidDescription).get(params.description);
 | 
				
			||||||
	if (descriptionErr) return rej('invalid description param');
 | 
						if (descriptionErr) return rej('invalid description param');
 | 
				
			||||||
	if (description !== undefined) updates.description = description;
 | 
						if (description !== undefined) updates.description = description;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'location' parameter
 | 
						// Get 'location' parameter
 | 
				
			||||||
	const [location, locationErr] = $.str.optional().nullable().pipe(isValidLocation).get(params.location);
 | 
						const [location, locationErr] = $.str.optional.nullable.pipe(isValidLocation).get(params.location);
 | 
				
			||||||
	if (locationErr) return rej('invalid location param');
 | 
						if (locationErr) return rej('invalid location param');
 | 
				
			||||||
	if (location !== undefined) updates['profile.location'] = location;
 | 
						if (location !== undefined) updates['profile.location'] = location;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'birthday' parameter
 | 
						// Get 'birthday' parameter
 | 
				
			||||||
	const [birthday, birthdayErr] = $.str.optional().nullable().pipe(isValidBirthday).get(params.birthday);
 | 
						const [birthday, birthdayErr] = $.str.optional.nullable.pipe(isValidBirthday).get(params.birthday);
 | 
				
			||||||
	if (birthdayErr) return rej('invalid birthday param');
 | 
						if (birthdayErr) return rej('invalid birthday param');
 | 
				
			||||||
	if (birthday !== undefined) updates['profile.birthday'] = birthday;
 | 
						if (birthday !== undefined) updates['profile.birthday'] = birthday;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'avatarId' parameter
 | 
						// Get 'avatarId' parameter
 | 
				
			||||||
	const [avatarId, avatarIdErr] = $.type(ID).optional().nullable().get(params.avatarId);
 | 
						const [avatarId, avatarIdErr] = $.type(ID).optional.nullable.get(params.avatarId);
 | 
				
			||||||
	if (avatarIdErr) return rej('invalid avatarId param');
 | 
						if (avatarIdErr) return rej('invalid avatarId param');
 | 
				
			||||||
	if (avatarId !== undefined) updates.avatarId = avatarId;
 | 
						if (avatarId !== undefined) updates.avatarId = avatarId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'bannerId' parameter
 | 
						// Get 'bannerId' parameter
 | 
				
			||||||
	const [bannerId, bannerIdErr] = $.type(ID).optional().nullable().get(params.bannerId);
 | 
						const [bannerId, bannerIdErr] = $.type(ID).optional.nullable.get(params.bannerId);
 | 
				
			||||||
	if (bannerIdErr) return rej('invalid bannerId param');
 | 
						if (bannerIdErr) return rej('invalid bannerId param');
 | 
				
			||||||
	if (bannerId !== undefined) updates.bannerId = bannerId;
 | 
						if (bannerId !== undefined) updates.bannerId = bannerId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'wallpaperId' parameter
 | 
						// Get 'wallpaperId' parameter
 | 
				
			||||||
	const [wallpaperId, wallpaperIdErr] = $.type(ID).optional().nullable().get(params.wallpaperId);
 | 
						const [wallpaperId, wallpaperIdErr] = $.type(ID).optional.nullable.get(params.wallpaperId);
 | 
				
			||||||
	if (wallpaperIdErr) return rej('invalid wallpaperId param');
 | 
						if (wallpaperIdErr) return rej('invalid wallpaperId param');
 | 
				
			||||||
	if (wallpaperId !== undefined) updates.wallpaperId = wallpaperId;
 | 
						if (wallpaperId !== undefined) updates.wallpaperId = wallpaperId;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'isLocked' parameter
 | 
						// Get 'isLocked' parameter
 | 
				
			||||||
	const [isLocked, isLockedErr] = $.bool.optional().get(params.isLocked);
 | 
						const [isLocked, isLockedErr] = $.bool.optional.get(params.isLocked);
 | 
				
			||||||
	if (isLockedErr) return rej('invalid isLocked param');
 | 
						if (isLockedErr) return rej('invalid isLocked param');
 | 
				
			||||||
	if (isLocked != null) updates.isLocked = isLocked;
 | 
						if (isLocked != null) updates.isLocked = isLocked;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'isBot' parameter
 | 
						// Get 'isBot' parameter
 | 
				
			||||||
	const [isBot, isBotErr] = $.bool.optional().get(params.isBot);
 | 
						const [isBot, isBotErr] = $.bool.optional.get(params.isBot);
 | 
				
			||||||
	if (isBotErr) return rej('invalid isBot param');
 | 
						if (isBotErr) return rej('invalid isBot param');
 | 
				
			||||||
	if (isBot != null) updates.isBot = isBot;
 | 
						if (isBot != null) updates.isBot = isBot;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'isCat' parameter
 | 
						// Get 'isCat' parameter
 | 
				
			||||||
	const [isCat, isCatErr] = $.bool.optional().get(params.isCat);
 | 
						const [isCat, isCatErr] = $.bool.optional.get(params.isCat);
 | 
				
			||||||
	if (isCatErr) return rej('invalid isCat param');
 | 
						if (isCatErr) return rej('invalid isCat param');
 | 
				
			||||||
	if (isCat != null) updates.isCat = isCat;
 | 
						if (isCat != null) updates.isCat = isCat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'autoWatch' parameter
 | 
						// Get 'autoWatch' parameter
 | 
				
			||||||
	const [autoWatch, autoWatchErr] = $.bool.optional().get(params.autoWatch);
 | 
						const [autoWatch, autoWatchErr] = $.bool.optional.get(params.autoWatch);
 | 
				
			||||||
	if (autoWatchErr) return rej('invalid autoWatch param');
 | 
						if (autoWatchErr) return rej('invalid autoWatch param');
 | 
				
			||||||
	if (autoWatch != null) updates['settings.autoWatch'] = autoWatch;
 | 
						if (autoWatch != null) updates['settings.autoWatch'] = autoWatch;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,7 +11,7 @@ module.exports = async (params: any, user: ILocalUser) => new Promise(async (res
 | 
				
			||||||
	if (nameErr) return rej('invalid name param');
 | 
						if (nameErr) return rej('invalid name param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'value' parameter
 | 
						// Get 'value' parameter
 | 
				
			||||||
	const [value, valueErr] = $.any.nullable().get(params.value);
 | 
						const [value, valueErr] = $.any.nullable.get(params.value);
 | 
				
			||||||
	if (valueErr) return rej('invalid value param');
 | 
						if (valueErr) return rej('invalid value param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const x: any = {};
 | 
						const x: any = {};
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,7 @@ import { ILocalUser } from '../../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const mute = await Mute.find({
 | 
						const mute = await Mute.find({
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,19 +26,19 @@ module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'markAsRead' parameter
 | 
						// Get 'markAsRead' parameter
 | 
				
			||||||
	const [markAsRead = true, markAsReadErr] = $.bool.optional().get(params.markAsRead);
 | 
						const [markAsRead = true, markAsReadErr] = $.bool.optional.get(params.markAsRead);
 | 
				
			||||||
	if (markAsReadErr) return rej('invalid markAsRead param');
 | 
						if (markAsReadErr) return rej('invalid markAsRead param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceId' parameter
 | 
						// Get 'sinceId' parameter
 | 
				
			||||||
	const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
 | 
						const [sinceId, sinceIdErr] = $.type(ID).optional.get(params.sinceId);
 | 
				
			||||||
	if (sinceIdErr) return rej('invalid sinceId param');
 | 
						if (sinceIdErr) return rej('invalid sinceId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilId' parameter
 | 
						// Get 'untilId' parameter
 | 
				
			||||||
	const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
 | 
						const [untilId, untilIdErr] = $.type(ID).optional.get(params.untilId);
 | 
				
			||||||
	if (untilIdErr) return rej('invalid untilId param');
 | 
						if (untilIdErr) return rej('invalid untilId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check if both of sinceId and untilId is specified
 | 
						// Check if both of sinceId and untilId is specified
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -38,11 +38,11 @@ module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'text' parameter
 | 
						// Get 'text' parameter
 | 
				
			||||||
	const [text, textErr] = $.str.optional().pipe(isValidText).get(params.text);
 | 
						const [text, textErr] = $.str.optional.pipe(isValidText).get(params.text);
 | 
				
			||||||
	if (textErr) return rej('invalid text');
 | 
						if (textErr) return rej('invalid text');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'fileId' parameter
 | 
						// Get 'fileId' parameter
 | 
				
			||||||
	const [fileId, fileIdErr] = $.type(ID).optional().get(params.fileId);
 | 
						const [fileId, fileIdErr] = $.type(ID).optional.get(params.fileId);
 | 
				
			||||||
	if (fileIdErr) return rej('invalid fileId param');
 | 
						if (fileIdErr) return rej('invalid fileId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	let file = null;
 | 
						let file = null;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,15 +8,15 @@ import { getFriendIds } from '../../common/get-friends';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'iknow' parameter
 | 
						// Get 'iknow' parameter
 | 
				
			||||||
	const [iknow = false, iknowErr] = $.bool.optional().get(params.iknow);
 | 
						const [iknow = false, iknowErr] = $.bool.optional.get(params.iknow);
 | 
				
			||||||
	if (iknowErr) return rej('invalid iknow param');
 | 
						if (iknowErr) return rej('invalid iknow param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 30, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 30, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'cursor' parameter
 | 
						// Get 'cursor' parameter
 | 
				
			||||||
	const [cursor = null, cursorErr] = $.type(ID).optional().get(params.cursor);
 | 
						const [cursor = null, cursorErr] = $.type(ID).optional.get(params.cursor);
 | 
				
			||||||
	if (cursorErr) return rej('invalid cursor param');
 | 
						if (cursorErr) return rej('invalid cursor param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Construct query
 | 
						// Construct query
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,11 +7,11 @@ import { ILocalUser } from '../../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'offset' parameter
 | 
						// Get 'offset' parameter
 | 
				
			||||||
	const [offset = 0, offsetErr] = $.num.optional().min(0).get(params.offset);
 | 
						const [offset = 0, offsetErr] = $.num.optional.min(0).get(params.offset);
 | 
				
			||||||
	if (offsetErr) return rej('invalid offset param');
 | 
						if (offsetErr) return rej('invalid offset param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const query = {
 | 
						const query = {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,39 +9,39 @@ import Note, { pack } from '../../../models/note';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'local' parameter
 | 
						// Get 'local' parameter
 | 
				
			||||||
	const [local, localErr] = $.bool.optional().get(params.local);
 | 
						const [local, localErr] = $.bool.optional.get(params.local);
 | 
				
			||||||
	if (localErr) return rej('invalid local param');
 | 
						if (localErr) return rej('invalid local param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'reply' parameter
 | 
						// Get 'reply' parameter
 | 
				
			||||||
	const [reply, replyErr] = $.bool.optional().get(params.reply);
 | 
						const [reply, replyErr] = $.bool.optional.get(params.reply);
 | 
				
			||||||
	if (replyErr) return rej('invalid reply param');
 | 
						if (replyErr) return rej('invalid reply param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'renote' parameter
 | 
						// Get 'renote' parameter
 | 
				
			||||||
	const [renote, renoteErr] = $.bool.optional().get(params.renote);
 | 
						const [renote, renoteErr] = $.bool.optional.get(params.renote);
 | 
				
			||||||
	if (renoteErr) return rej('invalid renote param');
 | 
						if (renoteErr) return rej('invalid renote param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'media' parameter
 | 
						// Get 'media' parameter
 | 
				
			||||||
	const [media, mediaErr] = $.bool.optional().get(params.media);
 | 
						const [media, mediaErr] = $.bool.optional.get(params.media);
 | 
				
			||||||
	if (mediaErr) return rej('invalid media param');
 | 
						if (mediaErr) return rej('invalid media param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'poll' parameter
 | 
						// Get 'poll' parameter
 | 
				
			||||||
	const [poll, pollErr] = $.bool.optional().get(params.poll);
 | 
						const [poll, pollErr] = $.bool.optional.get(params.poll);
 | 
				
			||||||
	if (pollErr) return rej('invalid poll param');
 | 
						if (pollErr) return rej('invalid poll param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'bot' parameter
 | 
						// Get 'bot' parameter
 | 
				
			||||||
	//const [bot, botErr] = $.bool.optional().get(params.bot);
 | 
						//const [bot, botErr] = $.bool.optional.get(params.bot);
 | 
				
			||||||
	//if (botErr) return rej('invalid bot param');
 | 
						//if (botErr) return rej('invalid bot param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceId' parameter
 | 
						// Get 'sinceId' parameter
 | 
				
			||||||
	const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
 | 
						const [sinceId, sinceIdErr] = $.type(ID).optional.get(params.sinceId);
 | 
				
			||||||
	if (sinceIdErr) return rej('invalid sinceId param');
 | 
						if (sinceIdErr) return rej('invalid sinceId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilId' parameter
 | 
						// Get 'untilId' parameter
 | 
				
			||||||
	const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
 | 
						const [untilId, untilIdErr] = $.type(ID).optional.get(params.untilId);
 | 
				
			||||||
	if (untilIdErr) return rej('invalid untilId param');
 | 
						if (untilIdErr) return rej('invalid untilId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check if both of sinceId and untilId is specified
 | 
						// Check if both of sinceId and untilId is specified
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,11 +11,11 @@ module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej)
 | 
				
			||||||
	if (noteIdErr) return rej('invalid noteId param');
 | 
						if (noteIdErr) return rej('invalid noteId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'offset' parameter
 | 
						// Get 'offset' parameter
 | 
				
			||||||
	const [offset = 0, offsetErr] = $.num.optional().min(0).get(params.offset);
 | 
						const [offset = 0, offsetErr] = $.num.optional.min(0).get(params.offset);
 | 
				
			||||||
	if (offsetErr) return rej('invalid offset param');
 | 
						if (offsetErr) return rej('invalid offset param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Lookup note
 | 
						// Lookup note
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,33 +1,83 @@
 | 
				
			||||||
import $ from 'cafy'; import ID from '../../../../cafy-id';
 | 
					import $ from 'cafy'; import ID from '../../../../cafy-id';
 | 
				
			||||||
import Note, { INote, isValidText, isValidCw, pack } from '../../../../models/note';
 | 
					import Note, { INote, isValidText, isValidCw, pack } from '../../../../models/note';
 | 
				
			||||||
import User, { ILocalUser, IUser } from '../../../../models/user';
 | 
					import User, { ILocalUser, IUser } from '../../../../models/user';
 | 
				
			||||||
import DriveFile from '../../../../models/drive-file';
 | 
					import DriveFile, { IDriveFile } from '../../../../models/drive-file';
 | 
				
			||||||
import create from '../../../../services/note/create';
 | 
					import create from '../../../../services/note/create';
 | 
				
			||||||
import { IApp } from '../../../../models/app';
 | 
					import { IApp } from '../../../../models/app';
 | 
				
			||||||
import getParams from '../../get-params';
 | 
					import getParams from '../../get-params';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const meta = {
 | 
					export const meta = {
 | 
				
			||||||
	params: {
 | 
						params: {
 | 
				
			||||||
		visibility: {
 | 
							visibility: $.str.optional.or(['public', 'home', 'followers', 'specified', 'private']).note({
 | 
				
			||||||
			def: $.str.optional().or(['public', 'home', 'followers', 'specified', 'private']),
 | 
					 | 
				
			||||||
			default: 'public',
 | 
								default: 'public',
 | 
				
			||||||
			desc: {
 | 
								desc: {
 | 
				
			||||||
				ja: '投稿の公開範囲'
 | 
									ja: '投稿の公開範囲'
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		},
 | 
							}),
 | 
				
			||||||
		visibleUserIds: {
 | 
					
 | 
				
			||||||
			def: $.arr($.type(ID)).optional().unique().min(1),
 | 
							visibleUserIds: $.arr($.type(ID)).optional.unique().min(1).note({
 | 
				
			||||||
			desc: {
 | 
								desc: {
 | 
				
			||||||
				ja: '(投稿の公開範囲が specified の場合)投稿を閲覧できるユーザー'
 | 
									ja: '(投稿の公開範囲が specified の場合)投稿を閲覧できるユーザー'
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		},
 | 
							}),
 | 
				
			||||||
		text: {
 | 
					
 | 
				
			||||||
			def: $.str.optional().nullable().pipe(isValidText),
 | 
							text: $.str.optional.nullable.pipe(isValidText).note({
 | 
				
			||||||
			default: null,
 | 
								default: null,
 | 
				
			||||||
			desc: {
 | 
								desc: {
 | 
				
			||||||
				ja: '投稿内容'
 | 
									ja: '投稿内容'
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		},
 | 
							}),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							cw: $.str.optional.nullable.pipe(isValidCw).note({
 | 
				
			||||||
 | 
								desc: {
 | 
				
			||||||
 | 
									ja: 'コンテンツの警告。このパラメータを指定すると設定したテキストで投稿のコンテンツを隠す事が出来ます。'
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							viaMobile: $.bool.optional.note({
 | 
				
			||||||
 | 
								default: false,
 | 
				
			||||||
 | 
								desc: {
 | 
				
			||||||
 | 
									ja: 'モバイルデバイスからの投稿か否か。'
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							geo: $.obj({
 | 
				
			||||||
 | 
								coordinates: $.arr().length(2)
 | 
				
			||||||
 | 
									.item(0, $.num.range(-180, 180))
 | 
				
			||||||
 | 
									.item(1, $.num.range(-90, 90)),
 | 
				
			||||||
 | 
								altitude: $.num.nullable,
 | 
				
			||||||
 | 
								accuracy: $.num.nullable,
 | 
				
			||||||
 | 
								altitudeAccuracy: $.num.nullable,
 | 
				
			||||||
 | 
								heading: $.num.nullable.range(0, 360),
 | 
				
			||||||
 | 
								speed: $.num.nullable
 | 
				
			||||||
 | 
							}).optional.nullable.strict().note({
 | 
				
			||||||
 | 
								desc: {
 | 
				
			||||||
 | 
									ja: '位置情報'
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							mediaIds: $.arr($.type(ID)).optional.unique().range(1, 4).note({
 | 
				
			||||||
 | 
								desc: {
 | 
				
			||||||
 | 
									ja: '添付するメディア'
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							renoteId: $.type(ID).optional.note({
 | 
				
			||||||
 | 
								desc: {
 | 
				
			||||||
 | 
									ja: 'Renote対象'
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}),
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							poll: $.obj({
 | 
				
			||||||
 | 
								choices: $.arr($.str)
 | 
				
			||||||
 | 
									.unique()
 | 
				
			||||||
 | 
									.range(2, 10)
 | 
				
			||||||
 | 
									.each(c => c.length > 0 && c.length < 50)
 | 
				
			||||||
 | 
							}).optional.strict().note({
 | 
				
			||||||
 | 
								desc: {
 | 
				
			||||||
 | 
									ja: 'アンケート'
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -45,45 +95,12 @@ module.exports = (params: any, user: ILocalUser, app: IApp) => new Promise(async
 | 
				
			||||||
		})));
 | 
							})));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'text' parameter
 | 
						let files: IDriveFile[] = [];
 | 
				
			||||||
	const [text = null, textErr] = $.str.optional().nullable().pipe(isValidText).get(params.text);
 | 
						if (ps.mediaIds !== undefined) {
 | 
				
			||||||
	if (textErr) return rej('invalid text');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Get 'cw' parameter
 | 
					 | 
				
			||||||
	const [cw, cwErr] = $.str.optional().nullable().pipe(isValidCw).get(params.cw);
 | 
					 | 
				
			||||||
	if (cwErr) return rej('invalid cw');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Get 'viaMobile' parameter
 | 
					 | 
				
			||||||
	const [viaMobile = false, viaMobileErr] = $.bool.optional().get(params.viaMobile);
 | 
					 | 
				
			||||||
	if (viaMobileErr) return rej('invalid viaMobile');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Get 'tags' parameter
 | 
					 | 
				
			||||||
	const [tags = [], tagsErr] = $.arr($.str.range(1, 32)).optional().unique().get(params.tags);
 | 
					 | 
				
			||||||
	if (tagsErr) return rej('invalid tags');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Get 'geo' parameter
 | 
					 | 
				
			||||||
	const [geo, geoErr] = $.obj.optional().nullable().strict()
 | 
					 | 
				
			||||||
		.have('coordinates', $.arr().length(2)
 | 
					 | 
				
			||||||
			.item(0, $.num.range(-180, 180))
 | 
					 | 
				
			||||||
			.item(1, $.num.range(-90, 90)))
 | 
					 | 
				
			||||||
		.have('altitude', $.num.nullable())
 | 
					 | 
				
			||||||
		.have('accuracy', $.num.nullable())
 | 
					 | 
				
			||||||
		.have('altitudeAccuracy', $.num.nullable())
 | 
					 | 
				
			||||||
		.have('heading', $.num.nullable().range(0, 360))
 | 
					 | 
				
			||||||
		.have('speed', $.num.nullable())
 | 
					 | 
				
			||||||
		.get(params.geo);
 | 
					 | 
				
			||||||
	if (geoErr) return rej('invalid geo');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	// Get 'mediaIds' parameter
 | 
					 | 
				
			||||||
	const [mediaIds, mediaIdsErr] = $.arr($.type(ID)).optional().unique().range(1, 4).get(params.mediaIds);
 | 
					 | 
				
			||||||
	if (mediaIdsErr) return rej('invalid mediaIds');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	let files = [];
 | 
					 | 
				
			||||||
	if (mediaIds !== undefined) {
 | 
					 | 
				
			||||||
		// Fetch files
 | 
							// Fetch files
 | 
				
			||||||
		// forEach だと途中でエラーなどがあっても return できないので
 | 
							// forEach だと途中でエラーなどがあっても return できないので
 | 
				
			||||||
		// 敢えて for を使っています。
 | 
							// 敢えて for を使っています。
 | 
				
			||||||
		for (const mediaId of mediaIds) {
 | 
							for (const mediaId of ps.mediaIds) {
 | 
				
			||||||
			// Fetch file
 | 
								// Fetch file
 | 
				
			||||||
			// SELECT _id
 | 
								// SELECT _id
 | 
				
			||||||
			const entity = await DriveFile.findOne({
 | 
								const entity = await DriveFile.findOne({
 | 
				
			||||||
| 
						 | 
					@ -101,15 +118,11 @@ module.exports = (params: any, user: ILocalUser, app: IApp) => new Promise(async
 | 
				
			||||||
		files = null;
 | 
							files = null;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'renoteId' parameter
 | 
					 | 
				
			||||||
	const [renoteId, renoteIdErr] = $.type(ID).optional().get(params.renoteId);
 | 
					 | 
				
			||||||
	if (renoteIdErr) return rej('invalid renoteId');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	let renote: INote = null;
 | 
						let renote: INote = null;
 | 
				
			||||||
	if (renoteId !== undefined) {
 | 
						if (ps.renoteId !== undefined) {
 | 
				
			||||||
		// Fetch renote to note
 | 
							// Fetch renote to note
 | 
				
			||||||
		renote = await Note.findOne({
 | 
							renote = await Note.findOne({
 | 
				
			||||||
			_id: renoteId
 | 
								_id: ps.renoteId
 | 
				
			||||||
		});
 | 
							});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (renote == null) {
 | 
							if (renote == null) {
 | 
				
			||||||
| 
						 | 
					@ -120,7 +133,7 @@ module.exports = (params: any, user: ILocalUser, app: IApp) => new Promise(async
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'replyId' parameter
 | 
						// Get 'replyId' parameter
 | 
				
			||||||
	const [replyId, replyIdErr] = $.type(ID).optional().get(params.replyId);
 | 
						const [replyId, replyIdErr] = $.type(ID).optional.get(params.replyId);
 | 
				
			||||||
	if (replyIdErr) return rej('invalid replyId');
 | 
						if (replyIdErr) return rej('invalid replyId');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	let reply: INote = null;
 | 
						let reply: INote = null;
 | 
				
			||||||
| 
						 | 
					@ -140,17 +153,8 @@ module.exports = (params: any, user: ILocalUser, app: IApp) => new Promise(async
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'poll' parameter
 | 
						if (ps.poll) {
 | 
				
			||||||
	const [poll, pollErr] = $.obj.optional().strict()
 | 
							(ps.poll as any).choices = (ps.poll as any).choices.map((choice: string, i: number) => ({
 | 
				
			||||||
		.have('choices', $.arr($.str)
 | 
					 | 
				
			||||||
			.unique()
 | 
					 | 
				
			||||||
			.range(2, 10)
 | 
					 | 
				
			||||||
			.each(c => c.length > 0 && c.length < 50))
 | 
					 | 
				
			||||||
		.get(params.poll);
 | 
					 | 
				
			||||||
	if (pollErr) return rej('invalid poll');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	if (poll) {
 | 
					 | 
				
			||||||
		(poll as any).choices = (poll as any).choices.map((choice: string, i: number) => ({
 | 
					 | 
				
			||||||
			id: i, // IDを付与
 | 
								id: i, // IDを付与
 | 
				
			||||||
			text: choice.trim(),
 | 
								text: choice.trim(),
 | 
				
			||||||
			votes: 0
 | 
								votes: 0
 | 
				
			||||||
| 
						 | 
					@ -158,7 +162,7 @@ module.exports = (params: any, user: ILocalUser, app: IApp) => new Promise(async
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// テキストが無いかつ添付ファイルが無いかつRenoteも無いかつ投票も無かったらエラー
 | 
						// テキストが無いかつ添付ファイルが無いかつRenoteも無いかつ投票も無かったらエラー
 | 
				
			||||||
	if ((text === undefined || text === null) && files === null && renote === null && poll === undefined) {
 | 
						if ((ps.text === undefined || ps.text === null) && files === null && renote === null && ps.poll === undefined) {
 | 
				
			||||||
		return rej('text, mediaIds, renoteId or poll is required');
 | 
							return rej('text, mediaIds, renoteId or poll is required');
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -166,17 +170,16 @@ module.exports = (params: any, user: ILocalUser, app: IApp) => new Promise(async
 | 
				
			||||||
	const note = await create(user, {
 | 
						const note = await create(user, {
 | 
				
			||||||
		createdAt: new Date(),
 | 
							createdAt: new Date(),
 | 
				
			||||||
		media: files,
 | 
							media: files,
 | 
				
			||||||
		poll,
 | 
							poll: ps.poll,
 | 
				
			||||||
		text,
 | 
							text: ps.text,
 | 
				
			||||||
		reply,
 | 
							reply,
 | 
				
			||||||
		renote,
 | 
							renote,
 | 
				
			||||||
		cw,
 | 
							cw: ps.cw,
 | 
				
			||||||
		tags,
 | 
					 | 
				
			||||||
		app,
 | 
							app,
 | 
				
			||||||
		viaMobile,
 | 
							viaMobile: ps.viaMobile,
 | 
				
			||||||
		visibility,
 | 
							visibility: ps.visibility,
 | 
				
			||||||
		visibleUsers,
 | 
							visibleUsers,
 | 
				
			||||||
		geo
 | 
							geo: ps.geo
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const noteObj = await pack(note, user);
 | 
						const noteObj = await pack(note, user);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,23 +9,23 @@ import { ILocalUser } from '../../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = async (params: any, user: ILocalUser) => {
 | 
					module.exports = async (params: any, user: ILocalUser) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) throw 'invalid limit param';
 | 
						if (limitErr) throw 'invalid limit param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceId' parameter
 | 
						// Get 'sinceId' parameter
 | 
				
			||||||
	const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
 | 
						const [sinceId, sinceIdErr] = $.type(ID).optional.get(params.sinceId);
 | 
				
			||||||
	if (sinceIdErr) throw 'invalid sinceId param';
 | 
						if (sinceIdErr) throw 'invalid sinceId param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilId' parameter
 | 
						// Get 'untilId' parameter
 | 
				
			||||||
	const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
 | 
						const [untilId, untilIdErr] = $.type(ID).optional.get(params.untilId);
 | 
				
			||||||
	if (untilIdErr) throw 'invalid untilId param';
 | 
						if (untilIdErr) throw 'invalid untilId param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceDate' parameter
 | 
						// Get 'sinceDate' parameter
 | 
				
			||||||
	const [sinceDate, sinceDateErr] = $.num.optional().get(params.sinceDate);
 | 
						const [sinceDate, sinceDateErr] = $.num.optional.get(params.sinceDate);
 | 
				
			||||||
	if (sinceDateErr) throw 'invalid sinceDate param';
 | 
						if (sinceDateErr) throw 'invalid sinceDate param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilDate' parameter
 | 
						// Get 'untilDate' parameter
 | 
				
			||||||
	const [untilDate, untilDateErr] = $.num.optional().get(params.untilDate);
 | 
						const [untilDate, untilDateErr] = $.num.optional.get(params.untilDate);
 | 
				
			||||||
	if (untilDateErr) throw 'invalid untilDate param';
 | 
						if (untilDateErr) throw 'invalid untilDate param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check if only one of sinceId, untilId, sinceDate, untilDate specified
 | 
						// Check if only one of sinceId, untilId, sinceDate, untilDate specified
 | 
				
			||||||
| 
						 | 
					@ -34,7 +34,7 @@ module.exports = async (params: any, user: ILocalUser) => {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'mediaOnly' parameter
 | 
						// Get 'mediaOnly' parameter
 | 
				
			||||||
	const [mediaOnly, mediaOnlyErr] = $.bool.optional().get(params.mediaOnly);
 | 
						const [mediaOnly, mediaOnlyErr] = $.bool.optional.get(params.mediaOnly);
 | 
				
			||||||
	if (mediaOnlyErr) throw 'invalid mediaOnly param';
 | 
						if (mediaOnlyErr) throw 'invalid mediaOnly param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// ミュートしているユーザーを取得
 | 
						// ミュートしているユーザーを取得
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,23 +9,23 @@ import { ILocalUser } from '../../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = async (params: any, user: ILocalUser) => {
 | 
					module.exports = async (params: any, user: ILocalUser) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) throw 'invalid limit param';
 | 
						if (limitErr) throw 'invalid limit param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceId' parameter
 | 
						// Get 'sinceId' parameter
 | 
				
			||||||
	const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
 | 
						const [sinceId, sinceIdErr] = $.type(ID).optional.get(params.sinceId);
 | 
				
			||||||
	if (sinceIdErr) throw 'invalid sinceId param';
 | 
						if (sinceIdErr) throw 'invalid sinceId param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilId' parameter
 | 
						// Get 'untilId' parameter
 | 
				
			||||||
	const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
 | 
						const [untilId, untilIdErr] = $.type(ID).optional.get(params.untilId);
 | 
				
			||||||
	if (untilIdErr) throw 'invalid untilId param';
 | 
						if (untilIdErr) throw 'invalid untilId param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceDate' parameter
 | 
						// Get 'sinceDate' parameter
 | 
				
			||||||
	const [sinceDate, sinceDateErr] = $.num.optional().get(params.sinceDate);
 | 
						const [sinceDate, sinceDateErr] = $.num.optional.get(params.sinceDate);
 | 
				
			||||||
	if (sinceDateErr) throw 'invalid sinceDate param';
 | 
						if (sinceDateErr) throw 'invalid sinceDate param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilDate' parameter
 | 
						// Get 'untilDate' parameter
 | 
				
			||||||
	const [untilDate, untilDateErr] = $.num.optional().get(params.untilDate);
 | 
						const [untilDate, untilDateErr] = $.num.optional.get(params.untilDate);
 | 
				
			||||||
	if (untilDateErr) throw 'invalid untilDate param';
 | 
						if (untilDateErr) throw 'invalid untilDate param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check if only one of sinceId, untilId, sinceDate, untilDate specified
 | 
						// Check if only one of sinceId, untilId, sinceDate, untilDate specified
 | 
				
			||||||
| 
						 | 
					@ -34,7 +34,7 @@ module.exports = async (params: any, user: ILocalUser) => {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'mediaOnly' parameter
 | 
						// Get 'mediaOnly' parameter
 | 
				
			||||||
	const [mediaOnly, mediaOnlyErr] = $.bool.optional().get(params.mediaOnly);
 | 
						const [mediaOnly, mediaOnlyErr] = $.bool.optional.get(params.mediaOnly);
 | 
				
			||||||
	if (mediaOnlyErr) throw 'invalid mediaOnly param';
 | 
						if (mediaOnlyErr) throw 'invalid mediaOnly param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// ミュートしているユーザーを取得
 | 
						// ミュートしているユーザーを取得
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,19 +10,19 @@ import { ILocalUser } from '../../../../models/user';
 | 
				
			||||||
module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'following' parameter
 | 
						// Get 'following' parameter
 | 
				
			||||||
	const [following = false, followingError] =
 | 
						const [following = false, followingError] =
 | 
				
			||||||
		$.bool.optional().get(params.following);
 | 
							$.bool.optional.get(params.following);
 | 
				
			||||||
	if (followingError) return rej('invalid following param');
 | 
						if (followingError) return rej('invalid following param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceId' parameter
 | 
						// Get 'sinceId' parameter
 | 
				
			||||||
	const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
 | 
						const [sinceId, sinceIdErr] = $.type(ID).optional.get(params.sinceId);
 | 
				
			||||||
	if (sinceIdErr) return rej('invalid sinceId param');
 | 
						if (sinceIdErr) return rej('invalid sinceId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilId' parameter
 | 
						// Get 'untilId' parameter
 | 
				
			||||||
	const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
 | 
						const [untilId, untilIdErr] = $.type(ID).optional.get(params.untilId);
 | 
				
			||||||
	if (untilIdErr) return rej('invalid untilId param');
 | 
						if (untilIdErr) return rej('invalid untilId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check if both of sinceId and untilId is specified
 | 
						// Check if both of sinceId and untilId is specified
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,11 +8,11 @@ import { ILocalUser } from '../../../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'offset' parameter
 | 
						// Get 'offset' parameter
 | 
				
			||||||
	const [offset = 0, offsetErr] = $.num.optional().min(0).get(params.offset);
 | 
						const [offset = 0, offsetErr] = $.num.optional.min(0).get(params.offset);
 | 
				
			||||||
	if (offsetErr) return rej('invalid offset param');
 | 
						if (offsetErr) return rej('invalid offset param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get votes
 | 
						// Get votes
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,15 +12,15 @@ module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej)
 | 
				
			||||||
	if (noteIdErr) return rej('invalid noteId param');
 | 
						if (noteIdErr) return rej('invalid noteId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'offset' parameter
 | 
						// Get 'offset' parameter
 | 
				
			||||||
	const [offset = 0, offsetErr] = $.num.optional().min(0).get(params.offset);
 | 
						const [offset = 0, offsetErr] = $.num.optional.min(0).get(params.offset);
 | 
				
			||||||
	if (offsetErr) return rej('invalid offset param');
 | 
						if (offsetErr) return rej('invalid offset param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sort' parameter
 | 
						// Get 'sort' parameter
 | 
				
			||||||
	const [sort = 'desc', sortError] = $.str.optional().or('desc asc').get(params.sort);
 | 
						const [sort = 'desc', sortError] = $.str.optional.or('desc asc').get(params.sort);
 | 
				
			||||||
	if (sortError) return rej('invalid sort param');
 | 
						if (sortError) return rej('invalid sort param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Lookup note
 | 
						// Lookup note
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,11 +11,11 @@ module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej)
 | 
				
			||||||
	if (noteIdErr) return rej('invalid noteId param');
 | 
						if (noteIdErr) return rej('invalid noteId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'offset' parameter
 | 
						// Get 'offset' parameter
 | 
				
			||||||
	const [offset = 0, offsetErr] = $.num.optional().min(0).get(params.offset);
 | 
						const [offset = 0, offsetErr] = $.num.optional.min(0).get(params.offset);
 | 
				
			||||||
	if (offsetErr) return rej('invalid offset param');
 | 
						if (offsetErr) return rej('invalid offset param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Lookup note
 | 
						// Lookup note
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,15 +11,15 @@ module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej)
 | 
				
			||||||
	if (noteIdErr) return rej('invalid noteId param');
 | 
						if (noteIdErr) return rej('invalid noteId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceId' parameter
 | 
						// Get 'sinceId' parameter
 | 
				
			||||||
	const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
 | 
						const [sinceId, sinceIdErr] = $.type(ID).optional.get(params.sinceId);
 | 
				
			||||||
	if (sinceIdErr) return rej('invalid sinceId param');
 | 
						if (sinceIdErr) return rej('invalid sinceId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilId' parameter
 | 
						// Get 'untilId' parameter
 | 
				
			||||||
	const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
 | 
						const [untilId, untilIdErr] = $.type(ID).optional.get(params.untilId);
 | 
				
			||||||
	if (untilIdErr) return rej('invalid untilId param');
 | 
						if (untilIdErr) return rej('invalid untilId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check if both of sinceId and untilId is specified
 | 
						// Check if both of sinceId and untilId is specified
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,11 +11,11 @@ module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) =
 | 
				
			||||||
	if (queryError) return rej('invalid query param');
 | 
						if (queryError) return rej('invalid query param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'offset' parameter
 | 
						// Get 'offset' parameter
 | 
				
			||||||
	const [offset = 0, offsetErr] = $.num.optional().min(0).get(params.offset);
 | 
						const [offset = 0, offsetErr] = $.num.optional.min(0).get(params.offset);
 | 
				
			||||||
	if (offsetErr) return rej('invalid offset param');
 | 
						if (offsetErr) return rej('invalid offset param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 30).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 30).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	es.search({
 | 
						es.search({
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,59 +14,59 @@ module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) =
 | 
				
			||||||
	if (tagError) return rej('invalid tag param');
 | 
						if (tagError) return rej('invalid tag param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'includeUserIds' parameter
 | 
						// Get 'includeUserIds' parameter
 | 
				
			||||||
	const [includeUserIds = [], includeUserIdsErr] = $.arr($.type(ID)).optional().get(params.includeUserIds);
 | 
						const [includeUserIds = [], includeUserIdsErr] = $.arr($.type(ID)).optional.get(params.includeUserIds);
 | 
				
			||||||
	if (includeUserIdsErr) return rej('invalid includeUserIds param');
 | 
						if (includeUserIdsErr) return rej('invalid includeUserIds param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'excludeUserIds' parameter
 | 
						// Get 'excludeUserIds' parameter
 | 
				
			||||||
	const [excludeUserIds = [], excludeUserIdsErr] = $.arr($.type(ID)).optional().get(params.excludeUserIds);
 | 
						const [excludeUserIds = [], excludeUserIdsErr] = $.arr($.type(ID)).optional.get(params.excludeUserIds);
 | 
				
			||||||
	if (excludeUserIdsErr) return rej('invalid excludeUserIds param');
 | 
						if (excludeUserIdsErr) return rej('invalid excludeUserIds param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'includeUserUsernames' parameter
 | 
						// Get 'includeUserUsernames' parameter
 | 
				
			||||||
	const [includeUserUsernames = [], includeUserUsernamesErr] = $.arr($.str).optional().get(params.includeUserUsernames);
 | 
						const [includeUserUsernames = [], includeUserUsernamesErr] = $.arr($.str).optional.get(params.includeUserUsernames);
 | 
				
			||||||
	if (includeUserUsernamesErr) return rej('invalid includeUserUsernames param');
 | 
						if (includeUserUsernamesErr) return rej('invalid includeUserUsernames param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'excludeUserUsernames' parameter
 | 
						// Get 'excludeUserUsernames' parameter
 | 
				
			||||||
	const [excludeUserUsernames = [], excludeUserUsernamesErr] = $.arr($.str).optional().get(params.excludeUserUsernames);
 | 
						const [excludeUserUsernames = [], excludeUserUsernamesErr] = $.arr($.str).optional.get(params.excludeUserUsernames);
 | 
				
			||||||
	if (excludeUserUsernamesErr) return rej('invalid excludeUserUsernames param');
 | 
						if (excludeUserUsernamesErr) return rej('invalid excludeUserUsernames param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'following' parameter
 | 
						// Get 'following' parameter
 | 
				
			||||||
	const [following = null, followingErr] = $.bool.optional().nullable().get(params.following);
 | 
						const [following = null, followingErr] = $.bool.optional.nullable.get(params.following);
 | 
				
			||||||
	if (followingErr) return rej('invalid following param');
 | 
						if (followingErr) return rej('invalid following param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'mute' parameter
 | 
						// Get 'mute' parameter
 | 
				
			||||||
	const [mute = 'mute_all', muteErr] = $.str.optional().get(params.mute);
 | 
						const [mute = 'mute_all', muteErr] = $.str.optional.get(params.mute);
 | 
				
			||||||
	if (muteErr) return rej('invalid mute param');
 | 
						if (muteErr) return rej('invalid mute param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'reply' parameter
 | 
						// Get 'reply' parameter
 | 
				
			||||||
	const [reply = null, replyErr] = $.bool.optional().nullable().get(params.reply);
 | 
						const [reply = null, replyErr] = $.bool.optional.nullable.get(params.reply);
 | 
				
			||||||
	if (replyErr) return rej('invalid reply param');
 | 
						if (replyErr) return rej('invalid reply param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'renote' parameter
 | 
						// Get 'renote' parameter
 | 
				
			||||||
	const [renote = null, renoteErr] = $.bool.optional().nullable().get(params.renote);
 | 
						const [renote = null, renoteErr] = $.bool.optional.nullable.get(params.renote);
 | 
				
			||||||
	if (renoteErr) return rej('invalid renote param');
 | 
						if (renoteErr) return rej('invalid renote param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'media' parameter
 | 
						// Get 'media' parameter
 | 
				
			||||||
	const [media = null, mediaErr] = $.bool.optional().nullable().get(params.media);
 | 
						const [media = null, mediaErr] = $.bool.optional.nullable.get(params.media);
 | 
				
			||||||
	if (mediaErr) return rej('invalid media param');
 | 
						if (mediaErr) return rej('invalid media param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'poll' parameter
 | 
						// Get 'poll' parameter
 | 
				
			||||||
	const [poll = null, pollErr] = $.bool.optional().nullable().get(params.poll);
 | 
						const [poll = null, pollErr] = $.bool.optional.nullable.get(params.poll);
 | 
				
			||||||
	if (pollErr) return rej('invalid poll param');
 | 
						if (pollErr) return rej('invalid poll param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceDate' parameter
 | 
						// Get 'sinceDate' parameter
 | 
				
			||||||
	const [sinceDate, sinceDateErr] = $.num.optional().get(params.sinceDate);
 | 
						const [sinceDate, sinceDateErr] = $.num.optional.get(params.sinceDate);
 | 
				
			||||||
	if (sinceDateErr) throw 'invalid sinceDate param';
 | 
						if (sinceDateErr) throw 'invalid sinceDate param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilDate' parameter
 | 
						// Get 'untilDate' parameter
 | 
				
			||||||
	const [untilDate, untilDateErr] = $.num.optional().get(params.untilDate);
 | 
						const [untilDate, untilDateErr] = $.num.optional.get(params.untilDate);
 | 
				
			||||||
	if (untilDateErr) throw 'invalid untilDate param';
 | 
						if (untilDateErr) throw 'invalid untilDate param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'offset' parameter
 | 
						// Get 'offset' parameter
 | 
				
			||||||
	const [offset = 0, offsetErr] = $.num.optional().min(0).get(params.offset);
 | 
						const [offset = 0, offsetErr] = $.num.optional.min(0).get(params.offset);
 | 
				
			||||||
	if (offsetErr) return rej('invalid offset param');
 | 
						if (offsetErr) return rej('invalid offset param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 30).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 30).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (includeUserUsernames != null) {
 | 
						if (includeUserUsernames != null) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,23 +10,23 @@ import { ILocalUser } from '../../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = async (params: any, user: ILocalUser) => {
 | 
					module.exports = async (params: any, user: ILocalUser) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) throw 'invalid limit param';
 | 
						if (limitErr) throw 'invalid limit param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceId' parameter
 | 
						// Get 'sinceId' parameter
 | 
				
			||||||
	const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
 | 
						const [sinceId, sinceIdErr] = $.type(ID).optional.get(params.sinceId);
 | 
				
			||||||
	if (sinceIdErr) throw 'invalid sinceId param';
 | 
						if (sinceIdErr) throw 'invalid sinceId param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilId' parameter
 | 
						// Get 'untilId' parameter
 | 
				
			||||||
	const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
 | 
						const [untilId, untilIdErr] = $.type(ID).optional.get(params.untilId);
 | 
				
			||||||
	if (untilIdErr) throw 'invalid untilId param';
 | 
						if (untilIdErr) throw 'invalid untilId param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceDate' parameter
 | 
						// Get 'sinceDate' parameter
 | 
				
			||||||
	const [sinceDate, sinceDateErr] = $.num.optional().get(params.sinceDate);
 | 
						const [sinceDate, sinceDateErr] = $.num.optional.get(params.sinceDate);
 | 
				
			||||||
	if (sinceDateErr) throw 'invalid sinceDate param';
 | 
						if (sinceDateErr) throw 'invalid sinceDate param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilDate' parameter
 | 
						// Get 'untilDate' parameter
 | 
				
			||||||
	const [untilDate, untilDateErr] = $.num.optional().get(params.untilDate);
 | 
						const [untilDate, untilDateErr] = $.num.optional.get(params.untilDate);
 | 
				
			||||||
	if (untilDateErr) throw 'invalid untilDate param';
 | 
						if (untilDateErr) throw 'invalid untilDate param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check if only one of sinceId, untilId, sinceDate, untilDate specified
 | 
						// Check if only one of sinceId, untilId, sinceDate, untilDate specified
 | 
				
			||||||
| 
						 | 
					@ -35,15 +35,15 @@ module.exports = async (params: any, user: ILocalUser) => {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'includeMyRenotes' parameter
 | 
						// Get 'includeMyRenotes' parameter
 | 
				
			||||||
	const [includeMyRenotes = true, includeMyRenotesErr] = $.bool.optional().get(params.includeMyRenotes);
 | 
						const [includeMyRenotes = true, includeMyRenotesErr] = $.bool.optional.get(params.includeMyRenotes);
 | 
				
			||||||
	if (includeMyRenotesErr) throw 'invalid includeMyRenotes param';
 | 
						if (includeMyRenotesErr) throw 'invalid includeMyRenotes param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'includeRenotedMyNotes' parameter
 | 
						// Get 'includeRenotedMyNotes' parameter
 | 
				
			||||||
	const [includeRenotedMyNotes = true, includeRenotedMyNotesErr] = $.bool.optional().get(params.includeRenotedMyNotes);
 | 
						const [includeRenotedMyNotes = true, includeRenotedMyNotesErr] = $.bool.optional.get(params.includeRenotedMyNotes);
 | 
				
			||||||
	if (includeRenotedMyNotesErr) throw 'invalid includeRenotedMyNotes param';
 | 
						if (includeRenotedMyNotesErr) throw 'invalid includeRenotedMyNotes param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'mediaOnly' parameter
 | 
						// Get 'mediaOnly' parameter
 | 
				
			||||||
	const [mediaOnly, mediaOnlyErr] = $.bool.optional().get(params.mediaOnly);
 | 
						const [mediaOnly, mediaOnlyErr] = $.bool.optional.get(params.mediaOnly);
 | 
				
			||||||
	if (mediaOnlyErr) throw 'invalid mediaOnly param';
 | 
						if (mediaOnlyErr) throw 'invalid mediaOnly param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const [followings, mutedUserIds] = await Promise.all([
 | 
						const [followings, mutedUserIds] = await Promise.all([
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,27 +8,27 @@ import { ILocalUser } from '../../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'offset' parameter
 | 
						// Get 'offset' parameter
 | 
				
			||||||
	const [offset = 0, offsetErr] = $.num.optional().min(0).get(params.offset);
 | 
						const [offset = 0, offsetErr] = $.num.optional.min(0).get(params.offset);
 | 
				
			||||||
	if (offsetErr) return rej('invalid offset param');
 | 
						if (offsetErr) return rej('invalid offset param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'reply' parameter
 | 
						// Get 'reply' parameter
 | 
				
			||||||
	const [reply, replyErr] = $.bool.optional().get(params.reply);
 | 
						const [reply, replyErr] = $.bool.optional.get(params.reply);
 | 
				
			||||||
	if (replyErr) return rej('invalid reply param');
 | 
						if (replyErr) return rej('invalid reply param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'renote' parameter
 | 
						// Get 'renote' parameter
 | 
				
			||||||
	const [renote, renoteErr] = $.bool.optional().get(params.renote);
 | 
						const [renote, renoteErr] = $.bool.optional.get(params.renote);
 | 
				
			||||||
	if (renoteErr) return rej('invalid renote param');
 | 
						if (renoteErr) return rej('invalid renote param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'media' parameter
 | 
						// Get 'media' parameter
 | 
				
			||||||
	const [media, mediaErr] = $.bool.optional().get(params.media);
 | 
						const [media, mediaErr] = $.bool.optional.get(params.media);
 | 
				
			||||||
	if (mediaErr) return rej('invalid media param');
 | 
						if (mediaErr) return rej('invalid media param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'poll' parameter
 | 
						// Get 'poll' parameter
 | 
				
			||||||
	const [poll, pollErr] = $.bool.optional().get(params.poll);
 | 
						const [poll, pollErr] = $.bool.optional.get(params.poll);
 | 
				
			||||||
	if (pollErr) return rej('invalid poll param');
 | 
						if (pollErr) return rej('invalid poll param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const query = {
 | 
						const query = {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,23 +10,23 @@ import { ILocalUser } from '../../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = async (params: any, user: ILocalUser) => {
 | 
					module.exports = async (params: any, user: ILocalUser) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) throw 'invalid limit param';
 | 
						if (limitErr) throw 'invalid limit param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceId' parameter
 | 
						// Get 'sinceId' parameter
 | 
				
			||||||
	const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
 | 
						const [sinceId, sinceIdErr] = $.type(ID).optional.get(params.sinceId);
 | 
				
			||||||
	if (sinceIdErr) throw 'invalid sinceId param';
 | 
						if (sinceIdErr) throw 'invalid sinceId param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilId' parameter
 | 
						// Get 'untilId' parameter
 | 
				
			||||||
	const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
 | 
						const [untilId, untilIdErr] = $.type(ID).optional.get(params.untilId);
 | 
				
			||||||
	if (untilIdErr) throw 'invalid untilId param';
 | 
						if (untilIdErr) throw 'invalid untilId param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceDate' parameter
 | 
						// Get 'sinceDate' parameter
 | 
				
			||||||
	const [sinceDate, sinceDateErr] = $.num.optional().get(params.sinceDate);
 | 
						const [sinceDate, sinceDateErr] = $.num.optional.get(params.sinceDate);
 | 
				
			||||||
	if (sinceDateErr) throw 'invalid sinceDate param';
 | 
						if (sinceDateErr) throw 'invalid sinceDate param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilDate' parameter
 | 
						// Get 'untilDate' parameter
 | 
				
			||||||
	const [untilDate, untilDateErr] = $.num.optional().get(params.untilDate);
 | 
						const [untilDate, untilDateErr] = $.num.optional.get(params.untilDate);
 | 
				
			||||||
	if (untilDateErr) throw 'invalid untilDate param';
 | 
						if (untilDateErr) throw 'invalid untilDate param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check if only one of sinceId, untilId, sinceDate, untilDate specified
 | 
						// Check if only one of sinceId, untilId, sinceDate, untilDate specified
 | 
				
			||||||
| 
						 | 
					@ -35,15 +35,15 @@ module.exports = async (params: any, user: ILocalUser) => {
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'includeMyRenotes' parameter
 | 
						// Get 'includeMyRenotes' parameter
 | 
				
			||||||
	const [includeMyRenotes = true, includeMyRenotesErr] = $.bool.optional().get(params.includeMyRenotes);
 | 
						const [includeMyRenotes = true, includeMyRenotesErr] = $.bool.optional.get(params.includeMyRenotes);
 | 
				
			||||||
	if (includeMyRenotesErr) throw 'invalid includeMyRenotes param';
 | 
						if (includeMyRenotesErr) throw 'invalid includeMyRenotes param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'includeRenotedMyNotes' parameter
 | 
						// Get 'includeRenotedMyNotes' parameter
 | 
				
			||||||
	const [includeRenotedMyNotes = true, includeRenotedMyNotesErr] = $.bool.optional().get(params.includeRenotedMyNotes);
 | 
						const [includeRenotedMyNotes = true, includeRenotedMyNotesErr] = $.bool.optional.get(params.includeRenotedMyNotes);
 | 
				
			||||||
	if (includeRenotedMyNotesErr) throw 'invalid includeRenotedMyNotes param';
 | 
						if (includeRenotedMyNotesErr) throw 'invalid includeRenotedMyNotes param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'mediaOnly' parameter
 | 
						// Get 'mediaOnly' parameter
 | 
				
			||||||
	const [mediaOnly, mediaOnlyErr] = $.bool.optional().get(params.mediaOnly);
 | 
						const [mediaOnly, mediaOnlyErr] = $.bool.optional.get(params.mediaOnly);
 | 
				
			||||||
	if (mediaOnlyErr) throw 'invalid mediaOnly param';
 | 
						if (mediaOnlyErr) throw 'invalid mediaOnly param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'listId' parameter
 | 
						// Get 'listId' parameter
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,19 +4,19 @@ import { ILocalUser } from '../../../../models/user';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any, user: ILocalUser) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'my' parameter
 | 
						// Get 'my' parameter
 | 
				
			||||||
	const [my = false, myErr] = $.bool.optional().get(params.my);
 | 
						const [my = false, myErr] = $.bool.optional.get(params.my);
 | 
				
			||||||
	if (myErr) return rej('invalid my param');
 | 
						if (myErr) return rej('invalid my param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceId' parameter
 | 
						// Get 'sinceId' parameter
 | 
				
			||||||
	const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
 | 
						const [sinceId, sinceIdErr] = $.type(ID).optional.get(params.sinceId);
 | 
				
			||||||
	if (sinceIdErr) return rej('invalid sinceId param');
 | 
						if (sinceIdErr) return rej('invalid sinceId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilId' parameter
 | 
						// Get 'untilId' parameter
 | 
				
			||||||
	const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
 | 
						const [untilId, untilIdErr] = $.type(ID).optional.get(params.untilId);
 | 
				
			||||||
	if (untilIdErr) return rej('invalid untilId param');
 | 
						if (untilIdErr) return rej('invalid untilId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check if both of sinceId and untilId is specified
 | 
						// Check if both of sinceId and untilId is specified
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,15 +6,15 @@ import User, { pack, ILocalUser } from '../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'offset' parameter
 | 
						// Get 'offset' parameter
 | 
				
			||||||
	const [offset = 0, offsetErr] = $.num.optional().min(0).get(params.offset);
 | 
						const [offset = 0, offsetErr] = $.num.optional.min(0).get(params.offset);
 | 
				
			||||||
	if (offsetErr) return rej('invalid offset param');
 | 
						if (offsetErr) return rej('invalid offset param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sort' parameter
 | 
						// Get 'sort' parameter
 | 
				
			||||||
	const [sort, sortError] = $.str.optional().or('+follower|-follower').get(params.sort);
 | 
						const [sort, sortError] = $.str.optional.or('+follower|-follower').get(params.sort);
 | 
				
			||||||
	if (sortError) return rej('invalid sort param');
 | 
						if (sortError) return rej('invalid sort param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Construct query
 | 
						// Construct query
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,15 +13,15 @@ module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) =
 | 
				
			||||||
	if (userIdErr) return rej('invalid userId param');
 | 
						if (userIdErr) return rej('invalid userId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'iknow' parameter
 | 
						// Get 'iknow' parameter
 | 
				
			||||||
	const [iknow = false, iknowErr] = $.bool.optional().get(params.iknow);
 | 
						const [iknow = false, iknowErr] = $.bool.optional.get(params.iknow);
 | 
				
			||||||
	if (iknowErr) return rej('invalid iknow param');
 | 
						if (iknowErr) return rej('invalid iknow param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'cursor' parameter
 | 
						// Get 'cursor' parameter
 | 
				
			||||||
	const [cursor = null, cursorErr] = $.type(ID).optional().get(params.cursor);
 | 
						const [cursor = null, cursorErr] = $.type(ID).optional.get(params.cursor);
 | 
				
			||||||
	if (cursorErr) return rej('invalid cursor param');
 | 
						if (cursorErr) return rej('invalid cursor param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Lookup user
 | 
						// Lookup user
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -13,15 +13,15 @@ module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) =
 | 
				
			||||||
	if (userIdErr) return rej('invalid userId param');
 | 
						if (userIdErr) return rej('invalid userId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'iknow' parameter
 | 
						// Get 'iknow' parameter
 | 
				
			||||||
	const [iknow = false, iknowErr] = $.bool.optional().get(params.iknow);
 | 
						const [iknow = false, iknowErr] = $.bool.optional.get(params.iknow);
 | 
				
			||||||
	if (iknowErr) return rej('invalid iknow param');
 | 
						if (iknowErr) return rej('invalid iknow param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'cursor' parameter
 | 
						// Get 'cursor' parameter
 | 
				
			||||||
	const [cursor = null, cursorErr] = $.type(ID).optional().get(params.cursor);
 | 
						const [cursor = null, cursorErr] = $.type(ID).optional.get(params.cursor);
 | 
				
			||||||
	if (cursorErr) return rej('invalid cursor param');
 | 
						if (cursorErr) return rej('invalid cursor param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Lookup user
 | 
						// Lookup user
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,7 +8,7 @@ module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) =
 | 
				
			||||||
	if (userIdErr) return rej('invalid userId param');
 | 
						if (userIdErr) return rej('invalid userId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Lookup user
 | 
						// Lookup user
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -8,11 +8,11 @@ import User, { ILocalUser } from '../../../../models/user';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'userId' parameter
 | 
						// Get 'userId' parameter
 | 
				
			||||||
	const [userId, userIdErr] = $.type(ID).optional().get(params.userId);
 | 
						const [userId, userIdErr] = $.type(ID).optional.get(params.userId);
 | 
				
			||||||
	if (userIdErr) return rej('invalid userId param');
 | 
						if (userIdErr) return rej('invalid userId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'username' parameter
 | 
						// Get 'username' parameter
 | 
				
			||||||
	const [username, usernameErr] = $.str.optional().get(params.username);
 | 
						const [username, usernameErr] = $.str.optional.get(params.username);
 | 
				
			||||||
	if (usernameErr) return rej('invalid username param');
 | 
						if (usernameErr) return rej('invalid username param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (userId === undefined && username === undefined) {
 | 
						if (userId === undefined && username === undefined) {
 | 
				
			||||||
| 
						 | 
					@ -20,7 +20,7 @@ module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) =
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'host' parameter
 | 
						// Get 'host' parameter
 | 
				
			||||||
	const [host, hostErr] = $.str.optional().get(params.host);
 | 
						const [host, hostErr] = $.str.optional.get(params.host);
 | 
				
			||||||
	if (hostErr) return rej('invalid host param');
 | 
						if (hostErr) return rej('invalid host param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (userId === undefined && host === undefined) {
 | 
						if (userId === undefined && host === undefined) {
 | 
				
			||||||
| 
						 | 
					@ -28,31 +28,31 @@ module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) =
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'includeReplies' parameter
 | 
						// Get 'includeReplies' parameter
 | 
				
			||||||
	const [includeReplies = true, includeRepliesErr] = $.bool.optional().get(params.includeReplies);
 | 
						const [includeReplies = true, includeRepliesErr] = $.bool.optional.get(params.includeReplies);
 | 
				
			||||||
	if (includeRepliesErr) return rej('invalid includeReplies param');
 | 
						if (includeRepliesErr) return rej('invalid includeReplies param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'withMedia' parameter
 | 
						// Get 'withMedia' parameter
 | 
				
			||||||
	const [withMedia = false, withMediaErr] = $.bool.optional().get(params.withMedia);
 | 
						const [withMedia = false, withMediaErr] = $.bool.optional.get(params.withMedia);
 | 
				
			||||||
	if (withMediaErr) return rej('invalid withMedia param');
 | 
						if (withMediaErr) return rej('invalid withMedia param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceId' parameter
 | 
						// Get 'sinceId' parameter
 | 
				
			||||||
	const [sinceId, sinceIdErr] = $.type(ID).optional().get(params.sinceId);
 | 
						const [sinceId, sinceIdErr] = $.type(ID).optional.get(params.sinceId);
 | 
				
			||||||
	if (sinceIdErr) return rej('invalid sinceId param');
 | 
						if (sinceIdErr) return rej('invalid sinceId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilId' parameter
 | 
						// Get 'untilId' parameter
 | 
				
			||||||
	const [untilId, untilIdErr] = $.type(ID).optional().get(params.untilId);
 | 
						const [untilId, untilIdErr] = $.type(ID).optional.get(params.untilId);
 | 
				
			||||||
	if (untilIdErr) return rej('invalid untilId param');
 | 
						if (untilIdErr) return rej('invalid untilId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'sinceDate' parameter
 | 
						// Get 'sinceDate' parameter
 | 
				
			||||||
	const [sinceDate, sinceDateErr] = $.num.optional().get(params.sinceDate);
 | 
						const [sinceDate, sinceDateErr] = $.num.optional.get(params.sinceDate);
 | 
				
			||||||
	if (sinceDateErr) throw 'invalid sinceDate param';
 | 
						if (sinceDateErr) throw 'invalid sinceDate param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'untilDate' parameter
 | 
						// Get 'untilDate' parameter
 | 
				
			||||||
	const [untilDate, untilDateErr] = $.num.optional().get(params.untilDate);
 | 
						const [untilDate, untilDateErr] = $.num.optional.get(params.untilDate);
 | 
				
			||||||
	if (untilDateErr) throw 'invalid untilDate param';
 | 
						if (untilDateErr) throw 'invalid untilDate param';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Check if only one of sinceId, untilId, sinceDate, untilDate specified
 | 
						// Check if only one of sinceId, untilId, sinceDate, untilDate specified
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,11 +9,11 @@ import Mute from '../../../../models/mute';
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
 | 
					module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) => {
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'offset' parameter
 | 
						// Get 'offset' parameter
 | 
				
			||||||
	const [offset = 0, offsetErr] = $.num.optional().min(0).get(params.offset);
 | 
						const [offset = 0, offsetErr] = $.num.optional.min(0).get(params.offset);
 | 
				
			||||||
	if (offsetErr) return rej('invalid offset param');
 | 
						if (offsetErr) return rej('invalid offset param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// ID list of the user itself and other users who the user follows
 | 
						// ID list of the user itself and other users who the user follows
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,7 +11,7 @@ module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) =
 | 
				
			||||||
	if (queryError) return rej('invalid query param');
 | 
						if (queryError) return rej('invalid query param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'max' parameter
 | 
						// Get 'max' parameter
 | 
				
			||||||
	const [max = 10, maxErr] = $.num.optional().range(1, 30).get(params.max);
 | 
						const [max = 10, maxErr] = $.num.optional.range(1, 30).get(params.max);
 | 
				
			||||||
	if (maxErr) return rej('invalid max param');
 | 
						if (maxErr) return rej('invalid max param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const escapedQuery = escapeRegexp(query);
 | 
						const escapedQuery = escapeRegexp(query);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,11 +10,11 @@ module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) =
 | 
				
			||||||
	if (queryError) return rej('invalid query param');
 | 
						if (queryError) return rej('invalid query param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'offset' parameter
 | 
						// Get 'offset' parameter
 | 
				
			||||||
	const [offset = 0, offsetErr] = $.num.optional().min(0).get(params.offset);
 | 
						const [offset = 0, offsetErr] = $.num.optional.min(0).get(params.offset);
 | 
				
			||||||
	if (offsetErr) return rej('invalid offset param');
 | 
						if (offsetErr) return rej('invalid offset param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'limit' parameter
 | 
						// Get 'limit' parameter
 | 
				
			||||||
	const [limit = 10, limitErr] = $.num.optional().range(1, 100).get(params.limit);
 | 
						const [limit = 10, limitErr] = $.num.optional.range(1, 100).get(params.limit);
 | 
				
			||||||
	if (limitErr) return rej('invalid limit param');
 | 
						if (limitErr) return rej('invalid limit param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	let users = await User
 | 
						let users = await User
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,19 +11,19 @@ module.exports = (params: any, me: ILocalUser) => new Promise(async (res, rej) =
 | 
				
			||||||
	let user;
 | 
						let user;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'userId' parameter
 | 
						// Get 'userId' parameter
 | 
				
			||||||
	const [userId, userIdErr] = $.type(ID).optional().get(params.userId);
 | 
						const [userId, userIdErr] = $.type(ID).optional.get(params.userId);
 | 
				
			||||||
	if (userIdErr) return rej('invalid userId param');
 | 
						if (userIdErr) return rej('invalid userId param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'userIds' parameter
 | 
						// Get 'userIds' parameter
 | 
				
			||||||
	const [userIds, userIdsErr] = $.arr($.type(ID)).optional().get(params.userIds);
 | 
						const [userIds, userIdsErr] = $.arr($.type(ID)).optional.get(params.userIds);
 | 
				
			||||||
	if (userIdsErr) return rej('invalid userIds param');
 | 
						if (userIdsErr) return rej('invalid userIds param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'username' parameter
 | 
						// Get 'username' parameter
 | 
				
			||||||
	const [username, usernameErr] = $.str.optional().get(params.username);
 | 
						const [username, usernameErr] = $.str.optional.get(params.username);
 | 
				
			||||||
	if (usernameErr) return rej('invalid username param');
 | 
						if (usernameErr) return rej('invalid username param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// Get 'host' parameter
 | 
						// Get 'host' parameter
 | 
				
			||||||
	const [host, hostErr] = $.str.optional().nullable().get(params.host);
 | 
						const [host, hostErr] = $.str.optional.nullable.get(params.host);
 | 
				
			||||||
	if (hostErr) return rej('invalid host param');
 | 
						if (hostErr) return rej('invalid host param');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (userIds) {
 | 
						if (userIds) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,25 +1,22 @@
 | 
				
			||||||
import { Query } from 'cafy';
 | 
					import { Context } from 'cafy';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type Defs = {
 | 
					type Defs = {
 | 
				
			||||||
	params: {[key: string]: {
 | 
						params: { [key: string]: Context<any> }
 | 
				
			||||||
		def: Query<any>;
 | 
					 | 
				
			||||||
		default?: any;
 | 
					 | 
				
			||||||
	}}
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default function <T extends Defs>(defs: T, params: any): [{
 | 
					export default function <T extends Defs>(defs: T, params: any): [{
 | 
				
			||||||
	[P in keyof T['params']]: ReturnType<T['params'][P]['def']['get']>[0];
 | 
						[P in keyof T['params']]: ReturnType<T['params'][P]['get']>[0];
 | 
				
			||||||
}, Error] {
 | 
					}, Error] {
 | 
				
			||||||
	const x: any = {};
 | 
						const x: any = {};
 | 
				
			||||||
	let err: Error = null;
 | 
						let err: Error = null;
 | 
				
			||||||
	Object.keys(defs.params).some(k => {
 | 
						Object.keys(defs.params).some(k => {
 | 
				
			||||||
		const [v, e] = defs.params[k].def.get(params[k]);
 | 
							const [v, e] = defs.params[k].get(params[k]);
 | 
				
			||||||
		if (e) {
 | 
							if (e) {
 | 
				
			||||||
			err = e;
 | 
								err = e;
 | 
				
			||||||
			return true;
 | 
								return true;
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			if (v === undefined && defs.params[k].default) {
 | 
								if (v === undefined && defs.params[k].data.default) {
 | 
				
			||||||
				x[k] = defs.params[k].default;
 | 
									x[k] = defs.params[k].data.default;
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				x[k] = v;
 | 
									x[k] = v;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue