Improve type definitions
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
import { Context } from 'cafy';
|
||||
import * as path from 'path';
|
||||
import * as glob from 'glob';
|
||||
import { Schema } from '../../prelude/schema';
|
||||
|
||||
export type Param = {
|
||||
validator: Context<any>;
|
||||
@ -29,7 +30,7 @@ export interface IEndpointMeta {
|
||||
};
|
||||
};
|
||||
|
||||
res?: any;
|
||||
res?: Schema;
|
||||
|
||||
/**
|
||||
* このエンドポイントにリクエストするのにユーザー情報が必須か否か
|
||||
|
@ -1,6 +1,7 @@
|
||||
import $ from 'cafy';
|
||||
import define from '../../define';
|
||||
import notesChart from '../../../../services/chart/notes';
|
||||
import notesChart, { notesLogSchema } from '../../../../services/chart/notes';
|
||||
import { convertLog } from '../../../../services/chart';
|
||||
|
||||
export const meta = {
|
||||
stability: 'stable',
|
||||
@ -28,12 +29,7 @@ export const meta = {
|
||||
},
|
||||
},
|
||||
|
||||
res: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'object',
|
||||
},
|
||||
},
|
||||
res: convertLog(notesLogSchema),
|
||||
};
|
||||
|
||||
export default define(meta, async (ps) => {
|
||||
|
@ -175,12 +175,10 @@ export const meta = {
|
||||
|
||||
res: {
|
||||
type: 'object',
|
||||
props: {
|
||||
properties: {
|
||||
createdNote: {
|
||||
type: 'Note',
|
||||
desc: {
|
||||
'ja-JP': '作成した投稿'
|
||||
}
|
||||
description: '作成した投稿'
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -4,6 +4,7 @@ import config from '../../../config';
|
||||
import { errors as basicErrors } from './errors';
|
||||
import { schemas } from './schemas';
|
||||
import { description } from './description';
|
||||
import { convertOpenApiSchema } from '../../../prelude/schema';
|
||||
|
||||
export function genOpenapiSpec(lang = 'ja-JP') {
|
||||
const spec = {
|
||||
@ -104,33 +105,7 @@ export function genOpenapiSpec(lang = 'ja-JP') {
|
||||
|
||||
const required = endpoint.meta.params ? Object.entries(endpoint.meta.params).filter(([k, v]) => !v.validator.isOptional).map(([k, v]) => k) : [];
|
||||
|
||||
const resSchema = endpoint.meta.res ? renderType(endpoint.meta.res) : {};
|
||||
|
||||
function renderType(x: any) {
|
||||
const res = {} as any;
|
||||
|
||||
if (['User', 'Note', 'DriveFile'].includes(x.type)) {
|
||||
res['$ref'] = `#/components/schemas/${x.type}`;
|
||||
} else if (x.type === 'object') {
|
||||
res['type'] = 'object';
|
||||
if (x.props) {
|
||||
const props = {} as any;
|
||||
for (const kv of Object.entries(x.props)) {
|
||||
props[kv[0]] = renderType(kv[1]);
|
||||
}
|
||||
res['properties'] = props;
|
||||
}
|
||||
} else if (x.type === 'array') {
|
||||
res['type'] = 'array';
|
||||
if (x.items) {
|
||||
res['items'] = renderType(x.items);
|
||||
}
|
||||
} else {
|
||||
res['type'] = x.type;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
const resSchema = endpoint.meta.res ? convertOpenApiSchema(endpoint.meta.res) : {};
|
||||
|
||||
const info = {
|
||||
operationId: endpoint.name,
|
||||
|
Reference in New Issue
Block a user