@swagger-api/apidom-ast 0.76.2 → 0.77.0
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 +11 -0
- package/cjs/Error.cjs +1 -2
- package/cjs/Literal.cjs +1 -2
- package/cjs/Node.cjs +1 -2
- package/cjs/ParseResult.cjs +1 -2
- package/cjs/Position.cjs +2 -4
- package/cjs/index.cjs +3 -2
- package/cjs/json/nodes/JsonArray.cjs +1 -2
- package/cjs/json/nodes/JsonDocument.cjs +1 -2
- package/cjs/json/nodes/JsonEscapeSequence.cjs +1 -2
- package/cjs/json/nodes/JsonFalse.cjs +1 -2
- package/cjs/json/nodes/JsonKey.cjs +1 -2
- package/cjs/json/nodes/JsonNode.cjs +1 -2
- package/cjs/json/nodes/JsonNull.cjs +1 -2
- package/cjs/json/nodes/JsonNumber.cjs +1 -2
- package/cjs/json/nodes/JsonObject.cjs +1 -2
- package/cjs/json/nodes/JsonProperty.cjs +1 -2
- package/cjs/json/nodes/JsonString.cjs +1 -2
- package/cjs/json/nodes/JsonStringContent.cjs +1 -2
- package/cjs/json/nodes/JsonTrue.cjs +1 -2
- package/cjs/json/nodes/JsonValue.cjs +1 -2
- package/cjs/json/nodes/predicates.cjs +12 -24
- package/cjs/predicates.cjs +4 -8
- package/cjs/traversal/visitor.cjs +92 -89
- package/cjs/yaml/errors/YamlSchemaError.cjs +1 -2
- package/cjs/yaml/errors/YamlTagError.cjs +1 -2
- package/cjs/yaml/nodes/YamlAlias.cjs +1 -2
- package/cjs/yaml/nodes/YamlAnchor.cjs +1 -2
- package/cjs/yaml/nodes/YamlCollection.cjs +1 -2
- package/cjs/yaml/nodes/YamlComment.cjs +1 -2
- package/cjs/yaml/nodes/YamlDirective.cjs +1 -2
- package/cjs/yaml/nodes/YamlDocument.cjs +1 -2
- package/cjs/yaml/nodes/YamlKeyValuePair.cjs +1 -2
- package/cjs/yaml/nodes/YamlMapping.cjs +1 -2
- package/cjs/yaml/nodes/YamlNode.cjs +1 -2
- package/cjs/yaml/nodes/YamlScalar.cjs +1 -2
- package/cjs/yaml/nodes/YamlSequence.cjs +1 -2
- package/cjs/yaml/nodes/YamlStream.cjs +1 -2
- package/cjs/yaml/nodes/YamlStyle.cjs +3 -6
- package/cjs/yaml/nodes/YamlTag.cjs +2 -4
- package/cjs/yaml/nodes/predicates.cjs +10 -20
- package/cjs/yaml/schemas/ScalarTag.cjs +1 -2
- package/cjs/yaml/schemas/Tag.cjs +1 -2
- package/cjs/yaml/schemas/canonical-format.cjs +4 -6
- package/cjs/yaml/schemas/failsafe/GenericMapping.cjs +1 -2
- package/cjs/yaml/schemas/failsafe/GenericSequence.cjs +1 -2
- package/cjs/yaml/schemas/failsafe/GenericString.cjs +1 -2
- package/cjs/yaml/schemas/failsafe/index.cjs +1 -2
- package/cjs/yaml/schemas/json/Boolean.cjs +1 -2
- package/cjs/yaml/schemas/json/FloatingPoint.cjs +1 -2
- package/cjs/yaml/schemas/json/Integer.cjs +1 -2
- package/cjs/yaml/schemas/json/Null.cjs +1 -2
- package/cjs/yaml/schemas/json/index.cjs +1 -2
- package/dist/apidom-ast.browser.js +89 -86
- package/dist/apidom-ast.browser.min.js +1 -1
- package/es/index.mjs +1 -1
- package/es/traversal/visitor.mjs +88 -85
- package/package.json +3 -3
- package/types/dist.d.ts +4 -2
@@ -639,6 +639,7 @@ const isParseResult = isNodeType.bind(undefined, 'parseResult');
|
|
639
639
|
__webpack_require__.r(__webpack_exports__);
|
640
640
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
641
641
|
/* harmony export */ BREAK: () => (/* binding */ BREAK),
|
642
|
+
/* harmony export */ cloneNode: () => (/* binding */ cloneNode),
|
642
643
|
/* harmony export */ getNodeType: () => (/* binding */ getNodeType),
|
643
644
|
/* harmony export */ getVisitFn: () => (/* binding */ getVisitFn),
|
644
645
|
/* harmony export */ isNode: () => (/* binding */ isNode),
|
@@ -691,6 +692,9 @@ const getNodeType = node => node?.type;
|
|
691
692
|
// isNode :: Node -> Boolean
|
692
693
|
const isNode = node => typeof getNodeType(node) === 'string';
|
693
694
|
|
695
|
+
// cloneNode :: a -> a
|
696
|
+
const cloneNode = node => Object.create(Object.getPrototypeOf(node), Object.getOwnPropertyDescriptors(node));
|
697
|
+
|
694
698
|
/**
|
695
699
|
* Creates a new visitor instance which delegates to many visitors to run in
|
696
700
|
* parallel. Each visitor will be visited for each node before moving on.
|
@@ -701,11 +705,11 @@ const mergeAll = (visitors, {
|
|
701
705
|
visitFnGetter = getVisitFn,
|
702
706
|
nodeTypeGetter = getNodeType
|
703
707
|
} = {}) => {
|
704
|
-
const skipping = new Array(visitors.length);
|
708
|
+
const skipping = new Array(visitors.length).fill(null);
|
705
709
|
return {
|
706
710
|
enter(node, ...rest) {
|
707
711
|
for (let i = 0; i < visitors.length; i += 1) {
|
708
|
-
if (skipping[i]
|
712
|
+
if (skipping[i] === null) {
|
709
713
|
const fn = visitFnGetter(visitors[i], nodeTypeGetter(node), /* isLeaving */false);
|
710
714
|
if (typeof fn === 'function') {
|
711
715
|
const result = fn.call(visitors[i], node, ...rest);
|
@@ -723,7 +727,7 @@ const mergeAll = (visitors, {
|
|
723
727
|
},
|
724
728
|
leave(node, ...rest) {
|
725
729
|
for (let i = 0; i < visitors.length; i += 1) {
|
726
|
-
if (skipping[i]
|
730
|
+
if (skipping[i] === null) {
|
727
731
|
const fn = visitFnGetter(visitors[i], nodeTypeGetter(node), /* isLeaving */true);
|
728
732
|
if (typeof fn === 'function') {
|
729
733
|
const result = fn.call(visitors[i], node, ...rest);
|
@@ -845,6 +849,7 @@ visitor, {
|
|
845
849
|
visitFnGetter = getVisitFn,
|
846
850
|
nodeTypeGetter = getNodeType,
|
847
851
|
nodePredicate = isNode,
|
852
|
+
nodeCloneFn = cloneNode,
|
848
853
|
detectCycles = true
|
849
854
|
} = {}) => {
|
850
855
|
const visitorKeys = keyMap || {};
|
@@ -854,15 +859,14 @@ visitor, {
|
|
854
859
|
let index = -1;
|
855
860
|
let parent;
|
856
861
|
let edits = [];
|
862
|
+
let node = root;
|
857
863
|
const path = [];
|
858
864
|
// @ts-ignore
|
859
865
|
const ancestors = [];
|
860
|
-
let newRoot = root;
|
861
866
|
do {
|
862
867
|
index += 1;
|
863
868
|
const isLeaving = index === keys.length;
|
864
869
|
let key;
|
865
|
-
let node;
|
866
870
|
const isEdited = isLeaving && edits.length !== 0;
|
867
871
|
if (isLeaving) {
|
868
872
|
key = ancestors.length === 0 ? undefined : path.pop();
|
@@ -871,23 +875,22 @@ visitor, {
|
|
871
875
|
parent = ancestors.pop();
|
872
876
|
if (isEdited) {
|
873
877
|
if (inArray) {
|
874
|
-
// @ts-ignore
|
878
|
+
// @ts-ignore; creating clone
|
875
879
|
node = node.slice();
|
880
|
+
let editOffset = 0;
|
881
|
+
for (const [editKey, editValue] of edits) {
|
882
|
+
const arrayKey = editKey - editOffset;
|
883
|
+
if (editValue === deleteNodeSymbol) {
|
884
|
+
node.splice(arrayKey, 1);
|
885
|
+
editOffset += 1;
|
886
|
+
} else {
|
887
|
+
node[arrayKey] = editValue;
|
888
|
+
}
|
889
|
+
}
|
876
890
|
} else {
|
877
891
|
// creating clone
|
878
|
-
node =
|
879
|
-
|
880
|
-
let editOffset = 0;
|
881
|
-
for (let ii = 0; ii < edits.length; ii += 1) {
|
882
|
-
let editKey = edits[ii][0];
|
883
|
-
const editValue = edits[ii][1];
|
884
|
-
if (inArray) {
|
885
|
-
editKey -= editOffset;
|
886
|
-
}
|
887
|
-
if (inArray && editValue === deleteNodeSymbol) {
|
888
|
-
node.splice(editKey, 1);
|
889
|
-
editOffset += 1;
|
890
|
-
} else {
|
892
|
+
node = nodeCloneFn(node);
|
893
|
+
for (const [editKey, editValue] of edits) {
|
891
894
|
node[editKey] = editValue;
|
892
895
|
}
|
893
896
|
}
|
@@ -900,15 +903,13 @@ visitor, {
|
|
900
903
|
inArray = stack.inArray;
|
901
904
|
// @ts-ignore
|
902
905
|
stack = stack.prev;
|
903
|
-
} else {
|
904
|
-
key =
|
905
|
-
node = parent
|
906
|
+
} else if (parent !== deleteNodeSymbol && parent !== undefined) {
|
907
|
+
key = inArray ? index : keys[index];
|
908
|
+
node = parent[key];
|
906
909
|
if (node === deleteNodeSymbol || node === undefined) {
|
907
910
|
continue;
|
908
911
|
}
|
909
|
-
|
910
|
-
path.push(key);
|
911
|
-
}
|
912
|
+
path.push(key);
|
912
913
|
}
|
913
914
|
if (ancestors.includes(node)) {
|
914
915
|
continue;
|
@@ -918,6 +919,7 @@ visitor, {
|
|
918
919
|
if (!nodePredicate(node)) {
|
919
920
|
throw new _swagger_api_apidom_error__WEBPACK_IMPORTED_MODULE_0__["default"](`Invalid AST Node: ${JSON.stringify(node)}`);
|
920
921
|
}
|
922
|
+
|
921
923
|
// cycle detected; skipping over a sub-tree to avoid recursion
|
922
924
|
if (detectCycles && ancestors.includes(node)) {
|
923
925
|
path.pop();
|
@@ -930,25 +932,26 @@ visitor, {
|
|
930
932
|
for (const [stateKey, stateValue] of Object.entries(state)) {
|
931
933
|
visitor[stateKey] = stateValue;
|
932
934
|
}
|
935
|
+
// retrieve result
|
933
936
|
result = visitFn.call(visitor, node, key, parent, path, ancestors);
|
934
|
-
|
935
|
-
|
937
|
+
}
|
938
|
+
if (result === breakSymbol) {
|
939
|
+
break;
|
940
|
+
}
|
941
|
+
if (result === skipVisitingNodeSymbol) {
|
942
|
+
if (!isLeaving) {
|
943
|
+
path.pop();
|
944
|
+
continue;
|
936
945
|
}
|
937
|
-
|
938
|
-
|
946
|
+
} else if (result !== undefined) {
|
947
|
+
edits.push([key, result]);
|
948
|
+
if (!isLeaving) {
|
949
|
+
if (nodePredicate(result)) {
|
950
|
+
node = result;
|
951
|
+
} else {
|
939
952
|
path.pop();
|
940
953
|
continue;
|
941
954
|
}
|
942
|
-
} else if (result !== undefined) {
|
943
|
-
edits.push([key, result]);
|
944
|
-
if (!isLeaving) {
|
945
|
-
if (nodePredicate(result)) {
|
946
|
-
node = result;
|
947
|
-
} else {
|
948
|
-
path.pop();
|
949
|
-
continue;
|
950
|
-
}
|
951
|
-
}
|
952
955
|
}
|
953
956
|
}
|
954
957
|
}
|
@@ -965,19 +968,19 @@ visitor, {
|
|
965
968
|
};
|
966
969
|
inArray = Array.isArray(node);
|
967
970
|
// @ts-ignore
|
968
|
-
keys = inArray ? node : visitorKeys[nodeTypeGetter(node)]
|
971
|
+
keys = inArray ? node : visitorKeys[nodeTypeGetter(node)] ?? [];
|
969
972
|
index = -1;
|
970
973
|
edits = [];
|
971
|
-
if (parent) {
|
974
|
+
if (parent !== deleteNodeSymbol && parent !== undefined) {
|
972
975
|
ancestors.push(parent);
|
973
976
|
}
|
974
977
|
parent = node;
|
975
978
|
}
|
976
979
|
} while (stack !== undefined);
|
977
980
|
if (edits.length !== 0) {
|
978
|
-
|
981
|
+
return edits.at(-1)[1];
|
979
982
|
}
|
980
|
-
return
|
983
|
+
return root;
|
981
984
|
};
|
982
985
|
|
983
986
|
/**
|
@@ -997,6 +1000,7 @@ visitor, {
|
|
997
1000
|
visitFnGetter = getVisitFn,
|
998
1001
|
nodeTypeGetter = getNodeType,
|
999
1002
|
nodePredicate = isNode,
|
1003
|
+
nodeCloneFn = cloneNode,
|
1000
1004
|
detectCycles = true
|
1001
1005
|
} = {}) => {
|
1002
1006
|
const visitorKeys = keyMap || {};
|
@@ -1006,15 +1010,14 @@ visitor, {
|
|
1006
1010
|
let index = -1;
|
1007
1011
|
let parent;
|
1008
1012
|
let edits = [];
|
1013
|
+
let node = root;
|
1009
1014
|
const path = [];
|
1010
1015
|
// @ts-ignore
|
1011
1016
|
const ancestors = [];
|
1012
|
-
let newRoot = root;
|
1013
1017
|
do {
|
1014
1018
|
index += 1;
|
1015
1019
|
const isLeaving = index === keys.length;
|
1016
1020
|
let key;
|
1017
|
-
let node;
|
1018
1021
|
const isEdited = isLeaving && edits.length !== 0;
|
1019
1022
|
if (isLeaving) {
|
1020
1023
|
key = ancestors.length === 0 ? undefined : path.pop();
|
@@ -1023,23 +1026,22 @@ visitor, {
|
|
1023
1026
|
parent = ancestors.pop();
|
1024
1027
|
if (isEdited) {
|
1025
1028
|
if (inArray) {
|
1026
|
-
// @ts-ignore
|
1029
|
+
// @ts-ignore; creating clone
|
1027
1030
|
node = node.slice();
|
1031
|
+
let editOffset = 0;
|
1032
|
+
for (const [editKey, editValue] of edits) {
|
1033
|
+
const arrayKey = editKey - editOffset;
|
1034
|
+
if (editValue === deleteNodeSymbol) {
|
1035
|
+
node.splice(arrayKey, 1);
|
1036
|
+
editOffset += 1;
|
1037
|
+
} else {
|
1038
|
+
node[arrayKey] = editValue;
|
1039
|
+
}
|
1040
|
+
}
|
1028
1041
|
} else {
|
1029
1042
|
// creating clone
|
1030
|
-
node =
|
1031
|
-
|
1032
|
-
let editOffset = 0;
|
1033
|
-
for (let ii = 0; ii < edits.length; ii += 1) {
|
1034
|
-
let editKey = edits[ii][0];
|
1035
|
-
const editValue = edits[ii][1];
|
1036
|
-
if (inArray) {
|
1037
|
-
editKey -= editOffset;
|
1038
|
-
}
|
1039
|
-
if (inArray && editValue === deleteNodeSymbol) {
|
1040
|
-
node.splice(editKey, 1);
|
1041
|
-
editOffset += 1;
|
1042
|
-
} else {
|
1043
|
+
node = nodeCloneFn(node);
|
1044
|
+
for (const [editKey, editValue] of edits) {
|
1043
1045
|
node[editKey] = editValue;
|
1044
1046
|
}
|
1045
1047
|
}
|
@@ -1052,21 +1054,20 @@ visitor, {
|
|
1052
1054
|
inArray = stack.inArray;
|
1053
1055
|
// @ts-ignore
|
1054
1056
|
stack = stack.prev;
|
1055
|
-
} else {
|
1056
|
-
key =
|
1057
|
-
node = parent
|
1057
|
+
} else if (parent !== deleteNodeSymbol && parent !== undefined) {
|
1058
|
+
key = inArray ? index : keys[index];
|
1059
|
+
node = parent[key];
|
1058
1060
|
if (node === deleteNodeSymbol || node === undefined) {
|
1059
1061
|
continue;
|
1060
1062
|
}
|
1061
|
-
|
1062
|
-
path.push(key);
|
1063
|
-
}
|
1063
|
+
path.push(key);
|
1064
1064
|
}
|
1065
1065
|
let result;
|
1066
1066
|
if (!Array.isArray(node)) {
|
1067
1067
|
if (!nodePredicate(node)) {
|
1068
1068
|
throw new _swagger_api_apidom_error__WEBPACK_IMPORTED_MODULE_0__["default"](`Invalid AST Node: ${JSON.stringify(node)}`);
|
1069
1069
|
}
|
1070
|
+
|
1070
1071
|
// cycle detected; skipping over a sub-tree to avoid recursion
|
1071
1072
|
if (detectCycles && ancestors.includes(node)) {
|
1072
1073
|
path.pop();
|
@@ -1079,26 +1080,27 @@ visitor, {
|
|
1079
1080
|
visitor[stateKey] = stateValue;
|
1080
1081
|
}
|
1081
1082
|
|
1082
|
-
//
|
1083
|
-
result = await visitFn.call(visitor, node, key, parent, path, ancestors);
|
1084
|
-
|
1085
|
-
|
1083
|
+
// retrieve result
|
1084
|
+
result = await visitFn.call(visitor, node, key, parent, path, ancestors); // eslint-disable-line no-await-in-loop
|
1085
|
+
}
|
1086
|
+
|
1087
|
+
if (result === breakSymbol) {
|
1088
|
+
break;
|
1089
|
+
}
|
1090
|
+
if (result === skipVisitingNodeSymbol) {
|
1091
|
+
if (!isLeaving) {
|
1092
|
+
path.pop();
|
1093
|
+
continue;
|
1086
1094
|
}
|
1087
|
-
|
1088
|
-
|
1095
|
+
} else if (result !== undefined) {
|
1096
|
+
edits.push([key, result]);
|
1097
|
+
if (!isLeaving) {
|
1098
|
+
if (nodePredicate(result)) {
|
1099
|
+
node = result;
|
1100
|
+
} else {
|
1089
1101
|
path.pop();
|
1090
1102
|
continue;
|
1091
1103
|
}
|
1092
|
-
} else if (result !== undefined) {
|
1093
|
-
edits.push([key, result]);
|
1094
|
-
if (!isLeaving) {
|
1095
|
-
if (nodePredicate(result)) {
|
1096
|
-
node = result;
|
1097
|
-
} else {
|
1098
|
-
path.pop();
|
1099
|
-
continue;
|
1100
|
-
}
|
1101
|
-
}
|
1102
1104
|
}
|
1103
1105
|
}
|
1104
1106
|
}
|
@@ -1115,19 +1117,19 @@ visitor, {
|
|
1115
1117
|
};
|
1116
1118
|
inArray = Array.isArray(node);
|
1117
1119
|
// @ts-ignore
|
1118
|
-
keys = inArray ? node : visitorKeys[nodeTypeGetter(node)]
|
1120
|
+
keys = inArray ? node : visitorKeys[nodeTypeGetter(node)] ?? [];
|
1119
1121
|
index = -1;
|
1120
1122
|
edits = [];
|
1121
|
-
if (parent) {
|
1123
|
+
if (parent !== deleteNodeSymbol && parent !== undefined) {
|
1122
1124
|
ancestors.push(parent);
|
1123
1125
|
}
|
1124
1126
|
parent = node;
|
1125
1127
|
}
|
1126
1128
|
} while (stack !== undefined);
|
1127
1129
|
if (edits.length !== 0) {
|
1128
|
-
|
1130
|
+
return edits.at(-1)[1];
|
1129
1131
|
}
|
1130
|
-
return
|
1132
|
+
return root;
|
1131
1133
|
};
|
1132
1134
|
|
1133
1135
|
/* eslint-enable */
|
@@ -24654,7 +24656,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
24654
24656
|
class ApiDOMError extends Error {
|
24655
24657
|
static [Symbol.hasInstance](instance) {
|
24656
24658
|
// we want to ApiDOMAggregateError to act as if ApiDOMError was its superclass
|
24657
|
-
return
|
24659
|
+
return super[Symbol.hasInstance](instance) || Function.prototype[Symbol.hasInstance].call(_ApiDOMAggregateError_mjs__WEBPACK_IMPORTED_MODULE_1__["default"], instance);
|
24658
24660
|
}
|
24659
24661
|
constructor(message, options) {
|
24660
24662
|
super(message, options);
|
@@ -24837,6 +24839,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
24837
24839
|
/* harmony export */ YamlStyleGroup: () => (/* reexport safe */ _yaml_nodes_YamlStyle__WEBPACK_IMPORTED_MODULE_28__.YamlStyleGroup),
|
24838
24840
|
/* harmony export */ YamlTag: () => (/* reexport safe */ _yaml_nodes_YamlTag__WEBPACK_IMPORTED_MODULE_26__["default"]),
|
24839
24841
|
/* harmony export */ YamlTagError: () => (/* reexport safe */ _yaml_errors_YamlTagError__WEBPACK_IMPORTED_MODULE_33__["default"]),
|
24842
|
+
/* harmony export */ cloneNode: () => (/* reexport safe */ _traversal_visitor__WEBPACK_IMPORTED_MODULE_39__.cloneNode),
|
24840
24843
|
/* harmony export */ getNodeType: () => (/* reexport safe */ _traversal_visitor__WEBPACK_IMPORTED_MODULE_39__.getNodeType),
|
24841
24844
|
/* harmony export */ getVisitFn: () => (/* reexport safe */ _traversal_visitor__WEBPACK_IMPORTED_MODULE_39__.getVisitFn),
|
24842
24845
|
/* harmony export */ isJsonArray: () => (/* reexport safe */ _json_nodes_predicates__WEBPACK_IMPORTED_MODULE_14__.isArray),
|