source: node_modules/@swagger-api/apidom-json-pointer/cjs/evaluate.cjs

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 2.2 KB
Line 
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4exports.__esModule = true;
5exports.default = void 0;
6var _ramdaAdjunct = require("ramda-adjunct");
7var _apidomCore = require("@swagger-api/apidom-core");
8var _parse = _interopRequireDefault(require("./parse.cjs"));
9var _EvaluationJsonPointerError = _interopRequireDefault(require("./errors/EvaluationJsonPointerError.cjs"));
10// evaluates JSON Pointer against ApiDOM fragment
11const evaluate = (pointer, element) => {
12 let tokens;
13 try {
14 tokens = (0, _parse.default)(pointer);
15 } catch (error) {
16 throw new _EvaluationJsonPointerError.default(`JSON Pointer evaluation failed while parsing the pointer "${pointer}".`, {
17 pointer,
18 element: (0, _apidomCore.cloneDeep)(element),
19 cause: error
20 });
21 }
22 return tokens.reduce((acc, token, tokenPosition) => {
23 if ((0, _apidomCore.isObjectElement)(acc)) {
24 // @ts-ignore
25 if (!acc.hasKey(token)) {
26 throw new _EvaluationJsonPointerError.default(`JSON Pointer evaluation failed while evaluating token "${token}" against an ObjectElement`, {
27 pointer,
28 tokens,
29 failedToken: token,
30 failedTokenPosition: tokenPosition,
31 element: (0, _apidomCore.cloneDeep)(acc)
32 });
33 }
34 // @ts-ignore
35 return acc.get(token);
36 }
37 if ((0, _apidomCore.isArrayElement)(acc)) {
38 if (!(token in acc.content) || !(0, _ramdaAdjunct.isInteger)(Number(token))) {
39 throw new _EvaluationJsonPointerError.default(`JSON Pointer evaluation failed while evaluating token "${token}" against an ArrayElement`, {
40 pointer,
41 tokens,
42 failedToken: token,
43 failedTokenPosition: tokenPosition,
44 element: (0, _apidomCore.cloneDeep)(acc)
45 });
46 }
47 // @ts-ignore
48 return acc.get(Number(token));
49 }
50 throw new _EvaluationJsonPointerError.default(`JSON Pointer evaluation failed while evaluating token "${token}" against an unexpected Element`, {
51 pointer,
52 tokens,
53 failedToken: token,
54 failedTokenPosition: tokenPosition,
55 element: (0, _apidomCore.cloneDeep)(acc)
56 });
57 }, element);
58};
59var _default = exports.default = evaluate;
Note: See TracBrowser for help on using the repository browser.