Skip to content

Commit 588197e

Browse files
committed
fix: dont cache on circular references to prevent overwriting external ref resolutions
1 parent 3bcee96 commit 588197e

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

lib/dereference.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ function dereference$Ref<S extends object = JSONSchema, O extends ParserOptions<
190190
const $refPath = url.resolve(shouldResolveOnCwd ? url.cwd() : path, $ref.$ref);
191191

192192
const cache = dereferencedCache.get($refPath);
193-
if (cache) {
193+
if (cache && !cache.circular) {
194194
const refKeys = Object.keys($ref);
195195
if (refKeys.length > 1) {
196196
const extraKeys = {};

test/specs/dereference-callback/dereference-callback.spec.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -22,26 +22,26 @@ describe("Schema with a $ref", () => {
2222
expect(calls).to.deep.equal([
2323
{
2424
path: "#/definitions/b",
25-
value: { $ref: "#/definitions/a" },
25+
value: { $ref: "#/definitions/b" },
2626
parent: {
2727
a: {
28-
$ref: "#/definitions/a",
28+
$ref: "#/definitions/b",
2929
},
3030
b: {
31-
$ref: "#/definitions/a",
31+
$ref: "#/definitions/b",
3232
},
3333
},
3434
parentPropName: "a",
3535
},
3636
{
3737
path: "#/definitions/a",
38-
value: { $ref: "#/definitions/a" },
38+
value: { $ref: "#/definitions/b" },
3939
parent: {
4040
c: {
4141
type: "string",
4242
},
4343
d: {
44-
$ref: "#/definitions/a",
44+
$ref: "#/definitions/b",
4545
},
4646
},
4747
parentPropName: "d",

0 commit comments

Comments
 (0)