@postman-cse/onboarding-bootstrap 0.13.1 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/action.cjs CHANGED
@@ -1068,14 +1068,14 @@ var require_util = __commonJS({
1068
1068
  }
1069
1069
  const port = url.port != null ? url.port : url.protocol === "https:" ? 443 : 80;
1070
1070
  let origin = url.origin != null ? url.origin : `${url.protocol || ""}//${url.hostname || ""}:${port}`;
1071
- let path7 = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`;
1071
+ let path8 = url.path != null ? url.path : `${url.pathname || ""}${url.search || ""}`;
1072
1072
  if (origin[origin.length - 1] === "/") {
1073
1073
  origin = origin.slice(0, origin.length - 1);
1074
1074
  }
1075
- if (path7 && path7[0] !== "/") {
1076
- path7 = `/${path7}`;
1075
+ if (path8 && path8[0] !== "/") {
1076
+ path8 = `/${path8}`;
1077
1077
  }
1078
- return new URL(`${origin}${path7}`);
1078
+ return new URL(`${origin}${path8}`);
1079
1079
  }
1080
1080
  if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {
1081
1081
  throw new InvalidArgumentError("Invalid URL protocol: the URL must start with `http:` or `https:`.");
@@ -1526,39 +1526,39 @@ var require_diagnostics = __commonJS({
1526
1526
  });
1527
1527
  diagnosticsChannel.channel("undici:client:sendHeaders").subscribe((evt) => {
1528
1528
  const {
1529
- request: { method, path: path7, origin }
1529
+ request: { method, path: path8, origin }
1530
1530
  } = evt;
1531
- debuglog("sending request to %s %s/%s", method, origin, path7);
1531
+ debuglog("sending request to %s %s/%s", method, origin, path8);
1532
1532
  });
1533
1533
  diagnosticsChannel.channel("undici:request:headers").subscribe((evt) => {
1534
1534
  const {
1535
- request: { method, path: path7, origin },
1535
+ request: { method, path: path8, origin },
1536
1536
  response: { statusCode }
1537
1537
  } = evt;
1538
1538
  debuglog(
1539
1539
  "received response to %s %s/%s - HTTP %d",
1540
1540
  method,
1541
1541
  origin,
1542
- path7,
1542
+ path8,
1543
1543
  statusCode
1544
1544
  );
1545
1545
  });
1546
1546
  diagnosticsChannel.channel("undici:request:trailers").subscribe((evt) => {
1547
1547
  const {
1548
- request: { method, path: path7, origin }
1548
+ request: { method, path: path8, origin }
1549
1549
  } = evt;
1550
- debuglog("trailers received from %s %s/%s", method, origin, path7);
1550
+ debuglog("trailers received from %s %s/%s", method, origin, path8);
1551
1551
  });
1552
1552
  diagnosticsChannel.channel("undici:request:error").subscribe((evt) => {
1553
1553
  const {
1554
- request: { method, path: path7, origin },
1554
+ request: { method, path: path8, origin },
1555
1555
  error: error2
1556
1556
  } = evt;
1557
1557
  debuglog(
1558
1558
  "request to %s %s/%s errored - %s",
1559
1559
  method,
1560
1560
  origin,
1561
- path7,
1561
+ path8,
1562
1562
  error2.message
1563
1563
  );
1564
1564
  });
@@ -1607,9 +1607,9 @@ var require_diagnostics = __commonJS({
1607
1607
  });
1608
1608
  diagnosticsChannel.channel("undici:client:sendHeaders").subscribe((evt) => {
1609
1609
  const {
1610
- request: { method, path: path7, origin }
1610
+ request: { method, path: path8, origin }
1611
1611
  } = evt;
1612
- debuglog("sending request to %s %s/%s", method, origin, path7);
1612
+ debuglog("sending request to %s %s/%s", method, origin, path8);
1613
1613
  });
1614
1614
  }
1615
1615
  diagnosticsChannel.channel("undici:websocket:open").subscribe((evt) => {
@@ -1672,7 +1672,7 @@ var require_request = __commonJS({
1672
1672
  var kHandler = /* @__PURE__ */ Symbol("handler");
1673
1673
  var Request = class {
1674
1674
  constructor(origin, {
1675
- path: path7,
1675
+ path: path8,
1676
1676
  method,
1677
1677
  body,
1678
1678
  headers,
@@ -1687,11 +1687,11 @@ var require_request = __commonJS({
1687
1687
  expectContinue,
1688
1688
  servername
1689
1689
  }, handler) {
1690
- if (typeof path7 !== "string") {
1690
+ if (typeof path8 !== "string") {
1691
1691
  throw new InvalidArgumentError("path must be a string");
1692
- } else if (path7[0] !== "/" && !(path7.startsWith("http://") || path7.startsWith("https://")) && method !== "CONNECT") {
1692
+ } else if (path8[0] !== "/" && !(path8.startsWith("http://") || path8.startsWith("https://")) && method !== "CONNECT") {
1693
1693
  throw new InvalidArgumentError("path must be an absolute URL or start with a slash");
1694
- } else if (invalidPathRegex.test(path7)) {
1694
+ } else if (invalidPathRegex.test(path8)) {
1695
1695
  throw new InvalidArgumentError("invalid request path");
1696
1696
  }
1697
1697
  if (typeof method !== "string") {
@@ -1757,7 +1757,7 @@ var require_request = __commonJS({
1757
1757
  this.completed = false;
1758
1758
  this.aborted = false;
1759
1759
  this.upgrade = upgrade || null;
1760
- this.path = query ? buildURL(path7, query) : path7;
1760
+ this.path = query ? buildURL(path8, query) : path8;
1761
1761
  this.origin = origin;
1762
1762
  this.idempotent = idempotent == null ? method === "HEAD" || method === "GET" : idempotent;
1763
1763
  this.blocking = blocking == null ? false : blocking;
@@ -6321,7 +6321,7 @@ var require_client_h1 = __commonJS({
6321
6321
  return method !== "GET" && method !== "HEAD" && method !== "OPTIONS" && method !== "TRACE" && method !== "CONNECT";
6322
6322
  }
6323
6323
  function writeH1(client, request) {
6324
- const { method, path: path7, host, upgrade, blocking, reset } = request;
6324
+ const { method, path: path8, host, upgrade, blocking, reset } = request;
6325
6325
  let { body, headers, contentLength } = request;
6326
6326
  const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH" || method === "QUERY" || method === "PROPFIND" || method === "PROPPATCH";
6327
6327
  if (util.isFormDataLike(body)) {
@@ -6387,7 +6387,7 @@ var require_client_h1 = __commonJS({
6387
6387
  if (blocking) {
6388
6388
  socket[kBlocking] = true;
6389
6389
  }
6390
- let header = `${method} ${path7} HTTP/1.1\r
6390
+ let header = `${method} ${path8} HTTP/1.1\r
6391
6391
  `;
6392
6392
  if (typeof host === "string") {
6393
6393
  header += `host: ${host}\r
@@ -6913,7 +6913,7 @@ var require_client_h2 = __commonJS({
6913
6913
  }
6914
6914
  function writeH2(client, request) {
6915
6915
  const session = client[kHTTP2Session];
6916
- const { method, path: path7, host, upgrade, expectContinue, signal, headers: reqHeaders } = request;
6916
+ const { method, path: path8, host, upgrade, expectContinue, signal, headers: reqHeaders } = request;
6917
6917
  let { body } = request;
6918
6918
  if (upgrade) {
6919
6919
  util.errorRequest(client, request, new Error("Upgrade not supported for H2"));
@@ -6980,7 +6980,7 @@ var require_client_h2 = __commonJS({
6980
6980
  });
6981
6981
  return true;
6982
6982
  }
6983
- headers[HTTP2_HEADER_PATH] = path7;
6983
+ headers[HTTP2_HEADER_PATH] = path8;
6984
6984
  headers[HTTP2_HEADER_SCHEME] = "https";
6985
6985
  const expectsPayload = method === "PUT" || method === "POST" || method === "PATCH";
6986
6986
  if (body && typeof body.read === "function") {
@@ -7333,9 +7333,9 @@ var require_redirect_handler = __commonJS({
7333
7333
  return this.handler.onHeaders(statusCode, headers, resume, statusText);
7334
7334
  }
7335
7335
  const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)));
7336
- const path7 = search ? `${pathname}${search}` : pathname;
7336
+ const path8 = search ? `${pathname}${search}` : pathname;
7337
7337
  this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin);
7338
- this.opts.path = path7;
7338
+ this.opts.path = path8;
7339
7339
  this.opts.origin = origin;
7340
7340
  this.opts.maxRedirections = 0;
7341
7341
  this.opts.query = null;
@@ -8570,10 +8570,10 @@ var require_proxy_agent = __commonJS({
8570
8570
  };
8571
8571
  const {
8572
8572
  origin,
8573
- path: path7 = "/",
8573
+ path: path8 = "/",
8574
8574
  headers = {}
8575
8575
  } = opts;
8576
- opts.path = origin + path7;
8576
+ opts.path = origin + path8;
8577
8577
  if (!("host" in headers) && !("Host" in headers)) {
8578
8578
  const { host } = new URL3(origin);
8579
8579
  headers.host = host;
@@ -10494,20 +10494,20 @@ var require_mock_utils = __commonJS({
10494
10494
  }
10495
10495
  return true;
10496
10496
  }
10497
- function safeUrl(path7) {
10498
- if (typeof path7 !== "string") {
10499
- return path7;
10497
+ function safeUrl(path8) {
10498
+ if (typeof path8 !== "string") {
10499
+ return path8;
10500
10500
  }
10501
- const pathSegments = path7.split("?");
10501
+ const pathSegments = path8.split("?");
10502
10502
  if (pathSegments.length !== 2) {
10503
- return path7;
10503
+ return path8;
10504
10504
  }
10505
10505
  const qp = new URLSearchParams(pathSegments.pop());
10506
10506
  qp.sort();
10507
10507
  return [...pathSegments, qp.toString()].join("?");
10508
10508
  }
10509
- function matchKey(mockDispatch2, { path: path7, method, body, headers }) {
10510
- const pathMatch = matchValue(mockDispatch2.path, path7);
10509
+ function matchKey(mockDispatch2, { path: path8, method, body, headers }) {
10510
+ const pathMatch = matchValue(mockDispatch2.path, path8);
10511
10511
  const methodMatch = matchValue(mockDispatch2.method, method);
10512
10512
  const bodyMatch = typeof mockDispatch2.body !== "undefined" ? matchValue(mockDispatch2.body, body) : true;
10513
10513
  const headersMatch = matchHeaders(mockDispatch2, headers);
@@ -10529,7 +10529,7 @@ var require_mock_utils = __commonJS({
10529
10529
  function getMockDispatch(mockDispatches, key) {
10530
10530
  const basePath = key.query ? buildURL(key.path, key.query) : key.path;
10531
10531
  const resolvedPath = typeof basePath === "string" ? safeUrl(basePath) : basePath;
10532
- let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path: path7 }) => matchValue(safeUrl(path7), resolvedPath));
10532
+ let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path: path8 }) => matchValue(safeUrl(path8), resolvedPath));
10533
10533
  if (matchedMockDispatches.length === 0) {
10534
10534
  throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`);
10535
10535
  }
@@ -10567,9 +10567,9 @@ var require_mock_utils = __commonJS({
10567
10567
  }
10568
10568
  }
10569
10569
  function buildKey(opts) {
10570
- const { path: path7, method, body, headers, query } = opts;
10570
+ const { path: path8, method, body, headers, query } = opts;
10571
10571
  return {
10572
- path: path7,
10572
+ path: path8,
10573
10573
  method,
10574
10574
  body,
10575
10575
  headers,
@@ -11032,10 +11032,10 @@ var require_pending_interceptors_formatter = __commonJS({
11032
11032
  }
11033
11033
  format(pendingInterceptors) {
11034
11034
  const withPrettyHeaders = pendingInterceptors.map(
11035
- ({ method, path: path7, data: { statusCode }, persist, times, timesInvoked, origin }) => ({
11035
+ ({ method, path: path8, data: { statusCode }, persist, times, timesInvoked, origin }) => ({
11036
11036
  Method: method,
11037
11037
  Origin: origin,
11038
- Path: path7,
11038
+ Path: path8,
11039
11039
  "Status code": statusCode,
11040
11040
  Persistent: persist ? PERSISTENT : NOT_PERSISTENT,
11041
11041
  Invocations: timesInvoked,
@@ -11887,9 +11887,9 @@ var require_headers = __commonJS({
11887
11887
  return array;
11888
11888
  }
11889
11889
  const iterator = this[kHeadersMap][Symbol.iterator]();
11890
- const firstValue = iterator.next().value;
11891
- array[0] = [firstValue[0], firstValue[1].value];
11892
- assert(firstValue[1].value !== null);
11890
+ const firstValue2 = iterator.next().value;
11891
+ array[0] = [firstValue2[0], firstValue2[1].value];
11892
+ assert(firstValue2[1].value !== null);
11893
11893
  for (let i = 1, j = 0, right = 0, left = 0, pivot = 0, x, value; i < size; ++i) {
11894
11894
  value = iterator.next().value;
11895
11895
  x = array[i] = [value[0], value[1].value];
@@ -15916,9 +15916,9 @@ var require_util6 = __commonJS({
15916
15916
  }
15917
15917
  }
15918
15918
  }
15919
- function validateCookiePath(path7) {
15920
- for (let i = 0; i < path7.length; ++i) {
15921
- const code = path7.charCodeAt(i);
15919
+ function validateCookiePath(path8) {
15920
+ for (let i = 0; i < path8.length; ++i) {
15921
+ const code = path8.charCodeAt(i);
15922
15922
  if (code < 32 || // exclude CTLs (0-31)
15923
15923
  code === 127 || // DEL
15924
15924
  code === 59) {
@@ -18595,11 +18595,11 @@ var require_undici = __commonJS({
18595
18595
  if (typeof opts.path !== "string") {
18596
18596
  throw new InvalidArgumentError("invalid opts.path");
18597
18597
  }
18598
- let path7 = opts.path;
18598
+ let path8 = opts.path;
18599
18599
  if (!opts.path.startsWith("/")) {
18600
- path7 = `/${path7}`;
18600
+ path8 = `/${path8}`;
18601
18601
  }
18602
- url = new URL(util.parseOrigin(url).origin + path7);
18602
+ url = new URL(util.parseOrigin(url).origin + path8);
18603
18603
  } else {
18604
18604
  if (!opts) {
18605
18605
  opts = typeof url === "object" ? url : {};
@@ -18747,17 +18747,17 @@ var require_visit = __commonJS({
18747
18747
  visit.BREAK = BREAK;
18748
18748
  visit.SKIP = SKIP;
18749
18749
  visit.REMOVE = REMOVE;
18750
- function visit_(key, node, visitor, path7) {
18751
- const ctrl = callVisitor(key, node, visitor, path7);
18750
+ function visit_(key, node, visitor, path8) {
18751
+ const ctrl = callVisitor(key, node, visitor, path8);
18752
18752
  if (identity.isNode(ctrl) || identity.isPair(ctrl)) {
18753
- replaceNode(key, path7, ctrl);
18754
- return visit_(key, ctrl, visitor, path7);
18753
+ replaceNode(key, path8, ctrl);
18754
+ return visit_(key, ctrl, visitor, path8);
18755
18755
  }
18756
18756
  if (typeof ctrl !== "symbol") {
18757
18757
  if (identity.isCollection(node)) {
18758
- path7 = Object.freeze(path7.concat(node));
18758
+ path8 = Object.freeze(path8.concat(node));
18759
18759
  for (let i = 0; i < node.items.length; ++i) {
18760
- const ci = visit_(i, node.items[i], visitor, path7);
18760
+ const ci = visit_(i, node.items[i], visitor, path8);
18761
18761
  if (typeof ci === "number")
18762
18762
  i = ci - 1;
18763
18763
  else if (ci === BREAK)
@@ -18768,13 +18768,13 @@ var require_visit = __commonJS({
18768
18768
  }
18769
18769
  }
18770
18770
  } else if (identity.isPair(node)) {
18771
- path7 = Object.freeze(path7.concat(node));
18772
- const ck = visit_("key", node.key, visitor, path7);
18771
+ path8 = Object.freeze(path8.concat(node));
18772
+ const ck = visit_("key", node.key, visitor, path8);
18773
18773
  if (ck === BREAK)
18774
18774
  return BREAK;
18775
18775
  else if (ck === REMOVE)
18776
18776
  node.key = null;
18777
- const cv = visit_("value", node.value, visitor, path7);
18777
+ const cv = visit_("value", node.value, visitor, path8);
18778
18778
  if (cv === BREAK)
18779
18779
  return BREAK;
18780
18780
  else if (cv === REMOVE)
@@ -18795,17 +18795,17 @@ var require_visit = __commonJS({
18795
18795
  visitAsync.BREAK = BREAK;
18796
18796
  visitAsync.SKIP = SKIP;
18797
18797
  visitAsync.REMOVE = REMOVE;
18798
- async function visitAsync_(key, node, visitor, path7) {
18799
- const ctrl = await callVisitor(key, node, visitor, path7);
18798
+ async function visitAsync_(key, node, visitor, path8) {
18799
+ const ctrl = await callVisitor(key, node, visitor, path8);
18800
18800
  if (identity.isNode(ctrl) || identity.isPair(ctrl)) {
18801
- replaceNode(key, path7, ctrl);
18802
- return visitAsync_(key, ctrl, visitor, path7);
18801
+ replaceNode(key, path8, ctrl);
18802
+ return visitAsync_(key, ctrl, visitor, path8);
18803
18803
  }
18804
18804
  if (typeof ctrl !== "symbol") {
18805
18805
  if (identity.isCollection(node)) {
18806
- path7 = Object.freeze(path7.concat(node));
18806
+ path8 = Object.freeze(path8.concat(node));
18807
18807
  for (let i = 0; i < node.items.length; ++i) {
18808
- const ci = await visitAsync_(i, node.items[i], visitor, path7);
18808
+ const ci = await visitAsync_(i, node.items[i], visitor, path8);
18809
18809
  if (typeof ci === "number")
18810
18810
  i = ci - 1;
18811
18811
  else if (ci === BREAK)
@@ -18816,13 +18816,13 @@ var require_visit = __commonJS({
18816
18816
  }
18817
18817
  }
18818
18818
  } else if (identity.isPair(node)) {
18819
- path7 = Object.freeze(path7.concat(node));
18820
- const ck = await visitAsync_("key", node.key, visitor, path7);
18819
+ path8 = Object.freeze(path8.concat(node));
18820
+ const ck = await visitAsync_("key", node.key, visitor, path8);
18821
18821
  if (ck === BREAK)
18822
18822
  return BREAK;
18823
18823
  else if (ck === REMOVE)
18824
18824
  node.key = null;
18825
- const cv = await visitAsync_("value", node.value, visitor, path7);
18825
+ const cv = await visitAsync_("value", node.value, visitor, path8);
18826
18826
  if (cv === BREAK)
18827
18827
  return BREAK;
18828
18828
  else if (cv === REMOVE)
@@ -18849,23 +18849,23 @@ var require_visit = __commonJS({
18849
18849
  }
18850
18850
  return visitor;
18851
18851
  }
18852
- function callVisitor(key, node, visitor, path7) {
18852
+ function callVisitor(key, node, visitor, path8) {
18853
18853
  if (typeof visitor === "function")
18854
- return visitor(key, node, path7);
18854
+ return visitor(key, node, path8);
18855
18855
  if (identity.isMap(node))
18856
- return visitor.Map?.(key, node, path7);
18856
+ return visitor.Map?.(key, node, path8);
18857
18857
  if (identity.isSeq(node))
18858
- return visitor.Seq?.(key, node, path7);
18858
+ return visitor.Seq?.(key, node, path8);
18859
18859
  if (identity.isPair(node))
18860
- return visitor.Pair?.(key, node, path7);
18860
+ return visitor.Pair?.(key, node, path8);
18861
18861
  if (identity.isScalar(node))
18862
- return visitor.Scalar?.(key, node, path7);
18862
+ return visitor.Scalar?.(key, node, path8);
18863
18863
  if (identity.isAlias(node))
18864
- return visitor.Alias?.(key, node, path7);
18864
+ return visitor.Alias?.(key, node, path8);
18865
18865
  return void 0;
18866
18866
  }
18867
- function replaceNode(key, path7, node) {
18868
- const parent = path7[path7.length - 1];
18867
+ function replaceNode(key, path8, node) {
18868
+ const parent = path8[path8.length - 1];
18869
18869
  if (identity.isCollection(parent)) {
18870
18870
  parent.items[key] = node;
18871
18871
  } else if (identity.isPair(parent)) {
@@ -19475,10 +19475,10 @@ var require_Collection = __commonJS({
19475
19475
  var createNode = require_createNode();
19476
19476
  var identity = require_identity();
19477
19477
  var Node = require_Node();
19478
- function collectionFromPath(schema2, path7, value) {
19478
+ function collectionFromPath(schema2, path8, value) {
19479
19479
  let v = value;
19480
- for (let i = path7.length - 1; i >= 0; --i) {
19481
- const k = path7[i];
19480
+ for (let i = path8.length - 1; i >= 0; --i) {
19481
+ const k = path8[i];
19482
19482
  if (typeof k === "number" && Number.isInteger(k) && k >= 0) {
19483
19483
  const a = [];
19484
19484
  a[k] = v;
@@ -19497,7 +19497,7 @@ var require_Collection = __commonJS({
19497
19497
  sourceObjects: /* @__PURE__ */ new Map()
19498
19498
  });
19499
19499
  }
19500
- var isEmptyPath = (path7) => path7 == null || typeof path7 === "object" && !!path7[Symbol.iterator]().next().done;
19500
+ var isEmptyPath = (path8) => path8 == null || typeof path8 === "object" && !!path8[Symbol.iterator]().next().done;
19501
19501
  var Collection = class extends Node.NodeBase {
19502
19502
  constructor(type2, schema2) {
19503
19503
  super(type2);
@@ -19527,11 +19527,11 @@ var require_Collection = __commonJS({
19527
19527
  * be a Pair instance or a `{ key, value }` object, which may not have a key
19528
19528
  * that already exists in the map.
19529
19529
  */
19530
- addIn(path7, value) {
19531
- if (isEmptyPath(path7))
19530
+ addIn(path8, value) {
19531
+ if (isEmptyPath(path8))
19532
19532
  this.add(value);
19533
19533
  else {
19534
- const [key, ...rest] = path7;
19534
+ const [key, ...rest] = path8;
19535
19535
  const node = this.get(key, true);
19536
19536
  if (identity.isCollection(node))
19537
19537
  node.addIn(rest, value);
@@ -19545,8 +19545,8 @@ var require_Collection = __commonJS({
19545
19545
  * Removes a value from the collection.
19546
19546
  * @returns `true` if the item was found and removed.
19547
19547
  */
19548
- deleteIn(path7) {
19549
- const [key, ...rest] = path7;
19548
+ deleteIn(path8) {
19549
+ const [key, ...rest] = path8;
19550
19550
  if (rest.length === 0)
19551
19551
  return this.delete(key);
19552
19552
  const node = this.get(key, true);
@@ -19560,8 +19560,8 @@ var require_Collection = __commonJS({
19560
19560
  * scalar values from their surrounding node; to disable set `keepScalar` to
19561
19561
  * `true` (collections are always returned intact).
19562
19562
  */
19563
- getIn(path7, keepScalar) {
19564
- const [key, ...rest] = path7;
19563
+ getIn(path8, keepScalar) {
19564
+ const [key, ...rest] = path8;
19565
19565
  const node = this.get(key, true);
19566
19566
  if (rest.length === 0)
19567
19567
  return !keepScalar && identity.isScalar(node) ? node.value : node;
@@ -19579,8 +19579,8 @@ var require_Collection = __commonJS({
19579
19579
  /**
19580
19580
  * Checks if the collection includes a value with the key `key`.
19581
19581
  */
19582
- hasIn(path7) {
19583
- const [key, ...rest] = path7;
19582
+ hasIn(path8) {
19583
+ const [key, ...rest] = path8;
19584
19584
  if (rest.length === 0)
19585
19585
  return this.has(key);
19586
19586
  const node = this.get(key, true);
@@ -19590,8 +19590,8 @@ var require_Collection = __commonJS({
19590
19590
  * Sets a value in this collection. For `!!set`, `value` needs to be a
19591
19591
  * boolean to add/remove the item from the set.
19592
19592
  */
19593
- setIn(path7, value) {
19594
- const [key, ...rest] = path7;
19593
+ setIn(path8, value) {
19594
+ const [key, ...rest] = path8;
19595
19595
  if (rest.length === 0) {
19596
19596
  this.set(key, value);
19597
19597
  } else {
@@ -22106,9 +22106,9 @@ var require_Document = __commonJS({
22106
22106
  this.contents.add(value);
22107
22107
  }
22108
22108
  /** Adds a value to the document. */
22109
- addIn(path7, value) {
22109
+ addIn(path8, value) {
22110
22110
  if (assertCollection(this.contents))
22111
- this.contents.addIn(path7, value);
22111
+ this.contents.addIn(path8, value);
22112
22112
  }
22113
22113
  /**
22114
22114
  * Create a new `Alias` node, ensuring that the target `node` has the required anchor.
@@ -22183,14 +22183,14 @@ var require_Document = __commonJS({
22183
22183
  * Removes a value from the document.
22184
22184
  * @returns `true` if the item was found and removed.
22185
22185
  */
22186
- deleteIn(path7) {
22187
- if (Collection.isEmptyPath(path7)) {
22186
+ deleteIn(path8) {
22187
+ if (Collection.isEmptyPath(path8)) {
22188
22188
  if (this.contents == null)
22189
22189
  return false;
22190
22190
  this.contents = null;
22191
22191
  return true;
22192
22192
  }
22193
- return assertCollection(this.contents) ? this.contents.deleteIn(path7) : false;
22193
+ return assertCollection(this.contents) ? this.contents.deleteIn(path8) : false;
22194
22194
  }
22195
22195
  /**
22196
22196
  * Returns item at `key`, or `undefined` if not found. By default unwraps
@@ -22205,10 +22205,10 @@ var require_Document = __commonJS({
22205
22205
  * scalar values from their surrounding node; to disable set `keepScalar` to
22206
22206
  * `true` (collections are always returned intact).
22207
22207
  */
22208
- getIn(path7, keepScalar) {
22209
- if (Collection.isEmptyPath(path7))
22208
+ getIn(path8, keepScalar) {
22209
+ if (Collection.isEmptyPath(path8))
22210
22210
  return !keepScalar && identity.isScalar(this.contents) ? this.contents.value : this.contents;
22211
- return identity.isCollection(this.contents) ? this.contents.getIn(path7, keepScalar) : void 0;
22211
+ return identity.isCollection(this.contents) ? this.contents.getIn(path8, keepScalar) : void 0;
22212
22212
  }
22213
22213
  /**
22214
22214
  * Checks if the document includes a value with the key `key`.
@@ -22219,10 +22219,10 @@ var require_Document = __commonJS({
22219
22219
  /**
22220
22220
  * Checks if the document includes a value at `path`.
22221
22221
  */
22222
- hasIn(path7) {
22223
- if (Collection.isEmptyPath(path7))
22222
+ hasIn(path8) {
22223
+ if (Collection.isEmptyPath(path8))
22224
22224
  return this.contents !== void 0;
22225
- return identity.isCollection(this.contents) ? this.contents.hasIn(path7) : false;
22225
+ return identity.isCollection(this.contents) ? this.contents.hasIn(path8) : false;
22226
22226
  }
22227
22227
  /**
22228
22228
  * Sets a value in this document. For `!!set`, `value` needs to be a
@@ -22239,13 +22239,13 @@ var require_Document = __commonJS({
22239
22239
  * Sets a value in this document. For `!!set`, `value` needs to be a
22240
22240
  * boolean to add/remove the item from the set.
22241
22241
  */
22242
- setIn(path7, value) {
22243
- if (Collection.isEmptyPath(path7)) {
22242
+ setIn(path8, value) {
22243
+ if (Collection.isEmptyPath(path8)) {
22244
22244
  this.contents = value;
22245
22245
  } else if (this.contents == null) {
22246
- this.contents = Collection.collectionFromPath(this.schema, Array.from(path7), value);
22246
+ this.contents = Collection.collectionFromPath(this.schema, Array.from(path8), value);
22247
22247
  } else if (assertCollection(this.contents)) {
22248
- this.contents.setIn(path7, value);
22248
+ this.contents.setIn(path8, value);
22249
22249
  }
22250
22250
  }
22251
22251
  /**
@@ -24205,9 +24205,9 @@ var require_cst_visit = __commonJS({
24205
24205
  visit.BREAK = BREAK;
24206
24206
  visit.SKIP = SKIP;
24207
24207
  visit.REMOVE = REMOVE;
24208
- visit.itemAtPath = (cst, path7) => {
24208
+ visit.itemAtPath = (cst, path8) => {
24209
24209
  let item = cst;
24210
- for (const [field, index] of path7) {
24210
+ for (const [field, index] of path8) {
24211
24211
  const tok = item?.[field];
24212
24212
  if (tok && "items" in tok) {
24213
24213
  item = tok.items[index];
@@ -24216,23 +24216,23 @@ var require_cst_visit = __commonJS({
24216
24216
  }
24217
24217
  return item;
24218
24218
  };
24219
- visit.parentCollection = (cst, path7) => {
24220
- const parent = visit.itemAtPath(cst, path7.slice(0, -1));
24221
- const field = path7[path7.length - 1][0];
24219
+ visit.parentCollection = (cst, path8) => {
24220
+ const parent = visit.itemAtPath(cst, path8.slice(0, -1));
24221
+ const field = path8[path8.length - 1][0];
24222
24222
  const coll = parent?.[field];
24223
24223
  if (coll && "items" in coll)
24224
24224
  return coll;
24225
24225
  throw new Error("Parent collection not found");
24226
24226
  };
24227
- function _visit(path7, item, visitor) {
24228
- let ctrl = visitor(item, path7);
24227
+ function _visit(path8, item, visitor) {
24228
+ let ctrl = visitor(item, path8);
24229
24229
  if (typeof ctrl === "symbol")
24230
24230
  return ctrl;
24231
24231
  for (const field of ["key", "value"]) {
24232
24232
  const token = item[field];
24233
24233
  if (token && "items" in token) {
24234
24234
  for (let i = 0; i < token.items.length; ++i) {
24235
- const ci = _visit(Object.freeze(path7.concat([[field, i]])), token.items[i], visitor);
24235
+ const ci = _visit(Object.freeze(path8.concat([[field, i]])), token.items[i], visitor);
24236
24236
  if (typeof ci === "number")
24237
24237
  i = ci - 1;
24238
24238
  else if (ci === BREAK)
@@ -24243,10 +24243,10 @@ var require_cst_visit = __commonJS({
24243
24243
  }
24244
24244
  }
24245
24245
  if (typeof ctrl === "function" && field === "key")
24246
- ctrl = ctrl(item, path7);
24246
+ ctrl = ctrl(item, path8);
24247
24247
  }
24248
24248
  }
24249
- return typeof ctrl === "function" ? ctrl(item, path7) : ctrl;
24249
+ return typeof ctrl === "function" ? ctrl(item, path8) : ctrl;
24250
24250
  }
24251
24251
  exports2.visit = visit;
24252
24252
  }
@@ -26186,7 +26186,7 @@ var require_scope_functions = __commonJS({
26186
26186
  var hasOwn = Function.prototype.call.bind(Object.prototype.hasOwnProperty);
26187
26187
  hasOwn[/* @__PURE__ */ Symbol.for("toJayString")] = "Function.prototype.call.bind(Object.prototype.hasOwnProperty)";
26188
26188
  var pointerPart = (s) => /~\//.test(s) ? `${s}`.replace(/~/g, "~0").replace(/\//g, "~1") : s;
26189
- var toPointer = (path7) => path7.length === 0 ? "#" : `#/${path7.map(pointerPart).join("/")}`;
26189
+ var toPointer = (path8) => path8.length === 0 ? "#" : `#/${path8.map(pointerPart).join("/")}`;
26190
26190
  var errorMerge = ({ keywordLocation, instanceLocation }, schemaBase, dataBase) => ({
26191
26191
  keywordLocation: `${schemaBase}${keywordLocation.slice(1)}`,
26192
26192
  instanceLocation: `${dataBase}${instanceLocation.slice(1)}`
@@ -26523,7 +26523,7 @@ var require_pointer = __commonJS({
26523
26523
  throw new Error("Unreachable");
26524
26524
  });
26525
26525
  }
26526
- function get2(obj, pointer, objpath) {
26526
+ function get3(obj, pointer, objpath) {
26527
26527
  if (typeof obj !== "object") throw new Error("Invalid input object");
26528
26528
  if (typeof pointer !== "string") throw new Error("Invalid JSON pointer");
26529
26529
  const parts = pointer.split("/");
@@ -26580,14 +26580,14 @@ var require_pointer = __commonJS({
26580
26580
  const visit = (sub, oldPath, specialChilds = false, dynamic = false) => {
26581
26581
  if (!sub || typeof sub !== "object") return;
26582
26582
  const id = sub.$id || sub.id;
26583
- let path7 = oldPath;
26583
+ let path8 = oldPath;
26584
26584
  if (id && typeof id === "string") {
26585
- path7 = joinPath(path7, id);
26586
- if (path7 === ptr || path7 === main && local === "") {
26585
+ path8 = joinPath(path8, id);
26586
+ if (path8 === ptr || path8 === main && local === "") {
26587
26587
  results.push([sub, root, oldPath]);
26588
- } else if (path7 === main && local[0] === "/") {
26588
+ } else if (path8 === main && local[0] === "/") {
26589
26589
  const objpath = [];
26590
- const res = get2(sub, local, objpath);
26590
+ const res = get3(sub, local, objpath);
26591
26591
  if (res !== void 0) results.push([res, root, joinPath(oldPath, objpath2path(objpath))]);
26592
26592
  }
26593
26593
  }
@@ -26595,20 +26595,20 @@ var require_pointer = __commonJS({
26595
26595
  if (anchor && typeof anchor === "string") {
26596
26596
  if (anchor.includes("#")) throw new Error("$anchor can't include '#'");
26597
26597
  if (anchor.startsWith("/")) throw new Error("$anchor can't start with '/'");
26598
- path7 = joinPath(path7, `#${anchor}`);
26599
- if (path7 === ptr) results.push([sub, root, oldPath]);
26598
+ path8 = joinPath(path8, `#${anchor}`);
26599
+ if (path8 === ptr) results.push([sub, root, oldPath]);
26600
26600
  }
26601
26601
  for (const k of Object.keys(sub)) {
26602
26602
  if (!specialChilds && !Array.isArray(sub) && !knownKeywords.includes(k)) continue;
26603
26603
  if (!specialChilds && skipChilds.includes(k)) continue;
26604
- visit(sub[k], path7, !specialChilds && withSpecialChilds.includes(k));
26604
+ visit(sub[k], path8, !specialChilds && withSpecialChilds.includes(k));
26605
26605
  }
26606
26606
  if (!dynamic && sub.$dynamicAnchor) visit(sub, oldPath, specialChilds, true);
26607
26607
  };
26608
26608
  visit(root, main);
26609
26609
  if (main === base.replace(/#$/, "") && (local[0] === "/" || local === "")) {
26610
26610
  const objpath = [];
26611
- const res = get2(root, local, objpath);
26611
+ const res = get3(root, local, objpath);
26612
26612
  if (res !== void 0) results.push([res, root, objpath2path(objpath)]);
26613
26613
  }
26614
26614
  if (schemas.has(main) && schemas.get(main) !== root) {
@@ -26661,7 +26661,7 @@ var require_pointer = __commonJS({
26661
26661
  }
26662
26662
  throw new Error("Unexpected value for 'schemas' option");
26663
26663
  };
26664
- module2.exports = { get: get2, joinPath, resolveReference, getDynamicAnchors, hasKeywords, buildSchemas };
26664
+ module2.exports = { get: get3, joinPath, resolveReference, getDynamicAnchors, hasKeywords, buildSchemas };
26665
26665
  }
26666
26666
  });
26667
26667
 
@@ -27047,14 +27047,14 @@ var require_compile = __commonJS({
27047
27047
  }
27048
27048
  const { gensym, getref, genref, genformat } = scopeMethods(scope);
27049
27049
  const buildPath = (prop) => {
27050
- const path7 = [];
27050
+ const path8 = [];
27051
27051
  let curr = prop;
27052
27052
  while (curr) {
27053
- if (!curr.name) path7.unshift(curr);
27053
+ if (!curr.name) path8.unshift(curr);
27054
27054
  curr = curr.parent || curr.errorParent;
27055
27055
  }
27056
- if (path7.every((part) => part.keyval !== void 0))
27057
- return format("%j", toPointer(path7.map((part) => part.keyval)));
27056
+ if (path8.every((part) => part.keyval !== void 0))
27057
+ return format("%j", toPointer(path8.map((part) => part.keyval)));
27058
27058
  const stringParts = ["#"];
27059
27059
  const stringJoined = () => {
27060
27060
  const value = stringParts.map(functions.pointerPart).join("/");
@@ -27062,7 +27062,7 @@ var require_compile = __commonJS({
27062
27062
  return value;
27063
27063
  };
27064
27064
  let res = null;
27065
- for (const { keyname, keyval, number } of path7) {
27065
+ for (const { keyname, keyval, number } of path8) {
27066
27066
  if (keyname) {
27067
27067
  if (!number) scope.pointerPart = functions.pointerPart;
27068
27068
  const value = number ? keyname : format("pointerPart(%s)", keyname);
@@ -27108,8 +27108,8 @@ var require_compile = __commonJS({
27108
27108
  const definitelyPresent = !current.parent || current.checked || current.inKeys && isJSON || queryCurrent().length > 0;
27109
27109
  const name = buildName(current);
27110
27110
  const currPropImm = (...args) => propimm(current, ...args);
27111
- const error2 = ({ path: path7 = [], prop = current, source, suberr }) => {
27112
- const schemaP = toPointer([...schemaPath, ...path7]);
27111
+ const error2 = ({ path: path8 = [], prop = current, source, suberr }) => {
27112
+ const schemaP = toPointer([...schemaPath, ...path8]);
27113
27113
  const dataP = includeErrors ? buildPath(prop) : null;
27114
27114
  if (includeErrors === true && errors && source) {
27115
27115
  scope.errorMerge = functions.errorMerge;
@@ -27181,7 +27181,7 @@ var require_compile = __commonJS({
27181
27181
  enforce(ruleTypes.some((t) => schemaTypes.get(t)(node[prop])), "Unexpected type for", prop);
27182
27182
  unused.delete(prop);
27183
27183
  };
27184
- const get2 = (prop, ...ruleTypes) => {
27184
+ const get3 = (prop, ...ruleTypes) => {
27185
27185
  if (node[prop] !== void 0) consume(prop, ...ruleTypes);
27186
27186
  return node[prop];
27187
27187
  };
@@ -27203,7 +27203,7 @@ var require_compile = __commonJS({
27203
27203
  return true;
27204
27204
  };
27205
27205
  if (node === root) {
27206
- saveMeta(get2("$schema", "string"));
27206
+ saveMeta(get3("$schema", "string"));
27207
27207
  handle("$vocabulary", ["object"], ($vocabulary) => {
27208
27208
  for (const [vocab, flag] of Object.entries($vocabulary)) {
27209
27209
  if (flag === false) continue;
@@ -27220,7 +27220,7 @@ var require_compile = __commonJS({
27220
27220
  for (const ignore of ["title", "description", "$comment"]) handle(ignore, ["string"], null);
27221
27221
  for (const ignore of ["deprecated", "readOnly", "writeOnly"]) handle(ignore, ["boolean"], null);
27222
27222
  handle("$defs", ["object"], null) || handle("definitions", ["object"], null);
27223
- const compileSub = (sub, subR, path7) => sub === schema2 ? safe("validate") : getref(sub) || compileSchema(sub, subR, opts, scope, path7);
27223
+ const compileSub = (sub, subR, path8) => sub === schema2 ? safe("validate") : getref(sub) || compileSchema(sub, subR, opts, scope, path8);
27224
27224
  const basePath = () => basePathStack.length > 0 ? basePathStack[basePathStack.length - 1] : "";
27225
27225
  const basePathStackLength = basePathStack.length;
27226
27226
  const setId = ($id) => {
@@ -27244,9 +27244,9 @@ var require_compile = __commonJS({
27244
27244
  if (node !== schema2) fun.write("dynLocal.unshift({})");
27245
27245
  for (const [key, subcheck] of allDynamic) {
27246
27246
  const resolved = resolveReference(root, schemas, `#${key}`, basePath());
27247
- const [sub, subRoot, path7] = resolved[0] || [];
27247
+ const [sub, subRoot, path8] = resolved[0] || [];
27248
27248
  enforce(sub === subcheck, `Unexpected $dynamicAnchor resolution: ${key}`);
27249
- const n = compileSub(sub, subRoot, path7);
27249
+ const n = compileSub(sub, subRoot, path8);
27250
27250
  fun.write("dynLocal[0][%j] = %s", `#${key}`, n);
27251
27251
  }
27252
27252
  }
@@ -27952,12 +27952,12 @@ var require_compile = __commonJS({
27952
27952
  if (local2.props) fun.write("const %s = [[], []]", local2.props);
27953
27953
  handle("$ref", ["string"], ($ref) => {
27954
27954
  const resolved = resolveReference(root, schemas, $ref, basePath());
27955
- const [sub, subRoot, path7] = resolved[0] || [];
27955
+ const [sub, subRoot, path8] = resolved[0] || [];
27956
27956
  if (!sub && sub !== false) {
27957
27957
  fail2("failed to resolve $ref:", $ref);
27958
27958
  if (lintOnly) return null;
27959
27959
  }
27960
- const n = compileSub(sub, subRoot, path7);
27960
+ const n = compileSub(sub, subRoot, path8);
27961
27961
  const rn = sub === schema2 ? funname : n;
27962
27962
  if (!scope[rn]) throw new Error("Unexpected: coherence check failed");
27963
27963
  if (!scope[rn][evaluatedStatic] && sub.type) {
@@ -27983,9 +27983,9 @@ var require_compile = __commonJS({
27983
27983
  if (!opts[optRecAnchors]) throw new Error("[opt] Recursive anchors are not enabled");
27984
27984
  enforce($recursiveRef === "#", 'Behavior of $recursiveRef is defined only for "#"');
27985
27985
  const resolved = resolveReference(root, schemas, "#", basePath());
27986
- const [sub, subRoot, path7] = resolved[0];
27986
+ const [sub, subRoot, path8] = resolved[0];
27987
27987
  laxMode(sub.$recursiveAnchor, "$recursiveRef without $recursiveAnchor");
27988
- const n = compileSub(sub, subRoot, path7);
27988
+ const n = compileSub(sub, subRoot, path8);
27989
27989
  const nrec = sub.$recursiveAnchor ? format("(recursive || %s)", n) : n;
27990
27990
  return applyRef(nrec, { path: ["$recursiveRef"] });
27991
27991
  });
@@ -28001,10 +28001,10 @@ var require_compile = __commonJS({
28001
28001
  return applyRef(nrec2, { path: ["$dynamicRef"] });
28002
28002
  }
28003
28003
  enforce(resolved[0], "$dynamicRef bookending resolution failed", $dynamicRef);
28004
- const [sub, subRoot, path7] = resolved[0];
28004
+ const [sub, subRoot, path8] = resolved[0];
28005
28005
  const ok2 = sub.$dynamicAnchor && `#${sub.$dynamicAnchor}` === dynamicTail;
28006
28006
  laxMode(ok2, "$dynamicRef without $dynamicAnchor in the same scope");
28007
- const n = compileSub(sub, subRoot, path7);
28007
+ const n = compileSub(sub, subRoot, path8);
28008
28008
  scope.dynamicResolve = functions.dynamicResolve;
28009
28009
  const nrec = ok2 ? format("(dynamicResolve(dynAnchors || [], %j) || %s)", dynamicTail, n) : n;
28010
28010
  return applyRef(nrec, { path: ["$dynamicRef"] });
@@ -28035,7 +28035,7 @@ var require_compile = __commonJS({
28035
28035
  };
28036
28036
  if (node.default !== void 0 && useDefaults) {
28037
28037
  if (definitelyPresent) fail2("Can not apply default value here (e.g. at root)");
28038
- const defvalue = get2("default", "jsonval");
28038
+ const defvalue = get3("default", "jsonval");
28039
28039
  fun.if(present(current), writeMain, () => fun.write("%s = %j", name, defvalue));
28040
28040
  } else {
28041
28041
  handle("default", ["jsonval"], null);
@@ -28339,59 +28339,59 @@ var require_url = __commonJS({
28339
28339
  return href;
28340
28340
  }
28341
28341
  if (typeof process !== "undefined" && process.cwd) {
28342
- const path7 = process.cwd();
28343
- const lastChar = path7.slice(-1);
28342
+ const path8 = process.cwd();
28343
+ const lastChar = path8.slice(-1);
28344
28344
  if (lastChar === "/" || lastChar === "\\") {
28345
- return path7;
28345
+ return path8;
28346
28346
  } else {
28347
- return path7 + "/";
28347
+ return path8 + "/";
28348
28348
  }
28349
28349
  }
28350
28350
  return "/";
28351
28351
  }
28352
- function getProtocol2(path7) {
28353
- const match = protocolPattern2.exec(path7 || "");
28352
+ function getProtocol2(path8) {
28353
+ const match = protocolPattern2.exec(path8 || "");
28354
28354
  if (match) {
28355
28355
  return match[1].toLowerCase();
28356
28356
  }
28357
28357
  return void 0;
28358
28358
  }
28359
- function getExtension2(path7) {
28360
- const lastDot = path7.lastIndexOf(".");
28359
+ function getExtension2(path8) {
28360
+ const lastDot = path8.lastIndexOf(".");
28361
28361
  if (lastDot >= 0) {
28362
- return stripQuery2(path7.substring(lastDot).toLowerCase());
28362
+ return stripQuery2(path8.substring(lastDot).toLowerCase());
28363
28363
  }
28364
28364
  return "";
28365
28365
  }
28366
- function stripQuery2(path7) {
28367
- const queryIndex = path7.indexOf("?");
28366
+ function stripQuery2(path8) {
28367
+ const queryIndex = path8.indexOf("?");
28368
28368
  if (queryIndex >= 0) {
28369
- path7 = path7.substring(0, queryIndex);
28369
+ path8 = path8.substring(0, queryIndex);
28370
28370
  }
28371
- return path7;
28371
+ return path8;
28372
28372
  }
28373
- function getHash2(path7) {
28374
- if (!path7) {
28373
+ function getHash2(path8) {
28374
+ if (!path8) {
28375
28375
  return "#";
28376
28376
  }
28377
- const hashIndex = path7.indexOf("#");
28377
+ const hashIndex = path8.indexOf("#");
28378
28378
  if (hashIndex >= 0) {
28379
- return path7.substring(hashIndex);
28379
+ return path8.substring(hashIndex);
28380
28380
  }
28381
28381
  return "#";
28382
28382
  }
28383
- function stripHash2(path7) {
28384
- if (!path7) {
28383
+ function stripHash2(path8) {
28384
+ if (!path8) {
28385
28385
  return "";
28386
28386
  }
28387
- const hashIndex = path7.indexOf("#");
28387
+ const hashIndex = path8.indexOf("#");
28388
28388
  if (hashIndex >= 0) {
28389
- path7 = path7.substring(0, hashIndex);
28389
+ path8 = path8.substring(0, hashIndex);
28390
28390
  }
28391
- return path7;
28391
+ return path8;
28392
28392
  }
28393
- function isHttp2(path7) {
28394
- const protocol = getProtocol2(path7);
28393
+ function isHttp2(path8) {
28394
+ const protocol = getProtocol2(path8);
28395
28395
  if (protocol === "http" || protocol === "https") {
28396
28396
  return true;
28397
28397
  } else if (protocol === void 0) {
@@ -28400,11 +28400,11 @@ var require_url = __commonJS({
28400
28400
  return false;
28401
28401
  }
28402
28402
  }
28403
- function isUnsafeUrl2(path7) {
28404
- if (!path7 || typeof path7 !== "string") {
28403
+ function isUnsafeUrl2(path8) {
28404
+ if (!path8 || typeof path8 !== "string") {
28405
28405
  return true;
28406
28406
  }
28407
- const normalizedPath = path7.trim().toLowerCase();
28407
+ const normalizedPath = path8.trim().toLowerCase();
28408
28408
  if (!normalizedPath) {
28409
28409
  return true;
28410
28410
  }
@@ -28535,58 +28535,58 @@ var require_url = __commonJS({
28535
28535
  ];
28536
28536
  return internalPorts.includes(port);
28537
28537
  }
28538
- function isFileSystemPath2(path7) {
28538
+ function isFileSystemPath2(path8) {
28539
28539
  if (typeof window !== "undefined" || typeof process !== "undefined" && process.browser) {
28540
28540
  return false;
28541
28541
  }
28542
- const protocol = getProtocol2(path7);
28542
+ const protocol = getProtocol2(path8);
28543
28543
  return protocol === void 0 || protocol === "file";
28544
28544
  }
28545
- function fromFileSystemPath2(path7) {
28545
+ function fromFileSystemPath2(path8) {
28546
28546
  if ((0, is_windows_1.isWindows)()) {
28547
28547
  const projectDir = cwd2();
28548
- const upperPath = path7.toUpperCase();
28548
+ const upperPath = path8.toUpperCase();
28549
28549
  const projectDirPosixPath = (0, convert_path_to_posix_1.default)(projectDir);
28550
28550
  const posixUpper = projectDirPosixPath.toUpperCase();
28551
28551
  const hasProjectDir = upperPath.includes(posixUpper);
28552
28552
  const hasProjectUri = upperPath.includes(posixUpper);
28553
- const isAbsolutePath = path_1.win32?.isAbsolute(path7) || path7.startsWith("http://") || path7.startsWith("https://") || path7.startsWith("file://");
28553
+ const isAbsolutePath = path_1.win32?.isAbsolute(path8) || path8.startsWith("http://") || path8.startsWith("https://") || path8.startsWith("file://");
28554
28554
  if (!(hasProjectDir || hasProjectUri || isAbsolutePath) && !projectDir.startsWith("http")) {
28555
- path7 = (0, path_2.join)(projectDir, path7);
28555
+ path8 = (0, path_2.join)(projectDir, path8);
28556
28556
  }
28557
- path7 = (0, convert_path_to_posix_1.default)(path7);
28557
+ path8 = (0, convert_path_to_posix_1.default)(path8);
28558
28558
  }
28559
- path7 = encodeURI(path7);
28559
+ path8 = encodeURI(path8);
28560
28560
  for (const pattern of urlEncodePatterns2) {
28561
- path7 = path7.replace(pattern[0], pattern[1]);
28561
+ path8 = path8.replace(pattern[0], pattern[1]);
28562
28562
  }
28563
- return path7;
28563
+ return path8;
28564
28564
  }
28565
- function toFileSystemPath2(path7, keepFileProtocol) {
28566
- path7 = decodeURI(path7);
28565
+ function toFileSystemPath2(path8, keepFileProtocol) {
28566
+ path8 = decodeURI(path8);
28567
28567
  for (let i = 0; i < urlDecodePatterns2.length; i += 2) {
28568
- path7 = path7.replace(urlDecodePatterns2[i], urlDecodePatterns2[i + 1]);
28568
+ path8 = path8.replace(urlDecodePatterns2[i], urlDecodePatterns2[i + 1]);
28569
28569
  }
28570
- let isFileUrl = path7.toLowerCase().startsWith("file://");
28570
+ let isFileUrl = path8.toLowerCase().startsWith("file://");
28571
28571
  if (isFileUrl) {
28572
- path7 = path7.replace(/^file:\/\//, "").replace(/^\//, "");
28573
- if ((0, is_windows_1.isWindows)() && path7[1] === "/") {
28574
- path7 = `${path7[0]}:${path7.substring(1)}`;
28572
+ path8 = path8.replace(/^file:\/\//, "").replace(/^\//, "");
28573
+ if ((0, is_windows_1.isWindows)() && path8[1] === "/") {
28574
+ path8 = `${path8[0]}:${path8.substring(1)}`;
28575
28575
  }
28576
28576
  if (keepFileProtocol) {
28577
- path7 = "file:///" + path7;
28577
+ path8 = "file:///" + path8;
28578
28578
  } else {
28579
28579
  isFileUrl = false;
28580
- path7 = (0, is_windows_1.isWindows)() ? path7 : "/" + path7;
28580
+ path8 = (0, is_windows_1.isWindows)() ? path8 : "/" + path8;
28581
28581
  }
28582
28582
  }
28583
28583
  if ((0, is_windows_1.isWindows)() && !isFileUrl) {
28584
- path7 = path7.replace(forwardSlashPattern2, "\\");
28585
- if (path7.match(/^[a-z]:\\/i)) {
28586
- path7 = path7[0].toUpperCase() + path7.substring(1);
28584
+ path8 = path8.replace(forwardSlashPattern2, "\\");
28585
+ if (path8.match(/^[a-z]:\\/i)) {
28586
+ path8 = path8[0].toUpperCase() + path8.substring(1);
28587
28587
  }
28588
28588
  }
28589
- return path7;
28589
+ return path8;
28590
28590
  }
28591
28591
  function safePointerToPath2(pointer) {
28592
28592
  if (pointer.length <= 1 || pointer[0] !== "#" || pointer[1] !== "/") {
@@ -28734,8 +28734,8 @@ var require_errors3 = __commonJS({
28734
28734
  targetRef;
28735
28735
  targetFound;
28736
28736
  parentPath;
28737
- constructor(token, path7, targetRef, targetFound, parentPath) {
28738
- super(`Missing $ref pointer "${(0, url_js_1.getHash)(path7)}". Token "${token}" does not exist.`, (0, url_js_1.stripHash)(path7));
28737
+ constructor(token, path8, targetRef, targetFound, parentPath) {
28738
+ super(`Missing $ref pointer "${(0, url_js_1.getHash)(path8)}". Token "${token}" does not exist.`, (0, url_js_1.stripHash)(path8));
28739
28739
  this.targetToken = token;
28740
28740
  this.targetRef = targetRef;
28741
28741
  this.targetFound = targetFound;
@@ -28754,8 +28754,8 @@ var require_errors3 = __commonJS({
28754
28754
  var InvalidPointerError2 = class extends JSONParserError2 {
28755
28755
  code = "EUNMATCHEDRESOLVER";
28756
28756
  name = "InvalidPointerError";
28757
- constructor(pointer, path7) {
28758
- super(`Invalid $ref pointer "${pointer}". Pointers must begin with "#/"`, (0, url_js_1.stripHash)(path7));
28757
+ constructor(pointer, path8) {
28758
+ super(`Invalid $ref pointer "${pointer}". Pointers must begin with "#/"`, (0, url_js_1.stripHash)(path8));
28759
28759
  }
28760
28760
  };
28761
28761
  exports2.InvalidPointerError = InvalidPointerError2;
@@ -28860,10 +28860,10 @@ var require_pointer2 = __commonJS({
28860
28860
  * Resolving a single pointer may require resolving multiple $Refs.
28861
28861
  */
28862
28862
  indirections;
28863
- constructor($ref, path7, friendlyPath) {
28863
+ constructor($ref, path8, friendlyPath) {
28864
28864
  this.$ref = $ref;
28865
- this.path = path7;
28866
- this.originalPath = friendlyPath || path7;
28865
+ this.path = path8;
28866
+ this.originalPath = friendlyPath || path8;
28867
28867
  this.value = void 0;
28868
28868
  this.circular = false;
28869
28869
  this.indirections = 0;
@@ -28909,10 +28909,10 @@ var require_pointer2 = __commonJS({
28909
28909
  continue;
28910
28910
  }
28911
28911
  this.value = null;
28912
- const path7 = this.$ref.path || "";
28913
- const targetRef = this.path.replace(path7, "");
28912
+ const path8 = this.$ref.path || "";
28913
+ const targetRef = this.path.replace(path8, "");
28914
28914
  const targetFound = _Pointer.join("", found);
28915
- const parentPath = pathFromRoot?.replace(path7, "");
28915
+ const parentPath = pathFromRoot?.replace(path8, "");
28916
28916
  throw new errors_js_1.MissingPointerError(token, decodeURI(this.originalPath), targetRef, targetFound, parentPath);
28917
28917
  } else {
28918
28918
  this.value = this.value[token];
@@ -28968,8 +28968,8 @@ var require_pointer2 = __commonJS({
28968
28968
  * @param [originalPath]
28969
28969
  * @returns
28970
28970
  */
28971
- static parse(path7, originalPath) {
28972
- const pointer = url.getHash(path7).substring(1);
28971
+ static parse(path8, originalPath) {
28972
+ const pointer = url.getHash(path8).substring(1);
28973
28973
  if (!pointer) {
28974
28974
  return [];
28975
28975
  }
@@ -28978,7 +28978,7 @@ var require_pointer2 = __commonJS({
28978
28978
  split[i] = safeDecodeURIComponent(split[i].replace(escapedSlash2, "/").replace(escapedTilde2, "~"));
28979
28979
  }
28980
28980
  if (split[0] !== "") {
28981
- throw new errors_js_1.InvalidPointerError(pointer, originalPath === void 0 ? path7 : originalPath);
28981
+ throw new errors_js_1.InvalidPointerError(pointer, originalPath === void 0 ? path8 : originalPath);
28982
28982
  }
28983
28983
  return split.slice(1);
28984
28984
  }
@@ -29156,9 +29156,9 @@ var require_ref = __commonJS({
29156
29156
  * @param options
29157
29157
  * @returns
29158
29158
  */
29159
- exists(path7, options) {
29159
+ exists(path8, options) {
29160
29160
  try {
29161
- this.resolve(path7, options);
29161
+ this.resolve(path8, options);
29162
29162
  return true;
29163
29163
  } catch {
29164
29164
  return false;
@@ -29171,8 +29171,8 @@ var require_ref = __commonJS({
29171
29171
  * @param options
29172
29172
  * @returns - Returns the resolved value
29173
29173
  */
29174
- get(path7, options) {
29175
- return this.resolve(path7, options)?.value;
29174
+ get(path8, options) {
29175
+ return this.resolve(path8, options)?.value;
29176
29176
  }
29177
29177
  /**
29178
29178
  * Resolves the given JSON reference within this {@link $Ref#value}.
@@ -29183,8 +29183,8 @@ var require_ref = __commonJS({
29183
29183
  * @param pathFromRoot - The path of `obj` from the schema root
29184
29184
  * @returns
29185
29185
  */
29186
- resolve(path7, options, friendlyPath, pathFromRoot) {
29187
- const pointer = new pointer_js_1.default(this, path7, friendlyPath);
29186
+ resolve(path8, options, friendlyPath, pathFromRoot) {
29187
+ const pointer = new pointer_js_1.default(this, path8, friendlyPath);
29188
29188
  try {
29189
29189
  const resolved = pointer.resolve(this.value, options, pathFromRoot);
29190
29190
  if (resolved.value === pointer_js_1.nullSymbol) {
@@ -29212,8 +29212,8 @@ var require_ref = __commonJS({
29212
29212
  * @param path - The full path of the property to set, optionally with a JSON pointer in the hash
29213
29213
  * @param value - The value to assign
29214
29214
  */
29215
- set(path7, value) {
29216
- const pointer = new pointer_js_1.default(this, path7);
29215
+ set(path8, value) {
29216
+ const pointer = new pointer_js_1.default(this, path8);
29217
29217
  this.value = pointer.set(this.value, value);
29218
29218
  if (this.value === pointer_js_1.nullSymbol) {
29219
29219
  this.value = null;
@@ -29410,8 +29410,8 @@ var require_refs = __commonJS({
29410
29410
  */
29411
29411
  paths(...types2) {
29412
29412
  const paths = getPaths2(this._$refs, types2.flat());
29413
- return paths.map((path7) => {
29414
- return (0, convert_path_to_posix_1.default)(path7.decoded);
29413
+ return paths.map((path8) => {
29414
+ return (0, convert_path_to_posix_1.default)(path8.decoded);
29415
29415
  });
29416
29416
  }
29417
29417
  /**
@@ -29424,8 +29424,8 @@ var require_refs = __commonJS({
29424
29424
  values(...types2) {
29425
29425
  const $refs = this._$refs;
29426
29426
  const paths = getPaths2($refs, types2.flat());
29427
- return paths.reduce((obj, path7) => {
29428
- obj[(0, convert_path_to_posix_1.default)(path7.decoded)] = $refs[path7.encoded].value;
29427
+ return paths.reduce((obj, path8) => {
29428
+ obj[(0, convert_path_to_posix_1.default)(path8.decoded)] = $refs[path8.encoded].value;
29429
29429
  return obj;
29430
29430
  }, {});
29431
29431
  }
@@ -29443,9 +29443,9 @@ var require_refs = __commonJS({
29443
29443
  * @param [options]
29444
29444
  * @returns
29445
29445
  */
29446
- exists(path7, options) {
29446
+ exists(path8, options) {
29447
29447
  try {
29448
- this._resolve(path7, "", options);
29448
+ this._resolve(path8, "", options);
29449
29449
  return true;
29450
29450
  } catch {
29451
29451
  return false;
@@ -29458,8 +29458,8 @@ var require_refs = __commonJS({
29458
29458
  * @param [options]
29459
29459
  * @returns - Returns the resolved value
29460
29460
  */
29461
- get(path7, options) {
29462
- return this._resolve(path7, "", options).value;
29461
+ get(path8, options) {
29462
+ return this._resolve(path8, "", options).value;
29463
29463
  }
29464
29464
  /**
29465
29465
  * Sets the value at the given path in the schema. If the property, or any of its parents, don't exist, they will be created.
@@ -29467,12 +29467,12 @@ var require_refs = __commonJS({
29467
29467
  * @param path The JSON Reference path, optionally with a JSON Pointer in the hash
29468
29468
  * @param value The value to assign. Can be anything (object, string, number, etc.)
29469
29469
  */
29470
- set(path7, value) {
29471
- const absPath = url.resolve(this._root$Ref.path, path7);
29470
+ set(path8, value) {
29471
+ const absPath = url.resolve(this._root$Ref.path, path8);
29472
29472
  const withoutHash = url.stripHash(absPath);
29473
29473
  const $ref = this._$refs[withoutHash];
29474
29474
  if (!$ref) {
29475
- throw new Error(`Error resolving $ref pointer "${path7}".
29475
+ throw new Error(`Error resolving $ref pointer "${path8}".
29476
29476
  "${withoutHash}" not found.`);
29477
29477
  }
29478
29478
  $ref.set(absPath, value);
@@ -29484,9 +29484,9 @@ var require_refs = __commonJS({
29484
29484
  * @returns
29485
29485
  * @protected
29486
29486
  */
29487
- _get$Ref(path7) {
29488
- path7 = url.resolve(this._root$Ref.path, path7);
29489
- const withoutHash = url.stripHash(path7);
29487
+ _get$Ref(path8) {
29488
+ path8 = url.resolve(this._root$Ref.path, path8);
29489
+ const withoutHash = url.stripHash(path8);
29490
29490
  return this._$refs[withoutHash];
29491
29491
  }
29492
29492
  /**
@@ -29494,8 +29494,8 @@ var require_refs = __commonJS({
29494
29494
  *
29495
29495
  * @param path - The file path or URL of the referenced file
29496
29496
  */
29497
- _add(path7) {
29498
- const withoutHash = url.stripHash(path7);
29497
+ _add(path8) {
29498
+ const withoutHash = url.stripHash(path8);
29499
29499
  const $ref = new ref_js_1.default(this);
29500
29500
  $ref.path = withoutHash;
29501
29501
  this._$refs[withoutHash] = $ref;
@@ -29511,15 +29511,15 @@ var require_refs = __commonJS({
29511
29511
  * @returns
29512
29512
  * @protected
29513
29513
  */
29514
- _resolve(path7, pathFromRoot, options) {
29515
- const absPath = url.resolve(this._root$Ref.path, path7);
29514
+ _resolve(path8, pathFromRoot, options) {
29515
+ const absPath = url.resolve(this._root$Ref.path, path8);
29516
29516
  const withoutHash = url.stripHash(absPath);
29517
29517
  const $ref = this._$refs[withoutHash];
29518
29518
  if (!$ref) {
29519
- throw new Error(`Error resolving $ref pointer "${path7}".
29519
+ throw new Error(`Error resolving $ref pointer "${path8}".
29520
29520
  "${withoutHash}" not found.`);
29521
29521
  }
29522
- return $ref.resolve(absPath, options, path7, pathFromRoot);
29522
+ return $ref.resolve(absPath, options, path8, pathFromRoot);
29523
29523
  }
29524
29524
  /**
29525
29525
  * A map of paths/urls to {@link $Ref} objects
@@ -29569,10 +29569,10 @@ var require_refs = __commonJS({
29569
29569
  return types2.includes($refs[key].pathType);
29570
29570
  });
29571
29571
  }
29572
- return paths.map((path7) => {
29572
+ return paths.map((path8) => {
29573
29573
  return {
29574
- encoded: path7,
29575
- decoded: $refs[path7].pathType === "file" ? url.toFileSystemPath(path7, true) : path7
29574
+ encoded: path8,
29575
+ decoded: $refs[path8].pathType === "file" ? url.toFileSystemPath(path8, true) : path8
29576
29576
  };
29577
29577
  });
29578
29578
  }
@@ -29719,18 +29719,18 @@ var require_parse2 = __commonJS({
29719
29719
  var url = __importStar(require_url());
29720
29720
  var plugins = __importStar(require_plugins());
29721
29721
  var errors_js_1 = require_errors3();
29722
- async function parse6(path7, $refs, options) {
29723
- const hashIndex = path7.indexOf("#");
29722
+ async function parse6(path8, $refs, options) {
29723
+ const hashIndex = path8.indexOf("#");
29724
29724
  let hash = "";
29725
29725
  if (hashIndex >= 0) {
29726
- hash = path7.substring(hashIndex);
29727
- path7 = path7.substring(0, hashIndex);
29726
+ hash = path8.substring(hashIndex);
29727
+ path8 = path8.substring(0, hashIndex);
29728
29728
  }
29729
- const $ref = $refs._add(path7);
29729
+ const $ref = $refs._add(path8);
29730
29730
  const file = {
29731
- url: path7,
29731
+ url: path8,
29732
29732
  hash,
29733
- extension: url.getExtension(path7)
29733
+ extension: url.getExtension(path8)
29734
29734
  };
29735
29735
  try {
29736
29736
  const resolver = await readFile3(file, options, $refs);
@@ -32863,23 +32863,23 @@ var require_file2 = __commonJS({
32863
32863
  * Reads the given file and returns its raw contents as a Buffer.
32864
32864
  */
32865
32865
  async read(file) {
32866
- let path7;
32866
+ let path8;
32867
32867
  try {
32868
- path7 = url.toFileSystemPath(file.url);
32868
+ path8 = url.toFileSystemPath(file.url);
32869
32869
  } catch (err) {
32870
32870
  const e = err;
32871
32871
  e.message = `Malformed URI: ${file.url}: ${e.message}`;
32872
32872
  throw new errors_js_1.ResolverError(e, file.url);
32873
32873
  }
32874
- if (path7.endsWith("/") || path7.endsWith("\\")) {
32875
- path7 = path7.slice(0, -1);
32874
+ if (path8.endsWith("/") || path8.endsWith("\\")) {
32875
+ path8 = path8.slice(0, -1);
32876
32876
  }
32877
32877
  try {
32878
- return await fs_1.default.promises.readFile(path7);
32878
+ return await fs_1.default.promises.readFile(path8);
32879
32879
  } catch (err) {
32880
32880
  const e = err;
32881
- e.message = `Error opening file ${path7}: ${e.message}`;
32882
- throw new errors_js_1.ResolverError(e, path7);
32881
+ e.message = `Error opening file ${path8}: ${e.message}`;
32882
+ throw new errors_js_1.ResolverError(e, path8);
32883
32883
  }
32884
32884
  }
32885
32885
  };
@@ -32988,7 +32988,7 @@ var require_http = __commonJS({
32988
32988
  const redirects = _redirects || [];
32989
32989
  redirects.push(u.href);
32990
32990
  try {
32991
- const res = await get2(u, httpOptions);
32991
+ const res = await get3(u, httpOptions);
32992
32992
  if (res.status >= 400) {
32993
32993
  const error2 = new Error(`HTTP ERROR ${res.status}`);
32994
32994
  error2.status = res.status;
@@ -33021,7 +33021,7 @@ Too many redirects:
33021
33021
  throw new errors_js_1.ResolverError(e, u.href);
33022
33022
  }
33023
33023
  }
33024
- async function get2(u, httpOptions) {
33024
+ async function get3(u, httpOptions) {
33025
33025
  let controller;
33026
33026
  let timeoutId;
33027
33027
  if (httpOptions.timeout) {
@@ -33173,7 +33173,7 @@ var require_normalize_args = __commonJS({
33173
33173
  exports2.normalizeArgs = normalizeArgs2;
33174
33174
  var options_js_1 = require_options();
33175
33175
  function normalizeArgs2(_args) {
33176
- let path7;
33176
+ let path8;
33177
33177
  let schema2;
33178
33178
  let options;
33179
33179
  let callback;
@@ -33182,7 +33182,7 @@ var require_normalize_args = __commonJS({
33182
33182
  callback = args.pop();
33183
33183
  }
33184
33184
  if (typeof args[0] === "string") {
33185
- path7 = args[0];
33185
+ path8 = args[0];
33186
33186
  if (typeof args[2] === "object") {
33187
33187
  schema2 = args[1];
33188
33188
  options = args[2];
@@ -33191,7 +33191,7 @@ var require_normalize_args = __commonJS({
33191
33191
  options = args[1];
33192
33192
  }
33193
33193
  } else {
33194
- path7 = "";
33194
+ path8 = "";
33195
33195
  schema2 = args[0];
33196
33196
  options = args[1];
33197
33197
  }
@@ -33204,7 +33204,7 @@ var require_normalize_args = __commonJS({
33204
33204
  schema2 = JSON.parse(JSON.stringify(schema2));
33205
33205
  }
33206
33206
  return {
33207
- path: path7,
33207
+ path: path8,
33208
33208
  schema: schema2,
33209
33209
  options,
33210
33210
  callback
@@ -33275,26 +33275,26 @@ var require_resolve_external = __commonJS({
33275
33275
  return Promise.reject(e);
33276
33276
  }
33277
33277
  }
33278
- function crawl4(obj, path7, $refs, options, seen, external) {
33278
+ function crawl4(obj, path8, $refs, options, seen, external) {
33279
33279
  seen ||= /* @__PURE__ */ new Set();
33280
33280
  let promises3 = [];
33281
33281
  if (obj && typeof obj === "object" && !ArrayBuffer.isView(obj) && !seen.has(obj)) {
33282
33282
  seen.add(obj);
33283
33283
  if (ref_js_1.default.isExternal$Ref(obj)) {
33284
- promises3.push(resolve$Ref2(obj, path7, $refs, options));
33284
+ promises3.push(resolve$Ref2(obj, path8, $refs, options));
33285
33285
  }
33286
33286
  const keys = Object.keys(obj);
33287
33287
  for (const key of keys) {
33288
- const keyPath = pointer_js_1.default.join(path7, key);
33288
+ const keyPath = pointer_js_1.default.join(path8, key);
33289
33289
  const value = obj[key];
33290
33290
  promises3 = promises3.concat(crawl4(value, keyPath, $refs, options, seen, external));
33291
33291
  }
33292
33292
  }
33293
33293
  return promises3;
33294
33294
  }
33295
- async function resolve$Ref2($ref, path7, $refs, options) {
33295
+ async function resolve$Ref2($ref, path8, $refs, options) {
33296
33296
  const shouldResolveOnCwd = options.dereference?.externalReferenceResolution === "root";
33297
- const resolvedPath = url.resolve(shouldResolveOnCwd ? url.cwd() : path7, $ref.$ref);
33297
+ const resolvedPath = url.resolve(shouldResolveOnCwd ? url.cwd() : path8, $ref.$ref);
33298
33298
  const withoutHash = url.stripHash(resolvedPath);
33299
33299
  const ref = $refs._$refs[withoutHash];
33300
33300
  if (ref) {
@@ -33309,8 +33309,8 @@ var require_resolve_external = __commonJS({
33309
33309
  throw err;
33310
33310
  }
33311
33311
  if ($refs._$refs[withoutHash]) {
33312
- err.source = decodeURI(url.stripHash(path7));
33313
- err.path = url.safePointerToPath(url.getHash(path7));
33312
+ err.source = decodeURI(url.stripHash(path8));
33313
+ err.path = url.safePointerToPath(url.getHash(path8));
33314
33314
  }
33315
33315
  return [];
33316
33316
  }
@@ -33372,13 +33372,13 @@ var require_bundle = __commonJS({
33372
33372
  crawl4(parser, "schema", parser.$refs._root$Ref.path + "#", "#", 0, inventory, parser.$refs, options);
33373
33373
  remap2(inventory);
33374
33374
  }
33375
- function crawl4(parent, key, path7, pathFromRoot, indirections, inventory, $refs, options) {
33375
+ function crawl4(parent, key, path8, pathFromRoot, indirections, inventory, $refs, options) {
33376
33376
  const obj = key === null ? parent : parent[key];
33377
33377
  const bundleOptions = options.bundle || {};
33378
33378
  const isExcludedPath = bundleOptions.excludedPathMatcher || (() => false);
33379
33379
  if (obj && typeof obj === "object" && !ArrayBuffer.isView(obj) && !isExcludedPath(pathFromRoot)) {
33380
33380
  if (ref_js_1.default.isAllowed$Ref(obj)) {
33381
- inventory$Ref2(parent, key, path7, pathFromRoot, indirections, inventory, $refs, options);
33381
+ inventory$Ref2(parent, key, path8, pathFromRoot, indirections, inventory, $refs, options);
33382
33382
  } else {
33383
33383
  const keys = Object.keys(obj).sort((a, b) => {
33384
33384
  if (a === "definitions" || a === "$defs") {
@@ -33390,11 +33390,11 @@ var require_bundle = __commonJS({
33390
33390
  }
33391
33391
  });
33392
33392
  for (const key2 of keys) {
33393
- const keyPath = pointer_js_1.default.join(path7, key2);
33393
+ const keyPath = pointer_js_1.default.join(path8, key2);
33394
33394
  const keyPathFromRoot = pointer_js_1.default.join(pathFromRoot, key2);
33395
33395
  const value = obj[key2];
33396
33396
  if (ref_js_1.default.isAllowed$Ref(value)) {
33397
- inventory$Ref2(obj, key2, path7, keyPathFromRoot, indirections, inventory, $refs, options);
33397
+ inventory$Ref2(obj, key2, path8, keyPathFromRoot, indirections, inventory, $refs, options);
33398
33398
  } else {
33399
33399
  crawl4(obj, key2, keyPath, keyPathFromRoot, indirections, inventory, $refs, options);
33400
33400
  }
@@ -33407,9 +33407,9 @@ var require_bundle = __commonJS({
33407
33407
  }
33408
33408
  }
33409
33409
  }
33410
- function inventory$Ref2($refParent, $refKey, path7, pathFromRoot, indirections, inventory, $refs, options) {
33410
+ function inventory$Ref2($refParent, $refKey, path8, pathFromRoot, indirections, inventory, $refs, options) {
33411
33411
  const $ref = $refKey === null ? $refParent : $refParent[$refKey];
33412
- const $refPath = url.resolve(path7, $ref.$ref);
33412
+ const $refPath = url.resolve(path8, $ref.$ref);
33413
33413
  const pointer = $refs._resolve($refPath, pathFromRoot, options);
33414
33414
  if (pointer === null) {
33415
33415
  return;
@@ -33574,7 +33574,7 @@ var require_dereference = __commonJS({
33574
33574
  parser.$refs.circular = dereferenced.circular;
33575
33575
  parser.schema = dereferenced.value;
33576
33576
  }
33577
- function crawl4(obj, path7, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime) {
33577
+ function crawl4(obj, path8, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime) {
33578
33578
  let dereferenced;
33579
33579
  const result = {
33580
33580
  value: obj,
@@ -33588,13 +33588,13 @@ var require_dereference = __commonJS({
33588
33588
  parents.add(obj);
33589
33589
  processedObjects.add(obj);
33590
33590
  if (ref_js_1.default.isAllowed$Ref(obj, options)) {
33591
- dereferenced = dereference$Ref2(obj, path7, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime);
33591
+ dereferenced = dereference$Ref2(obj, path8, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime);
33592
33592
  result.circular = dereferenced.circular;
33593
33593
  result.value = dereferenced.value;
33594
33594
  } else {
33595
33595
  for (const key of Object.keys(obj)) {
33596
33596
  checkDereferenceTimeout2(startTime, options);
33597
- const keyPath = pointer_js_1.default.join(path7, key);
33597
+ const keyPath = pointer_js_1.default.join(path8, key);
33598
33598
  const keyPathFromRoot = pointer_js_1.default.join(pathFromRoot, key);
33599
33599
  if (isExcludedPath(keyPathFromRoot)) {
33600
33600
  continue;
@@ -33644,10 +33644,10 @@ var require_dereference = __commonJS({
33644
33644
  }
33645
33645
  return result;
33646
33646
  }
33647
- function dereference$Ref2($ref, path7, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime) {
33647
+ function dereference$Ref2($ref, path8, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime) {
33648
33648
  const isExternalRef = ref_js_1.default.isExternal$Ref($ref);
33649
33649
  const shouldResolveOnCwd = isExternalRef && options?.dereference?.externalReferenceResolution === "root";
33650
- const $refPath = url.resolve(shouldResolveOnCwd ? url.cwd() : path7, $ref.$ref);
33650
+ const $refPath = url.resolve(shouldResolveOnCwd ? url.cwd() : path8, $ref.$ref);
33651
33651
  const cache = dereferencedCache.get($refPath);
33652
33652
  if (cache) {
33653
33653
  if (!cache.circular) {
@@ -33675,7 +33675,7 @@ var require_dereference = __commonJS({
33675
33675
  return cache;
33676
33676
  }
33677
33677
  }
33678
- const pointer = $refs._resolve($refPath, path7, options);
33678
+ const pointer = $refs._resolve($refPath, path8, options);
33679
33679
  if (pointer === null) {
33680
33680
  return {
33681
33681
  circular: false,
@@ -33685,7 +33685,7 @@ var require_dereference = __commonJS({
33685
33685
  const directCircular = pointer.circular;
33686
33686
  let circular = directCircular || parents.has(pointer.value);
33687
33687
  if (circular) {
33688
- foundCircularReference2(path7, $refs, options);
33688
+ foundCircularReference2(path8, $refs, options);
33689
33689
  }
33690
33690
  let dereferencedValue = ref_js_1.default.dereference($ref, pointer.value);
33691
33691
  if (!circular) {
@@ -35661,13 +35661,13 @@ var require_json3 = __commonJS({
35661
35661
  });
35662
35662
  Object.defineProperty(exports2, "getDecoratedDataPath", {
35663
35663
  enumerable: true,
35664
- get: function get2() {
35664
+ get: function get3() {
35665
35665
  return _getDecoratedDataPath["default"];
35666
35666
  }
35667
35667
  });
35668
35668
  Object.defineProperty(exports2, "getMetaFromPath", {
35669
35669
  enumerable: true,
35670
- get: function get2() {
35670
+ get: function get3() {
35671
35671
  return _getMetaFromPath["default"];
35672
35672
  }
35673
35673
  });
@@ -35712,7 +35712,7 @@ var require_base = __commonJS({
35712
35712
  // creating an empty proxy that'll just return the arguments of any color functions we
35713
35713
  // invoke, sans any colorization.
35714
35714
  new Proxy({}, {
35715
- get: function get2() {
35715
+ get: function get3() {
35716
35716
  return function(arg) {
35717
35717
  return arg;
35718
35718
  };
@@ -35763,7 +35763,7 @@ var require_base = __commonJS({
35763
35763
  */
35764
35764
  }, {
35765
35765
  key: "instancePath",
35766
- get: function get2() {
35766
+ get: function get3() {
35767
35767
  return typeof this.options.instancePath !== "undefined" ? this.options.instancePath : this.options.dataPath;
35768
35768
  }
35769
35769
  }, {
@@ -36011,7 +36011,7 @@ var require_jsonpointer = __commonJS({
36011
36011
  }
36012
36012
  throw new Error("Invalid JSON pointer.");
36013
36013
  }
36014
- function get2(obj, pointer) {
36014
+ function get3(obj, pointer) {
36015
36015
  if (typeof obj !== "object") throw new Error("Invalid input object.");
36016
36016
  pointer = compilePointer(pointer);
36017
36017
  var len = pointer.length;
@@ -36032,14 +36032,14 @@ var require_jsonpointer = __commonJS({
36032
36032
  var compiled = compilePointer(pointer);
36033
36033
  return {
36034
36034
  get: function(object) {
36035
- return get2(object, compiled);
36035
+ return get3(object, compiled);
36036
36036
  },
36037
36037
  set: function(object, value) {
36038
36038
  return set2(object, compiled, value);
36039
36039
  }
36040
36040
  };
36041
36041
  }
36042
- exports2.get = get2;
36042
+ exports2.get = get3;
36043
36043
  exports2.set = set2;
36044
36044
  exports2.compile = compile;
36045
36045
  }
@@ -36526,37 +36526,37 @@ var require_validation_errors = __commonJS({
36526
36526
  });
36527
36527
  Object.defineProperty(exports2, "AdditionalPropValidationError", {
36528
36528
  enumerable: true,
36529
- get: function get2() {
36529
+ get: function get3() {
36530
36530
  return _additionalProp["default"];
36531
36531
  }
36532
36532
  });
36533
36533
  Object.defineProperty(exports2, "DefaultValidationError", {
36534
36534
  enumerable: true,
36535
- get: function get2() {
36535
+ get: function get3() {
36536
36536
  return _default2["default"];
36537
36537
  }
36538
36538
  });
36539
36539
  Object.defineProperty(exports2, "EnumValidationError", {
36540
36540
  enumerable: true,
36541
- get: function get2() {
36541
+ get: function get3() {
36542
36542
  return _enum["default"];
36543
36543
  }
36544
36544
  });
36545
36545
  Object.defineProperty(exports2, "PatternValidationError", {
36546
36546
  enumerable: true,
36547
- get: function get2() {
36547
+ get: function get3() {
36548
36548
  return _pattern["default"];
36549
36549
  }
36550
36550
  });
36551
36551
  Object.defineProperty(exports2, "RequiredValidationError", {
36552
36552
  enumerable: true,
36553
- get: function get2() {
36553
+ get: function get3() {
36554
36554
  return _required["default"];
36555
36555
  }
36556
36556
  });
36557
36557
  Object.defineProperty(exports2, "UnevaluatedPropValidationError", {
36558
36558
  enumerable: true,
36559
- get: function get2() {
36559
+ get: function get3() {
36560
36560
  return _unevaluatedProp["default"];
36561
36561
  }
36562
36562
  });
@@ -36617,15 +36617,15 @@ var require_helpers = __commonJS({
36617
36617
  var instancePath = typeof ajvError.instancePath !== "undefined" ? ajvError.instancePath : ajvError.dataPath;
36618
36618
  var paths = instancePath === "" ? [""] : instancePath.match(JSON_POINTERS_REGEX);
36619
36619
  if (paths) {
36620
- paths.reduce(function(obj, path7, i) {
36621
- obj.children[path7] = obj.children[path7] || {
36620
+ paths.reduce(function(obj, path8, i) {
36621
+ obj.children[path8] = obj.children[path8] || {
36622
36622
  children: {},
36623
36623
  errors: []
36624
36624
  };
36625
36625
  if (i === paths.length - 1) {
36626
- obj.children[path7].errors.push(ajvError);
36626
+ obj.children[path8].errors.push(ajvError);
36627
36627
  }
36628
- return obj.children[path7];
36628
+ return obj.children[path8];
36629
36629
  }, root);
36630
36630
  }
36631
36631
  });
@@ -39933,8 +39933,8 @@ var require_utils4 = __commonJS({
39933
39933
  }
39934
39934
  return ind;
39935
39935
  }
39936
- function removeDotSegments(path7) {
39937
- let input = path7;
39936
+ function removeDotSegments(path8) {
39937
+ let input = path8;
39938
39938
  const output = [];
39939
39939
  let nextSlash = -1;
39940
39940
  let len = 0;
@@ -40186,8 +40186,8 @@ var require_schemes = __commonJS({
40186
40186
  wsComponent.secure = void 0;
40187
40187
  }
40188
40188
  if (wsComponent.resourceName) {
40189
- const [path7, query] = wsComponent.resourceName.split("?");
40190
- wsComponent.path = path7 && path7 !== "/" ? path7 : void 0;
40189
+ const [path8, query] = wsComponent.resourceName.split("?");
40190
+ wsComponent.path = path8 && path8 !== "/" ? path8 : void 0;
40191
40191
  wsComponent.query = query;
40192
40192
  wsComponent.resourceName = void 0;
40193
40193
  }
@@ -46633,8 +46633,8 @@ function getIDToken(aud) {
46633
46633
  }
46634
46634
 
46635
46635
  // src/index.ts
46636
- var import_node_crypto = require("node:crypto");
46637
- var import_node_fs2 = require("node:fs");
46636
+ var import_node_crypto2 = require("node:crypto");
46637
+ var import_node_fs3 = require("node:fs");
46638
46638
  var import_yaml3 = __toESM(require_dist(), 1);
46639
46639
 
46640
46640
  // src/contracts.ts
@@ -46726,6 +46726,35 @@ var customerPreviewActionContract = {
46726
46726
  default: "",
46727
46727
  allowedValues: ["3.0", "3.1"]
46728
46728
  },
46729
+ "breaking-change-mode": {
46730
+ description: "OpenAPI breaking-change comparison mode.",
46731
+ required: false,
46732
+ default: "off",
46733
+ allowedValues: ["off", "pr-native", "baseline-only", "previous-spec"]
46734
+ },
46735
+ "breaking-baseline-spec-path": {
46736
+ description: "Workspace-relative baseline OpenAPI spec path used by baseline-only mode and pr-native fallback.",
46737
+ required: false
46738
+ },
46739
+ "breaking-rules-path": {
46740
+ description: "Workspace-relative openapi-changes rules file. Missing files are ignored.",
46741
+ required: false,
46742
+ default: "changes-rules.yaml"
46743
+ },
46744
+ "breaking-target-ref": {
46745
+ description: "Optional target branch or git ref override for pr-native breaking-change comparisons.",
46746
+ required: false
46747
+ },
46748
+ "breaking-summary-path": {
46749
+ description: "Optional markdown report output path. Defaults to a runner-temp file.",
46750
+ required: false,
46751
+ default: ""
46752
+ },
46753
+ "breaking-log-path": {
46754
+ description: "Optional raw command log output path. Defaults to a runner-temp file.",
46755
+ required: false,
46756
+ default: ""
46757
+ },
46729
46758
  "governance-mapping-json": {
46730
46759
  description: "Legacy JSON map of business domain to governance group name. Prefer governance-group or the postman-governance-group repository custom property.",
46731
46760
  required: false,
@@ -46804,6 +46833,12 @@ var customerPreviewActionContract = {
46804
46833
  },
46805
46834
  "lint-summary-json": {
46806
46835
  description: "JSON summary of lint errors and warnings."
46836
+ },
46837
+ "breaking-change-status": {
46838
+ description: "OpenAPI breaking-change check status."
46839
+ },
46840
+ "breaking-change-summary-json": {
46841
+ description: "JSON summary of the OpenAPI breaking-change check."
46807
46842
  }
46808
46843
  },
46809
46844
  retainedBehavior: [
@@ -46813,6 +46848,7 @@ var customerPreviewActionContract = {
46813
46848
  "workspace admin assignment",
46814
46849
  "spec upload to Spec Hub",
46815
46850
  "OpenAPI operation summary normalization before upload (missing or oversized summaries)",
46851
+ "optional OpenAPI breaking-change detection before Postman mutations",
46816
46852
  "spec linting by UID",
46817
46853
  "baseline, smoke, and contract collection generation",
46818
46854
  "collection refresh and versioning policies",
@@ -46908,10 +46944,10 @@ function sanitizeHeaders(headers, secretValues) {
46908
46944
  }
46909
46945
 
46910
46946
  // src/lib/github/github-api-client.ts
46911
- function buildErrorMessage(method, path7, response, body, masker) {
46947
+ function buildErrorMessage(method, path8, response, body, masker) {
46912
46948
  const status = `${response.status}${response.statusText ? ` ${response.statusText}` : ""}`;
46913
46949
  const sanitizedBody = masker(body || "");
46914
- return sanitizedBody ? masker(`${method} ${path7} failed with ${status} - ${sanitizedBody}`) : masker(`${method} ${path7} failed with ${status} - [REDACTED]`);
46950
+ return sanitizedBody ? masker(`${method} ${path8} failed with ${status} - ${sanitizedBody}`) : masker(`${method} ${path8} failed with ${status} - [REDACTED]`);
46915
46951
  }
46916
46952
  var GitHubApiClient = class {
46917
46953
  apiBase;
@@ -46961,11 +46997,11 @@ var GitHubApiClient = class {
46961
46997
  }
46962
46998
  return ordered;
46963
46999
  }
46964
- isVariablesEndpoint(path7) {
46965
- return path7.startsWith(`/repos/${this.owner}/${this.repo}/actions/variables`);
47000
+ isVariablesEndpoint(path8) {
47001
+ return path8.startsWith(`/repos/${this.owner}/${this.repo}/actions/variables`);
46966
47002
  }
46967
- canUseFallback(path7) {
46968
- return this.isVariablesEndpoint(path7) || path7 === `/repos/${this.owner}/${this.repo}/properties/values` || path7.includes(`/repos/${this.owner}/${this.repo}/contents`) || path7.includes("/dispatches");
47003
+ canUseFallback(path8) {
47004
+ return this.isVariablesEndpoint(path8) || path8 === `/repos/${this.owner}/${this.repo}/properties/values` || path8.includes(`/repos/${this.owner}/${this.repo}/contents`) || path8.includes("/dispatches");
46969
47005
  }
46970
47006
  rateLimitDelayMs(response, attempt) {
46971
47007
  const retryAfter = Number(response.headers.get("retry-after") || "");
@@ -46983,14 +47019,14 @@ var GitHubApiClient = class {
46983
47019
  const jitter = Math.floor(Math.random() * 250);
46984
47020
  return Math.min(base + jitter, 12e4);
46985
47021
  }
46986
- async requestWithToken(path7, init, token) {
47022
+ async requestWithToken(path8, init, token) {
46987
47023
  const MAX_RETRIES = 5;
46988
47024
  const normalizedToken = String(token || "").trim();
46989
47025
  if (!normalizedToken) {
46990
- throw new Error(`Missing GitHub auth token for request ${path7}`);
47026
+ throw new Error(`Missing GitHub auth token for request ${path8}`);
46991
47027
  }
46992
47028
  for (let attempt = 0; ; attempt++) {
46993
- const response = await this.fetchImpl(`${this.apiBase}${path7}`, {
47029
+ const response = await this.fetchImpl(`${this.apiBase}${path8}`, {
46994
47030
  ...init,
46995
47031
  headers: {
46996
47032
  Accept: "application/vnd.github+json",
@@ -47013,28 +47049,28 @@ var GitHubApiClient = class {
47013
47049
  return response;
47014
47050
  }
47015
47051
  }
47016
- async request(path7, init = {}) {
47052
+ async request(path8, init = {}) {
47017
47053
  const orderedTokens = this.getTokenOrder();
47018
47054
  if (orderedTokens.length === 0) {
47019
47055
  throw new Error("No GitHub auth token configured");
47020
47056
  }
47021
- const first = await this.requestWithToken(path7, init, orderedTokens[0]);
47022
- if (orderedTokens.length < 2 || !this.canUseFallback(path7)) {
47057
+ const first = await this.requestWithToken(path8, init, orderedTokens[0]);
47058
+ if (orderedTokens.length < 2 || !this.canUseFallback(path8)) {
47023
47059
  return first;
47024
47060
  }
47025
- const isVariableGet404 = first.status === 404 && (!init.method || init.method === "GET") && this.isVariablesEndpoint(path7);
47061
+ const isVariableGet404 = first.status === 404 && (!init.method || init.method === "GET") && this.isVariablesEndpoint(path8);
47026
47062
  if (first.status !== 403 && !isVariableGet404) {
47027
47063
  return first;
47028
47064
  }
47029
- return this.requestWithToken(path7, init, orderedTokens[1]);
47065
+ return this.requestWithToken(path8, init, orderedTokens[1]);
47030
47066
  }
47031
47067
  async setRepositoryVariable(name, value) {
47032
47068
  if (!value) {
47033
47069
  throw new Error(`Repo variable ${name} is empty`);
47034
47070
  }
47035
- const path7 = `/repos/${this.repository}/actions/variables`;
47071
+ const path8 = `/repos/${this.repository}/actions/variables`;
47036
47072
  const body = JSON.stringify({ name, value: String(value) });
47037
- const createResponse = await this.request(path7, {
47073
+ const createResponse = await this.request(path8, {
47038
47074
  method: "POST",
47039
47075
  body
47040
47076
  });
@@ -47057,12 +47093,12 @@ var GitHubApiClient = class {
47057
47093
  }
47058
47094
  const text = await createResponse.text().catch(() => "");
47059
47095
  throw new Error(
47060
- buildErrorMessage("POST", path7, createResponse, text, this.secretMasker)
47096
+ buildErrorMessage("POST", path8, createResponse, text, this.secretMasker)
47061
47097
  );
47062
47098
  }
47063
47099
  async getRepositoryVariable(name) {
47064
- const path7 = `/repos/${this.repository}/actions/variables/${name}`;
47065
- const response = await this.request(path7, {
47100
+ const path8 = `/repos/${this.repository}/actions/variables/${name}`;
47101
+ const response = await this.request(path8, {
47066
47102
  method: "GET"
47067
47103
  });
47068
47104
  if (response.status === 404) {
@@ -47071,15 +47107,15 @@ var GitHubApiClient = class {
47071
47107
  if (!response.ok) {
47072
47108
  const text = await response.text().catch(() => "");
47073
47109
  throw new Error(
47074
- buildErrorMessage("GET", path7, response, text, this.secretMasker)
47110
+ buildErrorMessage("GET", path8, response, text, this.secretMasker)
47075
47111
  );
47076
47112
  }
47077
47113
  const data = await response.json();
47078
47114
  return String(data.value || "");
47079
47115
  }
47080
47116
  async getRepositoryCustomProperty(name) {
47081
- const path7 = `/repos/${this.repository}/properties/values`;
47082
- const response = await this.request(path7, {
47117
+ const path8 = `/repos/${this.repository}/properties/values`;
47118
+ const response = await this.request(path8, {
47083
47119
  method: "GET"
47084
47120
  });
47085
47121
  if (response.status === 404) {
@@ -47088,7 +47124,7 @@ var GitHubApiClient = class {
47088
47124
  if (!response.ok) {
47089
47125
  const text = await response.text().catch(() => "");
47090
47126
  throw new Error(
47091
- buildErrorMessage("GET", path7, response, text, this.secretMasker)
47127
+ buildErrorMessage("GET", path8, response, text, this.secretMasker)
47092
47128
  );
47093
47129
  }
47094
47130
  const values = await response.json();
@@ -47170,6 +47206,593 @@ var HttpError = class _HttpError extends Error {
47170
47206
  }
47171
47207
  };
47172
47208
 
47209
+ // src/lib/openapi-changes.ts
47210
+ var import_node_crypto = require("node:crypto");
47211
+ var import_node_fs = require("node:fs");
47212
+ var import_promises = require("node:fs/promises");
47213
+ var import_node_https = require("node:https");
47214
+ var import_node_os = __toESM(require("node:os"), 1);
47215
+ var import_node_path = __toESM(require("node:path"), 1);
47216
+ var TOOL_NAME = "openapi-changes";
47217
+ var OPENAPI_CHANGES_VERSION = "0.2.7";
47218
+ var RELEASE_BASE_URL = `https://github.com/pb33f/openapi-changes/releases/download/v${OPENAPI_CHANGES_VERSION}`;
47219
+ var CHECKSUMS = {
47220
+ "0.2.7": {
47221
+ "openapi-changes_0.2.7_darwin_arm64.tar.gz": "03e65e0d16c51fb8d43a93318409027bd9cd7c7c3355061d23c084c1ac9c0f7b",
47222
+ "openapi-changes_0.2.7_darwin_x86_64.tar.gz": "c064dab16fac342926126d060efd157ff283e18548ccf6081a7a71a8d3c5bc04",
47223
+ "openapi-changes_0.2.7_linux_arm64.tar.gz": "698b29336699fd4ec61e52585f140a6450d112c1eb1c637bbe34c13b4203fecc",
47224
+ "openapi-changes_0.2.7_linux_i386.tar.gz": "bb95699989ef67d0fd9d8644e56b1e183dea4dc439e59d051fe6964b87636f8c",
47225
+ "openapi-changes_0.2.7_linux_x86_64.tar.gz": "333742ea369c90437fbda47a814cf2393cb65eaa3867268a4c86281e74f614bf",
47226
+ "openapi-changes_0.2.7_windows_arm64.tar.gz": "3dfc29f88fb4332a3bf2d6d45fb9ab02ef907e7bc45fb8e8630ad943c4b9d814",
47227
+ "openapi-changes_0.2.7_windows_i386.tar.gz": "78e868e15d0e15f358f7f350af3c9532f6720a140bbb9241dbb947d49c6ec20c",
47228
+ "openapi-changes_0.2.7_windows_x86_64.tar.gz": "fff5a68713b9093ad8ab547d214b5a3b9139ad71e90ee9e1347b3f9bd6e1e191"
47229
+ }
47230
+ };
47231
+ function firstValue(...values) {
47232
+ return values.find((value) => String(value ?? "").trim())?.trim();
47233
+ }
47234
+ function getWorkspaceRoot(env = process.env) {
47235
+ return (0, import_node_fs.realpathSync)(import_node_path.default.resolve(env.GITHUB_WORKSPACE || process.cwd()));
47236
+ }
47237
+ function getTempRoot(env = process.env) {
47238
+ return (0, import_node_fs.realpathSync)(import_node_path.default.resolve(env.RUNNER_TEMP || import_node_os.default.tmpdir()));
47239
+ }
47240
+ function ensureInsideRoot(root, candidate, message) {
47241
+ const relative2 = import_node_path.default.relative(root, candidate);
47242
+ if (relative2.startsWith("..") || import_node_path.default.isAbsolute(relative2)) {
47243
+ throw new Error(message);
47244
+ }
47245
+ }
47246
+ function nearestExistingPath(candidate) {
47247
+ let current = candidate;
47248
+ while (!(0, import_node_fs.existsSync)(current)) {
47249
+ const parent = import_node_path.default.dirname(current);
47250
+ if (parent === current) {
47251
+ return current;
47252
+ }
47253
+ current = parent;
47254
+ }
47255
+ return current;
47256
+ }
47257
+ function isInsideAnyRoot(roots, candidate) {
47258
+ return roots.some((root) => {
47259
+ const relative2 = import_node_path.default.relative(root, candidate);
47260
+ return !relative2.startsWith("..") && !import_node_path.default.isAbsolute(relative2);
47261
+ });
47262
+ }
47263
+ function assertOutputFileAllowed(filePath, workspaceRoot, tempRoot) {
47264
+ const workspaceRealPath = (0, import_node_fs.realpathSync)(workspaceRoot);
47265
+ const tempRealPath = (0, import_node_fs.realpathSync)(tempRoot);
47266
+ const resolved = import_node_path.default.resolve(filePath);
47267
+ const existingPath = nearestExistingPath(resolved);
47268
+ const existingRealPath = (0, import_node_fs.realpathSync)(existingPath);
47269
+ if (!isInsideAnyRoot([workspaceRealPath, tempRealPath], existingRealPath)) {
47270
+ throw new Error("Breaking-change output path must stay within the workspace or runner temp directory");
47271
+ }
47272
+ return resolved;
47273
+ }
47274
+ function resolveConfiguredOutputPath(configuredPath, defaultFileName, workspaceRoot, tempRoot) {
47275
+ const defaultPath = import_node_path.default.join(tempRoot, "postman-bootstrap", defaultFileName);
47276
+ if (!configuredPath) {
47277
+ return defaultPath;
47278
+ }
47279
+ const resolved = import_node_path.default.isAbsolute(configuredPath) ? configuredPath : import_node_path.default.join(workspaceRoot, configuredPath);
47280
+ return assertOutputFileAllowed(resolved, workspaceRoot, tempRoot);
47281
+ }
47282
+ function resolveWorkspaceFilePath(configuredPath, workspaceRoot) {
47283
+ if (!configuredPath) {
47284
+ return void 0;
47285
+ }
47286
+ const workspaceRealPath = (0, import_node_fs.realpathSync)(workspaceRoot);
47287
+ const resolved = import_node_path.default.isAbsolute(configuredPath) ? import_node_path.default.resolve(configuredPath) : import_node_path.default.resolve(workspaceRoot, configuredPath);
47288
+ ensureInsideRoot(workspaceRealPath, resolved, "Breaking-change input path must stay within the workspace");
47289
+ if (!(0, import_node_fs.existsSync)(resolved)) {
47290
+ return void 0;
47291
+ }
47292
+ const realResolved = (0, import_node_fs.realpathSync)(resolved);
47293
+ ensureInsideRoot(
47294
+ workspaceRealPath,
47295
+ realResolved,
47296
+ "Breaking-change input path must stay within the workspace"
47297
+ );
47298
+ return realResolved;
47299
+ }
47300
+ function workspaceRelativePath(filePath, workspaceRoot) {
47301
+ const resolved = import_node_path.default.isAbsolute(filePath) ? import_node_path.default.resolve(filePath) : import_node_path.default.resolve(workspaceRoot, filePath);
47302
+ const realResolved = (0, import_node_fs.existsSync)(resolved) ? (0, import_node_fs.realpathSync)(resolved) : resolved;
47303
+ ensureInsideRoot(workspaceRoot, realResolved, "spec-path must stay within the workspace");
47304
+ const relative2 = import_node_path.default.relative(workspaceRoot, realResolved);
47305
+ return relative2.split(import_node_path.default.sep).join("/");
47306
+ }
47307
+ function normalizeBranch(value) {
47308
+ let branchName = String(value || "main").trim();
47309
+ branchName = branchName.replace(/^refs\/remotes\/origin\//, "").replace(/^refs\/heads\//, "").replace(/^origin\//, "");
47310
+ if (!branchName) {
47311
+ branchName = "main";
47312
+ }
47313
+ if (!/^[A-Za-z0-9._/-]+$/.test(branchName)) {
47314
+ throw new Error(`Unsupported target branch name: ${branchName}`);
47315
+ }
47316
+ return branchName;
47317
+ }
47318
+ async function gitObjectExists(dependencies, refSpec, cwd2) {
47319
+ const result = await dependencies.exec.getExecOutput("git", ["cat-file", "-e", refSpec], {
47320
+ cwd: cwd2,
47321
+ ignoreReturnCode: true
47322
+ });
47323
+ return result.exitCode === 0;
47324
+ }
47325
+ function targetBranchCandidates(configuredTargetRef, env) {
47326
+ const targetBranch = normalizeBranch(firstValue(
47327
+ configuredTargetRef,
47328
+ env.GITHUB_BASE_REF,
47329
+ env.CHANGE_TARGET,
47330
+ env.BITBUCKET_TARGET_BRANCH,
47331
+ env.CI_MERGE_REQUEST_TARGET_BRANCH_NAME,
47332
+ env.SYSTEM_PULLREQUEST_TARGETBRANCH,
47333
+ "main"
47334
+ ));
47335
+ return Array.from(/* @__PURE__ */ new Set([`origin/${targetBranch}`, targetBranch]));
47336
+ }
47337
+ async function writeTempSpecFile(tempRoot, name, content) {
47338
+ const tempDir = import_node_path.default.join(tempRoot, "postman-bootstrap", `openapi-changes-${process.pid}-${Date.now()}`);
47339
+ await (0, import_promises.mkdir)(tempDir, { recursive: true });
47340
+ const filePath = import_node_path.default.join(tempDir, name);
47341
+ await (0, import_promises.writeFile)(filePath, content, "utf8");
47342
+ return filePath;
47343
+ }
47344
+ async function removeTempSpecFile(filePath) {
47345
+ const parent = import_node_path.default.dirname(filePath);
47346
+ if (parent.includes(`${import_node_path.default.sep}openapi-changes-`)) {
47347
+ await (0, import_promises.rm)(parent, { recursive: true, force: true });
47348
+ }
47349
+ }
47350
+ async function resolveComparisonSource(inputs, dependencies, workspaceRoot, tempRoot) {
47351
+ if (inputs.mode === "previous-spec") {
47352
+ if (!inputs.previousSpecContent) {
47353
+ return {
47354
+ skipped: true,
47355
+ reason: "No existing Spec Hub content was available for comparison."
47356
+ };
47357
+ }
47358
+ const previous = await writeTempSpecFile(tempRoot, "previous-openapi.json", inputs.previousSpecContent);
47359
+ const current = await writeTempSpecFile(tempRoot, "current-openapi.json", inputs.currentUploadContent);
47360
+ return {
47361
+ current,
47362
+ label: "Spec Hub previous version -> incoming spec",
47363
+ previous,
47364
+ tempFiles: [previous, current]
47365
+ };
47366
+ }
47367
+ const currentPath = inputs.specPath ? resolveWorkspaceFilePath(inputs.specPath, workspaceRoot) : void 0;
47368
+ if (inputs.mode === "pr-native" && inputs.specPath && currentPath) {
47369
+ const gitSpecPath = workspaceRelativePath(inputs.specPath, workspaceRoot);
47370
+ for (const targetRef of targetBranchCandidates(inputs.targetRef, dependencies.env ?? process.env)) {
47371
+ const targetRefSpec = `${targetRef}:${gitSpecPath}`;
47372
+ if (await gitObjectExists(dependencies, targetRefSpec, workspaceRoot)) {
47373
+ return {
47374
+ current: gitSpecPath,
47375
+ label: `${targetRefSpec} -> ${gitSpecPath}`,
47376
+ previous: targetRefSpec,
47377
+ tempFiles: []
47378
+ };
47379
+ }
47380
+ }
47381
+ }
47382
+ const baselinePath = resolveWorkspaceFilePath(inputs.baselineSpecPath, workspaceRoot);
47383
+ if (baselinePath) {
47384
+ const current = currentPath ?? await writeTempSpecFile(
47385
+ tempRoot,
47386
+ "current-openapi.json",
47387
+ inputs.currentUploadContent
47388
+ );
47389
+ return {
47390
+ current,
47391
+ label: `${inputs.baselineSpecPath} -> ${inputs.specPath || "incoming spec"}`,
47392
+ previous: baselinePath,
47393
+ tempFiles: currentPath ? [] : [current]
47394
+ };
47395
+ }
47396
+ return {
47397
+ skipped: true,
47398
+ reason: inputs.mode === "baseline-only" ? `No baseline spec found at ${inputs.baselineSpecPath || "(empty)"}.` : "No target-branch spec or baseline spec was available for comparison."
47399
+ };
47400
+ }
47401
+ var ANSI_ESCAPE_PATTERN = new RegExp(String.raw`\u001B\[[0-?]*[ -/]*[@-~]`, "g");
47402
+ function stripAnsi(value) {
47403
+ return String(value || "").replace(ANSI_ESCAPE_PATTERN, "");
47404
+ }
47405
+ function sanitizeOpenApiChangesSummary(value) {
47406
+ return String(value || "").split(/\r?\n/).filter((line) => {
47407
+ const normalized = line.trim().replace(/\*\*/g, "");
47408
+ return !/^Date:\s.*\|\s*Commit:\s*Original:\s.*,\s*Modified:\s.*$/.test(normalized);
47409
+ }).join("\n").trim();
47410
+ }
47411
+ function breakingChangeCount(value) {
47412
+ if (Array.isArray(value)) {
47413
+ return value.reduce((total2, entry) => total2 + breakingChangeCount(entry), 0);
47414
+ }
47415
+ if (!value || typeof value !== "object") {
47416
+ return 0;
47417
+ }
47418
+ let total = 0;
47419
+ for (const [key, entry] of Object.entries(value)) {
47420
+ const normalizedKey = key.toLowerCase().replace(/[^a-z]/g, "");
47421
+ if (entry === true && ["breaking", "breakingchange", "isbreaking", "isbreakingchange"].includes(normalizedKey)) {
47422
+ total += 1;
47423
+ continue;
47424
+ }
47425
+ total += breakingChangeCount(entry);
47426
+ }
47427
+ return total;
47428
+ }
47429
+ function formatReport(options) {
47430
+ const lines = [
47431
+ "# OpenAPI Breaking Change Check",
47432
+ "",
47433
+ `Status: ${options.status}`
47434
+ ];
47435
+ if (options.comparison) {
47436
+ lines.push(`Comparison: ${options.comparison}`);
47437
+ }
47438
+ if (options.message) {
47439
+ lines.push("", options.message);
47440
+ }
47441
+ if (options.body?.trim()) {
47442
+ lines.push("", options.body.trim());
47443
+ }
47444
+ return `${lines.join("\n")}
47445
+ `;
47446
+ }
47447
+ async function writeReportFiles(summaryPath, logPath, report, log, env) {
47448
+ await (0, import_promises.mkdir)(import_node_path.default.dirname(summaryPath), { recursive: true });
47449
+ await (0, import_promises.mkdir)(import_node_path.default.dirname(logPath), { recursive: true });
47450
+ await (0, import_promises.writeFile)(summaryPath, report, "utf8");
47451
+ await (0, import_promises.writeFile)(logPath, log, "utf8");
47452
+ if (env.GITHUB_STEP_SUMMARY) {
47453
+ await (0, import_promises.appendFile)(env.GITHUB_STEP_SUMMARY, `
47454
+ ${report}
47455
+ `, "utf8");
47456
+ }
47457
+ }
47458
+ function buildResultJson(result) {
47459
+ return JSON.stringify({
47460
+ breakingChanges: result.breakingChanges,
47461
+ comparison: result.comparison,
47462
+ exitCode: result.exitCode,
47463
+ logPath: result.logPath,
47464
+ message: result.message,
47465
+ mode: result.mode,
47466
+ status: result.status,
47467
+ summaryPath: result.summaryPath
47468
+ });
47469
+ }
47470
+ function createBreakingChangeSummaryJson(result) {
47471
+ return buildResultJson(result);
47472
+ }
47473
+ function mapPlatform() {
47474
+ const platforms = {
47475
+ aix: void 0,
47476
+ android: void 0,
47477
+ darwin: "darwin",
47478
+ freebsd: void 0,
47479
+ haiku: void 0,
47480
+ linux: "linux",
47481
+ openbsd: void 0,
47482
+ sunos: void 0,
47483
+ win32: "windows",
47484
+ cygwin: void 0,
47485
+ netbsd: void 0
47486
+ };
47487
+ const platform2 = platforms[process.platform];
47488
+ if (!platform2) {
47489
+ throw new Error(`Unsupported openapi-changes platform: ${process.platform}`);
47490
+ }
47491
+ return platform2;
47492
+ }
47493
+ function mapArch() {
47494
+ const architectures = {
47495
+ arm: void 0,
47496
+ arm64: "arm64",
47497
+ ia32: "i386",
47498
+ loong64: void 0,
47499
+ mips: void 0,
47500
+ mipsel: void 0,
47501
+ ppc: void 0,
47502
+ ppc64: void 0,
47503
+ riscv64: void 0,
47504
+ s390: void 0,
47505
+ s390x: void 0,
47506
+ x64: "x86_64"
47507
+ };
47508
+ const arch2 = architectures[process.arch];
47509
+ if (!arch2) {
47510
+ throw new Error(`Unsupported openapi-changes architecture: ${process.arch}`);
47511
+ }
47512
+ return arch2;
47513
+ }
47514
+ function sha256(filePath) {
47515
+ return (0, import_node_crypto.createHash)("sha256").update((0, import_node_fs.readFileSync)(filePath)).digest("hex");
47516
+ }
47517
+ function validatePinnedOpenApiChangesChecksums() {
47518
+ for (const [version, checksums] of Object.entries(CHECKSUMS)) {
47519
+ for (const [assetName, checksum] of Object.entries(checksums)) {
47520
+ if (!/^[a-f0-9]{64}$/.test(checksum)) {
47521
+ throw new Error(
47522
+ `Pinned checksum for ${assetName} in openapi-changes ${version} must be a 64-character lowercase SHA-256 hex digest`
47523
+ );
47524
+ }
47525
+ }
47526
+ }
47527
+ }
47528
+ function downloadFile(url, destination, redirectsRemaining = 5) {
47529
+ return new Promise((resolve4, reject) => {
47530
+ (0, import_node_https.get)(url, (response) => {
47531
+ const statusCode = response.statusCode || 0;
47532
+ const location2 = response.headers.location;
47533
+ if ([301, 302, 303, 307, 308].includes(statusCode) && location2) {
47534
+ response.resume();
47535
+ if (redirectsRemaining <= 0) {
47536
+ reject(new Error(`Too many redirects while downloading ${url}`));
47537
+ return;
47538
+ }
47539
+ const redirectedUrl = new URL(location2, url);
47540
+ if (redirectedUrl.protocol !== "https:") {
47541
+ reject(new Error(`Refusing non-HTTPS redirect for ${url}`));
47542
+ return;
47543
+ }
47544
+ downloadFile(redirectedUrl.toString(), destination, redirectsRemaining - 1).then(resolve4, reject);
47545
+ return;
47546
+ }
47547
+ if (statusCode < 200 || statusCode >= 300) {
47548
+ response.resume();
47549
+ reject(new Error(`Download failed for ${url}: HTTP ${statusCode}`));
47550
+ return;
47551
+ }
47552
+ const output = (0, import_node_fs.createWriteStream)(destination, { flags: "w" });
47553
+ response.pipe(output);
47554
+ output.on("finish", () => output.close(() => resolve4()));
47555
+ output.on("error", reject);
47556
+ }).on("error", reject);
47557
+ });
47558
+ }
47559
+ async function assertBinaryWorks(binaryPath, dependencies) {
47560
+ const result = await dependencies.exec.getExecOutput(binaryPath, ["version"], {
47561
+ ignoreReturnCode: true,
47562
+ silent: true
47563
+ });
47564
+ const installedVersion = result.stdout.trim();
47565
+ if (result.exitCode !== 0 || installedVersion !== OPENAPI_CHANGES_VERSION) {
47566
+ throw new Error(
47567
+ `Expected ${TOOL_NAME} ${OPENAPI_CHANGES_VERSION}, found ${installedVersion || "(unknown)"}.`
47568
+ );
47569
+ }
47570
+ }
47571
+ async function assertSafeTarEntries(archivePath, dependencies) {
47572
+ const listing = await dependencies.exec.getExecOutput("tar", ["-tzf", archivePath], {
47573
+ ignoreReturnCode: true,
47574
+ silent: true
47575
+ });
47576
+ if (listing.exitCode !== 0) {
47577
+ throw new Error(`Could not inspect ${TOOL_NAME} archive: ${listing.stderr}`);
47578
+ }
47579
+ for (const rawEntry of listing.stdout.split(/\r?\n/)) {
47580
+ const entry = rawEntry.trim();
47581
+ if (!entry) {
47582
+ continue;
47583
+ }
47584
+ if (entry.startsWith("/") || entry.startsWith("\\") || entry.includes("..")) {
47585
+ throw new Error(`Refusing unsafe archive entry: ${entry}`);
47586
+ }
47587
+ }
47588
+ }
47589
+ function findBinary(searchRoot, binaryName) {
47590
+ const entries = (0, import_node_fs.readdirSync)(searchRoot, { withFileTypes: true });
47591
+ for (const entry of entries) {
47592
+ const entryPath = import_node_path.default.join(searchRoot, entry.name);
47593
+ if (entry.isDirectory()) {
47594
+ const nested = findBinary(entryPath, binaryName);
47595
+ if (nested) {
47596
+ return nested;
47597
+ }
47598
+ } else if (entry.name === binaryName || entry.name === TOOL_NAME) {
47599
+ return entryPath;
47600
+ }
47601
+ }
47602
+ return "";
47603
+ }
47604
+ async function installOpenApiChanges(dependencies) {
47605
+ validatePinnedOpenApiChangesChecksums();
47606
+ const env = dependencies.env ?? process.env;
47607
+ const tempRoot = getTempRoot(env);
47608
+ const platform2 = mapPlatform();
47609
+ const arch2 = mapArch();
47610
+ const binaryName = process.platform === "win32" ? `${TOOL_NAME}.exe` : TOOL_NAME;
47611
+ const toolRoot = import_node_path.default.join(tempRoot, "postman-bootstrap-tools", TOOL_NAME, OPENAPI_CHANGES_VERSION, `${platform2}-${arch2}`);
47612
+ const binDir = import_node_path.default.join(toolRoot, "bin");
47613
+ const downloadsDir = import_node_path.default.join(toolRoot, "downloads");
47614
+ const extractDir = import_node_path.default.join(toolRoot, `extract-${Date.now()}`);
47615
+ const binaryPath = import_node_path.default.join(binDir, binaryName);
47616
+ if ((0, import_node_fs.existsSync)(binaryPath)) {
47617
+ try {
47618
+ await assertBinaryWorks(binaryPath, dependencies);
47619
+ dependencies.core.info(`${TOOL_NAME} ${OPENAPI_CHANGES_VERSION} already installed at ${binaryPath}`);
47620
+ return binaryPath;
47621
+ } catch (error2) {
47622
+ dependencies.core.warning(
47623
+ `Reinstalling ${TOOL_NAME}: ${error2 instanceof Error ? error2.message : String(error2)}`
47624
+ );
47625
+ (0, import_node_fs.rmSync)(binaryPath, { force: true });
47626
+ }
47627
+ }
47628
+ const assetName = `${TOOL_NAME}_${OPENAPI_CHANGES_VERSION}_${platform2}_${arch2}.tar.gz`;
47629
+ const expectedChecksum = CHECKSUMS[OPENAPI_CHANGES_VERSION]?.[assetName];
47630
+ if (!expectedChecksum) {
47631
+ throw new Error(`No pinned checksum is configured for ${assetName}.`);
47632
+ }
47633
+ (0, import_node_fs.mkdirSync)(binDir, { recursive: true });
47634
+ (0, import_node_fs.mkdirSync)(downloadsDir, { recursive: true });
47635
+ (0, import_node_fs.mkdirSync)(extractDir, { recursive: true });
47636
+ const archivePath = import_node_path.default.join(downloadsDir, assetName);
47637
+ await downloadFile(`${RELEASE_BASE_URL}/${assetName}`, archivePath);
47638
+ const actualChecksum = sha256(archivePath);
47639
+ if (actualChecksum !== expectedChecksum) {
47640
+ throw new Error(`Checksum mismatch for ${assetName}: expected ${expectedChecksum}, got ${actualChecksum}`);
47641
+ }
47642
+ await assertSafeTarEntries(archivePath, dependencies);
47643
+ await dependencies.exec.exec("tar", ["-xzf", archivePath, "-C", extractDir], {
47644
+ silent: true
47645
+ });
47646
+ const extractedBinary = findBinary(extractDir, binaryName);
47647
+ if (!extractedBinary) {
47648
+ throw new Error(`Could not find ${binaryName} in ${assetName}.`);
47649
+ }
47650
+ (0, import_node_fs.rmSync)(binaryPath, { force: true });
47651
+ (0, import_node_fs.copyFileSync)(extractedBinary, binaryPath);
47652
+ if (process.platform !== "win32") {
47653
+ (0, import_node_fs.chmodSync)(binaryPath, 493);
47654
+ }
47655
+ (0, import_node_fs.rmSync)(extractDir, { recursive: true, force: true });
47656
+ await assertBinaryWorks(binaryPath, dependencies);
47657
+ dependencies.core.info(`Installed ${TOOL_NAME} ${OPENAPI_CHANGES_VERSION} at ${binaryPath}`);
47658
+ return binaryPath;
47659
+ }
47660
+ function rulesArgs(rulesPath, workspaceRoot, tempRoot) {
47661
+ const resolved = resolveWorkspaceFilePath(rulesPath, workspaceRoot);
47662
+ if (resolved) {
47663
+ return ["--config", resolved];
47664
+ }
47665
+ const defaultRulesPath = import_node_path.default.join(tempRoot, "postman-bootstrap", "openapi-changes-default-rules.yaml");
47666
+ (0, import_node_fs.mkdirSync)(import_node_path.default.dirname(defaultRulesPath), { recursive: true });
47667
+ (0, import_node_fs.writeFileSync)(defaultRulesPath, "{}\n", "utf8");
47668
+ return ["--config", defaultRulesPath];
47669
+ }
47670
+ var runOpenApiBreakingChangeCheck = async (inputs, dependencies) => {
47671
+ const env = dependencies.env ?? process.env;
47672
+ const workspaceRoot = getWorkspaceRoot(env);
47673
+ const tempRoot = getTempRoot(env);
47674
+ if (inputs.mode === "off") {
47675
+ return {
47676
+ breakingChanges: 0,
47677
+ comparison: "",
47678
+ exitCode: 0,
47679
+ logPath: "",
47680
+ message: "Breaking-change check is disabled.",
47681
+ mode: inputs.mode,
47682
+ status: "skipped",
47683
+ summaryPath: ""
47684
+ };
47685
+ }
47686
+ const summaryPath = resolveConfiguredOutputPath(
47687
+ inputs.summaryPath,
47688
+ "openapi-changes-summary.md",
47689
+ workspaceRoot,
47690
+ tempRoot
47691
+ );
47692
+ const logPath = resolveConfiguredOutputPath(
47693
+ inputs.logPath,
47694
+ "openapi-changes.log",
47695
+ workspaceRoot,
47696
+ tempRoot
47697
+ );
47698
+ const source = await resolveComparisonSource(inputs, dependencies, workspaceRoot, tempRoot);
47699
+ if ("skipped" in source) {
47700
+ const report = formatReport({
47701
+ message: source.reason,
47702
+ status: "skipped"
47703
+ });
47704
+ await writeReportFiles(summaryPath, logPath, report, source.reason, env);
47705
+ return {
47706
+ breakingChanges: 0,
47707
+ comparison: "",
47708
+ exitCode: 0,
47709
+ logPath,
47710
+ message: source.reason,
47711
+ mode: inputs.mode,
47712
+ status: "skipped",
47713
+ summaryPath
47714
+ };
47715
+ }
47716
+ try {
47717
+ const binaryPath = await installOpenApiChanges(dependencies);
47718
+ const configArgs = rulesArgs(inputs.rulesPath, workspaceRoot, tempRoot);
47719
+ const reportArgs = [
47720
+ "report",
47721
+ "--reproducible",
47722
+ "--no-color",
47723
+ ...configArgs,
47724
+ source.previous,
47725
+ source.current
47726
+ ];
47727
+ const reportResult = await dependencies.exec.getExecOutput(binaryPath, reportArgs, {
47728
+ cwd: workspaceRoot,
47729
+ ignoreReturnCode: true,
47730
+ silent: true
47731
+ });
47732
+ const reportStdout = stripAnsi(reportResult.stdout);
47733
+ const reportStderr = stripAnsi(reportResult.stderr);
47734
+ let breakingChanges = 0;
47735
+ let parsedReport = false;
47736
+ if (reportStdout.trim()) {
47737
+ try {
47738
+ breakingChanges = breakingChangeCount(JSON.parse(reportStdout));
47739
+ parsedReport = true;
47740
+ } catch (error2) {
47741
+ dependencies.core.warning(
47742
+ `Could not parse openapi-changes JSON report: ${error2 instanceof Error ? error2.message : String(error2)}`
47743
+ );
47744
+ }
47745
+ }
47746
+ const summaryArgs = [
47747
+ "summary",
47748
+ "--markdown",
47749
+ "--no-logo",
47750
+ "--no-color",
47751
+ "--with-lines",
47752
+ ...configArgs,
47753
+ source.previous,
47754
+ source.current
47755
+ ];
47756
+ const summaryResult = await dependencies.exec.getExecOutput(binaryPath, summaryArgs, {
47757
+ cwd: workspaceRoot,
47758
+ ignoreReturnCode: true,
47759
+ silent: true
47760
+ });
47761
+ const summaryStdout = sanitizeOpenApiChangesSummary(stripAnsi(summaryResult.stdout));
47762
+ const summaryStderr = stripAnsi(summaryResult.stderr);
47763
+ const commandFailed = reportResult.exitCode !== 0 && !parsedReport || summaryResult.exitCode !== 0 && !summaryStdout.trim() && breakingChanges === 0;
47764
+ const status = commandFailed || breakingChanges > 0 ? "failed" : "passed";
47765
+ const message = commandFailed ? "openapi-changes failed while comparing specifications." : breakingChanges > 0 ? `${breakingChanges} breaking change marker${breakingChanges === 1 ? "" : "s"} detected.` : "No breaking changes detected.";
47766
+ const report = formatReport({
47767
+ body: summaryStdout || message,
47768
+ comparison: source.label,
47769
+ message,
47770
+ status
47771
+ });
47772
+ const log = [
47773
+ `report exit code: ${reportResult.exitCode}`,
47774
+ reportStderr.trim(),
47775
+ `summary exit code: ${summaryResult.exitCode}`,
47776
+ summaryStderr.trim()
47777
+ ].filter(Boolean).join("\n\n");
47778
+ await writeReportFiles(summaryPath, logPath, report, log, env);
47779
+ return {
47780
+ breakingChanges,
47781
+ comparison: source.label,
47782
+ exitCode: status === "failed" ? 1 : 0,
47783
+ logPath,
47784
+ message,
47785
+ mode: inputs.mode,
47786
+ status,
47787
+ summaryPath
47788
+ };
47789
+ } finally {
47790
+ for (const tempFile of source.tempFiles) {
47791
+ await removeTempSpecFile(tempFile);
47792
+ }
47793
+ }
47794
+ };
47795
+
47173
47796
  // src/lib/postman/base-urls.ts
47174
47797
  var POSTMAN_ENDPOINT_PROFILES = {
47175
47798
  prod: {
@@ -47352,8 +47975,8 @@ var PostmanAssetsClient = class {
47352
47975
  ...team.organizationId != null ? { organizationId: Number(team.organizationId) } : {}
47353
47976
  })) : [];
47354
47977
  }
47355
- async request(path7, init = {}) {
47356
- const url = path7.startsWith("http") ? path7 : `${this.baseUrl}${path7}`;
47978
+ async request(path8, init = {}) {
47979
+ const url = path8.startsWith("http") ? path8 : `${this.baseUrl}${path8}`;
47357
47980
  const response = await this.fetchImpl(url, {
47358
47981
  ...init,
47359
47982
  headers: {
@@ -48138,8 +48761,8 @@ function createInternalIntegrationAdapter(options) {
48138
48761
  }
48139
48762
 
48140
48763
  // src/lib/spec/safe-spec-fetch.ts
48141
- var import_promises = require("node:dns/promises");
48142
- var import_node_https = require("node:https");
48764
+ var import_promises2 = require("node:dns/promises");
48765
+ var import_node_https2 = require("node:https");
48143
48766
  var import_node_net = require("node:net");
48144
48767
  var import_node_url = require("node:url");
48145
48768
  var SAFE_FETCH_LIMITS = {
@@ -48272,7 +48895,7 @@ function validateSafeHttpsUrl(input) {
48272
48895
  return url;
48273
48896
  }
48274
48897
  async function defaultLookup(hostname) {
48275
- const results = await (0, import_promises.lookup)(hostname, { all: true, verbatim: true });
48898
+ const results = await (0, import_promises2.lookup)(hostname, { all: true, verbatim: true });
48276
48899
  return results.map((entry) => ({ address: entry.address, family: entry.family }));
48277
48900
  }
48278
48901
  function createPinnedLookup(pinnedAddress, family) {
@@ -48309,7 +48932,7 @@ async function defaultTransport(url, options) {
48309
48932
  timeout: options.timeoutMs,
48310
48933
  lookup: createPinnedLookup(options.pinnedAddress, options.family)
48311
48934
  };
48312
- const req = (0, import_node_https.request)(requestOptions, (res) => {
48935
+ const req = (0, import_node_https2.request)(requestOptions, (res) => {
48313
48936
  const remoteAddress = res.socket?.remoteAddress;
48314
48937
  const chunks = [];
48315
48938
  let bytes = 0;
@@ -48559,8 +49182,8 @@ function normalizeRepoUrl(url) {
48559
49182
  const sshMatch = raw.match(/^git@([^:]+):(.+?)(?:\.git)?$/);
48560
49183
  if (sshMatch) {
48561
49184
  const host = sshMatch[1];
48562
- const path7 = sshMatch[2];
48563
- return `https://${host}/${path7}`;
49185
+ const path8 = sshMatch[2];
49186
+ return `https://${host}/${path8}`;
48564
49187
  }
48565
49188
  return raw.replace(/\.git$/, "");
48566
49189
  }
@@ -48880,8 +49503,8 @@ function safeDecodeSegment(segment) {
48880
49503
  return segment;
48881
49504
  }
48882
49505
  }
48883
- function normalizePath(path7) {
48884
- const raw = String(path7 || "").split(/[?#]/, 1)[0] || "/";
49506
+ function normalizePath(path8) {
49507
+ const raw = String(path8 || "").split(/[?#]/, 1)[0] || "/";
48885
49508
  const withSlash = raw.startsWith("/") ? raw : `/${raw}`;
48886
49509
  const normalized = withSlash.replace(/\/+/g, "/");
48887
49510
  const trimmed = normalized.length > 1 ? normalized.replace(/\/+$/g, "") : normalized;
@@ -48905,8 +49528,8 @@ function serverPathPrefix(url) {
48905
49528
  return normalizePath(noProtocol).replace(/__server_variable__/g, "{serverVariable}");
48906
49529
  }
48907
49530
  }
48908
- function joinPaths(prefix, path7) {
48909
- return normalizePath(`${prefix}/${path7}`.replace(/\/+/g, "/"));
49531
+ function joinPaths(prefix, path8) {
49532
+ return normalizePath(`${prefix}/${path8}`.replace(/\/+/g, "/"));
48910
49533
  }
48911
49534
  function normalizeResponseKey(status) {
48912
49535
  const raw = String(status);
@@ -49010,7 +49633,7 @@ function buildContractIndex(root) {
49010
49633
  const warnings = [];
49011
49634
  if (asRecord3(root.webhooks)) warnings.push("CONTRACT_WEBHOOKS_NOT_VALIDATED: OpenAPI webhooks are not validated by dynamic contract tests");
49012
49635
  if (paths) {
49013
- for (const [path7, rawPathItem] of Object.entries(paths)) {
49636
+ for (const [path8, rawPathItem] of Object.entries(paths)) {
49014
49637
  const pathItem = resolveInternalRef(root, rawPathItem);
49015
49638
  if (!pathItem) continue;
49016
49639
  for (const [method, rawOperation] of Object.entries(pathItem)) {
@@ -49018,10 +49641,10 @@ function buildContractIndex(root) {
49018
49641
  if (!HTTP_METHODS.has(lowerMethod)) continue;
49019
49642
  const operation = resolveInternalRef(root, rawOperation);
49020
49643
  if (!operation) continue;
49021
- if (operation.callbacks) warnings.push(`CONTRACT_CALLBACKS_NOT_VALIDATED: callbacks are not validated for ${lowerMethod.toUpperCase()} ${path7}`);
49644
+ if (operation.callbacks) warnings.push(`CONTRACT_CALLBACKS_NOT_VALIDATED: callbacks are not validated for ${lowerMethod.toUpperCase()} ${path8}`);
49022
49645
  const responses = asRecord3(operation.responses);
49023
49646
  if (!responses || Object.keys(responses).length === 0) {
49024
- throw new Error(`CONTRACT_OPERATION_NO_RESPONSES: ${lowerMethod.toUpperCase()} ${path7} must define at least one response`);
49647
+ throw new Error(`CONTRACT_OPERATION_NO_RESPONSES: ${lowerMethod.toUpperCase()} ${path8} must define at least one response`);
49025
49648
  }
49026
49649
  const contractResponses = {};
49027
49650
  for (const [status, rawResponse] of Object.entries(responses)) {
@@ -49036,8 +49659,8 @@ function buildContractIndex(root) {
49036
49659
  };
49037
49660
  }
49038
49661
  const candidates = [...new Set([
49039
- path7,
49040
- ...operationServers(root, pathItem, operation).map((server) => joinPaths(serverPathPrefix(server), path7))
49662
+ path8,
49663
+ ...operationServers(root, pathItem, operation).map((server) => joinPaths(serverPathPrefix(server), path8))
49041
49664
  ].map(normalizePath))];
49042
49665
  const opWarnings = [];
49043
49666
  opWarnings.push(...collectSecuritySchemeWarnings(root, operation));
@@ -49046,10 +49669,10 @@ function buildContractIndex(root) {
49046
49669
  opWarnings.push(`CONTRACT_SECURITY_NOT_VALIDATED: security parameter ${parameter.in}:${parameter.name} is not statically required in generated requests`);
49047
49670
  }
49048
49671
  operations.push({
49049
- id: `${lowerMethod.toUpperCase()} ${path7}`,
49672
+ id: `${lowerMethod.toUpperCase()} ${path8}`,
49050
49673
  method: lowerMethod.toUpperCase(),
49051
- path: path7,
49052
- pointer: `/paths/${path7.replace(/~/g, "~0").replace(/\//g, "~1")}/${lowerMethod}`,
49674
+ path: path8,
49675
+ pointer: `/paths/${path8.replace(/~/g, "~0").replace(/\//g, "~1")}/${lowerMethod}`,
49053
49676
  candidates,
49054
49677
  responses: contractResponses,
49055
49678
  requiredParameters,
@@ -49146,8 +49769,8 @@ function requestPath(request) {
49146
49769
  if (typeof urlRecord.raw === "string") return pathFromRaw(urlRecord.raw);
49147
49770
  return "/";
49148
49771
  }
49149
- function segments(path7) {
49150
- return normalizePath(path7).split("/").filter(Boolean);
49772
+ function segments(path8) {
49773
+ return normalizePath(path8).split("/").filter(Boolean);
49151
49774
  }
49152
49775
  function isTemplateSegment(segment) {
49153
49776
  return /^\{[^}]+\}$/.test(segment) || /^:[^/]+$/.test(segment) || /^\{\{[^}]+\}\}$/.test(segment) || /^<[^>]+>$/.test(segment);
@@ -49173,8 +49796,8 @@ function matchCandidate(candidate, request) {
49173
49796
  function matchOperation(index, request) {
49174
49797
  const record = asRecord4(request);
49175
49798
  const method = String(record?.method || "").toUpperCase();
49176
- const path7 = requestPath(request);
49177
- const candidates = index.operations.filter((operation) => operation.method === method).flatMap((operation) => operation.candidates.map((candidate) => ({ operation, score: matchCandidate(candidate, path7), serverFull: candidate !== normalizePath(operation.path) }))).filter((entry) => entry.score.matched).map((entry) => ({ operation: entry.operation, score: [entry.score.staticCount, entry.serverFull ? 2 : 1, -entry.score.templateCount] })).sort((a, b) => {
49799
+ const path8 = requestPath(request);
49800
+ const candidates = index.operations.filter((operation) => operation.method === method).flatMap((operation) => operation.candidates.map((candidate) => ({ operation, score: matchCandidate(candidate, path8), serverFull: candidate !== normalizePath(operation.path) }))).filter((entry) => entry.score.matched).map((entry) => ({ operation: entry.operation, score: [entry.score.staticCount, entry.serverFull ? 2 : 1, -entry.score.templateCount] })).sort((a, b) => {
49178
49801
  for (let index2 = 0; index2 < a.score.length; index2 += 1) {
49179
49802
  const delta = b.score[index2] - a.score[index2];
49180
49803
  if (delta !== 0) return delta;
@@ -49182,11 +49805,11 @@ function matchOperation(index, request) {
49182
49805
  return a.operation.id.localeCompare(b.operation.id);
49183
49806
  });
49184
49807
  const best = candidates[0];
49185
- if (!best) return { path: path7, method };
49808
+ if (!best) return { path: path8, method };
49186
49809
  const tied = candidates.filter((entry) => entry.score.every((value, index2) => value === best.score[index2]));
49187
49810
  const uniqueTied = [...new Map(tied.map((entry) => [entry.operation.id, entry.operation])).values()];
49188
- if (uniqueTied.length > 1) return { path: path7, method, ambiguous: uniqueTied };
49189
- return { path: path7, method, operation: best.operation };
49811
+ if (uniqueTied.length > 1) return { path: path8, method, ambiguous: uniqueTied };
49812
+ return { path: path8, method, operation: best.operation };
49190
49813
  }
49191
49814
  function assignValidator(lines, target, source) {
49192
49815
  lines.push(`${target} = ${source};`);
@@ -49471,10 +50094,10 @@ function instrumentContractCollection(collection, index) {
49471
50094
  }
49472
50095
 
49473
50096
  // src/lib/spec/openapi-loader.ts
49474
- var import_node_fs = require("node:fs");
49475
- var import_promises2 = require("node:fs/promises");
50097
+ var import_node_fs2 = require("node:fs");
50098
+ var import_promises3 = require("node:fs/promises");
49476
50099
  var import_node_url2 = require("node:url");
49477
- var import_node_path = __toESM(require("node:path"), 1);
50100
+ var import_node_path2 = __toESM(require("node:path"), 1);
49478
50101
 
49479
50102
  // node_modules/@apidevtools/json-schema-ref-parser/dist/lib/util/convert-path-to-posix.js
49480
50103
  var win32Sep = "\\";
@@ -49531,59 +50154,59 @@ function cwd() {
49531
50154
  return href;
49532
50155
  }
49533
50156
  if (typeof process !== "undefined" && process.cwd) {
49534
- const path7 = process.cwd();
49535
- const lastChar = path7.slice(-1);
50157
+ const path8 = process.cwd();
50158
+ const lastChar = path8.slice(-1);
49536
50159
  if (lastChar === "/" || lastChar === "\\") {
49537
- return path7;
50160
+ return path8;
49538
50161
  } else {
49539
- return path7 + "/";
50162
+ return path8 + "/";
49540
50163
  }
49541
50164
  }
49542
50165
  return "/";
49543
50166
  }
49544
- function getProtocol(path7) {
49545
- const match = protocolPattern.exec(path7 || "");
50167
+ function getProtocol(path8) {
50168
+ const match = protocolPattern.exec(path8 || "");
49546
50169
  if (match) {
49547
50170
  return match[1].toLowerCase();
49548
50171
  }
49549
50172
  return void 0;
49550
50173
  }
49551
- function getExtension(path7) {
49552
- const lastDot = path7.lastIndexOf(".");
50174
+ function getExtension(path8) {
50175
+ const lastDot = path8.lastIndexOf(".");
49553
50176
  if (lastDot >= 0) {
49554
- return stripQuery(path7.substring(lastDot).toLowerCase());
50177
+ return stripQuery(path8.substring(lastDot).toLowerCase());
49555
50178
  }
49556
50179
  return "";
49557
50180
  }
49558
- function stripQuery(path7) {
49559
- const queryIndex = path7.indexOf("?");
50181
+ function stripQuery(path8) {
50182
+ const queryIndex = path8.indexOf("?");
49560
50183
  if (queryIndex >= 0) {
49561
- path7 = path7.substring(0, queryIndex);
50184
+ path8 = path8.substring(0, queryIndex);
49562
50185
  }
49563
- return path7;
50186
+ return path8;
49564
50187
  }
49565
- function getHash(path7) {
49566
- if (!path7) {
50188
+ function getHash(path8) {
50189
+ if (!path8) {
49567
50190
  return "#";
49568
50191
  }
49569
- const hashIndex = path7.indexOf("#");
50192
+ const hashIndex = path8.indexOf("#");
49570
50193
  if (hashIndex >= 0) {
49571
- return path7.substring(hashIndex);
50194
+ return path8.substring(hashIndex);
49572
50195
  }
49573
50196
  return "#";
49574
50197
  }
49575
- function stripHash(path7) {
49576
- if (!path7) {
50198
+ function stripHash(path8) {
50199
+ if (!path8) {
49577
50200
  return "";
49578
50201
  }
49579
- const hashIndex = path7.indexOf("#");
50202
+ const hashIndex = path8.indexOf("#");
49580
50203
  if (hashIndex >= 0) {
49581
- path7 = path7.substring(0, hashIndex);
50204
+ path8 = path8.substring(0, hashIndex);
49582
50205
  }
49583
- return path7;
50206
+ return path8;
49584
50207
  }
49585
- function isHttp(path7) {
49586
- const protocol = getProtocol(path7);
50208
+ function isHttp(path8) {
50209
+ const protocol = getProtocol(path8);
49587
50210
  if (protocol === "http" || protocol === "https") {
49588
50211
  return true;
49589
50212
  } else if (protocol === void 0) {
@@ -49592,11 +50215,11 @@ function isHttp(path7) {
49592
50215
  return false;
49593
50216
  }
49594
50217
  }
49595
- function isUnsafeUrl(path7) {
49596
- if (!path7 || typeof path7 !== "string") {
50218
+ function isUnsafeUrl(path8) {
50219
+ if (!path8 || typeof path8 !== "string") {
49597
50220
  return true;
49598
50221
  }
49599
- const normalizedPath = path7.trim().toLowerCase();
50222
+ const normalizedPath = path8.trim().toLowerCase();
49600
50223
  if (!normalizedPath) {
49601
50224
  return true;
49602
50225
  }
@@ -49727,22 +50350,22 @@ function isInternalPort(port) {
49727
50350
  ];
49728
50351
  return internalPorts.includes(port);
49729
50352
  }
49730
- function isFileSystemPath(path7) {
50353
+ function isFileSystemPath(path8) {
49731
50354
  if (typeof window !== "undefined" || typeof process !== "undefined" && process.browser) {
49732
50355
  return false;
49733
50356
  }
49734
- const protocol = getProtocol(path7);
50357
+ const protocol = getProtocol(path8);
49735
50358
  return protocol === void 0 || protocol === "file";
49736
50359
  }
49737
- function fromFileSystemPath(path7) {
50360
+ function fromFileSystemPath(path8) {
49738
50361
  if (isWindows2()) {
49739
50362
  const projectDir = cwd();
49740
- const upperPath = path7.toUpperCase();
50363
+ const upperPath = path8.toUpperCase();
49741
50364
  const projectDirPosixPath = convertPathToPosix(projectDir);
49742
50365
  const posixUpper = projectDirPosixPath.toUpperCase();
49743
50366
  const hasProjectDir = upperPath.includes(posixUpper);
49744
50367
  const hasProjectUri = upperPath.includes(posixUpper);
49745
- const isAbsolutePath = isAbsoluteWin32Path.test(path7) || path7.startsWith("http://") || path7.startsWith("https://") || path7.startsWith("file://");
50368
+ const isAbsolutePath = isAbsoluteWin32Path.test(path8) || path8.startsWith("http://") || path8.startsWith("https://") || path8.startsWith("file://");
49746
50369
  if (!(hasProjectDir || hasProjectUri || isAbsolutePath) && !projectDir.startsWith("http")) {
49747
50370
  const join3 = (a, b) => {
49748
50371
  if (a.endsWith("/") || a.endsWith("\\")) {
@@ -49751,42 +50374,42 @@ function fromFileSystemPath(path7) {
49751
50374
  return a + "/" + b;
49752
50375
  }
49753
50376
  };
49754
- path7 = join3(projectDir, path7);
50377
+ path8 = join3(projectDir, path8);
49755
50378
  }
49756
- path7 = convertPathToPosix(path7);
50379
+ path8 = convertPathToPosix(path8);
49757
50380
  }
49758
- path7 = encodeURI(path7);
50381
+ path8 = encodeURI(path8);
49759
50382
  for (const pattern of urlEncodePatterns) {
49760
- path7 = path7.replace(pattern[0], pattern[1]);
50383
+ path8 = path8.replace(pattern[0], pattern[1]);
49761
50384
  }
49762
- return path7;
50385
+ return path8;
49763
50386
  }
49764
- function toFileSystemPath(path7, keepFileProtocol) {
49765
- path7 = path7.replace(/%(?![0-9A-Fa-f]{2})/g, "%25");
49766
- path7 = decodeURI(path7);
50387
+ function toFileSystemPath(path8, keepFileProtocol) {
50388
+ path8 = path8.replace(/%(?![0-9A-Fa-f]{2})/g, "%25");
50389
+ path8 = decodeURI(path8);
49767
50390
  for (let i = 0; i < urlDecodePatterns.length; i += 2) {
49768
- path7 = path7.replace(urlDecodePatterns[i], urlDecodePatterns[i + 1]);
50391
+ path8 = path8.replace(urlDecodePatterns[i], urlDecodePatterns[i + 1]);
49769
50392
  }
49770
- let isFileUrl = path7.toLowerCase().startsWith("file://");
50393
+ let isFileUrl = path8.toLowerCase().startsWith("file://");
49771
50394
  if (isFileUrl) {
49772
- path7 = path7.replace(/^file:\/\//, "").replace(/^\//, "");
49773
- if (isWindows2() && path7[1] === "/") {
49774
- path7 = `${path7[0]}:${path7.substring(1)}`;
50395
+ path8 = path8.replace(/^file:\/\//, "").replace(/^\//, "");
50396
+ if (isWindows2() && path8[1] === "/") {
50397
+ path8 = `${path8[0]}:${path8.substring(1)}`;
49775
50398
  }
49776
50399
  if (keepFileProtocol) {
49777
- path7 = "file:///" + path7;
50400
+ path8 = "file:///" + path8;
49778
50401
  } else {
49779
50402
  isFileUrl = false;
49780
- path7 = isWindows2() ? path7 : "/" + path7;
50403
+ path8 = isWindows2() ? path8 : "/" + path8;
49781
50404
  }
49782
50405
  }
49783
50406
  if (isWindows2() && !isFileUrl) {
49784
- path7 = path7.replace(forwardSlashPattern, "\\");
49785
- if (path7.match(/^[a-z]:\\/i)) {
49786
- path7 = path7[0].toUpperCase() + path7.substring(1);
50407
+ path8 = path8.replace(forwardSlashPattern, "\\");
50408
+ if (path8.match(/^[a-z]:\\/i)) {
50409
+ path8 = path8[0].toUpperCase() + path8.substring(1);
49787
50410
  }
49788
50411
  }
49789
- return path7;
50412
+ return path8;
49790
50413
  }
49791
50414
  function safePointerToPath(pointer) {
49792
50415
  if (pointer.length <= 1 || pointer[0] !== "#" || pointer[1] !== "/") {
@@ -49907,8 +50530,8 @@ var MissingPointerError = class extends JSONParserError {
49907
50530
  targetRef;
49908
50531
  targetFound;
49909
50532
  parentPath;
49910
- constructor(token, path7, targetRef, targetFound, parentPath) {
49911
- super(`Missing $ref pointer "${getHash(path7)}". Token "${token}" does not exist.`, stripHash(path7));
50533
+ constructor(token, path8, targetRef, targetFound, parentPath) {
50534
+ super(`Missing $ref pointer "${getHash(path8)}". Token "${token}" does not exist.`, stripHash(path8));
49912
50535
  this.targetToken = token;
49913
50536
  this.targetRef = targetRef;
49914
50537
  this.targetFound = targetFound;
@@ -49925,8 +50548,8 @@ var TimeoutError = class extends JSONParserError {
49925
50548
  var InvalidPointerError = class extends JSONParserError {
49926
50549
  code = "EUNMATCHEDRESOLVER";
49927
50550
  name = "InvalidPointerError";
49928
- constructor(pointer, path7) {
49929
- super(`Invalid $ref pointer "${pointer}". Pointers must begin with "#/"`, stripHash(path7));
50551
+ constructor(pointer, path8) {
50552
+ super(`Invalid $ref pointer "${pointer}". Pointers must begin with "#/"`, stripHash(path8));
49930
50553
  }
49931
50554
  };
49932
50555
  function isHandledError(err) {
@@ -50020,11 +50643,11 @@ var Pointer = class _Pointer {
50020
50643
  * Resolving a single pointer may require resolving multiple $Refs.
50021
50644
  */
50022
50645
  indirections;
50023
- constructor($ref, path7, friendlyPath) {
50646
+ constructor($ref, path8, friendlyPath) {
50024
50647
  this.$ref = $ref;
50025
- this.path = path7;
50026
- this.originalPath = friendlyPath || path7;
50027
- this.scopeBase = $ref.path || stripHash(path7);
50648
+ this.path = path8;
50649
+ this.originalPath = friendlyPath || path8;
50650
+ this.scopeBase = $ref.path || stripHash(path8);
50028
50651
  this.value = void 0;
50029
50652
  this.circular = false;
50030
50653
  this.indirections = 0;
@@ -50077,10 +50700,10 @@ var Pointer = class _Pointer {
50077
50700
  continue;
50078
50701
  }
50079
50702
  this.value = null;
50080
- const path7 = this.$ref.path || "";
50081
- const targetRef = this.path.replace(path7, "");
50703
+ const path8 = this.$ref.path || "";
50704
+ const targetRef = this.path.replace(path8, "");
50082
50705
  const targetFound = _Pointer.join("", found);
50083
- const parentPath = pathFromRoot?.replace(path7, "");
50706
+ const parentPath = pathFromRoot?.replace(path8, "");
50084
50707
  throw new MissingPointerError(token, decodeURI(this.originalPath), targetRef, targetFound, parentPath);
50085
50708
  } else {
50086
50709
  this.value = this.value[token];
@@ -50146,8 +50769,8 @@ var Pointer = class _Pointer {
50146
50769
  * @param [originalPath]
50147
50770
  * @returns
50148
50771
  */
50149
- static parse(path7, originalPath) {
50150
- const pointer = getHash(path7).substring(1);
50772
+ static parse(path8, originalPath) {
50773
+ const pointer = getHash(path8).substring(1);
50151
50774
  if (!pointer) {
50152
50775
  return [];
50153
50776
  }
@@ -50156,7 +50779,7 @@ var Pointer = class _Pointer {
50156
50779
  split[i] = split[i].replace(escapedSlash, "/").replace(escapedTilde, "~");
50157
50780
  }
50158
50781
  if (split[0] !== "") {
50159
- throw new InvalidPointerError(pointer, originalPath === void 0 ? path7 : originalPath);
50782
+ throw new InvalidPointerError(pointer, originalPath === void 0 ? path8 : originalPath);
50160
50783
  }
50161
50784
  return split.slice(1);
50162
50785
  }
@@ -50297,9 +50920,9 @@ var $Ref = class _$Ref {
50297
50920
  * @param options
50298
50921
  * @returns
50299
50922
  */
50300
- exists(path7, options) {
50923
+ exists(path8, options) {
50301
50924
  try {
50302
- this.resolve(path7, options);
50925
+ this.resolve(path8, options);
50303
50926
  return true;
50304
50927
  } catch {
50305
50928
  return false;
@@ -50312,8 +50935,8 @@ var $Ref = class _$Ref {
50312
50935
  * @param options
50313
50936
  * @returns - Returns the resolved value
50314
50937
  */
50315
- get(path7, options) {
50316
- return this.resolve(path7, options)?.value;
50938
+ get(path8, options) {
50939
+ return this.resolve(path8, options)?.value;
50317
50940
  }
50318
50941
  /**
50319
50942
  * Resolves the given JSON reference within this {@link $Ref#value}.
@@ -50324,8 +50947,8 @@ var $Ref = class _$Ref {
50324
50947
  * @param pathFromRoot - The path of `obj` from the schema root
50325
50948
  * @returns
50326
50949
  */
50327
- resolve(path7, options, friendlyPath, pathFromRoot) {
50328
- const pointer = new pointer_default(this, path7, friendlyPath);
50950
+ resolve(path8, options, friendlyPath, pathFromRoot) {
50951
+ const pointer = new pointer_default(this, path8, friendlyPath);
50329
50952
  try {
50330
50953
  const resolved = pointer.resolve(this.value, options, pathFromRoot);
50331
50954
  if (resolved.value === nullSymbol) {
@@ -50353,8 +50976,8 @@ var $Ref = class _$Ref {
50353
50976
  * @param path - The full path of the property to set, optionally with a JSON pointer in the hash
50354
50977
  * @param value - The value to assign
50355
50978
  */
50356
- set(path7, value) {
50357
- const pointer = new pointer_default(this, path7);
50979
+ set(path8, value) {
50980
+ const pointer = new pointer_default(this, path8);
50358
50981
  this.value = pointer.set(this.value, value);
50359
50982
  if (this.value === nullSymbol) {
50360
50983
  this.value = null;
@@ -50528,8 +51151,8 @@ var $Refs = class {
50528
51151
  */
50529
51152
  paths(...types2) {
50530
51153
  const paths = getPaths(this._$refs, types2.flat());
50531
- return paths.map((path7) => {
50532
- return convertPathToPosix(path7.decoded);
51154
+ return paths.map((path8) => {
51155
+ return convertPathToPosix(path8.decoded);
50533
51156
  });
50534
51157
  }
50535
51158
  /**
@@ -50542,8 +51165,8 @@ var $Refs = class {
50542
51165
  values(...types2) {
50543
51166
  const $refs = this._$refs;
50544
51167
  const paths = getPaths($refs, types2.flat());
50545
- return paths.reduce((obj, path7) => {
50546
- obj[convertPathToPosix(path7.decoded)] = $refs[path7.encoded].value;
51168
+ return paths.reduce((obj, path8) => {
51169
+ obj[convertPathToPosix(path8.decoded)] = $refs[path8.encoded].value;
50547
51170
  return obj;
50548
51171
  }, {});
50549
51172
  }
@@ -50561,9 +51184,9 @@ var $Refs = class {
50561
51184
  * @param [options]
50562
51185
  * @returns
50563
51186
  */
50564
- exists(path7, options) {
51187
+ exists(path8, options) {
50565
51188
  try {
50566
- this._resolve(path7, "", options);
51189
+ this._resolve(path8, "", options);
50567
51190
  return true;
50568
51191
  } catch {
50569
51192
  return false;
@@ -50576,8 +51199,8 @@ var $Refs = class {
50576
51199
  * @param [options]
50577
51200
  * @returns - Returns the resolved value
50578
51201
  */
50579
- get(path7, options) {
50580
- return this._resolve(path7, "", options).value;
51202
+ get(path8, options) {
51203
+ return this._resolve(path8, "", options).value;
50581
51204
  }
50582
51205
  /**
50583
51206
  * Sets the value at the given path in the schema. If the property, or any of its parents, don't exist, they will be created.
@@ -50585,11 +51208,11 @@ var $Refs = class {
50585
51208
  * @param path The JSON Reference path, optionally with a JSON Pointer in the hash
50586
51209
  * @param value The value to assign. Can be anything (object, string, number, etc.)
50587
51210
  */
50588
- set(path7, value) {
50589
- const absPath = resolve2(this._root$Ref.path, path7);
51211
+ set(path8, value) {
51212
+ const absPath = resolve2(this._root$Ref.path, path8);
50590
51213
  const $ref = this._getRef(absPath);
50591
51214
  if (!$ref) {
50592
- throw new Error(`Error resolving $ref pointer "${path7}".
51215
+ throw new Error(`Error resolving $ref pointer "${path8}".
50593
51216
  "${stripHash(absPath)}" not found.`);
50594
51217
  }
50595
51218
  $ref.set(absPath, value);
@@ -50601,25 +51224,25 @@ var $Refs = class {
50601
51224
  * @returns
50602
51225
  * @protected
50603
51226
  */
50604
- _get$Ref(path7) {
50605
- path7 = resolve2(this._root$Ref.path, path7);
50606
- return this._getRef(path7);
51227
+ _get$Ref(path8) {
51228
+ path8 = resolve2(this._root$Ref.path, path8);
51229
+ return this._getRef(path8);
50607
51230
  }
50608
51231
  /**
50609
51232
  * Creates a new {@link $Ref} object and adds it to this {@link $Refs} object.
50610
51233
  *
50611
51234
  * @param path - The file path or URL of the referenced file
50612
51235
  */
50613
- _add(path7) {
50614
- const withoutHash = stripHash(path7);
51236
+ _add(path8) {
51237
+ const withoutHash = stripHash(path8);
50615
51238
  const $ref = new ref_default(this);
50616
51239
  $ref.path = withoutHash;
50617
51240
  this._$refs[withoutHash] = $ref;
50618
51241
  this._root$Ref = this._root$Ref || $ref;
50619
51242
  return $ref;
50620
51243
  }
50621
- _addAlias(path7, value, pathType, dynamicIdScope = false) {
50622
- const withoutHash = stripHash(path7);
51244
+ _addAlias(path8, value, pathType, dynamicIdScope = false) {
51245
+ const withoutHash = stripHash(path8);
50623
51246
  if (!withoutHash || this._$refs[withoutHash] || this._aliases[withoutHash]) {
50624
51247
  return this._$refs[withoutHash] || this._aliases[withoutHash];
50625
51248
  }
@@ -50640,14 +51263,14 @@ var $Refs = class {
50640
51263
  * @returns
50641
51264
  * @protected
50642
51265
  */
50643
- _resolve(path7, pathFromRoot, options) {
50644
- const absPath = resolve2(this._root$Ref.path, path7);
51266
+ _resolve(path8, pathFromRoot, options) {
51267
+ const absPath = resolve2(this._root$Ref.path, path8);
50645
51268
  const $ref = this._getRef(absPath);
50646
51269
  if (!$ref) {
50647
- throw new Error(`Error resolving $ref pointer "${path7}".
51270
+ throw new Error(`Error resolving $ref pointer "${path8}".
50648
51271
  "${stripHash(absPath)}" not found.`);
50649
51272
  }
50650
- return $ref.resolve(absPath, options, path7, pathFromRoot);
51273
+ return $ref.resolve(absPath, options, path8, pathFromRoot);
50651
51274
  }
50652
51275
  /**
50653
51276
  * A map of paths/urls to {@link $Ref} objects
@@ -50689,8 +51312,8 @@ var $Refs = class {
50689
51312
  * @returns {object}
50690
51313
  */
50691
51314
  toJSON = this.values;
50692
- _getRef(path7) {
50693
- const withoutHash = stripHash(path7);
51315
+ _getRef(path8) {
51316
+ const withoutHash = stripHash(path8);
50694
51317
  return this._$refs[withoutHash] || this._aliases[withoutHash];
50695
51318
  }
50696
51319
  };
@@ -50702,10 +51325,10 @@ function getPaths($refs, types2) {
50702
51325
  return types2.includes($refs[key].pathType);
50703
51326
  });
50704
51327
  }
50705
- return paths.map((path7) => {
51328
+ return paths.map((path8) => {
50706
51329
  return {
50707
- encoded: path7,
50708
- decoded: $refs[path7].pathType === "file" ? toFileSystemPath(path7, true) : path7
51330
+ encoded: path8,
51331
+ decoded: $refs[path8].pathType === "file" ? toFileSystemPath(path8, true) : path8
50709
51332
  };
50710
51333
  });
50711
51334
  }
@@ -50797,14 +51420,14 @@ function getResult(obj, prop, file, callback, $refs) {
50797
51420
 
50798
51421
  // node_modules/@apidevtools/json-schema-ref-parser/dist/lib/parse.js
50799
51422
  async function parse2(target, $refs, options) {
50800
- let path7 = typeof target === "string" ? target : target.url;
51423
+ let path8 = typeof target === "string" ? target : target.url;
50801
51424
  const baseUrl = typeof target === "string" ? void 0 : target.baseUrl;
50802
51425
  let reference = typeof target === "string" ? void 0 : target.reference;
50803
- const hashIndex = path7.indexOf("#");
51426
+ const hashIndex = path8.indexOf("#");
50804
51427
  let hash = "";
50805
51428
  if (hashIndex >= 0) {
50806
- hash = path7.substring(hashIndex);
50807
- path7 = path7.substring(0, hashIndex);
51429
+ hash = path8.substring(hashIndex);
51430
+ path8 = path8.substring(0, hashIndex);
50808
51431
  }
50809
51432
  if (reference) {
50810
51433
  const referenceHashIndex = reference.indexOf("#");
@@ -50812,11 +51435,11 @@ async function parse2(target, $refs, options) {
50812
51435
  reference = reference.substring(0, referenceHashIndex);
50813
51436
  }
50814
51437
  }
50815
- const $ref = $refs._add(path7);
51438
+ const $ref = $refs._add(path8);
50816
51439
  const file = {
50817
- url: path7,
51440
+ url: path8,
50818
51441
  hash,
50819
- extension: getExtension(path7),
51442
+ extension: getExtension(path8),
50820
51443
  ...reference !== void 0 ? { reference } : {},
50821
51444
  ...baseUrl !== void 0 ? { baseUrl } : {}
50822
51445
  };
@@ -53701,24 +54324,24 @@ var file_default = {
53701
54324
  * Reads the given file and returns its raw contents as a Buffer.
53702
54325
  */
53703
54326
  async read(file) {
53704
- let path7;
54327
+ let path8;
53705
54328
  const fs3 = await import("fs");
53706
54329
  try {
53707
- path7 = toFileSystemPath(file.url);
54330
+ path8 = toFileSystemPath(file.url);
53708
54331
  } catch (err) {
53709
54332
  const e = err;
53710
54333
  e.message = `Malformed URI: ${file.url}: ${e.message}`;
53711
54334
  throw new ResolverError(e, file.url);
53712
54335
  }
53713
- if (path7.endsWith("/") || path7.endsWith("\\")) {
53714
- path7 = path7.slice(0, -1);
54336
+ if (path8.endsWith("/") || path8.endsWith("\\")) {
54337
+ path8 = path8.slice(0, -1);
53715
54338
  }
53716
54339
  try {
53717
- return await fs3.promises.readFile(path7);
54340
+ return await fs3.promises.readFile(path8);
53718
54341
  } catch (err) {
53719
54342
  const e = err;
53720
- e.message = `Error opening file ${path7}: ${e.message}`;
53721
- throw new ResolverError(e, path7);
54343
+ e.message = `Error opening file ${path8}: ${e.message}`;
54344
+ throw new ResolverError(e, path8);
53722
54345
  }
53723
54346
  }
53724
54347
  };
@@ -53782,7 +54405,7 @@ async function download(u, httpOptions, _redirects) {
53782
54405
  const redirects = _redirects || [];
53783
54406
  redirects.push(u.href);
53784
54407
  try {
53785
- const res = await get(u, httpOptions);
54408
+ const res = await get2(u, httpOptions);
53786
54409
  if (res.status >= 400) {
53787
54410
  const error2 = new Error(`HTTP ERROR ${res.status}`);
53788
54411
  error2.status = res.status;
@@ -53815,7 +54438,7 @@ Too many redirects:
53815
54438
  throw new ResolverError(e, u.href);
53816
54439
  }
53817
54440
  }
53818
- async function get(u, httpOptions) {
54441
+ async function get2(u, httpOptions) {
53819
54442
  let controller;
53820
54443
  let timeoutId;
53821
54444
  if (httpOptions.timeout && typeof AbortController !== "undefined") {
@@ -53942,7 +54565,7 @@ function isMergeable(val) {
53942
54565
 
53943
54566
  // node_modules/@apidevtools/json-schema-ref-parser/dist/lib/normalize-args.js
53944
54567
  function normalizeArgs(_args) {
53945
- let path7;
54568
+ let path8;
53946
54569
  let schema2;
53947
54570
  let options;
53948
54571
  let callback;
@@ -53951,7 +54574,7 @@ function normalizeArgs(_args) {
53951
54574
  callback = args.pop();
53952
54575
  }
53953
54576
  if (typeof args[0] === "string") {
53954
- path7 = args[0];
54577
+ path8 = args[0];
53955
54578
  if (typeof args[2] === "object") {
53956
54579
  schema2 = args[1];
53957
54580
  options = args[2];
@@ -53960,7 +54583,7 @@ function normalizeArgs(_args) {
53960
54583
  options = args[1];
53961
54584
  }
53962
54585
  } else {
53963
- path7 = "";
54586
+ path8 = "";
53964
54587
  schema2 = args[0];
53965
54588
  options = args[1];
53966
54589
  }
@@ -53973,7 +54596,7 @@ function normalizeArgs(_args) {
53973
54596
  schema2 = JSON.parse(JSON.stringify(schema2));
53974
54597
  }
53975
54598
  return {
53976
- path: path7,
54599
+ path: path8,
53977
54600
  schema: schema2,
53978
54601
  options,
53979
54602
  callback
@@ -53994,18 +54617,18 @@ function resolveExternal(parser, options) {
53994
54617
  return Promise.reject(e);
53995
54618
  }
53996
54619
  }
53997
- function crawl(obj, path7, scopeBase, dynamicIdScope, $refs, options, seen, external) {
54620
+ function crawl(obj, path8, scopeBase, dynamicIdScope, $refs, options, seen, external) {
53998
54621
  seen ||= /* @__PURE__ */ new Set();
53999
54622
  let promises3 = [];
54000
54623
  if (obj && typeof obj === "object" && !ArrayBuffer.isView(obj) && !seen.has(obj)) {
54001
54624
  seen.add(obj);
54002
54625
  const currentScopeBase = scopeBase;
54003
54626
  if (ref_default.isExternal$Ref(obj)) {
54004
- promises3.push(resolve$Ref(obj, path7, currentScopeBase, dynamicIdScope, $refs, options));
54627
+ promises3.push(resolve$Ref(obj, path8, currentScopeBase, dynamicIdScope, $refs, options));
54005
54628
  }
54006
54629
  const keys = Object.keys(obj);
54007
54630
  for (const key of keys) {
54008
- const keyPath = pointer_default.join(path7, key);
54631
+ const keyPath = pointer_default.join(path8, key);
54009
54632
  const value = obj[key];
54010
54633
  const childScopeBase = dynamicIdScope && value && typeof value === "object" && !ArrayBuffer.isView(value) ? getSchemaBasePath(currentScopeBase, value) : currentScopeBase;
54011
54634
  promises3 = promises3.concat(crawl(value, keyPath, childScopeBase, dynamicIdScope, $refs, options, seen, external));
@@ -54013,9 +54636,9 @@ function crawl(obj, path7, scopeBase, dynamicIdScope, $refs, options, seen, exte
54013
54636
  }
54014
54637
  return promises3;
54015
54638
  }
54016
- async function resolve$Ref($ref, path7, scopeBase, dynamicIdScope, $refs, options) {
54639
+ async function resolve$Ref($ref, path8, scopeBase, dynamicIdScope, $refs, options) {
54017
54640
  const shouldResolveOnCwd = options.dereference?.externalReferenceResolution === "root";
54018
- const resolutionBase = shouldResolveOnCwd ? cwd() : dynamicIdScope ? scopeBase : path7;
54641
+ const resolutionBase = shouldResolveOnCwd ? cwd() : dynamicIdScope ? scopeBase : path8;
54019
54642
  const resolvedPath = resolve2(resolutionBase, $ref.$ref);
54020
54643
  const withoutHash = stripHash(resolvedPath);
54021
54644
  const ref = $refs._get$Ref(withoutHash);
@@ -54040,8 +54663,8 @@ async function resolve$Ref($ref, path7, scopeBase, dynamicIdScope, $refs, option
54040
54663
  throw err;
54041
54664
  }
54042
54665
  if ($refs._$refs[withoutHash]) {
54043
- err.source = decodeURI(stripHash(path7));
54044
- err.path = safePointerToPath(getHash(path7));
54666
+ err.source = decodeURI(stripHash(path8));
54667
+ err.path = safePointerToPath(getHash(path8));
54045
54668
  }
54046
54669
  return [];
54047
54670
  }
@@ -54060,14 +54683,14 @@ function bundle(parser, options) {
54060
54683
  fixRefsThroughRefs(inventory, parser.schema);
54061
54684
  }
54062
54685
  }
54063
- function crawl2(parent, key, path7, scopeBase, dynamicIdScope, pathFromRoot, indirections, inventory, $refs, options) {
54686
+ function crawl2(parent, key, path8, scopeBase, dynamicIdScope, pathFromRoot, indirections, inventory, $refs, options) {
54064
54687
  const obj = key === null ? parent : parent[key];
54065
54688
  const bundleOptions = options.bundle || {};
54066
54689
  const isExcludedPath = bundleOptions.excludedPathMatcher || (() => false);
54067
54690
  if (obj && typeof obj === "object" && !ArrayBuffer.isView(obj) && !isExcludedPath(pathFromRoot)) {
54068
54691
  const currentScopeBase = scopeBase;
54069
54692
  if (ref_default.isAllowed$Ref(obj)) {
54070
- inventory$Ref(parent, key, path7, currentScopeBase, dynamicIdScope, pathFromRoot, indirections, inventory, $refs, options);
54693
+ inventory$Ref(parent, key, path8, currentScopeBase, dynamicIdScope, pathFromRoot, indirections, inventory, $refs, options);
54071
54694
  } else {
54072
54695
  const keys = Object.keys(obj).sort((a, b) => {
54073
54696
  if (a === "definitions" || a === "$defs") {
@@ -54079,7 +54702,7 @@ function crawl2(parent, key, path7, scopeBase, dynamicIdScope, pathFromRoot, ind
54079
54702
  }
54080
54703
  });
54081
54704
  for (const key2 of keys) {
54082
- const keyPath = pointer_default.join(path7, key2);
54705
+ const keyPath = pointer_default.join(path8, key2);
54083
54706
  const keyPathFromRoot = pointer_default.join(pathFromRoot, key2);
54084
54707
  const value = obj[key2];
54085
54708
  const childScopeBase = dynamicIdScope && value && typeof value === "object" && !ArrayBuffer.isView(value) ? getSchemaBasePath(currentScopeBase, value) : currentScopeBase;
@@ -54097,9 +54720,9 @@ function crawl2(parent, key, path7, scopeBase, dynamicIdScope, pathFromRoot, ind
54097
54720
  }
54098
54721
  }
54099
54722
  }
54100
- function inventory$Ref($refParent, $refKey, path7, scopeBase, dynamicIdScope, pathFromRoot, indirections, inventory, $refs, options) {
54723
+ function inventory$Ref($refParent, $refKey, path8, scopeBase, dynamicIdScope, pathFromRoot, indirections, inventory, $refs, options) {
54101
54724
  const $ref = $refKey === null ? $refParent : $refParent[$refKey];
54102
- const $refPath = resolve2(dynamicIdScope ? scopeBase : path7, $ref.$ref);
54725
+ const $refPath = resolve2(dynamicIdScope ? scopeBase : path8, $ref.$ref);
54103
54726
  const pointer = $refs._resolve($refPath, pathFromRoot, options);
54104
54727
  if (pointer === null) {
54105
54728
  return;
@@ -54259,11 +54882,11 @@ function resolvePathThroughRefs(schema2, refPath) {
54259
54882
  const result = "#/" + resolvedSegments.join("/");
54260
54883
  return result;
54261
54884
  }
54262
- function walkPath(schema2, path7) {
54263
- if (!path7.startsWith("#/")) {
54885
+ function walkPath(schema2, path8) {
54886
+ if (!path8.startsWith("#/")) {
54264
54887
  return void 0;
54265
54888
  }
54266
- const segments2 = path7.slice(2).split("/");
54889
+ const segments2 = path8.slice(2).split("/");
54267
54890
  let current = schema2;
54268
54891
  for (const seg of segments2) {
54269
54892
  if (current === null || current === void 0 || typeof current !== "object") {
@@ -54299,7 +54922,7 @@ function dereference(parser, options) {
54299
54922
  parser.$refs.circular = dereferenced.circular;
54300
54923
  parser.schema = dereferenced.value;
54301
54924
  }
54302
- function crawl3(obj, path7, scopeBase, dynamicIdScope, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime, depth) {
54925
+ function crawl3(obj, path8, scopeBase, dynamicIdScope, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime, depth) {
54303
54926
  let dereferenced;
54304
54927
  const result = {
54305
54928
  value: obj,
@@ -54318,13 +54941,13 @@ function crawl3(obj, path7, scopeBase, dynamicIdScope, pathFromRoot, parents, pr
54318
54941
  processedObjects.add(obj);
54319
54942
  const currentScopeBase = scopeBase;
54320
54943
  if (ref_default.isAllowed$Ref(obj, options)) {
54321
- dereferenced = dereference$Ref(obj, path7, currentScopeBase, dynamicIdScope, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime, depth);
54944
+ dereferenced = dereference$Ref(obj, path8, currentScopeBase, dynamicIdScope, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime, depth);
54322
54945
  result.circular = dereferenced.circular;
54323
54946
  result.value = dereferenced.value;
54324
54947
  } else {
54325
54948
  for (const key of Object.keys(obj)) {
54326
54949
  checkDereferenceTimeout(startTime, options);
54327
- const keyPath = pointer_default.join(path7, key);
54950
+ const keyPath = pointer_default.join(path8, key);
54328
54951
  const keyPathFromRoot = pointer_default.join(pathFromRoot, key);
54329
54952
  if (isExcludedPath(keyPathFromRoot)) {
54330
54953
  continue;
@@ -54379,10 +55002,10 @@ function crawl3(obj, path7, scopeBase, dynamicIdScope, pathFromRoot, parents, pr
54379
55002
  }
54380
55003
  return result;
54381
55004
  }
54382
- function dereference$Ref($ref, path7, scopeBase, dynamicIdScope, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime, depth) {
55005
+ function dereference$Ref($ref, path8, scopeBase, dynamicIdScope, pathFromRoot, parents, processedObjects, dereferencedCache, $refs, options, startTime, depth) {
54383
55006
  const isExternalRef = ref_default.isExternal$Ref($ref);
54384
55007
  const shouldResolveOnCwd = isExternalRef && options?.dereference?.externalReferenceResolution === "root";
54385
- const resolutionBase = shouldResolveOnCwd ? cwd() : dynamicIdScope ? scopeBase : path7;
55008
+ const resolutionBase = shouldResolveOnCwd ? cwd() : dynamicIdScope ? scopeBase : path8;
54386
55009
  const $refPath = resolve2(resolutionBase, $ref.$ref);
54387
55010
  const cache = dereferencedCache.get($refPath);
54388
55011
  if (cache) {
@@ -54404,16 +55027,16 @@ function dereference$Ref($ref, path7, scopeBase, dynamicIdScope, pathFromRoot, p
54404
55027
  }
54405
55028
  if (typeof cache.value === "object" && "$ref" in cache.value && "$ref" in $ref) {
54406
55029
  if (cache.value.$ref === $ref.$ref) {
54407
- foundCircularReference(path7, $refs, options);
55030
+ foundCircularReference(path8, $refs, options);
54408
55031
  return cache;
54409
55032
  } else {
54410
55033
  }
54411
55034
  } else {
54412
- foundCircularReference(path7, $refs, options);
55035
+ foundCircularReference(path8, $refs, options);
54413
55036
  return cache;
54414
55037
  }
54415
55038
  }
54416
- const pointer = $refs._resolve($refPath, path7, options);
55039
+ const pointer = $refs._resolve($refPath, path8, options);
54417
55040
  if (pointer === null) {
54418
55041
  return {
54419
55042
  circular: false,
@@ -54423,7 +55046,7 @@ function dereference$Ref($ref, path7, scopeBase, dynamicIdScope, pathFromRoot, p
54423
55046
  const directCircular = pointer.circular;
54424
55047
  let circular = directCircular || parents.has(pointer.value);
54425
55048
  if (circular) {
54426
- foundCircularReference(path7, $refs, options);
55049
+ foundCircularReference(path8, $refs, options);
54427
55050
  }
54428
55051
  let dereferencedValue = ref_default.dereference($ref, pointer.value, options);
54429
55052
  if (!circular) {
@@ -60831,7 +61454,7 @@ function hasInvalidPaths(api) {
60831
61454
  if (!api.paths || typeof api.paths !== "object" || Array.isArray(api.paths)) {
60832
61455
  return false;
60833
61456
  }
60834
- return Object.keys(api.paths).some((path7) => !path7.startsWith("/"));
61457
+ return Object.keys(api.paths).some((path8) => !path8.startsWith("/"));
60835
61458
  }
60836
61459
  function reduceAjvErrors(errors) {
60837
61460
  const flattened = /* @__PURE__ */ new Map();
@@ -60916,7 +61539,7 @@ function validateSchema(api, options = {}, suppressedInstancePaths = []) {
60916
61539
  }
60917
61540
  let additionalErrors = 0;
60918
61541
  let reducedErrors = reduceAjvErrors(ajv.errors).filter((err) => {
60919
- return !suppressedInstancePaths.some((path7) => err.instancePath === path7 || err.instancePath.startsWith(`${path7}/`));
61542
+ return !suppressedInstancePaths.some((path8) => err.instancePath === path8 || err.instancePath.startsWith(`${path8}/`));
60920
61543
  });
60921
61544
  if (!reducedErrors.length) {
60922
61545
  return { valid: true, warnings: [], specification: specificationName };
@@ -60967,9 +61590,9 @@ var SpecificationValidator = class {
60967
61590
  reportWarning(message) {
60968
61591
  this.warnings.push({ message });
60969
61592
  }
60970
- flagInstancePath(path7) {
60971
- if (!this.flaggedInstancePaths.includes(path7)) {
60972
- this.flaggedInstancePaths.push(path7);
61593
+ flagInstancePath(path8) {
61594
+ if (!this.flaggedInstancePaths.includes(path8)) {
61595
+ this.flaggedInstancePaths.push(path8);
60973
61596
  }
60974
61597
  }
60975
61598
  };
@@ -60987,10 +61610,10 @@ var OpenAPISpecificationValidator = class extends SpecificationValidator {
60987
61610
  run() {
60988
61611
  const operationIds = [];
60989
61612
  Object.keys(this.api.paths || {}).forEach((pathName) => {
60990
- const path7 = this.api.paths[pathName];
61613
+ const path8 = this.api.paths[pathName];
60991
61614
  const pathId = `/paths${pathName}`;
60992
- if (path7 && pathName.startsWith("/")) {
60993
- this.validatePath(path7, pathId, operationIds);
61615
+ if (path8 && pathName.startsWith("/")) {
61616
+ this.validatePath(path8, pathId, operationIds);
60994
61617
  }
60995
61618
  });
60996
61619
  if (isOpenAPI30(this.api)) {
@@ -61019,9 +61642,9 @@ var OpenAPISpecificationValidator = class extends SpecificationValidator {
61019
61642
  * Validates the given path.
61020
61643
  *
61021
61644
  */
61022
- validatePath(path7, pathId, operationIds) {
61645
+ validatePath(path8, pathId, operationIds) {
61023
61646
  supportedHTTPMethods.forEach((operationName) => {
61024
- const operation = path7[operationName];
61647
+ const operation = path8[operationName];
61025
61648
  const operationId = `${pathId}/${operationName}`;
61026
61649
  if (operation) {
61027
61650
  const declaredOperationId = operation.operationId;
@@ -61034,7 +61657,7 @@ var OpenAPISpecificationValidator = class extends SpecificationValidator {
61034
61657
  this.reportError(`The operationId \`${declaredOperationId}\` is duplicated and must be made unique.`);
61035
61658
  }
61036
61659
  }
61037
- this.validateParameters(path7, pathId, operation, operationId);
61660
+ this.validateParameters(path8, pathId, operation, operationId);
61038
61661
  Object.keys(operation.responses || {}).forEach((responseCode) => {
61039
61662
  const response = operation.responses[responseCode];
61040
61663
  const responseId = `${operationId}/responses/${responseCode}`;
@@ -61049,8 +61672,8 @@ var OpenAPISpecificationValidator = class extends SpecificationValidator {
61049
61672
  * Validates the parameters for the given operation.
61050
61673
  *
61051
61674
  */
61052
- validateParameters(path7, pathId, operation, operationId) {
61053
- const pathParams = path7.parameters || [];
61675
+ validateParameters(path8, pathId, operation, operationId) {
61676
+ const pathParams = path8.parameters || [];
61054
61677
  const operationParams = operation.parameters || [];
61055
61678
  this.checkForDuplicates(pathParams, pathId);
61056
61679
  this.checkForDuplicates(operationParams, operationId);
@@ -61349,10 +61972,10 @@ var SwaggerSpecificationValidator = class extends SpecificationValidator {
61349
61972
  run() {
61350
61973
  const operationIds = [];
61351
61974
  Object.keys(this.api.paths || {}).forEach((pathName) => {
61352
- const path7 = this.api.paths[pathName];
61975
+ const path8 = this.api.paths[pathName];
61353
61976
  const pathId = `/paths${pathName}`;
61354
- if (path7 && pathName.startsWith("/")) {
61355
- this.validatePath(path7, pathId, operationIds);
61977
+ if (path8 && pathName.startsWith("/")) {
61978
+ this.validatePath(path8, pathId, operationIds);
61356
61979
  }
61357
61980
  });
61358
61981
  Object.keys(this.api.definitions || {}).forEach((definitionName) => {
@@ -61370,9 +61993,9 @@ var SwaggerSpecificationValidator = class extends SpecificationValidator {
61370
61993
  * Validates the given path.
61371
61994
  *
61372
61995
  */
61373
- validatePath(path7, pathId, operationIds) {
61996
+ validatePath(path8, pathId, operationIds) {
61374
61997
  swaggerHTTPMethods.forEach((operationName) => {
61375
- const operation = path7[operationName];
61998
+ const operation = path8[operationName];
61376
61999
  const operationId = `${pathId}/${operationName}`;
61377
62000
  if (operation) {
61378
62001
  const declaredOperationId = operation.operationId;
@@ -61385,7 +62008,7 @@ var SwaggerSpecificationValidator = class extends SpecificationValidator {
61385
62008
  this.reportError(`The operationId \`${declaredOperationId}\` is duplicated and must be made unique.`);
61386
62009
  }
61387
62010
  }
61388
- this.validateParameters(path7, pathId, operation, operationId);
62011
+ this.validateParameters(path8, pathId, operation, operationId);
61389
62012
  Object.keys(operation.responses || {}).forEach((responseName) => {
61390
62013
  const response = operation.responses[responseName];
61391
62014
  if ("$ref" in response || !response) {
@@ -61401,8 +62024,8 @@ var SwaggerSpecificationValidator = class extends SpecificationValidator {
61401
62024
  * Validates the parameters for the given operation.
61402
62025
  *
61403
62026
  */
61404
- validateParameters(path7, pathId, operation, operationId) {
61405
- const pathParams = (path7.parameters || []).filter((param) => !("$ref" in param));
62027
+ validateParameters(path8, pathId, operation, operationId) {
62028
+ const pathParams = (path8.parameters || []).filter((param) => !("$ref" in param));
61406
62029
  const operationParams = (operation.parameters || []).filter(
61407
62030
  (param) => !("$ref" in param)
61408
62031
  );
@@ -61981,29 +62604,29 @@ async function loadOpenApiContractSpec(specUrl, options = {}) {
61981
62604
  async function loadOpenApiContractSpecFromPath(specPath, options = {}) {
61982
62605
  if (!specPath) throw new Error("CONTRACT_SPEC_READ_FAILED: spec-path must not be empty");
61983
62606
  const workspaceRoot = (() => {
61984
- const root = import_node_path.default.resolve(process.env.GITHUB_WORKSPACE ?? process.cwd());
62607
+ const root = import_node_path2.default.resolve(process.env.GITHUB_WORKSPACE ?? process.cwd());
61985
62608
  try {
61986
- return (0, import_node_fs.realpathSync)(root);
62609
+ return (0, import_node_fs2.realpathSync)(root);
61987
62610
  } catch {
61988
62611
  return root;
61989
62612
  }
61990
62613
  })();
61991
- const resolved = import_node_path.default.resolve(workspaceRoot, specPath);
62614
+ const resolved = import_node_path2.default.resolve(workspaceRoot, specPath);
61992
62615
  let absolutePath;
61993
62616
  try {
61994
- absolutePath = (0, import_node_fs.realpathSync)(resolved);
62617
+ absolutePath = (0, import_node_fs2.realpathSync)(resolved);
61995
62618
  } catch (error2) {
61996
62619
  throw new Error(`CONTRACT_SPEC_READ_FAILED: Unable to read spec at ${specPath}`, { cause: error2 });
61997
62620
  }
61998
- const rel = import_node_path.default.relative(workspaceRoot, absolutePath);
61999
- if (!rel || rel.startsWith("..") || import_node_path.default.isAbsolute(rel)) {
62621
+ const rel = import_node_path2.default.relative(workspaceRoot, absolutePath);
62622
+ if (!rel || rel.startsWith("..") || import_node_path2.default.isAbsolute(rel)) {
62000
62623
  throw new Error(`CONTRACT_SPEC_READ_FAILED: spec-path must resolve inside ${workspaceRoot}, got: ${specPath}`);
62001
62624
  }
62002
62625
  const maxBytes = options.maxBytesPerResource ?? SAFE_FETCH_LIMITS.maxBytesPerResource;
62003
62626
  const maxTotalBytes = options.maxTotalBytes ?? SAFE_FETCH_LIMITS.maxTotalBytes;
62004
62627
  let onDiskBytes;
62005
62628
  try {
62006
- onDiskBytes = (await (0, import_promises2.stat)(absolutePath)).size;
62629
+ onDiskBytes = (await (0, import_promises3.stat)(absolutePath)).size;
62007
62630
  } catch (error2) {
62008
62631
  throw new Error(`CONTRACT_SPEC_READ_FAILED: Unable to read spec at ${specPath}`, { cause: error2 });
62009
62632
  }
@@ -62016,7 +62639,7 @@ async function loadOpenApiContractSpecFromPath(specPath, options = {}) {
62016
62639
  }
62017
62640
  let content;
62018
62641
  try {
62019
- content = await (0, import_promises2.readFile)(absolutePath, "utf8");
62642
+ content = await (0, import_promises3.readFile)(absolutePath, "utf8");
62020
62643
  } catch (error2) {
62021
62644
  throw new Error(`CONTRACT_SPEC_READ_FAILED: Unable to read spec at ${specPath}`, { cause: error2 });
62022
62645
  }
@@ -62078,6 +62701,13 @@ function parseSpecSyncMode(value) {
62078
62701
  }
62079
62702
  throw new Error(`Unsupported spec-sync-mode "${v}". Supported values: ${allowed.join(", ")}`);
62080
62703
  }
62704
+ function parseBreakingChangeMode(value) {
62705
+ return parseEnumInput(
62706
+ "breaking-change-mode",
62707
+ value,
62708
+ customerPreviewActionContract.inputs["breaking-change-mode"].default ?? "off"
62709
+ );
62710
+ }
62081
62711
  function parseEnumInput(name, value, defaultValue) {
62082
62712
  const allowed = customerPreviewActionContract.inputs[name].allowedValues ?? [];
62083
62713
  const v = value?.trim() || defaultValue;
@@ -62183,6 +62813,12 @@ function resolveInputs(env = process.env) {
62183
62813
  specUrl,
62184
62814
  specPath,
62185
62815
  openapiVersion: resolveOpenapiVersion(getInput2("openapi-version", env)),
62816
+ breakingChangeMode: parseBreakingChangeMode(getInput2("breaking-change-mode", env)),
62817
+ breakingBaselineSpecPath: getInput2("breaking-baseline-spec-path", env),
62818
+ breakingRulesPath: getInput2("breaking-rules-path", env) ?? customerPreviewActionContract.inputs["breaking-rules-path"].default,
62819
+ breakingTargetRef: getInput2("breaking-target-ref", env),
62820
+ breakingSummaryPath: getInput2("breaking-summary-path", env),
62821
+ breakingLogPath: getInput2("breaking-log-path", env),
62186
62822
  governanceMappingJson: parseGovernanceMappingJson(getInput2("governance-mapping-json", env)),
62187
62823
  postmanApiKey: getInput2("postman-api-key", env) ?? "",
62188
62824
  postmanAccessToken: getInput2("postman-access-token", env),
@@ -62223,6 +62859,17 @@ function createPlannedOutputs(inputs) {
62223
62859
  total: 0,
62224
62860
  violations: [],
62225
62861
  warnings: 0
62862
+ }),
62863
+ "breaking-change-status": "skipped",
62864
+ "breaking-change-summary-json": JSON.stringify({
62865
+ breakingChanges: 0,
62866
+ comparison: "",
62867
+ exitCode: 0,
62868
+ logPath: "",
62869
+ message: "Breaking-change check is disabled.",
62870
+ mode: inputs.breakingChangeMode,
62871
+ status: "skipped",
62872
+ summaryPath: ""
62226
62873
  })
62227
62874
  };
62228
62875
  }
@@ -62277,6 +62924,12 @@ function readActionInputs(actionCore) {
62277
62924
  INPUT_NESTED_FOLDER_HIERARCHY: optionalInput(actionCore, "nested-folder-hierarchy") ?? customerPreviewActionContract.inputs["nested-folder-hierarchy"].default,
62278
62925
  INPUT_REQUEST_NAME_SOURCE: optionalInput(actionCore, "request-name-source") ?? customerPreviewActionContract.inputs["request-name-source"].default,
62279
62926
  INPUT_OPENAPI_VERSION: optionalInput(actionCore, "openapi-version") ?? "",
62927
+ INPUT_BREAKING_CHANGE_MODE: optionalInput(actionCore, "breaking-change-mode") ?? customerPreviewActionContract.inputs["breaking-change-mode"].default,
62928
+ INPUT_BREAKING_BASELINE_SPEC_PATH: optionalInput(actionCore, "breaking-baseline-spec-path"),
62929
+ INPUT_BREAKING_RULES_PATH: optionalInput(actionCore, "breaking-rules-path") ?? customerPreviewActionContract.inputs["breaking-rules-path"].default,
62930
+ INPUT_BREAKING_TARGET_REF: optionalInput(actionCore, "breaking-target-ref"),
62931
+ INPUT_BREAKING_SUMMARY_PATH: optionalInput(actionCore, "breaking-summary-path"),
62932
+ INPUT_BREAKING_LOG_PATH: optionalInput(actionCore, "breaking-log-path"),
62280
62933
  INPUT_POSTMAN_STACK: optionalInput(actionCore, "postman-stack") ?? customerPreviewActionContract.inputs["postman-stack"].default,
62281
62934
  INPUT_GITHUB_TOKEN: githubToken,
62282
62935
  INPUT_GH_FALLBACK_TOKEN: ghFallbackToken
@@ -62423,7 +63076,7 @@ function createAssetProjectName(inputs, releaseLabel) {
62423
63076
  }
62424
63077
  function readResourcesState() {
62425
63078
  try {
62426
- return (0, import_yaml3.parse)((0, import_node_fs2.readFileSync)(".postman/resources.yaml", "utf8"));
63079
+ return (0, import_yaml3.parse)((0, import_node_fs3.readFileSync)(".postman/resources.yaml", "utf8"));
62427
63080
  } catch {
62428
63081
  return null;
62429
63082
  }
@@ -62569,6 +63222,7 @@ async function runBootstrap(inputs, dependencies) {
62569
63222
  let previousSpecRollbackHash;
62570
63223
  let detectedOpenapiVersion = "3.0";
62571
63224
  let contractIndex;
63225
+ let sourceSpecContent = "";
62572
63226
  const specContent = await runGroup(
62573
63227
  dependencies.core,
62574
63228
  "Preflight OpenAPI Contract",
@@ -62577,6 +63231,7 @@ async function runBootstrap(inputs, dependencies) {
62577
63231
  fetchText: dependencies.specFetcher === fetch ? void 0 : async (url) => fetchSpecDocument(url, dependencies.specFetcher)
62578
63232
  };
62579
63233
  const loaded = inputs.specPath ? await loadOpenApiContractSpecFromPath(inputs.specPath, loaderOptions) : await loadOpenApiContractSpec(inputs.specUrl, loaderOptions);
63234
+ sourceSpecContent = loaded.content;
62580
63235
  const document = normalizeSpecDocument(
62581
63236
  loaded.bundledContent,
62582
63237
  (msg) => dependencies.core.warning(msg)
@@ -62603,7 +63258,7 @@ async function runBootstrap(inputs, dependencies) {
62603
63258
  previousRaw,
62604
63259
  (msg) => dependencies.core.warning(`Previous spec normalization: ${msg}`)
62605
63260
  );
62606
- previousSpecRollbackHash = (0, import_node_crypto.createHash)("sha256").update(previousSpecContent).digest("hex");
63261
+ previousSpecRollbackHash = (0, import_node_crypto2.createHash)("sha256").update(previousSpecContent).digest("hex");
62607
63262
  const existingSpecType = normalizeSpecTypeFromContent(previousSpecContent);
62608
63263
  if (existingSpecType !== incomingSpecType) {
62609
63264
  throw new Error(
@@ -62617,6 +63272,38 @@ async function runBootstrap(inputs, dependencies) {
62617
63272
  return document;
62618
63273
  }
62619
63274
  );
63275
+ const breakingChangeResult = await runGroup(
63276
+ dependencies.core,
63277
+ "OpenAPI Breaking Change Check",
63278
+ async () => (dependencies.openApiChanges ?? runOpenApiBreakingChangeCheck)(
63279
+ {
63280
+ baselineSpecPath: inputs.breakingBaselineSpecPath,
63281
+ currentSourceContent: sourceSpecContent,
63282
+ currentUploadContent: specContent,
63283
+ logPath: inputs.breakingLogPath,
63284
+ mode: inputs.breakingChangeMode,
63285
+ previousSpecContent,
63286
+ rulesPath: inputs.breakingRulesPath,
63287
+ specPath: inputs.specPath,
63288
+ summaryPath: inputs.breakingSummaryPath,
63289
+ targetRef: inputs.breakingTargetRef
63290
+ },
63291
+ {
63292
+ core: dependencies.core,
63293
+ env: process.env,
63294
+ exec: dependencies.exec
63295
+ }
63296
+ )
63297
+ );
63298
+ outputs["breaking-change-status"] = breakingChangeResult.status;
63299
+ outputs["breaking-change-summary-json"] = createBreakingChangeSummaryJson(breakingChangeResult);
63300
+ if (breakingChangeResult.status === "failed") {
63301
+ dependencies.core.setOutput("breaking-change-status", outputs["breaking-change-status"]);
63302
+ dependencies.core.setOutput("breaking-change-summary-json", outputs["breaking-change-summary-json"]);
63303
+ throw new Error(
63304
+ `OpenAPI breaking-change check failed: ${breakingChangeResult.message || "breaking changes detected"}`
63305
+ );
63306
+ }
62620
63307
  let explicitWorkspaceId = inputs.workspaceId;
62621
63308
  if (!explicitWorkspaceId && resourcesState?.workspace?.id) {
62622
63309
  explicitWorkspaceId = resourcesState.workspace.id;