UNPKG

@apiture/api-ref-resolver

Version:

Tool to merge multiple OpenAPI or AsyncAPI documents that use JSON Reference links (`$ref`) to reference API definition elements across source files.

65 lines (64 loc) 2.35 kB
/// <reference types="node" /> import { URL } from 'url'; import { JsonNavigation, JsonKey, JsonItem } from './JsonNavigation'; import type { RefObject } from './RefVisitor'; export declare type ApiObject = object | [] | string | boolean | null | number; interface ApiResource { url: URL; api: ApiObject; fragment?: string; itemPath: JsonKey[]; } export interface ApiRefOptions { verbose?: boolean; noMarkers?: boolean; conflictStrategy?: 'error' | 'rename' | 'ignore'; outputFormat?: 'yaml' | 'json'; } export interface ApiRefResolution { api: ApiObject; options: ApiRefOptions; } export declare class ApiRefResolver { static readonly COMPONENT_REGEXP: RegExp; private url; private options; private apiDocument; private urlToApiObjectMap; private alreadyRewritten; private resolvedRefToRefMap; private dateTime; private changed; static readonly TEMPORARY_MARKER = "x__resolved__"; static readonly RESOLVED_FROM_MARKER = "x-resolved-from"; static readonly RESOLVED_AT_MARKER = "x-resolved-at"; constructor(uri: string | URL, apiDocument?: ApiObject); resolve(options?: ApiRefOptions): Promise<ApiRefResolution>; cleanup(resolved: ApiObject): Promise<object>; static deepClone: (obj: any) => any; private replacementRefFor; private rememberReplacementForRef; private readFromFile; private readFromUrl; api(uri: string | URL): Promise<ApiResource>; note(message: string): void; static urlNonFragment(url: URL): URL; private refResolvingVisitor; private static urlFragment; private relativeUrl; private rewriteRefPaths; private rewriteRefFragments; private areRefsAlreadyRewritten; private markRefsAlreadyRewritten; private checkComponentConflict; mergeRefObject(refObject: RefObject, apiElement: JsonItem): ApiObject; private processComponentReplacement; apiItem(api: ApiObject, itemPath: JsonKey[]): JsonItem; sameComponentName(nav: JsonNavigation, componentKeys: JsonKey[]): boolean; private isSimpleRef; private processFullReplacement; private processOtherReplacement; tag(item: JsonItem, normalizedRefUrl: URL, nav: JsonNavigation | undefined, tagDateTime?: boolean): void; taggable(item: JsonItem, nav: JsonNavigation): boolean; } export {};