@kubb/plugin-oas
Version:
Generator swagger
100 lines (98 loc) • 3.22 kB
JavaScript
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