swagger-editor 5.6.0 → 5.6.2

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.
@@ -27763,7 +27763,7 @@ var require___vite_browser_external = /* @__PURE__ */ __commonJSMin(((Sn, er) =>
27763
27763
  typeof exports == "object" && (module.exports = TreeSitter);
27764
27764
  })), import_tree_sitter = /* @__PURE__ */ __toESM(require_tree_sitter(), 1), bytes$1 = new Uint8Array(atob("AGFzbQEAAAAAEAhkeWxpbmsuMAEF8BYEAQABHAZgAX8AYAAAYAABf2ACf38Bf2ABfwF/YAJ/fwACWgQDZW52DV9fbWVtb3J5X2Jhc2UDfwADZW52DF9fdGFibGVfYmFzZQN/AANlbnYGbWVtb3J5AgABA2VudhlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAXAAAQMFBAEBAgMHQwMRX193YXNtX2NhbGxfY3RvcnMAABhfX3dhc21fYXBwbHlfZGF0YV9yZWxvY3MAARB0cmVlX3NpdHRlcl9qc29uAAIJBwEAIwELAQMK9hIEAwABC/AEAQF/IwBBmBVqIwBBsAhqNgIAIwBBnBVqIwA2AgAjAEGgFWojAEHQBWo2AgAjAEGkFWojAEGQC2o2AgAjAEGoFWojAEGAFmoiADYCACMAQawVaiMAQeQWajYCACMAQbAVaiMAQbQGajYCACMAQbQVaiMAQbwGajYCACMAQbgVaiMAQdAGajYCACMAQbwVaiMAQaAHajYCACMAQcAVaiMAQdIHajYCACMAQcQVaiMAQeAHajYCACMAQcgVaiMAQcASajYCACMAQcwVaiMBNgIAIwBB9BVqIwBB8AdqNgIAIAAjAEGAEmo2AgAjAEGEFmojAEGSEWo2AgAjAEGIFmojAEG4Emo2AgAjAEGMFmojAEGQEWo2AgAjAEGQFmojAEGIEmo2AgAjAEGUFmojAEGGEmo2AgAjAEGYFmojAEGEEmo2AgAjAEGcFmojAEG6Emo2AgAjAEGgFmojAEGfEWo2AgAjAEGkFmojAEHwEWo2AgAjAEGoFmojAEHLEWo2AgAjAEGsFmojAEHeEWo2AgAjAEGwFmojAEHqEWo2AgAjAEG0FmojAEHSEWo2AgAjAEG4FmojAEG3EWo2AgAjAEG8FmojAEGuEWo2AgAjAEHAFmojAEHjEWo2AgAjAEHEFmojAEG/EWo2AgAjAEHIFmojAEHGEWo2AgAjAEHMFmojAEGYEWo2AgAjAEHQFmojAEHXEWo2AgAjAEHUFmojAEGeEWo2AgAjAEHYFmojAEGYEmo2AgAjAEHcFmojAEGpEmo2AgAjAEHgFmojAEGKEmo2AgAjAEHoFmojAEGUEWo2AgAjAEHsFmojAEHkEWo2AgALCAAjAEHwFGoL9A0BBn8DQCAAKAIAIQJBAiEFIAAgACgCGBEEACEHQQAhA0EAIQYCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUH//wNxDiwAAQIDBAUGBwgJCgsMDQ4PEBESExQuLzAVFhcYGRobHB0jJCUmJygpKissLT0LIAcNQgNAIAIgA0EBdCIBIwBBwBNqai8BAEYNMiADQRpJIQEgA0ECaiEDIAENAAtBASEDQRQhASACQSBGIAJBCWtBBUlyDUMgAkExa0EJTw07DEALAkACQAJAAkAgAkEfTARAQQEhA0ECIQEgBCEGIAIODkABAQEBAQEBASRHJCQkAQsCQCACQSBrDgMkAQMACyACQS9GDQMgAkHcAEYNAQtBACEDDCELQRIhAQxEC0EcIQEMQwsMHAsCQAJAIAJBCWtBBUkNAEEcIQEgBCEGIAJBIGsOAwA8QwELQQEhA0ECIQEMQgsgAkEvRw05QQMhAQxBCyACQSpGDTwgAkEvRw04DDsLIAJBKkYNOSACQS9GDS4MNgsgAkEqRg04DDULIAJBLUYEQEETIQEMPgsgAkEwa0EKTw01DDMLIAJBMEYEQEEjIQEMPQsgAkExa0EJTw00DDoLIAJB4QBHDTNBCyEBDDsLIAJB5QBHDTJBJyEBDDoLIAJB5QBHDTFBKCEBDDkLIAJB7ABHDTBBDyEBDDgLIAJB7ABHDS9BKSEBDDcLIAJB7ABHDS5BDCEBDDYLIAJB8gBHDS1BECEBDDULIAJB8wBHDSxBCiEBDDQLIAJB9QBHDStBCSEBDDMLIAJB9QBHDSpBDSEBDDILA0AgA0EBdCIBIwBBgBRqai8BACACRwRAIANBEEkhASADQQJqIQMgAQ0BDCsLCyMAIAFqQYIUai8BACEBQQAhAwwxCyACQTBrQQpPDSgMJQsgBw0uA0AgAiADQQF0IgEjAEGwFGpqLwEARg0gIANBGEkhASADQQJqIQMgAQ0AC0EBIQNBFCEBIAJBIEYgAkEJa0EFSXINLyACQTFrQQlJDSwMJwtBAyEFDBoLQQQhBQwZC0EFIQUMGAtBBiEFDBcLQQchBQwWCyAAQQg7AQQgACAAKAIMEQAAQQEhBCACQSlMBEAgAkUgAkEKRnINFyACQSJHDQYMFwsgAkEqRg0dIAJBL0YgAkHcAEdyDQUMFgsgAEEIOwEEIAAgACgCDBEAAEEBIQQgAkEpTARAIAJFIAJBCkZyDRYgAkEiRw0dDBYLIAJBKkYNGyACQS9GDQQgAkHcAEcNHAwVCyAAQQg7AQQgACAAKAIMEQAAQQEhBCACQSlMBEAgAkUgAkEKRnINFSACQSJHDRwMFQsgAkEqRg0aIAJB3ABHDRsMFAsgAEEIOwEEIAAgACgCDBEAAEEBIQQgAkEfTARAIAJBDUsNA0EBIAJ0IgFBgPQAcQ0FIAFBgQhxRQ0DDBQLQQEhBgJAIAJBIGsOAwUDIAALIAJBL0cNAQtBHSEBDCULIAJB3ABGDRELQSEhAQwjC0EAIQMLQSAhAQwhCyAAQQg7AQQgACAAKAIMEQAAQSEhAUEBIQQgAkEhTARAIAJFDQ5BASEGIAJBCkcNIQwaCyACQSJGDQ1BASEGIAJB3ABHDSAMGQtBCSEFDAsLIABBCjsBBCAAIAAoAgwRAAAgAkEuRgRAQQEhBAwQC0EBIQQgAkFfcUHFAEcNCwwQCyAAQQo7AQQgACAAKAIMEQAAQQEhBCACQS5GDQ4gAkFfcUHFAEYNDyACQTBrQQpJDRsMCgsgAEEKOwEEIAAgACgCDBEAACACQV9xQcUARgRAQQEhBAwPC0EBIQQgAkEwa0EKSQ0NDAkLIABBCjsBBCAAIAAoAgwRAABBASEEIAJBMGtBCkkNEAwIC0ELIQUMBgtBDCEFDAULQQ0hBQwEC0EOIQUMAwsgAEEOOwEEIAAgACgCDBEAAEEBIQQgAkUgAkEKRnINAwwRC0EAIQUMAQtBASEFCyAAIAU7AQQgACAAKAIMEQAAC0EBIQYMCwsjACABakHCE2ovAQAhAUEAIQMMEQtBKiEBDBALIwAgAWpBshRqLwEAIQFBACEDDA8LQSUhAQwOC0EGIQEMDQtBHiEBDAwLQR8hAQwLCwtBJiEBDAkLIAINBAsgBCEGCyAGQQFxDwtBBCEBDAULQSshAQwEC0EFIQEMAwtBACEDC0EkIQEMAQtBFSEBCyAAIAMgACgCCBEFAAwACwALC/cWAQAjAAvwFgIAAwABAA4AJQALAAAAAQACAAMABQAGAAcACgALAAwADQACAAMAAQAOACcACwAAAAEAAgADAAUABgAHAAoACwAMAA0AAgADAAEADgApAAsAAAABAAIAAwAFAAYABwAKAAsADAANAAcAAwABAA4ABwABAAEACQABAAUACwABAAcAHQABABAACAADABEAEwAUAA0ABAAKAAsADAANAAIAAwABAA4AKwALAAAAAQACAAMABQAGAAcACgALAAwADQACAAMAAQAOAC0ACwAAAAEAAgADAAUABgAHAAoACwAMAA0ABwADAAEADgAHAAEAAQAJAAEABQALAAEABwAcAAEAEAAIAAMAEQATABQADQAEAAoACwAMAA0AAgADAAEADgAvAAsAAAABAAIAAwAFAAYABwAKAAsADAANAAIAAwABAA4AMQALAAAAAQACAAMABQAGAAcACgALAAwADQAFAAMAAQAOAAsAAQAHADMAAQADABQAAQASAB8AAQAUAAQANQABAAcAOQABAA4AEgABABUANwACAAgACQAEADkAAQAOADsAAQAHABMAAQAVAD0AAgAIAAkABAA5AAEADgA/AAEABwATAAEAFQBBAAIACAAJAAQAAwABAA4ARAABAAIARgABAAMAFgABABcABAADAAEADgBIAAEAAgBKAAEABgAYAAEAGAAEAAMAAQAOAEQAAQACAEwAAQADABkAAQAXAAQAAwABAA4ACwABAAcAGwABABIAHwABABQABAADAAEADgBIAAEAAgBOAAEABgAaAAEAGAAEAAMAAQAOAFAAAQACAFMAAQADABkAAQAXAAQAAwABAA4AVQABAAIAWAABAAYAGgABABgAAgADAAEADgBTAAIAAgADAAIAAwABAA4AWgACAAIAAwACAAMAAQAOAFgAAgACAAYAAgADAAEADgBcAAEAAAACAAMAAQAOAF4AAQAEAAAAAAARAAAAIgAAADMAAABOAAAAXwAAAHAAAACLAAAAnAAAAK0AAAC9AAAAywAAANkAAADnAAAA9AAAAAEBAAAOAQAAGwEAACgBAAA1AQAAQgEAAEoBAABSAQAAWgEAAGEBAAAAAAAAAAACAAEAAAACAAIAAAAAAAAAAAAAAAAAAAEAAQAAAQAAAQAAAQAAAQAAAQAAAQAAAQEAAQEAAQEAAQEAAQEAAQEAAQEAAQEAAAEBAQEAAQEAAQEAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwABAAEAAQABAAEAAQABAAEAAAABAAEAAQABAAEAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAAAAAAAAAJAAAACwAAAAAADQANAA0ADQADAB4AAgAIAAAACAAIAAAAAgAAAAAADwAHAAAAAAAAAAkAAAALAAAAAAANAA0ADQANAAMAAAADAAgAAAAIAAgAAAADAAAAAAARABMAAAAAAAAAFgAAABkAAAAAABwAHAAcABwAAwAAAAMACAAAAAgACAAAAAMAAAAAAAAABwAAAAAAAAAJAB8ACwAAAAAADQANAA0ADQADAAAAFQAIAAAACAAIAAAAAAAAAAAAIQAhACEAIQAhACEAIQAhAAAAAAAhACEAIQAhAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAjACMAIwAjACMAIwAjACMAAAAAACMAIwAjACMAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAMAAAAAAAAAAQEAAAAAAAAAAAAAAQAAAAEBAAAAAAAAAQAPAAAAAAABAQAAAAAAAAAAEAAAAAAAAQEAAAAAAAAAAAQAAAAAAAEBAAAAAAAAAAARAAAAAAABAQAAAAAAAAAACAAAAAAAAQEAAAAAAAABAQ8AAAAAAAEBAAAAAAAAAQIWAAAAAAACAQAAAAAAAAECFgAAAAAAAAAQAAABAAACAQAAAAAAAAECFgAAAAAAAAAEAAABAAACAQAAAAAAAAECFgAAAAAAAAARAAABAAACAQAAAAAAAAECFgAAAAAAAAAIAAABAAABAQAAAAAAAAAACQAAAAAAAQEAAAAAAAABAhQAAAAAAAEBAAAAAAAAAQMUAAAAAAABAQAAAAAAAAECEQAAAAAAAQEAAAAAAAABARAAAAAAAAEBAAAAAAAAAQITAAAAAAABAQAAAAAAAAEDEQAAAAAAAQEAAAAAAAABBBEAAAAAAAEBAAAAAAAAAQMTAAAAAAABAQAAAAAAAAEEEwAAAAAAAQEAAAAAAAAAAAcAAAAAAAEAAAAAAAAAAAAFAAAAAAABAQAAAAAAAAAAEgAAAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAGAAAAAAABAQAAAAAAAAAAEwAAAAAAAQAAAAAAAAABAhUAAAAAAAIBAAAAAAAAAQIVAAAAAAAAABMAAAEAAAEBAAAAAAAAAAAXAAAAAAABAQAAAAAAAAAACwAAAAAAAQEAAAAAAAAAAAoAAAAAAAEBAAAAAAAAAAAOAAAAAAABAQAAAAAAAAAADAAAAAAAAQEAAAAAAAAAAA8AAAAAAAIBAAAAAAAAAQIXAAAAAAAAABcAAAEAAAEBAAAAAAAAAQIXAAAAAAACAQAAAAAAAAECGAAAAAAAAAAKAAABAAABAQAAAAAAAAECGAAAAAAAAQEAAAAAAAABAxIAAAABAAEBAAAAAAAAAgAAAAAAAAABAQAAAAAAAAAADQAAAAAAfQB7AGtleQBhcnJheQBfc3RyaW5nX2NvbnRlbnQAZG9jdW1lbnQAY29tbWVudABvYmplY3QAcGFpcgBudW1iZXIAbnVsbABzdHJpbmcAdHJ1ZQBfdmFsdWUAZmFsc2UAZXNjYXBlX3NlcXVlbmNlAGVuZABdAFsAOgBhcnJheV9yZXBlYXQxAGRvY3VtZW50X3JlcGVhdDEAb2JqZWN0X3JlcGVhdDEALAAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAHAAsABcALQAHAC8AAwAwACMAOgAZAFsAGgBcABIAXQAbAGYACABuABEAdAAOAHsAFgB9ABgAAAAAAAAAAAAiACIALwAiAFwAIgBiACIAZgAiAG4AIgByACIAdAAiAHUAIgAAAAAAAAAAAAAAAAAiABwALAAXAC0ABwAvAAMAMAAjADoAGQBbABoAXQAbAGYACABuABEAdAAOAHsAFgB9ABgAAAAAAAAAAAAAAAAADgAAABkAAAAAAAAADwAAAAAAAAAgAAAABwAAAAIAAAACAAAABAAAADAEAAAAAAAA0AIAAJAFAAAACwAAZAsAADQDAAA8AwAAUAMAAKADAADSAwAA4AMAAEAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8AMAAAAAAAAAAAAAAAkAAJIIAAA4CQAAkAgAAAgJAAAGCQAABAkAADoJAACfCAAA8AgAAMsIAADeCAAA6ggAANIIAAC3CAAArggAAOMIAAC/CAAAxggAAJgIAADXCAAAnggAABgJAAApCQAACgkAAAAAAACUCAAA5AgAAA==").split("").map(function(Sn) {
27765
27765
  return Sn.charCodeAt(0);
27766
- })), parser$2 = null, parserInitLock$1 = null, activeTrees$1 = /* @__PURE__ */ new Set(), MAX_ACTIVE_TREES$1 = 10, analyze$4 = async (Sn) => {
27766
+ })), parser$2 = null, parserInitLock$1 = null, activeTrees$1 = /* @__PURE__ */ new Set(), MAX_ACTIVE_TREES$1 = 10, analyze$6 = async (Sn) => {
27767
27767
  if (parser$2 === null && parserInitLock$1 === null) parserInitLock$1 = import_tree_sitter.default.init().then(() => import_tree_sitter.default.Language.load(bytes$1)).then((Sn) => {
27768
27768
  let er = new import_tree_sitter.default();
27769
27769
  return er.setLanguage(Sn), er;
@@ -27939,7 +27939,7 @@ var require___vite_browser_external = /* @__PURE__ */ __commonJSMin(((Sn, er) =>
27939
27939
  key: ["children"],
27940
27940
  error: ["children"],
27941
27941
  ...keyMapDefault$1
27942
- }, getNodeType$11 = (Sn) => isParseResultElement(Sn) ? "ParseResultElement" : isElement(Sn) ? getNodeType$12(Sn) : getNodeType$13(Sn), isNode$3 = (Sn) => isElement(Sn) || isNode$5(Sn), analyze$3 = (Sn, { sourceMap: er = !1 } = {}) => {
27942
+ }, getNodeType$11 = (Sn) => isParseResultElement(Sn) ? "ParseResultElement" : isElement(Sn) ? getNodeType$12(Sn) : getNodeType$13(Sn), isNode$3 = (Sn) => isElement(Sn) || isNode$5(Sn), analyze$5 = (Sn, { sourceMap: er = !1 } = {}) => {
27943
27943
  let tr = new CstVisitor$2(), nr = new TreeCursorIterator$1(Sn.walk()), [rr] = Array.from(nr);
27944
27944
  return visit$2(rr, tr, {
27945
27945
  keyMap: keyMap$17,
@@ -28117,7 +28117,7 @@ var require___vite_browser_external = /* @__PURE__ */ __commonJSMin(((Sn, er) =>
28117
28117
  maybeAddSourceMap(Sn, er) {
28118
28118
  this.sourceMap && assignSourceMap(er, Sn);
28119
28119
  }
28120
- }, analyze$2 = (Sn, { sourceMap: er = !1 } = {}) => {
28120
+ }, analyze$4 = (Sn, { sourceMap: er = !1 } = {}) => {
28121
28121
  let tr = new TreeCursorIterator$1(Sn.walk()), [nr] = Array.from(tr), rr = new CstVisitor$1(), ir = new JsonAstVisitor();
28122
28122
  return visit$2(visit$2(nr, rr, {
28123
28123
  keyMap: keyMap$16,
@@ -28136,7 +28136,7 @@ var require___vite_browser_external = /* @__PURE__ */ __commonJSMin(((Sn, er) =>
28136
28136
  if (!detectionRegExp$16.test(Sn)) return !1;
28137
28137
  let er = null;
28138
28138
  try {
28139
- return er = await analyze$4(Sn), er.rootNode.type !== "ERROR";
28139
+ return er = await analyze$6(Sn), er.rootNode.type !== "ERROR";
28140
28140
  } catch {
28141
28141
  return !1;
28142
28142
  } finally {
@@ -28145,7 +28145,7 @@ var require___vite_browser_external = /* @__PURE__ */ __commonJSMin(((Sn, er) =>
28145
28145
  }, parse$22 = async (Sn, { sourceMap: er = !1, syntacticAnalysis: tr = "direct" } = {}) => {
28146
28146
  let nr = null;
28147
28147
  try {
28148
- return nr = await analyze$4(Sn), tr === "indirect" ? analyze$2(nr, { sourceMap: er }) : analyze$3(nr, { sourceMap: er });
28148
+ return nr = await analyze$6(Sn), tr === "indirect" ? analyze$4(nr, { sourceMap: er }) : analyze$5(nr, { sourceMap: er });
28149
28149
  } finally {
28150
28150
  nr !== null && nr.delete();
28151
28151
  }
@@ -36268,7 +36268,173 @@ var bytes = new Uint8Array(atob("AGFzbQEAAAAAEQhkeWxpbmsuMAEG4JYKBAgAATAJYAJ/fwB
36268
36268
  return tr.delete = function() {
36269
36269
  activeTrees.delete(this), nr.call(this);
36270
36270
  }, parser$1.reset(), tr;
36271
- }, analyze$1 = createAnalyze(bytes), TreeCursorSyntaxNode = class {
36271
+ }, analyze$3 = createAnalyze(bytes), FallbackNeeded = class extends Error {
36272
+ name = "FallbackNeeded";
36273
+ }, NULL_RE = /^null$/, INT_RE = /^-?(0|[1-9][0-9]*)$/, FLOAT_RE = /^-?(0|[1-9][0-9]*)(\.[0-9]*)?([eE][-+]?[0-9]+)?$/, BOOL_RE = /^(true|false)$/;
36274
+ function resolveScalarContent(Sn) {
36275
+ return NULL_RE.test(Sn) ? null : INT_RE.test(Sn) ? parseInt(Sn, 10) : FLOAT_RE.test(Sn) ? parseFloat(Sn) : BOOL_RE.test(Sn) ? Sn === "true" : Sn;
36276
+ }
36277
+ function setSourceMap(Sn, er) {
36278
+ Sn.startPositionRow = er.startPosition.row, Sn.startPositionColumn = er.startPosition.column, Sn.startIndex = er.startIndex, Sn.endPositionRow = er.endPosition.row, Sn.endPositionColumn = er.endPosition.column, Sn.endIndex = er.endIndex;
36279
+ }
36280
+ var forEachNamedChild = (Sn, er, tr) => {
36281
+ if (Sn.gotoFirstChild()) {
36282
+ do
36283
+ if (Sn.nodeIsNamed) {
36284
+ var nr;
36285
+ tr(Sn, Sn.currentFieldName ?? null);
36286
+ } else if (Sn.nodeIsMissing) {
36287
+ let tr = new Annotation(`(Missing ${Sn.nodeType})`);
36288
+ tr.classes.push("warning"), er.sourceMap && setSourceMap(tr, Sn), er.annotations.push(tr);
36289
+ }
36290
+ while (Sn.gotoNextSibling());
36291
+ Sn.gotoParent();
36292
+ }
36293
+ }, walkFunctions = {
36294
+ walkStream: (Sn, er) => {
36295
+ let tr = new ParseResult$1();
36296
+ er.sourceMap && setSourceMap(tr, Sn), forEachNamedChild(Sn, er, (Sn) => {
36297
+ let { nodeType: nr } = Sn;
36298
+ if (nr === "document") {
36299
+ let nr = walkFunctions.walkDocument(Sn, er);
36300
+ nr !== null && tr.push(nr);
36301
+ } else if (nr === "comment" && er.documentCount === 0) {
36302
+ let nr = new Comment(Sn.nodeText);
36303
+ er.sourceMap && setSourceMap(nr, Sn), tr.push(nr);
36304
+ } else nr === "ERROR" && walkFunctions.walkError(Sn, er);
36305
+ });
36306
+ let nr = tr.findElements(isPrimitiveElement);
36307
+ return nr.length > 0 && nr[0].classes.push("result"), er.annotations.forEach((Sn) => tr.push(Sn)), er.annotations = [], tr;
36308
+ },
36309
+ walkDocument: (Sn, er) => {
36310
+ if (er.documentCount >= 1) {
36311
+ if (er.documentCount === 1) {
36312
+ let tr = new Annotation("Only first document within YAML stream will be used. Rest will be discarded.");
36313
+ tr.classes.push("warning"), er.sourceMap && setSourceMap(tr, Sn), er.annotations.push(tr);
36314
+ }
36315
+ return er.documentCount += 1, null;
36316
+ }
36317
+ er.documentCount += 1;
36318
+ let tr = null;
36319
+ return forEachNamedChild(Sn, er, (Sn) => {
36320
+ let { nodeType: nr } = Sn;
36321
+ if (nr === "tag" || nr === "anchor" || nr === "alias") throw new FallbackNeeded();
36322
+ if (nr.endsWith("_directive") || nr === "comment") return;
36323
+ if (nr === "ERROR") {
36324
+ walkFunctions.walkError(Sn, er);
36325
+ return;
36326
+ }
36327
+ let rr = walkFunctions.walkNode(Sn, er);
36328
+ rr !== null && (tr = rr);
36329
+ }), tr;
36330
+ },
36331
+ walkMapping: (Sn, er) => {
36332
+ let tr = new import_minim.ObjectElement();
36333
+ return er.sourceMap && setSourceMap(tr, Sn), forEachNamedChild(Sn, er, (Sn) => {
36334
+ let { nodeType: nr } = Sn;
36335
+ if (nr === "tag" || nr === "anchor" || nr === "alias") throw new FallbackNeeded();
36336
+ nr === "block_mapping_pair" || nr === "flow_pair" ? tr.push(walkFunctions.walkPair(Sn, er)) : nr === "ERROR" && walkFunctions.walkError(Sn, er);
36337
+ }), tr;
36338
+ },
36339
+ walkSequence: (Sn, er) => {
36340
+ let tr = new import_minim.ArrayElement();
36341
+ return er.sourceMap && setSourceMap(tr, Sn), forEachNamedChild(Sn, er, (Sn) => {
36342
+ let { nodeType: nr } = Sn;
36343
+ if (nr === "tag" || nr === "anchor" || nr === "alias") throw new FallbackNeeded();
36344
+ if (nr === "ERROR") walkFunctions.walkError(Sn, er);
36345
+ else if (nr === "block_sequence_item") {
36346
+ let nr = walkFunctions.walkSequenceItem(Sn, er);
36347
+ nr !== null && tr.push(nr);
36348
+ } else {
36349
+ let nr = walkFunctions.walkNode(Sn, er);
36350
+ nr !== null && tr.push(nr);
36351
+ }
36352
+ }), tr;
36353
+ },
36354
+ walkPair: (Sn, er) => {
36355
+ let tr = Sn.startPosition.row, nr = Sn.startPosition.column, rr = Sn.startIndex, ir = Sn.endPosition.row, ar = Sn.endPosition.column, sr = Sn.endIndex, cr = null, lr = null;
36356
+ forEachNamedChild(Sn, er, (Sn, tr) => {
36357
+ let { nodeType: nr } = Sn;
36358
+ if (nr === "tag" || nr === "anchor" || nr === "alias") throw new FallbackNeeded();
36359
+ nr === "ERROR" ? walkFunctions.walkError(Sn, er) : tr === "key" ? cr = walkFunctions.walkNode(Sn, er) : tr === "value" && (lr = walkFunctions.walkNode(Sn, er));
36360
+ }), cr === null && (cr = er.namespace.toElement(""), cr.classes.push("yaml-e-node"), cr.classes.push("yaml-e-scalar"), er.sourceMap && (cr.startPositionRow = tr, cr.startPositionColumn = nr, cr.startIndex = rr, cr.endPositionRow = tr, cr.endPositionColumn = nr, cr.endIndex = rr)), lr === null && (lr = er.namespace.toElement(""), lr.classes.push("yaml-e-node"), lr.classes.push("yaml-e-scalar"), er.sourceMap && (lr.startPositionRow = ir, lr.startPositionColumn = ar, lr.startIndex = sr, lr.endPositionRow = ir, lr.endPositionColumn = ar, lr.endIndex = sr));
36361
+ let ur = new import_minim.MemberElement();
36362
+ return er.sourceMap && (ur.startPositionRow = tr, ur.startPositionColumn = nr, ur.startIndex = rr, ur.endPositionRow = ir, ur.endPositionColumn = ar, ur.endIndex = sr), ur.key = cr, ur.value = lr, ur;
36363
+ },
36364
+ walkSequenceItem: (Sn, er) => {
36365
+ let tr = Sn.endPosition.row, nr = Sn.endPosition.column, rr = Sn.endIndex, ir = null;
36366
+ return forEachNamedChild(Sn, er, (Sn) => {
36367
+ let { nodeType: tr } = Sn;
36368
+ if (tr === "tag" || tr === "anchor" || tr === "alias") throw new FallbackNeeded();
36369
+ let nr = walkFunctions.walkNode(Sn, er);
36370
+ nr !== null && (ir = nr);
36371
+ }), ir === null && (ir = er.namespace.toElement(""), ir.classes.push("yaml-e-node"), ir.classes.push("yaml-e-scalar"), er.sourceMap && (ir.startPositionRow = tr, ir.startPositionColumn = nr, ir.startIndex = rr, ir.endPositionRow = tr, ir.endPositionColumn = nr, ir.endIndex = rr)), ir;
36372
+ },
36373
+ walkBlockFlowNode: (Sn, er) => {
36374
+ let tr = null;
36375
+ return forEachNamedChild(Sn, er, (Sn) => {
36376
+ let { nodeType: nr } = Sn;
36377
+ if (nr === "tag" || nr === "anchor" || nr === "alias") throw new FallbackNeeded();
36378
+ if (nr === "comment") return;
36379
+ let rr = walkFunctions.walkNode(Sn, er);
36380
+ rr !== null && tr === null && (tr = rr);
36381
+ }), tr;
36382
+ },
36383
+ walkPlainScalar: (Sn, er) => {
36384
+ let tr = formatFlowPlain(Sn.nodeText), nr = er.namespace.toElement(resolveScalarContent(tr));
36385
+ return er.sourceMap && setSourceMap(nr, Sn), tr === "" && (nr.classes.push("yaml-e-node"), nr.classes.push("yaml-e-scalar")), nr;
36386
+ },
36387
+ walkSingleQuoteScalar: (Sn, er) => {
36388
+ let tr = formatFlowSingleQuoted(Sn.nodeText), nr = er.namespace.toElement(tr);
36389
+ return er.sourceMap && setSourceMap(nr, Sn), nr;
36390
+ },
36391
+ walkDoubleQuoteScalar: (Sn, er) => {
36392
+ let tr = formatFlowDoubleQuoted(Sn.nodeText), nr = er.namespace.toElement(tr);
36393
+ return er.sourceMap && setSourceMap(nr, Sn), nr;
36394
+ },
36395
+ walkBlockScalar: (Sn, er) => {
36396
+ let tr = Sn.nodeText, nr = tr.trimStart().startsWith(">") ? formatBlockFolded(tr) : formatBlockLiteral(tr), rr = er.namespace.toElement(nr);
36397
+ return er.sourceMap && setSourceMap(rr, Sn), rr;
36398
+ },
36399
+ walkError: (Sn, er) => {
36400
+ let tr = new Annotation(Sn.currentNode.hasError ? "(Error YAML syntax error)" : "(Unexpected YAML syntax error)");
36401
+ return tr.classes.push("error"), er.sourceMap && setSourceMap(tr, Sn), er.annotations.push(tr), null;
36402
+ },
36403
+ walkNode: (Sn, er) => {
36404
+ switch (Sn.nodeType) {
36405
+ case "block_mapping":
36406
+ case "flow_mapping": return walkFunctions.walkMapping(Sn, er);
36407
+ case "block_sequence":
36408
+ case "flow_sequence": return walkFunctions.walkSequence(Sn, er);
36409
+ case "block_mapping_pair":
36410
+ case "flow_pair": return walkFunctions.walkPair(Sn, er);
36411
+ case "block_sequence_item": return walkFunctions.walkSequenceItem(Sn, er);
36412
+ case "block_node":
36413
+ case "flow_node": return walkFunctions.walkBlockFlowNode(Sn, er);
36414
+ case "plain_scalar": return walkFunctions.walkPlainScalar(Sn, er);
36415
+ case "single_quote_scalar": return walkFunctions.walkSingleQuoteScalar(Sn, er);
36416
+ case "double_quote_scalar": return walkFunctions.walkDoubleQuoteScalar(Sn, er);
36417
+ case "block_scalar": return walkFunctions.walkBlockScalar(Sn, er);
36418
+ case "tag":
36419
+ case "anchor":
36420
+ case "alias": throw new FallbackNeeded();
36421
+ case "ERROR": return walkFunctions.walkError(Sn, er);
36422
+ default: return null;
36423
+ }
36424
+ }
36425
+ }, analyze$2 = (Sn, { sourceMap: er = !1 } = {}) => {
36426
+ let tr = Sn.walk(), nr = {
36427
+ sourceMap: er,
36428
+ namespace: createNamespace(),
36429
+ annotations: [],
36430
+ documentCount: 0
36431
+ };
36432
+ if (tr.nodeType !== "stream") {
36433
+ let Sn = new ParseResult$1();
36434
+ return nr.sourceMap && setSourceMap(Sn, tr), walkFunctions.walkError(tr, nr), nr.annotations.forEach((er) => Sn.push(er)), Sn;
36435
+ }
36436
+ return walkFunctions.walkStream(tr, nr);
36437
+ }, TreeCursorSyntaxNode = class {
36272
36438
  type;
36273
36439
  startPositionRow;
36274
36440
  startPositionColumn;
@@ -36771,7 +36937,7 @@ var bytes = new Uint8Array(atob("AGFzbQEAAAAAEQhkeWxpbmsuMAEG4JYKBAgAATAJYAJ/fwB
36771
36937
  }
36772
36938
  yield er;
36773
36939
  }
36774
- }, analyze = (Sn, { sourceMap: er = !1 } = {}) => {
36940
+ }, analyze$1 = (Sn, { sourceMap: er = !1 } = {}) => {
36775
36941
  let tr = new TreeCursorIterator(Sn.walk()), [nr] = Array.from(tr), rr = new CstVisitor(), ir = new YamlAstVisitor();
36776
36942
  return visit$2(visit$2(nr, rr, {
36777
36943
  keyMap: keyMap$6,
@@ -36787,6 +36953,13 @@ var bytes = new Uint8Array(atob("AGFzbQEAAAAAEQhkeWxpbmsuMAEG4JYKBAgAATAJYAJ/fwB
36787
36953
  nodePredicate: isNode,
36788
36954
  state: { sourceMap: er }
36789
36955
  });
36956
+ }, analyze = (Sn, er = {}) => {
36957
+ try {
36958
+ return analyze$2(Sn, er);
36959
+ } catch (tr) {
36960
+ if (tr instanceof FallbackNeeded) return analyze$1(Sn, er);
36961
+ throw tr;
36962
+ }
36790
36963
  }, YamlMediaTypes = class extends MediaTypes {
36791
36964
  latest() {
36792
36965
  return this[1];
@@ -36794,7 +36967,7 @@ var bytes = new Uint8Array(atob("AGFzbQEAAAAAEQhkeWxpbmsuMAEG4JYKBAgAATAJYAJ/fwB
36794
36967
  }, mediaTypes$5 = new YamlMediaTypes("text/yaml", "application/yaml"), detect$15 = async (Sn) => {
36795
36968
  let er = null;
36796
36969
  try {
36797
- return er = await analyze$1(Sn), !er.rootNode.isError;
36970
+ return er = await analyze$3(Sn), !er.rootNode.isError;
36798
36971
  } catch {
36799
36972
  return !1;
36800
36973
  } finally {
@@ -36803,7 +36976,7 @@ var bytes = new Uint8Array(atob("AGFzbQEAAAAAEQhkeWxpbmsuMAEG4JYKBAgAATAJYAJ/fwB
36803
36976
  }, parse$20 = async (Sn, { sourceMap: er = !1 } = {}) => {
36804
36977
  let tr = null;
36805
36978
  try {
36806
- return tr = await analyze$1(Sn), analyze(tr, { sourceMap: er });
36979
+ return tr = await analyze$3(Sn), analyze(tr, { sourceMap: er });
36807
36980
  } finally {
36808
36981
  tr !== null && tr.delete();
36809
36982
  }
@@ -54922,17 +55095,62 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
54922
55095
  options;
54923
55096
  ancestors;
54924
55097
  refractCache;
54925
- constructor({ reference: Sn, namespace: er, options: tr, indirections: nr = [], ancestors: rr = new AncestorLineage(), refractCache: ir = /* @__PURE__ */ new Map() }) {
54926
- this.indirections = nr, this.namespace = er, this.reference = Sn, this.options = tr, this.ancestors = new AncestorLineage(...rr), this.refractCache = ir;
55098
+ errorContext;
55099
+ errorPropagationCache = /* @__PURE__ */ new Map();
55100
+ pendingPropagations = [];
55101
+ constructor({ reference: Sn, namespace: er, options: tr, indirections: nr = [], ancestors: rr = new AncestorLineage(), refractCache: ir = /* @__PURE__ */ new Map(), errorContext: ar = [], errorPropagationCache: sr = /* @__PURE__ */ new Map(), pendingPropagations: cr = [] }) {
55102
+ this.indirections = nr, this.namespace = er, this.reference = Sn, this.options = tr, this.ancestors = new AncestorLineage(...rr), this.refractCache = ir, this.errorContext = ar, this.errorPropagationCache = sr, this.pendingPropagations = cr;
55103
+ }
55104
+ popErrorContext(Sn) {
55105
+ if (this.errorContext[this.errorContext.length - 1] === Sn) this.errorContext.pop();
55106
+ else for (let er = this.errorContext.length - 1; er >= 0; --er) if (this.errorContext[er] === Sn) {
55107
+ this.errorContext.splice(er, 1);
55108
+ break;
55109
+ }
54927
55110
  }
54928
- handleDereferenceError(Sn, er) {
54929
- var tr;
54930
- if ((tr = this.options.dereference.dereferenceOpts) != null && tr.continueOnError) {
54931
- var nr;
54932
- (nr = this.options.dereference.dereferenceOpts) == null || nr.errors.push({
55111
+ runPropagationPass() {
55112
+ let Sn = !1;
55113
+ return this.pendingPropagations.forEach(({ referencingElement: er, referencedElement: tr }) => {
55114
+ let nr = this.errorPropagationCache.get(tr);
55115
+ Array.isArray(nr) && nr.length > 0 && nr.forEach((tr) => {
55116
+ let nr = this.errorPropagationCache.get(er);
55117
+ if (!(nr != null && nr.includes(tr))) {
55118
+ var rr;
55119
+ (rr = this.options.dereference.dereferenceOpts) == null || rr.errors.push({
55120
+ error: tr,
55121
+ refEl: er
55122
+ }), nr ? nr.push(tr) : this.errorPropagationCache.set(er, [tr]), Sn = !0;
55123
+ }
55124
+ });
55125
+ }), Sn;
55126
+ }
55127
+ propagateErrors() {
55128
+ for (; this.runPropagationPass(););
55129
+ this.pendingPropagations.length = 0;
55130
+ }
55131
+ handleDereferenceError(Sn, er, tr) {
55132
+ var nr;
55133
+ if ((nr = this.options.dereference.dereferenceOpts) != null && nr.continueOnError) {
55134
+ var rr, ir, ar;
55135
+ let { directAncestors: nr, isExternalReference: cr = !1 } = tr ?? {}, lr = this.options.dereference.dereferenceOpts?.skipNestedExternal ?? !1, ur = cr && lr;
55136
+ if (nr && !ur) for (let er of nr) {
55137
+ let tr = this.errorPropagationCache.get(er);
55138
+ tr ? tr.push(Sn) : this.errorPropagationCache.set(er, [Sn]);
55139
+ }
55140
+ if ((ar = this.options.dereference.dereferenceOpts) == null || ar.errors.push({
54933
55141
  error: Sn,
54934
55142
  refEl: er
54935
- });
55143
+ }), !ur) {
55144
+ let tr = new Set(this.errorContext);
55145
+ tr.delete(er), this.popErrorContext(er);
55146
+ for (let er of tr) {
55147
+ var sr;
55148
+ (sr = this.options.dereference.dereferenceOpts) == null || sr.errors.push({
55149
+ error: Sn,
55150
+ refEl: er
55151
+ });
55152
+ }
55153
+ }
54936
55154
  return;
54937
55155
  }
54938
55156
  throw Sn;
@@ -54986,6 +55204,10 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
54986
55204
  let er = new Set(Sn.filter(isElement));
54987
55205
  return [new AncestorLineage(...this.ancestors, er), er];
54988
55206
  }
55207
+ SwaggerElement = { leave: (Sn, er, tr) => {
55208
+ var nr;
55209
+ if ((nr = this.options.dereference.dereferenceOpts) != null && nr.continueOnError) return this.propagateErrors(), tr ? void 0 : Sn;
55210
+ } };
54989
55211
  async ReferenceElement(er, tr, nr, rr, ir, ar) {
54990
55212
  var sr;
54991
55213
  if (this.indirections.includes(er)) return !1;
@@ -54995,7 +55217,10 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
54995
55217
  try {
54996
55218
  pr = await this.toReference(serializer$2(er.$ref));
54997
55219
  } catch (Sn) {
54998
- return this.handleDereferenceError(Sn, er);
55220
+ return this.handleDereferenceError(Sn, er, {
55221
+ directAncestors: lr,
55222
+ isExternalReference: fr
55223
+ });
54999
55224
  }
55000
55225
  let mr = resolve$1(ur, serializer$2(er.$ref));
55001
55226
  this.indirections.push(er);
@@ -55003,7 +55228,10 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55003
55228
  try {
55004
55229
  gr = evaluate$6(pr.value.result, hr);
55005
55230
  } catch (Sn) {
55006
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55231
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55232
+ directAncestors: lr,
55233
+ isExternalReference: fr
55234
+ });
55007
55235
  }
55008
55236
  if (gr.id = identityManager$5.identify(gr), isPrimitiveElement(gr)) {
55009
55237
  let Sn = serializer$2(er.meta.get("referenced-element")), tr = `${Sn}-${serializer$2(identityManager$5.identify(gr))}`;
@@ -55011,16 +55239,25 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55011
55239
  }
55012
55240
  if (er === gr) {
55013
55241
  let Sn = new ApiDOMError("Recursive Reference Object detected");
55014
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55242
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55243
+ directAncestors: lr,
55244
+ isExternalReference: fr
55245
+ });
55015
55246
  }
55016
55247
  if (this.indirections.length > this.options.dereference.maxDepth) {
55017
55248
  let Sn = new MaximumDereferenceDepthError(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
55018
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55249
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55250
+ directAncestors: lr,
55251
+ isExternalReference: fr
55252
+ });
55019
55253
  }
55020
55254
  if (cr.includes(gr)) {
55021
55255
  if (pr.refSet.circular = !0, this.options.dereference.circular === "error") {
55022
55256
  let Sn = new ApiDOMError("Circular reference detected");
55023
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55257
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55258
+ directAncestors: lr,
55259
+ isExternalReference: fr
55260
+ });
55024
55261
  }
55025
55262
  if (this.options.dereference.circular === "replace") {
55026
55263
  var _r, vr;
@@ -55033,15 +55270,18 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55033
55270
  }
55034
55271
  }
55035
55272
  let yr = stripHash(pr.refSet.rootRef.uri) !== pr.uri, br = ["error", "replace"].includes(this.options.dereference.circular);
55036
- if ((fr || yr || isReferenceElement$5(gr) || br || (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError) && !cr.includesCycle(gr)) {
55037
- lr.add(er);
55273
+ if ((fr || yr || isReferenceElement$5(gr) || br) && !cr.includesCycle(gr)) {
55274
+ lr.add(er), this.errorContext.push(er);
55038
55275
  let tr = new Sn({
55039
55276
  reference: pr,
55040
55277
  namespace: this.namespace,
55041
55278
  indirections: [...this.indirections],
55042
55279
  options: this.getNestedVisitorOptions(er),
55043
55280
  refractCache: this.refractCache,
55044
- ancestors: cr
55281
+ ancestors: cr,
55282
+ errorContext: this.errorContext,
55283
+ errorPropagationCache: this.errorPropagationCache,
55284
+ pendingPropagations: this.pendingPropagations
55045
55285
  });
55046
55286
  try {
55047
55287
  gr = await visitAsync$11(gr, tr, {
@@ -55049,10 +55289,16 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55049
55289
  nodeTypeGetter: getNodeType$4
55050
55290
  });
55051
55291
  } catch (Sn) {
55052
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55292
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55293
+ directAncestors: lr,
55294
+ isExternalReference: fr
55295
+ });
55053
55296
  }
55054
- lr.delete(er);
55055
- }
55297
+ lr.delete(er), this.popErrorContext(er);
55298
+ } else (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError && this.pendingPropagations.push({
55299
+ referencingElement: er,
55300
+ referencedElement: gr
55301
+ });
55056
55302
  this.indirections.pop();
55057
55303
  let xr = cloneShallow(gr);
55058
55304
  return xr.setMetaProperty("id", identityManager$5.generateId()), xr.setMetaProperty("ref-fields", { $ref: serializer$2(er.$ref) }), xr.setMetaProperty("ref-origin", pr.uri), xr.setMetaProperty("ref-referencing-element-id", cloneDeep(identityManager$5.identify(er))), ar.replaceWith(xr, mutationReplacer$5), nr ? !1 : xr;
@@ -55067,7 +55313,10 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55067
55313
  try {
55068
55314
  pr = await this.toReference(serializer$2(er.$ref));
55069
55315
  } catch (Sn) {
55070
- return this.handleDereferenceError(Sn, er);
55316
+ return this.handleDereferenceError(Sn, er, {
55317
+ directAncestors: lr,
55318
+ isExternalReference: fr
55319
+ });
55071
55320
  }
55072
55321
  let mr = resolve$1(ur, serializer$2(er.$ref));
55073
55322
  this.indirections.push(er);
@@ -55075,7 +55324,10 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55075
55324
  try {
55076
55325
  gr = evaluate$6(pr.value.result, hr);
55077
55326
  } catch (Sn) {
55078
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55327
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55328
+ directAncestors: lr,
55329
+ isExternalReference: fr
55330
+ });
55079
55331
  }
55080
55332
  if (gr.id = identityManager$5.identify(gr), isPrimitiveElement(gr)) {
55081
55333
  let Sn = `pathItem-${serializer$2(identityManager$5.identify(gr))}`;
@@ -55083,16 +55335,25 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55083
55335
  }
55084
55336
  if (er === gr) {
55085
55337
  let Sn = new ApiDOMError("Recursive Path Item Object reference detected");
55086
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55338
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55339
+ directAncestors: lr,
55340
+ isExternalReference: fr
55341
+ });
55087
55342
  }
55088
55343
  if (this.indirections.length > this.options.dereference.maxDepth) {
55089
55344
  let Sn = new MaximumDereferenceDepthError(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
55090
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55345
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55346
+ directAncestors: lr,
55347
+ isExternalReference: fr
55348
+ });
55091
55349
  }
55092
55350
  if (cr.includes(gr)) {
55093
55351
  if (pr.refSet.circular = !0, this.options.dereference.circular === "error") {
55094
55352
  let Sn = new ApiDOMError("Circular reference detected");
55095
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55353
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55354
+ directAncestors: lr,
55355
+ isExternalReference: fr
55356
+ });
55096
55357
  }
55097
55358
  if (this.options.dereference.circular === "replace") {
55098
55359
  var _r, vr;
@@ -55105,15 +55366,18 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55105
55366
  }
55106
55367
  }
55107
55368
  let yr = stripHash(pr.refSet.rootRef.uri) !== pr.uri, br = ["error", "replace"].includes(this.options.dereference.circular);
55108
- if ((fr || yr || isPathItemElement$1(gr) && isStringElement(gr.$ref) || br || (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError) && !cr.includesCycle(gr)) {
55109
- lr.add(er);
55369
+ if ((fr || yr || isPathItemElement$1(gr) && isStringElement(gr.$ref) || br) && !cr.includesCycle(gr)) {
55370
+ lr.add(er), this.errorContext.push(er);
55110
55371
  let tr = new Sn({
55111
55372
  reference: pr,
55112
55373
  namespace: this.namespace,
55113
55374
  indirections: [...this.indirections],
55114
55375
  options: this.getNestedVisitorOptions(er),
55115
55376
  refractCache: this.refractCache,
55116
- ancestors: cr
55377
+ ancestors: cr,
55378
+ errorContext: this.errorContext,
55379
+ errorPropagationCache: this.errorPropagationCache,
55380
+ pendingPropagations: this.pendingPropagations
55117
55381
  });
55118
55382
  try {
55119
55383
  gr = await visitAsync$11(gr, tr, {
@@ -55121,10 +55385,16 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55121
55385
  nodeTypeGetter: getNodeType$4
55122
55386
  });
55123
55387
  } catch (Sn) {
55124
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55388
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55389
+ directAncestors: lr,
55390
+ isExternalReference: fr
55391
+ });
55125
55392
  }
55126
- lr.delete(er);
55127
- }
55393
+ lr.delete(er), this.popErrorContext(er);
55394
+ } else (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError && this.pendingPropagations.push({
55395
+ referencingElement: er,
55396
+ referencedElement: gr
55397
+ });
55128
55398
  if (this.indirections.pop(), isPathItemElement$1(gr)) {
55129
55399
  let Sn = new PathItem$1([...gr.content], cloneDeep(gr.meta), cloneDeep(gr.attributes));
55130
55400
  Sn.setMetaProperty("id", identityManager$5.generateId()), er.forEach((er, tr, nr) => {
@@ -55142,7 +55412,10 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55142
55412
  try {
55143
55413
  pr = await this.toReference(serializer$2(er.$ref));
55144
55414
  } catch (Sn) {
55145
- return this.handleDereferenceError(Sn, er);
55415
+ return this.handleDereferenceError(Sn, er, {
55416
+ directAncestors: lr,
55417
+ isExternalReference: fr
55418
+ });
55146
55419
  }
55147
55420
  let mr = resolve$1(ur, serializer$2(er.$ref));
55148
55421
  this.indirections.push(er);
@@ -55150,7 +55423,10 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55150
55423
  try {
55151
55424
  gr = evaluate$6(pr.value.result, hr);
55152
55425
  } catch (Sn) {
55153
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55426
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55427
+ directAncestors: lr,
55428
+ isExternalReference: fr
55429
+ });
55154
55430
  }
55155
55431
  if (gr.id = identityManager$5.identify(gr), isPrimitiveElement(gr)) {
55156
55432
  let Sn = serializer$2(er.meta.get("referenced-element")), tr = `path-item-${serializer$2(identityManager$5.identify(gr))}`;
@@ -55158,16 +55434,25 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55158
55434
  }
55159
55435
  if (er === gr) {
55160
55436
  let Sn = new ApiDOMError("Recursive Reference Object detected");
55161
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55437
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55438
+ directAncestors: lr,
55439
+ isExternalReference: fr
55440
+ });
55162
55441
  }
55163
55442
  if (this.indirections.length > this.options.dereference.maxDepth) {
55164
55443
  let Sn = new MaximumDereferenceDepthError(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
55165
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55444
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55445
+ directAncestors: lr,
55446
+ isExternalReference: fr
55447
+ });
55166
55448
  }
55167
55449
  if (cr.includes(gr)) {
55168
55450
  if (pr.refSet.circular = !0, this.options.dereference.circular === "error") {
55169
55451
  let Sn = new ApiDOMError("Circular reference detected");
55170
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55452
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55453
+ directAncestors: lr,
55454
+ isExternalReference: fr
55455
+ });
55171
55456
  }
55172
55457
  if (this.options.dereference.circular === "replace") {
55173
55458
  var _r, vr;
@@ -55180,15 +55465,18 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55180
55465
  }
55181
55466
  }
55182
55467
  let yr = stripHash(pr.refSet.rootRef.uri) !== pr.uri, br = ["error", "replace"].includes(this.options.dereference.circular);
55183
- if ((fr || yr || isJSONReferenceElement(gr) || br || (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError) && !cr.includesCycle(gr)) {
55184
- lr.add(er);
55468
+ if ((fr || yr || isJSONReferenceElement(gr) || br) && !cr.includesCycle(gr)) {
55469
+ lr.add(er), this.errorContext.push(er);
55185
55470
  let tr = new Sn({
55186
55471
  reference: pr,
55187
55472
  namespace: this.namespace,
55188
55473
  indirections: [...this.indirections],
55189
55474
  options: this.getNestedVisitorOptions(er),
55190
55475
  refractCache: this.refractCache,
55191
- ancestors: cr
55476
+ ancestors: cr,
55477
+ errorContext: this.errorContext,
55478
+ errorPropagationCache: this.errorPropagationCache,
55479
+ pendingPropagations: this.pendingPropagations
55192
55480
  });
55193
55481
  try {
55194
55482
  gr = await visitAsync$11(gr, tr, {
@@ -55196,10 +55484,16 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55196
55484
  nodeTypeGetter: getNodeType$4
55197
55485
  });
55198
55486
  } catch (Sn) {
55199
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55487
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55488
+ directAncestors: lr,
55489
+ isExternalReference: fr
55490
+ });
55200
55491
  }
55201
- lr.delete(er);
55202
- }
55492
+ lr.delete(er), this.popErrorContext(er);
55493
+ } else (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError && this.pendingPropagations.push({
55494
+ referencingElement: er,
55495
+ referencedElement: gr
55496
+ });
55203
55497
  this.indirections.pop();
55204
55498
  let xr = cloneShallow(gr);
55205
55499
  return xr.setMetaProperty("id", identityManager$5.generateId()), xr.setMetaProperty("ref-fields", { $ref: serializer$2(er.$ref) }), xr.setMetaProperty("ref-origin", pr.uri), xr.setMetaProperty("ref-referencing-element-id", cloneDeep(identityManager$5.identify(er))), ar.replaceWith(xr, mutationReplacer$5), nr ? !1 : xr;
@@ -55247,17 +55541,62 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55247
55541
  options;
55248
55542
  ancestors;
55249
55543
  refractCache;
55250
- constructor({ reference: Sn, namespace: er, options: tr, indirections: nr = [], ancestors: rr = new AncestorLineage(), refractCache: ir = /* @__PURE__ */ new Map() }) {
55251
- this.indirections = nr, this.namespace = er, this.reference = Sn, this.options = tr, this.ancestors = new AncestorLineage(...rr), this.refractCache = ir;
55544
+ errorContext;
55545
+ errorPropagationCache = /* @__PURE__ */ new Map();
55546
+ pendingPropagations = [];
55547
+ constructor({ reference: Sn, namespace: er, options: tr, indirections: nr = [], ancestors: rr = new AncestorLineage(), refractCache: ir = /* @__PURE__ */ new Map(), errorContext: ar = [], errorPropagationCache: sr = /* @__PURE__ */ new Map(), pendingPropagations: cr = [] }) {
55548
+ this.indirections = nr, this.namespace = er, this.reference = Sn, this.options = tr, this.ancestors = new AncestorLineage(...rr), this.refractCache = ir, this.errorContext = ar, this.errorPropagationCache = sr, this.pendingPropagations = cr;
55549
+ }
55550
+ popErrorContext(Sn) {
55551
+ if (this.errorContext[this.errorContext.length - 1] === Sn) this.errorContext.pop();
55552
+ else for (let er = this.errorContext.length - 1; er >= 0; --er) if (this.errorContext[er] === Sn) {
55553
+ this.errorContext.splice(er, 1);
55554
+ break;
55555
+ }
55252
55556
  }
55253
- handleDereferenceError(Sn, er) {
55254
- var tr;
55255
- if ((tr = this.options.dereference.dereferenceOpts) != null && tr.continueOnError) {
55256
- var nr;
55257
- (nr = this.options.dereference.dereferenceOpts) == null || nr.errors.push({
55557
+ runPropagationPass() {
55558
+ let Sn = !1;
55559
+ return this.pendingPropagations.forEach(({ referencingElement: er, referencedElement: tr }) => {
55560
+ let nr = this.errorPropagationCache.get(tr);
55561
+ Array.isArray(nr) && nr.length > 0 && nr.forEach((tr) => {
55562
+ let nr = this.errorPropagationCache.get(er);
55563
+ if (!(nr != null && nr.includes(tr))) {
55564
+ var rr;
55565
+ (rr = this.options.dereference.dereferenceOpts) == null || rr.errors.push({
55566
+ error: tr,
55567
+ refEl: er
55568
+ }), nr ? nr.push(tr) : this.errorPropagationCache.set(er, [tr]), Sn = !0;
55569
+ }
55570
+ });
55571
+ }), Sn;
55572
+ }
55573
+ propagateErrors() {
55574
+ for (; this.runPropagationPass(););
55575
+ this.pendingPropagations.length = 0;
55576
+ }
55577
+ handleDereferenceError(Sn, er, tr) {
55578
+ var nr;
55579
+ if ((nr = this.options.dereference.dereferenceOpts) != null && nr.continueOnError) {
55580
+ var rr, ir, ar;
55581
+ let { directAncestors: nr, isExternalReference: cr = !1 } = tr ?? {}, lr = this.options.dereference.dereferenceOpts?.skipNestedExternal ?? !1, ur = cr && lr;
55582
+ if (nr && !ur) for (let er of nr) {
55583
+ let tr = this.errorPropagationCache.get(er);
55584
+ tr ? tr.push(Sn) : this.errorPropagationCache.set(er, [Sn]);
55585
+ }
55586
+ if ((ar = this.options.dereference.dereferenceOpts) == null || ar.errors.push({
55258
55587
  error: Sn,
55259
55588
  refEl: er
55260
- });
55589
+ }), !ur) {
55590
+ let tr = new Set(this.errorContext);
55591
+ tr.delete(er), this.popErrorContext(er);
55592
+ for (let er of tr) {
55593
+ var sr;
55594
+ (sr = this.options.dereference.dereferenceOpts) == null || sr.errors.push({
55595
+ error: Sn,
55596
+ refEl: er
55597
+ });
55598
+ }
55599
+ }
55261
55600
  return;
55262
55601
  }
55263
55602
  throw Sn;
@@ -55311,6 +55650,10 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55311
55650
  let er = new Set(Sn.filter(isElement));
55312
55651
  return [new AncestorLineage(...this.ancestors, er), er];
55313
55652
  }
55653
+ OpenApi3_0Element = { leave: (Sn, er, tr) => {
55654
+ var nr;
55655
+ if ((nr = this.options.dereference.dereferenceOpts) != null && nr.continueOnError) return this.propagateErrors(), tr ? void 0 : Sn;
55656
+ } };
55314
55657
  async ReferenceElement(er, tr, nr, rr, ir, ar) {
55315
55658
  var sr;
55316
55659
  if (this.indirections.includes(er)) return !1;
@@ -55320,7 +55663,10 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55320
55663
  try {
55321
55664
  pr = await this.toReference(serializer$2(er.$ref));
55322
55665
  } catch (Sn) {
55323
- return this.handleDereferenceError(Sn, er);
55666
+ return this.handleDereferenceError(Sn, er, {
55667
+ directAncestors: lr,
55668
+ isExternalReference: fr
55669
+ });
55324
55670
  }
55325
55671
  let mr = resolve$1(ur, serializer$2(er.$ref));
55326
55672
  this.indirections.push(er);
@@ -55328,7 +55674,10 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55328
55674
  try {
55329
55675
  gr = evaluate$6(pr.value.result, hr);
55330
55676
  } catch (Sn) {
55331
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55677
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55678
+ directAncestors: lr,
55679
+ isExternalReference: fr
55680
+ });
55332
55681
  }
55333
55682
  if (gr.id = identityManager$4.identify(gr), isPrimitiveElement(gr)) {
55334
55683
  let Sn = serializer$2(er.meta.get("referenced-element")), tr = `${Sn}-${serializer$2(identityManager$4.identify(gr))}`;
@@ -55336,16 +55685,25 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55336
55685
  }
55337
55686
  if (er === gr) {
55338
55687
  let Sn = new ApiDOMError("Recursive Reference Object detected");
55339
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55688
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55689
+ directAncestors: lr,
55690
+ isExternalReference: fr
55691
+ });
55340
55692
  }
55341
55693
  if (this.indirections.length > this.options.dereference.maxDepth) {
55342
55694
  let Sn = new MaximumDereferenceDepthError(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
55343
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55695
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55696
+ directAncestors: lr,
55697
+ isExternalReference: fr
55698
+ });
55344
55699
  }
55345
55700
  if (cr.includes(gr)) {
55346
55701
  if (pr.refSet.circular = !0, this.options.dereference.circular === "error") {
55347
55702
  let Sn = new ApiDOMError("Circular reference detected");
55348
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55703
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55704
+ directAncestors: lr,
55705
+ isExternalReference: fr
55706
+ });
55349
55707
  }
55350
55708
  if (this.options.dereference.circular === "replace") {
55351
55709
  var _r, vr;
@@ -55358,15 +55716,18 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55358
55716
  }
55359
55717
  }
55360
55718
  let yr = stripHash(pr.refSet.rootRef.uri) !== pr.uri, br = ["error", "replace"].includes(this.options.dereference.circular);
55361
- if ((fr || yr || isReferenceElement$7(gr) || br || (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError) && !cr.includesCycle(gr)) {
55362
- lr.add(er);
55719
+ if ((fr || yr || isReferenceElement$7(gr) || br) && !cr.includesCycle(gr)) {
55720
+ lr.add(er), this.errorContext.push(er);
55363
55721
  let tr = new Sn({
55364
55722
  reference: pr,
55365
55723
  namespace: this.namespace,
55366
55724
  indirections: [...this.indirections],
55367
55725
  options: this.getNestedVisitorOptions(er),
55368
55726
  refractCache: this.refractCache,
55369
- ancestors: cr
55727
+ ancestors: cr,
55728
+ errorContext: this.errorContext,
55729
+ errorPropagationCache: this.errorPropagationCache,
55730
+ pendingPropagations: this.pendingPropagations
55370
55731
  });
55371
55732
  try {
55372
55733
  gr = await visitAsync$9(gr, tr, {
@@ -55374,10 +55735,16 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55374
55735
  nodeTypeGetter: getNodeType$8
55375
55736
  });
55376
55737
  } catch (Sn) {
55377
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55738
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55739
+ directAncestors: lr,
55740
+ isExternalReference: fr
55741
+ });
55378
55742
  }
55379
- lr.delete(er);
55380
- }
55743
+ lr.delete(er), this.popErrorContext(er);
55744
+ } else (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError && this.pendingPropagations.push({
55745
+ referencingElement: er,
55746
+ referencedElement: gr
55747
+ });
55381
55748
  this.indirections.pop();
55382
55749
  let xr = cloneShallow(gr);
55383
55750
  return xr.setMetaProperty("id", identityManager$4.generateId()), xr.setMetaProperty("ref-fields", { $ref: serializer$2(er.$ref) }), xr.setMetaProperty("ref-origin", pr.uri), xr.setMetaProperty("ref-referencing-element-id", cloneDeep(identityManager$4.identify(er))), ar.replaceWith(xr, mutationReplacer$4), nr ? !1 : xr;
@@ -55392,7 +55759,10 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55392
55759
  try {
55393
55760
  pr = await this.toReference(serializer$2(er.$ref));
55394
55761
  } catch (Sn) {
55395
- return this.handleDereferenceError(Sn, er);
55762
+ return this.handleDereferenceError(Sn, er, {
55763
+ directAncestors: lr,
55764
+ isExternalReference: fr
55765
+ });
55396
55766
  }
55397
55767
  let mr = resolve$1(ur, serializer$2(er.$ref));
55398
55768
  this.indirections.push(er);
@@ -55400,7 +55770,10 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55400
55770
  try {
55401
55771
  gr = evaluate$6(pr.value.result, hr);
55402
55772
  } catch (Sn) {
55403
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55773
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55774
+ directAncestors: lr,
55775
+ isExternalReference: fr
55776
+ });
55404
55777
  }
55405
55778
  if (gr.id = identityManager$4.identify(gr), !isPathItemElement$3(gr)) {
55406
55779
  let Sn = `path-item-${serializer$2(identityManager$4.identify(gr))}`;
@@ -55408,16 +55781,25 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55408
55781
  }
55409
55782
  if (er === gr) {
55410
55783
  let Sn = new ApiDOMError("Recursive Path Item Object reference detected");
55411
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55784
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55785
+ directAncestors: lr,
55786
+ isExternalReference: fr
55787
+ });
55412
55788
  }
55413
55789
  if (this.indirections.length > this.options.dereference.maxDepth) {
55414
55790
  let Sn = new MaximumDereferenceDepthError(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
55415
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55791
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55792
+ directAncestors: lr,
55793
+ isExternalReference: fr
55794
+ });
55416
55795
  }
55417
55796
  if (cr.includes(gr)) {
55418
55797
  if (pr.refSet.circular = !0, this.options.dereference.circular === "error") {
55419
55798
  let Sn = new ApiDOMError("Circular reference detected");
55420
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55799
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55800
+ directAncestors: lr,
55801
+ isExternalReference: fr
55802
+ });
55421
55803
  }
55422
55804
  if (this.options.dereference.circular === "replace") {
55423
55805
  var _r, vr;
@@ -55430,15 +55812,18 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55430
55812
  }
55431
55813
  }
55432
55814
  let yr = stripHash(pr.refSet.rootRef.uri) !== pr.uri, br = ["error", "replace"].includes(this.options.dereference.circular);
55433
- if ((fr || yr || isPathItemElement$3(gr) && isStringElement(gr.$ref) || br || (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError) && !cr.includesCycle(gr)) {
55434
- lr.add(er);
55815
+ if ((fr || yr || isPathItemElement$3(gr) && isStringElement(gr.$ref) || br) && !cr.includesCycle(gr)) {
55816
+ lr.add(er), this.errorContext.push(er);
55435
55817
  let tr = new Sn({
55436
55818
  reference: pr,
55437
55819
  namespace: this.namespace,
55438
55820
  indirections: [...this.indirections],
55439
55821
  options: this.getNestedVisitorOptions(er),
55440
55822
  refractCache: this.refractCache,
55441
- ancestors: cr
55823
+ ancestors: cr,
55824
+ errorContext: this.errorContext,
55825
+ errorPropagationCache: this.errorPropagationCache,
55826
+ pendingPropagations: this.pendingPropagations
55442
55827
  });
55443
55828
  try {
55444
55829
  gr = await visitAsync$9(gr, tr, {
@@ -55446,10 +55831,16 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55446
55831
  nodeTypeGetter: getNodeType$8
55447
55832
  });
55448
55833
  } catch (Sn) {
55449
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
55834
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
55835
+ directAncestors: lr,
55836
+ isExternalReference: fr
55837
+ });
55450
55838
  }
55451
- lr.delete(er);
55452
- }
55839
+ lr.delete(er), this.popErrorContext(er);
55840
+ } else (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError && this.pendingPropagations.push({
55841
+ referencingElement: er,
55842
+ referencedElement: gr
55843
+ });
55453
55844
  if (this.indirections.pop(), isPathItemElement$3(gr)) {
55454
55845
  let Sn = new PathItem$3([...gr.content], cloneDeep(gr.meta), cloneDeep(gr.attributes));
55455
55846
  Sn.setMetaProperty("id", identityManager$4.generateId()), er.forEach((er, tr, nr) => {
@@ -55473,7 +55864,7 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55473
55864
  try {
55474
55865
  lr = await this.toReference(serializer$2(Sn.operationRef)), ar = evaluate$6(lr.value.result, er);
55475
55866
  } catch (er) {
55476
- return this.handleDereferenceError(er, Sn);
55867
+ return this.handleDereferenceError(er, Sn, { isExternalReference: cr });
55477
55868
  }
55478
55869
  if (isPrimitiveElement(ar)) {
55479
55870
  let Sn = `operation-${serializer$2(identityManager$4.identify(ar))}`;
@@ -55511,7 +55902,7 @@ var visitAsync$13 = visit$1[Symbol.for("nodejs.util.promisify.custom")], ApiDOMD
55511
55902
  try {
55512
55903
  lr = await this.toReference(serializer$2(Sn.externalValue));
55513
55904
  } catch (er) {
55514
- return this.handleDereferenceError(er, Sn);
55905
+ return this.handleDereferenceError(er, Sn, { isExternalReference: cr });
55515
55906
  }
55516
55907
  let ur = cloneShallow(lr.value.result);
55517
55908
  ur.setMetaProperty("ref-origin", lr.uri);
@@ -55598,27 +55989,72 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55598
55989
  ancestors;
55599
55990
  refractCache;
55600
55991
  allOfDiscriminatorMapping;
55601
- constructor({ reference: Sn, namespace: er, options: tr, indirections: nr = [], ancestors: rr = new AncestorLineage(), refractCache: ir = /* @__PURE__ */ new Map(), allOfDiscriminatorMapping: ar = /* @__PURE__ */ new Map() }) {
55602
- this.indirections = nr, this.namespace = er, this.reference = Sn, this.options = tr, this.ancestors = new AncestorLineage(...rr), this.refractCache = ir, this.allOfDiscriminatorMapping = ar;
55992
+ errorContext;
55993
+ errorPropagationCache = /* @__PURE__ */ new Map();
55994
+ pendingPropagations = [];
55995
+ constructor({ reference: Sn, namespace: er, options: tr, indirections: nr = [], ancestors: rr = new AncestorLineage(), refractCache: ir = /* @__PURE__ */ new Map(), allOfDiscriminatorMapping: ar = /* @__PURE__ */ new Map(), errorContext: sr = [], errorPropagationCache: cr = /* @__PURE__ */ new Map(), pendingPropagations: lr = [] }) {
55996
+ this.indirections = nr, this.namespace = er, this.reference = Sn, this.options = tr, this.ancestors = new AncestorLineage(...rr), this.refractCache = ir, this.allOfDiscriminatorMapping = ar, this.errorContext = sr, this.errorPropagationCache = cr, this.pendingPropagations = lr;
55997
+ }
55998
+ popErrorContext(Sn) {
55999
+ if (this.errorContext[this.errorContext.length - 1] === Sn) this.errorContext.pop();
56000
+ else for (let er = this.errorContext.length - 1; er >= 0; --er) if (this.errorContext[er] === Sn) {
56001
+ this.errorContext.splice(er, 1);
56002
+ break;
56003
+ }
56004
+ }
56005
+ runPropagationPass() {
56006
+ let Sn = !1;
56007
+ return this.pendingPropagations.forEach(({ referencingElement: er, referencedElement: tr }) => {
56008
+ let nr = this.errorPropagationCache.get(tr);
56009
+ Array.isArray(nr) && nr.length > 0 && nr.forEach((tr) => {
56010
+ let nr = this.errorPropagationCache.get(er);
56011
+ if (!(nr != null && nr.includes(tr))) {
56012
+ var rr;
56013
+ (rr = this.options.dereference.dereferenceOpts) == null || rr.errors.push({
56014
+ error: tr,
56015
+ refEl: er
56016
+ }), nr ? nr.push(tr) : this.errorPropagationCache.set(er, [tr]), Sn = !0;
56017
+ }
56018
+ });
56019
+ }), Sn;
56020
+ }
56021
+ propagateErrors() {
56022
+ for (; this.runPropagationPass(););
56023
+ this.pendingPropagations.length = 0;
55603
56024
  }
55604
56025
  handleDereferenceError(Sn, er, tr) {
55605
56026
  var nr;
55606
56027
  if ((nr = this.options.dereference.dereferenceOpts) != null && nr.continueOnError) {
55607
- var rr;
55608
- if (tr) {
55609
- let er = [...tr].find((Sn) => isObjectElement(Sn) && Sn.getMetaProperty("ref-referencing-element"));
56028
+ var rr, ir, ar;
56029
+ let { directAncestors: nr, isExternalReference: lr = !1 } = tr ?? {}, ur = this.options.dereference.dereferenceOpts?.skipNestedExternal ?? !1, dr = lr && ur;
56030
+ if (nr && !dr) {
56031
+ for (let er of nr) {
56032
+ let tr = this.errorPropagationCache.get(er);
56033
+ tr ? tr.push(Sn) : this.errorPropagationCache.set(er, [Sn]);
56034
+ }
56035
+ let er = [...nr].find((Sn) => isObjectElement(Sn) && Sn.getMetaProperty("ref-referencing-element"));
55610
56036
  if (er) {
55611
- var ir;
55612
- (ir = this.options.dereference.dereferenceOpts) == null || ir.errors.push({
56037
+ var sr;
56038
+ (sr = this.options.dereference.dereferenceOpts) == null || sr.errors.push({
55613
56039
  error: Sn,
55614
56040
  refEl: er.getMetaProperty("ref-referencing-element")
55615
56041
  });
55616
56042
  }
55617
56043
  }
55618
- (rr = this.options.dereference.dereferenceOpts) == null || rr.errors.push({
56044
+ if ((ar = this.options.dereference.dereferenceOpts) == null || ar.errors.push({
55619
56045
  error: Sn,
55620
56046
  refEl: er
55621
- });
56047
+ }), !dr) {
56048
+ let tr = new Set(this.errorContext);
56049
+ tr.delete(er), this.popErrorContext(er);
56050
+ for (let er of tr) {
56051
+ var cr;
56052
+ (cr = this.options.dereference.dereferenceOpts) == null || cr.errors.push({
56053
+ error: Sn,
56054
+ refEl: er
56055
+ });
56056
+ }
56057
+ }
55622
56058
  return;
55623
56059
  }
55624
56060
  throw Sn;
@@ -55673,10 +56109,10 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55673
56109
  return [new AncestorLineage(...this.ancestors, er), er];
55674
56110
  }
55675
56111
  OpenApi3_1Element = { leave: (Sn, er, tr, nr, rr, ir) => {
55676
- var ar;
55677
- if (!((ar = this.options.dereference.strategyOpts["openapi-3-1"]) != null && ar.dereferenceDiscriminatorMapping)) return;
55678
- let sr = cloneShallow(Sn);
55679
- return sr.setMetaProperty("allOfDiscriminatorMapping", Object.fromEntries(this.allOfDiscriminatorMapping)), ir.replaceWith(sr, mutationReplacer$3), tr ? void 0 : sr;
56112
+ var ar, sr;
56113
+ if ((ar = this.options.dereference.dereferenceOpts) != null && ar.continueOnError && this.propagateErrors(), !((sr = this.options.dereference.strategyOpts["openapi-3-1"]) != null && sr.dereferenceDiscriminatorMapping)) return;
56114
+ let cr = cloneShallow(Sn);
56115
+ return cr.setMetaProperty("allOfDiscriminatorMapping", Object.fromEntries(this.allOfDiscriminatorMapping)), ir.replaceWith(cr, mutationReplacer$3), tr ? void 0 : cr;
55680
56116
  } };
55681
56117
  async ReferenceElement(er, tr, nr, rr, ir, ar) {
55682
56118
  var sr, cr;
@@ -55687,7 +56123,10 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55687
56123
  try {
55688
56124
  mr = await this.toReference(serializer$2(er.$ref));
55689
56125
  } catch (Sn) {
55690
- return this.handleDereferenceError(Sn, er, ur);
56126
+ return this.handleDereferenceError(Sn, er, {
56127
+ directAncestors: ur,
56128
+ isExternalReference: pr
56129
+ });
55691
56130
  }
55692
56131
  let hr = resolve$1(dr, serializer$2(er.$ref));
55693
56132
  this.indirections.push(er);
@@ -55695,7 +56134,10 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55695
56134
  try {
55696
56135
  _r = evaluate$6(mr.value.result, gr);
55697
56136
  } catch (Sn) {
55698
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, ur);
56137
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56138
+ directAncestors: ur,
56139
+ isExternalReference: pr
56140
+ });
55699
56141
  }
55700
56142
  if (_r.id = identityManager$3.identify(_r), isPrimitiveElement(_r)) {
55701
56143
  let Sn = serializer$2(er.meta.get("referenced-element")), tr = `${Sn}-${serializer$2(identityManager$3.identify(_r))}`;
@@ -55703,16 +56145,25 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55703
56145
  }
55704
56146
  if (er === _r) {
55705
56147
  let Sn = new ApiDOMError("Recursive Reference Object detected");
55706
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, ur);
56148
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56149
+ directAncestors: ur,
56150
+ isExternalReference: pr
56151
+ });
55707
56152
  }
55708
56153
  if (this.indirections.length > this.options.dereference.maxDepth) {
55709
56154
  let Sn = new MaximumDereferenceDepthError(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
55710
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, ur);
56155
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56156
+ directAncestors: ur,
56157
+ isExternalReference: pr
56158
+ });
55711
56159
  }
55712
56160
  if (lr.includes(_r)) {
55713
56161
  if (mr.refSet.circular = !0, this.options.dereference.circular === "error") {
55714
56162
  let Sn = new ApiDOMError("Circular reference detected");
55715
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, ur);
56163
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56164
+ directAncestors: ur,
56165
+ isExternalReference: pr
56166
+ });
55716
56167
  }
55717
56168
  if (this.options.dereference.circular === "replace") {
55718
56169
  var vr, yr;
@@ -55725,8 +56176,8 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55725
56176
  }
55726
56177
  }
55727
56178
  let br = stripHash(mr.refSet.rootRef.uri) !== mr.uri, xr = ["error", "replace"].includes(this.options.dereference.circular);
55728
- if ((pr || br || isReferenceElement$6(_r) || xr || (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError) && !lr.includesCycle(_r)) {
55729
- ur.add(er);
56179
+ if ((pr || br || isReferenceElement$6(_r) || xr) && !lr.includesCycle(_r)) {
56180
+ ur.add(er), this.errorContext.push(er);
55730
56181
  let tr = new Sn({
55731
56182
  reference: mr,
55732
56183
  namespace: this.namespace,
@@ -55734,7 +56185,10 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55734
56185
  options: this.getNestedVisitorOptions(er),
55735
56186
  refractCache: this.refractCache,
55736
56187
  ancestors: lr,
55737
- allOfDiscriminatorMapping: this.allOfDiscriminatorMapping
56188
+ allOfDiscriminatorMapping: this.allOfDiscriminatorMapping,
56189
+ errorContext: this.errorContext,
56190
+ errorPropagationCache: this.errorPropagationCache,
56191
+ pendingPropagations: this.pendingPropagations
55738
56192
  });
55739
56193
  try {
55740
56194
  _r = await visitAsync$7(_r, tr, {
@@ -55742,11 +56196,17 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55742
56196
  nodeTypeGetter: getNodeType$7
55743
56197
  });
55744
56198
  } catch (Sn) {
55745
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, ur);
56199
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56200
+ directAncestors: ur,
56201
+ isExternalReference: pr
56202
+ });
55746
56203
  }
55747
- ur.delete(er);
56204
+ ur.delete(er), this.popErrorContext(er);
55748
56205
  }
55749
- this.indirections.pop();
56206
+ (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError && this.pendingPropagations.push({
56207
+ referencingElement: er,
56208
+ referencedElement: _r
56209
+ }), this.indirections.pop();
55750
56210
  let Sr = cloneShallow(_r);
55751
56211
  return Sr.setMetaProperty("id", identityManager$3.generateId()), Sr.setMetaProperty("ref-fields", {
55752
56212
  $ref: serializer$2(er.$ref),
@@ -55764,7 +56224,10 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55764
56224
  try {
55765
56225
  pr = await this.toReference(serializer$2(er.$ref));
55766
56226
  } catch (Sn) {
55767
- return this.handleDereferenceError(Sn, er, lr);
56227
+ return this.handleDereferenceError(Sn, er, {
56228
+ directAncestors: lr,
56229
+ isExternalReference: fr
56230
+ });
55768
56231
  }
55769
56232
  let mr = resolve$1(ur, serializer$2(er.$ref));
55770
56233
  this.indirections.push(er);
@@ -55772,7 +56235,10 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55772
56235
  try {
55773
56236
  gr = evaluate$6(pr.value.result, hr);
55774
56237
  } catch (Sn) {
55775
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56238
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56239
+ directAncestors: lr,
56240
+ isExternalReference: fr
56241
+ });
55776
56242
  }
55777
56243
  if (gr.id = identityManager$3.identify(gr), isPrimitiveElement(gr)) {
55778
56244
  let Sn = `path-item-${serializer$2(identityManager$3.identify(gr))}`;
@@ -55780,16 +56246,25 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55780
56246
  }
55781
56247
  if (er === gr) {
55782
56248
  let Sn = new ApiDOMError("Recursive Path Item Object reference detected");
55783
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56249
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56250
+ directAncestors: lr,
56251
+ isExternalReference: fr
56252
+ });
55784
56253
  }
55785
56254
  if (this.indirections.length > this.options.dereference.maxDepth) {
55786
56255
  let Sn = new MaximumDereferenceDepthError(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
55787
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56256
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56257
+ directAncestors: lr,
56258
+ isExternalReference: fr
56259
+ });
55788
56260
  }
55789
56261
  if (cr.includes(gr)) {
55790
56262
  if (pr.refSet.circular = !0, this.options.dereference.circular === "error") {
55791
56263
  let Sn = new ApiDOMError("Circular reference detected");
55792
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56264
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56265
+ directAncestors: lr,
56266
+ isExternalReference: fr
56267
+ });
55793
56268
  }
55794
56269
  if (this.options.dereference.circular === "replace") {
55795
56270
  var _r, vr;
@@ -55802,8 +56277,8 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55802
56277
  }
55803
56278
  }
55804
56279
  let yr = stripHash(pr.refSet.rootRef.uri) !== pr.uri, br = ["error", "replace"].includes(this.options.dereference.circular);
55805
- if ((fr || yr || isPathItemElement$2(gr) && isStringElement(gr.$ref) || br || (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError) && !cr.includesCycle(gr)) {
55806
- lr.add(er);
56280
+ if ((fr || yr || isPathItemElement$2(gr) && isStringElement(gr.$ref) || br) && !cr.includesCycle(gr)) {
56281
+ lr.add(er), this.errorContext.push(er);
55807
56282
  let tr = new Sn({
55808
56283
  reference: pr,
55809
56284
  namespace: this.namespace,
@@ -55811,7 +56286,10 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55811
56286
  options: this.getNestedVisitorOptions(er),
55812
56287
  refractCache: this.refractCache,
55813
56288
  ancestors: cr,
55814
- allOfDiscriminatorMapping: this.allOfDiscriminatorMapping
56289
+ allOfDiscriminatorMapping: this.allOfDiscriminatorMapping,
56290
+ errorContext: this.errorContext,
56291
+ errorPropagationCache: this.errorPropagationCache,
56292
+ pendingPropagations: this.pendingPropagations
55815
56293
  });
55816
56294
  try {
55817
56295
  gr = await visitAsync$7(gr, tr, {
@@ -55819,11 +56297,17 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55819
56297
  nodeTypeGetter: getNodeType$7
55820
56298
  });
55821
56299
  } catch (Sn) {
55822
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56300
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56301
+ directAncestors: lr,
56302
+ isExternalReference: fr
56303
+ });
55823
56304
  }
55824
- lr.delete(er);
56305
+ lr.delete(er), this.popErrorContext(er);
55825
56306
  }
55826
- if (this.indirections.pop(), isPathItemElement$2(gr)) {
56307
+ if ((sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError && this.pendingPropagations.push({
56308
+ referencingElement: er,
56309
+ referencedElement: gr
56310
+ }), this.indirections.pop(), isPathItemElement$2(gr)) {
55827
56311
  var xr;
55828
56312
  let Sn = new PathItem$2([...gr.content], cloneDeep(gr.meta), cloneDeep(gr.attributes));
55829
56313
  Sn.setMetaProperty("id", identityManager$3.generateId()), er.forEach((er, tr, nr) => {
@@ -55847,7 +56331,7 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55847
56331
  try {
55848
56332
  lr = await this.toReference(serializer$2(Sn.operationRef)), ar = evaluate$6(lr.value.result, er);
55849
56333
  } catch (er) {
55850
- return this.handleDereferenceError(er, Sn);
56334
+ return this.handleDereferenceError(er, Sn, { isExternalReference: cr });
55851
56335
  }
55852
56336
  if (isPrimitiveElement(ar)) {
55853
56337
  let Sn = `operation-${serializer$2(identityManager$3.identify(ar))}`;
@@ -55885,7 +56369,7 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55885
56369
  try {
55886
56370
  lr = await this.toReference(serializer$2(Sn.externalValue));
55887
56371
  } catch (er) {
55888
- return this.handleDereferenceError(er, Sn);
56372
+ return this.handleDereferenceError(er, Sn, { isExternalReference: cr });
55889
56373
  }
55890
56374
  let ur = cloneShallow(lr.value.result);
55891
56375
  ur.setMetaProperty("ref-origin", lr.uri);
@@ -55898,28 +56382,32 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55898
56382
  if (!isObjectElement(cr) || !cr.classes.contains("discriminator-mapping")) return;
55899
56383
  if (!((sr = this.options.dereference.strategyOpts["openapi-3-1"]) != null && sr.dereferenceDiscriminatorMapping) || !isStringElement(er.key) || !isStringElement(er.value) || this.indirections.includes(er)) return !1;
55900
56384
  this.indirections.push(er);
55901
- let [lr, ur] = this.toAncestorLineage([...ir, nr]), dr = cloneDeep([...ur].findLast(isSchemaElement$4).getMetaProperty("ancestorsSchemaIdentifiers")), fr = serializer$2(er.value), pr = new Schema$4({ $ref: /^[a-zA-Z0-9\\.\\-_]+$/.test(fr) ? `#/components/schemas/${fr}` : fr });
55902
- pr.setMetaProperty("ancestorsSchemaIdentifiers", dr), ur.add(pr);
55903
- let mr = new Sn({
56385
+ let [lr, ur] = this.toAncestorLineage([...ir, nr]), dr = cloneDeep([...ur].findLast(isSchemaElement$4).getMetaProperty("ancestorsSchemaIdentifiers")), fr = serializer$2(er.value), pr = /^[a-zA-Z0-9\\.\\-_]+$/.test(fr) ? `#/components/schemas/${fr}` : fr, mr = new Schema$4({ $ref: pr });
56386
+ mr.setMetaProperty("ancestorsSchemaIdentifiers", dr), ur.add(mr);
56387
+ let hr = new Sn({
55904
56388
  reference: this.reference,
55905
56389
  namespace: this.namespace,
55906
56390
  indirections: [...this.indirections],
55907
- options: this.getNestedVisitorOptions(pr),
56391
+ options: this.getNestedVisitorOptions(mr),
55908
56392
  refractCache: this.refractCache,
55909
56393
  ancestors: lr,
55910
56394
  allOfDiscriminatorMapping: this.allOfDiscriminatorMapping
55911
- }), hr;
56395
+ }), gr;
55912
56396
  try {
55913
- hr = await visitAsync$7(pr, mr, {
56397
+ gr = await visitAsync$7(mr, hr, {
55914
56398
  keyMap: keyMap$8,
55915
56399
  nodeTypeGetter: getNodeType$7
55916
56400
  });
55917
56401
  } catch (Sn) {
55918
- return this.handleDereferenceError(Sn, pr, ur);
56402
+ let er = !pr.startsWith("#");
56403
+ return this.handleDereferenceError(Sn, mr, {
56404
+ directAncestors: ur,
56405
+ isExternalReference: er
56406
+ });
55919
56407
  }
55920
- ur.delete(pr), this.indirections.pop();
55921
- let gr = cloneShallow(er);
55922
- return gr.value.setMetaProperty("ref-schema", hr), ar.replaceWith(gr, mutationReplacer$3), nr ? void 0 : gr;
56408
+ ur.delete(mr), this.indirections.pop();
56409
+ let _r = cloneShallow(er);
56410
+ return _r.value.setMetaProperty("ref-schema", gr), ar.replaceWith(_r, mutationReplacer$3), nr ? void 0 : _r;
55923
56411
  }
55924
56412
  async SchemaElement(er, tr, nr, rr, ir, ar) {
55925
56413
  var sr;
@@ -55929,7 +56417,7 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55929
56417
  try {
55930
56418
  ur = await this.toReference(unsanitize(this.reference.uri));
55931
56419
  } catch (Sn) {
55932
- return this.handleDereferenceError(Sn, er, lr);
56420
+ return this.handleDereferenceError(Sn, er, { directAncestors: lr });
55933
56421
  }
55934
56422
  let { uri: dr } = ur, fr = resolveSchema$refField$1(dr, er), pr = new File({ uri: stripHash(fr) }), mr = none((Sn) => Sn.canRead(pr), this.options.resolve.resolvers), hr = !mr, gr = stripHash(this.reference.uri) === fr, _r = !gr;
55935
56423
  this.indirections.push(er);
@@ -55949,13 +56437,19 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55949
56437
  try {
55950
56438
  ur = await this.toReference(unsanitize(fr));
55951
56439
  } catch (Sn) {
55952
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56440
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56441
+ directAncestors: lr,
56442
+ isExternalReference: _r
56443
+ });
55953
56444
  }
55954
56445
  let Sn = uriToAnchor$1(fr), tr = maybeRefractToSchemaElement$1(ur.value.result);
55955
56446
  try {
55956
56447
  vr = evaluate$3(Sn, tr);
55957
56448
  } catch (Sn) {
55958
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56449
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56450
+ directAncestors: lr,
56451
+ isExternalReference: _r
56452
+ });
55959
56453
  }
55960
56454
  vr = maybeRefractToSchemaElement$1(vr), vr.id = identityManager$3.identify(vr);
55961
56455
  } else {
@@ -55963,30 +56457,48 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55963
56457
  try {
55964
56458
  ur = await this.toReference(unsanitize(fr));
55965
56459
  } catch (Sn) {
55966
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56460
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56461
+ directAncestors: lr,
56462
+ isExternalReference: _r
56463
+ });
55967
56464
  }
55968
56465
  let Sn = fromURIReference(fr), tr = maybeRefractToSchemaElement$1(ur.value.result);
55969
56466
  try {
55970
56467
  vr = evaluate$6(tr, Sn);
55971
56468
  } catch (Sn) {
55972
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56469
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56470
+ directAncestors: lr,
56471
+ isExternalReference: _r
56472
+ });
55973
56473
  }
55974
56474
  vr = maybeRefractToSchemaElement$1(vr), vr.id = identityManager$3.identify(vr);
55975
56475
  }
55976
- else return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56476
+ else return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56477
+ directAncestors: lr,
56478
+ isExternalReference: _r
56479
+ });
55977
56480
  }
55978
56481
  if (er === vr) {
55979
56482
  let Sn = new ApiDOMError("Recursive Schema Object reference detected");
55980
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56483
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56484
+ directAncestors: lr,
56485
+ isExternalReference: _r
56486
+ });
55981
56487
  }
55982
56488
  if (this.indirections.length > this.options.dereference.maxDepth) {
55983
56489
  let Sn = new MaximumDereferenceDepthError(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
55984
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56490
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56491
+ directAncestors: lr,
56492
+ isExternalReference: _r
56493
+ });
55985
56494
  }
55986
56495
  if (cr.includes(vr)) {
55987
56496
  if (ur.refSet.circular = !0, this.options.dereference.circular === "error") {
55988
56497
  let Sn = new ApiDOMError("Circular reference detected");
55989
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56498
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56499
+ directAncestors: lr,
56500
+ isExternalReference: _r
56501
+ });
55990
56502
  }
55991
56503
  if (this.options.dereference.circular === "replace") {
55992
56504
  var yr, br;
@@ -55999,8 +56511,8 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
55999
56511
  }
56000
56512
  }
56001
56513
  let xr = stripHash(ur.refSet.rootRef.uri) !== ur.uri, Sr = ["error", "replace"].includes(this.options.dereference.circular);
56002
- if ((_r || xr || isSchemaElement$4(vr) && isStringElement(vr.$ref) || Sr || (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError) && !cr.includesCycle(vr)) {
56003
- lr.add(er);
56514
+ if ((_r || xr || isSchemaElement$4(vr) && isStringElement(vr.$ref) || Sr) && !cr.includesCycle(vr)) {
56515
+ lr.add(er), this.errorContext.push(er);
56004
56516
  let tr = new Sn({
56005
56517
  reference: ur,
56006
56518
  namespace: this.namespace,
@@ -56008,7 +56520,10 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56008
56520
  options: this.getNestedVisitorOptions(er),
56009
56521
  refractCache: this.refractCache,
56010
56522
  ancestors: cr,
56011
- allOfDiscriminatorMapping: this.allOfDiscriminatorMapping
56523
+ allOfDiscriminatorMapping: this.allOfDiscriminatorMapping,
56524
+ errorContext: this.errorContext,
56525
+ errorPropagationCache: this.errorPropagationCache,
56526
+ pendingPropagations: this.pendingPropagations
56012
56527
  });
56013
56528
  try {
56014
56529
  vr = await visitAsync$7(vr, tr, {
@@ -56016,11 +56531,17 @@ var visitAsync$7 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56016
56531
  nodeTypeGetter: getNodeType$7
56017
56532
  });
56018
56533
  } catch (Sn) {
56019
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56534
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56535
+ directAncestors: lr,
56536
+ isExternalReference: _r
56537
+ });
56020
56538
  }
56021
- lr.delete(er);
56539
+ lr.delete(er), this.popErrorContext(er);
56022
56540
  }
56023
- if (this.indirections.pop(), isBooleanJsonSchemaElement$2(vr)) {
56541
+ if ((sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError && this.pendingPropagations.push({
56542
+ referencingElement: er,
56543
+ referencedElement: vr
56544
+ }), this.indirections.pop(), isBooleanJsonSchemaElement$2(vr)) {
56024
56545
  let Sn = cloneDeep(vr);
56025
56546
  return Sn.setMetaProperty("id", identityManager$3.generateId()), Sn.setMetaProperty("ref-fields", {
56026
56547
  $ref: serializer$2(er.$ref),
@@ -56131,27 +56652,72 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56131
56652
  refractCache;
56132
56653
  allOfDiscriminatorMapping;
56133
56654
  $selfValue;
56134
- constructor({ reference: Sn, namespace: er, options: tr, indirections: nr = [], ancestors: rr = new AncestorLineage(), refractCache: ir = /* @__PURE__ */ new Map(), allOfDiscriminatorMapping: ar = /* @__PURE__ */ new Map(), $selfValue: sr = void 0 }) {
56135
- this.indirections = nr, this.namespace = er, this.reference = Sn, this.options = tr, this.ancestors = new AncestorLineage(...rr), this.refractCache = ir, this.allOfDiscriminatorMapping = ar, this.$selfValue = sr;
56655
+ errorContext;
56656
+ errorPropagationCache = /* @__PURE__ */ new Map();
56657
+ pendingPropagations = [];
56658
+ constructor({ reference: Sn, namespace: er, options: tr, indirections: nr = [], ancestors: rr = new AncestorLineage(), refractCache: ir = /* @__PURE__ */ new Map(), allOfDiscriminatorMapping: ar = /* @__PURE__ */ new Map(), $selfValue: sr = void 0, errorContext: cr = [], errorPropagationCache: lr = /* @__PURE__ */ new Map(), pendingPropagations: ur = [] }) {
56659
+ this.indirections = nr, this.namespace = er, this.reference = Sn, this.options = tr, this.ancestors = new AncestorLineage(...rr), this.refractCache = ir, this.allOfDiscriminatorMapping = ar, this.$selfValue = sr, this.errorContext = cr, this.errorPropagationCache = lr, this.pendingPropagations = ur;
56660
+ }
56661
+ popErrorContext(Sn) {
56662
+ if (this.errorContext[this.errorContext.length - 1] === Sn) this.errorContext.pop();
56663
+ else for (let er = this.errorContext.length - 1; er >= 0; --er) if (this.errorContext[er] === Sn) {
56664
+ this.errorContext.splice(er, 1);
56665
+ break;
56666
+ }
56667
+ }
56668
+ runPropagationPass() {
56669
+ let Sn = !1;
56670
+ return this.pendingPropagations.forEach(({ referencingElement: er, referencedElement: tr }) => {
56671
+ let nr = this.errorPropagationCache.get(tr);
56672
+ Array.isArray(nr) && nr.length > 0 && nr.forEach((tr) => {
56673
+ let nr = this.errorPropagationCache.get(er);
56674
+ if (!(nr != null && nr.includes(tr))) {
56675
+ var rr;
56676
+ (rr = this.options.dereference.dereferenceOpts) == null || rr.errors.push({
56677
+ error: tr,
56678
+ refEl: er
56679
+ }), nr ? nr.push(tr) : this.errorPropagationCache.set(er, [tr]), Sn = !0;
56680
+ }
56681
+ });
56682
+ }), Sn;
56683
+ }
56684
+ propagateErrors() {
56685
+ for (; this.runPropagationPass(););
56686
+ this.pendingPropagations.length = 0;
56136
56687
  }
56137
56688
  handleDereferenceError(Sn, er, tr) {
56138
56689
  var nr;
56139
56690
  if ((nr = this.options.dereference.dereferenceOpts) != null && nr.continueOnError) {
56140
- var rr;
56141
- if (tr) {
56142
- let er = [...tr].find((Sn) => isObjectElement(Sn) && Sn.getMetaProperty("ref-referencing-element"));
56691
+ var rr, ir, ar;
56692
+ let { directAncestors: nr, isExternalReference: lr = !1 } = tr ?? {}, ur = this.options.dereference.dereferenceOpts?.skipNestedExternal ?? !1, dr = lr && ur;
56693
+ if (nr && !dr) {
56694
+ for (let er of nr) {
56695
+ let tr = this.errorPropagationCache.get(er);
56696
+ tr ? tr.push(Sn) : this.errorPropagationCache.set(er, [Sn]);
56697
+ }
56698
+ let er = [...nr].find((Sn) => isObjectElement(Sn) && Sn.getMetaProperty("ref-referencing-element"));
56143
56699
  if (er) {
56144
- var ir;
56145
- (ir = this.options.dereference.dereferenceOpts) == null || ir.errors.push({
56700
+ var sr;
56701
+ (sr = this.options.dereference.dereferenceOpts) == null || sr.errors.push({
56146
56702
  error: Sn,
56147
56703
  refEl: er.getMetaProperty("ref-referencing-element")
56148
56704
  });
56149
56705
  }
56150
56706
  }
56151
- (rr = this.options.dereference.dereferenceOpts) == null || rr.errors.push({
56707
+ if ((ar = this.options.dereference.dereferenceOpts) == null || ar.errors.push({
56152
56708
  error: Sn,
56153
56709
  refEl: er
56154
- });
56710
+ }), !dr) {
56711
+ let tr = new Set(this.errorContext);
56712
+ tr.delete(er), this.popErrorContext(er);
56713
+ for (let er of tr) {
56714
+ var cr;
56715
+ (cr = this.options.dereference.dereferenceOpts) == null || cr.errors.push({
56716
+ error: Sn,
56717
+ refEl: er
56718
+ });
56719
+ }
56720
+ }
56155
56721
  return;
56156
56722
  }
56157
56723
  throw Sn;
@@ -56227,10 +56793,10 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56227
56793
  }
56228
56794
  },
56229
56795
  leave: (Sn, er, tr, nr, rr, ir) => {
56230
- var ar;
56231
- if (!((ar = this.options.dereference.strategyOpts["openapi-3-2"]) != null && ar.dereferenceDiscriminatorMapping)) return;
56232
- let sr = cloneShallow(Sn);
56233
- return sr.setMetaProperty("allOfDiscriminatorMapping", Object.fromEntries(this.allOfDiscriminatorMapping)), ir.replaceWith(sr, mutationReplacer$2), tr ? void 0 : sr;
56796
+ var ar, sr;
56797
+ if ((ar = this.options.dereference.dereferenceOpts) != null && ar.continueOnError && this.propagateErrors(), !((sr = this.options.dereference.strategyOpts["openapi-3-2"]) != null && sr.dereferenceDiscriminatorMapping)) return;
56798
+ let cr = cloneShallow(Sn);
56799
+ return cr.setMetaProperty("allOfDiscriminatorMapping", Object.fromEntries(this.allOfDiscriminatorMapping)), ir.replaceWith(cr, mutationReplacer$2), tr ? void 0 : cr;
56234
56800
  }
56235
56801
  };
56236
56802
  async ReferenceElement(er, tr, nr, rr, ir, ar) {
@@ -56242,7 +56808,10 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56242
56808
  try {
56243
56809
  hr = await this.toReference(serializer$2(er.$ref));
56244
56810
  } catch (Sn) {
56245
- return this.handleDereferenceError(Sn, er, ur);
56811
+ return this.handleDereferenceError(Sn, er, {
56812
+ directAncestors: ur,
56813
+ isExternalReference: mr
56814
+ });
56246
56815
  }
56247
56816
  let gr = resolve$1(fr, serializer$2(er.$ref));
56248
56817
  this.indirections.push(er);
@@ -56250,7 +56819,10 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56250
56819
  try {
56251
56820
  vr = evaluate$6(hr.value.result, _r);
56252
56821
  } catch (Sn) {
56253
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, ur);
56822
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56823
+ directAncestors: ur,
56824
+ isExternalReference: mr
56825
+ });
56254
56826
  }
56255
56827
  if (vr.id = identityManager$2.identify(vr), isPrimitiveElement(vr)) {
56256
56828
  let Sn = serializer$2(er.meta.get("referenced-element")), tr = `${Sn}-${serializer$2(identityManager$2.identify(vr))}`;
@@ -56258,16 +56830,25 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56258
56830
  }
56259
56831
  if (er === vr) {
56260
56832
  let Sn = new ApiDOMError("Recursive Reference Object detected");
56261
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, ur);
56833
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56834
+ directAncestors: ur,
56835
+ isExternalReference: mr
56836
+ });
56262
56837
  }
56263
56838
  if (this.indirections.length > this.options.dereference.maxDepth) {
56264
56839
  let Sn = new MaximumDereferenceDepthError(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
56265
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, ur);
56840
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56841
+ directAncestors: ur,
56842
+ isExternalReference: mr
56843
+ });
56266
56844
  }
56267
56845
  if (lr.includes(vr)) {
56268
56846
  if (hr.refSet.circular = !0, this.options.dereference.circular === "error") {
56269
56847
  let Sn = new ApiDOMError("Circular reference detected");
56270
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, ur);
56848
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56849
+ directAncestors: ur,
56850
+ isExternalReference: mr
56851
+ });
56271
56852
  }
56272
56853
  if (this.options.dereference.circular === "replace") {
56273
56854
  var yr, br;
@@ -56280,8 +56861,8 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56280
56861
  }
56281
56862
  }
56282
56863
  let xr = stripHash(hr.refSet.rootRef.uri) !== hr.uri, Sr = ["error", "replace"].includes(this.options.dereference.circular);
56283
- if ((mr || xr || isReferenceElement$4(vr) || Sr || (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError) && !lr.includesCycle(vr)) {
56284
- ur.add(er);
56864
+ if ((mr || xr || isReferenceElement$4(vr) || Sr) && !lr.includesCycle(vr)) {
56865
+ ur.add(er), this.errorContext.push(er);
56285
56866
  let tr = mr || xr ? this.extractSelfFromReference(hr) : this.$selfValue, nr = new Sn({
56286
56867
  reference: hr,
56287
56868
  namespace: this.namespace,
@@ -56290,7 +56871,10 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56290
56871
  refractCache: this.refractCache,
56291
56872
  ancestors: lr,
56292
56873
  allOfDiscriminatorMapping: this.allOfDiscriminatorMapping,
56293
- $selfValue: tr
56874
+ $selfValue: tr,
56875
+ errorContext: this.errorContext,
56876
+ errorPropagationCache: this.errorPropagationCache,
56877
+ pendingPropagations: this.pendingPropagations
56294
56878
  });
56295
56879
  try {
56296
56880
  vr = await visitAsync$5(vr, nr, {
@@ -56298,11 +56882,17 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56298
56882
  nodeTypeGetter: getNodeType$3
56299
56883
  });
56300
56884
  } catch (Sn) {
56301
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, ur);
56885
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56886
+ directAncestors: ur,
56887
+ isExternalReference: mr
56888
+ });
56302
56889
  }
56303
- ur.delete(er);
56890
+ ur.delete(er), this.popErrorContext(er);
56304
56891
  }
56305
- this.indirections.pop();
56892
+ (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError && this.pendingPropagations.push({
56893
+ referencingElement: er,
56894
+ referencedElement: vr
56895
+ }), this.indirections.pop();
56306
56896
  let Cr = cloneShallow(vr);
56307
56897
  Cr.setMetaProperty("id", identityManager$2.generateId()), Cr.setMetaProperty("ref-fields", {
56308
56898
  $ref: serializer$2(er.$ref),
@@ -56322,7 +56912,10 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56322
56912
  try {
56323
56913
  mr = await this.toReference(serializer$2(er.$ref));
56324
56914
  } catch (Sn) {
56325
- return this.handleDereferenceError(Sn, er, lr);
56915
+ return this.handleDereferenceError(Sn, er, {
56916
+ directAncestors: lr,
56917
+ isExternalReference: pr
56918
+ });
56326
56919
  }
56327
56920
  let hr = resolve$1(dr, serializer$2(er.$ref));
56328
56921
  this.indirections.push(er);
@@ -56330,7 +56923,10 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56330
56923
  try {
56331
56924
  _r = evaluate$6(mr.value.result, gr);
56332
56925
  } catch (Sn) {
56333
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56926
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56927
+ directAncestors: lr,
56928
+ isExternalReference: pr
56929
+ });
56334
56930
  }
56335
56931
  if (_r.id = identityManager$2.identify(_r), isPrimitiveElement(_r)) {
56336
56932
  let Sn = `path-item-${serializer$2(identityManager$2.identify(_r))}`;
@@ -56338,16 +56934,25 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56338
56934
  }
56339
56935
  if (er === _r) {
56340
56936
  let Sn = new ApiDOMError("Recursive Path Item Object reference detected");
56341
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56937
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56938
+ directAncestors: lr,
56939
+ isExternalReference: pr
56940
+ });
56342
56941
  }
56343
56942
  if (this.indirections.length > this.options.dereference.maxDepth) {
56344
56943
  let Sn = new MaximumDereferenceDepthError(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
56345
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56944
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56945
+ directAncestors: lr,
56946
+ isExternalReference: pr
56947
+ });
56346
56948
  }
56347
56949
  if (cr.includes(_r)) {
56348
56950
  if (mr.refSet.circular = !0, this.options.dereference.circular === "error") {
56349
56951
  let Sn = new ApiDOMError("Circular reference detected");
56350
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56952
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56953
+ directAncestors: lr,
56954
+ isExternalReference: pr
56955
+ });
56351
56956
  }
56352
56957
  if (this.options.dereference.circular === "replace") {
56353
56958
  var vr, yr;
@@ -56360,8 +56965,8 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56360
56965
  }
56361
56966
  }
56362
56967
  let br = stripHash(mr.refSet.rootRef.uri) !== mr.uri, xr = ["error", "replace"].includes(this.options.dereference.circular);
56363
- if ((pr || br || isPathItemElement(_r) && isStringElement(_r.$ref) || xr || (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError) && !cr.includesCycle(_r)) {
56364
- lr.add(er);
56968
+ if ((pr || br || isPathItemElement(_r) && isStringElement(_r.$ref) || xr) && !cr.includesCycle(_r)) {
56969
+ lr.add(er), this.errorContext.push(er);
56365
56970
  let tr = pr || br ? this.extractSelfFromReference(mr) : this.$selfValue, nr = new Sn({
56366
56971
  reference: mr,
56367
56972
  namespace: this.namespace,
@@ -56370,7 +56975,10 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56370
56975
  refractCache: this.refractCache,
56371
56976
  ancestors: cr,
56372
56977
  allOfDiscriminatorMapping: this.allOfDiscriminatorMapping,
56373
- $selfValue: tr
56978
+ $selfValue: tr,
56979
+ errorContext: this.errorContext,
56980
+ errorPropagationCache: this.errorPropagationCache,
56981
+ pendingPropagations: this.pendingPropagations
56374
56982
  });
56375
56983
  try {
56376
56984
  _r = await visitAsync$5(_r, nr, {
@@ -56378,11 +56986,17 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56378
56986
  nodeTypeGetter: getNodeType$3
56379
56987
  });
56380
56988
  } catch (Sn) {
56381
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
56989
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
56990
+ directAncestors: lr,
56991
+ isExternalReference: pr
56992
+ });
56382
56993
  }
56383
- lr.delete(er);
56994
+ lr.delete(er), this.popErrorContext(er);
56384
56995
  }
56385
- if (this.indirections.pop(), isPathItemElement(_r)) {
56996
+ if ((sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError && this.pendingPropagations.push({
56997
+ referencingElement: er,
56998
+ referencedElement: _r
56999
+ }), this.indirections.pop(), isPathItemElement(_r)) {
56386
57000
  var Sr;
56387
57001
  let Sn = new PathItem([..._r.content], cloneDeep(_r.meta), cloneDeep(_r.attributes));
56388
57002
  Sn.setMetaProperty("id", identityManager$2.generateId()), er.forEach((er, tr, nr) => {
@@ -56408,11 +57022,11 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56408
57022
  try {
56409
57023
  ur = await this.toReference(serializer$2(Sn.operationRef)), ar = evaluate$6(ur.value.result, nr);
56410
57024
  } catch (er) {
56411
- return this.handleDereferenceError(er, Sn);
57025
+ return this.handleDereferenceError(er, Sn, { isExternalReference: lr });
56412
57026
  }
56413
57027
  if (!ar) {
56414
57028
  let er = new ApiDOMError("OperationElement could not be resolved.");
56415
- return this.handleDereferenceError(er, Sn);
57029
+ return this.handleDereferenceError(er, Sn, { isExternalReference: lr });
56416
57030
  }
56417
57031
  let dr = ar;
56418
57032
  if (isPrimitiveElement(dr)) {
@@ -56453,7 +57067,7 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56453
57067
  try {
56454
57068
  ur = await this.toReference(serializer$2(Sn.externalValue));
56455
57069
  } catch (er) {
56456
- return this.handleDereferenceError(er, Sn);
57070
+ return this.handleDereferenceError(er, Sn, { isExternalReference: lr });
56457
57071
  }
56458
57072
  let dr = cloneShallow(ur.value.result), fr = lr ? this.extractSelfFromReference(ur) || ur.uri : this.$selfValue || ur.uri;
56459
57073
  dr.setMetaProperty("ref-origin", fr);
@@ -56466,29 +57080,33 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56466
57080
  if (!isObjectElement(cr) || !cr.classes.contains("discriminator-mapping")) return;
56467
57081
  if (!((sr = this.options.dereference.strategyOpts["openapi-3-2"]) != null && sr.dereferenceDiscriminatorMapping) || !isStringElement(er.key) || !isStringElement(er.value) || this.indirections.includes(er)) return !1;
56468
57082
  this.indirections.push(er);
56469
- let [lr, ur] = this.toAncestorLineage([...ir, nr]), dr = cloneDeep([...ur].findLast(isSchemaElement$2).getMetaProperty("ancestorsSchemaIdentifiers")), fr = serializer$2(er.value), pr = new Schema$2({ $ref: /^[a-zA-Z0-9\\.\\-_]+$/.test(fr) ? `#/components/schemas/${fr}` : fr });
56470
- pr.setMetaProperty("ancestorsSchemaIdentifiers", dr), ur.add(pr);
56471
- let mr = new Sn({
57083
+ let [lr, ur] = this.toAncestorLineage([...ir, nr]), dr = cloneDeep([...ur].findLast(isSchemaElement$2).getMetaProperty("ancestorsSchemaIdentifiers")), fr = serializer$2(er.value), pr = /^[a-zA-Z0-9\\.\\-_]+$/.test(fr) ? `#/components/schemas/${fr}` : fr, mr = new Schema$2({ $ref: pr });
57084
+ mr.setMetaProperty("ancestorsSchemaIdentifiers", dr), ur.add(mr);
57085
+ let hr = new Sn({
56472
57086
  reference: this.reference,
56473
57087
  namespace: this.namespace,
56474
57088
  indirections: [...this.indirections],
56475
- options: this.getNestedVisitorOptions(pr),
57089
+ options: this.getNestedVisitorOptions(mr),
56476
57090
  refractCache: this.refractCache,
56477
57091
  ancestors: lr,
56478
57092
  allOfDiscriminatorMapping: this.allOfDiscriminatorMapping,
56479
57093
  $selfValue: this.$selfValue
56480
- }), hr;
57094
+ }), gr;
56481
57095
  try {
56482
- hr = await visitAsync$5(pr, mr, {
57096
+ gr = await visitAsync$5(mr, hr, {
56483
57097
  keyMap: keyMap$3,
56484
57098
  nodeTypeGetter: getNodeType$3
56485
57099
  });
56486
57100
  } catch (Sn) {
56487
- return this.handleDereferenceError(Sn, pr, ur);
57101
+ let tr = !pr.startsWith("#");
57102
+ return this.handleDereferenceError(Sn, er, {
57103
+ directAncestors: ur,
57104
+ isExternalReference: tr
57105
+ });
56488
57106
  }
56489
- ur.delete(pr), this.indirections.pop();
56490
- let gr = cloneShallow(er);
56491
- return gr.value.setMetaProperty("ref-schema", hr), ar.replaceWith(gr, mutationReplacer$2), nr ? void 0 : gr;
57107
+ ur.delete(mr), this.indirections.pop();
57108
+ let _r = cloneShallow(er);
57109
+ return _r.value.setMetaProperty("ref-schema", gr), ar.replaceWith(_r, mutationReplacer$2), nr ? void 0 : _r;
56492
57110
  }
56493
57111
  async SchemaElement(er, tr, nr, rr, ir, ar) {
56494
57112
  var sr;
@@ -56498,7 +57116,7 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56498
57116
  try {
56499
57117
  ur = await this.toReference(unsanitize(this.reference.uri));
56500
57118
  } catch (Sn) {
56501
- return this.handleDereferenceError(Sn, er, lr);
57119
+ return this.handleDereferenceError(Sn, er, { directAncestors: lr });
56502
57120
  }
56503
57121
  let { uri: dr } = ur, fr = resolveSchema$refField(dr, er), pr = new File({ uri: stripHash(fr) }), mr = none((Sn) => Sn.canRead(pr), this.options.resolve.resolvers), hr = !mr, gr = stripHash(this.reference.uri) === fr, _r = !gr;
56504
57122
  this.indirections.push(er);
@@ -56518,13 +57136,19 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56518
57136
  try {
56519
57137
  ur = await this.toReference(unsanitize(fr));
56520
57138
  } catch (Sn) {
56521
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
57139
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57140
+ directAncestors: lr,
57141
+ isExternalReference: _r
57142
+ });
56522
57143
  }
56523
57144
  let Sn = uriToAnchor(fr), tr = maybeRefractToSchemaElement(ur.value.result);
56524
57145
  try {
56525
57146
  vr = evaluate$1(Sn, tr);
56526
57147
  } catch (Sn) {
56527
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
57148
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57149
+ directAncestors: lr,
57150
+ isExternalReference: _r
57151
+ });
56528
57152
  }
56529
57153
  vr = maybeRefractToSchemaElement(vr), vr.id = identityManager$2.identify(vr);
56530
57154
  } else {
@@ -56532,30 +57156,48 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56532
57156
  try {
56533
57157
  ur = await this.toReference(unsanitize(fr));
56534
57158
  } catch (Sn) {
56535
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
57159
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57160
+ directAncestors: lr,
57161
+ isExternalReference: _r
57162
+ });
56536
57163
  }
56537
57164
  let Sn = fromURIReference(fr), tr = maybeRefractToSchemaElement(ur.value.result);
56538
57165
  try {
56539
57166
  vr = evaluate$6(tr, Sn);
56540
57167
  } catch (Sn) {
56541
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
57168
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57169
+ directAncestors: lr,
57170
+ isExternalReference: _r
57171
+ });
56542
57172
  }
56543
57173
  vr = maybeRefractToSchemaElement(vr), vr.id = identityManager$2.identify(vr);
56544
57174
  }
56545
- else return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
57175
+ else return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57176
+ directAncestors: lr,
57177
+ isExternalReference: _r
57178
+ });
56546
57179
  }
56547
57180
  if (er === vr) {
56548
57181
  let Sn = new ApiDOMError("Recursive Schema Object reference detected");
56549
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
57182
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57183
+ directAncestors: lr,
57184
+ isExternalReference: _r
57185
+ });
56550
57186
  }
56551
57187
  if (this.indirections.length > this.options.dereference.maxDepth) {
56552
57188
  let Sn = new MaximumDereferenceDepthError(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
56553
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
57189
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57190
+ directAncestors: lr,
57191
+ isExternalReference: _r
57192
+ });
56554
57193
  }
56555
57194
  if (cr.includes(vr)) {
56556
57195
  if (ur.refSet.circular = !0, this.options.dereference.circular === "error") {
56557
57196
  let Sn = new ApiDOMError("Circular reference detected");
56558
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
57197
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57198
+ directAncestors: lr,
57199
+ isExternalReference: _r
57200
+ });
56559
57201
  }
56560
57202
  if (this.options.dereference.circular === "replace") {
56561
57203
  var yr, br;
@@ -56568,8 +57210,8 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56568
57210
  }
56569
57211
  }
56570
57212
  let xr = stripHash(ur.refSet.rootRef.uri) !== ur.uri, Sr = ["error", "replace"].includes(this.options.dereference.circular);
56571
- if ((_r || xr || isSchemaElement$2(vr) && isStringElement(vr.$ref) || Sr || (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError) && !cr.includesCycle(vr)) {
56572
- lr.add(er);
57213
+ if ((_r || xr || isSchemaElement$2(vr) && isStringElement(vr.$ref) || Sr) && !cr.includesCycle(vr)) {
57214
+ lr.add(er), this.errorContext.push(er);
56573
57215
  let tr = _r || xr ? this.extractSelfFromReference(ur) : this.$selfValue, nr = new Sn({
56574
57216
  reference: ur,
56575
57217
  namespace: this.namespace,
@@ -56578,7 +57220,10 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56578
57220
  refractCache: this.refractCache,
56579
57221
  ancestors: cr,
56580
57222
  allOfDiscriminatorMapping: this.allOfDiscriminatorMapping,
56581
- $selfValue: tr
57223
+ $selfValue: tr,
57224
+ errorContext: this.errorContext,
57225
+ errorPropagationCache: this.errorPropagationCache,
57226
+ pendingPropagations: this.pendingPropagations
56582
57227
  });
56583
57228
  try {
56584
57229
  vr = await visitAsync$5(vr, nr, {
@@ -56586,11 +57231,17 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56586
57231
  nodeTypeGetter: getNodeType$3
56587
57232
  });
56588
57233
  } catch (Sn) {
56589
- return this.indirections.pop(), this.handleDereferenceError(Sn, er, lr);
57234
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57235
+ directAncestors: lr,
57236
+ isExternalReference: _r
57237
+ });
56590
57238
  }
56591
- lr.delete(er);
57239
+ lr.delete(er), this.popErrorContext(er);
56592
57240
  }
56593
- if (this.indirections.pop(), isBooleanJsonSchemaElement$1(vr)) {
57241
+ if ((sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError && this.pendingPropagations.push({
57242
+ referencingElement: er,
57243
+ referencedElement: vr
57244
+ }), this.indirections.pop(), isBooleanJsonSchemaElement$1(vr)) {
56594
57245
  let Sn = cloneDeep(vr);
56595
57246
  Sn.setMetaProperty("id", identityManager$2.generateId()), Sn.setMetaProperty("ref-fields", {
56596
57247
  $ref: serializer$2(er.$ref),
@@ -56665,17 +57316,62 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56665
57316
  options;
56666
57317
  ancestors;
56667
57318
  refractCache;
56668
- constructor({ reference: Sn, namespace: er, options: tr, indirections: nr = [], ancestors: rr = new AncestorLineage(), refractCache: ir = /* @__PURE__ */ new Map() }) {
56669
- this.indirections = nr, this.namespace = er, this.reference = Sn, this.options = tr, this.ancestors = new AncestorLineage(...rr), this.refractCache = ir;
57319
+ errorContext;
57320
+ errorPropagationCache = /* @__PURE__ */ new Map();
57321
+ pendingPropagations = [];
57322
+ constructor({ reference: Sn, namespace: er, options: tr, indirections: nr = [], ancestors: rr = new AncestorLineage(), refractCache: ir = /* @__PURE__ */ new Map(), errorContext: ar = [], errorPropagationCache: sr = /* @__PURE__ */ new Map(), pendingPropagations: cr = [] }) {
57323
+ this.indirections = nr, this.namespace = er, this.reference = Sn, this.options = tr, this.ancestors = new AncestorLineage(...rr), this.refractCache = ir, this.errorContext = ar, this.errorPropagationCache = sr, this.pendingPropagations = cr;
57324
+ }
57325
+ popErrorContext(Sn) {
57326
+ if (this.errorContext[this.errorContext.length - 1] === Sn) this.errorContext.pop();
57327
+ else for (let er = this.errorContext.length - 1; er >= 0; --er) if (this.errorContext[er] === Sn) {
57328
+ this.errorContext.splice(er, 1);
57329
+ break;
57330
+ }
56670
57331
  }
56671
- handleDereferenceError(Sn, er) {
56672
- var tr;
56673
- if ((tr = this.options.dereference.dereferenceOpts) != null && tr.continueOnError) {
56674
- var nr;
56675
- (nr = this.options.dereference.dereferenceOpts) == null || nr.errors.push({
57332
+ runPropagationPass() {
57333
+ let Sn = !1;
57334
+ return this.pendingPropagations.forEach(({ referencingElement: er, referencedElement: tr }) => {
57335
+ let nr = this.errorPropagationCache.get(tr);
57336
+ Array.isArray(nr) && nr.length > 0 && nr.forEach((tr) => {
57337
+ let nr = this.errorPropagationCache.get(er);
57338
+ if (!(nr != null && nr.includes(tr))) {
57339
+ var rr;
57340
+ (rr = this.options.dereference.dereferenceOpts) == null || rr.errors.push({
57341
+ error: tr,
57342
+ refEl: er
57343
+ }), nr ? nr.push(tr) : this.errorPropagationCache.set(er, [tr]), Sn = !0;
57344
+ }
57345
+ });
57346
+ }), Sn;
57347
+ }
57348
+ propagateErrors() {
57349
+ for (; this.runPropagationPass(););
57350
+ this.pendingPropagations.length = 0;
57351
+ }
57352
+ handleDereferenceError(Sn, er, tr) {
57353
+ var nr;
57354
+ if ((nr = this.options.dereference.dereferenceOpts) != null && nr.continueOnError) {
57355
+ var rr, ir, ar;
57356
+ let { directAncestors: nr, isExternalReference: cr = !1 } = tr ?? {}, lr = this.options.dereference.dereferenceOpts?.skipNestedExternal ?? !1, ur = cr && lr;
57357
+ if (nr && !ur) for (let er of nr) {
57358
+ let tr = this.errorPropagationCache.get(er);
57359
+ tr ? tr.push(Sn) : this.errorPropagationCache.set(er, [Sn]);
57360
+ }
57361
+ if ((ar = this.options.dereference.dereferenceOpts) == null || ar.errors.push({
56676
57362
  error: Sn,
56677
57363
  refEl: er
56678
- });
57364
+ }), !ur) {
57365
+ let tr = new Set(this.errorContext);
57366
+ tr.delete(er), this.popErrorContext(er);
57367
+ for (let er of tr) {
57368
+ var sr;
57369
+ (sr = this.options.dereference.dereferenceOpts) == null || sr.errors.push({
57370
+ error: Sn,
57371
+ refEl: er
57372
+ });
57373
+ }
57374
+ }
56679
57375
  return;
56680
57376
  }
56681
57377
  throw Sn;
@@ -56729,6 +57425,10 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56729
57425
  let er = new Set(Sn.filter(isElement));
56730
57426
  return [new AncestorLineage(...this.ancestors, er), er];
56731
57427
  }
57428
+ AsyncApi2Element = { leave: (Sn, er, tr) => {
57429
+ var nr;
57430
+ if ((nr = this.options.dereference.dereferenceOpts) != null && nr.continueOnError) return this.propagateErrors(), tr ? void 0 : Sn;
57431
+ } };
56732
57432
  async ReferenceElement(er, tr, nr, rr, ir, ar) {
56733
57433
  var sr;
56734
57434
  if (this.indirections.includes(er)) return !1;
@@ -56738,7 +57438,10 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56738
57438
  try {
56739
57439
  pr = await this.toReference(serializer$2(er.$ref));
56740
57440
  } catch (Sn) {
56741
- return this.handleDereferenceError(Sn, er);
57441
+ return this.handleDereferenceError(Sn, er, {
57442
+ directAncestors: lr,
57443
+ isExternalReference: fr
57444
+ });
56742
57445
  }
56743
57446
  let mr = resolve$1(ur, serializer$2(er.$ref));
56744
57447
  this.indirections.push(er);
@@ -56746,7 +57449,10 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56746
57449
  try {
56747
57450
  gr = evaluate$6(pr.value.result, hr);
56748
57451
  } catch (Sn) {
56749
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
57452
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57453
+ directAncestors: lr,
57454
+ isExternalReference: fr
57455
+ });
56750
57456
  }
56751
57457
  if (gr.id = identityManager$1.identify(gr), isPrimitiveElement(gr)) {
56752
57458
  let Sn = serializer$2(er.meta.get("referenced-element")), tr = `${Sn}-${serializer$2(identityManager$1.identify(gr))}`;
@@ -56754,16 +57460,25 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56754
57460
  }
56755
57461
  if (er === gr) {
56756
57462
  let Sn = new ApiDOMError("Recursive Reference Object detected");
56757
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
57463
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57464
+ directAncestors: lr,
57465
+ isExternalReference: fr
57466
+ });
56758
57467
  }
56759
57468
  if (this.indirections.length > this.options.dereference.maxDepth) {
56760
57469
  let Sn = new MaximumDereferenceDepthError(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
56761
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
57470
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57471
+ directAncestors: lr,
57472
+ isExternalReference: fr
57473
+ });
56762
57474
  }
56763
57475
  if (cr.includes(gr)) {
56764
57476
  if (pr.refSet.circular = !0, this.options.dereference.circular === "error") {
56765
57477
  let Sn = new ApiDOMError("Circular reference detected");
56766
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
57478
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57479
+ directAncestors: lr,
57480
+ isExternalReference: fr
57481
+ });
56767
57482
  }
56768
57483
  if (this.options.dereference.circular === "replace") {
56769
57484
  var _r, vr;
@@ -56776,15 +57491,18 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56776
57491
  }
56777
57492
  }
56778
57493
  let yr = stripHash(pr.refSet.rootRef.uri) !== pr.uri, br = ["error", "replace"].includes(this.options.dereference.circular);
56779
- if ((fr || yr || isReferenceElement$3(gr) || br || (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError) && !cr.includesCycle(gr)) {
56780
- lr.add(er);
57494
+ if ((fr || yr || isReferenceElement$3(gr) || br) && !cr.includesCycle(gr)) {
57495
+ lr.add(er), this.errorContext.push(er);
56781
57496
  let tr = new Sn({
56782
57497
  reference: pr,
56783
57498
  namespace: this.namespace,
56784
57499
  indirections: [...this.indirections],
56785
57500
  options: this.getNestedVisitorOptions(er),
56786
57501
  refractCache: this.refractCache,
56787
- ancestors: cr
57502
+ ancestors: cr,
57503
+ errorContext: this.errorContext,
57504
+ errorPropagationCache: this.errorPropagationCache,
57505
+ pendingPropagations: this.pendingPropagations
56788
57506
  });
56789
57507
  try {
56790
57508
  gr = await visitAsync$3(gr, tr, {
@@ -56792,10 +57510,16 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56792
57510
  nodeTypeGetter: getNodeType$2
56793
57511
  });
56794
57512
  } catch (Sn) {
56795
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
57513
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57514
+ directAncestors: lr,
57515
+ isExternalReference: fr
57516
+ });
56796
57517
  }
56797
- lr.delete(er);
56798
- }
57518
+ lr.delete(er), this.popErrorContext(er);
57519
+ } else (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError && this.pendingPropagations.push({
57520
+ referencingElement: er,
57521
+ referencedElement: gr
57522
+ });
56799
57523
  if (this.indirections.pop(), isBooleanJsonSchemaElement(gr)) {
56800
57524
  let Sn = cloneDeep(gr);
56801
57525
  return Sn.setMetaProperty("id", identityManager$1.generateId()), Sn.setMetaProperty("ref-fields", { $ref: serializer$2(er.$ref) }), Sn.setMetaProperty("ref-origin", pr.uri), Sn.setMetaProperty("ref-referencing-element-id", cloneDeep(identityManager$1.identify(er))), ar.replaceWith(Sn, mutationReplacer$1), nr ? !1 : Sn;
@@ -56813,7 +57537,10 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56813
57537
  try {
56814
57538
  pr = await this.toReference(serializer$2(er.$ref));
56815
57539
  } catch (Sn) {
56816
- return this.handleDereferenceError(Sn, er);
57540
+ return this.handleDereferenceError(Sn, er, {
57541
+ directAncestors: lr,
57542
+ isExternalReference: fr
57543
+ });
56817
57544
  }
56818
57545
  let mr = resolve$1(ur, serializer$2(er.$ref));
56819
57546
  this.indirections.push(er);
@@ -56821,7 +57548,10 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56821
57548
  try {
56822
57549
  gr = evaluate$6(pr.value.result, hr);
56823
57550
  } catch (Sn) {
56824
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
57551
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57552
+ directAncestors: lr,
57553
+ isExternalReference: fr
57554
+ });
56825
57555
  }
56826
57556
  if (gr.id = identityManager$1.identify(gr), isPrimitiveElement(gr)) {
56827
57557
  let Sn = `channel-item-${serializer$2(identityManager$1.identify(gr))}`;
@@ -56829,14 +57559,26 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56829
57559
  }
56830
57560
  if (er === gr) {
56831
57561
  let Sn = new ApiDOMError("Recursive Channel Item Object reference detected");
56832
- this.indirections.pop(), this.handleDereferenceError(Sn, er);
57562
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57563
+ directAncestors: lr,
57564
+ isExternalReference: fr
57565
+ });
56833
57566
  }
56834
57567
  if (this.indirections.length > this.options.dereference.maxDepth) {
56835
57568
  let Sn = new MaximumDereferenceDepthError(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
56836
- this.indirections.pop(), this.handleDereferenceError(Sn, er);
57569
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57570
+ directAncestors: lr,
57571
+ isExternalReference: fr
57572
+ });
56837
57573
  }
56838
57574
  if (cr.includes(gr)) {
56839
- if (pr.refSet.circular = !0, this.options.dereference.circular === "error") throw new ApiDOMError("Circular reference detected");
57575
+ if (pr.refSet.circular = !0, this.options.dereference.circular === "error") {
57576
+ let Sn = new ApiDOMError("Circular reference detected");
57577
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57578
+ directAncestors: lr,
57579
+ isExternalReference: fr
57580
+ });
57581
+ }
56840
57582
  if (this.options.dereference.circular === "replace") {
56841
57583
  var _r, vr;
56842
57584
  let Sn = new import_minim.RefElement(gr.id, {
@@ -56848,15 +57590,18 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56848
57590
  }
56849
57591
  }
56850
57592
  let yr = stripHash(pr.refSet.rootRef.uri) !== pr.uri, br = ["error", "replace"].includes(this.options.dereference.circular);
56851
- if ((fr || yr || isChannelItemElement(gr) && isStringElement(gr.$ref) || br || (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError) && !cr.includesCycle(gr)) {
56852
- lr.add(er);
57593
+ if ((fr || yr || isChannelItemElement(gr) && isStringElement(gr.$ref) || br) && !cr.includesCycle(gr)) {
57594
+ lr.add(er), this.errorContext.push(er);
56853
57595
  let tr = new Sn({
56854
57596
  reference: pr,
56855
57597
  namespace: this.namespace,
56856
57598
  indirections: [...this.indirections],
56857
57599
  options: this.getNestedVisitorOptions(er),
56858
57600
  refractCache: this.refractCache,
56859
- ancestors: cr
57601
+ ancestors: cr,
57602
+ errorContext: this.errorContext,
57603
+ errorPropagationCache: this.errorPropagationCache,
57604
+ pendingPropagations: this.pendingPropagations
56860
57605
  });
56861
57606
  try {
56862
57607
  gr = await visitAsync$3(gr, tr, {
@@ -56864,10 +57609,16 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56864
57609
  nodeTypeGetter: getNodeType$2
56865
57610
  });
56866
57611
  } catch (Sn) {
56867
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
57612
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57613
+ directAncestors: lr,
57614
+ isExternalReference: fr
57615
+ });
56868
57616
  }
56869
- lr.delete(er);
56870
- }
57617
+ lr.delete(er), this.popErrorContext(er);
57618
+ } else (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError && this.pendingPropagations.push({
57619
+ referencingElement: er,
57620
+ referencedElement: gr
57621
+ });
56871
57622
  if (this.indirections.pop(), isChannelItemElement(gr)) {
56872
57623
  let Sn = new ChannelItem([...gr.content], cloneDeep(gr.meta), cloneDeep(gr.attributes));
56873
57624
  Sn.setMetaProperty("id", identityManager$1.generateId()), er.forEach((er, tr, nr) => {
@@ -56919,17 +57670,62 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56919
57670
  options;
56920
57671
  ancestors;
56921
57672
  refractCache;
56922
- constructor({ reference: Sn, namespace: er, options: tr, indirections: nr = [], ancestors: rr = new AncestorLineage(), refractCache: ir = /* @__PURE__ */ new Map() }) {
56923
- this.indirections = nr, this.namespace = er, this.reference = Sn, this.options = tr, this.ancestors = new AncestorLineage(...rr), this.refractCache = ir;
57673
+ errorContext;
57674
+ errorPropagationCache = /* @__PURE__ */ new Map();
57675
+ pendingPropagations = [];
57676
+ constructor({ reference: Sn, namespace: er, options: tr, indirections: nr = [], ancestors: rr = new AncestorLineage(), refractCache: ir = /* @__PURE__ */ new Map(), errorContext: ar = [], errorPropagationCache: sr = /* @__PURE__ */ new Map(), pendingPropagations: cr = [] }) {
57677
+ this.indirections = nr, this.namespace = er, this.reference = Sn, this.options = tr, this.ancestors = new AncestorLineage(...rr), this.refractCache = ir, this.errorContext = ar, this.errorPropagationCache = sr, this.pendingPropagations = cr;
57678
+ }
57679
+ popErrorContext(Sn) {
57680
+ if (this.errorContext[this.errorContext.length - 1] === Sn) this.errorContext.pop();
57681
+ else for (let er = this.errorContext.length - 1; er >= 0; --er) if (this.errorContext[er] === Sn) {
57682
+ this.errorContext.splice(er, 1);
57683
+ break;
57684
+ }
56924
57685
  }
56925
- handleDereferenceError(Sn, er) {
56926
- var tr;
56927
- if ((tr = this.options.dereference.dereferenceOpts) != null && tr.continueOnError) {
56928
- var nr;
56929
- (nr = this.options.dereference.dereferenceOpts) == null || nr.errors.push({
57686
+ runPropagationPass() {
57687
+ let Sn = !1;
57688
+ return this.pendingPropagations.forEach(({ referencingElement: er, referencedElement: tr }) => {
57689
+ let nr = this.errorPropagationCache.get(tr);
57690
+ Array.isArray(nr) && nr.length > 0 && nr.forEach((tr) => {
57691
+ let nr = this.errorPropagationCache.get(er);
57692
+ if (!(nr != null && nr.includes(tr))) {
57693
+ var rr;
57694
+ (rr = this.options.dereference.dereferenceOpts) == null || rr.errors.push({
57695
+ error: tr,
57696
+ refEl: er
57697
+ }), nr ? nr.push(tr) : this.errorPropagationCache.set(er, [tr]), Sn = !0;
57698
+ }
57699
+ });
57700
+ }), Sn;
57701
+ }
57702
+ propagateErrors() {
57703
+ for (; this.runPropagationPass(););
57704
+ this.pendingPropagations.length = 0;
57705
+ }
57706
+ handleDereferenceError(Sn, er, tr) {
57707
+ var nr;
57708
+ if ((nr = this.options.dereference.dereferenceOpts) != null && nr.continueOnError) {
57709
+ var rr, ir, ar;
57710
+ let { directAncestors: nr, isExternalReference: cr = !1 } = tr ?? {}, lr = this.options.dereference.dereferenceOpts?.skipNestedExternal ?? !1, ur = cr && lr;
57711
+ if (nr && !ur) for (let er of nr) {
57712
+ let tr = this.errorPropagationCache.get(er);
57713
+ tr ? tr.push(Sn) : this.errorPropagationCache.set(er, [Sn]);
57714
+ }
57715
+ if ((ar = this.options.dereference.dereferenceOpts) == null || ar.errors.push({
56930
57716
  error: Sn,
56931
57717
  refEl: er
56932
- });
57718
+ }), !ur) {
57719
+ let tr = new Set(this.errorContext);
57720
+ tr.delete(er), this.popErrorContext(er);
57721
+ for (let er of tr) {
57722
+ var sr;
57723
+ (sr = this.options.dereference.dereferenceOpts) == null || sr.errors.push({
57724
+ error: Sn,
57725
+ refEl: er
57726
+ });
57727
+ }
57728
+ }
56933
57729
  return;
56934
57730
  }
56935
57731
  throw Sn;
@@ -56983,6 +57779,10 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56983
57779
  let er = new Set(Sn.filter(isElement));
56984
57780
  return [new AncestorLineage(...this.ancestors, er), er];
56985
57781
  }
57782
+ AsyncApi3Element = { leave: (Sn, er, tr) => {
57783
+ var nr;
57784
+ if ((nr = this.options.dereference.dereferenceOpts) != null && nr.continueOnError) return this.propagateErrors(), tr ? void 0 : Sn;
57785
+ } };
56986
57786
  async ReferenceElement(er, tr, nr, rr, ir, ar) {
56987
57787
  var sr;
56988
57788
  if (this.indirections.includes(er)) return !1;
@@ -56992,7 +57792,10 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
56992
57792
  try {
56993
57793
  pr = await this.toReference(serializer$2(er.$ref));
56994
57794
  } catch (Sn) {
56995
- return this.handleDereferenceError(Sn, er);
57795
+ return this.handleDereferenceError(Sn, er, {
57796
+ directAncestors: lr,
57797
+ isExternalReference: fr
57798
+ });
56996
57799
  }
56997
57800
  let mr = resolve$1(ur, serializer$2(er.$ref));
56998
57801
  this.indirections.push(er);
@@ -57000,7 +57803,10 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
57000
57803
  try {
57001
57804
  gr = evaluate$6(pr.value.result, hr);
57002
57805
  } catch (Sn) {
57003
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
57806
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57807
+ directAncestors: lr,
57808
+ isExternalReference: fr
57809
+ });
57004
57810
  }
57005
57811
  if (gr.id = identityManager.identify(gr), isPrimitiveElement(gr)) {
57006
57812
  let Sn = serializer$2(er.meta.get("referenced-element")), tr = `${Sn}-${serializer$2(identityManager.identify(gr))}`;
@@ -57008,16 +57814,25 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
57008
57814
  }
57009
57815
  if (er === gr) {
57010
57816
  let Sn = new ApiDOMError("Recursive Reference Object detected");
57011
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
57817
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57818
+ directAncestors: lr,
57819
+ isExternalReference: fr
57820
+ });
57012
57821
  }
57013
57822
  if (this.indirections.length > this.options.dereference.maxDepth) {
57014
57823
  let Sn = new MaximumDereferenceDepthError(`Maximum dereference depth of "${this.options.dereference.maxDepth}" has been exceeded in file "${this.reference.uri}"`);
57015
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
57824
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57825
+ directAncestors: lr,
57826
+ isExternalReference: fr
57827
+ });
57016
57828
  }
57017
57829
  if (cr.includes(gr)) {
57018
57830
  if (pr.refSet.circular = !0, this.options.dereference.circular === "error") {
57019
57831
  let Sn = new ApiDOMError("Circular reference detected");
57020
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
57832
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57833
+ directAncestors: lr,
57834
+ isExternalReference: fr
57835
+ });
57021
57836
  }
57022
57837
  if (this.options.dereference.circular === "replace") {
57023
57838
  var _r, vr;
@@ -57030,15 +57845,18 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
57030
57845
  }
57031
57846
  }
57032
57847
  let yr = stripHash(pr.refSet.rootRef.uri) !== pr.uri, br = ["error", "replace"].includes(this.options.dereference.circular);
57033
- if ((fr || yr || isReferenceElement$2(gr) || br || (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError) && !cr.includesCycle(gr)) {
57034
- lr.add(er);
57848
+ if ((fr || yr || isReferenceElement$2(gr) || br) && !cr.includesCycle(gr)) {
57849
+ lr.add(er), this.errorContext.push(er);
57035
57850
  let tr = new Sn({
57036
57851
  reference: pr,
57037
57852
  namespace: this.namespace,
57038
57853
  indirections: [...this.indirections],
57039
57854
  options: this.getNestedVisitorOptions(er),
57040
57855
  refractCache: this.refractCache,
57041
- ancestors: cr
57856
+ ancestors: cr,
57857
+ errorContext: this.errorContext,
57858
+ errorPropagationCache: this.errorPropagationCache,
57859
+ pendingPropagations: this.pendingPropagations
57042
57860
  });
57043
57861
  try {
57044
57862
  gr = await visitAsync$1(gr, tr, {
@@ -57046,10 +57864,16 @@ var visitAsync$5 = visit$1[Symbol.for("nodejs.util.promisify.custom")], identity
57046
57864
  nodeTypeGetter: getNodeType$2
57047
57865
  });
57048
57866
  } catch (Sn) {
57049
- return this.indirections.pop(), this.handleDereferenceError(Sn, er);
57867
+ return this.indirections.pop(), this.handleDereferenceError(Sn, er, {
57868
+ directAncestors: lr,
57869
+ isExternalReference: fr
57870
+ });
57050
57871
  }
57051
- lr.delete(er);
57052
- }
57872
+ lr.delete(er), this.popErrorContext(er);
57873
+ } else (sr = this.options.dereference.dereferenceOpts) != null && sr.continueOnError && this.pendingPropagations.push({
57874
+ referencingElement: er,
57875
+ referencedElement: gr
57876
+ });
57053
57877
  if (this.indirections.pop(), isBooleanJsonSchemaElement(gr)) {
57054
57878
  let Sn = cloneDeep(gr);
57055
57879
  return Sn.setMetaProperty("id", identityManager.generateId()), Sn.setMetaProperty("ref-fields", { $ref: serializer$2(er.$ref) }), Sn.setMetaProperty("ref-origin", pr.uri), Sn.setMetaProperty("ref-referencing-element-id", cloneDeep(identityManager.identify(er))), ar.replaceWith(Sn, mutationReplacer), nr ? !1 : Sn;
@@ -61493,30 +62317,59 @@ var sn = /* @__PURE__ */ new WeakMap(), cn = /* @__PURE__ */ sn.get.bind(sn), un
61493
62317
  {
61494
62318
  functionName: "apilintPropertyUniqueValue",
61495
62319
  function: (Sn, er, tr, nr) => {
61496
- var rr;
61497
- let ir = root(Sn), ar = serializer$2(Sn), sr = er.join(",");
61498
- return !nr.has(sr) && ir && traverse((Sn) => {
61499
- let rr = Sn.getMetaProperty("classes", []);
61500
- if ((er.includes(Sn.element) || rr.filter((Sn) => er.includes(serializer$2(Sn))).length === rr.length) && isObject(Sn) && Sn.hasKey(tr)) {
61501
- var ir;
61502
- let er = serializer$2(Sn.get(tr)), rr = nr.get(sr) ?? [];
61503
- rr.push(er), nr.set(sr, rr);
62320
+ let rr = er.join(",");
62321
+ if (!nr.has(rr)) {
62322
+ let ir = root(Sn);
62323
+ if (ir) {
62324
+ let Sn = /* @__PURE__ */ new Map();
62325
+ traverse((nr) => {
62326
+ let rr = nr.getMetaProperty("classes", []);
62327
+ if ((er.includes(nr.element) || rr.filter((Sn) => er.includes(serializer$2(Sn))).length === rr.length) && isObject(nr) && nr.hasKey(tr)) {
62328
+ var ir;
62329
+ let er = serializer$2(nr.get(tr));
62330
+ Sn.set(er, (Sn.get(er) ?? 0) + 1);
62331
+ }
62332
+ }, ir);
62333
+ let ar = /* @__PURE__ */ new Set();
62334
+ Sn.forEach((Sn, er) => {
62335
+ Sn > 1 && ar.add(er);
62336
+ }), nr.set(rr, ar);
61504
62337
  }
61505
- }, ir), !((nr.get(sr) ?? []).filter((Sn) => Sn === ar).length > 1);
62338
+ }
62339
+ let ir = nr.get(rr);
62340
+ return ir === void 0 || !ir.has(serializer$2(Sn));
61506
62341
  }
61507
62342
  },
61508
62343
  {
61509
62344
  functionName: "apilintPropertyUniqueSiblingValue",
61510
- function: (Sn, er, tr) => {
61511
- var nr;
61512
- let rr = serializer$2(Sn), ir = (Sn) => {
61513
- var er;
61514
- return isString(Sn) && Sn.key?.content === tr && serializer$2(Sn.content.value) === rr;
61515
- }, ar = (Sn) => isObject(Sn) && Sn.hasKey(tr) && serializer$2(Sn.get(tr)) === rr;
61516
- return filter$1((Sn) => {
61517
- let tr = serializer$2(Sn.getMetaProperty("classes", []));
61518
- return (er.includes(Sn.element) || tr.every((Sn) => er.includes(Sn))) && (ir(Sn) || ar(Sn));
61519
- }, (nr = Sn.parent) == null || (nr = nr.parent) == null ? void 0 : nr.parent).length <= 1;
62345
+ function: (Sn, er, tr, nr) => {
62346
+ var rr;
62347
+ let ir = (rr = Sn.parent) == null || (rr = rr.parent) == null ? void 0 : rr.parent;
62348
+ if (!ir) return !0;
62349
+ let ar = serializer$2(Sn), sr = `${er}:${tr}`, cr = nr.get(ir);
62350
+ if (cr || (cr = /* @__PURE__ */ new Map(), nr.set(ir, cr)), !cr.has(sr)) {
62351
+ let Sn = /* @__PURE__ */ new Map();
62352
+ traverse((nr) => {
62353
+ let rr = serializer$2(nr.getMetaProperty("classes", []));
62354
+ if (er.includes(nr.element) || rr.every((Sn) => er.includes(Sn))) {
62355
+ var ir;
62356
+ if (isObject(nr) && nr.hasKey(tr)) {
62357
+ var ar;
62358
+ let er = serializer$2(nr.get(tr));
62359
+ Sn.set(er, (Sn.get(er) ?? 0) + 1);
62360
+ } else if (isString(nr) && nr.key?.content === tr) {
62361
+ var sr;
62362
+ let er = serializer$2(nr.content.value);
62363
+ Sn.set(er, (Sn.get(er) ?? 0) + 1);
62364
+ }
62365
+ }
62366
+ }, ir);
62367
+ let nr = /* @__PURE__ */ new Set();
62368
+ Sn.forEach((Sn, er) => {
62369
+ Sn > 1 && nr.add(er);
62370
+ }), cr.set(sr, nr);
62371
+ }
62372
+ return !cr.get(sr).has(ar);
61520
62373
  }
61521
62374
  },
61522
62375
  {
@@ -61690,15 +62543,17 @@ var sn = /* @__PURE__ */ new WeakMap(), cn = /* @__PURE__ */ sn.get.bind(sn), un
61690
62543
  var tr, nr;
61691
62544
  let rr = (tr = Sn.parent) == null || (tr = tr.parent) == null || (tr = tr.parent) == null ? void 0 : tr.parent;
61692
62545
  if ((typeof rr?.hasKey != "function" || !rr.hasKey("schemas")) && serializer$2(Sn == null || (nr = Sn.parent) == null || (nr = nr.parent) == null || (nr = nr.parent) == null ? void 0 : nr.key) !== "definitions") return !0;
61693
- if (er.length === 0) {
62546
+ if (er.size === 0) {
61694
62547
  let tr = root(Sn), nr = (Sn) => {
61695
62548
  if (!isObjectElement(Sn) || !Sn.hasKey("$ref")) return !1;
61696
62549
  let er = Sn.get("$ref");
61697
62550
  return isStringElement(er) && serializer$2(er).startsWith("#");
61698
- }, rr = filter$1((Sn) => nr(Sn), tr);
61699
- er.push(...rr.map((Sn) => serializer$2(Sn.get("$ref")).split("/").at(-1)));
62551
+ };
62552
+ filter$1((Sn) => nr(Sn), tr).forEach((Sn) => {
62553
+ er.add(serializer$2(Sn.get("$ref")).split("/").at(-1));
62554
+ });
61700
62555
  }
61701
- return er.includes(serializer$2(Sn.parent.key));
62556
+ return er.has(serializer$2(Sn.parent.key));
61702
62557
  }
61703
62558
  },
61704
62559
  {
@@ -62261,15 +63116,27 @@ async function findNamespace(Sn, er) {
62261
63116
  init_main();
62262
63117
  var PerfLabels$3 = /* @__PURE__ */ function(Sn) {
62263
63118
  return Sn.START = "doValidation", Sn;
62264
- }(PerfLabels$3 || {}), DefaultValidationService = class Sn {
63119
+ }(PerfLabels$3 || {}), macrotaskYield = () => new Promise((Sn) => {
63120
+ setTimeout(Sn, 0);
63121
+ }), abortable = (Sn, er) => er ? er.aborted ? Promise.reject(new DOMException("Aborted", "AbortError")) : new Promise((tr, nr) => {
63122
+ let rr = () => {
63123
+ er.removeEventListener("abort", rr), nr(new DOMException("Aborted", "AbortError"));
63124
+ };
63125
+ er.addEventListener("abort", rr, { once: !0 }), Sn.then((Sn) => {
63126
+ er.removeEventListener("abort", rr), tr(Sn);
63127
+ }, (Sn) => {
63128
+ er.removeEventListener("abort", rr), nr(Sn);
63129
+ });
63130
+ }) : Sn, DefaultValidationService = class Sn {
62265
63131
  validationEnabled;
62266
63132
  commentSeverity;
62267
63133
  settings;
62268
63134
  validationProviders = [];
62269
63135
  quickFixesMap = {};
62270
63136
  lintingRulesSemanticCache = /* @__PURE__ */ new Map();
62271
- referenceNamesCache = [];
63137
+ referenceNamesCache = /* @__PURE__ */ new Set();
62272
63138
  propertyValuesCache = /* @__PURE__ */ new Map();
63139
+ propertySiblingValuesCache = /* @__PURE__ */ new WeakMap();
62273
63140
  cachedParsers = [];
62274
63141
  constructor() {
62275
63142
  this.validationEnabled = !0, this.commentSeverity = void 0, this.cachedParsers = defaultOptions.parse.parsers.map(Sn.createCachedParser);
@@ -62515,156 +63382,165 @@ var PerfLabels$3 = /* @__PURE__ */ function(Sn) {
62515
63382
  return sr;
62516
63383
  }
62517
63384
  async doValidation(Sn, er) {
62518
- var tr, nr, rr, ir;
63385
+ var tr;
62519
63386
  perfStart(PerfLabels$3.START);
62520
- let ar = er || this.settings?.validationContext, sr = !ar || !ar.referenceValidationMode ? ReferenceValidationMode.LEGACY : ar.referenceValidationMode | ReferenceValidationMode.LEGACY, cr = !ar || !ar.referenceValidationSequentialProcessing ? !1 : ar.referenceValidationSequentialProcessing, lr = Sn.getText(), ur = [];
63387
+ let nr = er || this.settings?.validationContext, rr = !nr || !nr.referenceValidationMode ? ReferenceValidationMode.LEGACY : nr.referenceValidationMode | ReferenceValidationMode.LEGACY, ir = !nr || !nr.referenceValidationSequentialProcessing ? !1 : nr.referenceValidationSequentialProcessing, ar = Sn.getText(), sr = [];
62521
63388
  this.quickFixesMap = {};
62522
- let dr = await this.settings.documentCache?.get(Sn, void 0, "doValidation-parse-first");
62523
- if (!dr) return ur;
62524
- let fr, pr = await findNamespace(lr, this.settings?.defaultContentLanguage), mr = pr.namespace;
62525
- if (dr.annotations) {
62526
- for (let er of dr.annotations) {
62527
- if (ar && ar.maxNumberOfProblems && ur.length > ar.maxNumberOfProblems) return ur;
62528
- let tr = getSourceMap(er), nr = {
62529
- offset: tr.offset,
62530
- length: tr.length
62531
- };
62532
- pr.format === "YAML" && tr.offset === 0 && tr.endLine && tr.endColumn && (nr = {
62533
- offset: Sn.offsetAt({
62534
- line: tr.endLine,
62535
- character: 0
62536
- }),
62537
- length: tr.endColumn
62538
- });
62539
- let rr = Range$1.create(Sn.positionAt(nr.offset), Sn.positionAt(nr.offset + nr.length)), ir = serializer$2(er);
62540
- ir.startsWith(lr.substring(0, lr.length > 10 ? 10 : lr.length)) && ir.length > 70 && (ir = `YAML Syntax error: '... ${ir.substring(20)}'`);
62541
- let sr = Diagnostic.create(rr, ir, DiagnosticSeverity.Error, 0, "syntax");
62542
- ar && ar.relatedInformation && (sr.relatedInformation = [{
62543
- location: {
62544
- uri: Sn.uri,
62545
- range: { ...sr.range }
62546
- },
62547
- message: "Syntax error while parsing"
62548
- }, {
62549
- location: {
62550
- uri: Sn.uri,
62551
- range: { ...sr.range }
62552
- },
62553
- message: "more things"
62554
- }]), ur.push(sr);
62555
- }
62556
- fr = correctPartialKeys(dr, Sn, await isJsonDoc(Sn));
62557
- }
62558
- if (fr) {
62559
- var hr, gr;
62560
- mr = (await findNamespace(fr, this.settings?.defaultContentLanguage)).namespace, dr = await this.settings.documentCache?.get(Sn, fr, "doValidation-parse-second");
62561
- }
62562
- if (!dr) return ur;
62563
- let { api: _r } = dr;
62564
- if (_r === void 0) return ur;
62565
- let vr = getSpecVersion(_r, (ir = this.settings) == null || (ir = ir.defaultContentLanguage) == null ? void 0 : ir.version), yr = !!ur.length, br = {}, xr = (er, tr, nr) => {
62566
- let rr = [];
62567
- if (sr === ReferenceValidationMode.LEGACY && serializer$2(nr).startsWith("#")) {
62568
- let ir = br[tr];
62569
- if (ir || (ir = localReferencePointers(er, tr, !0), br[tr] = ir), !ir.some((Sn) => Sn.ref === serializer$2(nr))) {
62570
- let er = getSourceMap(nr), tr = {
63389
+ try {
63390
+ var cr, lr, ur;
63391
+ let er, tr = this.settings.documentCache?.get(Sn, void 0, "doValidation-parse-first");
63392
+ if (er = tr === void 0 ? void 0 : await abortable(tr, nr?.signal), !er) return sr;
63393
+ let hr, gr = await findNamespace(ar, this.settings?.defaultContentLanguage), _r = gr.namespace;
63394
+ if (er.annotations) {
63395
+ for (let tr of er.annotations) {
63396
+ if (nr && nr.maxNumberOfProblems && sr.length > nr.maxNumberOfProblems) return sr;
63397
+ let er = getSourceMap(tr), rr = {
62571
63398
  offset: er.offset,
62572
63399
  length: er.length
62573
- }, ar = Range$1.create(Sn.positionAt(tr.offset), Sn.positionAt(tr.offset + tr.length)), sr = `${tr.offset.toString()}-${tr.length.toString()}-${Date.now()}`, cr = Diagnostic.create(ar, "local reference not found", DiagnosticSeverity.Error, sr, "apilint");
62574
- cr.source = "apilint", cr.data = { quickFix: [] };
62575
- for (let Sn of ir) nr !== Sn.ref && !Sn.isRef && cr.data.quickFix.push({
62576
- message: `update to ${Sn.ref}`,
62577
- action: "updateValue",
62578
- functionParams: [Sn.ref]
63400
+ };
63401
+ gr.format === "YAML" && er.offset === 0 && er.endLine && er.endColumn && (rr = {
63402
+ offset: Sn.offsetAt({
63403
+ line: er.endLine,
63404
+ character: 0
63405
+ }),
63406
+ length: er.endColumn
62579
63407
  });
62580
- this.quickFixesMap[sr] = cr.data.quickFix, rr.push(cr);
63408
+ let ir = Range$1.create(Sn.positionAt(rr.offset), Sn.positionAt(rr.offset + rr.length)), cr = serializer$2(tr);
63409
+ cr.startsWith(ar.substring(0, ar.length > 10 ? 10 : ar.length)) && cr.length > 70 && (cr = `YAML Syntax error: '... ${cr.substring(20)}'`);
63410
+ let lr = Diagnostic.create(ir, cr, DiagnosticSeverity.Error, 0, "syntax");
63411
+ nr && nr.relatedInformation && (lr.relatedInformation = [{
63412
+ location: {
63413
+ uri: Sn.uri,
63414
+ range: { ...lr.range }
63415
+ },
63416
+ message: "Syntax error while parsing"
63417
+ }, {
63418
+ location: {
63419
+ uri: Sn.uri,
63420
+ range: { ...lr.range }
63421
+ },
63422
+ message: "more things"
63423
+ }]), sr.push(lr);
62581
63424
  }
63425
+ hr = correctPartialKeys(er, Sn, await isJsonDoc(Sn));
63426
+ }
63427
+ if (hr) {
63428
+ var dr, fr;
63429
+ _r = (await findNamespace(hr, this.settings?.defaultContentLanguage)).namespace;
63430
+ let tr = this.settings.documentCache?.get(Sn, hr, "doValidation-parse-second");
63431
+ er = tr === void 0 ? void 0 : await abortable(tr, nr?.signal);
62582
63432
  }
63433
+ if (!er) return sr;
63434
+ let { api: vr } = er;
63435
+ if (vr === void 0) return sr;
63436
+ await abortable(macrotaskYield(), nr?.signal);
63437
+ let yr = getSpecVersion(vr, (ur = this.settings) == null || (ur = ur.defaultContentLanguage) == null ? void 0 : ur.version), br = !!sr.length, xr = {}, Sr = (er, tr, ir) => {
63438
+ let ar = [];
63439
+ if (rr === ReferenceValidationMode.LEGACY && serializer$2(ir).startsWith("#")) {
63440
+ let nr = xr[tr];
63441
+ if (nr || (nr = localReferencePointers(er, tr, !0), xr[tr] = nr), !nr.some((Sn) => Sn.ref === serializer$2(ir))) {
63442
+ let er = getSourceMap(ir), tr = {
63443
+ offset: er.offset,
63444
+ length: er.length
63445
+ }, rr = Range$1.create(Sn.positionAt(tr.offset), Sn.positionAt(tr.offset + tr.length)), sr = `${tr.offset.toString()}-${tr.length.toString()}-${Date.now()}`, cr = Diagnostic.create(rr, "local reference not found", DiagnosticSeverity.Error, sr, "apilint");
63446
+ cr.source = "apilint", cr.data = { quickFix: [] };
63447
+ for (let Sn of nr) ir !== Sn.ref && !Sn.isRef && cr.data.quickFix.push({
63448
+ message: `update to ${Sn.ref}`,
63449
+ action: "updateValue",
63450
+ functionParams: [Sn.ref]
63451
+ });
63452
+ this.quickFixesMap[sr] = cr.data.quickFix, ar.push(cr);
63453
+ }
63454
+ }
63455
+ try {
63456
+ for (let er of this.validationProviders) if (er.namespaces().some((Sn) => Sn.namespace === _r && Sn.version === yr) && er.doRefValidation && er.providerMode && er.providerMode() === ProviderMode.REF) {
63457
+ let rr = er.doRefValidation(Sn, vr, ir, tr, serializer$2(ir), ar, nr);
63458
+ switch (rr.mergeStrategy) {
63459
+ case MergeStrategy.APPEND:
63460
+ ar.push(...rr.diagnostics);
63461
+ break;
63462
+ case MergeStrategy.PREPEND:
63463
+ ar.unshift(...rr.diagnostics);
63464
+ break;
63465
+ case MergeStrategy.REPLACE:
63466
+ ar.splice(0, sr.length, ...rr.diagnostics);
63467
+ break;
63468
+ case MergeStrategy.IGNORE: break;
63469
+ default: ar.push(...rr.diagnostics);
63470
+ }
63471
+ if (rr.quickFixes) for (let Sn in rr.quickFixes) this.quickFixesMap[Sn] = rr.quickFixes[Sn];
63472
+ if (er.break()) break;
63473
+ }
63474
+ } catch (Sn) {
63475
+ console.log("error in validation provider", Sn);
63476
+ }
63477
+ return ar;
63478
+ }, Cr = [];
63479
+ traverse((er) => {
63480
+ serializer$2(er.getMetaProperty("referenced-element", "")).length > 0 && isObject(er) && er.hasKey("$ref") && (rr === ReferenceValidationMode.APIDOM_INDIRECT_EXTERNAL || serializer$2(er.get("$ref")).startsWith("#")) && Cr.push(er);
63481
+ let tr = getSourceMap(er), nr = serializer$2(er.getMetaProperty("referenced-element", ""));
63482
+ if (nr.length > 0 && isObject(er) && er.hasKey("$ref") && sr.push(...Sr(vr, nr, er.get("$ref"))), er.classes) {
63483
+ let rr = Array.from(new Set(serializer$2(er.classes)));
63484
+ rr.includes(er.element) || rr.unshift(er.element), nr.length > 0 && (rr.includes(nr) || rr.unshift(nr)), rr.unshift("*"), rr.forEach((nr) => {
63485
+ let rr = this.getLintingRulesSemantic(vr, nr, _r);
63486
+ if (this.lintingRulesSemanticCache.set(`${_r}-${nr}`, rr), rr && rr.length > 0) for (let nr of rr) this.processRule(nr, sr, Sn, vr, er, tr, _r, yr);
63487
+ });
63488
+ }
63489
+ }, vr), await abortable(macrotaskYield(), nr?.signal), rr !== ReferenceValidationMode.LEGACY && (nr != null && nr.referenceValidationContinueOnError ? sr.push(...await abortable(this.validateReferencesContinueOnError(er, vr, Sn, gr, nr), nr?.signal)) : ir ? sr.push(...await abortable(this.validateReferencesSequential(Cr, er, vr, Sn, gr, nr), nr?.signal)) : sr.push(...await abortable(this.validateReferencesConcurrent(Cr, er, vr, Sn, gr, nr), nr?.signal)));
62583
63490
  try {
62584
- for (let er of this.validationProviders) if (er.namespaces().some((Sn) => Sn.namespace === mr && Sn.version === vr) && er.doRefValidation && er.providerMode && er.providerMode() === ProviderMode.REF) {
62585
- let ir = er.doRefValidation(Sn, _r, nr, tr, serializer$2(nr), rr, ar);
62586
- switch (ir.mergeStrategy) {
63491
+ var pr, mr;
63492
+ let er = (pr = this.settings) == null || (pr = pr.metadata) == null ? void 0 : pr.rules;
63493
+ if (er && (mr = er[_r]) != null && mr.lint) {
63494
+ for (let tr of er[_r].lint) if (tr.givenFormat !== void 0 && tr.givenFormat === LinterGivenFormat.JSONPATH) {
63495
+ if (tr.given !== void 0 && Array.isArray(tr.given)) {
63496
+ let er = evaluateMulti(tr.given, vr);
63497
+ er && er.length > 0 && er.forEach((er) => {
63498
+ let nr = er[1];
63499
+ nr && nr.forEach((er) => {
63500
+ let nr = getSourceMap(er);
63501
+ this.processRule(tr, sr, Sn, vr, er, nr, _r, yr);
63502
+ });
63503
+ });
63504
+ }
63505
+ if (tr.given !== void 0 && typeof tr.given == "string") {
63506
+ let er = evaluate$5(tr.given, vr);
63507
+ if (er && er.length > 0) for (let nr of er) {
63508
+ let er = getSourceMap(nr);
63509
+ this.processRule(tr, sr, Sn, vr, nr, er, _r, yr);
63510
+ }
63511
+ }
63512
+ }
63513
+ }
63514
+ } catch (Sn) {
63515
+ console.log("error in retrieving jsonpath rules", Sn);
63516
+ }
63517
+ if (perfEnd(PerfLabels$3.START), !br) try {
63518
+ for (let er of this.validationProviders) if (er.namespaces().some((Sn) => Sn.namespace === _r && Sn.version === yr) && er.doValidation && (!er.providerMode || er.providerMode() === ProviderMode.FULL)) {
63519
+ let tr = await er.doValidation(Sn, vr, sr, nr);
63520
+ switch (tr.mergeStrategy) {
62587
63521
  case MergeStrategy.APPEND:
62588
- rr.push(...ir.diagnostics);
63522
+ sr.push(...tr.diagnostics);
62589
63523
  break;
62590
63524
  case MergeStrategy.PREPEND:
62591
- rr.unshift(...ir.diagnostics);
63525
+ sr.unshift(...tr.diagnostics);
62592
63526
  break;
62593
63527
  case MergeStrategy.REPLACE:
62594
- rr.splice(0, ur.length, ...ir.diagnostics);
63528
+ sr.splice(0, sr.length, ...tr.diagnostics);
62595
63529
  break;
62596
63530
  case MergeStrategy.IGNORE: break;
62597
- default: rr.push(...ir.diagnostics);
63531
+ default: sr.push(...tr.diagnostics);
62598
63532
  }
62599
- if (ir.quickFixes) for (let Sn in ir.quickFixes) this.quickFixesMap[Sn] = ir.quickFixes[Sn];
63533
+ if (tr.quickFixes) for (let Sn in tr.quickFixes) this.quickFixesMap[Sn] = tr.quickFixes[Sn];
62600
63534
  if (er.break()) break;
62601
63535
  }
62602
- } catch (Sn) {
62603
- console.log("error in validation provider", Sn);
62604
- }
62605
- return rr;
62606
- }, Sr = [];
62607
- traverse((er) => {
62608
- serializer$2(er.getMetaProperty("referenced-element", "")).length > 0 && isObject(er) && er.hasKey("$ref") && (sr === ReferenceValidationMode.APIDOM_INDIRECT_EXTERNAL || serializer$2(er.get("$ref")).startsWith("#")) && Sr.push(er);
62609
- let tr = getSourceMap(er), nr = serializer$2(er.getMetaProperty("referenced-element", ""));
62610
- if (nr.length > 0 && isObject(er) && er.hasKey("$ref") && ur.push(...xr(_r, nr, er.get("$ref"))), er.classes) {
62611
- let rr = Array.from(new Set(serializer$2(er.classes)));
62612
- rr.includes(er.element) || rr.unshift(er.element), nr.length > 0 && (rr.includes(nr) || rr.unshift(nr)), rr.unshift("*"), rr.forEach((nr) => {
62613
- let rr = this.getLintingRulesSemantic(_r, nr, mr);
62614
- if (this.lintingRulesSemanticCache.set(`${mr}-${nr}`, rr), rr && rr.length > 0) for (let nr of rr) this.processRule(nr, ur, Sn, _r, er, tr, mr, vr);
62615
- });
62616
- }
62617
- }, _r), sr !== ReferenceValidationMode.LEGACY && (ar != null && ar.referenceValidationContinueOnError ? ur.push(...await this.validateReferencesContinueOnError(dr, _r, Sn, pr, ar)) : cr ? ur.push(...await this.validateReferencesSequential(Sr, dr, _r, Sn, pr, ar)) : ur.push(...await this.validateReferencesConcurrent(Sr, dr, _r, Sn, pr, ar)));
62618
- try {
62619
- var Cr, wr;
62620
- let er = (Cr = this.settings) == null || (Cr = Cr.metadata) == null ? void 0 : Cr.rules;
62621
- if (er && (wr = er[mr]) != null && wr.lint) {
62622
- for (let tr of er[mr].lint) if (tr.givenFormat !== void 0 && tr.givenFormat === LinterGivenFormat.JSONPATH) {
62623
- if (tr.given !== void 0 && Array.isArray(tr.given)) {
62624
- let er = evaluateMulti(tr.given, _r);
62625
- er && er.length > 0 && er.forEach((er) => {
62626
- let nr = er[1];
62627
- nr && nr.forEach((er) => {
62628
- let nr = getSourceMap(er);
62629
- this.processRule(tr, ur, Sn, _r, er, nr, mr, vr);
62630
- });
62631
- });
62632
- }
62633
- if (tr.given !== void 0 && typeof tr.given == "string") {
62634
- let er = evaluate$5(tr.given, _r);
62635
- if (er && er.length > 0) for (let nr of er) {
62636
- let er = getSourceMap(nr);
62637
- this.processRule(tr, ur, Sn, _r, nr, er, mr, vr);
62638
- }
62639
- }
62640
- }
63536
+ } catch {
63537
+ console.log("error in validation provider");
62641
63538
  }
63539
+ return this.referenceNamesCache = /* @__PURE__ */ new Set(), this.propertyValuesCache.clear(), this.propertySiblingValuesCache = /* @__PURE__ */ new WeakMap(), sr;
62642
63540
  } catch (Sn) {
62643
- console.log("error in retrieving jsonpath rules", Sn);
62644
- }
62645
- if (perfEnd(PerfLabels$3.START), !yr) try {
62646
- for (let er of this.validationProviders) if (er.namespaces().some((Sn) => Sn.namespace === mr && Sn.version === vr) && er.doValidation && (!er.providerMode || er.providerMode() === ProviderMode.FULL)) {
62647
- let tr = await er.doValidation(Sn, _r, ur, ar);
62648
- switch (tr.mergeStrategy) {
62649
- case MergeStrategy.APPEND:
62650
- ur.push(...tr.diagnostics);
62651
- break;
62652
- case MergeStrategy.PREPEND:
62653
- ur.unshift(...tr.diagnostics);
62654
- break;
62655
- case MergeStrategy.REPLACE:
62656
- ur.splice(0, ur.length, ...tr.diagnostics);
62657
- break;
62658
- case MergeStrategy.IGNORE: break;
62659
- default: ur.push(...tr.diagnostics);
62660
- }
62661
- if (tr.quickFixes) for (let Sn in tr.quickFixes) this.quickFixesMap[Sn] = tr.quickFixes[Sn];
62662
- if (er.break()) break;
62663
- }
62664
- } catch {
62665
- console.log("error in validation provider");
63541
+ if (this.referenceNamesCache = /* @__PURE__ */ new Set(), this.propertyValuesCache.clear(), this.propertySiblingValuesCache = /* @__PURE__ */ new WeakMap(), Sn instanceof DOMException && Sn.name === "AbortError") return sr;
63542
+ throw Sn;
62666
63543
  }
62667
- return this.referenceNamesCache = [], this.propertyValuesCache.clear(), ur;
62668
63544
  }
62669
63545
  processRule(Sn, er, tr, nr, rr, ir, ar, sr) {
62670
63546
  if (Sn.targetSpecs && !Sn.targetSpecs.some((Sn) => Sn.namespace === ar && Sn.version === sr)) return;
@@ -62682,7 +63558,7 @@ var PerfLabels$3 = /* @__PURE__ */ function(Sn) {
62682
63558
  let lr = Sn.target && Sn.target.length > 0 && isObject(rr) && rr.hasKey(Sn.target) ? rr.get(Sn.target) : rr;
62683
63559
  if (checkConditions(Sn, ar, rr, nr, this.settings)) {
62684
63560
  if (Sn.linterParams && Array.isArray(Sn.linterParams) && Sn.linterParams.length > 0) {
62685
- let er = [lr].concat(Sn.linterParams.map((Sn) => Sn === "referenceNames" ? this.referenceNamesCache : Sn === "propertyValues" ? this.propertyValuesCache : Sn));
63561
+ let er = [lr].concat(Sn.linterParams.map((Sn) => Sn === "referenceNames" ? this.referenceNamesCache : Sn === "propertyValues" ? this.propertyValuesCache : Sn === "propertySiblingValues" ? this.propertySiblingValuesCache : Sn));
62686
63562
  cr = sr(...er);
62687
63563
  } else cr = sr(lr);
62688
63564
  if (Sn.negate && (cr = !cr), !cr) {
@@ -117894,7 +118770,11 @@ var parametersTypeLint$2 = {
117894
118770
  message: "Name must be unique among all parameters",
117895
118771
  severity: DiagnosticSeverity.Error,
117896
118772
  linterFunction: "apilintPropertyUniqueSiblingValue",
117897
- linterParams: ["parameters", "name"],
118773
+ linterParams: [
118774
+ "parameters",
118775
+ "name",
118776
+ "propertySiblingValues"
118777
+ ],
117898
118778
  marker: "key",
117899
118779
  markerTarget: "name",
117900
118780
  target: "name",
@@ -117970,7 +118850,11 @@ var inMultipleBody = {
117970
118850
  message: "Multiple body parameters are not allowed",
117971
118851
  severity: DiagnosticSeverity.Error,
117972
118852
  linterFunction: "apilintPropertyUniqueSiblingValue",
117973
- linterParams: ["parameters", "in"],
118853
+ linterParams: [
118854
+ "parameters",
118855
+ "in",
118856
+ "propertySiblingValues"
118857
+ ],
117974
118858
  marker: "key",
117975
118859
  markerTarget: "in",
117976
118860
  target: "in",
@@ -124207,7 +125091,11 @@ var nameUniqueLint = {
124207
125091
  message: "Tag Objects must have unique `name` field values.",
124208
125092
  severity: DiagnosticSeverity.Error,
124209
125093
  linterFunction: "apilintPropertyUniqueSiblingValue",
124210
- linterParams: ["tags", "name"],
125094
+ linterParams: [
125095
+ "tags",
125096
+ "name",
125097
+ "propertySiblingValues"
125098
+ ],
124211
125099
  marker: "value",
124212
125100
  target: "name",
124213
125101
  markerTarget: "name",