Migrate cafy to 14.0 (#4240)

This commit is contained in:
syuilo 2019-02-13 16:33:07 +09:00 committed by GitHub
parent b083430011
commit 5aa58da918
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
77 changed files with 334 additions and 345 deletions

View file

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

View file

@ -25,9 +25,9 @@ export type ObjectId = mongo.ObjectID;
/** /**
* ID * ID
*/ */
export default class ID extends Context<string> { export default class ID<Maybe = string> extends Context<string | Maybe> {
constructor() { constructor(optional = false, nullable = false) {
super(); super(optional, nullable);
this.push((v: any) => { this.push((v: any) => {
if (!isObjectId(v) && isNotAnId(v)) { if (!isObjectId(v) && isNotAnId(v)) {
@ -40,4 +40,16 @@ export default class ID extends Context<string> {
public getType() { public getType() {
return super.getType('string'); 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); const userId = new ObjectID(ctx.params.user);
// Get 'cursor' parameter // 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 // 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'; const page: boolean = ctx.request.query.page === 'true';
// Validate parameters // Validate parameters

View file

@ -20,10 +20,10 @@ export default async (ctx: Router.IRouterContext) => {
const userId = new ObjectID(ctx.params.user); const userId = new ObjectID(ctx.params.user);
// Get 'cursor' parameter // 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 // 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'; const page: boolean = ctx.request.query.page === 'true';
// Validate parameters // Validate parameters

View file

@ -24,13 +24,13 @@ export default async (ctx: Router.IRouterContext) => {
const userId = new ObjectID(ctx.params.user); const userId = new ObjectID(ctx.params.user);
// Get 'sinceId' parameter // 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 // 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 // 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'; const page: boolean = ctx.request.query.page === 'true';
// Validate parameters // Validate parameters

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -15,28 +15,28 @@ export const meta = {
params: { params: {
limit: { limit: {
validator: $.num.optional.range(1, 100), validator: $.optional.num.range(1, 100),
default: 10 default: 10
}, },
sinceId: { sinceId: {
validator: $.type(ID).optional, validator: $.optional.type(ID),
transform: transform, transform: transform,
}, },
untilId: { untilId: {
validator: $.type(ID).optional, validator: $.optional.type(ID),
transform: transform, transform: transform,
}, },
folderId: { folderId: {
validator: $.type(ID).optional.nullable, validator: $.optional.nullable.type(ID),
default: null as any, default: null as any,
transform: transform, transform: transform,
}, },
type: { 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: { params: {
folderId: { folderId: {
validator: $.type(ID).optional.nullable, validator: $.optional.nullable.type(ID),
transform: transform, transform: transform,
default: null as any, default: null as any,
desc: { desc: {
@ -34,7 +34,7 @@ export const meta = {
}, },
isSensitive: { isSensitive: {
validator: $.or($.bool, $.str).optional, validator: $.optional.or($.bool, $.str),
default: false, default: false,
transform: (v: any): boolean => v === true || v === 'true', transform: (v: any): boolean => v === true || v === 'true',
desc: { desc: {
@ -44,7 +44,7 @@ export const meta = {
}, },
force: { force: {
validator: $.or($.bool, $.str).optional, validator: $.optional.or($.bool, $.str),
default: false, default: false,
transform: (v: any): boolean => v === true || v === 'true', transform: (v: any): boolean => v === true || v === 'true',
desc: { desc: {

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -10,22 +10,22 @@ export const meta = {
params: { params: {
limit: { limit: {
validator: $.num.optional.range(1, 100), validator: $.optional.num.range(1, 100),
default: 10 default: 10
}, },
sinceId: { sinceId: {
validator: $.type(ID).optional, validator: $.optional.type(ID),
transform: transform, transform: transform,
}, },
untilId: { untilId: {
validator: $.type(ID).optional, validator: $.optional.type(ID),
transform: transform, transform: transform,
}, },
type: { 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: { params: {
blocked: { blocked: {
validator: $.bool.optional.nullable, validator: $.optional.nullable.bool,
}, },
notResponding: { notResponding: {
validator: $.bool.optional.nullable, validator: $.optional.nullable.bool,
}, },
markedAsClosed: { markedAsClosed: {
validator: $.bool.optional.nullable, validator: $.optional.nullable.bool,
}, },
limit: { limit: {
validator: $.num.optional.range(1, 100), validator: $.optional.num.range(1, 100),
default: 30 default: 30
}, },
offset: { offset: {
validator: $.num.optional.min(0), validator: $.optional.num.min(0),
default: 0 default: 0
}, },
sort: { sort: {
validator: $.str.optional, validator: $.optional.str,
} }
} }
}; };

View file

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

View file

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

View file

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

View file

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

View file

@ -19,37 +19,37 @@ export const meta = {
params: { params: {
limit: { limit: {
validator: $.num.optional.range(1, 100), validator: $.optional.num.range(1, 100),
default: 10 default: 10
}, },
sinceId: { sinceId: {
validator: $.type(ID).optional, validator: $.optional.type(ID),
transform: transform, transform: transform,
}, },
untilId: { untilId: {
validator: $.type(ID).optional, validator: $.optional.type(ID),
transform: transform, transform: transform,
}, },
following: { following: {
validator: $.bool.optional, validator: $.optional.bool,
default: false default: false
}, },
markAsRead: { markAsRead: {
validator: $.bool.optional, validator: $.optional.bool,
default: true default: true
}, },
includeTypes: { 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[] default: [] as string[]
}, },
excludeTypes: { 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[] default: [] as string[]
} }
} }

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -9,7 +9,6 @@ import 'showdown-highlightjs-extension';
import ms = require('ms'); import ms = require('ms');
import * as Router from 'koa-router'; import * as Router from 'koa-router';
import * as send from 'koa-send'; import * as send from 'koa-send';
import { Context, ObjectContext } from 'cafy';
import * as glob from 'glob'; import * as glob from 'glob';
import * as yaml from 'js-yaml'; import * as yaml from 'js-yaml';
import config from '../../config'; import config from '../../config';
@ -125,27 +124,6 @@ const sortParams = (params: { name: string }[]) => {
return params; 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[]) => { const extractPropDefRef = (props: any[]) => {
let defs: any[] = []; let defs: any[] = [];
@ -189,7 +167,6 @@ router.get('/*/api/endpoints/*', async ctx => {
}, },
// @ts-ignore // @ts-ignore
params: ep.meta.params ? sortParams(Object.entries(ep.meta.params).map(([k, v]) => parseParamDefinition(k, v))) : null, 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, 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, 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))) resDefs: null as any, //extractPropDefRef(Object.entries(ep.res.props).map(([k, v]) => parsePropDefinition(k, v)))