oas
Version:
Comprehensive tooling for working with OpenAPI definitions
89 lines (88 loc) • 2.94 kB
JavaScript
// src/extensions.ts
var CODE_SAMPLES = "code-samples";
var EXPLORER_ENABLED = "explorer-enabled";
var HEADERS = "headers";
var METRICS_ENABLED = "metrics-enabled";
var OAUTH_OPTIONS = "oauth-options";
var PARAMETER_ORDERING = "parameter-ordering";
var PROXY_ENABLED = "proxy-enabled";
var SAMPLES_LANGUAGES = "samples-languages";
var SIMPLE_MODE = "simple-mode";
var DISABLE_TAG_SORTING = "disable-tag-sorting";
var extensionDefaults = {
[CODE_SAMPLES]: void 0,
[DISABLE_TAG_SORTING]: false,
[EXPLORER_ENABLED]: true,
[HEADERS]: void 0,
[METRICS_ENABLED]: true,
[OAUTH_OPTIONS]: {},
[PARAMETER_ORDERING]: ["path", "query", "body", "cookie", "form", "header"],
[PROXY_ENABLED]: true,
[SAMPLES_LANGUAGES]: ["shell", "node", "ruby", "php", "python", "java", "csharp"],
[SIMPLE_MODE]: true
};
function hasRootExtension(extension, api) {
return Boolean(api && extension in api);
}
function getExtension(extension, api, operation) {
if (operation) {
if (operation.hasExtension("x-readme")) {
const data = operation.getExtension("x-readme");
if (data && typeof data === "object" && extension in data) {
return data[extension];
}
}
if (operation.hasExtension(`x-${extension}`)) {
return operation.getExtension(`x-${extension}`);
} else if (operation.hasExtension(extension)) {
return operation.getExtension(extension);
}
}
if (extension === CODE_SAMPLES) {
return extensionDefaults[extension];
}
if (hasRootExtension("x-readme", api)) {
const data = api?.["x-readme"];
if (data && typeof data === "object" && extension in data) {
return data[extension];
}
}
if (hasRootExtension(`x-${extension}`, api)) {
return api?.[`x-${extension}`];
} else if (hasRootExtension(extension, api)) {
return api?.[extension];
}
if (extension in extensionDefaults) {
return extensionDefaults[extension];
}
return void 0;
}
function validateParameterOrdering(ordering, extension) {
const defaultValue = extensionDefaults[PARAMETER_ORDERING];
const requiredLength = defaultValue.length;
const defaultsHuman = `${defaultValue.slice(0, -1).join(", ")}, and ${defaultValue.slice(-1)}`;
if (ordering.length !== requiredLength) {
throw new TypeError(`"${extension}" must contain ${requiredLength} items comprised of: ${defaultsHuman}`);
}
const intersection = ordering.filter((value) => defaultValue.includes(value.toLowerCase()));
if (intersection.length !== requiredLength) {
throw new TypeError(`"${extension}" must contain ${requiredLength} items comprised of: ${defaultsHuman}`);
}
}
export {
CODE_SAMPLES,
EXPLORER_ENABLED,
HEADERS,
METRICS_ENABLED,
OAUTH_OPTIONS,
PARAMETER_ORDERING,
PROXY_ENABLED,
SAMPLES_LANGUAGES,
SIMPLE_MODE,
DISABLE_TAG_SORTING,
extensionDefaults,
hasRootExtension,
getExtension,
validateParameterOrdering
};
//# sourceMappingURL=chunk-L2OVXZK3.js.map