jswagger-generator
Version:
This is jswagger's generator package.
96 lines (95 loc) • 2.74 kB
JavaScript
;
// 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;