@swagger-api/apidom-json-pointer-relative 0.75.0 → 0.76.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,16 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [0.76.1](https://github.com/swagger-api/apidom/compare/v0.76.0...v0.76.1) (2023-09-07)
7
+
8
+ **Note:** Version bump only for package @swagger-api/apidom-json-pointer-relative
9
+
10
+ # [0.76.0](https://github.com/swagger-api/apidom/compare/v0.75.0...v0.76.0) (2023-09-01)
11
+
12
+ ### Features
13
+
14
+ - **json-pointer-relative:** use error hierarchy and metadata when trowing errors ([#3108](https://github.com/swagger-api/apidom/issues/3108)) ([deaed14](https://github.com/swagger-api/apidom/commit/deaed142acd9881062fc65156e1162b48a580751)), closes [#3039](https://github.com/swagger-api/apidom/issues/3039)
15
+
6
16
  # [0.75.0](https://github.com/swagger-api/apidom/compare/v0.74.1...v0.75.0) (2023-08-22)
7
17
 
8
18
  ### Features
package/cjs/compile.cjs CHANGED
@@ -1,27 +1,36 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
3
4
  exports.__esModule = true;
4
5
  exports.default = void 0;
5
6
  var _apidomJsonPointer = require("@swagger-api/apidom-json-pointer");
7
+ var _CompilationRelativeJsonPointerError = _interopRequireDefault(require("./errors/CompilationRelativeJsonPointerError.cjs"));
6
8
  // compile :: RelativeJSONPointer -> String
7
9
  const compile = relativeJsonPointer => {
8
- let relativePointer = '';
10
+ try {
11
+ let relativePointer = '';
9
12
 
10
- // non-negative-integer
11
- relativePointer += String(relativeJsonPointer.nonNegativeIntegerPrefix);
13
+ // non-negative-integer
14
+ relativePointer += String(relativeJsonPointer.nonNegativeIntegerPrefix);
12
15
 
13
- // index-manipulation
14
- if (typeof relativeJsonPointer.indexManipulation === 'number') {
15
- relativePointer += String(relativeJsonPointer.indexManipulation);
16
+ // index-manipulation
17
+ if (typeof relativeJsonPointer.indexManipulation === 'number') {
18
+ relativePointer += String(relativeJsonPointer.indexManipulation);
19
+ }
20
+ if (Array.isArray(relativeJsonPointer.jsonPointerTokens)) {
21
+ // <json-pointer>
22
+ relativePointer += (0, _apidomJsonPointer.compile)(relativeJsonPointer.jsonPointerTokens);
23
+ } else if (relativeJsonPointer.hashCharacter) {
24
+ // "#"
25
+ relativePointer += '#';
26
+ }
27
+ return relativePointer;
28
+ } catch (error) {
29
+ throw new _CompilationRelativeJsonPointerError.default('Relative JSON Pointer compilation encountered an error.', {
30
+ relativePointer: relativeJsonPointer,
31
+ cause: error
32
+ });
16
33
  }
17
- if (Array.isArray(relativeJsonPointer.jsonPointerTokens)) {
18
- // <json-pointer>
19
- relativePointer += (0, _apidomJsonPointer.compile)(relativeJsonPointer.jsonPointerTokens);
20
- } else if (relativeJsonPointer.hashCharacter) {
21
- // "#"
22
- relativePointer += '#';
23
- }
24
- return relativePointer;
25
34
  };
26
35
  var _default = compile;
27
36
  exports.default = _default;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
+ exports.__esModule = true;
5
+ exports.default = void 0;
6
+ var _RelativeJsonPointerError = _interopRequireDefault(require("./RelativeJsonPointerError.cjs"));
7
+ class CompilationRelativeJsonPointerError extends _RelativeJsonPointerError.default {
8
+ constructor(message, structuredOptions) {
9
+ super(message, structuredOptions);
10
+ if (typeof structuredOptions !== 'undefined') {
11
+ this.nonNegativeIntegerPrefix = structuredOptions.relativePointer.nonNegativeIntegerPrefix;
12
+ this.indexManipulation = structuredOptions.relativePointer.indexManipulation;
13
+ this.hashCharacter = structuredOptions.relativePointer.hashCharacter;
14
+ if (Array.isArray(structuredOptions.relativePointer.jsonPointerTokens)) {
15
+ this.jsonPointerTokens = [...structuredOptions.relativePointer.jsonPointerTokens];
16
+ }
17
+ }
18
+ }
19
+ }
20
+ var _default = CompilationRelativeJsonPointerError;
21
+ exports.default = _default;
@@ -1,17 +1,31 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
3
4
  exports.__esModule = true;
4
5
  exports.default = void 0;
5
- class EvaluationRelativeJsonPointerError extends Error {
6
- constructor(message) {
7
- super(message);
8
- this.name = this.constructor.name;
9
- this.message = message;
10
- if (typeof Error.captureStackTrace === 'function') {
11
- Error.captureStackTrace(this, this.constructor);
12
- } else {
13
- this.stack = new Error(message).stack;
6
+ var _apidomCore = require("@swagger-api/apidom-core");
7
+ var _RelativeJsonPointerError = _interopRequireDefault(require("./RelativeJsonPointerError.cjs"));
8
+ class EvaluationRelativeJsonPointerError extends _RelativeJsonPointerError.default {
9
+ constructor(message, structuredOptions) {
10
+ super(message, structuredOptions);
11
+ if (typeof structuredOptions !== 'undefined') {
12
+ this.relativePointer = structuredOptions.relativePointer;
13
+ this.currentElement = structuredOptions.currentElement.element;
14
+ if ((0, _apidomCore.hasElementSourceMap)(structuredOptions.currentElement)) {
15
+ this.currentElementSourceMap = (0, _apidomCore.toValue)(structuredOptions.currentElement.getMetaProperty('sourceMap'));
16
+ }
17
+ this.rootElement = structuredOptions.rootElement.element;
18
+ if ((0, _apidomCore.hasElementSourceMap)(structuredOptions.rootElement)) {
19
+ this.rootElementSourceMap = (0, _apidomCore.toValue)(structuredOptions.rootElement.getMetaProperty('sourceMap'));
20
+ }
21
+ if (typeof structuredOptions.cursorElement !== 'undefined') {
22
+ this.cursorElement = structuredOptions.cursorElement.element;
23
+ if ((0, _apidomCore.hasElementSourceMap)(structuredOptions.cursorElement)) {
24
+ this.cursorElementSourceMap = (0, _apidomCore.toValue)(structuredOptions.cursorElement.getMetaProperty('sourceMap'));
25
+ }
26
+ }
14
27
  }
15
28
  }
16
29
  }
17
- exports.default = EvaluationRelativeJsonPointerError;
30
+ var _default = EvaluationRelativeJsonPointerError;
31
+ exports.default = _default;
@@ -1,16 +1,14 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
3
4
  exports.__esModule = true;
4
5
  exports.default = void 0;
5
- class InvalidRelativeJsonPointerError extends Error {
6
- constructor(relativePointer) {
7
- super(`Invalid Relative JSON Pointer "${relativePointer}".`);
8
- this.name = this.constructor.name;
9
- this.message = `Invalid Relative JSON Pointer "${relativePointer}".`;
10
- if (typeof Error.captureStackTrace === 'function') {
11
- Error.captureStackTrace(this, this.constructor);
12
- } else {
13
- this.stack = new Error(`Invalid Relative JSON Pointer "${relativePointer}".`).stack;
6
+ var _RelativeJsonPointerError = _interopRequireDefault(require("./RelativeJsonPointerError.cjs"));
7
+ class InvalidRelativeJsonPointerError extends _RelativeJsonPointerError.default {
8
+ constructor(message, structuredOptions) {
9
+ super(message, structuredOptions);
10
+ if (typeof structuredOptions !== 'undefined') {
11
+ this.relativePointer = structuredOptions.relativePointer;
14
12
  }
15
13
  }
16
14
  }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+ var _apidomError = require("@swagger-api/apidom-error");
6
+ class RelativeJsonPointerError extends _apidomError.ApiDOMStructuredError {}
7
+ var _default = RelativeJsonPointerError;
8
+ exports.default = _default;
package/cjs/evaluate.cjs CHANGED
@@ -6,7 +6,7 @@ exports.default = void 0;
6
6
  var _apidomCore = require("@swagger-api/apidom-core");
7
7
  var _apidomJsonPointer = require("@swagger-api/apidom-json-pointer");
8
8
  var _ramda = require("ramda");
9
- var _index = require("./errors/index.cjs");
9
+ var _EvaluationRelativeJsonPointerError = _interopRequireDefault(require("./errors/EvaluationRelativeJsonPointerError.cjs"));
10
10
  var _parse = _interopRequireDefault(require("./parse.cjs"));
11
11
  // evaluates Relative JSON Pointer against ApiDOM fragment
12
12
  const evaluate = (relativePointer, currentElement, rootElement) => {
@@ -22,12 +22,33 @@ const evaluate = (relativePointer, currentElement, rootElement) => {
22
22
  }
23
23
  });
24
24
  if (ancestorLineage.length === 0) {
25
- throw new _index.EvaluationRelativeJsonPointerError('Current element not found inside the root element');
25
+ throw new _EvaluationRelativeJsonPointerError.default('Relative JSON Pointer evaluation failed. Current element not found inside the root element', {
26
+ relativePointer,
27
+ currentElement,
28
+ rootElement,
29
+ cursorElement: cursor
30
+ });
26
31
  }
27
32
  if ((0, _ramda.last)(ancestorLineage) === rootElement) {
28
- throw new _index.EvaluationRelativeJsonPointerError('Current element cannot be the root element');
33
+ throw new _EvaluationRelativeJsonPointerError.default('Relative JSON Pointer evaluation failed. Current element cannot be the root element', {
34
+ relativePointer,
35
+ currentElement,
36
+ rootElement,
37
+ cursorElement: cursor
38
+ });
39
+ }
40
+ let relativeJsonPointer;
41
+ try {
42
+ relativeJsonPointer = (0, _parse.default)(relativePointer);
43
+ } catch (error) {
44
+ throw new _EvaluationRelativeJsonPointerError.default('Relative JSON Pointer evaluation failed while parsing the pointer.', {
45
+ relativePointer,
46
+ currentElement,
47
+ rootElement,
48
+ cursorElement: cursor,
49
+ cause: error
50
+ });
29
51
  }
30
- const relativeJsonPointer = (0, _parse.default)(relativePointer);
31
52
 
32
53
  // non-negative-integer
33
54
  if (relativeJsonPointer.nonNegativeIntegerPrefix > 0) {
@@ -41,7 +62,12 @@ const evaluate = (relativePointer, currentElement, rootElement) => {
41
62
  }
42
63
  }
43
64
  if (typeof cursor === 'undefined') {
44
- throw new _index.EvaluationRelativeJsonPointerError(`Evaluation failed on non-negative-integer prefix of "${relativeJsonPointer.nonNegativeIntegerPrefix}"`);
65
+ throw new _EvaluationRelativeJsonPointerError.default(`Relative JSON Pointer evaluation failed on non-negative-integer prefix of "${relativeJsonPointer.nonNegativeIntegerPrefix}"`, {
66
+ relativePointer,
67
+ currentElement,
68
+ rootElement,
69
+ cursorElement: cursor
70
+ });
45
71
  }
46
72
  ancestorLineage = ancestorLineageCopy;
47
73
  }
@@ -50,13 +76,23 @@ const evaluate = (relativePointer, currentElement, rootElement) => {
50
76
  if (typeof relativeJsonPointer.indexManipulation === 'number') {
51
77
  const containedArray = (0, _ramda.last)(ancestorLineage);
52
78
  if (typeof containedArray === 'undefined' || !(0, _apidomCore.isArrayElement)(containedArray)) {
53
- throw new _index.EvaluationRelativeJsonPointerError(`Evaluation failed on index-manipulation "${relativeJsonPointer.indexManipulation}"`);
79
+ throw new _EvaluationRelativeJsonPointerError.default(`Relative JSON Pointer evaluation failed failed on index-manipulation "${relativeJsonPointer.indexManipulation}"`, {
80
+ relativePointer,
81
+ currentElement,
82
+ rootElement,
83
+ cursorElement: cursor
84
+ });
54
85
  }
55
86
  const currentCursorIndex = containedArray.content.indexOf(cursor);
56
87
  const newCursorIndex = currentCursorIndex + relativeJsonPointer.indexManipulation;
57
88
  cursor = containedArray.content[newCursorIndex];
58
89
  if (typeof cursor === 'undefined') {
59
- throw new _index.EvaluationRelativeJsonPointerError(`Evaluation failed on index-manipulation "${relativeJsonPointer.indexManipulation}"`);
90
+ throw new _EvaluationRelativeJsonPointerError.default(`Relative JSON Pointer evaluation failed on index-manipulation "${relativeJsonPointer.indexManipulation}"`, {
91
+ relativePointer,
92
+ currentElement,
93
+ rootElement,
94
+ cursorElement: cursor
95
+ });
60
96
  }
61
97
  }
62
98
  if (Array.isArray(relativeJsonPointer.jsonPointerTokens)) {
@@ -66,7 +102,12 @@ const evaluate = (relativePointer, currentElement, rootElement) => {
66
102
  } else if (relativeJsonPointer.hashCharacter) {
67
103
  // "#"
68
104
  if (cursor === rootElement) {
69
- throw new _index.EvaluationRelativeJsonPointerError('Current element cannot be the root element to apply "#"');
105
+ throw new _EvaluationRelativeJsonPointerError.default('Relative JSON Pointer evaluation failed. Current element cannot be the root element to apply "#"', {
106
+ relativePointer,
107
+ currentElement,
108
+ rootElement,
109
+ cursorElement: cursor
110
+ });
70
111
  }
71
112
  const parentElement = (0, _ramda.last)(ancestorLineage);
72
113
  if (typeof parentElement !== 'undefined') {
package/cjs/index.cjs CHANGED
@@ -2,7 +2,15 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
4
  exports.__esModule = true;
5
- exports.parse = exports.isRelativeJsonPointer = exports.evaluate = exports.compile = exports.InvalidRelativeJsonPointerError = exports.EvaluationRelativeJsonPointerError = void 0;
5
+ exports.parse = exports.isRelativeJsonPointer = exports.evaluate = exports.compile = exports.RelativeJsonPointerError = exports.InvalidRelativeJsonPointerError = exports.EvaluationRelativeJsonPointerError = exports.CompilationRelativeJsonPointerError = void 0;
6
+ var _RelativeJsonPointerError = _interopRequireDefault(require("./errors/RelativeJsonPointerError.cjs"));
7
+ exports.RelativeJsonPointerError = _RelativeJsonPointerError.default;
8
+ var _InvalidRelativeJsonPointerError = _interopRequireDefault(require("./errors/InvalidRelativeJsonPointerError.cjs"));
9
+ exports.InvalidRelativeJsonPointerError = _InvalidRelativeJsonPointerError.default;
10
+ var _EvaluationRelativeJsonPointerError = _interopRequireDefault(require("./errors/EvaluationRelativeJsonPointerError.cjs"));
11
+ exports.EvaluationRelativeJsonPointerError = _EvaluationRelativeJsonPointerError.default;
12
+ var _CompilationRelativeJsonPointerError = _interopRequireDefault(require("./errors/CompilationRelativeJsonPointerError.cjs"));
13
+ exports.CompilationRelativeJsonPointerError = _CompilationRelativeJsonPointerError.default;
6
14
  var _parse = _interopRequireWildcard(require("./parse.cjs"));
7
15
  exports.parse = _parse.default;
8
16
  exports.isRelativeJsonPointer = _parse.isRelativeJsonPointer;
@@ -10,8 +18,5 @@ var _compile = _interopRequireDefault(require("./compile.cjs"));
10
18
  exports.compile = _compile.default;
11
19
  var _evaluate = _interopRequireDefault(require("./evaluate.cjs"));
12
20
  exports.evaluate = _evaluate.default;
13
- var _index = require("./errors/index.cjs");
14
- exports.InvalidRelativeJsonPointerError = _index.InvalidRelativeJsonPointerError;
15
- exports.EvaluationRelativeJsonPointerError = _index.EvaluationRelativeJsonPointerError;
16
21
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
package/cjs/parse.cjs CHANGED
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
3
4
  exports.__esModule = true;
4
5
  exports.isRelativeJsonPointer = exports.default = void 0;
5
6
  var _apidomJsonPointer = require("@swagger-api/apidom-json-pointer");
6
- var _index = require("./errors/index.cjs");
7
+ var _InvalidRelativeJsonPointerError = _interopRequireDefault(require("./errors/InvalidRelativeJsonPointerError.cjs"));
7
8
  const nonNegativeIntegerPrefixRegExp = '(?<nonNegativeIntegerPrefix>[1-9]\\d*|0)';
8
9
  const indexManipulationRegExp = '(?<indexManipulation>[+-][1-9]\\d*|0)';
9
10
  const hashCharacterRegExp = '(?<hashCharacter>#)';
@@ -18,23 +19,31 @@ exports.isRelativeJsonPointer = isRelativeJsonPointer;
18
19
  const parse = relativePointer => {
19
20
  const match = relativePointer.match(relativeJsonPointerRegExp);
20
21
  if (match === null || typeof match.groups === 'undefined') {
21
- throw new _index.InvalidRelativeJsonPointerError(relativePointer);
22
+ throw new _InvalidRelativeJsonPointerError.default(`Invalid Relative JSON Pointer "${relativePointer}".`, {
23
+ relativePointer
24
+ });
25
+ }
26
+ try {
27
+ // non-negative-integer
28
+ const nonNegativeIntegerPrefix = parseInt(match.groups.nonNegativeIntegerPrefix, 10);
29
+ // index-manipulation
30
+ const indexManipulation = typeof match.groups.indexManipulation === 'string' ? parseInt(match.groups.indexManipulation, 10) : undefined;
31
+ // <json-pointer>
32
+ const jsonPointerTokens = typeof match.groups.jsonPointer === 'string' ? (0, _apidomJsonPointer.parse)(match.groups.jsonPointer) : undefined;
33
+ // "#"
34
+ const hashCharacter = typeof match.groups.hashCharacter === 'string';
35
+ return {
36
+ nonNegativeIntegerPrefix,
37
+ indexManipulation,
38
+ jsonPointerTokens,
39
+ hashCharacter
40
+ };
41
+ } catch (error) {
42
+ throw new _InvalidRelativeJsonPointerError.default(`Relative JSON Pointer parsing of "${relativePointer}" encountered an error.`, {
43
+ relativePointer,
44
+ cause: error
45
+ });
22
46
  }
23
-
24
- // non-negative-integer
25
- const nonNegativeIntegerPrefix = parseInt(match.groups.nonNegativeIntegerPrefix, 10);
26
- // index-manipulation
27
- const indexManipulation = typeof match.groups.indexManipulation === 'string' ? parseInt(match.groups.indexManipulation, 10) : undefined;
28
- // <json-pointer>
29
- const jsonPointerTokens = typeof match.groups.jsonPointer === 'string' ? (0, _apidomJsonPointer.parse)(match.groups.jsonPointer) : undefined;
30
- // "#"
31
- const hashCharacter = typeof match.groups.hashCharacter === 'string';
32
- return {
33
- nonNegativeIntegerPrefix,
34
- indexManipulation,
35
- jsonPointerTokens,
36
- hashCharacter
37
- };
38
47
  };
39
48
  var _default = parse;
40
49
  exports.default = _default;
package/cjs/types.cjs CHANGED
@@ -1 +1,3 @@
1
- "use strict";
1
+ "use strict";
2
+
3
+ exports.__esModule = true;