UNPKG

jswagger-generator

Version:

This is jswagger's generator package.

96 lines (95 loc) 2.74 kB
"use strict"; // Origin: https://github.com/manifoldco/swagger-to-ts Object.defineProperty(exports, "__esModule", { value: true }); function comment(text) { return `/** * ${text.trim().replace('\n+$', '').replace(/\n/g, '\n * ')} */ `; } exports.comment = comment; /** shim for Object.fromEntries() for Node < 13 */ function fromEntries(entries) { return entries.reduce((obj, [key, val]) => (Object.assign(Object.assign({}, obj), { [key]: val })), {}); } exports.fromEntries = fromEntries; function nodeType(obj) { if (!obj || typeof obj !== 'object') { return undefined; } if (obj['$ref']) { return 'ref'; } // enum if (Array.isArray(obj.enum)) { return 'enum'; } // boolean if (obj.type === 'boolean') { return 'boolean'; } // string if (['binary', 'byte', 'date', 'dateTime', 'password', 'string'].includes(obj.type)) { return 'string'; } // number if (['double', 'float', 'integer', 'number'].includes(obj.type)) { return 'number'; } // anyOf if (Array.isArray(obj.anyOf)) { return 'anyOf'; } // oneOf if (Array.isArray(obj.oneOf)) { return 'oneOf'; } // array if (obj.type === 'array' || obj.items) { return 'array'; } // return object by default return 'object'; } exports.nodeType = nodeType; /** Return OpenAPI version from definition */ function swaggerVersion(definition) { // OpenAPI 3 const { openapi } = definition; if (openapi && parseInt(openapi, 10) === 3) { return 3; } // OpenAPI 2 const { swagger } = definition; if (swagger && parseInt(swagger, 10) === 2) { return 2; } throw new Error('🚏 version missing from schema; specify whether this is OpenAPI v3 or v2 https://swagger.io/specification'); } exports.swaggerVersion = swaggerVersion; /** Convert $ref to TS ref */ function transformRef(ref) { const parts = ref.replace(/^#\//, '').split('/'); return `${parts[0]}["${parts.slice(1).join('\'][\'')}"]`; } exports.transformRef = transformRef; /** Convert T into T[]; */ function tsArrayOf(type) { return `(${type})[]`; } exports.tsArrayOf = tsArrayOf; /** Convert T, U into T & U; */ function tsIntersectionOf(types) { return `(${types.join(') & (')})`; } exports.tsIntersectionOf = tsIntersectionOf; /** Convert T into Partial<T> */ function tsPartial(type) { return `Partial<${type}>`; } exports.tsPartial = tsPartial; /** Convert [X, Y, Z] into X | Y | Z */ function tsUnionOf(types) { return `(${types.join(') | (')})`; } exports.tsUnionOf = tsUnionOf;