Migrate cafy to 14.0 (#4240)

This commit is contained in:
syuilo 2019-02-13 16:33:07 +09:00 committed by GitHub
parent 183d5873da
commit b6f7aa7d65
77 changed files with 334 additions and 345 deletions

View file

@ -103,7 +103,7 @@
"bcryptjs": "2.4.3",
"bee-queue": "1.2.2",
"bootstrap-vue": "2.0.0-rc.11",
"cafy": "12.1.0",
"cafy": "14.0.1",
"chai": "4.2.0",
"chai-http": "4.2.1",
"chalk": "2.4.2",

View file

@ -25,9 +25,9 @@ export type ObjectId = mongo.ObjectID;
/**
* ID
*/
export default class ID extends Context<string> {
constructor() {
super();
export default class ID<Maybe = string> extends Context<string | Maybe> {
constructor(optional = false, nullable = false) {
super(optional, nullable);
this.push((v: any) => {
if (!isObjectId(v) && isNotAnId(v)) {
@ -40,4 +40,16 @@ export default class ID extends Context<string> {
public getType() {
return super.getType('string');
}
public makeOptional(): ID<undefined> {
return new ID(true, false);
}
public makeNullable(): ID<null> {
return new ID(false, true);
}
public makeOptionalNullable(): ID<undefined | null> {
return new ID(true, true);
}
}

View file

@ -20,10 +20,10 @@ export default async (ctx: Router.IRouterContext) => {
const userId = new ObjectID(ctx.params.user);
// Get 'cursor' parameter
const [cursor = null, cursorErr] = $.type(ID).optional.get(ctx.request.query.cursor);
const [cursor = null, cursorErr] = $.optional.type(ID).get(ctx.request.query.cursor);
// Get 'page' parameter
const pageErr = !$.str.optional.or(['true', 'false']).ok(ctx.request.query.page);
const pageErr = !$.optional.str.or(['true', 'false']).ok(ctx.request.query.page);
const page: boolean = ctx.request.query.page === 'true';
// Validate parameters

View file

@ -20,10 +20,10 @@ export default async (ctx: Router.IRouterContext) => {
const userId = new ObjectID(ctx.params.user);
// Get 'cursor' parameter
const [cursor = null, cursorErr] = $.type(ID).optional.get(ctx.request.query.cursor);
const [cursor = null, cursorErr] = $.optional.type(ID).get(ctx.request.query.cursor);
// Get 'page' parameter
const pageErr = !$.str.optional.or(['true', 'false']).ok(ctx.request.query.page);
const pageErr = !$.optional.str.or(['true', 'false']).ok(ctx.request.query.page);
const page: boolean = ctx.request.query.page === 'true';
// Validate parameters

View file

@ -24,13 +24,13 @@ export default async (ctx: Router.IRouterContext) => {
const userId = new ObjectID(ctx.params.user);
// Get 'sinceId' parameter
const [sinceId, sinceIdErr] = $.type(ID).optional.get(ctx.request.query.since_id);
const [sinceId, sinceIdErr] = $.optional.type(ID).get(ctx.request.query.since_id);
// Get 'untilId' parameter
const [untilId, untilIdErr] = $.type(ID).optional.get(ctx.request.query.until_id);
const [untilId, untilIdErr] = $.optional.type(ID).get(ctx.request.query.until_id);
// Get 'page' parameter
const pageErr = !$.str.optional.or(['true', 'false']).ok(ctx.request.query.page);
const pageErr = !$.optional.str.or(['true', 'false']).ok(ctx.request.query.page);
const page: boolean = ctx.request.query.page === 'true';
// Validate parameters

View file

@ -9,17 +9,17 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
}

View file

@ -8,17 +8,17 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
offset: {
validator: $.num.optional.min(0),
validator: $.optional.num.min(0),
default: 0
},
sort: {
validator: $.str.optional.or([
validator: $.optional.str.or([
'+createdAt',
'-createdAt',
'+size',
@ -27,7 +27,7 @@ export const meta = {
},
origin: {
validator: $.str.optional.or([
validator: $.optional.str.or([
'combined',
'local',
'remote',

View file

@ -20,7 +20,7 @@ export const meta = {
},
aliases: {
validator: $.arr($.str.min(1)).optional,
validator: $.optional.arr($.str.min(1)),
default: [] as string[]
}
}

View file

@ -12,7 +12,7 @@ export const meta = {
params: {
host: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
default: null as any
}
}

View file

@ -8,17 +8,17 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
offset: {
validator: $.num.optional.min(0),
validator: $.optional.num.min(0),
default: 0
},
sort: {
validator: $.str.optional.or([
validator: $.optional.str.or([
'+follower',
'-follower',
'+createdAt',
@ -29,7 +29,7 @@ export const meta = {
},
state: {
validator: $.str.optional.or([
validator: $.optional.str.or([
'all',
'admin',
'moderator',
@ -42,7 +42,7 @@ export const meta = {
},
origin: {
validator: $.str.optional.or([
validator: $.optional.str.or([
'combined',
'local',
'remote',

View file

@ -12,84 +12,84 @@ export const meta = {
params: {
broadcasts: {
validator: $.arr($.obj()).optional.nullable,
validator: $.optional.nullable.arr($.obj()),
desc: {
'ja-JP': 'ブロードキャスト'
}
},
disableRegistration: {
validator: $.bool.optional.nullable,
validator: $.optional.nullable.bool,
desc: {
'ja-JP': '招待制か否か'
}
},
disableLocalTimeline: {
validator: $.bool.optional.nullable,
validator: $.optional.nullable.bool,
desc: {
'ja-JP': 'ローカルタイムライン(とソーシャルタイムライン)を無効にするか否か'
}
},
disableGlobalTimeline: {
validator: $.bool.optional.nullable,
validator: $.optional.nullable.bool,
desc: {
'ja-JP': 'グローバルタイムラインを無効にするか否か'
}
},
hidedTags: {
validator: $.arr($.str).optional.nullable,
validator: $.optional.nullable.arr($.str),
desc: {
'ja-JP': '統計などで無視するハッシュタグ'
}
},
mascotImageUrl: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'インスタンスキャラクター画像のURL'
}
},
bannerUrl: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'インスタンスのバナー画像URL'
}
},
errorImageUrl: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'インスタンスのエラー画像URL'
}
},
name: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'インスタンス名'
}
},
description: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'インスタンスの紹介文'
}
},
maxNoteTextLength: {
validator: $.num.optional.min(1),
validator: $.optional.num.min(1),
desc: {
'ja-JP': '投稿の最大文字数'
}
},
localDriveCapacityMb: {
validator: $.num.optional.min(0),
validator: $.optional.num.min(0),
desc: {
'ja-JP': 'ローカルユーザーひとりあたりのドライブ容量 (メガバイト単位)',
'en-US': 'Drive capacity of a local user (MB)'
@ -97,7 +97,7 @@ export const meta = {
},
remoteDriveCapacityMb: {
validator: $.num.optional.min(0),
validator: $.optional.num.min(0),
desc: {
'ja-JP': 'リモートユーザーひとりあたりのドライブ容量 (メガバイト単位)',
'en-US': 'Drive capacity of a remote user (MB)'
@ -105,217 +105,217 @@ export const meta = {
},
cacheRemoteFiles: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'リモートのファイルをキャッシュするか否か'
}
},
enableRecaptcha: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'reCAPTCHAを使用するか否か'
}
},
recaptchaSiteKey: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'reCAPTCHA site key'
}
},
recaptchaSecretKey: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'reCAPTCHA secret key'
}
},
proxyAccount: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'プロキシアカウントのユーザー名'
}
},
maintainerName: {
validator: $.str.optional,
validator: $.optional.str,
desc: {
'ja-JP': 'インスタンスの管理者名'
}
},
maintainerEmail: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'インスタンス管理者の連絡先メールアドレス'
}
},
langs: {
validator: $.arr($.str).optional,
validator: $.optional.arr($.str),
desc: {
'ja-JP': 'インスタンスの対象言語'
}
},
summalyProxy: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'summalyプロキシURL'
}
},
enableTwitterIntegration: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'Twitter連携機能を有効にするか否か'
}
},
twitterConsumerKey: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'TwitterアプリのConsumer key'
}
},
twitterConsumerSecret: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'TwitterアプリのConsumer secret'
}
},
enableGithubIntegration: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'GitHub連携機能を有効にするか否か'
}
},
githubClientId: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'GitHubアプリのClient ID'
}
},
githubClientSecret: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'GitHubアプリのClient Secret'
}
},
enableDiscordIntegration: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'Discord連携機能を有効にするか否か'
}
},
discordClientId: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'DiscordアプリのClient ID'
}
},
discordClientSecret: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'DiscordアプリのClient Secret'
}
},
enableExternalUserRecommendation: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': '外部ユーザーレコメンデーションを有効にする'
}
},
externalUserRecommendationEngine: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': '外部ユーザーレコメンデーションのサードパーティエンジン'
}
},
externalUserRecommendationTimeout: {
validator: $.num.optional.nullable.min(0),
validator: $.optional.nullable.num.min(0),
desc: {
'ja-JP': '外部ユーザーレコメンデーションのタイムアウト (ミリ秒)'
}
},
enableEmail: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'メール配信を有効にするか否か'
}
},
email: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'メール配信する際に利用するメールアドレス'
}
},
smtpSecure: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'SMTPサーバがSSLを使用しているか否か'
}
},
smtpHost: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'SMTPサーバのホスト'
}
},
smtpPort: {
validator: $.num.optional.nullable,
validator: $.optional.nullable.num,
desc: {
'ja-JP': 'SMTPサーバのポート'
}
},
smtpUser: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'SMTPサーバのユーザー名'
}
},
smtpPass: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'SMTPサーバのパスワード'
}
},
enableServiceWorker: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'ServiceWorkerを有効にするか否か'
}
},
swPublicKey: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'ServiceWorkerのVAPIDキーペアの公開鍵'
}
},
swPrivateKey: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
desc: {
'ja-JP': 'ServiceWorkerのVAPIDキーペアの秘密鍵'
}

View file

@ -21,7 +21,7 @@ export const meta = {
// TODO: Check it is valid url
callbackUrl: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
default: null as any
},
}

View file

@ -15,17 +15,17 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 30
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
}

View file

@ -18,7 +18,7 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 500),
validator: $.optional.num.range(1, 500),
default: 30,
desc: {
'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'

View file

@ -18,7 +18,7 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 500),
validator: $.optional.num.range(1, 500),
default: 30,
desc: {
'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'

View file

@ -18,7 +18,7 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 500),
validator: $.optional.num.range(1, 500),
default: 30,
desc: {
'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'

View file

@ -18,7 +18,7 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 500),
validator: $.optional.num.range(1, 500),
default: 30,
desc: {
'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'

View file

@ -18,7 +18,7 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 500),
validator: $.optional.num.range(1, 500),
default: 30,
desc: {
'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'

View file

@ -18,7 +18,7 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 500),
validator: $.optional.num.range(1, 500),
default: 30,
desc: {
'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'

View file

@ -18,7 +18,7 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 500),
validator: $.optional.num.range(1, 500),
default: 30,
desc: {
'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'

View file

@ -19,7 +19,7 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 500),
validator: $.optional.num.range(1, 500),
default: 30,
desc: {
'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'

View file

@ -19,7 +19,7 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 500),
validator: $.optional.num.range(1, 500),
default: 30,
desc: {
'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'

View file

@ -19,7 +19,7 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 500),
validator: $.optional.num.range(1, 500),
default: 30,
desc: {
'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'

View file

@ -19,7 +19,7 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 500),
validator: $.optional.num.range(1, 500),
default: 30,
desc: {
'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'

View file

@ -18,7 +18,7 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 500),
validator: $.optional.num.range(1, 500),
default: 30,
desc: {
'ja-JP': '最大数。例えば 30 を指定したとすると、スパンが"day"の場合は30日分のデータが、スパンが"hour"の場合は30時間分のデータが返ります。'

View file

@ -15,28 +15,28 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
folderId: {
validator: $.type(ID).optional.nullable,
validator: $.optional.nullable.type(ID),
default: null as any,
transform: transform,
},
type: {
validator: $.str.optional.match(/^[a-zA-Z\/\-\*]+$/)
validator: $.optional.str.match(/^[a-zA-Z\/\-\*]+$/)
}
}
};

View file

@ -25,7 +25,7 @@ export const meta = {
params: {
folderId: {
validator: $.type(ID).optional.nullable,
validator: $.optional.nullable.type(ID),
transform: transform,
default: null as any,
desc: {
@ -34,7 +34,7 @@ export const meta = {
},
isSensitive: {
validator: $.or($.bool, $.str).optional,
validator: $.optional.or($.bool, $.str),
default: false,
transform: (v: any): boolean => v === true || v === 'true',
desc: {
@ -44,7 +44,7 @@ export const meta = {
},
force: {
validator: $.or($.bool, $.str).optional,
validator: $.optional.or($.bool, $.str),
default: false,
transform: (v: any): boolean => v === true || v === 'true',
desc: {

View file

@ -14,7 +14,7 @@ export const meta = {
},
folderId: {
validator: $.type(ID).optional.nullable,
validator: $.optional.nullable.type(ID),
transform: transform,
default: null as any,
desc: {

View file

@ -19,7 +19,7 @@ export const meta = {
params: {
fileId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
desc: {
'ja-JP': '対象のファイルID',
@ -28,7 +28,7 @@ export const meta = {
},
url: {
validator: $.str.optional,
validator: $.optional.str,
desc: {
'ja-JP': '対象のファイルのURL',
'en-US': 'Target file URL'

View file

@ -26,7 +26,7 @@ export const meta = {
},
folderId: {
validator: $.type(ID).optional.nullable,
validator: $.optional.nullable.type(ID),
transform: transform,
default: undefined as any,
desc: {
@ -35,7 +35,7 @@ export const meta = {
},
name: {
validator: $.str.optional.pipe(validateFileName),
validator: $.optional.str.pipe(validateFileName),
default: undefined as any,
desc: {
'ja-JP': 'ファイル名',
@ -44,7 +44,7 @@ export const meta = {
},
isSensitive: {
validator: $.bool.optional,
validator: $.optional.bool,
default: undefined as any,
desc: {
'ja-JP': 'このメディアが「閲覧注意」(NSFW)かどうか',

View file

@ -26,13 +26,13 @@ export const meta = {
},
folderId: {
validator: $.type(ID).optional.nullable,
validator: $.optional.nullable.type(ID),
default: null as any,
transform: transform
},
isSensitive: {
validator: $.bool.optional,
validator: $.optional.bool,
default: false,
desc: {
'ja-JP': 'このメディアが「閲覧注意」(NSFW)かどうか',
@ -41,7 +41,7 @@ export const meta = {
},
force: {
validator: $.bool.optional,
validator: $.optional.bool,
default: false,
desc: {
'ja-JP': 'true にすると、同じハッシュを持つファイルが既にアップロードされていても強制的にファイルを作成します。',

View file

@ -15,22 +15,22 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
folderId: {
validator: $.type(ID).optional.nullable,
validator: $.optional.nullable.type(ID),
default: null as any,
transform: transform,
}

View file

@ -18,7 +18,7 @@ export const meta = {
params: {
name: {
validator: $.str.optional.pipe(isValidFolderName),
validator: $.optional.str.pipe(isValidFolderName),
default: 'Untitled',
desc: {
'ja-JP': 'フォルダ名',
@ -27,7 +27,7 @@ export const meta = {
},
parentId: {
validator: $.type(ID).optional.nullable,
validator: $.optional.nullable.type(ID),
transform: transform,
desc: {
'ja-JP': '親フォルダID',

View file

@ -14,7 +14,7 @@ export const meta = {
},
parentId: {
validator: $.type(ID).optional.nullable,
validator: $.optional.nullable.type(ID),
transform: transform,
default: null as any,
desc: {

View file

@ -27,7 +27,7 @@ export const meta = {
},
name: {
validator: $.str.optional.pipe(isValidFolderName),
validator: $.optional.str.pipe(isValidFolderName),
desc: {
'ja-JP': 'フォルダ名',
'en-US': 'Folder name'
@ -35,7 +35,7 @@ export const meta = {
},
parentId: {
validator: $.type(ID).optional.nullable,
validator: $.optional.nullable.type(ID),
transform: transform,
desc: {
'ja-JP': '親フォルダID',

View file

@ -10,22 +10,22 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
type: {
validator: $.str.optional.match(/^[a-zA-Z\/\-\*]+$/)
validator: $.optional.str.match(/^[a-zA-Z\/\-\*]+$/)
}
}
};

View file

@ -7,29 +7,29 @@ export const meta = {
params: {
blocked: {
validator: $.bool.optional.nullable,
validator: $.optional.nullable.bool,
},
notResponding: {
validator: $.bool.optional.nullable,
validator: $.optional.nullable.bool,
},
markedAsClosed: {
validator: $.bool.optional.nullable,
validator: $.optional.nullable.bool,
},
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 30
},
offset: {
validator: $.num.optional.min(0),
validator: $.optional.num.min(0),
default: 0
},
sort: {
validator: $.str.optional,
validator: $.optional.str,
}
}
};

View file

@ -6,22 +6,22 @@ import define from '../../../define';
export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
my: {
validator: $.bool.optional,
validator: $.optional.bool,
default: false
}
}

View file

@ -12,7 +12,7 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10,
desc: {
'ja-JP': '最大数'
@ -27,7 +27,7 @@ export const meta = {
},
offset: {
validator: $.num.optional.min(0),
validator: $.optional.num.min(0),
default: 0,
desc: {
'ja-JP': 'オフセット'

View file

@ -10,17 +10,17 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10,
},
offset: {
validator: $.num.optional.min(0),
validator: $.optional.num.min(0),
default: 0,
},
sort: {
validator: $.str.optional.or('desc|asc'),
validator: $.optional.str.or('desc|asc'),
default: 'desc',
}
}

View file

@ -15,17 +15,17 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
}
}

View file

@ -19,37 +19,37 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
following: {
validator: $.bool.optional,
validator: $.optional.bool,
default: false
},
markAsRead: {
validator: $.bool.optional,
validator: $.optional.bool,
default: true
},
includeTypes: {
validator: $.arr($.str.or(['follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'poll_vote', 'receiveFollowRequest'])).optional,
validator: $.optional.arr($.str.or(['follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'poll_vote', 'receiveFollowRequest'])),
default: [] as string[]
},
excludeTypes: {
validator: $.arr($.str.or(['follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'poll_vote', 'receiveFollowRequest'])).optional,
validator: $.optional.arr($.str.or(['follow', 'mention', 'reply', 'renote', 'quote', 'reaction', 'poll_vote', 'receiveFollowRequest'])),
default: [] as string[]
}
}

View file

@ -10,17 +10,17 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
}
}

View file

@ -24,42 +24,42 @@ export const meta = {
params: {
name: {
validator: $.str.optional.nullable.pipe(isValidName),
validator: $.optional.nullable.str.pipe(isValidName),
desc: {
'ja-JP': '名前(ハンドルネームやニックネーム)'
}
},
description: {
validator: $.str.optional.nullable.pipe(isValidDescription),
validator: $.optional.nullable.str.pipe(isValidDescription),
desc: {
'ja-JP': 'アカウントの説明や自己紹介'
}
},
lang: {
validator: $.str.optional.nullable.or(Object.keys(langmap)),
validator: $.optional.nullable.str.or(Object.keys(langmap)),
desc: {
'ja-JP': '言語'
}
},
location: {
validator: $.str.optional.nullable.pipe(isValidLocation),
validator: $.optional.nullable.str.pipe(isValidLocation),
desc: {
'ja-JP': '住んでいる地域、所在'
}
},
birthday: {
validator: $.str.optional.nullable.pipe(isValidBirthday),
validator: $.optional.nullable.str.pipe(isValidBirthday),
desc: {
'ja-JP': '誕生日 (YYYY-MM-DD形式)'
}
},
avatarId: {
validator: $.type(ID).optional.nullable,
validator: $.optional.nullable.type(ID),
transform: transform,
desc: {
'ja-JP': 'アイコンに設定する画像のドライブファイルID'
@ -67,7 +67,7 @@ export const meta = {
},
bannerId: {
validator: $.type(ID).optional.nullable,
validator: $.optional.nullable.type(ID),
transform: transform,
desc: {
'ja-JP': 'バナーに設定する画像のドライブファイルID'
@ -75,7 +75,7 @@ export const meta = {
},
wallpaperId: {
validator: $.type(ID).optional.nullable,
validator: $.optional.nullable.type(ID),
transform: transform,
desc: {
'ja-JP': '壁紙に設定する画像のドライブファイルID'
@ -83,49 +83,49 @@ export const meta = {
},
isLocked: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': '鍵アカウントか否か'
}
},
carefulBot: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'Botからのフォローを承認制にするか'
}
},
autoAcceptFollowed: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'フォローしているユーザーからのフォローリクエストを自動承認するか'
}
},
isBot: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'Botか否か'
}
},
isCat: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': '猫か否か'
}
},
autoWatch: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': '投稿の自動ウォッチをするか否か'
}
},
alwaysMarkNsfw: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'アップロードするメディアをデフォルトで「閲覧注意」として設定するか'
}

View file

@ -14,7 +14,7 @@ export const meta = {
},
value: {
validator: $.any.nullable
validator: $.nullable.any
}
}
};

View file

@ -26,7 +26,7 @@ export const meta = {
},
email: {
validator: $.str.optional.nullable
validator: $.optional.nullable.str
},
}
};

View file

@ -15,7 +15,7 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
}
}

View file

@ -27,22 +27,22 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
markAsRead: {
validator: $.bool.optional,
validator: $.optional.bool,
default: true
}
}

View file

@ -32,11 +32,11 @@ export const meta = {
},
text: {
validator: $.str.optional.pipe(isValidText)
validator: $.optional.str.pipe(isValidText)
},
fileId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
}
}

View file

@ -20,7 +20,7 @@ export const meta = {
params: {
detail: {
validator: $.bool.optional,
validator: $.optional.bool,
default: true
}
},

View file

@ -15,17 +15,17 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 30
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
}

View file

@ -12,12 +12,12 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
offset: {
validator: $.num.optional.min(0),
validator: $.optional.num.min(0),
default: 0
}
}

View file

@ -10,59 +10,59 @@ export const meta = {
params: {
local: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'ローカルの投稿に限定するか否か'
}
},
reply: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': '返信に限定するか否か'
}
},
renote: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'Renoteに限定するか否か'
}
},
withFiles: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'ファイルが添付された投稿に限定するか否か'
}
},
media: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'ファイルが添付された投稿に限定するか否か (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
}
},
poll: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'アンケートが添付された投稿に限定するか否か'
}
},
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
}

View file

@ -22,12 +22,12 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
offset: {
validator: $.num.optional.min(0),
validator: $.optional.num.min(0),
default: 0
},
}

View file

@ -35,7 +35,7 @@ export const meta = {
params: {
visibility: {
validator: $.str.optional.or(['public', 'home', 'followers', 'specified', 'private']),
validator: $.optional.str.or(['public', 'home', 'followers', 'specified', 'private']),
default: 'public',
desc: {
'ja-JP': '投稿の公開範囲'
@ -43,7 +43,7 @@ export const meta = {
},
visibleUserIds: {
validator: $.arr($.type(ID)).optional.unique().min(0),
validator: $.optional.arr($.type(ID)).unique().min(0),
transform: transformMany,
desc: {
'ja-JP': '(投稿の公開範囲が specified の場合)投稿を閲覧できるユーザー'
@ -51,7 +51,7 @@ export const meta = {
},
text: {
validator: $.str.optional.nullable.pipe(text =>
validator: $.optional.nullable.str.pipe(text =>
length(text.trim()) <= maxNoteTextLength && text.trim() != ''
),
default: null as any,
@ -61,14 +61,14 @@ export const meta = {
},
cw: {
validator: $.str.optional.nullable.pipe(isValidCw),
validator: $.optional.nullable.str.pipe(isValidCw),
desc: {
'ja-JP': 'コンテンツの警告。このパラメータを指定すると設定したテキストで投稿のコンテンツを隠す事が出来ます。'
}
},
viaMobile: {
validator: $.bool.optional,
validator: $.optional.bool,
default: false,
desc: {
'ja-JP': 'モバイルデバイスからの投稿か否か。'
@ -76,7 +76,7 @@ export const meta = {
},
localOnly: {
validator: $.bool.optional,
validator: $.optional.bool,
default: false,
desc: {
'ja-JP': 'ローカルのみに投稿か否か。'
@ -84,7 +84,7 @@ export const meta = {
},
noExtractMentions: {
validator: $.bool.optional,
validator: $.optional.bool,
default: false,
desc: {
'ja-JP': '本文からメンションを展開しないか否か。'
@ -92,7 +92,7 @@ export const meta = {
},
noExtractHashtags: {
validator: $.bool.optional,
validator: $.optional.bool,
default: false,
desc: {
'ja-JP': '本文からハッシュタグを展開しないか否か。'
@ -100,7 +100,7 @@ export const meta = {
},
noExtractEmojis: {
validator: $.bool.optional,
validator: $.optional.bool,
default: false,
desc: {
'ja-JP': '本文からカスタム絵文字を展開しないか否か。'
@ -108,16 +108,16 @@ export const meta = {
},
geo: {
validator: $.obj({
validator: $.optional.nullable.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(),
altitude: $.nullable.num,
accuracy: $.nullable.num,
altitudeAccuracy: $.nullable.num,
heading: $.nullable.num.range(0, 360),
speed: $.nullable.num
}).strict(),
desc: {
'ja-JP': '位置情報'
},
@ -125,7 +125,7 @@ export const meta = {
},
fileIds: {
validator: $.arr($.type(ID)).optional.unique().range(1, 4),
validator: $.optional.arr($.type(ID)).unique().range(1, 4),
transform: transformMany,
desc: {
'ja-JP': '添付するファイル'
@ -133,7 +133,7 @@ export const meta = {
},
mediaIds: {
validator: $.arr($.type(ID)).optional.unique().range(1, 4),
validator: $.optional.arr($.type(ID)).unique().range(1, 4),
transform: transformMany,
desc: {
'ja-JP': '添付するファイル (このパラメータは廃止予定です。代わりに fileIds を使ってください。)'
@ -141,7 +141,7 @@ export const meta = {
},
replyId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
desc: {
'ja-JP': '返信対象'
@ -149,7 +149,7 @@ export const meta = {
},
renoteId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
desc: {
'ja-JP': 'Renote対象'
@ -157,12 +157,12 @@ export const meta = {
},
poll: {
validator: $.obj({
validator: $.optional.obj({
choices: $.arr($.str)
.unique()
.range(2, 10)
.each(c => c.length > 0 && c.length < 50)
}).optional.strict(),
}).strict(),
desc: {
'ja-JP': 'アンケート'
},

View file

@ -13,7 +13,7 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 30),
validator: $.optional.num.range(1, 30),
default: 10,
desc: {
'ja-JP': '最大数'

View file

@ -14,40 +14,40 @@ export const meta = {
params: {
withFiles: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'ファイルが添付された投稿に限定するか否か'
}
},
mediaOnly: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'ファイルが添付された投稿に限定するか否か (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
}
},
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
sinceDate: {
validator: $.num.optional
validator: $.optional.num
},
untilDate: {
validator: $.num.optional
validator: $.optional.num
},
}
};

View file

@ -16,7 +16,7 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10,
desc: {
'ja-JP': '最大数'
@ -24,7 +24,7 @@ export const meta = {
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
desc: {
'ja-JP': '指定すると、この投稿を基点としてより新しい投稿を取得します'
@ -32,7 +32,7 @@ export const meta = {
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
desc: {
'ja-JP': '指定すると、この投稿を基点としてより古い投稿を取得します'
@ -40,21 +40,21 @@ export const meta = {
},
sinceDate: {
validator: $.num.optional,
validator: $.optional.num,
desc: {
'ja-JP': '指定した時間を基点としてより新しい投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
}
},
untilDate: {
validator: $.num.optional,
validator: $.optional.num,
desc: {
'ja-JP': '指定した時間を基点としてより古い投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
}
},
includeMyRenotes: {
validator: $.bool.optional,
validator: $.optional.bool,
default: true,
desc: {
'ja-JP': '自分の行ったRenoteを含めるかどうか'
@ -62,7 +62,7 @@ export const meta = {
},
includeRenotedMyNotes: {
validator: $.bool.optional,
validator: $.optional.bool,
default: true,
desc: {
'ja-JP': 'Renoteされた自分の投稿を含めるかどうか'
@ -70,7 +70,7 @@ export const meta = {
},
includeLocalRenotes: {
validator: $.bool.optional,
validator: $.optional.bool,
default: true,
desc: {
'ja-JP': 'Renoteされたローカルの投稿を含めるかどうか'
@ -78,14 +78,14 @@ export const meta = {
},
withFiles: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します'
}
},
mediaOnly: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
}

View file

@ -15,28 +15,28 @@ export const meta = {
params: {
withFiles: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'ファイルが添付された投稿に限定するか否か'
}
},
mediaOnly: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'ファイルが添付された投稿に限定するか否か (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
}
},
fileType: {
validator: $.arr($.str).optional,
validator: $.optional.arr($.str),
desc: {
'ja-JP': '指定された種類のファイルが添付された投稿のみを取得します'
}
},
excludeNsfw: {
validator: $.bool.optional,
validator: $.optional.bool,
default: false,
desc: {
'ja-JP': 'true にすると、NSFW指定されたファイルを除外します(fileTypeが指定されている場合のみ有効)'
@ -44,26 +44,26 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
sinceDate: {
validator: $.num.optional,
validator: $.optional.num,
},
untilDate: {
validator: $.num.optional,
validator: $.optional.num,
},
}
};

View file

@ -17,27 +17,27 @@ export const meta = {
params: {
following: {
validator: $.bool.optional,
validator: $.optional.bool,
default: false
},
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
visibility: {
validator: $.str.optional,
validator: $.optional.str,
},
}
};

View file

@ -14,12 +14,12 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
offset: {
validator: $.num.optional.min(0),
validator: $.optional.num.min(0),
default: 0
}
}

View file

@ -23,22 +23,22 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
offset: {
validator: $.num.optional,
validator: $.optional.num,
default: 0
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
}

View file

@ -22,17 +22,17 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
}
}

View file

@ -24,12 +24,12 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
offset: {
validator: $.num.optional.min(0),
validator: $.optional.num.min(0),
default: 0
},
}

View file

@ -20,12 +20,12 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
offset: {
validator: $.num.optional.min(0),
validator: $.optional.num.min(0),
default: 0
}
}

View file

@ -13,31 +13,31 @@ export const meta = {
params: {
tag: {
validator: $.str.optional,
validator: $.optional.str,
desc: {
'ja-JP': 'タグ'
}
},
query: {
validator: $.arr($.arr($.str)).optional,
validator: $.optional.arr($.arr($.str)),
desc: {
'ja-JP': 'クエリ'
}
},
following: {
validator: $.bool.optional.nullable,
validator: $.optional.nullable.bool,
default: null as any
},
mute: {
validator: $.str.optional,
validator: $.optional.str,
default: 'mute_all'
},
reply: {
validator: $.bool.optional.nullable,
validator: $.optional.nullable.bool,
default: null as any,
desc: {
'ja-JP': '返信に限定するか否か'
@ -45,7 +45,7 @@ export const meta = {
},
renote: {
validator: $.bool.optional.nullable,
validator: $.optional.nullable.bool,
default: null as any,
desc: {
'ja-JP': 'Renoteに限定するか否か'
@ -53,14 +53,14 @@ export const meta = {
},
withFiles: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します'
}
},
media: {
validator: $.bool.optional.nullable,
validator: $.optional.nullable.bool,
default: null as any,
desc: {
'ja-JP': 'ファイルが添付された投稿に限定するか否か (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
@ -68,7 +68,7 @@ export const meta = {
},
poll: {
validator: $.bool.optional.nullable,
validator: $.optional.nullable.bool,
default: null as any,
desc: {
'ja-JP': 'アンケートが添付された投稿に限定するか否か'
@ -76,7 +76,7 @@ export const meta = {
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
desc: {
'ja-JP': '指定すると、この投稿を基点としてより古い投稿を取得します'
@ -84,20 +84,20 @@ export const meta = {
},
sinceDate: {
validator: $.num.optional,
validator: $.optional.num,
},
untilDate: {
validator: $.num.optional,
validator: $.optional.num,
},
offset: {
validator: $.num.optional.min(0),
validator: $.optional.num.min(0),
default: 0
},
limit: {
validator: $.num.optional.range(1, 30),
validator: $.optional.num.range(1, 30),
default: 10
},
}

View file

@ -18,7 +18,7 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10,
desc: {
'ja-JP': '最大数'
@ -26,7 +26,7 @@ export const meta = {
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
desc: {
'ja-JP': '指定すると、この投稿を基点としてより新しい投稿を取得します'
@ -34,7 +34,7 @@ export const meta = {
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
desc: {
'ja-JP': '指定すると、この投稿を基点としてより古い投稿を取得します'
@ -42,21 +42,21 @@ export const meta = {
},
sinceDate: {
validator: $.num.optional,
validator: $.optional.num,
desc: {
'ja-JP': '指定した時間を基点としてより新しい投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
}
},
untilDate: {
validator: $.num.optional,
validator: $.optional.num,
desc: {
'ja-JP': '指定した時間を基点としてより古い投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
}
},
includeMyRenotes: {
validator: $.bool.optional,
validator: $.optional.bool,
default: true,
desc: {
'ja-JP': '自分の行ったRenoteを含めるかどうか'
@ -64,7 +64,7 @@ export const meta = {
},
includeRenotedMyNotes: {
validator: $.bool.optional,
validator: $.optional.bool,
default: true,
desc: {
'ja-JP': 'Renoteされた自分の投稿を含めるかどうか'
@ -72,7 +72,7 @@ export const meta = {
},
includeLocalRenotes: {
validator: $.bool.optional,
validator: $.optional.bool,
default: true,
desc: {
'ja-JP': 'Renoteされたローカルの投稿を含めるかどうか'
@ -80,14 +80,14 @@ export const meta = {
},
withFiles: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します'
}
},
mediaOnly: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
}

View file

@ -25,7 +25,7 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10,
desc: {
'ja-JP': '最大数'
@ -33,7 +33,7 @@ export const meta = {
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
desc: {
'ja-JP': '指定すると、この投稿を基点としてより新しい投稿を取得します'
@ -41,7 +41,7 @@ export const meta = {
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
desc: {
'ja-JP': '指定すると、この投稿を基点としてより古い投稿を取得します'
@ -49,21 +49,21 @@ export const meta = {
},
sinceDate: {
validator: $.num.optional,
validator: $.optional.num,
desc: {
'ja-JP': '指定した時間を基点としてより新しい投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
}
},
untilDate: {
validator: $.num.optional,
validator: $.optional.num,
desc: {
'ja-JP': '指定した時間を基点としてより古い投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
}
},
includeMyRenotes: {
validator: $.bool.optional,
validator: $.optional.bool,
default: true,
desc: {
'ja-JP': '自分の行ったRenoteを含めるかどうか'
@ -71,7 +71,7 @@ export const meta = {
},
includeRenotedMyNotes: {
validator: $.bool.optional,
validator: $.optional.bool,
default: true,
desc: {
'ja-JP': 'Renoteされた自分の投稿を含めるかどうか'
@ -79,7 +79,7 @@ export const meta = {
},
includeLocalRenotes: {
validator: $.bool.optional,
validator: $.optional.bool,
default: true,
desc: {
'ja-JP': 'Renoteされたローカルの投稿を含めるかどうか'
@ -87,14 +87,14 @@ export const meta = {
},
withFiles: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します'
}
},
mediaOnly: {
validator: $.bool.optional,
validator: $.optional.bool,
desc: {
'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
}

View file

@ -7,17 +7,17 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
offset: {
validator: $.num.optional.min(0),
validator: $.optional.num.min(0),
default: 0
},
sort: {
validator: $.str.optional.or([
validator: $.optional.str.or([
'+follower',
'-follower',
'+createdAt',
@ -28,7 +28,7 @@ export const meta = {
},
origin: {
validator: $.str.optional.or([
validator: $.optional.str.or([
'combined',
'local',
'remote',

View file

@ -25,18 +25,18 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
cursor: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
default: null as any,
transform: transform,
},
iknow: {
validator: $.bool.optional,
validator: $.optional.bool,
default: false,
}
}

View file

@ -25,18 +25,18 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
cursor: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
default: null as any,
transform: transform,
},
iknow: {
validator: $.bool.optional,
validator: $.optional.bool,
default: false,
}
}

View file

@ -20,7 +20,7 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
}

View file

@ -14,7 +14,7 @@ export const meta = {
params: {
userId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
desc: {
'ja-JP': '対象のユーザーのID',
@ -23,18 +23,18 @@ export const meta = {
},
username: {
validator: $.str.optional,
validator: $.optional.str,
desc: {
'ja-JP': 'ユーザー名'
}
},
host: {
validator: $.str.optional.nullable,
validator: $.optional.nullable.str,
},
includeReplies: {
validator: $.bool.optional,
validator: $.optional.bool,
default: true,
desc: {
@ -43,7 +43,7 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10,
desc: {
'ja-JP': '最大数'
@ -51,7 +51,7 @@ export const meta = {
},
sinceId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
desc: {
'ja-JP': '指定すると、この投稿を基点としてより新しい投稿を取得します'
@ -59,7 +59,7 @@ export const meta = {
},
untilId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
desc: {
'ja-JP': '指定すると、この投稿を基点としてより古い投稿を取得します'
@ -67,21 +67,21 @@ export const meta = {
},
sinceDate: {
validator: $.num.optional,
validator: $.optional.num,
desc: {
'ja-JP': '指定した時間を基点としてより新しい投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
}
},
untilDate: {
validator: $.num.optional,
validator: $.optional.num,
desc: {
'ja-JP': '指定した時間を基点としてより古い投稿を取得します。数値は、1970年1月1日 00:00:00 UTC から指定した日時までの経過時間をミリ秒単位で表します。'
}
},
includeMyRenotes: {
validator: $.bool.optional,
validator: $.optional.bool,
default: true,
desc: {
'ja-JP': '自分の行ったRenoteを含めるかどうか'
@ -89,7 +89,7 @@ export const meta = {
},
includeRenotedMyNotes: {
validator: $.bool.optional,
validator: $.optional.bool,
default: true,
desc: {
'ja-JP': 'Renoteされた自分の投稿を含めるかどうか'
@ -97,7 +97,7 @@ export const meta = {
},
includeLocalRenotes: {
validator: $.bool.optional,
validator: $.optional.bool,
default: true,
desc: {
'ja-JP': 'Renoteされたローカルの投稿を含めるかどうか'
@ -105,7 +105,7 @@ export const meta = {
},
withFiles: {
validator: $.bool.optional,
validator: $.optional.bool,
default: false,
desc: {
'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します'
@ -113,7 +113,7 @@ export const meta = {
},
mediaOnly: {
validator: $.bool.optional,
validator: $.optional.bool,
default: false,
desc: {
'ja-JP': 'true にすると、ファイルが添付された投稿だけ取得します (このパラメータは廃止予定です。代わりに withFiles を使ってください。)'
@ -121,14 +121,14 @@ export const meta = {
},
fileType: {
validator: $.arr($.str).optional,
validator: $.optional.arr($.str),
desc: {
'ja-JP': '指定された種類のファイルが添付された投稿のみを取得します'
}
},
excludeNsfw: {
validator: $.bool.optional,
validator: $.optional.bool,
default: false,
desc: {
'ja-JP': 'true にすると、NSFW指定されたファイルを除外します(fileTypeが指定されている場合のみ有効)'

View file

@ -21,12 +21,12 @@ export const meta = {
params: {
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10
},
offset: {
validator: $.num.optional.min(0),
validator: $.optional.num.min(0),
default: 0
}
}

View file

@ -19,7 +19,7 @@ export const meta = {
},
offset: {
validator: $.num.optional.min(0),
validator: $.optional.num.min(0),
default: 0,
desc: {
'ja-JP': 'オフセット'
@ -27,7 +27,7 @@ export const meta = {
},
limit: {
validator: $.num.optional.range(1, 100),
validator: $.optional.num.range(1, 100),
default: 10,
desc: {
'ja-JP': '取得する数'
@ -35,7 +35,7 @@ export const meta = {
},
localOnly: {
validator: $.bool.optional,
validator: $.optional.bool,
default: false,
desc: {
'ja-JP': 'ローカルユーザーのみ検索対象にするか否か'
@ -43,7 +43,7 @@ export const meta = {
},
detail: {
validator: $.bool.optional,
validator: $.optional.bool,
default: true,
desc: {
'ja-JP': '詳細なユーザー情報を含めるか否か'

View file

@ -16,7 +16,7 @@ export const meta = {
params: {
userId: {
validator: $.type(ID).optional,
validator: $.optional.type(ID),
transform: transform,
desc: {
'ja-JP': '対象のユーザーのID',
@ -25,7 +25,7 @@ export const meta = {
},
userIds: {
validator: $.arr($.type(ID)).optional.unique(),
validator: $.optional.arr($.type(ID)).unique(),
transform: transformMany,
desc: {
'ja-JP': 'ユーザーID (配列)'
@ -33,11 +33,11 @@ export const meta = {
},
username: {
validator: $.str.optional
validator: $.optional.str
},
host: {
validator: $.str.optional.nullable
validator: $.optional.nullable.str
}
}
};

View file

@ -9,7 +9,6 @@ import 'showdown-highlightjs-extension';
import ms = require('ms');
import * as Router from 'koa-router';
import * as send from 'koa-send';
import { Context, ObjectContext } from 'cafy';
import * as glob from 'glob';
import * as yaml from 'js-yaml';
import config from '../../config';
@ -125,27 +124,6 @@ const sortParams = (params: { name: string }[]) => {
return params;
};
// WIP type
const extractParamDefRef = (params: Context[]) => {
let defs: any[] = [];
for (const param of params) {
if (param.data && param.data.ref) {
const props = (param as ObjectContext<any>).props;
defs.push({
name: param.data.ref,
params: sortParams(Object.keys(props).map(k => parseParamDefinition(k, props[k])))
});
const childDefs = extractParamDefRef(Object.keys(props).map(k => props[k]));
defs = defs.concat(childDefs);
}
}
return sortParams(defs);
};
const extractPropDefRef = (props: any[]) => {
let defs: any[] = [];
@ -189,7 +167,6 @@ router.get('/*/api/endpoints/*', async ctx => {
},
// @ts-ignore
params: ep.meta.params ? sortParams(Object.entries(ep.meta.params).map(([k, v]) => parseParamDefinition(k, v))) : null,
paramDefs: ep.meta.params ? extractParamDefRef(Object.values(ep.meta.params).map(x => x.validator)) : null,
res: ep.meta.res,
resProps: ep.meta.res && ep.meta.res.props ? sortParams(Object.entries(ep.meta.res.props).map(([k, v]) => parsePropDefinition(k, v))) : null,
resDefs: null as any, //extractPropDefRef(Object.entries(ep.res.props).map(([k, v]) => parsePropDefinition(k, v)))