source: node_modules/@swagger-api/apidom-reference/es/resolve/strategies/openapi-3-1/index.mjs@ d24f17c

main
Last change on this file since d24f17c was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 1.7 KB
Line 
1import stampit from 'stampit';
2import { createNamespace, visit } from '@swagger-api/apidom-core';
3import openApi3_1Namespace, { getNodeType, isOpenApi3_1Element, keyMap, mediaTypes } from '@swagger-api/apidom-ns-openapi-3-1';
4import ResolveStrategy from "../ResolveStrategy.mjs";
5import ReferenceSet from "../../../ReferenceSet.mjs";
6import Reference from "../../../Reference.mjs";
7import OpenApi3_1ResolveVisitor from "./visitor.mjs"; // @ts-ignore
8const visitAsync = visit[Symbol.for('nodejs.util.promisify.custom')];
9
10// eslint-disable-next-line @typescript-eslint/naming-convention
11const OpenApi3_1ResolveStrategy = stampit(ResolveStrategy, {
12 init() {
13 this.name = 'openapi-3-1';
14 },
15 methods: {
16 canResolve(file) {
17 var _file$parseResult;
18 // assert by media type
19 if (file.mediaType !== 'text/plain') {
20 return mediaTypes.includes(file.mediaType);
21 }
22
23 // assert by inspecting ApiDOM
24 return isOpenApi3_1Element((_file$parseResult = file.parseResult) === null || _file$parseResult === void 0 ? void 0 : _file$parseResult.result);
25 },
26 async resolve(file, options) {
27 const namespace = createNamespace(openApi3_1Namespace);
28 const reference = Reference({
29 uri: file.uri,
30 value: file.parseResult
31 });
32 const visitor = OpenApi3_1ResolveVisitor({
33 reference,
34 namespace,
35 options
36 });
37 const refSet = ReferenceSet();
38 refSet.add(reference);
39 await visitAsync(refSet.rootRef.value, visitor, {
40 keyMap,
41 nodeTypeGetter: getNodeType
42 });
43 await visitor.crawl();
44 return refSet;
45 }
46 }
47});
48export default OpenApi3_1ResolveStrategy;
Note: See TracBrowser for help on using the repository browser.