@json-schema-tools/reference-resolver
Advanced tools
Comparing version 1.0.7 to 1.1.0
@@ -161,3 +161,3 @@ "use strict"; | ||
var resolveReference = function (ref, root) { return __awaiter(void 0, void 0, void 0, function () { | ||
var withoutHash, pointer, fileContents, reffedSchema, e_1; | ||
var withoutHash, pointer, hashFragmentSplit, hashFragment, hashlessRef, fileContents, reffedSchema, pointer, result, e_1, pointer; | ||
return __generator(this, function (_a) { | ||
@@ -176,6 +176,14 @@ switch (_a.label) { | ||
} | ||
return [4 /*yield*/, fileExistsAndReadable(ref)]; | ||
hashFragmentSplit = ref.split("#"); | ||
if (hashFragmentSplit.length > 1) { | ||
hashFragment = hashFragmentSplit[hashFragmentSplit.length - 1]; | ||
} | ||
hashlessRef = ref; | ||
if (hashFragment) { | ||
hashlessRef = ref.replace("#" + hashFragment, ""); | ||
} | ||
return [4 /*yield*/, fileExistsAndReadable(hashlessRef)]; | ||
case 1: | ||
if (!((_a.sent()) === true)) return [3 /*break*/, 3]; | ||
return [4 /*yield*/, readFile(ref)]; | ||
return [4 /*yield*/, readFile(hashlessRef)]; | ||
case 2: | ||
@@ -190,2 +198,11 @@ fileContents = _a.sent(); | ||
} | ||
if (hashFragment) { | ||
try { | ||
pointer = json_pointer_1.default.parse(hashFragment); | ||
return [2 /*return*/, Promise.resolve(pointer.eval(reffedSchema))]; | ||
} | ||
catch (e) { | ||
throw new InvalidJsonPointerRefError({ $ref: ref }); | ||
} | ||
} | ||
return [2 /*return*/, reffedSchema]; | ||
@@ -200,7 +217,19 @@ case 3: | ||
return [4 /*yield*/, fetch(ref).then(function (r) { return r.json(); })]; | ||
case 5: return [2 /*return*/, _a.sent()]; | ||
case 5: | ||
result = _a.sent(); | ||
return [3 /*break*/, 7]; | ||
case 6: | ||
e_1 = _a.sent(); | ||
throw new InvalidRemoteURLError(ref); | ||
case 7: return [2 /*return*/]; | ||
case 7: | ||
if (hashFragment) { | ||
try { | ||
pointer = json_pointer_1.default.parse(hashFragment); | ||
return [2 /*return*/, Promise.resolve(pointer.eval(result))]; | ||
} | ||
catch (e) { | ||
throw new InvalidJsonPointerRefError({ $ref: ref }); | ||
} | ||
} | ||
return [2 /*return*/, result]; | ||
} | ||
@@ -207,0 +236,0 @@ }); |
@@ -0,1 +1,13 @@ | ||
# [1.1.0](https://github.com/json-schema-tools/reference-resolver/compare/1.0.7...1.1.0) (2020-10-28) | ||
### Bug Fixes | ||
* make test coverage 100 and fix test case ([84da5c8](https://github.com/json-schema-tools/reference-resolver/commit/84da5c89d282cd99972d745ce52b19517882ccb9)) | ||
### Features | ||
* handle hash fragment of json pointers ([dd85381](https://github.com/json-schema-tools/reference-resolver/commit/dd85381c2b9e08ba9bca4d5beeee351f921c6043)) | ||
## [1.0.7](https://github.com/json-schema-tools/reference-resolver/compare/1.0.6...1.0.7) (2020-10-27) | ||
@@ -2,0 +14,0 @@ |
{ | ||
"name": "@json-schema-tools/reference-resolver", | ||
"version": "1.0.7", | ||
"version": "1.1.0", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "build/index.js", |
38594
351