source: node_modules/@swagger-api/apidom-reference/es/resolve/strategies/openapi-3-0/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.6 KB
Line 
1import stampit from 'stampit';
2import { createNamespace, visit } from '@swagger-api/apidom-core';
3import openapi3_0Namespace, { getNodeType, isOpenApi3_0Element, keyMap, mediaTypes } from '@swagger-api/apidom-ns-openapi-3-0';
4import ResolveStrategy from "../ResolveStrategy.mjs";
5import ReferenceSet from "../../../ReferenceSet.mjs";
6import Reference from "../../../Reference.mjs";
7import OpenApi3_0ResolveVisitor 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_0ResolveStrategy = stampit(ResolveStrategy, {
12 init() {
13 this.name = 'asyncapi-2';
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_0Element((_file$parseResult = file.parseResult) === null || _file$parseResult === void 0 ? void 0 : _file$parseResult.api);
25 },
26 async resolve(file, options) {
27 const namespace = createNamespace(openapi3_0Namespace);
28 const reference = Reference({
29 uri: file.uri,
30 value: file.parseResult
31 });
32 const visitor = OpenApi3_0ResolveVisitor({
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_0ResolveStrategy;
Note: See TracBrowser for help on using the repository browser.