oas
Version:
Comprehensive tooling for working with OpenAPI definitions
152 lines (148 loc) • 7.67 kB
TypeScript
import { OASDocument } from '../types.js';
import { OASAnalysis } from './types.js';
import 'json-schema';
import 'openapi-types';
/**
* Determine if a given API definition uses the `additionalProperties` schema property.
*
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}
*/
declare function additionalProperties(definition: OASDocument): string[];
/**
* Determine if a given API definition utilizes `callbacks`.
*
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#callback-object}
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#callback-object}
*/
declare function callbacks(definition: OASDocument): string[];
/**
* Determine if a given API definition has circular refs.
*
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}
*/
declare function circularRefs(definition: OASDocument): Promise<string[]>;
/**
* Determine if a given API definition utilizes common parameters.
*
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#path-item-object}
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#path-item-object}
*/
declare function commonParameters(definition: OASDocument): string[];
/**
* Determine if a given API definition utilizes discriminators.
*
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#discriminator-object}
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#discriminator-object}
*/
declare function discriminators(definition: OASDocument): string[];
/**
* Calculate the size of the raw and dereferenced OpenAPI file in MB.
*
* If a dereferenced API definition is too large to be stringified the file size will be returned
* as NaN.
*
*/
declare function fileSize(definition: OASDocument): Promise<{
raw: number;
dereferenced: number | typeof NaN;
}>;
/**
* Determine if a given API definition utilizes `links`.
*
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#link-object}
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#link-object}
*/
declare function links(definition: OASDocument): string[];
/**
* Determine all of the available media types used within an API definition.
*
* @todo This query currently picks up false positives if there is an object named `content`.
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#request-body-object}
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#request-body-object}
*/
declare function mediaTypes(definition: OASDocument): string[];
/**
* Determine if a given API definition uses parameter serialization.
*
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#parameter-object}
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameter-object}
*/
declare function parameterSerialization(definition: OASDocument): string[];
/**
* Determine if a given API definition utilizes schema polymorphism and/of interitance.
*
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schema-object}
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object}
*/
declare function polymorphism(definition: OASDocument): string[];
/**
* Determine if a given API definition utilizes `$ref` pointers.
*
*/
declare function references(definition: OASDocument): string[];
/**
* Determine if a given API definition previously had references by checking if we added the
* `x-readme-ref-name` extension after dereferencing. This extension is added only during the
* dereferencing process.
*
*/
declare function refNames(definition: OASDocument): string[];
/**
* Determine every kind of security type that a given API definition has documented.
*
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#security-scheme-object}
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#security-scheme-object}
*/
declare function securityTypes(definition: OASDocument): string[];
/**
* Determine if a given API definition utilizes server variables.
*
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#server-variable-object}
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#server-variable-object}
*/
declare function serverVariables(definition: OASDocument): string[];
/**
* Determine how many operations are defined in a given API definition.
*
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#operation-object}
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#operation-object}
*/
declare function totalOperations(definition: OASDocument): number;
/**
* Determine if a given API definition utilizes `webhooks` support in OpenAPI 3.1.
*
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#oasWebhooks}
*/
declare function webhooks(definition: OASDocument): string[];
/**
* Determine if a given API definition uses XML in a request body payload.
*
* @todo detect `+xml` media types
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}
*/
declare function xmlRequests(definition: OASDocument): string[];
/**
* Determine if a given API definition uses XML in a response body.
*
* @todo detect `+xml` media types
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#media-type-object}
*/
declare function xmlResponses(definition: OASDocument): string[];
/**
* Determine if a given API definition utilises the XML object for defining XML schemas.
*
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#xml-object}
* @see {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#xml-object}
*/
declare function xmlSchemas(definition: OASDocument): string[];
/**
* Analyze a given OpenAPI or Swagger definition for any OpenAPI or JSON Schema feature uses it
* may contain or utilize.
*
*/
declare function analyzer(definition: OASDocument): Promise<OASAnalysis>;
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 };