Skip to content

Commit 4ad931d

Browse files
Fixed a bug with URI-encoding of JSON Pointers
1 parent bad0885 commit 4ad931d

File tree

10 files changed

+142
-142
lines changed

10 files changed

+142
-142
lines changed

dist/ref-parser.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -155,8 +155,8 @@ function crawl(obj, path, parents, $refs, options) {
155155

156156
// Check for circular references
157157
var circular = pointer.circular || parents.indexOf(pointer.value) !== -1;
158-
$refs.circular = $refs.circular || true;
159-
if (!options.$refs.circular) {
158+
$refs.circular = $refs.circular || circular;
159+
if ($refs.circular && !options.$refs.circular) {
160160
throw ono.reference('Circular $ref pointer found at %s', keyPath);
161161
}
162162

@@ -861,10 +861,10 @@ Pointer.join = function(base, tokens) {
861861
for (var i = 0; i < tokens.length; i++) {
862862
var token = tokens[i];
863863
// Encode the token, according to RFC 6901
864-
base += '/' + token.replace(tildes, '~0').replace(slashes, '~1');
864+
base += '/' + encodeURI(token.replace(tildes, '~0').replace(slashes, '~1'));
865865
}
866866

867-
return encodeURI(base);
867+
return base;
868868
};
869869

870870
/**
@@ -967,7 +967,7 @@ function read(path, $refs, options) {
967967
// Return from cache, if possible
968968
var $ref = $refs._get$Ref(path);
969969
if ($ref && !$ref.isExpired()) {
970-
util.debug(' cached from %s', $ref.type);
970+
util.debug(' cached from %s', $ref.pathType);
971971
return Promise.resolve({
972972
$ref: $ref,
973973
cached: true

dist/ref-parser.js.map

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/ref-parser.min.js

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/ref-parser.min.js.map

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/pointer.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -182,10 +182,10 @@ Pointer.join = function(base, tokens) {
182182
for (var i = 0; i < tokens.length; i++) {
183183
var token = tokens[i];
184184
// Encode the token, according to RFC 6901
185-
base += '/' + token.replace(tildes, '~0').replace(slashes, '~1');
185+
base += '/' + encodeURI(token.replace(tildes, '~0').replace(slashes, '~1'));
186186
}
187187

188-
return encodeURI(base);
188+
return base;
189189
};
190190

191191
/**

tests/specs/deep/deep.bundled.js

Lines changed: 29 additions & 29 deletions
Large diffs are not rendered by default.

tests/specs/deep/deep.dereferenced.js

Lines changed: 29 additions & 29 deletions
Large diffs are not rendered by default.

tests/specs/deep/deep.parsed.js

Lines changed: 29 additions & 29 deletions
Large diffs are not rendered by default.

tests/specs/deep/deep.spec.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@ describe('Schema with deeply-nested $refs', function() {
3030

3131
// Reference equality
3232
expect(schema.properties.name.type)
33-
.to.equal(schema.properties.level1.properties.name.type)
34-
.to.equal(schema.properties.level1.properties.level2.properties.name.type)
35-
.to.equal(schema.properties.level1.properties.level2.properties.level3.properties.name.type)
36-
.to.equal(schema.properties.level1.properties.level2.properties.level3.properties.level4.properties.name.type);
33+
.to.equal(schema.properties['level 1'].properties.name.type)
34+
.to.equal(schema.properties['level 1'].properties['level 2'].properties.name.type)
35+
.to.equal(schema.properties['level 1'].properties['level 2'].properties['level 3'].properties.name.type)
36+
.to.equal(schema.properties['level 1'].properties['level 2'].properties['level 3'].properties['level 4'].properties.name.type);
3737

3838
done();
3939
})

tests/specs/deep/deep.yaml

Lines changed: 29 additions & 29 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)