Skip to content

Commit

Permalink
fix(reference): base OpenAPI 3.1.0 resolver strategy on dereference s…
Browse files Browse the repository at this point in the history
…trategy (#3910)

Refs #3452
  • Loading branch information
char0n authored Mar 8, 2024
1 parent 98cb77f commit b21d7bf
Show file tree
Hide file tree
Showing 22 changed files with 56 additions and 552 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,6 @@ const OpenApi3_1DereferenceStrategy: stampit.Stamp<IDereferenceStrategy> = stamp
);

export { OpenApi3_1DereferenceVisitor };
export {
resolveSchema$refField,
maybeRefractToSchemaElement,
} from '../../../resolve/strategies/openapi-3-1/util';
export { resolveSchema$refField, resolveSchema$idField, maybeRefractToSchemaElement } from './util';

export default OpenApi3_1DereferenceStrategy;
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { uriToPointer, evaluate as jsonPointerEvaluate } from '@swagger-api/apid
import * as url from '../../../../util/url';
import EvaluationJsonSchemaUriError from '../../../../errors/EvaluationJsonSchemaUriError';
import { isAnchor, uriToAnchor, evaluate as $anchorEvaluate } from './$anchor';
import { resolveSchema$idField } from '../../../../resolve/strategies/openapi-3-1/util';
import { resolveSchema$idField } from '../util';

/**
* Evaluates JSON Schema $ref containing unknown URI against ApiDOM fragment.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,7 @@ import * as url from '../../../util/url';
import parse from '../../../parse';
import Reference from '../../../Reference';
import File from '../../../util/File';
import {
resolveSchema$refField,
maybeRefractToSchemaElement,
} from '../../../resolve/strategies/openapi-3-1/util';
import { resolveSchema$refField, maybeRefractToSchemaElement } from './util';
import { AncestorLineage } from '../../util';
import EvaluationJsonSchemaUriError from '../../../errors/EvaluationJsonSchemaUriError';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import {
} from '../../../types';
import ReferenceSet from '../../../ReferenceSet';
import Reference from '../../../Reference';
import ApiDOMResolveVisitor from './visitor';
import { merge as mergeOptions } from '../../../options/util';
import ApiDOMResolveVisitor from './visitor';

// @ts-ignore
const visitAsync = visit[Symbol.for('nodejs.util.promisify.custom')];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import {
} from '../../../types';
import ReferenceSet from '../../../ReferenceSet';
import Reference from '../../../Reference';
import { merge as mergeOptions } from '../../../options/util';
import AsyncApi2ResolveVisitor from './visitor';

// @ts-ignore
Expand All @@ -38,7 +39,8 @@ const AsyncApi2ResolveStrategy: stampit.Stamp<IResolveStrategy> = stampit(Resolv
async resolve(file: IFile, options: IReferenceOptions) {
const namespace = createNamespace(asyncApi2Namespace);
const reference = Reference({ uri: file.uri, value: file.parseResult });
const visitor = AsyncApi2ResolveVisitor({ reference, namespace, options });
const mergedOptions = mergeOptions(options, { resolve: { internal: false } });
const visitor = AsyncApi2ResolveVisitor({ reference, namespace, options: mergedOptions });
const refSet = ReferenceSet();
refSet.add(reference);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ import {
} from '../../../types';
import ReferenceSet from '../../../ReferenceSet';
import Reference from '../../../Reference';
import OpenApi2ResolveVisitor from './visitor';
import { merge as mergeOptions } from '../../../options/util';
import OpenApi2ResolveVisitor from './visitor';

// @ts-ignore
const visitAsync = visit[Symbol.for('nodejs.util.promisify.custom')];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ import {
} from '../../../types';
import ReferenceSet from '../../../ReferenceSet';
import Reference from '../../../Reference';
import OpenApi3_0ResolveVisitor from './visitor';
import { merge as mergeOptions } from '../../../options/util';
import OpenApi3_0ResolveVisitor from './visitor';

// @ts-ignore
const visitAsync = visit[Symbol.for('nodejs.util.promisify.custom')];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import {
} from '../../../types';
import ReferenceSet from '../../../ReferenceSet';
import Reference from '../../../Reference';
import { merge as mergeOptions } from '../../../options/util';
import OpenApi3_1ResolveVisitor from './visitor';

// @ts-ignore
Expand All @@ -39,15 +40,15 @@ const OpenApi3_1ResolveStrategy: stampit.Stamp<IResolveStrategy> = stampit(Resol
async resolve(file: IFile, options: IReferenceOptions) {
const namespace = createNamespace(openApi3_1Namespace);
const reference = Reference({ uri: file.uri, value: file.parseResult });
const visitor = OpenApi3_1ResolveVisitor({ reference, namespace, options });
const mergedOptions = mergeOptions(options, { resolve: { internal: false } });
const visitor = OpenApi3_1ResolveVisitor({ reference, namespace, options: mergedOptions });
const refSet = ReferenceSet();
refSet.add(reference);

await visitAsync(refSet.rootRef.value, visitor, {
keyMap,
nodeTypeGetter: getNodeType,
});
await visitor.crawl();

return refSet;
},
Expand Down
Loading

0 comments on commit b21d7bf

Please sign in to comment.