oas
Version:
Comprehensive tooling for working with OpenAPI definitions
246 lines (220 loc) • 9.07 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true});
var _chunkSNKO3NYTcjs = require('../chunk-SNKO3NYT.cjs');
require('../chunk-TQD76MVX.cjs');
var _chunkW6GBV2JTcjs = require('../chunk-W6GBV2JT.cjs');
require('../chunk-2X4PY2BS.cjs');
require('../chunk-AYA3UT4L.cjs');
require('../chunk-3MTU2ESP.cjs');
// src/analyzer/queries/openapi.ts
function additionalProperties(definition) {
return _chunkW6GBV2JTcjs.query.call(void 0, ["$..additionalProperties"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
}
function callbacks(definition) {
return _chunkW6GBV2JTcjs.query.call(void 0, ["$.components.callbacks", "$.paths.*[?(@.callbacks)].callbacks"], definition).map(
(res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer)
);
}
async function circularRefs(definition) {
const oas = new (0, _chunkSNKO3NYTcjs.Oas)(structuredClone(definition));
await oas.dereference();
const results = oas.getCircularReferences();
results.sort();
return results;
}
function commonParameters(definition) {
return _chunkW6GBV2JTcjs.query.call(void 0, ["$..paths[*].parameters"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
}
function discriminators(definition) {
return _chunkW6GBV2JTcjs.query.call(void 0, ["$..discriminator"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
}
async function fileSize(definition) {
const oas = new (0, _chunkSNKO3NYTcjs.Oas)(structuredClone(definition));
const originalSizeInBytes = Buffer.from(JSON.stringify(oas.api)).length;
const raw = Number((originalSizeInBytes / (1024 * 1024)).toFixed(2));
await oas.dereference();
let dereferenced;
try {
const dereferencedSizeInBytes = Buffer.from(JSON.stringify(oas.api)).length;
dereferenced = Number((dereferencedSizeInBytes / (1024 * 1024)).toFixed(2));
} catch (err) {
if (err instanceof RangeError) {
dereferenced = NaN;
} else {
throw err;
}
}
return { raw, dereferenced };
}
function links(definition) {
return _chunkW6GBV2JTcjs.query.call(void 0, ["$.components.links", "$.paths..responses.*.links"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
}
function mediaTypes(definition) {
const results = Array.from(
new Set(
_chunkW6GBV2JTcjs.query.call(void 0, ["$..paths..content"], definition).flatMap((res) => {
return Object.keys(res.value);
})
)
);
results.sort();
return results;
}
function parameterSerialization(definition) {
return _chunkW6GBV2JTcjs.query.call(void 0, ["$..parameters[*].style^"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
}
function polymorphism(definition) {
const results = Array.from(
new Set(_chunkW6GBV2JTcjs.query.call(void 0, ["$..allOf^", "$..anyOf^", "$..oneOf^"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer)))
);
results.sort();
return results;
}
function refNames(definition) {
return _chunkW6GBV2JTcjs.query.call(void 0, ["$..['x-readme-ref-name']"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
}
function securityTypes(definition) {
return Array.from(new Set(_chunkW6GBV2JTcjs.query.call(void 0, ["$.components.securitySchemes..type"], definition).map((res) => res.value)));
}
function serverVariables(definition) {
return _chunkW6GBV2JTcjs.query.call(void 0, ["$.servers..variables^"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
}
function totalOperations(definition) {
return _chunkW6GBV2JTcjs.query.call(void 0, ["$..paths[*]"], definition).flatMap((res) => Object.keys(res.value)).length;
}
function webhooks(definition) {
return _chunkW6GBV2JTcjs.query.call(void 0, ["$.webhooks[*]"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
}
function xmlRequests(definition) {
return _chunkW6GBV2JTcjs.query.call(void 0,
[
"$..requestBody..['application/xml']",
"$..requestBody..['application/xml-external-parsed-entity']",
"$..requestBody..['application/xml-dtd']",
"$..requestBody..['text/xml']",
"$..requestBody..['text/xml-external-parsed-entity']",
"$..requestBody.content[?(@property.match(/\\+xml$/i))]"
],
definition
).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
}
function xmlResponses(definition) {
return _chunkW6GBV2JTcjs.query.call(void 0,
[
"$..responses..['application/xml']",
"$..responses..['application/xml-external-parsed-entity']",
"$..responses..['application/xml-dtd']",
"$..responses..['text/xml']",
"$..responses..['text/xml-external-parsed-entity']",
"$..responses[*].content[?(@property.match(/\\+xml$/i))]"
],
definition
).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
}
function xmlSchemas(definition) {
return _chunkW6GBV2JTcjs.query.call(void 0, ["$.components.schemas..xml^", "$..parameters..xml^", "$..requestBody..xml^"], definition).map(
(res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer)
);
}
// src/analyzer/index.ts
async function analyzer(definition) {
const additionalProperties2 = additionalProperties(definition);
const callbacks2 = callbacks(definition);
const circularRefs2 = await circularRefs(definition);
const commonParameters2 = commonParameters(definition);
const discriminators2 = discriminators(definition);
const { raw: rawFileSize, dereferenced: dereferencedFileSize } = await fileSize(definition);
const links2 = links(definition);
const parameterSerialization2 = parameterSerialization(definition);
const polymorphism2 = polymorphism(definition);
const refNames2 = refNames(definition);
const serverVariables2 = serverVariables(definition);
const xmlSchemas2 = xmlSchemas(definition);
const xmlRequests2 = xmlRequests(definition);
const xmlResponses2 = xmlResponses(definition);
const webhooks2 = webhooks(definition);
const analysis = {
general: {
dereferencedFileSize: {
name: "Dereferenced File Size",
found: dereferencedFileSize
},
mediaTypes: {
name: "Media Type",
found: mediaTypes(definition)
},
operationTotal: {
name: "Operation",
found: totalOperations(definition)
},
rawFileSize: {
name: "Raw File Size",
found: rawFileSize
},
securityTypes: {
name: "Security Type",
found: securityTypes(definition)
}
},
openapi: {
additionalProperties: {
present: !!additionalProperties2.length,
locations: additionalProperties2
},
callbacks: {
present: !!callbacks2.length,
locations: callbacks2
},
circularRefs: {
present: !!circularRefs2.length,
locations: circularRefs2
},
commonParameters: {
present: !!commonParameters2.length,
locations: commonParameters2
},
discriminators: {
present: !!discriminators2.length,
locations: discriminators2
},
links: {
present: !!links2.length,
locations: links2
},
style: {
present: !!parameterSerialization2.length,
locations: parameterSerialization2
},
polymorphism: {
present: !!polymorphism2.length,
locations: polymorphism2
},
refNames: {
present: !!refNames2.length,
locations: refNames2
},
serverVariables: {
present: !!serverVariables2.length,
locations: serverVariables2
},
xmlRequests: {
present: !!xmlRequests2.length,
locations: xmlRequests2
},
xmlResponses: {
present: !!xmlResponses2.length,
locations: xmlResponses2
},
xmlSchemas: {
present: !!xmlSchemas2.length,
locations: xmlSchemas2
},
webhooks: {
present: !!webhooks2.length,
locations: webhooks2
}
}
};
return analysis;
}
exports.analyzeAdditionalProperties = additionalProperties; exports.analyzeCallbacks = callbacks; exports.analyzeCircularRefs = circularRefs; exports.analyzeCommonParameters = commonParameters; exports.analyzeDiscriminators = discriminators; exports.analyzeFileSize = fileSize; exports.analyzeLinks = links; exports.analyzeMediaTypes = mediaTypes; exports.analyzeParameterSerialization = parameterSerialization; exports.analyzePolymorphism = polymorphism; exports.analyzeRefNames = refNames; exports.analyzeSecurityTypes = securityTypes; exports.analyzeServerVariables = serverVariables; exports.analyzeTotalOperations = totalOperations; exports.analyzeWebhooks = webhooks; exports.analyzeXMLRequests = xmlRequests; exports.analyzeXMLResponses = xmlResponses; exports.analyzeXMLSchemas = xmlSchemas; exports.analyzer = analyzer;
//# sourceMappingURL=index.cjs.map