oas 33.1.5 → 33.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -74,6 +74,9 @@ function polymorphism(definition) {
74
74
  results.sort();
75
75
  return results;
76
76
  }
77
+ function references(definition) {
78
+ return _chunkW6GBV2JTcjs.query.call(void 0, ["$..$ref^"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
79
+ }
77
80
  function refNames(definition) {
78
81
  return _chunkW6GBV2JTcjs.query.call(void 0, ["$..['x-readme-ref-name']"], definition).map((res) => _chunkW6GBV2JTcjs.refizePointer.call(void 0, res.pointer));
79
82
  }
@@ -132,6 +135,7 @@ async function analyzer(definition) {
132
135
  const links2 = links(definition);
133
136
  const parameterSerialization2 = parameterSerialization(definition);
134
137
  const polymorphism2 = polymorphism(definition);
138
+ const references2 = references(definition);
135
139
  const refNames2 = refNames(definition);
136
140
  const serverVariables2 = serverVariables(definition);
137
141
  const xmlSchemas2 = xmlSchemas(definition);
@@ -194,6 +198,10 @@ async function analyzer(definition) {
194
198
  present: !!polymorphism2.length,
195
199
  locations: polymorphism2
196
200
  },
201
+ references: {
202
+ present: !!references2.length,
203
+ locations: references2
204
+ },
197
205
  refNames: {
198
206
  present: !!refNames2.length,
199
207
  locations: refNames2
@@ -242,5 +250,6 @@ async function analyzer(definition) {
242
250
 
243
251
 
244
252
 
245
- 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;
253
+
254
+ 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;
246
255
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/erunion/code/readme/oas/packages/oas/dist/analyzer/index.cjs","../../src/analyzer/queries/openapi.ts","../../src/analyzer/index.ts"],"names":["additionalProperties","callbacks","circularRefs","commonParameters","discriminators","links","parameterSerialization","polymorphism","refNames","serverVariables","xmlSchemas","xmlRequests","xmlResponses","webhooks"],"mappings":"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","file":"/Users/erunion/code/readme/oas/packages/oas/dist/analyzer/index.cjs","sourcesContent":[null,"import type { OASDocument } from '../../types.js';\n\nimport Oas from '../../index.js';\nimport { query, refizePointer } from '../util.js';\n\n/**\n * Determine if a given API definition uses the `additionalProperties` schema property.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport function additionalProperties(definition: OASDocument): string[] {\n return query(['$..additionalProperties'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes `callbacks`.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#callback-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#callback-object}\n */\nexport function callbacks(definition: OASDocument): string[] {\n return query(['$.components.callbacks', '$.paths.*[?(@.callbacks)].callbacks'], definition).map(res =>\n refizePointer(res.pointer),\n );\n}\n\n/**\n * Determine if a given API definition has circular refs.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport async function circularRefs(definition: OASDocument): Promise<string[]> {\n // Dereferencing will update the passed in variable, which we don't want to do, so we\n // instantiated `Oas` with a clone.\n const oas = new Oas(structuredClone(definition));\n await oas.dereference();\n\n const results = oas.getCircularReferences();\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API definition utilizes common parameters.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#path-item-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#path-item-object}\n */\nexport function commonParameters(definition: OASDocument): string[] {\n return query(['$..paths[*].parameters'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes discriminators.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#discriminator-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#discriminator-object}\n */\nexport function discriminators(definition: OASDocument): string[] {\n return query(['$..discriminator'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Calculate the size of the raw and dereferenced OpenAPI file in MB.\n *\n * If a dereferenced API definition is too large to be stringified the file size will be returned\n * as NaN.\n *\n */\nexport async function fileSize(definition: OASDocument): Promise<{ raw: number; dereferenced: number | typeof NaN }> {\n const oas = new Oas(structuredClone(definition));\n\n const originalSizeInBytes = Buffer.from(JSON.stringify(oas.api)).length;\n const raw = Number((originalSizeInBytes / (1024 * 1024)).toFixed(2));\n\n await oas.dereference();\n\n let dereferenced: number;\n try {\n const dereferencedSizeInBytes = Buffer.from(JSON.stringify(oas.api)).length;\n dereferenced = Number((dereferencedSizeInBytes / (1024 * 1024)).toFixed(2));\n } catch (err) {\n // If the dereferenced API definition is too large to be stringified then we don't have a safer\n // way to estimate its size that wouldn't sacrifice accuracy so we'll just return NaN.\n if (err instanceof RangeError) {\n dereferenced = NaN;\n } else {\n throw err;\n }\n }\n\n return { raw, dereferenced };\n}\n\n/**\n * Determine if a given API definition utilizes `links`.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#link-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#link-object}\n */\nexport function links(definition: OASDocument): string[] {\n return query(['$.components.links', '$.paths..responses.*.links'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine all of the available media types used within an API definition.\n *\n * @todo This query currently picks up false positives if there is an object named `content`.\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#request-body-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#request-body-object}\n */\nexport function mediaTypes(definition: OASDocument): string[] {\n const results = Array.from(\n new Set(\n query(['$..paths..content'], definition).flatMap(res => {\n // This'll transform `results`, which looks like `[['application/json'], ['text/xml']]`\n // into `['application/json', 'text/xml']`.\n return Object.keys(res.value);\n }),\n ),\n );\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API definition uses parameter serialization.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#parameter-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameter-object}\n */\nexport function parameterSerialization(definition: OASDocument): string[] {\n return query(['$..parameters[*].style^'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes schema polymorphism and/of interitance.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport function polymorphism(definition: OASDocument): string[] {\n const results = Array.from(\n new Set(query(['$..allOf^', '$..anyOf^', '$..oneOf^'], definition).map(res => refizePointer(res.pointer))),\n );\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API definition previously had references by checking if we added the\n * `x-readme-ref-name` extension after dereferencing. This extension is added only during the\n * dereferencing process.\n *\n */\nexport function refNames(definition: OASDocument): string[] {\n return query([\"$..['x-readme-ref-name']\"], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine every kind of security type that a given API definition has documented.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#security-scheme-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#security-scheme-object}\n */\nexport function securityTypes(definition: OASDocument): string[] {\n return Array.from(new Set(query(['$.components.securitySchemes..type'], definition).map(res => res.value as string)));\n}\n\n/**\n * Determine if a given API definition utilizes server variables.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#server-variable-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#server-variable-object}\n */\nexport function serverVariables(definition: OASDocument): string[] {\n return query(['$.servers..variables^'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine how many operations are defined in a given API definition.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#operation-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#operation-object}\n */\nexport function totalOperations(definition: OASDocument): number {\n return query(['$..paths[*]'], definition).flatMap(res => Object.keys(res.value)).length;\n}\n\n/**\n * Determine if a given API definition utilizes `webhooks` support in OpenAPI 3.1.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#oasWebhooks}\n */\nexport function webhooks(definition: OASDocument): string[] {\n return query(['$.webhooks[*]'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition uses XML in a request body payload.\n *\n * @todo detect `+xml` media types\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n */\nexport function xmlRequests(definition: OASDocument): string[] {\n return query(\n [\n \"$..requestBody..['application/xml']\",\n \"$..requestBody..['application/xml-external-parsed-entity']\",\n \"$..requestBody..['application/xml-dtd']\",\n \"$..requestBody..['text/xml']\",\n \"$..requestBody..['text/xml-external-parsed-entity']\",\n '$..requestBody.content[?(@property.match(/\\\\+xml$/i))]',\n ],\n definition,\n ).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition uses XML in a response body.\n *\n * @todo detect `+xml` media types\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n */\nexport function xmlResponses(definition: OASDocument): string[] {\n return query(\n [\n \"$..responses..['application/xml']\",\n \"$..responses..['application/xml-external-parsed-entity']\",\n \"$..responses..['application/xml-dtd']\",\n \"$..responses..['text/xml']\",\n \"$..responses..['text/xml-external-parsed-entity']\",\n '$..responses[*].content[?(@property.match(/\\\\+xml$/i))]',\n ],\n definition,\n ).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilises the XML object for defining XML schemas.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#xml-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#xml-object}\n */\nexport function xmlSchemas(definition: OASDocument): string[] {\n return query(['$.components.schemas..xml^', '$..parameters..xml^', '$..requestBody..xml^'], definition).map(res =>\n refizePointer(res.pointer),\n );\n}\n","import type { OASDocument } from '../types.js';\nimport type { OASAnalysis } from './types.js';\n\nimport {\n additionalProperties as analyzeAdditionalProperties,\n callbacks as analyzeCallbacks,\n circularRefs as analyzeCircularRefs,\n commonParameters as analyzeCommonParameters,\n discriminators as analyzeDiscriminators,\n fileSize as analyzeFileSize,\n links as analyzeLinks,\n mediaTypes as analyzeMediaTypes,\n parameterSerialization as analyzeParameterSerialization,\n polymorphism as analyzePolymorphism,\n refNames as analyzeRefNames,\n securityTypes as analyzeSecurityTypes,\n serverVariables as analyzeServerVariables,\n totalOperations as analyzeTotalOperations,\n webhooks as analyzeWebhooks,\n xmlRequests as analyzeXMLRequests,\n xmlResponses as analyzeXMLResponses,\n xmlSchemas as analyzeXMLSchemas,\n} from './queries/openapi.js';\n\nexport {\n analyzeAdditionalProperties,\n analyzeCallbacks,\n analyzeCircularRefs,\n analyzeCommonParameters,\n analyzeDiscriminators,\n analyzeFileSize,\n analyzeLinks,\n analyzeMediaTypes,\n analyzeParameterSerialization,\n analyzePolymorphism,\n analyzeRefNames,\n analyzeSecurityTypes,\n analyzeServerVariables,\n analyzeTotalOperations,\n analyzeWebhooks,\n analyzeXMLRequests,\n analyzeXMLResponses,\n analyzeXMLSchemas,\n};\n\n/**\n * Analyze a given OpenAPI or Swagger definition for any OpenAPI or JSON Schema feature uses it\n * may contain or utilize.\n *\n */\nexport async function analyzer(definition: OASDocument): Promise<OASAnalysis> {\n const additionalProperties = analyzeAdditionalProperties(definition);\n const callbacks = analyzeCallbacks(definition);\n const circularRefs = await analyzeCircularRefs(definition);\n const commonParameters = analyzeCommonParameters(definition);\n const discriminators = analyzeDiscriminators(definition);\n const { raw: rawFileSize, dereferenced: dereferencedFileSize } = await analyzeFileSize(definition);\n const links = analyzeLinks(definition);\n const parameterSerialization = analyzeParameterSerialization(definition);\n const polymorphism = analyzePolymorphism(definition);\n const refNames = analyzeRefNames(definition);\n const serverVariables = analyzeServerVariables(definition);\n const xmlSchemas = analyzeXMLSchemas(definition);\n const xmlRequests = analyzeXMLRequests(definition);\n const xmlResponses = analyzeXMLResponses(definition);\n const webhooks = analyzeWebhooks(definition);\n\n const analysis: OASAnalysis = {\n general: {\n dereferencedFileSize: {\n name: 'Dereferenced File Size',\n found: dereferencedFileSize,\n },\n mediaTypes: {\n name: 'Media Type',\n found: analyzeMediaTypes(definition),\n },\n operationTotal: {\n name: 'Operation',\n found: analyzeTotalOperations(definition),\n },\n rawFileSize: {\n name: 'Raw File Size',\n found: rawFileSize,\n },\n securityTypes: {\n name: 'Security Type',\n found: analyzeSecurityTypes(definition),\n },\n },\n openapi: {\n additionalProperties: {\n present: !!additionalProperties.length,\n locations: additionalProperties,\n },\n callbacks: {\n present: !!callbacks.length,\n locations: callbacks,\n },\n circularRefs: {\n present: !!circularRefs.length,\n locations: circularRefs,\n },\n commonParameters: {\n present: !!commonParameters.length,\n locations: commonParameters,\n },\n discriminators: {\n present: !!discriminators.length,\n locations: discriminators,\n },\n links: {\n present: !!links.length,\n locations: links,\n },\n style: {\n present: !!parameterSerialization.length,\n locations: parameterSerialization,\n },\n polymorphism: {\n present: !!polymorphism.length,\n locations: polymorphism,\n },\n refNames: {\n present: !!refNames.length,\n locations: refNames,\n },\n serverVariables: {\n present: !!serverVariables.length,\n locations: serverVariables,\n },\n xmlRequests: {\n present: !!xmlRequests.length,\n locations: xmlRequests,\n },\n xmlResponses: {\n present: !!xmlResponses.length,\n locations: xmlResponses,\n },\n xmlSchemas: {\n present: !!xmlSchemas.length,\n locations: xmlSchemas,\n },\n webhooks: {\n present: !!webhooks.length,\n locations: webhooks,\n },\n },\n };\n\n return analysis;\n}\n"]}
1
+ {"version":3,"sources":["/Users/erunion/code/readme/oas/packages/oas/dist/analyzer/index.cjs","../../src/analyzer/queries/openapi.ts","../../src/analyzer/index.ts"],"names":["additionalProperties","callbacks","circularRefs","commonParameters","discriminators","links","parameterSerialization","polymorphism","references","refNames","serverVariables","xmlSchemas","xmlRequests","xmlResponses","webhooks"],"mappings":"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","file":"/Users/erunion/code/readme/oas/packages/oas/dist/analyzer/index.cjs","sourcesContent":[null,"import type { OASDocument } from '../../types.js';\n\nimport Oas from '../../index.js';\nimport { query, refizePointer } from '../util.js';\n\n/**\n * Determine if a given API definition uses the `additionalProperties` schema property.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport function additionalProperties(definition: OASDocument): string[] {\n return query(['$..additionalProperties'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes `callbacks`.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#callback-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#callback-object}\n */\nexport function callbacks(definition: OASDocument): string[] {\n return query(['$.components.callbacks', '$.paths.*[?(@.callbacks)].callbacks'], definition).map(res =>\n refizePointer(res.pointer),\n );\n}\n\n/**\n * Determine if a given API definition has circular refs.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport async function circularRefs(definition: OASDocument): Promise<string[]> {\n // Dereferencing will update the passed in variable, which we don't want to do, so we\n // instantiated `Oas` with a clone.\n const oas = new Oas(structuredClone(definition));\n await oas.dereference();\n\n const results = oas.getCircularReferences();\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API definition utilizes common parameters.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#path-item-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#path-item-object}\n */\nexport function commonParameters(definition: OASDocument): string[] {\n return query(['$..paths[*].parameters'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes discriminators.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#discriminator-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#discriminator-object}\n */\nexport function discriminators(definition: OASDocument): string[] {\n return query(['$..discriminator'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Calculate the size of the raw and dereferenced OpenAPI file in MB.\n *\n * If a dereferenced API definition is too large to be stringified the file size will be returned\n * as NaN.\n *\n */\nexport async function fileSize(definition: OASDocument): Promise<{ raw: number; dereferenced: number | typeof NaN }> {\n const oas = new Oas(structuredClone(definition));\n\n const originalSizeInBytes = Buffer.from(JSON.stringify(oas.api)).length;\n const raw = Number((originalSizeInBytes / (1024 * 1024)).toFixed(2));\n\n await oas.dereference();\n\n let dereferenced: number;\n try {\n const dereferencedSizeInBytes = Buffer.from(JSON.stringify(oas.api)).length;\n dereferenced = Number((dereferencedSizeInBytes / (1024 * 1024)).toFixed(2));\n } catch (err) {\n // If the dereferenced API definition is too large to be stringified then we don't have a safer\n // way to estimate its size that wouldn't sacrifice accuracy so we'll just return NaN.\n if (err instanceof RangeError) {\n dereferenced = NaN;\n } else {\n throw err;\n }\n }\n\n return { raw, dereferenced };\n}\n\n/**\n * Determine if a given API definition utilizes `links`.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#link-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#link-object}\n */\nexport function links(definition: OASDocument): string[] {\n return query(['$.components.links', '$.paths..responses.*.links'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine all of the available media types used within an API definition.\n *\n * @todo This query currently picks up false positives if there is an object named `content`.\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#request-body-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#request-body-object}\n */\nexport function mediaTypes(definition: OASDocument): string[] {\n const results = Array.from(\n new Set(\n query(['$..paths..content'], definition).flatMap(res => {\n // This'll transform `results`, which looks like `[['application/json'], ['text/xml']]`\n // into `['application/json', 'text/xml']`.\n return Object.keys(res.value);\n }),\n ),\n );\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API definition uses parameter serialization.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#parameter-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameter-object}\n */\nexport function parameterSerialization(definition: OASDocument): string[] {\n return query(['$..parameters[*].style^'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes schema polymorphism and/of interitance.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport function polymorphism(definition: OASDocument): string[] {\n const results = Array.from(\n new Set(query(['$..allOf^', '$..anyOf^', '$..oneOf^'], definition).map(res => refizePointer(res.pointer))),\n );\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API definition utilizes `$ref` pointers.\n *\n */\nexport function references(definition: OASDocument): string[] {\n return query(['$..$ref^'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition previously had references by checking if we added the\n * `x-readme-ref-name` extension after dereferencing. This extension is added only during the\n * dereferencing process.\n *\n */\nexport function refNames(definition: OASDocument): string[] {\n return query([\"$..['x-readme-ref-name']\"], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine every kind of security type that a given API definition has documented.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#security-scheme-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#security-scheme-object}\n */\nexport function securityTypes(definition: OASDocument): string[] {\n return Array.from(new Set(query(['$.components.securitySchemes..type'], definition).map(res => res.value as string)));\n}\n\n/**\n * Determine if a given API definition utilizes server variables.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#server-variable-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#server-variable-object}\n */\nexport function serverVariables(definition: OASDocument): string[] {\n return query(['$.servers..variables^'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine how many operations are defined in a given API definition.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#operation-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#operation-object}\n */\nexport function totalOperations(definition: OASDocument): number {\n return query(['$..paths[*]'], definition).flatMap(res => Object.keys(res.value)).length;\n}\n\n/**\n * Determine if a given API definition utilizes `webhooks` support in OpenAPI 3.1.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#oasWebhooks}\n */\nexport function webhooks(definition: OASDocument): string[] {\n return query(['$.webhooks[*]'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition uses XML in a request body payload.\n *\n * @todo detect `+xml` media types\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n */\nexport function xmlRequests(definition: OASDocument): string[] {\n return query(\n [\n \"$..requestBody..['application/xml']\",\n \"$..requestBody..['application/xml-external-parsed-entity']\",\n \"$..requestBody..['application/xml-dtd']\",\n \"$..requestBody..['text/xml']\",\n \"$..requestBody..['text/xml-external-parsed-entity']\",\n '$..requestBody.content[?(@property.match(/\\\\+xml$/i))]',\n ],\n definition,\n ).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition uses XML in a response body.\n *\n * @todo detect `+xml` media types\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n */\nexport function xmlResponses(definition: OASDocument): string[] {\n return query(\n [\n \"$..responses..['application/xml']\",\n \"$..responses..['application/xml-external-parsed-entity']\",\n \"$..responses..['application/xml-dtd']\",\n \"$..responses..['text/xml']\",\n \"$..responses..['text/xml-external-parsed-entity']\",\n '$..responses[*].content[?(@property.match(/\\\\+xml$/i))]',\n ],\n definition,\n ).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilises the XML object for defining XML schemas.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#xml-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#xml-object}\n */\nexport function xmlSchemas(definition: OASDocument): string[] {\n return query(['$.components.schemas..xml^', '$..parameters..xml^', '$..requestBody..xml^'], definition).map(res =>\n refizePointer(res.pointer),\n );\n}\n","import type { OASDocument } from '../types.js';\nimport type { OASAnalysis } from './types.js';\n\nimport {\n additionalProperties as analyzeAdditionalProperties,\n callbacks as analyzeCallbacks,\n circularRefs as analyzeCircularRefs,\n commonParameters as analyzeCommonParameters,\n discriminators as analyzeDiscriminators,\n fileSize as analyzeFileSize,\n links as analyzeLinks,\n mediaTypes as analyzeMediaTypes,\n parameterSerialization as analyzeParameterSerialization,\n polymorphism as analyzePolymorphism,\n references as analyzeReferences,\n refNames as analyzeRefNames,\n securityTypes as analyzeSecurityTypes,\n serverVariables as analyzeServerVariables,\n totalOperations as analyzeTotalOperations,\n webhooks as analyzeWebhooks,\n xmlRequests as analyzeXMLRequests,\n xmlResponses as analyzeXMLResponses,\n xmlSchemas as analyzeXMLSchemas,\n} from './queries/openapi.js';\n\nexport {\n analyzeAdditionalProperties,\n analyzeCallbacks,\n analyzeCircularRefs,\n analyzeCommonParameters,\n analyzeDiscriminators,\n analyzeFileSize,\n analyzeLinks,\n analyzeMediaTypes,\n analyzeParameterSerialization,\n analyzePolymorphism,\n analyzeReferences,\n analyzeRefNames,\n analyzeSecurityTypes,\n analyzeServerVariables,\n analyzeTotalOperations,\n analyzeWebhooks,\n analyzeXMLRequests,\n analyzeXMLResponses,\n analyzeXMLSchemas,\n};\n\n/**\n * Analyze a given OpenAPI or Swagger definition for any OpenAPI or JSON Schema feature uses it\n * may contain or utilize.\n *\n */\nexport async function analyzer(definition: OASDocument): Promise<OASAnalysis> {\n const additionalProperties = analyzeAdditionalProperties(definition);\n const callbacks = analyzeCallbacks(definition);\n const circularRefs = await analyzeCircularRefs(definition);\n const commonParameters = analyzeCommonParameters(definition);\n const discriminators = analyzeDiscriminators(definition);\n const { raw: rawFileSize, dereferenced: dereferencedFileSize } = await analyzeFileSize(definition);\n const links = analyzeLinks(definition);\n const parameterSerialization = analyzeParameterSerialization(definition);\n const polymorphism = analyzePolymorphism(definition);\n const references = analyzeReferences(definition);\n const refNames = analyzeRefNames(definition);\n const serverVariables = analyzeServerVariables(definition);\n const xmlSchemas = analyzeXMLSchemas(definition);\n const xmlRequests = analyzeXMLRequests(definition);\n const xmlResponses = analyzeXMLResponses(definition);\n const webhooks = analyzeWebhooks(definition);\n\n const analysis: OASAnalysis = {\n general: {\n dereferencedFileSize: {\n name: 'Dereferenced File Size',\n found: dereferencedFileSize,\n },\n mediaTypes: {\n name: 'Media Type',\n found: analyzeMediaTypes(definition),\n },\n operationTotal: {\n name: 'Operation',\n found: analyzeTotalOperations(definition),\n },\n rawFileSize: {\n name: 'Raw File Size',\n found: rawFileSize,\n },\n securityTypes: {\n name: 'Security Type',\n found: analyzeSecurityTypes(definition),\n },\n },\n openapi: {\n additionalProperties: {\n present: !!additionalProperties.length,\n locations: additionalProperties,\n },\n callbacks: {\n present: !!callbacks.length,\n locations: callbacks,\n },\n circularRefs: {\n present: !!circularRefs.length,\n locations: circularRefs,\n },\n commonParameters: {\n present: !!commonParameters.length,\n locations: commonParameters,\n },\n discriminators: {\n present: !!discriminators.length,\n locations: discriminators,\n },\n links: {\n present: !!links.length,\n locations: links,\n },\n style: {\n present: !!parameterSerialization.length,\n locations: parameterSerialization,\n },\n polymorphism: {\n present: !!polymorphism.length,\n locations: polymorphism,\n },\n references: {\n present: !!references.length,\n locations: references,\n },\n refNames: {\n present: !!refNames.length,\n locations: refNames,\n },\n serverVariables: {\n present: !!serverVariables.length,\n locations: serverVariables,\n },\n xmlRequests: {\n present: !!xmlRequests.length,\n locations: xmlRequests,\n },\n xmlResponses: {\n present: !!xmlResponses.length,\n locations: xmlResponses,\n },\n xmlSchemas: {\n present: !!xmlSchemas.length,\n locations: xmlSchemas,\n },\n webhooks: {\n present: !!webhooks.length,\n locations: webhooks,\n },\n },\n };\n\n return analysis;\n}\n"]}
@@ -78,6 +78,11 @@ declare function parameterSerialization(definition: OASDocument): string[];
78
78
  * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}
79
79
  */
80
80
  declare function polymorphism(definition: OASDocument): string[];
81
+ /**
82
+ * Determine if a given API definition utilizes `$ref` pointers.
83
+ *
84
+ */
85
+ declare function references(definition: OASDocument): string[];
81
86
  /**
82
87
  * Determine if a given API definition previously had references by checking if we added the
83
88
  * `x-readme-ref-name` extension after dereferencing. This extension is added only during the
@@ -143,4 +148,4 @@ declare function xmlSchemas(definition: OASDocument): string[];
143
148
  */
144
149
  declare function analyzer(definition: OASDocument): Promise<OASAnalysis>;
145
150
 
146
- export { additionalProperties as analyzeAdditionalProperties, callbacks as analyzeCallbacks, circularRefs as analyzeCircularRefs, commonParameters as analyzeCommonParameters, discriminators as analyzeDiscriminators, fileSize as analyzeFileSize, links as analyzeLinks, mediaTypes as analyzeMediaTypes, parameterSerialization as analyzeParameterSerialization, polymorphism as analyzePolymorphism, refNames as analyzeRefNames, securityTypes as analyzeSecurityTypes, serverVariables as analyzeServerVariables, totalOperations as analyzeTotalOperations, webhooks as analyzeWebhooks, xmlRequests as analyzeXMLRequests, xmlResponses as analyzeXMLResponses, xmlSchemas as analyzeXMLSchemas, analyzer };
151
+ export { additionalProperties as analyzeAdditionalProperties, callbacks as analyzeCallbacks, circularRefs as analyzeCircularRefs, commonParameters as analyzeCommonParameters, discriminators as analyzeDiscriminators, fileSize as analyzeFileSize, links as analyzeLinks, mediaTypes as analyzeMediaTypes, parameterSerialization as analyzeParameterSerialization, polymorphism as analyzePolymorphism, refNames as analyzeRefNames, references as analyzeReferences, securityTypes as analyzeSecurityTypes, serverVariables as analyzeServerVariables, totalOperations as analyzeTotalOperations, webhooks as analyzeWebhooks, xmlRequests as analyzeXMLRequests, xmlResponses as analyzeXMLResponses, xmlSchemas as analyzeXMLSchemas, analyzer };
@@ -78,6 +78,11 @@ declare function parameterSerialization(definition: OASDocument): string[];
78
78
  * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}
79
79
  */
80
80
  declare function polymorphism(definition: OASDocument): string[];
81
+ /**
82
+ * Determine if a given API definition utilizes `$ref` pointers.
83
+ *
84
+ */
85
+ declare function references(definition: OASDocument): string[];
81
86
  /**
82
87
  * Determine if a given API definition previously had references by checking if we added the
83
88
  * `x-readme-ref-name` extension after dereferencing. This extension is added only during the
@@ -143,4 +148,4 @@ declare function xmlSchemas(definition: OASDocument): string[];
143
148
  */
144
149
  declare function analyzer(definition: OASDocument): Promise<OASAnalysis>;
145
150
 
146
- export { additionalProperties as analyzeAdditionalProperties, callbacks as analyzeCallbacks, circularRefs as analyzeCircularRefs, commonParameters as analyzeCommonParameters, discriminators as analyzeDiscriminators, fileSize as analyzeFileSize, links as analyzeLinks, mediaTypes as analyzeMediaTypes, parameterSerialization as analyzeParameterSerialization, polymorphism as analyzePolymorphism, refNames as analyzeRefNames, securityTypes as analyzeSecurityTypes, serverVariables as analyzeServerVariables, totalOperations as analyzeTotalOperations, webhooks as analyzeWebhooks, xmlRequests as analyzeXMLRequests, xmlResponses as analyzeXMLResponses, xmlSchemas as analyzeXMLSchemas, analyzer };
151
+ export { additionalProperties as analyzeAdditionalProperties, callbacks as analyzeCallbacks, circularRefs as analyzeCircularRefs, commonParameters as analyzeCommonParameters, discriminators as analyzeDiscriminators, fileSize as analyzeFileSize, links as analyzeLinks, mediaTypes as analyzeMediaTypes, parameterSerialization as analyzeParameterSerialization, polymorphism as analyzePolymorphism, refNames as analyzeRefNames, references as analyzeReferences, securityTypes as analyzeSecurityTypes, serverVariables as analyzeServerVariables, totalOperations as analyzeTotalOperations, webhooks as analyzeWebhooks, xmlRequests as analyzeXMLRequests, xmlResponses as analyzeXMLResponses, xmlSchemas as analyzeXMLSchemas, analyzer };
@@ -74,6 +74,9 @@ function polymorphism(definition) {
74
74
  results.sort();
75
75
  return results;
76
76
  }
77
+ function references(definition) {
78
+ return query(["$..$ref^"], definition).map((res) => refizePointer(res.pointer));
79
+ }
77
80
  function refNames(definition) {
78
81
  return query(["$..['x-readme-ref-name']"], definition).map((res) => refizePointer(res.pointer));
79
82
  }
@@ -132,6 +135,7 @@ async function analyzer(definition) {
132
135
  const links2 = links(definition);
133
136
  const parameterSerialization2 = parameterSerialization(definition);
134
137
  const polymorphism2 = polymorphism(definition);
138
+ const references2 = references(definition);
135
139
  const refNames2 = refNames(definition);
136
140
  const serverVariables2 = serverVariables(definition);
137
141
  const xmlSchemas2 = xmlSchemas(definition);
@@ -194,6 +198,10 @@ async function analyzer(definition) {
194
198
  present: !!polymorphism2.length,
195
199
  locations: polymorphism2
196
200
  },
201
+ references: {
202
+ present: !!references2.length,
203
+ locations: references2
204
+ },
197
205
  refNames: {
198
206
  present: !!refNames2.length,
199
207
  locations: refNames2
@@ -234,6 +242,7 @@ export {
234
242
  parameterSerialization as analyzeParameterSerialization,
235
243
  polymorphism as analyzePolymorphism,
236
244
  refNames as analyzeRefNames,
245
+ references as analyzeReferences,
237
246
  securityTypes as analyzeSecurityTypes,
238
247
  serverVariables as analyzeServerVariables,
239
248
  totalOperations as analyzeTotalOperations,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/analyzer/queries/openapi.ts","../../src/analyzer/index.ts"],"sourcesContent":["import type { OASDocument } from '../../types.js';\n\nimport Oas from '../../index.js';\nimport { query, refizePointer } from '../util.js';\n\n/**\n * Determine if a given API definition uses the `additionalProperties` schema property.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport function additionalProperties(definition: OASDocument): string[] {\n return query(['$..additionalProperties'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes `callbacks`.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#callback-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#callback-object}\n */\nexport function callbacks(definition: OASDocument): string[] {\n return query(['$.components.callbacks', '$.paths.*[?(@.callbacks)].callbacks'], definition).map(res =>\n refizePointer(res.pointer),\n );\n}\n\n/**\n * Determine if a given API definition has circular refs.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport async function circularRefs(definition: OASDocument): Promise<string[]> {\n // Dereferencing will update the passed in variable, which we don't want to do, so we\n // instantiated `Oas` with a clone.\n const oas = new Oas(structuredClone(definition));\n await oas.dereference();\n\n const results = oas.getCircularReferences();\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API definition utilizes common parameters.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#path-item-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#path-item-object}\n */\nexport function commonParameters(definition: OASDocument): string[] {\n return query(['$..paths[*].parameters'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes discriminators.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#discriminator-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#discriminator-object}\n */\nexport function discriminators(definition: OASDocument): string[] {\n return query(['$..discriminator'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Calculate the size of the raw and dereferenced OpenAPI file in MB.\n *\n * If a dereferenced API definition is too large to be stringified the file size will be returned\n * as NaN.\n *\n */\nexport async function fileSize(definition: OASDocument): Promise<{ raw: number; dereferenced: number | typeof NaN }> {\n const oas = new Oas(structuredClone(definition));\n\n const originalSizeInBytes = Buffer.from(JSON.stringify(oas.api)).length;\n const raw = Number((originalSizeInBytes / (1024 * 1024)).toFixed(2));\n\n await oas.dereference();\n\n let dereferenced: number;\n try {\n const dereferencedSizeInBytes = Buffer.from(JSON.stringify(oas.api)).length;\n dereferenced = Number((dereferencedSizeInBytes / (1024 * 1024)).toFixed(2));\n } catch (err) {\n // If the dereferenced API definition is too large to be stringified then we don't have a safer\n // way to estimate its size that wouldn't sacrifice accuracy so we'll just return NaN.\n if (err instanceof RangeError) {\n dereferenced = NaN;\n } else {\n throw err;\n }\n }\n\n return { raw, dereferenced };\n}\n\n/**\n * Determine if a given API definition utilizes `links`.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#link-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#link-object}\n */\nexport function links(definition: OASDocument): string[] {\n return query(['$.components.links', '$.paths..responses.*.links'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine all of the available media types used within an API definition.\n *\n * @todo This query currently picks up false positives if there is an object named `content`.\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#request-body-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#request-body-object}\n */\nexport function mediaTypes(definition: OASDocument): string[] {\n const results = Array.from(\n new Set(\n query(['$..paths..content'], definition).flatMap(res => {\n // This'll transform `results`, which looks like `[['application/json'], ['text/xml']]`\n // into `['application/json', 'text/xml']`.\n return Object.keys(res.value);\n }),\n ),\n );\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API definition uses parameter serialization.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#parameter-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameter-object}\n */\nexport function parameterSerialization(definition: OASDocument): string[] {\n return query(['$..parameters[*].style^'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes schema polymorphism and/of interitance.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport function polymorphism(definition: OASDocument): string[] {\n const results = Array.from(\n new Set(query(['$..allOf^', '$..anyOf^', '$..oneOf^'], definition).map(res => refizePointer(res.pointer))),\n );\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API definition previously had references by checking if we added the\n * `x-readme-ref-name` extension after dereferencing. This extension is added only during the\n * dereferencing process.\n *\n */\nexport function refNames(definition: OASDocument): string[] {\n return query([\"$..['x-readme-ref-name']\"], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine every kind of security type that a given API definition has documented.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#security-scheme-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#security-scheme-object}\n */\nexport function securityTypes(definition: OASDocument): string[] {\n return Array.from(new Set(query(['$.components.securitySchemes..type'], definition).map(res => res.value as string)));\n}\n\n/**\n * Determine if a given API definition utilizes server variables.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#server-variable-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#server-variable-object}\n */\nexport function serverVariables(definition: OASDocument): string[] {\n return query(['$.servers..variables^'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine how many operations are defined in a given API definition.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#operation-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#operation-object}\n */\nexport function totalOperations(definition: OASDocument): number {\n return query(['$..paths[*]'], definition).flatMap(res => Object.keys(res.value)).length;\n}\n\n/**\n * Determine if a given API definition utilizes `webhooks` support in OpenAPI 3.1.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#oasWebhooks}\n */\nexport function webhooks(definition: OASDocument): string[] {\n return query(['$.webhooks[*]'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition uses XML in a request body payload.\n *\n * @todo detect `+xml` media types\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n */\nexport function xmlRequests(definition: OASDocument): string[] {\n return query(\n [\n \"$..requestBody..['application/xml']\",\n \"$..requestBody..['application/xml-external-parsed-entity']\",\n \"$..requestBody..['application/xml-dtd']\",\n \"$..requestBody..['text/xml']\",\n \"$..requestBody..['text/xml-external-parsed-entity']\",\n '$..requestBody.content[?(@property.match(/\\\\+xml$/i))]',\n ],\n definition,\n ).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition uses XML in a response body.\n *\n * @todo detect `+xml` media types\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n */\nexport function xmlResponses(definition: OASDocument): string[] {\n return query(\n [\n \"$..responses..['application/xml']\",\n \"$..responses..['application/xml-external-parsed-entity']\",\n \"$..responses..['application/xml-dtd']\",\n \"$..responses..['text/xml']\",\n \"$..responses..['text/xml-external-parsed-entity']\",\n '$..responses[*].content[?(@property.match(/\\\\+xml$/i))]',\n ],\n definition,\n ).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilises the XML object for defining XML schemas.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#xml-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#xml-object}\n */\nexport function xmlSchemas(definition: OASDocument): string[] {\n return query(['$.components.schemas..xml^', '$..parameters..xml^', '$..requestBody..xml^'], definition).map(res =>\n refizePointer(res.pointer),\n );\n}\n","import type { OASDocument } from '../types.js';\nimport type { OASAnalysis } from './types.js';\n\nimport {\n additionalProperties as analyzeAdditionalProperties,\n callbacks as analyzeCallbacks,\n circularRefs as analyzeCircularRefs,\n commonParameters as analyzeCommonParameters,\n discriminators as analyzeDiscriminators,\n fileSize as analyzeFileSize,\n links as analyzeLinks,\n mediaTypes as analyzeMediaTypes,\n parameterSerialization as analyzeParameterSerialization,\n polymorphism as analyzePolymorphism,\n refNames as analyzeRefNames,\n securityTypes as analyzeSecurityTypes,\n serverVariables as analyzeServerVariables,\n totalOperations as analyzeTotalOperations,\n webhooks as analyzeWebhooks,\n xmlRequests as analyzeXMLRequests,\n xmlResponses as analyzeXMLResponses,\n xmlSchemas as analyzeXMLSchemas,\n} from './queries/openapi.js';\n\nexport {\n analyzeAdditionalProperties,\n analyzeCallbacks,\n analyzeCircularRefs,\n analyzeCommonParameters,\n analyzeDiscriminators,\n analyzeFileSize,\n analyzeLinks,\n analyzeMediaTypes,\n analyzeParameterSerialization,\n analyzePolymorphism,\n analyzeRefNames,\n analyzeSecurityTypes,\n analyzeServerVariables,\n analyzeTotalOperations,\n analyzeWebhooks,\n analyzeXMLRequests,\n analyzeXMLResponses,\n analyzeXMLSchemas,\n};\n\n/**\n * Analyze a given OpenAPI or Swagger definition for any OpenAPI or JSON Schema feature uses it\n * may contain or utilize.\n *\n */\nexport async function analyzer(definition: OASDocument): Promise<OASAnalysis> {\n const additionalProperties = analyzeAdditionalProperties(definition);\n const callbacks = analyzeCallbacks(definition);\n const circularRefs = await analyzeCircularRefs(definition);\n const commonParameters = analyzeCommonParameters(definition);\n const discriminators = analyzeDiscriminators(definition);\n const { raw: rawFileSize, dereferenced: dereferencedFileSize } = await analyzeFileSize(definition);\n const links = analyzeLinks(definition);\n const parameterSerialization = analyzeParameterSerialization(definition);\n const polymorphism = analyzePolymorphism(definition);\n const refNames = analyzeRefNames(definition);\n const serverVariables = analyzeServerVariables(definition);\n const xmlSchemas = analyzeXMLSchemas(definition);\n const xmlRequests = analyzeXMLRequests(definition);\n const xmlResponses = analyzeXMLResponses(definition);\n const webhooks = analyzeWebhooks(definition);\n\n const analysis: OASAnalysis = {\n general: {\n dereferencedFileSize: {\n name: 'Dereferenced File Size',\n found: dereferencedFileSize,\n },\n mediaTypes: {\n name: 'Media Type',\n found: analyzeMediaTypes(definition),\n },\n operationTotal: {\n name: 'Operation',\n found: analyzeTotalOperations(definition),\n },\n rawFileSize: {\n name: 'Raw File Size',\n found: rawFileSize,\n },\n securityTypes: {\n name: 'Security Type',\n found: analyzeSecurityTypes(definition),\n },\n },\n openapi: {\n additionalProperties: {\n present: !!additionalProperties.length,\n locations: additionalProperties,\n },\n callbacks: {\n present: !!callbacks.length,\n locations: callbacks,\n },\n circularRefs: {\n present: !!circularRefs.length,\n locations: circularRefs,\n },\n commonParameters: {\n present: !!commonParameters.length,\n locations: commonParameters,\n },\n discriminators: {\n present: !!discriminators.length,\n locations: discriminators,\n },\n links: {\n present: !!links.length,\n locations: links,\n },\n style: {\n present: !!parameterSerialization.length,\n locations: parameterSerialization,\n },\n polymorphism: {\n present: !!polymorphism.length,\n locations: polymorphism,\n },\n refNames: {\n present: !!refNames.length,\n locations: refNames,\n },\n serverVariables: {\n present: !!serverVariables.length,\n locations: serverVariables,\n },\n xmlRequests: {\n present: !!xmlRequests.length,\n locations: xmlRequests,\n },\n xmlResponses: {\n present: !!xmlResponses.length,\n locations: xmlResponses,\n },\n xmlSchemas: {\n present: !!xmlSchemas.length,\n locations: xmlSchemas,\n },\n webhooks: {\n present: !!webhooks.length,\n locations: webhooks,\n },\n },\n };\n\n return analysis;\n}\n"],"mappings":"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","names":["additionalProperties","callbacks","circularRefs","commonParameters","discriminators","links","parameterSerialization","polymorphism","refNames","serverVariables","xmlSchemas","xmlRequests","xmlResponses","webhooks"]}
1
+ {"version":3,"sources":["../../src/analyzer/queries/openapi.ts","../../src/analyzer/index.ts"],"sourcesContent":["import type { OASDocument } from '../../types.js';\n\nimport Oas from '../../index.js';\nimport { query, refizePointer } from '../util.js';\n\n/**\n * Determine if a given API definition uses the `additionalProperties` schema property.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport function additionalProperties(definition: OASDocument): string[] {\n return query(['$..additionalProperties'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes `callbacks`.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#callback-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#callback-object}\n */\nexport function callbacks(definition: OASDocument): string[] {\n return query(['$.components.callbacks', '$.paths.*[?(@.callbacks)].callbacks'], definition).map(res =>\n refizePointer(res.pointer),\n );\n}\n\n/**\n * Determine if a given API definition has circular refs.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport async function circularRefs(definition: OASDocument): Promise<string[]> {\n // Dereferencing will update the passed in variable, which we don't want to do, so we\n // instantiated `Oas` with a clone.\n const oas = new Oas(structuredClone(definition));\n await oas.dereference();\n\n const results = oas.getCircularReferences();\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API definition utilizes common parameters.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#path-item-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#path-item-object}\n */\nexport function commonParameters(definition: OASDocument): string[] {\n return query(['$..paths[*].parameters'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes discriminators.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#discriminator-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#discriminator-object}\n */\nexport function discriminators(definition: OASDocument): string[] {\n return query(['$..discriminator'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Calculate the size of the raw and dereferenced OpenAPI file in MB.\n *\n * If a dereferenced API definition is too large to be stringified the file size will be returned\n * as NaN.\n *\n */\nexport async function fileSize(definition: OASDocument): Promise<{ raw: number; dereferenced: number | typeof NaN }> {\n const oas = new Oas(structuredClone(definition));\n\n const originalSizeInBytes = Buffer.from(JSON.stringify(oas.api)).length;\n const raw = Number((originalSizeInBytes / (1024 * 1024)).toFixed(2));\n\n await oas.dereference();\n\n let dereferenced: number;\n try {\n const dereferencedSizeInBytes = Buffer.from(JSON.stringify(oas.api)).length;\n dereferenced = Number((dereferencedSizeInBytes / (1024 * 1024)).toFixed(2));\n } catch (err) {\n // If the dereferenced API definition is too large to be stringified then we don't have a safer\n // way to estimate its size that wouldn't sacrifice accuracy so we'll just return NaN.\n if (err instanceof RangeError) {\n dereferenced = NaN;\n } else {\n throw err;\n }\n }\n\n return { raw, dereferenced };\n}\n\n/**\n * Determine if a given API definition utilizes `links`.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#link-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#link-object}\n */\nexport function links(definition: OASDocument): string[] {\n return query(['$.components.links', '$.paths..responses.*.links'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine all of the available media types used within an API definition.\n *\n * @todo This query currently picks up false positives if there is an object named `content`.\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#request-body-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#request-body-object}\n */\nexport function mediaTypes(definition: OASDocument): string[] {\n const results = Array.from(\n new Set(\n query(['$..paths..content'], definition).flatMap(res => {\n // This'll transform `results`, which looks like `[['application/json'], ['text/xml']]`\n // into `['application/json', 'text/xml']`.\n return Object.keys(res.value);\n }),\n ),\n );\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API definition uses parameter serialization.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#parameter-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameter-object}\n */\nexport function parameterSerialization(definition: OASDocument): string[] {\n return query(['$..parameters[*].style^'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilizes schema polymorphism and/of interitance.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}\n */\nexport function polymorphism(definition: OASDocument): string[] {\n const results = Array.from(\n new Set(query(['$..allOf^', '$..anyOf^', '$..oneOf^'], definition).map(res => refizePointer(res.pointer))),\n );\n\n results.sort();\n return results;\n}\n\n/**\n * Determine if a given API definition utilizes `$ref` pointers.\n *\n */\nexport function references(definition: OASDocument): string[] {\n return query(['$..$ref^'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition previously had references by checking if we added the\n * `x-readme-ref-name` extension after dereferencing. This extension is added only during the\n * dereferencing process.\n *\n */\nexport function refNames(definition: OASDocument): string[] {\n return query([\"$..['x-readme-ref-name']\"], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine every kind of security type that a given API definition has documented.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#security-scheme-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#security-scheme-object}\n */\nexport function securityTypes(definition: OASDocument): string[] {\n return Array.from(new Set(query(['$.components.securitySchemes..type'], definition).map(res => res.value as string)));\n}\n\n/**\n * Determine if a given API definition utilizes server variables.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#server-variable-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#server-variable-object}\n */\nexport function serverVariables(definition: OASDocument): string[] {\n return query(['$.servers..variables^'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine how many operations are defined in a given API definition.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#operation-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#operation-object}\n */\nexport function totalOperations(definition: OASDocument): number {\n return query(['$..paths[*]'], definition).flatMap(res => Object.keys(res.value)).length;\n}\n\n/**\n * Determine if a given API definition utilizes `webhooks` support in OpenAPI 3.1.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#oasWebhooks}\n */\nexport function webhooks(definition: OASDocument): string[] {\n return query(['$.webhooks[*]'], definition).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition uses XML in a request body payload.\n *\n * @todo detect `+xml` media types\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n */\nexport function xmlRequests(definition: OASDocument): string[] {\n return query(\n [\n \"$..requestBody..['application/xml']\",\n \"$..requestBody..['application/xml-external-parsed-entity']\",\n \"$..requestBody..['application/xml-dtd']\",\n \"$..requestBody..['text/xml']\",\n \"$..requestBody..['text/xml-external-parsed-entity']\",\n '$..requestBody.content[?(@property.match(/\\\\+xml$/i))]',\n ],\n definition,\n ).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition uses XML in a response body.\n *\n * @todo detect `+xml` media types\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}\n */\nexport function xmlResponses(definition: OASDocument): string[] {\n return query(\n [\n \"$..responses..['application/xml']\",\n \"$..responses..['application/xml-external-parsed-entity']\",\n \"$..responses..['application/xml-dtd']\",\n \"$..responses..['text/xml']\",\n \"$..responses..['text/xml-external-parsed-entity']\",\n '$..responses[*].content[?(@property.match(/\\\\+xml$/i))]',\n ],\n definition,\n ).map(res => refizePointer(res.pointer));\n}\n\n/**\n * Determine if a given API definition utilises the XML object for defining XML schemas.\n *\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#xml-object}\n * @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#xml-object}\n */\nexport function xmlSchemas(definition: OASDocument): string[] {\n return query(['$.components.schemas..xml^', '$..parameters..xml^', '$..requestBody..xml^'], definition).map(res =>\n refizePointer(res.pointer),\n );\n}\n","import type { OASDocument } from '../types.js';\nimport type { OASAnalysis } from './types.js';\n\nimport {\n additionalProperties as analyzeAdditionalProperties,\n callbacks as analyzeCallbacks,\n circularRefs as analyzeCircularRefs,\n commonParameters as analyzeCommonParameters,\n discriminators as analyzeDiscriminators,\n fileSize as analyzeFileSize,\n links as analyzeLinks,\n mediaTypes as analyzeMediaTypes,\n parameterSerialization as analyzeParameterSerialization,\n polymorphism as analyzePolymorphism,\n references as analyzeReferences,\n refNames as analyzeRefNames,\n securityTypes as analyzeSecurityTypes,\n serverVariables as analyzeServerVariables,\n totalOperations as analyzeTotalOperations,\n webhooks as analyzeWebhooks,\n xmlRequests as analyzeXMLRequests,\n xmlResponses as analyzeXMLResponses,\n xmlSchemas as analyzeXMLSchemas,\n} from './queries/openapi.js';\n\nexport {\n analyzeAdditionalProperties,\n analyzeCallbacks,\n analyzeCircularRefs,\n analyzeCommonParameters,\n analyzeDiscriminators,\n analyzeFileSize,\n analyzeLinks,\n analyzeMediaTypes,\n analyzeParameterSerialization,\n analyzePolymorphism,\n analyzeReferences,\n analyzeRefNames,\n analyzeSecurityTypes,\n analyzeServerVariables,\n analyzeTotalOperations,\n analyzeWebhooks,\n analyzeXMLRequests,\n analyzeXMLResponses,\n analyzeXMLSchemas,\n};\n\n/**\n * Analyze a given OpenAPI or Swagger definition for any OpenAPI or JSON Schema feature uses it\n * may contain or utilize.\n *\n */\nexport async function analyzer(definition: OASDocument): Promise<OASAnalysis> {\n const additionalProperties = analyzeAdditionalProperties(definition);\n const callbacks = analyzeCallbacks(definition);\n const circularRefs = await analyzeCircularRefs(definition);\n const commonParameters = analyzeCommonParameters(definition);\n const discriminators = analyzeDiscriminators(definition);\n const { raw: rawFileSize, dereferenced: dereferencedFileSize } = await analyzeFileSize(definition);\n const links = analyzeLinks(definition);\n const parameterSerialization = analyzeParameterSerialization(definition);\n const polymorphism = analyzePolymorphism(definition);\n const references = analyzeReferences(definition);\n const refNames = analyzeRefNames(definition);\n const serverVariables = analyzeServerVariables(definition);\n const xmlSchemas = analyzeXMLSchemas(definition);\n const xmlRequests = analyzeXMLRequests(definition);\n const xmlResponses = analyzeXMLResponses(definition);\n const webhooks = analyzeWebhooks(definition);\n\n const analysis: OASAnalysis = {\n general: {\n dereferencedFileSize: {\n name: 'Dereferenced File Size',\n found: dereferencedFileSize,\n },\n mediaTypes: {\n name: 'Media Type',\n found: analyzeMediaTypes(definition),\n },\n operationTotal: {\n name: 'Operation',\n found: analyzeTotalOperations(definition),\n },\n rawFileSize: {\n name: 'Raw File Size',\n found: rawFileSize,\n },\n securityTypes: {\n name: 'Security Type',\n found: analyzeSecurityTypes(definition),\n },\n },\n openapi: {\n additionalProperties: {\n present: !!additionalProperties.length,\n locations: additionalProperties,\n },\n callbacks: {\n present: !!callbacks.length,\n locations: callbacks,\n },\n circularRefs: {\n present: !!circularRefs.length,\n locations: circularRefs,\n },\n commonParameters: {\n present: !!commonParameters.length,\n locations: commonParameters,\n },\n discriminators: {\n present: !!discriminators.length,\n locations: discriminators,\n },\n links: {\n present: !!links.length,\n locations: links,\n },\n style: {\n present: !!parameterSerialization.length,\n locations: parameterSerialization,\n },\n polymorphism: {\n present: !!polymorphism.length,\n locations: polymorphism,\n },\n references: {\n present: !!references.length,\n locations: references,\n },\n refNames: {\n present: !!refNames.length,\n locations: refNames,\n },\n serverVariables: {\n present: !!serverVariables.length,\n locations: serverVariables,\n },\n xmlRequests: {\n present: !!xmlRequests.length,\n locations: xmlRequests,\n },\n xmlResponses: {\n present: !!xmlResponses.length,\n locations: xmlResponses,\n },\n xmlSchemas: {\n present: !!xmlSchemas.length,\n locations: xmlSchemas,\n },\n webhooks: {\n present: !!webhooks.length,\n locations: webhooks,\n },\n },\n };\n\n return analysis;\n}\n"],"mappings":"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","names":["additionalProperties","callbacks","circularRefs","commonParameters","discriminators","links","parameterSerialization","polymorphism","references","refNames","serverVariables","xmlSchemas","xmlRequests","xmlResponses","webhooks"]}
@@ -22,6 +22,7 @@ interface OASAnalysis {
22
22
  discriminators: OASAnalysisFeature;
23
23
  links: OASAnalysisFeature;
24
24
  polymorphism: OASAnalysisFeature;
25
+ references: OASAnalysisFeature;
25
26
  refNames: OASAnalysisFeature;
26
27
  serverVariables: OASAnalysisFeature;
27
28
  style: OASAnalysisFeature;
@@ -22,6 +22,7 @@ interface OASAnalysis {
22
22
  discriminators: OASAnalysisFeature;
23
23
  links: OASAnalysisFeature;
24
24
  polymorphism: OASAnalysisFeature;
25
+ references: OASAnalysisFeature;
25
26
  refNames: OASAnalysisFeature;
26
27
  serverVariables: OASAnalysisFeature;
27
28
  style: OASAnalysisFeature;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oas",
3
- "version": "33.1.5",
3
+ "version": "33.2.0",
4
4
  "description": "Comprehensive tooling for working with OpenAPI definitions",
5
5
  "license": "MIT",
6
6
  "author": "ReadMe <support@readme.io> (https://readme.com)",