@kubb/plugin-oas
Version:
Generator swagger
114 lines (109 loc) • 3.68 kB
JavaScript
;
var transformers = require('@kubb/core/transformers');
var utils = require('@kubb/core/utils');
var oas = require('@kubb/oas');
var path = require('path');
var yaml = require('@stoplight/yaml');
var core = require('@kubb/core');
var remeda = require('remeda');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var transformers__default = /*#__PURE__*/_interopDefault(transformers);
var yaml__default = /*#__PURE__*/_interopDefault(yaml);
// src/utils/getComments.ts
function getComments(operation) {
return [
operation.getDescription() && `@description ${operation.getDescription()}`,
operation.getSummary() && `@summary ${operation.getSummary()}`,
operation.path && `{@link ${new utils.URLPath(operation.path).URL}}`,
operation.isDeprecated() && "@deprecated"
].filter(Boolean).map((text) => transformers__default.default.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 = oas.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 = transformers.isValidVarName(curr.name) ? curr.name : transformers.camelCase(curr.name);
if (options.casing === "camelcase") {
name = transformers.camelCase(name);
}
acc[name] = {
default: curr.default,
type: curr.type,
optional: !curr.required
};
}
return acc;
}, {});
}
function parseFromConfig(config, oasClass = oas.Oas) {
if ("data" in config.input) {
if (typeof config.input.data === "object") {
const api2 = JSON.parse(JSON.stringify(config.input.data));
return oas.parse(api2, oasClass);
}
try {
const api2 = yaml__default.default.parse(config.input.data);
return oas.parse(api2, oasClass);
} catch (e) {
}
const api = JSON.parse(JSON.stringify(config.input.data));
return oas.parse(api, oasClass);
}
if (new utils.URLPath(config.input.path).isURL) {
return oas.parse(config.input.path, oasClass);
}
return oas.parse(path.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 = core.getDefaultBanner({ title, description, version, config });
}
if (!output.banner) {
return banner;
}
if (remeda.isFunction(output.banner)) {
return `${output.banner(oas)}
${banner}`;
}
return `${output.banner}
${banner}`;
}
function getFooter({ output, oas }) {
if (!output.footer) {
return void 0;
}
if (remeda.isFunction(output.footer)) {
return output.footer(oas);
}
return output.footer;
}
Object.defineProperty(exports, "isOptional", {
enumerable: true,
get: function () { return oas.isOptional; }
});
exports.getBanner = getBanner;
exports.getComments = getComments;
exports.getFooter = getFooter;
exports.getPathParams = getPathParams;
exports.parseFromConfig = parseFromConfig;
//# sourceMappingURL=chunk-DEDONPUL.cjs.map
//# sourceMappingURL=chunk-DEDONPUL.cjs.map