Skip to content

Commit 1ef9bd9

Browse files
authored
Merge pull request ferdikoomen#573 from honeyinsurance/resolve-ref2
Allow importing external references
2 parents f864007 + 87728f1 commit 1ef9bd9

File tree

3 files changed

+35
-2
lines changed

3 files changed

+35
-2
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
"commander": "^7.0.0",
6666
"handlebars": "^4.7.6",
6767
"js-yaml": "^4.0.0",
68+
"json-schema-ref-parser": "^9.0.7",
6869
"mkdirp": "^1.0.4",
6970
"rimraf": "^3.0.2"
7071
},

src/utils/getOpenApiSpec.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import RefParser from 'json-schema-ref-parser';
12
import { load } from 'js-yaml';
23
import { extname } from 'path';
34

@@ -12,20 +13,25 @@ import { readSpec } from './readSpec';
1213
export async function getOpenApiSpec(input: string): Promise<any> {
1314
const extension = extname(input).toLowerCase();
1415
const content = await readSpec(input);
16+
let rootObject: any;
1517
switch (extension) {
1618
case '.yml':
1719
case '.yaml':
1820
try {
19-
return load(content);
21+
rootObject = load(content);
2022
} catch (e) {
2123
throw new Error(`Could not parse OpenApi YAML: "${input}"`);
2224
}
25+
break;
2326

2427
default:
2528
try {
26-
return JSON.parse(content);
29+
rootObject = JSON.parse(content);
2730
} catch (e) {
2831
throw new Error(`Could not parse OpenApi JSON: "${input}"`);
2932
}
33+
break;
3034
}
35+
const transformed = await RefParser.bundle(rootObject);
36+
return transformed;
3137
}

yarn.lock

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22
# yarn lockfile v1
33

44

5+
"@apidevtools/json-schema-ref-parser@9.0.7":
6+
version "9.0.7"
7+
resolved "https://registry.yarnpkg.com/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.7.tgz#64aa7f5b34e43d74ea9e408b90ddfba02050dde3"
8+
integrity sha512-QdwOGF1+eeyFh+17v2Tz626WX0nucd1iKOm6JUTUvCZdbolblCOOQCxGrQPY0f7jEhn36PiAWqZnsC2r5vmUWg==
9+
dependencies:
10+
"@jsdevtools/ono" "^7.1.3"
11+
call-me-maybe "^1.0.1"
12+
js-yaml "^3.13.1"
13+
514
"@babel/cli@7.12.16":
615
version "7.12.16"
716
resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.12.16.tgz#bde5bc5118d90e539603abcd37938c5f0fd6c87a"
@@ -1101,6 +1110,11 @@
11011110
"@types/yargs" "^15.0.0"
11021111
chalk "^4.0.0"
11031112

1113+
"@jsdevtools/ono@^7.1.3":
1114+
version "7.1.3"
1115+
resolved "https://registry.yarnpkg.com/@jsdevtools/ono/-/ono-7.1.3.tgz#9df03bbd7c696a5c58885c34aa06da41c8543796"
1116+
integrity sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==
1117+
11041118
"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents":
11051119
version "2.1.8-no-fsevents"
11061120
resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.tgz#da7c3996b8e6e19ebd14d82eaced2313e7769f9b"
@@ -1942,6 +1956,11 @@ call-bind@^1.0.0:
19421956
function-bind "^1.1.1"
19431957
get-intrinsic "^1.0.2"
19441958

1959+
call-me-maybe@^1.0.1:
1960+
version "1.0.1"
1961+
resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b"
1962+
integrity sha1-JtII6onje1y95gJQoV8DHBak1ms=
1963+
19451964
callsites@^3.0.0:
19461965
version "3.1.0"
19471966
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
@@ -4005,6 +4024,13 @@ json-parse-even-better-errors@^2.3.0:
40054024
resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
40064025
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
40074026

4027+
json-schema-ref-parser@^9.0.7:
4028+
version "9.0.7"
4029+
resolved "https://registry.yarnpkg.com/json-schema-ref-parser/-/json-schema-ref-parser-9.0.7.tgz#c0ccc5aaee34844f0865889b67e0b67d616f7375"
4030+
integrity sha512-uxU9Ix+MVszvCTvBucQiIcNEny3oAEFg7EQHSZw2bquCCuqUqEPEczIdv/Uqo1Zv4/wDPZqOI+ulrMk1ncMtjQ==
4031+
dependencies:
4032+
"@apidevtools/json-schema-ref-parser" "9.0.7"
4033+
40084034
json-schema-traverse@^0.4.1:
40094035
version "0.4.1"
40104036
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"

0 commit comments

Comments
 (0)