refactor: use ajv instead of cafy (#8324)
* wip * wip * Update abuse-user-reports.ts * Update files.ts * Update list-remote.ts * Update list.ts * Update show-users.ts * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * Update update.ts * Update search.ts * Update reactions.ts * Update search.ts * wip * wip * wip * wip * Update update.ts * Update relation.ts * Update available.ts * wip * wip * wip * Update packages/backend/src/server/api/define.ts Co-authored-by: Johann150 <johann.galle@protonmail.com> * Update define.ts * Update define.ts * typo * wip * wip * wip * wip * wip * wip * wip * wip * Update update.ts * wip * Update signup.ts * Update call.ts * minimum for limit * type * remove needless annotation * wip * Update signup.ts * wip * wip * fix * Update create.ts Co-authored-by: Johann150 <johann.galle@protonmail.com>
This commit is contained in:
parent
59785ea04c
commit
510de87607
320 changed files with 4395 additions and 5939 deletions
|
@ -1,5 +1,4 @@
|
|||
import endpoints from '../endpoints';
|
||||
import { Context } from 'cafy';
|
||||
import config from '@/config/index';
|
||||
import { errors as basicErrors } from './errors';
|
||||
import { schemas, convertSchemaToOpenApiSchema } from './schemas';
|
||||
|
@ -38,47 +37,7 @@ export function genOpenapiSpec(lang = 'ja-JP') {
|
|||
},
|
||||
};
|
||||
|
||||
function genProps(props: { [key: string]: Context; }) {
|
||||
const properties = {} as any;
|
||||
|
||||
for (const [k, v] of Object.entries(props)) {
|
||||
properties[k] = genProp(v);
|
||||
}
|
||||
|
||||
return properties;
|
||||
}
|
||||
|
||||
function genProp(param: Context): any {
|
||||
const required = param.name === 'Object' ? (param as any).props ? Object.entries((param as any).props).filter(([k, v]: any) => !v.isOptional).map(([k, v]) => k) : [] : [];
|
||||
return {
|
||||
description: (param.data || {}).desc,
|
||||
default: (param.data || {}).default,
|
||||
deprecated: (param.data || {}).deprecated,
|
||||
...((param.data || {}).default ? { default: (param.data || {}).default } : {}),
|
||||
type: param.name === 'ID' ? 'string' : param.name.toLowerCase(),
|
||||
...(param.name === 'ID' ? { example: 'xxxxxxxxxx', format: 'id' } : {}),
|
||||
nullable: param.isNullable,
|
||||
...(param.name === 'String' ? {
|
||||
...((param as any).enum ? { enum: (param as any).enum } : {}),
|
||||
...((param as any).minLength ? { minLength: (param as any).minLength } : {}),
|
||||
...((param as any).maxLength ? { maxLength: (param as any).maxLength } : {}),
|
||||
} : {}),
|
||||
...(param.name === 'Number' ? {
|
||||
...((param as any).minimum ? { minimum: (param as any).minimum } : {}),
|
||||
...((param as any).maximum ? { maximum: (param as any).maximum } : {}),
|
||||
} : {}),
|
||||
...(param.name === 'Object' ? {
|
||||
...(required.length > 0 ? { required } : {}),
|
||||
properties: (param as any).props ? genProps((param as any).props) : {},
|
||||
} : {}),
|
||||
...(param.name === 'Array' ? {
|
||||
items: (param as any).ctx ? genProp((param as any).ctx) : {},
|
||||
} : {}),
|
||||
};
|
||||
}
|
||||
|
||||
for (const endpoint of endpoints.filter(ep => !ep.meta.secure)) {
|
||||
const porops = {} as any;
|
||||
const errors = {} as any;
|
||||
|
||||
if (endpoint.meta.errors) {
|
||||
|
@ -91,21 +50,9 @@ export function genOpenapiSpec(lang = 'ja-JP') {
|
|||
}
|
||||
}
|
||||
|
||||
if (endpoint.meta.params) {
|
||||
for (const [k, v] of Object.entries(endpoint.meta.params)) {
|
||||
if (v.validator.data == null) v.validator.data = {};
|
||||
if (v.desc) v.validator.data.desc = v.desc[lang];
|
||||
if (v.deprecated) v.validator.data.deprecated = v.deprecated;
|
||||
if (v.default) v.validator.data.default = v.default;
|
||||
porops[k] = v.validator;
|
||||
}
|
||||
}
|
||||
|
||||
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 ? convertSchemaToOpenApiSchema(endpoint.meta.res) : {};
|
||||
|
||||
let desc = (endpoint.meta.desc ? endpoint.meta.desc[lang] : 'No description provided.') + '\n\n';
|
||||
let desc = (endpoint.meta.description ? endpoint.meta.description : 'No description provided.') + '\n\n';
|
||||
desc += `**Credential required**: *${endpoint.meta.requireCredential ? 'Yes' : 'No'}*`;
|
||||
if (endpoint.meta.kind) {
|
||||
const kind = endpoint.meta.kind;
|
||||
|
@ -132,11 +79,7 @@ export function genOpenapiSpec(lang = 'ja-JP') {
|
|||
required: true,
|
||||
content: {
|
||||
'application/json': {
|
||||
schema: {
|
||||
type: 'object',
|
||||
...(required.length > 0 ? { required } : {}),
|
||||
properties: endpoint.meta.params ? genProps(porops) : {},
|
||||
},
|
||||
schema: endpoint.params,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue