UNPKG

openapi-client-sdk-loader

Version:
96 lines (71 loc) 2.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.defaultOptions = void 0; var _lodash = require("lodash"); var _generator = require("json-schema-to-typescript/dist/src/generator"); var _normalizer = require("json-schema-to-typescript/dist/src/normalizer"); var _optimizer = require("json-schema-to-typescript/dist/src/optimizer"); var _parser = require("json-schema-to-typescript/dist/src/parser"); var _resolver = require("json-schema-to-typescript/dist/src/resolver"); var _validator = require("json-schema-to-typescript/dist/src/validator"); var _utils = require("json-schema-to-typescript/dist/src/utils"); var _jsonSchemaToTypescript = require("json-schema-to-typescript"); var _format = _interopRequireDefault(require("../format")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const defaultOptions = { $refOptions: {}, bannerComment: '', cwd: process.cwd(), declareExternallyReferenced: true, enableConstEnums: true, strictIndexSignatures: false, style: { bracketSpacing: false, printWidth: 120, semi: true, singleQuote: false, tabWidth: 2, trailingComma: 'none', useTabs: false }, unreachableDefinitions: false }; /* eslint-disable no-param-reassign */ exports.defaultOptions = defaultOptions; function hasType(schema, type) { return schema.type === type || Array.isArray(schema.type) && schema.type.includes(type); } function isObjectType(schema) { return typeof schema.properties !== 'undefined' || hasType(schema, 'object'); } function rule(schema) { if (schema.$ref && schema.$ref.includes('components/')) { const pathFragments = schema.$ref.split('/'); delete schema.$ref; schema.tsType = pathFragments[pathFragments.length - 1]; } if (!('additionalProperties' in schema) && isObjectType(schema)) { schema.additionalProperties = false; } } function normalizeRefs(schema, filename) { const clonedSchema = (0, _lodash.cloneDeep)(schema); (0, _utils.traverse)(clonedSchema, schemaToConvert => rule(schemaToConvert, clonedSchema, filename)); return clonedSchema; } async function compile(schema, name, options = defaultOptions) { const errors = (0, _validator.validate)(schema, name); if (errors.length) { // errors.forEach(_ => error(_)); throw new _jsonSchemaToTypescript.ValidationError(); } if (!(0, _lodash.endsWith)(options.cwd, '/')) { options.cwd += '/'; } return (0, _format.default)((0, _generator.generate)((0, _optimizer.optimize)((0, _parser.parse)(await (0, _resolver.dereference)((0, _normalizer.normalize)(normalizeRefs(schema), name, {}), options), options)), options), options); } /* eslint-enable no-param-reassign */ var _default = compile; exports.default = _default;