UNPKG

@kubb/plugin-oas

Version:
100 lines (98 loc) 3.22 kB
import transformers, { isValidVarName, camelCase } from '@kubb/core/transformers'; import { URLPath } from '@kubb/core/utils'; import { Oas, parse, isParameterObject } from '@kubb/oas'; export { isOptional } from '@kubb/oas'; import { resolve } from 'node:path'; import yaml from '@stoplight/yaml'; import { getDefaultBanner } from '@kubb/core'; import { isFunction } from 'remeda'; // src/utils/getComments.ts function getComments(operation) { return [ operation.getDescription() && `@description ${operation.getDescription()}`, operation.getSummary() && `@summary ${operation.getSummary()}`, operation.path && `{@link ${new URLPath(operation.path).URL}}`, operation.isDeprecated() && "@deprecated" ].filter(Boolean).map((text) => transformers.trim(text)); } function getASTParams(operationSchema, { typed = false, override } = {}) { if (!operationSchema || !operationSchema.schema.properties || !operationSchema.name) { return []; } return Object.entries(operationSchema.schema.properties).map(([name, schema]) => { const isParam = isParameterObject(schema); const data = { name, enabled: !!name, required: isParam ? schema.required : true, type: typed ? `${operationSchema.name}["${name}"]` : void 0 }; return override ? override(data) : data; }); } function getPathParams(operationSchema, options = {}) { return getASTParams(operationSchema, options).reduce((acc, curr) => { if (curr.name && curr.enabled) { let name = isValidVarName(curr.name) ? curr.name : camelCase(curr.name); if (options.casing === "camelcase") { name = camelCase(name); } acc[name] = { default: curr.default, type: curr.type, optional: !curr.required }; } return acc; }, {}); } function parseFromConfig(config, oasClass = Oas) { if ("data" in config.input) { if (typeof config.input.data === "object") { const api2 = JSON.parse(JSON.stringify(config.input.data)); return parse(api2, oasClass); } try { const api2 = yaml.parse(config.input.data); return parse(api2, oasClass); } catch (e) { } const api = JSON.parse(JSON.stringify(config.input.data)); return parse(api, oasClass); } if (new URLPath(config.input.path).isURL) { return parse(config.input.path, oasClass); } return parse(resolve(config.root, config.input.path), oasClass); } function getBanner({ output, oas, config }) { let banner = ""; if (config?.output?.defaultBanner !== false && config) { const { title, description, version } = oas.api?.info || {}; banner = getDefaultBanner({ title, description, version, config }); } if (!output.banner) { return banner; } if (isFunction(output.banner)) { return `${output.banner(oas)} ${banner}`; } return `${output.banner} ${banner}`; } function getFooter({ output, oas }) { if (!output.footer) { return void 0; } if (isFunction(output.footer)) { return output.footer(oas); } return output.footer; } export { getBanner, getComments, getFooter, getPathParams, parseFromConfig }; //# sourceMappingURL=chunk-QPFZUPQA.js.map //# sourceMappingURL=chunk-QPFZUPQA.js.map