UNPKG

oas

Version:

Comprehensive tooling for working with OpenAPI definitions

255 lines (228 loc) 9.44 kB
"use strict";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 references(definition) { return _chunkW6GBV2JTcjs.query.call(void 0, ["$..$ref^"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer)); } 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 references2 = references(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 }, references: { present: !!references2.length, locations: references2 }, 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.analyzeReferences = references; 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