Something went wrong. Try again.
fork of hey-api/openapi-ts because I need some additional things
Something went wrong. Try again.
3.1 kB · 134 lines
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135import type { Context } from './context';import type { Pagination } from './pagination';import type { IR } from './types';
const getPaginationSchema = ({ context, parameter,}: { context: Context; parameter: IR.ParameterObject;}): IR.SchemaObject | undefined => { if (!parameter.pagination) { return; }
if (parameter.pagination === true) { return parameter.schema; }
let schema = parameter.schema; if (schema.$ref) { schema = context.resolveIrRef<IR.SchemaObject>(schema.$ref); }
return schema.properties![parameter.pagination]!;};
export const hasParameterGroupObjectRequired = ( parameterGroup?: Record<string, IR.ParameterObject>,): boolean => { for (const name in parameterGroup) { if (parameterGroup[name]!.required) { return true; } }
return false;};
export const hasParametersObjectRequired = ( parameters: IR.ParametersObject | undefined,): boolean => { if (!parameters) { return false; }
if (hasParameterGroupObjectRequired(parameters.cookie)) { return true; }
if (hasParameterGroupObjectRequired(parameters.header)) { return true; }
if (hasParameterGroupObjectRequired(parameters.path)) { return true; }
if (hasParameterGroupObjectRequired(parameters.query)) { return true; }
return false;};
export const parameterWithPagination = ({ context, parameters,}: { context: Context; parameters: IR.ParametersObject | undefined;}): Pagination | undefined => { if (!parameters) { return; }
for (const name in parameters.cookie) { const parameter = parameters.cookie[name]!; if (parameter.pagination) { return { in: parameter.location, name: parameter.pagination === true ? parameter.name : `${parameter.name}.${parameter.pagination}`, schema: getPaginationSchema({ context, parameter })!, }; } }
for (const name in parameters.header) { const parameter = parameters.header[name]!; if (parameter.pagination) { return { in: parameter.location, name: parameter.pagination === true ? parameter.name : `${parameter.name}.${parameter.pagination}`, schema: getPaginationSchema({ context, parameter })!, }; } }
for (const name in parameters.path) { const parameter = parameters.path[name]!; if (parameter.pagination) { return { in: parameter.location, name: parameter.pagination === true ? parameter.name : `${parameter.name}.${parameter.pagination}`, schema: getPaginationSchema({ context, parameter })!, }; } }
for (const name in parameters.query) { const parameter = parameters.query[name]!; if (parameter.pagination) { return { in: parameter.location, name: parameter.pagination === true ? parameter.name : `${parameter.name}.${parameter.pagination}`, schema: getPaginationSchema({ context, parameter })!, }; } }
return;};