UNPKG

@loopback/openapi-v3

Version:

Decorators that annotate LoopBack artifacts with OpenAPI v3 metadata and utilities that transform LoopBack metadata to OpenAPI v3 specifications

43 lines (38 loc) 1.34 kB
// Copyright IBM Corp. and LoopBack contributors 2018,2020. All Rights Reserved. // Node module: @loopback/openapi-v3 // This file is licensed under the MIT License. // License text available at https://opensource.org/licenses/MIT import {SchemaObject} from './types'; /** * Generate the `type` and `format` property in a Schema Object according to a * parameter's type. * `type` and `format` will be preserved if provided in `schema` * * @internal * @param type - The JavaScript type of a parameter * @param schema - The schema object provided in an parameter object */ export function resolveSchema( fn?: Function, schema: SchemaObject = {}, ): SchemaObject { let resolvedSchema: SchemaObject = {}; if (typeof fn === 'function') { if (fn === String) { resolvedSchema = {type: 'string'}; } else if (fn === Number) { resolvedSchema = {type: 'number'}; } else if (fn === Boolean) { resolvedSchema = {type: 'boolean'}; } else if (fn === Date) { resolvedSchema = {type: 'string', format: 'date-time'}; } else if (fn === Object) { resolvedSchema = {type: 'object'}; } else if (fn === Array) { resolvedSchema = {type: 'array'}; } else { resolvedSchema = {$ref: `#/components/schemas/${fn.name}`}; } } return Object.assign(schema, resolvedSchema); }