///
import { Readable } from "node:stream";
import { OpenAPIV2, OpenAPIV3 } from "openapi-types";
export class S2OError extends Error {}
export interface ConvertBaseOptions {
/** Both If not already a truthy value, will be set to the input text of the conversion */
text: string;
}
export interface ConvertInputOptions extends ConvertBaseOptions {
/** Input Optional http(s).Agent to be used when fetching resources */
agent: object;
/** Input Allow use of YAML anchors/aliases. May break things */
anchors: boolean;
/** Input Optional cache of external resources */
cache: object;
/** Input Command-line flag to indicate unresolve information should be displayed */
components: boolean;
/** Input Flag to enable debug mode, adds specification-extensions */
debug: boolean;
/** Input Flag to indicate that only the converted OpenApi definition should be returned, not wrapped in options */
direct: boolean;
/** Input Encoding to use when reading/writing files */
encoding: string;
/** Input Flag to invert the status of a validation step */
expectFailure: boolean;
/** Input Command-line flag used by testRunner */
fail: boolean;
/** Input Treat ENOTFOUND and 404 errors as fatal during resolution, otherwise returns empty objects */
fatal: boolean;
/** Input Used to pass filename back to testRunner */
file: string;
/** Input Input filters for the resolver (e.g. to convert JSON schema dialects) */
filters: Array<(data: OpenAPIV2.Document, options: ConvertInputOptions) => OpenAPIV2.Document>;
/** Input Used to override the internal fetch implementation */
fetch: typeof fetch;
/** Input Additional options to be passed to fetch calls */
fetchOptions: object;
/** Input Map of additional protocol/scheme handlers, must be functions which return a Promise */
handlers: object;
/** Input Set to true to ignore IO errors when resolving */
ignoreIOErrors: boolean;
/** Input Command-line flag to control JSON indenting */
indent: string;
/** Input Hint to the linter that we are within a callback object */
isCallback: boolean;
/** Input Flag to validation step to ignore default/type mismatches */
laxDefaults: boolean;
/** Input Flag to validation step to ignore empty URLs and # ? in paths */
laxurls: boolean;
/** Input Whether to lint the document during validation */
lint: boolean;
/** Input A linter plugin to use in place of the default linter */
linter: any;
/** Input A function to return the set of linter warnings */
linterResults: any;
/** Input Controls how many linter warnings are logged in verbose mode */
lintLimit: number;
/** Input A list of lint rule names which will not be tested */
lintSkip: any[];
/** Input Flag to validation step to check media-type strings against RFC pattern */
mediatype: boolean;
/** Input Command-line flag by testRunner to unset patch */
nopatch: boolean;
/** Input true or a URL, to indicate an x-origin extension should be added to the converted output */
origin: boolean | string;
/** Input The output file to write to */
outfile: string;
/** Input Internal flag to testRunner to write output openapi.yaml files */
output: boolean;
/** Input Flag to fix-up minor errors in the source definition during conversion */
patch: boolean;
/** Input Flag to resolver as to whether to preserve old value of $ref in x-miro, default: false */
preserveMiro: boolean;
/** Input Whether to validate each externally $refd file separately */
prevalidate: boolean;
/** Input Command-line flag used by testRunner */
quiet: boolean;
/** Input The name of the vendor extension to use to preserve body parameter names (e.g. x-codegen-request-body-name) */
rbname: string;
/** Input Controls handling of $ref which has sibling properties. */
refSiblings: string;
/** Input Flag to enable resolution of external $refs */
resolve: boolean;
/** Input Flag to enable resolution of internal $refs. Also disables deduplication of requestBodies */
resolveInternal: boolean;
/** Input Command-line flag used by testRunner */
stop: boolean;
/** Input The source filename or url of the definition, used by the resolver */
source: string;
/** Input Used to override the default target OpenAPI version of 3.0.0 */
targetVersion: string;
/** Input Used by tests only to indicate the fixture should throw an exception */
throws: boolean;
/** Input URL of the original definition, used when reading a file to create x-origin extension */
url: string;
/** Input Increase verbosity, e.g. show HTTP GET requests */
verbose: boolean;
/** Input Command-line flag to show version information */
version: boolean;
/** Input Do not throw on non-patchable errors, add warning extensions */
warnOnly: boolean;
/** Input Property name to use for warning extensions, default x-s2o-warning */
warnProperty: string;
/** Input Ignored (enable WHATWG URL parsing in validation step, now the default) */
whatwg: boolean;
/** Input Flag to write YAML, default JSON (overridden by --outfile filepath extension) */
yaml: boolean;
/** Reserved Command-line flag to display help */
help: boolean;
/** Reserved Used by tools such as Speccy to skip linter rules */
skip: boolean;
}
export interface ConvertInternalOptions {
/** Internal Cache of scopes by securityScheme for validation */
allScopes: object;
/** Internal When prevalidate is true, holds the entire object representing an externally $refd file */
externalRef: object;
/** Internal Used to track resolved external references */
externalRefs: object;
/** Internal object containing resolve and reject functions for the converter */
promise: object;
/** Internal Used as a mapping between old and new $refs */
refmap: object;
/** Internal Used by the resolver to track outstanding resolutions */
resolver: object;
}
export interface ConvertOutputOptions extends ConvertBaseOptions, ConvertInternalOptions {
/** Output The context stack of associated with errors in a validation step, you normally want the last entry only */
context: any[];
/** Output Information required to unresolve a resolved definition back into its component parts */
externals: any[];
/** Output Used by the validator, if options.text is a string, will have a property lines containing the number of lines in the input document. */
metadata: object;
/** Output The OpenApi 3.x definition returned from a conversion step */
openapi: OpenAPIV3.Document;
/** Output Used by validation to track uniqueness of operationIds */
operationIds: string[];
/** Bi-directional Used by testRunner to round-trip the original definition, set by non-object ConvertXXX methods */
original: OpenAPIV2.Document;
/** Output Count of number of patches applied during conversion */
patches: number;
/** Output Flag set if the source string, URL or stream contained a YAML formatted definition */
sourceYaml: boolean;
/** Output The result of a validation step */
valid: boolean;
/** Output Warnings generated by a validation step */
warnings: any[];
}
export function convertObj(
schema: OpenAPIV2.Document,
options: Partial,
): Promise;
export function convertObj(
schema: OpenAPIV2.Document,
options: Partial,
callback: (err: S2OError | undefined, options: ConvertOutputOptions) => void,
): void;
export const convert: typeof convertObj;
export function convertFile(filename: string, options: Partial): Promise;
export function convertFile(
filename: string,
options: Partial,
callback: (err: S2OError | undefined, options: ConvertOutputOptions) => void,
): void;
export function convertUrl(url: string, options: Partial): Promise;
export function convertUrl(
url: string,
options: Partial,
callback: (err: S2OError | undefined, options: ConvertOutputOptions) => void,
): void;
export function convertStr(str: string, options: Partial): Promise;
export function convertStr(
str: string,
options: Partial,
callback: (err: S2OError | undefined, options: ConvertOutputOptions) => void,
): void;
export function convertStream(readable: Readable, options: Partial): Promise;
export function convertStream(
readable: Readable,
options: Partial,
callback: (err: S2OError | undefined, options: ConvertOutputOptions) => void,
): void;
export const targetVersion: string;
declare const converter: {
S2OError: typeof S2OError;
targetVersion: typeof targetVersion;
convert: typeof convert;
convertObj: typeof convertObj;
convertUrl: typeof convertUrl;
convertStr: typeof convertStr;
convertFile: typeof convertFile;
convertStream: typeof convertStream;
};
export default converter;