@postman-cse/onboarding-bootstrap 2.9.5 → 2.9.6

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
@@ -259408,6 +259408,18 @@ async function retry(operation, options = {}) {
259408
259408
  }
259409
259409
  throw new Error("Retry exhausted without returning or throwing");
259410
259410
  }
259411
+ function fullJitterDelayMs(attempt, baseMs, capMs, random = Math.random) {
259412
+ const ceiling = Math.min(capMs, baseMs * 2 ** Math.max(0, attempt));
259413
+ return Math.floor(random() * Math.max(0, ceiling));
259414
+ }
259415
+ function parseRetryAfterMs2(value) {
259416
+ if (!value) return void 0;
259417
+ const trimmed = value.trim();
259418
+ if (/^\d+$/.test(trimmed)) return Number(trimmed) * 1e3;
259419
+ const when = Date.parse(trimmed);
259420
+ if (!Number.isNaN(when)) return Math.max(0, when - Date.now());
259421
+ return void 0;
259422
+ }
259411
259423
 
259412
259424
  // src/lib/postman/postman-ec-client.ts
259413
259425
  var EC_WRITE_MAX_ATTEMPTS = 3;
@@ -264021,6 +264033,12 @@ var BOOTSTRAP_BARE_UUID_RE = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9
264021
264033
  function isMissingPatchValueError(error2) {
264022
264034
  return error2 instanceof HttpError && error2.status === 400 && error2.responseBody.includes("Remove operation must point to an existing value");
264023
264035
  }
264036
+ function isRejectedPatchError(error2) {
264037
+ return error2 instanceof HttpError && error2.status === 400 && /REJECTED_PATCH|must update at least one/i.test(
264038
+ `${error2.message}
264039
+ ${error2.responseBody ?? ""}`
264040
+ );
264041
+ }
264024
264042
  function canonicalize(value) {
264025
264043
  if (Array.isArray(value)) return value.map(canonicalize);
264026
264044
  if (value && typeof value === "object") {
@@ -264084,6 +264102,7 @@ var PostmanGatewayAssetsClient = class _PostmanGatewayAssetsClient {
264084
264102
  static DEFAULT_GENERATION_POLL_DELAY_MS = 2e3;
264085
264103
  gateway;
264086
264104
  sleep;
264105
+ random;
264087
264106
  generationPollAttempts;
264088
264107
  generationPollDelayMs;
264089
264108
  createIdentity;
@@ -264091,6 +264110,7 @@ var PostmanGatewayAssetsClient = class _PostmanGatewayAssetsClient {
264091
264110
  this.gateway = options.gateway;
264092
264111
  this.createIdentity = options.createIdentity ?? import_node_crypto2.randomUUID;
264093
264112
  this.sleep = options.sleep ?? ((delayMs) => new Promise((resolve5) => setTimeout(resolve5, delayMs)));
264113
+ this.random = options.random ?? Math.random;
264094
264114
  this.generationPollAttempts = resolvePollBudget(
264095
264115
  options.generationPollAttempts,
264096
264116
  process.env.POSTMAN_GENERATION_POLL_ATTEMPTS,
@@ -264865,7 +264885,7 @@ ${error2.responseBody ?? ""}`
264865
264885
  if (!retriable || attempt === maxAttempts - 1) {
264866
264886
  throw error2;
264867
264887
  }
264868
- await this.sleep(Math.min(2e3, 300 * 2 ** attempt));
264888
+ await this.sleep(fullJitterDelayMs(attempt, 300, 2e3, this.random));
264869
264889
  }
264870
264890
  }
264871
264891
  }
@@ -265116,14 +265136,19 @@ ${error2.responseBody ?? ""}`
265116
265136
  { type: "afterResponse", code: exec2.join("\n"), language: "text/javascript" }
265117
265137
  ];
265118
265138
  for (const script of plan.scripts) {
265119
- await this.gateway.requestJson({
265120
- service: "collection",
265121
- method: "patch",
265122
- path: `/v3/collections/${cid}/items/${script.itemId}`,
265123
- retry: "safe",
265124
- headers: { "X-Entity-Type": "http-request" },
265125
- body: [{ op: "add", path: "/scripts", value: toV3Scripts(script.exec) }]
265126
- });
265139
+ try {
265140
+ await this.gateway.requestJson({
265141
+ service: "collection",
265142
+ method: "patch",
265143
+ path: `/v3/collections/${cid}/items/${script.itemId}`,
265144
+ retry: "safe",
265145
+ headers: { "X-Entity-Type": "http-request" },
265146
+ body: [{ op: "add", path: "/scripts", value: toV3Scripts(script.exec) }]
265147
+ });
265148
+ } catch (error2) {
265149
+ if (isRejectedPatchError(error2)) continue;
265150
+ throw error2;
265151
+ }
265127
265152
  }
265128
265153
  if (!items.some((i) => String(i.name ?? "") === "00 - Resolve Secrets")) {
265129
265154
  const created = await this.gateway.requestJson({
@@ -265328,36 +265353,47 @@ ${error2.responseBody ?? ""}`
265328
265353
  async createItemTree(cid, items, parentId) {
265329
265354
  for (const item of items) {
265330
265355
  const kind = String(item.$kind ?? "http-request");
265331
- let created;
265332
- try {
265333
- created = await this.gateway.requestJson({
265334
- service: "collection",
265335
- method: "post",
265336
- path: `/v3/collections/${cid}/items/`,
265337
- retry: "none",
265338
- headers: { "X-Entity-Type": kind },
265339
- body: this.buildItemCreateBody(item, parentId)
265340
- });
265341
- } catch (error2) {
265342
- if (!isAmbiguousTransportError(error2)) throw error2;
265343
- const name = String(item.name ?? "Untitled");
265344
- const matches = (await this.listCollectionItems(cid)).filter((candidate) => {
265345
- if (String(candidate.name ?? candidate.title ?? "") !== name) return false;
265346
- if (String(candidate.$kind ?? candidate.type ?? "http-request") !== kind) return false;
265347
- const position = asRecord8(candidate.position);
265348
- const parent = asRecord8(position?.parent);
265349
- const candidateParent = String(parent?.id ?? position?.parent ?? candidate.parent ?? "").trim();
265350
- return Boolean(candidateParent) && this.bareModelId(candidateParent) === this.bareModelId(parentId);
265351
- });
265352
- const match = adoptExactMatch(
265353
- `collection-item:${cid}:${parentId}:${kind}:${name}`,
265354
- matches,
265355
- (candidate) => String(candidate.id ?? "")
265356
- );
265357
- if (!match) throw error2;
265358
- created = { data: { id: match.id } };
265356
+ const maxAttempts = 4;
265357
+ let newId = "";
265358
+ for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
265359
+ let created;
265360
+ try {
265361
+ created = await this.gateway.requestJson({
265362
+ service: "collection",
265363
+ method: "post",
265364
+ path: `/v3/collections/${cid}/items/`,
265365
+ retry: "none",
265366
+ headers: { "X-Entity-Type": kind },
265367
+ body: this.buildItemCreateBody(item, parentId)
265368
+ });
265369
+ } catch (error2) {
265370
+ if (!isAmbiguousTransportError(error2)) throw error2;
265371
+ const name = String(item.name ?? "Untitled");
265372
+ const matches = (await this.listCollectionItems(cid)).filter((candidate) => {
265373
+ if (String(candidate.name ?? candidate.title ?? "") !== name) return false;
265374
+ if (String(candidate.$kind ?? candidate.type ?? "http-request") !== kind) return false;
265375
+ const position = asRecord8(candidate.position);
265376
+ const parent = asRecord8(position?.parent);
265377
+ const candidateParent = String(parent?.id ?? position?.parent ?? candidate.parent ?? "").trim();
265378
+ return Boolean(candidateParent) && this.bareModelId(candidateParent) === this.bareModelId(parentId);
265379
+ });
265380
+ const match = adoptExactMatch(
265381
+ `collection-item:${cid}:${parentId}:${kind}:${name}`,
265382
+ matches,
265383
+ (candidate) => String(candidate.id ?? "")
265384
+ );
265385
+ if (match) {
265386
+ created = { data: { id: match.id } };
265387
+ } else {
265388
+ const retriable = error2 instanceof HttpError && error2.status >= 500;
265389
+ if (!retriable || attempt === maxAttempts) throw error2;
265390
+ await this.sleep(fullJitterDelayMs(attempt - 1, 300, 2e3, this.random));
265391
+ continue;
265392
+ }
265393
+ }
265394
+ newId = String(asRecord8(created?.data)?.id ?? "").trim();
265395
+ if (newId) break;
265359
265396
  }
265360
- const newId = String(asRecord8(created?.data)?.id ?? "").trim();
265361
265397
  if (!newId) {
265362
265398
  throw new Error(
265363
265399
  `Item create did not return an id for ${String(item.name ?? "item")}`
@@ -265400,6 +265436,30 @@ ${error2.responseBody ?? ""}`
265400
265436
  * - `remove` of /description always works (field exists as "")
265401
265437
  * - on update, GET the root first and only remove fields that currently exist
265402
265438
  */
265439
+ /**
265440
+ * GET a collection root, retrying through the v3 surface's read-after-write
265441
+ * 404 lag. A freshly generated/renamed collection can transiently report
265442
+ * RESOURCE_NOT_FOUND for a few seconds (worse under concurrent runner load);
265443
+ * retrying absorbs that instead of hard-failing the run.
265444
+ */
265445
+ async getCollectionRoot(cid) {
265446
+ const got = await retry(
265447
+ () => this.gateway.requestJson({
265448
+ service: "collection",
265449
+ method: "get",
265450
+ path: `/v3/collections/${cid}`,
265451
+ retry: "none"
265452
+ }),
265453
+ {
265454
+ maxAttempts: 6,
265455
+ delayMs: 1e3,
265456
+ backoffMultiplier: 2,
265457
+ maxDelayMs: 8e3,
265458
+ shouldRetry: (error2) => error2 instanceof HttpError && error2.status === 404
265459
+ }
265460
+ );
265461
+ return asRecord8(got?.data);
265462
+ }
265403
265463
  async applyCollectionLevelSettings(cid, v3, options = {}) {
265404
265464
  const ops = [];
265405
265465
  if (options.rename && typeof v3.name === "string" && v3.name) {
@@ -265407,12 +265467,7 @@ ${error2.responseBody ?? ""}`
265407
265467
  }
265408
265468
  let current = null;
265409
265469
  if (options.reconcileRemovals) {
265410
- const got = await this.gateway.requestJson({
265411
- service: "collection",
265412
- method: "get",
265413
- path: `/v3/collections/${cid}`
265414
- });
265415
- current = asRecord8(got?.data);
265470
+ current = await this.getCollectionRoot(cid);
265416
265471
  }
265417
265472
  const hasDescription = typeof v3.description === "string" && v3.description.length > 0;
265418
265473
  if (hasDescription) {
@@ -265451,6 +265506,9 @@ ${error2.responseBody ?? ""}`
265451
265506
  if (isMissingPatchValueError(error2) && ops.some((op) => op.op === "remove") && await this.verifyRootSettingsApplied(cid, ops)) {
265452
265507
  return;
265453
265508
  }
265509
+ if (isRejectedPatchError(error2) && await this.verifyRootSettingsApplied(cid, ops)) {
265510
+ return;
265511
+ }
265454
265512
  throw error2;
265455
265513
  }
265456
265514
  }
@@ -265574,7 +265632,9 @@ ${error2.responseBody ?? ""}`
265574
265632
  }
265575
265633
  /** Patch only the durable collection description without reconciling its item tree. */
265576
265634
  async updateCollectionDescription(collectionUid, description) {
265577
- await this.applyCollectionLevelSettings(this.bareModelId(collectionUid), { description });
265635
+ const cid = this.bareModelId(collectionUid);
265636
+ await this.getCollectionRoot(cid);
265637
+ await this.applyCollectionLevelSettings(cid, { description });
265578
265638
  }
265579
265639
  /**
265580
265640
  * Full-replace reconcile of a curated local v2.1.0 or collection v3 payload: delete every
@@ -265657,6 +265717,7 @@ function detectInnerError(body2) {
265657
265717
  return typeof innerStatus === "number" && innerStatus >= 400 ? innerStatus : 502;
265658
265718
  }
265659
265719
  function isTransientGatewayError(status, body2) {
265720
+ if (status === 429) return true;
265660
265721
  if (status === 502 || status === 503 || status === 504) return true;
265661
265722
  if (status >= 500 && (body2.includes("ESOCKETTIMEDOUT") || body2.includes("ETIMEDOUT") || body2.includes("ECONNRESET") || body2.includes("serverError") || body2.includes("downstream"))) {
265662
265723
  return true;
@@ -265675,8 +265736,10 @@ var AccessTokenGatewayClient = class {
265675
265736
  secretMasker;
265676
265737
  maxRetries;
265677
265738
  retryBaseDelayMs;
265739
+ retryMaxDelayMs;
265678
265740
  requestTimeoutMs;
265679
265741
  sleepImpl;
265742
+ randomImpl;
265680
265743
  constructor(options) {
265681
265744
  this.tokenProvider = options.tokenProvider;
265682
265745
  this.bifrostBaseUrl = String(
@@ -265688,8 +265751,10 @@ var AccessTokenGatewayClient = class {
265688
265751
  this.secretMasker = options.secretMasker ?? createSecretMasker([this.tokenProvider.current()]);
265689
265752
  this.maxRetries = options.maxRetries ?? 3;
265690
265753
  this.retryBaseDelayMs = options.retryBaseDelayMs ?? 400;
265754
+ this.retryMaxDelayMs = options.retryMaxDelayMs ?? 5e3;
265691
265755
  this.requestTimeoutMs = options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
265692
265756
  this.sleepImpl = options.sleepImpl ?? defaultSleep;
265757
+ this.randomImpl = options.randomImpl ?? Math.random;
265693
265758
  }
265694
265759
  configureTeamContext(teamId, orgMode) {
265695
265760
  this.teamId = String(teamId || "").trim();
@@ -265749,7 +265814,7 @@ var AccessTokenGatewayClient = class {
265749
265814
  response = await this.send(request);
265750
265815
  } catch (error2) {
265751
265816
  if (retryMode === "safe" && attempt < this.maxRetries) {
265752
- const delay = this.retryBaseDelayMs * 2 ** attempt;
265817
+ const delay = this.retryDelayMs(attempt);
265753
265818
  attempt += 1;
265754
265819
  await this.sleepImpl(delay);
265755
265820
  continue;
@@ -265761,7 +265826,7 @@ var AccessTokenGatewayClient = class {
265761
265826
  const innerStatus = detectInnerError(okBody);
265762
265827
  if (innerStatus !== null) {
265763
265828
  if (retryMode === "safe" && isTransientGatewayError(innerStatus, okBody) && attempt < this.maxRetries) {
265764
- const delay = this.retryBaseDelayMs * 2 ** attempt;
265829
+ const delay = this.retryDelayMs(attempt);
265765
265830
  attempt += 1;
265766
265831
  await this.sleepImpl(delay);
265767
265832
  continue;
@@ -265786,7 +265851,10 @@ var AccessTokenGatewayClient = class {
265786
265851
  throw this.toHttpError(request, response, retryBody);
265787
265852
  }
265788
265853
  if (retryMode === "safe" && isTransientGatewayError(response.status, body2) && attempt < this.maxRetries) {
265789
- const delay = this.retryBaseDelayMs * 2 ** attempt;
265854
+ const delay = this.retryDelayMs(
265855
+ attempt,
265856
+ parseRetryAfterMs2(response.headers.get("retry-after"))
265857
+ );
265790
265858
  attempt += 1;
265791
265859
  await this.sleepImpl(delay);
265792
265860
  continue;
@@ -265794,6 +265862,18 @@ var AccessTokenGatewayClient = class {
265794
265862
  throw this.toHttpError(request, response, body2);
265795
265863
  }
265796
265864
  }
265865
+ /**
265866
+ * Full-jitter backoff (uniform in [0, min(cap, base * 2^attempt))) so
265867
+ * concurrent CI runners that fail together never retry in lockstep against
265868
+ * the shared gateway. A server-sent Retry-After beats the heuristic: it is
265869
+ * authoritative backpressure, honored verbatim (capped by the ceiling).
265870
+ */
265871
+ retryDelayMs(attempt, retryAfterMs) {
265872
+ if (retryAfterMs !== void 0) {
265873
+ return Math.min(this.retryMaxDelayMs, retryAfterMs);
265874
+ }
265875
+ return fullJitterDelayMs(attempt, this.retryBaseDelayMs, this.retryMaxDelayMs, this.randomImpl);
265876
+ }
265797
265877
  /**
265798
265878
  * The success path reads the body to inspect for an inner error, which
265799
265879
  * consumes the stream. Hand callers a fresh Response over the buffered text so
@@ -266531,6 +266611,9 @@ function createTelemetryContext(options) {
266531
266611
  var import_node_fs3 = require("node:fs");
266532
266612
  var import_node_path3 = require("node:path");
266533
266613
  function resolveActionVersion2() {
266614
+ if (false) {
266615
+ return void 0;
266616
+ }
266534
266617
  try {
266535
266618
  const raw = (0, import_node_fs3.readFileSync)((0, import_node_path3.join)(__dirname, "..", "package.json"), "utf8");
266536
266619
  return JSON.parse(raw).version ?? "unknown";
@@ -299330,940 +299413,6 @@ function getPositionFromMatch(match) {
299330
299413
  }
299331
299414
 
299332
299415
  // node_modules/@nodable/entities/src/entities.js
299333
- var BASIC_LATIN = {
299334
- amp: "&",
299335
- AMP: "&",
299336
- lt: "<",
299337
- LT: "<",
299338
- gt: ">",
299339
- GT: ">",
299340
- quot: '"',
299341
- QUOT: '"',
299342
- apos: "'",
299343
- lsquo: "\u2018",
299344
- rsquo: "\u2019",
299345
- ldquo: "\u201C",
299346
- rdquo: "\u201D",
299347
- lsquor: "\u201A",
299348
- rsquor: "\u2019",
299349
- ldquor: "\u201E",
299350
- bdquo: "\u201E",
299351
- comma: ",",
299352
- period: ".",
299353
- colon: ":",
299354
- semi: ";",
299355
- excl: "!",
299356
- quest: "?",
299357
- num: "#",
299358
- dollar: "$",
299359
- percent: "%",
299360
- ast: "*",
299361
- commat: "@",
299362
- lowbar: "_",
299363
- verbar: "|",
299364
- vert: "|",
299365
- sol: "/",
299366
- bsol: "\\",
299367
- lbrace: "{",
299368
- rbrace: "}",
299369
- lbrack: "[",
299370
- rbrack: "]",
299371
- lpar: "(",
299372
- rpar: ")",
299373
- nbsp: "\xA0",
299374
- iexcl: "\xA1",
299375
- cent: "\xA2",
299376
- pound: "\xA3",
299377
- curren: "\xA4",
299378
- yen: "\xA5",
299379
- brvbar: "\xA6",
299380
- sect: "\xA7",
299381
- uml: "\xA8",
299382
- copy: "\xA9",
299383
- COPY: "\xA9",
299384
- ordf: "\xAA",
299385
- laquo: "\xAB",
299386
- not: "\xAC",
299387
- shy: "\xAD",
299388
- reg: "\xAE",
299389
- REG: "\xAE",
299390
- macr: "\xAF",
299391
- deg: "\xB0",
299392
- plusmn: "\xB1",
299393
- sup2: "\xB2",
299394
- sup3: "\xB3",
299395
- acute: "\xB4",
299396
- micro: "\xB5",
299397
- para: "\xB6",
299398
- middot: "\xB7",
299399
- cedil: "\xB8",
299400
- sup1: "\xB9",
299401
- ordm: "\xBA",
299402
- raquo: "\xBB",
299403
- frac14: "\xBC",
299404
- frac12: "\xBD",
299405
- half: "\xBD",
299406
- frac34: "\xBE",
299407
- iquest: "\xBF",
299408
- times: "\xD7",
299409
- div: "\xF7",
299410
- divide: "\xF7"
299411
- };
299412
- var LATIN_ACCENTS = {
299413
- Agrave: "\xC0",
299414
- agrave: "\xE0",
299415
- Aacute: "\xC1",
299416
- aacute: "\xE1",
299417
- Acirc: "\xC2",
299418
- acirc: "\xE2",
299419
- Atilde: "\xC3",
299420
- atilde: "\xE3",
299421
- Auml: "\xC4",
299422
- auml: "\xE4",
299423
- Aring: "\xC5",
299424
- aring: "\xE5",
299425
- AElig: "\xC6",
299426
- aelig: "\xE6",
299427
- Ccedil: "\xC7",
299428
- ccedil: "\xE7",
299429
- Egrave: "\xC8",
299430
- egrave: "\xE8",
299431
- Eacute: "\xC9",
299432
- eacute: "\xE9",
299433
- Ecirc: "\xCA",
299434
- ecirc: "\xEA",
299435
- Euml: "\xCB",
299436
- euml: "\xEB",
299437
- Igrave: "\xCC",
299438
- igrave: "\xEC",
299439
- Iacute: "\xCD",
299440
- iacute: "\xED",
299441
- Icirc: "\xCE",
299442
- icirc: "\xEE",
299443
- Iuml: "\xCF",
299444
- iuml: "\xEF",
299445
- ETH: "\xD0",
299446
- eth: "\xF0",
299447
- Ntilde: "\xD1",
299448
- ntilde: "\xF1",
299449
- Ograve: "\xD2",
299450
- ograve: "\xF2",
299451
- Oacute: "\xD3",
299452
- oacute: "\xF3",
299453
- Ocirc: "\xD4",
299454
- ocirc: "\xF4",
299455
- Otilde: "\xD5",
299456
- otilde: "\xF5",
299457
- Ouml: "\xD6",
299458
- ouml: "\xF6",
299459
- Oslash: "\xD8",
299460
- oslash: "\xF8",
299461
- Ugrave: "\xD9",
299462
- ugrave: "\xF9",
299463
- Uacute: "\xDA",
299464
- uacute: "\xFA",
299465
- Ucirc: "\xDB",
299466
- ucirc: "\xFB",
299467
- Uuml: "\xDC",
299468
- uuml: "\xFC",
299469
- Yacute: "\xDD",
299470
- yacute: "\xFD",
299471
- THORN: "\xDE",
299472
- thorn: "\xFE",
299473
- szlig: "\xDF",
299474
- yuml: "\xFF",
299475
- Yuml: "\u0178"
299476
- };
299477
- var LATIN_EXTENDED = {
299478
- Amacr: "\u0100",
299479
- amacr: "\u0101",
299480
- Abreve: "\u0102",
299481
- abreve: "\u0103",
299482
- Aogon: "\u0104",
299483
- aogon: "\u0105",
299484
- Cacute: "\u0106",
299485
- cacute: "\u0107",
299486
- Ccirc: "\u0108",
299487
- ccirc: "\u0109",
299488
- Cdot: "\u010A",
299489
- cdot: "\u010B",
299490
- Ccaron: "\u010C",
299491
- ccaron: "\u010D",
299492
- Dcaron: "\u010E",
299493
- dcaron: "\u010F",
299494
- Dstrok: "\u0110",
299495
- dstrok: "\u0111",
299496
- Emacr: "\u0112",
299497
- emacr: "\u0113",
299498
- Ecaron: "\u011A",
299499
- ecaron: "\u011B",
299500
- Edot: "\u0116",
299501
- edot: "\u0117",
299502
- Eogon: "\u0118",
299503
- eogon: "\u0119",
299504
- Gcirc: "\u011C",
299505
- gcirc: "\u011D",
299506
- Gbreve: "\u011E",
299507
- gbreve: "\u011F",
299508
- Gdot: "\u0120",
299509
- gdot: "\u0121",
299510
- Gcedil: "\u0122",
299511
- Hcirc: "\u0124",
299512
- hcirc: "\u0125",
299513
- Hstrok: "\u0126",
299514
- hstrok: "\u0127",
299515
- Itilde: "\u0128",
299516
- itilde: "\u0129",
299517
- Imacr: "\u012A",
299518
- imacr: "\u012B",
299519
- Iogon: "\u012E",
299520
- iogon: "\u012F",
299521
- Idot: "\u0130",
299522
- IJlig: "\u0132",
299523
- ijlig: "\u0133",
299524
- Jcirc: "\u0134",
299525
- jcirc: "\u0135",
299526
- Kcedil: "\u0136",
299527
- kcedil: "\u0137",
299528
- kgreen: "\u0138",
299529
- Lacute: "\u0139",
299530
- lacute: "\u013A",
299531
- Lcedil: "\u013B",
299532
- lcedil: "\u013C",
299533
- Lcaron: "\u013D",
299534
- lcaron: "\u013E",
299535
- Lmidot: "\u013F",
299536
- lmidot: "\u0140",
299537
- Lstrok: "\u0141",
299538
- lstrok: "\u0142",
299539
- Nacute: "\u0143",
299540
- nacute: "\u0144",
299541
- Ncaron: "\u0147",
299542
- ncaron: "\u0148",
299543
- Ncedil: "\u0145",
299544
- ncedil: "\u0146",
299545
- ENG: "\u014A",
299546
- eng: "\u014B",
299547
- Omacr: "\u014C",
299548
- omacr: "\u014D",
299549
- Odblac: "\u0150",
299550
- odblac: "\u0151",
299551
- OElig: "\u0152",
299552
- oelig: "\u0153",
299553
- Racute: "\u0154",
299554
- racute: "\u0155",
299555
- Rcaron: "\u0158",
299556
- rcaron: "\u0159",
299557
- Rcedil: "\u0156",
299558
- rcedil: "\u0157",
299559
- Sacute: "\u015A",
299560
- sacute: "\u015B",
299561
- Scirc: "\u015C",
299562
- scirc: "\u015D",
299563
- Scedil: "\u015E",
299564
- scedil: "\u015F",
299565
- Scaron: "\u0160",
299566
- scaron: "\u0161",
299567
- Tcedil: "\u0162",
299568
- tcedil: "\u0163",
299569
- Tcaron: "\u0164",
299570
- tcaron: "\u0165",
299571
- Tstrok: "\u0166",
299572
- tstrok: "\u0167",
299573
- Utilde: "\u0168",
299574
- utilde: "\u0169",
299575
- Umacr: "\u016A",
299576
- umacr: "\u016B",
299577
- Ubreve: "\u016C",
299578
- ubreve: "\u016D",
299579
- Uring: "\u016E",
299580
- uring: "\u016F",
299581
- Udblac: "\u0170",
299582
- udblac: "\u0171",
299583
- Uogon: "\u0172",
299584
- uogon: "\u0173",
299585
- Wcirc: "\u0174",
299586
- wcirc: "\u0175",
299587
- Ycirc: "\u0176",
299588
- ycirc: "\u0177",
299589
- Zacute: "\u0179",
299590
- zacute: "\u017A",
299591
- Zdot: "\u017B",
299592
- zdot: "\u017C",
299593
- Zcaron: "\u017D",
299594
- zcaron: "\u017E"
299595
- };
299596
- var GREEK = {
299597
- Alpha: "\u0391",
299598
- alpha: "\u03B1",
299599
- Beta: "\u0392",
299600
- beta: "\u03B2",
299601
- Gamma: "\u0393",
299602
- gamma: "\u03B3",
299603
- Delta: "\u0394",
299604
- delta: "\u03B4",
299605
- Epsilon: "\u0395",
299606
- epsilon: "\u03B5",
299607
- epsiv: "\u03F5",
299608
- varepsilon: "\u03F5",
299609
- Zeta: "\u0396",
299610
- zeta: "\u03B6",
299611
- Eta: "\u0397",
299612
- eta: "\u03B7",
299613
- Theta: "\u0398",
299614
- theta: "\u03B8",
299615
- thetasym: "\u03D1",
299616
- vartheta: "\u03D1",
299617
- Iota: "\u0399",
299618
- iota: "\u03B9",
299619
- Kappa: "\u039A",
299620
- kappa: "\u03BA",
299621
- kappav: "\u03F0",
299622
- varkappa: "\u03F0",
299623
- Lambda: "\u039B",
299624
- lambda: "\u03BB",
299625
- Mu: "\u039C",
299626
- mu: "\u03BC",
299627
- Nu: "\u039D",
299628
- nu: "\u03BD",
299629
- Xi: "\u039E",
299630
- xi: "\u03BE",
299631
- Omicron: "\u039F",
299632
- omicron: "\u03BF",
299633
- Pi: "\u03A0",
299634
- pi: "\u03C0",
299635
- piv: "\u03D6",
299636
- varpi: "\u03D6",
299637
- Rho: "\u03A1",
299638
- rho: "\u03C1",
299639
- rhov: "\u03F1",
299640
- varrho: "\u03F1",
299641
- Sigma: "\u03A3",
299642
- sigma: "\u03C3",
299643
- sigmaf: "\u03C2",
299644
- sigmav: "\u03C2",
299645
- varsigma: "\u03C2",
299646
- Tau: "\u03A4",
299647
- tau: "\u03C4",
299648
- Upsilon: "\u03A5",
299649
- upsilon: "\u03C5",
299650
- upsi: "\u03C5",
299651
- Upsi: "\u03D2",
299652
- upsih: "\u03D2",
299653
- Phi: "\u03A6",
299654
- phi: "\u03C6",
299655
- phiv: "\u03D5",
299656
- varphi: "\u03D5",
299657
- Chi: "\u03A7",
299658
- chi: "\u03C7",
299659
- Psi: "\u03A8",
299660
- psi: "\u03C8",
299661
- Omega: "\u03A9",
299662
- omega: "\u03C9",
299663
- ohm: "\u03A9",
299664
- Gammad: "\u03DC",
299665
- gammad: "\u03DD",
299666
- digamma: "\u03DD"
299667
- };
299668
- var CYRILLIC = {
299669
- Afr: "\u{1D504}",
299670
- afr: "\u{1D51E}",
299671
- Acy: "\u0410",
299672
- acy: "\u0430",
299673
- Bcy: "\u0411",
299674
- bcy: "\u0431",
299675
- Vcy: "\u0412",
299676
- vcy: "\u0432",
299677
- Gcy: "\u0413",
299678
- gcy: "\u0433",
299679
- Dcy: "\u0414",
299680
- dcy: "\u0434",
299681
- IEcy: "\u0415",
299682
- iecy: "\u0435",
299683
- IOcy: "\u0401",
299684
- iocy: "\u0451",
299685
- ZHcy: "\u0416",
299686
- zhcy: "\u0436",
299687
- Zcy: "\u0417",
299688
- zcy: "\u0437",
299689
- Icy: "\u0418",
299690
- icy: "\u0438",
299691
- Jcy: "\u0419",
299692
- jcy: "\u0439",
299693
- Kcy: "\u041A",
299694
- kcy: "\u043A",
299695
- Lcy: "\u041B",
299696
- lcy: "\u043B",
299697
- Mcy: "\u041C",
299698
- mcy: "\u043C",
299699
- Ncy: "\u041D",
299700
- ncy: "\u043D",
299701
- Ocy: "\u041E",
299702
- ocy: "\u043E",
299703
- Pcy: "\u041F",
299704
- pcy: "\u043F",
299705
- Rcy: "\u0420",
299706
- rcy: "\u0440",
299707
- Scy: "\u0421",
299708
- scy: "\u0441",
299709
- Tcy: "\u0422",
299710
- tcy: "\u0442",
299711
- Ucy: "\u0423",
299712
- ucy: "\u0443",
299713
- Fcy: "\u0424",
299714
- fcy: "\u0444",
299715
- KHcy: "\u0425",
299716
- khcy: "\u0445",
299717
- TScy: "\u0426",
299718
- tscy: "\u0446",
299719
- CHcy: "\u0427",
299720
- chcy: "\u0447",
299721
- SHcy: "\u0428",
299722
- shcy: "\u0448",
299723
- SHCHcy: "\u0429",
299724
- shchcy: "\u0449",
299725
- HARDcy: "\u042A",
299726
- hardcy: "\u044A",
299727
- Ycy: "\u042B",
299728
- ycy: "\u044B",
299729
- SOFTcy: "\u042C",
299730
- softcy: "\u044C",
299731
- Ecy: "\u042D",
299732
- ecy: "\u044D",
299733
- YUcy: "\u042E",
299734
- yucy: "\u044E",
299735
- YAcy: "\u042F",
299736
- yacy: "\u044F",
299737
- DJcy: "\u0402",
299738
- djcy: "\u0452",
299739
- GJcy: "\u0403",
299740
- gjcy: "\u0453",
299741
- Jukcy: "\u0404",
299742
- jukcy: "\u0454",
299743
- DScy: "\u0405",
299744
- dscy: "\u0455",
299745
- Iukcy: "\u0406",
299746
- iukcy: "\u0456",
299747
- YIcy: "\u0407",
299748
- yicy: "\u0457",
299749
- Jsercy: "\u0408",
299750
- jsercy: "\u0458",
299751
- LJcy: "\u0409",
299752
- ljcy: "\u0459",
299753
- NJcy: "\u040A",
299754
- njcy: "\u045A",
299755
- TSHcy: "\u040B",
299756
- tshcy: "\u045B",
299757
- KJcy: "\u040C",
299758
- kjcy: "\u045C",
299759
- Ubrcy: "\u040E",
299760
- ubrcy: "\u045E",
299761
- DZcy: "\u040F",
299762
- dzcy: "\u045F"
299763
- };
299764
- var MATH = {
299765
- plus: "+",
299766
- pm: "\xB1",
299767
- times: "\xD7",
299768
- div: "\xF7",
299769
- divide: "\xF7",
299770
- sdot: "\u22C5",
299771
- star: "\u2606",
299772
- starf: "\u2605",
299773
- bigstar: "\u2605",
299774
- lowast: "\u2217",
299775
- ast: "*",
299776
- midast: "*",
299777
- compfn: "\u2218",
299778
- smallcircle: "\u2218",
299779
- bullet: "\u2022",
299780
- bull: "\u2022",
299781
- nbsp: "\xA0",
299782
- hellip: "\u2026",
299783
- mldr: "\u2026",
299784
- prime: "\u2032",
299785
- Prime: "\u2033",
299786
- tprime: "\u2034",
299787
- bprime: "\u2035",
299788
- backprime: "\u2035",
299789
- minus: "\u2212",
299790
- minusd: "\u2238",
299791
- dotminus: "\u2238",
299792
- plusdo: "\u2214",
299793
- dotplus: "\u2214",
299794
- plusmn: "\xB1",
299795
- minusplus: "\u2213",
299796
- mnplus: "\u2213",
299797
- mp: "\u2213",
299798
- setminus: "\u2216",
299799
- smallsetminus: "\u2216",
299800
- Backslash: "\u2216",
299801
- setmn: "\u2216",
299802
- ssetmn: "\u2216",
299803
- lowbar: "_",
299804
- verbar: "|",
299805
- vert: "|",
299806
- VerticalLine: "|",
299807
- colon: ":",
299808
- Colon: "\u2237",
299809
- Proportion: "\u2237",
299810
- ratio: "\u2236",
299811
- equals: "=",
299812
- ne: "\u2260",
299813
- nequiv: "\u2262",
299814
- equiv: "\u2261",
299815
- Congruent: "\u2261",
299816
- sim: "\u223C",
299817
- thicksim: "\u223C",
299818
- thksim: "\u223C",
299819
- sime: "\u2243",
299820
- simeq: "\u2243",
299821
- TildeEqual: "\u2243",
299822
- asymp: "\u2248",
299823
- approx: "\u2248",
299824
- thickapprox: "\u2248",
299825
- thkap: "\u2248",
299826
- TildeTilde: "\u2248",
299827
- ncong: "\u2247",
299828
- cong: "\u2245",
299829
- TildeFullEqual: "\u2245",
299830
- asympeq: "\u224D",
299831
- CupCap: "\u224D",
299832
- bump: "\u224E",
299833
- Bumpeq: "\u224E",
299834
- HumpDownHump: "\u224E",
299835
- bumpe: "\u224F",
299836
- bumpeq: "\u224F",
299837
- HumpEqual: "\u224F",
299838
- le: "\u2264",
299839
- LessEqual: "\u2264",
299840
- ge: "\u2265",
299841
- GreaterEqual: "\u2265",
299842
- lesseqgtr: "\u22DA",
299843
- lesseqqgtr: "\u2A8B",
299844
- greater: ">",
299845
- less: "<"
299846
- };
299847
- var MATH_ADVANCED = {
299848
- alefsym: "\u2135",
299849
- aleph: "\u2135",
299850
- beth: "\u2136",
299851
- gimel: "\u2137",
299852
- daleth: "\u2138",
299853
- forall: "\u2200",
299854
- ForAll: "\u2200",
299855
- part: "\u2202",
299856
- PartialD: "\u2202",
299857
- exist: "\u2203",
299858
- Exists: "\u2203",
299859
- nexist: "\u2204",
299860
- nexists: "\u2204",
299861
- empty: "\u2205",
299862
- emptyset: "\u2205",
299863
- emptyv: "\u2205",
299864
- varnothing: "\u2205",
299865
- nabla: "\u2207",
299866
- Del: "\u2207",
299867
- isin: "\u2208",
299868
- isinv: "\u2208",
299869
- in: "\u2208",
299870
- Element: "\u2208",
299871
- notin: "\u2209",
299872
- notinva: "\u2209",
299873
- ni: "\u220B",
299874
- niv: "\u220B",
299875
- SuchThat: "\u220B",
299876
- ReverseElement: "\u220B",
299877
- notni: "\u220C",
299878
- notniva: "\u220C",
299879
- prod: "\u220F",
299880
- Product: "\u220F",
299881
- coprod: "\u2210",
299882
- Coproduct: "\u2210",
299883
- sum: "\u2211",
299884
- Sum: "\u2211",
299885
- minus: "\u2212",
299886
- mp: "\u2213",
299887
- plusdo: "\u2214",
299888
- dotplus: "\u2214",
299889
- setminus: "\u2216",
299890
- lowast: "\u2217",
299891
- radic: "\u221A",
299892
- Sqrt: "\u221A",
299893
- prop: "\u221D",
299894
- propto: "\u221D",
299895
- Proportional: "\u221D",
299896
- varpropto: "\u221D",
299897
- infin: "\u221E",
299898
- infintie: "\u29DD",
299899
- ang: "\u2220",
299900
- angle: "\u2220",
299901
- angmsd: "\u2221",
299902
- measuredangle: "\u2221",
299903
- angsph: "\u2222",
299904
- mid: "\u2223",
299905
- VerticalBar: "\u2223",
299906
- nmid: "\u2224",
299907
- nsmid: "\u2224",
299908
- npar: "\u2226",
299909
- parallel: "\u2225",
299910
- spar: "\u2225",
299911
- nparallel: "\u2226",
299912
- nspar: "\u2226",
299913
- and: "\u2227",
299914
- wedge: "\u2227",
299915
- or: "\u2228",
299916
- vee: "\u2228",
299917
- cap: "\u2229",
299918
- cup: "\u222A",
299919
- int: "\u222B",
299920
- Integral: "\u222B",
299921
- conint: "\u222E",
299922
- ContourIntegral: "\u222E",
299923
- Conint: "\u222F",
299924
- DoubleContourIntegral: "\u222F",
299925
- Cconint: "\u2230",
299926
- there4: "\u2234",
299927
- therefore: "\u2234",
299928
- Therefore: "\u2234",
299929
- becaus: "\u2235",
299930
- because: "\u2235",
299931
- Because: "\u2235",
299932
- ratio: "\u2236",
299933
- Proportion: "\u2237",
299934
- minusd: "\u2238",
299935
- dotminus: "\u2238",
299936
- mDDot: "\u223A",
299937
- homtht: "\u223B",
299938
- sim: "\u223C",
299939
- bsimg: "\u223D",
299940
- backsim: "\u223D",
299941
- ac: "\u223E",
299942
- mstpos: "\u223E",
299943
- acd: "\u223F",
299944
- VerticalTilde: "\u2240",
299945
- wr: "\u2240",
299946
- wreath: "\u2240",
299947
- nsime: "\u2244",
299948
- nsimeq: "\u2244",
299949
- ncong: "\u2247",
299950
- simne: "\u2246",
299951
- ncongdot: "\u2A6D\u0338",
299952
- ngsim: "\u2275",
299953
- nsim: "\u2241",
299954
- napprox: "\u2249",
299955
- nap: "\u2249",
299956
- ngeq: "\u2271",
299957
- nge: "\u2271",
299958
- nleq: "\u2270",
299959
- nle: "\u2270",
299960
- ngtr: "\u226F",
299961
- ngt: "\u226F",
299962
- nless: "\u226E",
299963
- nlt: "\u226E",
299964
- nprec: "\u2280",
299965
- npr: "\u2280",
299966
- nsucc: "\u2281",
299967
- nsc: "\u2281"
299968
- };
299969
- var ARROWS = {
299970
- larr: "\u2190",
299971
- leftarrow: "\u2190",
299972
- LeftArrow: "\u2190",
299973
- uarr: "\u2191",
299974
- uparrow: "\u2191",
299975
- UpArrow: "\u2191",
299976
- rarr: "\u2192",
299977
- rightarrow: "\u2192",
299978
- RightArrow: "\u2192",
299979
- darr: "\u2193",
299980
- downarrow: "\u2193",
299981
- DownArrow: "\u2193",
299982
- harr: "\u2194",
299983
- leftrightarrow: "\u2194",
299984
- LeftRightArrow: "\u2194",
299985
- varr: "\u2195",
299986
- updownarrow: "\u2195",
299987
- UpDownArrow: "\u2195",
299988
- nwarr: "\u2196",
299989
- nwarrow: "\u2196",
299990
- UpperLeftArrow: "\u2196",
299991
- nearr: "\u2197",
299992
- nearrow: "\u2197",
299993
- UpperRightArrow: "\u2197",
299994
- searr: "\u2198",
299995
- searrow: "\u2198",
299996
- LowerRightArrow: "\u2198",
299997
- swarr: "\u2199",
299998
- swarrow: "\u2199",
299999
- LowerLeftArrow: "\u2199",
300000
- lArr: "\u21D0",
300001
- Leftarrow: "\u21D0",
300002
- uArr: "\u21D1",
300003
- Uparrow: "\u21D1",
300004
- rArr: "\u21D2",
300005
- Rightarrow: "\u21D2",
300006
- dArr: "\u21D3",
300007
- Downarrow: "\u21D3",
300008
- hArr: "\u21D4",
300009
- Leftrightarrow: "\u21D4",
300010
- iff: "\u21D4",
300011
- vArr: "\u21D5",
300012
- Updownarrow: "\u21D5",
300013
- lAarr: "\u21DA",
300014
- Lleftarrow: "\u21DA",
300015
- rAarr: "\u21DB",
300016
- Rrightarrow: "\u21DB",
300017
- lrarr: "\u21C6",
300018
- leftrightarrows: "\u21C6",
300019
- rlarr: "\u21C4",
300020
- rightleftarrows: "\u21C4",
300021
- lrhar: "\u21CB",
300022
- leftrightharpoons: "\u21CB",
300023
- ReverseEquilibrium: "\u21CB",
300024
- rlhar: "\u21CC",
300025
- rightleftharpoons: "\u21CC",
300026
- Equilibrium: "\u21CC",
300027
- udarr: "\u21C5",
300028
- UpArrowDownArrow: "\u21C5",
300029
- duarr: "\u21F5",
300030
- DownArrowUpArrow: "\u21F5",
300031
- llarr: "\u21C7",
300032
- leftleftarrows: "\u21C7",
300033
- rrarr: "\u21C9",
300034
- rightrightarrows: "\u21C9",
300035
- ddarr: "\u21CA",
300036
- downdownarrows: "\u21CA",
300037
- har: "\u21BD",
300038
- lhard: "\u21BD",
300039
- leftharpoondown: "\u21BD",
300040
- lharu: "\u21BC",
300041
- leftharpoonup: "\u21BC",
300042
- rhard: "\u21C1",
300043
- rightharpoondown: "\u21C1",
300044
- rharu: "\u21C0",
300045
- rightharpoonup: "\u21C0",
300046
- lsh: "\u21B0",
300047
- Lsh: "\u21B0",
300048
- rsh: "\u21B1",
300049
- Rsh: "\u21B1",
300050
- ldsh: "\u21B2",
300051
- rdsh: "\u21B3",
300052
- hookleftarrow: "\u21A9",
300053
- hookrightarrow: "\u21AA",
300054
- mapstoleft: "\u21A4",
300055
- mapstoup: "\u21A5",
300056
- map: "\u21A6",
300057
- mapsto: "\u21A6",
300058
- mapstodown: "\u21A7",
300059
- crarr: "\u21B5",
300060
- nleftarrow: "\u219A",
300061
- nleftrightarrow: "\u21AE",
300062
- nrightarrow: "\u219B",
300063
- nrarr: "\u219B",
300064
- larrtl: "\u21A2",
300065
- rarrtl: "\u21A3",
300066
- leftarrowtail: "\u21A2",
300067
- rightarrowtail: "\u21A3",
300068
- twoheadleftarrow: "\u219E",
300069
- twoheadrightarrow: "\u21A0",
300070
- Larr: "\u219E",
300071
- Rarr: "\u21A0",
300072
- larrhk: "\u21A9",
300073
- rarrhk: "\u21AA",
300074
- larrlp: "\u21AB",
300075
- looparrowleft: "\u21AB",
300076
- rarrlp: "\u21AC",
300077
- looparrowright: "\u21AC",
300078
- harrw: "\u21AD",
300079
- leftrightsquigarrow: "\u21AD",
300080
- nrarrw: "\u219D\u0338",
300081
- rarrw: "\u219D",
300082
- rightsquigarrow: "\u219D",
300083
- larrbfs: "\u291F",
300084
- rarrbfs: "\u2920",
300085
- nvHarr: "\u2904",
300086
- nvlArr: "\u2902",
300087
- nvrArr: "\u2903",
300088
- larrfs: "\u291D",
300089
- rarrfs: "\u291E",
300090
- Map: "\u2905",
300091
- larrsim: "\u2973",
300092
- rarrsim: "\u2974",
300093
- harrcir: "\u2948",
300094
- Uarrocir: "\u2949",
300095
- lurdshar: "\u294A",
300096
- ldrdhar: "\u2967",
300097
- ldrushar: "\u294B",
300098
- rdldhar: "\u2969",
300099
- lrhard: "\u296D",
300100
- uharr: "\u21BE",
300101
- uharl: "\u21BF",
300102
- dharr: "\u21C2",
300103
- dharl: "\u21C3",
300104
- Uarr: "\u219F",
300105
- Darr: "\u21A1",
300106
- zigrarr: "\u21DD",
300107
- nwArr: "\u21D6",
300108
- neArr: "\u21D7",
300109
- seArr: "\u21D8",
300110
- swArr: "\u21D9",
300111
- nharr: "\u21AE",
300112
- nhArr: "\u21CE",
300113
- nlarr: "\u219A",
300114
- nlArr: "\u21CD",
300115
- nrArr: "\u21CF",
300116
- larrb: "\u21E4",
300117
- LeftArrowBar: "\u21E4",
300118
- rarrb: "\u21E5",
300119
- RightArrowBar: "\u21E5"
300120
- };
300121
- var SHAPES = {
300122
- square: "\u25A1",
300123
- Square: "\u25A1",
300124
- squ: "\u25A1",
300125
- squf: "\u25AA",
300126
- squarf: "\u25AA",
300127
- blacksquar: "\u25AA",
300128
- blacksquare: "\u25AA",
300129
- FilledVerySmallSquare: "\u25AA",
300130
- blk34: "\u2593",
300131
- blk12: "\u2592",
300132
- blk14: "\u2591",
300133
- block: "\u2588",
300134
- srect: "\u25AD",
300135
- rect: "\u25AD",
300136
- sdot: "\u22C5",
300137
- sdotb: "\u22A1",
300138
- dotsquare: "\u22A1",
300139
- triangle: "\u25B5",
300140
- tri: "\u25B5",
300141
- trine: "\u25B5",
300142
- utri: "\u25B5",
300143
- triangledown: "\u25BF",
300144
- dtri: "\u25BF",
300145
- tridown: "\u25BF",
300146
- triangleleft: "\u25C3",
300147
- ltri: "\u25C3",
300148
- triangleright: "\u25B9",
300149
- rtri: "\u25B9",
300150
- blacktriangle: "\u25B4",
300151
- utrif: "\u25B4",
300152
- blacktriangledown: "\u25BE",
300153
- dtrif: "\u25BE",
300154
- blacktriangleleft: "\u25C2",
300155
- ltrif: "\u25C2",
300156
- blacktriangleright: "\u25B8",
300157
- rtrif: "\u25B8",
300158
- loz: "\u25CA",
300159
- lozenge: "\u25CA",
300160
- blacklozenge: "\u29EB",
300161
- lozf: "\u29EB",
300162
- bigcirc: "\u25EF",
300163
- xcirc: "\u25EF",
300164
- circ: "\u02C6",
300165
- Circle: "\u25CB",
300166
- cir: "\u25CB",
300167
- o: "\u25CB",
300168
- bullet: "\u2022",
300169
- bull: "\u2022",
300170
- hellip: "\u2026",
300171
- mldr: "\u2026",
300172
- nldr: "\u2025",
300173
- boxh: "\u2500",
300174
- HorizontalLine: "\u2500",
300175
- boxv: "\u2502",
300176
- boxdr: "\u250C",
300177
- boxdl: "\u2510",
300178
- boxur: "\u2514",
300179
- boxul: "\u2518",
300180
- boxvr: "\u251C",
300181
- boxvl: "\u2524",
300182
- boxhd: "\u252C",
300183
- boxhu: "\u2534",
300184
- boxvh: "\u253C",
300185
- boxH: "\u2550",
300186
- boxV: "\u2551",
300187
- boxdR: "\u2552",
300188
- boxDr: "\u2553",
300189
- boxDR: "\u2554",
300190
- boxDl: "\u2555",
300191
- boxdL: "\u2556",
300192
- boxDL: "\u2557",
300193
- boxuR: "\u2558",
300194
- boxUr: "\u2559",
300195
- boxUR: "\u255A",
300196
- boxUl: "\u255C",
300197
- boxuL: "\u255B",
300198
- boxUL: "\u255D",
300199
- boxvR: "\u255E",
300200
- boxVr: "\u255F",
300201
- boxVR: "\u2560",
300202
- boxVl: "\u2562",
300203
- boxvL: "\u2561",
300204
- boxVL: "\u2563",
300205
- boxHd: "\u2564",
300206
- boxhD: "\u2565",
300207
- boxHD: "\u2566",
300208
- boxHu: "\u2567",
300209
- boxhU: "\u2568",
300210
- boxHU: "\u2569",
300211
- boxvH: "\u256A",
300212
- boxVh: "\u256B",
300213
- boxVH: "\u256C"
300214
- };
300215
- var PUNCTUATION = {
300216
- excl: "!",
300217
- iexcl: "\xA1",
300218
- brvbar: "\xA6",
300219
- sect: "\xA7",
300220
- uml: "\xA8",
300221
- copy: "\xA9",
300222
- ordf: "\xAA",
300223
- laquo: "\xAB",
300224
- not: "\xAC",
300225
- shy: "\xAD",
300226
- reg: "\xAE",
300227
- macr: "\xAF",
300228
- deg: "\xB0",
300229
- plusmn: "\xB1",
300230
- sup2: "\xB2",
300231
- sup3: "\xB3",
300232
- acute: "\xB4",
300233
- micro: "\xB5",
300234
- para: "\xB6",
300235
- middot: "\xB7",
300236
- cedil: "\xB8",
300237
- sup1: "\xB9",
300238
- ordm: "\xBA",
300239
- raquo: "\xBB",
300240
- frac14: "\xBC",
300241
- frac12: "\xBD",
300242
- frac34: "\xBE",
300243
- iquest: "\xBF",
300244
- nbsp: "\xA0",
300245
- comma: ",",
300246
- period: ".",
300247
- colon: ":",
300248
- semi: ";",
300249
- vert: "|",
300250
- Verbar: "\u2016",
300251
- verbar: "|",
300252
- dblac: "\u02DD",
300253
- circ: "\u02C6",
300254
- caron: "\u02C7",
300255
- breve: "\u02D8",
300256
- dot: "\u02D9",
300257
- ring: "\u02DA",
300258
- ogon: "\u02DB",
300259
- tilde: "\u02DC",
300260
- DiacriticalGrave: "`",
300261
- DiacriticalAcute: "\xB4",
300262
- DiacriticalTilde: "\u02DC",
300263
- DiacriticalDot: "\u02D9",
300264
- DiacriticalDoubleAcute: "\u02DD",
300265
- grave: "`"
300266
- };
300267
299416
  var CURRENCY = {
300268
299417
  cent: "\xA2",
300269
299418
  pound: "\xA3",
@@ -300281,106 +299430,6 @@ var CURRENCY = {
300281
299430
  yuan: "\xA5",
300282
299431
  cedil: "\xB8"
300283
299432
  };
300284
- var FRACTIONS = {
300285
- frac12: "\xBD",
300286
- half: "\xBD",
300287
- frac13: "\u2153",
300288
- frac14: "\xBC",
300289
- frac15: "\u2155",
300290
- frac16: "\u2159",
300291
- frac18: "\u215B",
300292
- frac23: "\u2154",
300293
- frac25: "\u2156",
300294
- frac34: "\xBE",
300295
- frac35: "\u2157",
300296
- frac38: "\u215C",
300297
- frac45: "\u2158",
300298
- frac56: "\u215A",
300299
- frac58: "\u215D",
300300
- frac78: "\u215E",
300301
- frasl: "\u2044"
300302
- };
300303
- var MISC_SYMBOLS = {
300304
- trade: "\u2122",
300305
- TRADE: "\u2122",
300306
- telrec: "\u2315",
300307
- target: "\u2316",
300308
- ulcorn: "\u231C",
300309
- ulcorner: "\u231C",
300310
- urcorn: "\u231D",
300311
- urcorner: "\u231D",
300312
- dlcorn: "\u231E",
300313
- llcorner: "\u231E",
300314
- drcorn: "\u231F",
300315
- lrcorner: "\u231F",
300316
- intercal: "\u22BA",
300317
- intcal: "\u22BA",
300318
- oplus: "\u2295",
300319
- CirclePlus: "\u2295",
300320
- ominus: "\u2296",
300321
- CircleMinus: "\u2296",
300322
- otimes: "\u2297",
300323
- CircleTimes: "\u2297",
300324
- osol: "\u2298",
300325
- odot: "\u2299",
300326
- CircleDot: "\u2299",
300327
- oast: "\u229B",
300328
- circledast: "\u229B",
300329
- odash: "\u229D",
300330
- circleddash: "\u229D",
300331
- ocirc: "\u229A",
300332
- circledcirc: "\u229A",
300333
- boxplus: "\u229E",
300334
- plusb: "\u229E",
300335
- boxminus: "\u229F",
300336
- minusb: "\u229F",
300337
- boxtimes: "\u22A0",
300338
- timesb: "\u22A0",
300339
- boxdot: "\u22A1",
300340
- sdotb: "\u22A1",
300341
- veebar: "\u22BB",
300342
- vee: "\u2228",
300343
- barvee: "\u22BD",
300344
- and: "\u2227",
300345
- wedge: "\u2227",
300346
- Cap: "\u22D2",
300347
- Cup: "\u22D3",
300348
- Fork: "\u22D4",
300349
- pitchfork: "\u22D4",
300350
- epar: "\u22D5",
300351
- ltlarr: "\u2976",
300352
- nvap: "\u224D\u20D2",
300353
- nvsim: "\u223C\u20D2",
300354
- nvge: "\u2265\u20D2",
300355
- nvle: "\u2264\u20D2",
300356
- nvlt: "<\u20D2",
300357
- nvgt: ">\u20D2",
300358
- nvltrie: "\u22B4\u20D2",
300359
- nvrtrie: "\u22B5\u20D2",
300360
- Vdash: "\u22A9",
300361
- dashv: "\u22A3",
300362
- vDash: "\u22A8",
300363
- Vvdash: "\u22AA",
300364
- nvdash: "\u22AC",
300365
- nvDash: "\u22AD",
300366
- nVdash: "\u22AE",
300367
- nVDash: "\u22AF"
300368
- };
300369
- var ALL_ENTITIES = {
300370
- ...BASIC_LATIN,
300371
- ...LATIN_ACCENTS,
300372
- ...LATIN_EXTENDED,
300373
- ...GREEK,
300374
- ...CYRILLIC,
300375
- ...MATH,
300376
- ...MATH_ADVANCED,
300377
- ...ARROWS,
300378
- ...SHAPES,
300379
- ...PUNCTUATION,
300380
- ...CURRENCY,
300381
- ...FRACTIONS,
300382
- ...MISC_SYMBOLS
300383
- };
300384
299433
  var XML = {
300385
299434
  amp: "&",
300386
299435
  apos: "'",
@@ -301024,7 +300073,7 @@ var XmlNode = class {
301024
300073
  }
301025
300074
  };
301026
300075
 
301027
- // node_modules/xml-naming/src/index.js
300076
+ // node_modules/fast-xml-parser/node_modules/xml-naming/src/index.js
301028
300077
  var nameStartChar10 = ":A-Za-z_\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u0486\u0488-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD";
301029
300078
  var nameChar10 = nameStartChar10 + "\\-\\.\\d\xB7\u0300-\u036F\u203F-\u2040";
301030
300079
  var nameStartChar11 = ":A-Za-z_\xC0-\u02FF\u0370-\u037D\u037F-\u0486\u0488-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\u{EFFFF}";
@@ -301043,8 +300092,14 @@ var buildRegexes = (startChar, char, flags = "") => {
301043
300092
  };
301044
300093
  var regexes10 = buildRegexes(nameStartChar10, nameChar10);
301045
300094
  var regexes11 = buildRegexes(nameStartChar11, nameChar11, "u");
301046
- var getRegexes = (xmlVersion = "1.0") => xmlVersion === "1.1" ? regexes11 : regexes10;
301047
- var qName = (str, { xmlVersion = "1.0" } = {}) => getRegexes(xmlVersion).qName.test(str);
300095
+ var nameStartCharAscii = ":A-Za-z_";
300096
+ var nameCharAscii = nameStartCharAscii + "\\-\\.\\d";
300097
+ var regexesAscii = buildRegexes(nameStartCharAscii, nameCharAscii);
300098
+ var getRegexes = (xmlVersion = "1.0", asciiOnly = false) => {
300099
+ if (asciiOnly) return regexesAscii;
300100
+ return xmlVersion === "1.1" ? regexes11 : regexes10;
300101
+ };
300102
+ var qName = (str, { xmlVersion = "1.0", asciiOnly = false } = {}) => getRegexes(xmlVersion, asciiOnly).qName.test(str);
301048
300103
 
301049
300104
  // node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js
301050
300105
  var DocTypeReader = class {
@@ -302206,17 +301261,16 @@ var Matcher = class {
302206
301261
  this.path[this.path.length - 1].values = void 0;
302207
301262
  }
302208
301263
  const currentLevel = this.path.length;
302209
- if (!this.siblingStacks[currentLevel]) {
302210
- this.siblingStacks[currentLevel] = /* @__PURE__ */ new Map();
301264
+ let level = this.siblingStacks[currentLevel];
301265
+ if (!level) {
301266
+ level = { counts: /* @__PURE__ */ new Map(), total: 0 };
301267
+ this.siblingStacks[currentLevel] = level;
302211
301268
  }
302212
- const siblings = this.siblingStacks[currentLevel];
302213
301269
  const siblingKey = namespace ? `${namespace}:${tagName}` : tagName;
302214
- const counter = siblings.get(siblingKey) || 0;
302215
- let position = 0;
302216
- for (const count of siblings.values()) {
302217
- position += count;
302218
- }
302219
- siblings.set(siblingKey, counter + 1);
301270
+ const counter = level.counts.get(siblingKey) || 0;
301271
+ const position = level.total;
301272
+ level.counts.set(siblingKey, counter + 1);
301273
+ level.total++;
302220
301274
  const node = {
302221
301275
  tag: tagName,
302222
301276
  position,
@@ -302525,7 +301579,7 @@ var Matcher = class {
302525
301579
  snapshot() {
302526
301580
  return {
302527
301581
  path: this.path.map((node) => ({ ...node })),
302528
- siblingStacks: this.siblingStacks.map((map) => new Map(map)),
301582
+ siblingStacks: this.siblingStacks.map((level) => level ? { counts: new Map(level.counts), total: level.total } : level),
302529
301583
  keptAttrs: this._keptAttrs.map((entry) => ({ ...entry }))
302530
301584
  };
302531
301585
  }
@@ -302536,7 +301590,7 @@ var Matcher = class {
302536
301590
  restore(snapshot) {
302537
301591
  this._pathStringCache = null;
302538
301592
  this.path = snapshot.path.map((node) => ({ ...node }));
302539
- this.siblingStacks = snapshot.siblingStacks.map((map) => new Map(map));
301593
+ this.siblingStacks = snapshot.siblingStacks.map((level) => level ? { counts: new Map(level.counts), total: level.total } : level);
302540
301594
  this._keptAttrs = (snapshot.keptAttrs || []).map((entry) => ({ ...entry }));
302541
301595
  }
302542
301596
  /**
@@ -302874,27 +301928,6 @@ var SQL_PATTERNS = [
302874
301928
  ];
302875
301929
  var sql_default = SQL_PATTERNS;
302876
301930
 
302877
- // node_modules/is-unsafe/src/contexts/sql-strict.js
302878
- var SQL_STRICT_EXTRA = [
302879
- {
302880
- id: "sql-line-comment",
302881
- description: "SQL line comment: -- followed by whitespace or end of string",
302882
- pattern: /--(?:\s|$)/
302883
- },
302884
- {
302885
- id: "sql-stacked-query",
302886
- description: "Stacked queries: semicolon immediately followed by a SQL keyword",
302887
- pattern: /;\s{0,10}(?:SELECT|INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|EXEC)\b/i
302888
- },
302889
- {
302890
- id: "sql-hex-encoding",
302891
- description: "Hex-encoded string injection: 0x41414141 style (MySQL)",
302892
- pattern: /\b0x[0-9a-f]{4,}/i
302893
- }
302894
- ];
302895
- var SQL_STRICT_PATTERNS = [...sql_default, ...SQL_STRICT_EXTRA];
302896
- var sql_strict_default = SQL_STRICT_PATTERNS;
302897
-
302898
301931
  // node_modules/is-unsafe/src/contexts/shell.js
302899
301932
  var SHELL_PATTERNS = [
302900
301933
  {
@@ -303206,8 +302239,38 @@ var LOG_PATTERNS = [
303206
302239
  ];
303207
302240
  var log_default = LOG_PATTERNS;
303208
302241
 
303209
- // node_modules/is-unsafe/src/registry.js
303210
- var CONTEXT_REGISTRY = {
302242
+ // node_modules/is-unsafe/src/contexts/sql-strict.js
302243
+ var SQL_STRICT_EXTRA = [
302244
+ {
302245
+ id: "sql-line-comment",
302246
+ description: "SQL line comment: -- followed by whitespace or end of string",
302247
+ pattern: /--(?:\s|$)/
302248
+ },
302249
+ {
302250
+ id: "sql-stacked-query",
302251
+ description: "Stacked queries: semicolon immediately followed by a SQL keyword",
302252
+ pattern: /;\s{0,10}(?:SELECT|INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|EXEC)\b/i
302253
+ },
302254
+ {
302255
+ id: "sql-hex-encoding",
302256
+ description: "Hex-encoded string injection: 0x41414141 style (MySQL)",
302257
+ pattern: /\b0x[0-9a-f]{4,}/i
302258
+ }
302259
+ ];
302260
+ var SQL_STRICT_PATTERNS = [...sql_default, ...SQL_STRICT_EXTRA];
302261
+ var sql_strict_default = SQL_STRICT_PATTERNS;
302262
+
302263
+ // node_modules/is-unsafe/src/index.js
302264
+ html_default.label = "HTML";
302265
+ xml_default.label = "XML";
302266
+ svg_default.label = "SVG";
302267
+ sql_default.label = "SQL";
302268
+ sql_strict_default.label = "SQL-STRICT";
302269
+ shell_default.label = "SHELL";
302270
+ redos_default.label = "REDOS";
302271
+ nosql_default.label = "NOSQL";
302272
+ log_default.label = "LOG";
302273
+ var VALID_CONTEXTS = Object.freeze({
303211
302274
  HTML: html_default,
303212
302275
  XML: xml_default,
303213
302276
  SVG: svg_default,
@@ -303217,13 +302280,7 @@ var CONTEXT_REGISTRY = {
303217
302280
  REDOS: redos_default,
303218
302281
  NOSQL: nosql_default,
303219
302282
  LOG: log_default
303220
- };
303221
- var registry_default = CONTEXT_REGISTRY;
303222
- var VALID_CONTEXTS = Object.freeze(
303223
- Object.fromEntries(Object.keys(CONTEXT_REGISTRY).map((k) => [k, k]))
303224
- );
303225
-
303226
- // node_modules/is-unsafe/src/index.js
302283
+ });
303227
302284
  function assertString(value) {
303228
302285
  if (typeof value !== "string") {
303229
302286
  throw new TypeError(
@@ -303233,36 +302290,35 @@ function assertString(value) {
303233
302290
  }
303234
302291
  function assertContext(context) {
303235
302292
  if (context instanceof RegExp) return;
303236
- if (typeof context === "string") {
303237
- if (!registry_default[context]) {
303238
- throw new TypeError(
303239
- `is-unsafe: unknown context "${context}". Valid contexts: ${Object.keys(VALID_CONTEXTS).join(", ")}`
303240
- );
303241
- }
303242
- return;
303243
- }
303244
302293
  if (Array.isArray(context)) {
303245
302294
  if (context.length === 0) {
303246
- throw new TypeError("is-unsafe: context array must not be empty");
302295
+ throw new TypeError("is-unsafe: context must not be an empty array");
303247
302296
  }
303248
- for (const c of context) {
303249
- if (typeof c !== "string" || !registry_default[c]) {
303250
- throw new TypeError(
303251
- `is-unsafe: unknown context "${c}" in array. Valid contexts: ${Object.keys(VALID_CONTEXTS).join(", ")}`
303252
- );
302297
+ if (Array.isArray(context[0])) {
302298
+ for (const list of context) {
302299
+ if (!Array.isArray(list) || list.length === 0) {
302300
+ throw new TypeError(
302301
+ "is-unsafe: each context in the array must be a non-empty pattern array (PatternList)"
302302
+ );
302303
+ }
303253
302304
  }
303254
302305
  }
303255
302306
  return;
303256
302307
  }
303257
302308
  throw new TypeError(
303258
- `is-unsafe: second argument must be a context string, array of context strings, or RegExp. Got: ${typeof context}`
302309
+ `is-unsafe: second argument must be a PatternList (e.g. HTML), an array of PatternLists (e.g. [HTML, XML]), or a RegExp. Got: ${typeof context}`
303259
302310
  );
303260
302311
  }
303261
- function matchContext(value, contextName) {
303262
- const patterns = registry_default[contextName];
303263
- for (const rule of patterns) {
302312
+ function normalise(context) {
302313
+ if (context instanceof RegExp) return { lists: null, regex: context };
302314
+ if (Array.isArray(context[0])) return { lists: context, regex: null };
302315
+ return { lists: [context], regex: null };
302316
+ }
302317
+ function matchList(value, list) {
302318
+ const label = list.label ?? "CUSTOM";
302319
+ for (const rule of list) {
303264
302320
  if (rule.pattern.test(value)) {
303265
- return { context: contextName, id: rule.id, description: rule.description, pattern: rule.pattern };
302321
+ return { context: label, id: rule.id, description: rule.description, pattern: rule.pattern };
303266
302322
  }
303267
302323
  }
303268
302324
  return null;
@@ -303270,14 +302326,10 @@ function matchContext(value, contextName) {
303270
302326
  function isUnsafe(value, context) {
303271
302327
  assertString(value);
303272
302328
  assertContext(context);
303273
- if (context instanceof RegExp) {
303274
- return context.test(value);
303275
- }
303276
- if (typeof context === "string") {
303277
- return matchContext(value, context) !== null;
303278
- }
303279
- for (const c of context) {
303280
- if (matchContext(value, c) !== null) return true;
302329
+ const { lists, regex } = normalise(context);
302330
+ if (regex) return regex.test(value);
302331
+ for (const list of lists) {
302332
+ if (matchList(value, list) !== null) return true;
303281
302333
  }
303282
302334
  return false;
303283
302335
  }
@@ -303326,6 +302378,7 @@ var OrderedObjParser = class {
303326
302378
  this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);
303327
302379
  this.entityExpansionCount = 0;
303328
302380
  this.currentExpandedLength = 0;
302381
+ this.doctypefound = false;
303329
302382
  let namedEntities = { ...XML };
303330
302383
  if (this.options.entityDecoder) {
303331
302384
  this.entityDecoder = this.options.entityDecoder;
@@ -303343,7 +302396,7 @@ var OrderedObjParser = class {
303343
302396
  // onExternalEntity: (name, value) => isUnsafe(value) ? 'block' : 'allow',
303344
302397
  onInputEntity: (name, value) => (
303345
302398
  //TODO: VALID_CONTEXTS.HTML should be set only if this.options.htmlEntities
303346
- isUnsafe(value, [VALID_CONTEXTS.HTML, VALID_CONTEXTS.XML]) ? ENTITY_ACTION.BLOCK : ENTITY_ACTION.ALLOW
302399
+ isUnsafe(value, [html_default, xml_default]) ? ENTITY_ACTION.BLOCK : ENTITY_ACTION.ALLOW
303347
302400
  )
303348
302401
  //postCheck: resolved => resolved
303349
302402
  });
@@ -303477,6 +302530,7 @@ var parseXml = function(xmlData) {
303477
302530
  this.entityDecoder.reset();
303478
302531
  this.entityExpansionCount = 0;
303479
302532
  this.currentExpandedLength = 0;
302533
+ this.doctypefound = false;
303480
302534
  const options = this.options;
303481
302535
  const docTypeReader = new DocTypeReader(options.processEntities);
303482
302536
  const xmlLen = xmlData.length;
@@ -303539,6 +302593,8 @@ var parseXml = function(xmlData) {
303539
302593
  }
303540
302594
  i = endIndex;
303541
302595
  } else if (c1 === 33 && xmlData.charCodeAt(i + 2) === 68) {
302596
+ if (this.doctypefound) throw new Error("Multiple DOCTYPE declarations found.");
302597
+ this.doctypefound = true;
303542
302598
  const result = docTypeReader.readDocType(xmlData, i);
303543
302599
  this.entityDecoder.addInputEntities(result.entities);
303544
302600
  i = result.i;
@@ -312913,8 +311969,8 @@ function resolveInputs(env = process.env) {
312913
311969
  breakingSummaryPath: getInput2("breaking-summary-path", env),
312914
311970
  breakingLogPath: getInput2("breaking-log-path", env),
312915
311971
  governanceMappingJson: parseGovernanceMappingJson(getInput2("governance-mapping-json", env)),
312916
- postmanApiKey: getInput2("postman-api-key", env) ?? "",
312917
- postmanAccessToken: getInput2("postman-access-token", env),
311972
+ postmanApiKey: getInput2("postman-api-key", env) || env.POSTMAN_API_KEY || "",
311973
+ postmanAccessToken: getInput2("postman-access-token", env) || env.POSTMAN_ACCESS_TOKEN,
312918
311974
  credentialPreflight: parseEnumInput(
312919
311975
  "credential-preflight",
312920
311976
  getInput2("credential-preflight", env),
@@ -313073,8 +312129,8 @@ function readActionInputs(actionCore) {
313073
312129
  if (specUrl && specPath) {
313074
312130
  throw new Error("Provide either spec-url or spec-path, not both.");
313075
312131
  }
313076
- const postmanApiKey = optionalInput(actionCore, "postman-api-key") ?? "";
313077
- const postmanAccessToken = optionalInput(actionCore, "postman-access-token");
312132
+ const postmanApiKey = optionalInput(actionCore, "postman-api-key") || process.env.POSTMAN_API_KEY || "";
312133
+ const postmanAccessToken = optionalInput(actionCore, "postman-access-token") || process.env.POSTMAN_ACCESS_TOKEN;
313078
312134
  const githubToken = optionalInput(actionCore, "github-token") || process.env.GITHUB_TOKEN;
313079
312135
  const ghFallbackToken = optionalInput(actionCore, "gh-fallback-token") || process.env.GH_FALLBACK_TOKEN;
313080
312136
  if (postmanApiKey) actionCore.setSecret(postmanApiKey);