@postman-cse/onboarding-bootstrap 2.9.5 → 2.9.7

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/index.cjs CHANGED
@@ -259433,6 +259433,18 @@ async function retry(operation, options = {}) {
259433
259433
  }
259434
259434
  throw new Error("Retry exhausted without returning or throwing");
259435
259435
  }
259436
+ function fullJitterDelayMs(attempt, baseMs, capMs, random = Math.random) {
259437
+ const ceiling = Math.min(capMs, baseMs * 2 ** Math.max(0, attempt));
259438
+ return Math.floor(random() * Math.max(0, ceiling));
259439
+ }
259440
+ function parseRetryAfterMs2(value) {
259441
+ if (!value) return void 0;
259442
+ const trimmed = value.trim();
259443
+ if (/^\d+$/.test(trimmed)) return Number(trimmed) * 1e3;
259444
+ const when = Date.parse(trimmed);
259445
+ if (!Number.isNaN(when)) return Math.max(0, when - Date.now());
259446
+ return void 0;
259447
+ }
259436
259448
 
259437
259449
  // src/lib/postman/postman-ec-client.ts
259438
259450
  var EC_WRITE_MAX_ATTEMPTS = 3;
@@ -264046,6 +264058,12 @@ var BOOTSTRAP_BARE_UUID_RE = /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9
264046
264058
  function isMissingPatchValueError(error2) {
264047
264059
  return error2 instanceof HttpError && error2.status === 400 && error2.responseBody.includes("Remove operation must point to an existing value");
264048
264060
  }
264061
+ function isRejectedPatchError(error2) {
264062
+ return error2 instanceof HttpError && error2.status === 400 && /REJECTED_PATCH|must update at least one/i.test(
264063
+ `${error2.message}
264064
+ ${error2.responseBody ?? ""}`
264065
+ );
264066
+ }
264049
264067
  function canonicalize(value) {
264050
264068
  if (Array.isArray(value)) return value.map(canonicalize);
264051
264069
  if (value && typeof value === "object") {
@@ -264109,6 +264127,7 @@ var PostmanGatewayAssetsClient = class _PostmanGatewayAssetsClient {
264109
264127
  static DEFAULT_GENERATION_POLL_DELAY_MS = 2e3;
264110
264128
  gateway;
264111
264129
  sleep;
264130
+ random;
264112
264131
  generationPollAttempts;
264113
264132
  generationPollDelayMs;
264114
264133
  createIdentity;
@@ -264116,6 +264135,7 @@ var PostmanGatewayAssetsClient = class _PostmanGatewayAssetsClient {
264116
264135
  this.gateway = options.gateway;
264117
264136
  this.createIdentity = options.createIdentity ?? import_node_crypto2.randomUUID;
264118
264137
  this.sleep = options.sleep ?? ((delayMs) => new Promise((resolve5) => setTimeout(resolve5, delayMs)));
264138
+ this.random = options.random ?? Math.random;
264119
264139
  this.generationPollAttempts = resolvePollBudget(
264120
264140
  options.generationPollAttempts,
264121
264141
  process.env.POSTMAN_GENERATION_POLL_ATTEMPTS,
@@ -264890,7 +264910,7 @@ ${error2.responseBody ?? ""}`
264890
264910
  if (!retriable || attempt === maxAttempts - 1) {
264891
264911
  throw error2;
264892
264912
  }
264893
- await this.sleep(Math.min(2e3, 300 * 2 ** attempt));
264913
+ await this.sleep(fullJitterDelayMs(attempt, 300, 2e3, this.random));
264894
264914
  }
264895
264915
  }
264896
264916
  }
@@ -265141,14 +265161,19 @@ ${error2.responseBody ?? ""}`
265141
265161
  { type: "afterResponse", code: exec2.join("\n"), language: "text/javascript" }
265142
265162
  ];
265143
265163
  for (const script of plan.scripts) {
265144
- await this.gateway.requestJson({
265145
- service: "collection",
265146
- method: "patch",
265147
- path: `/v3/collections/${cid}/items/${script.itemId}`,
265148
- retry: "safe",
265149
- headers: { "X-Entity-Type": "http-request" },
265150
- body: [{ op: "add", path: "/scripts", value: toV3Scripts(script.exec) }]
265151
- });
265164
+ try {
265165
+ await this.gateway.requestJson({
265166
+ service: "collection",
265167
+ method: "patch",
265168
+ path: `/v3/collections/${cid}/items/${script.itemId}`,
265169
+ retry: "safe",
265170
+ headers: { "X-Entity-Type": "http-request" },
265171
+ body: [{ op: "add", path: "/scripts", value: toV3Scripts(script.exec) }]
265172
+ });
265173
+ } catch (error2) {
265174
+ if (isRejectedPatchError(error2)) continue;
265175
+ throw error2;
265176
+ }
265152
265177
  }
265153
265178
  if (!items.some((i) => String(i.name ?? "") === "00 - Resolve Secrets")) {
265154
265179
  const created = await this.gateway.requestJson({
@@ -265353,36 +265378,53 @@ ${error2.responseBody ?? ""}`
265353
265378
  async createItemTree(cid, items, parentId) {
265354
265379
  for (const item of items) {
265355
265380
  const kind = String(item.$kind ?? "http-request");
265356
- let created;
265357
- try {
265358
- created = await this.gateway.requestJson({
265359
- service: "collection",
265360
- method: "post",
265361
- path: `/v3/collections/${cid}/items/`,
265362
- retry: "none",
265363
- headers: { "X-Entity-Type": kind },
265364
- body: this.buildItemCreateBody(item, parentId)
265365
- });
265366
- } catch (error2) {
265367
- if (!isAmbiguousTransportError(error2)) throw error2;
265368
- const name = String(item.name ?? "Untitled");
265369
- const matches = (await this.listCollectionItems(cid)).filter((candidate) => {
265370
- if (String(candidate.name ?? candidate.title ?? "") !== name) return false;
265371
- if (String(candidate.$kind ?? candidate.type ?? "http-request") !== kind) return false;
265372
- const position = asRecord8(candidate.position);
265373
- const parent = asRecord8(position?.parent);
265374
- const candidateParent = String(parent?.id ?? position?.parent ?? candidate.parent ?? "").trim();
265375
- return Boolean(candidateParent) && this.bareModelId(candidateParent) === this.bareModelId(parentId);
265376
- });
265377
- const match = adoptExactMatch(
265378
- `collection-item:${cid}:${parentId}:${kind}:${name}`,
265379
- matches,
265380
- (candidate) => String(candidate.id ?? "")
265381
- );
265382
- if (!match) throw error2;
265383
- created = { data: { id: match.id } };
265381
+ const maxAttempts = 4;
265382
+ let newId = "";
265383
+ for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
265384
+ let created;
265385
+ try {
265386
+ created = await this.gateway.requestJson({
265387
+ service: "collection",
265388
+ method: "post",
265389
+ path: `/v3/collections/${cid}/items/`,
265390
+ retry: "none",
265391
+ headers: { "X-Entity-Type": kind },
265392
+ body: this.buildItemCreateBody(item, parentId)
265393
+ });
265394
+ } catch (error2) {
265395
+ if (!isAmbiguousTransportError(error2)) throw error2;
265396
+ const name = String(item.name ?? "Untitled");
265397
+ const findCommittedItem = async () => {
265398
+ const matches = (await this.listCollectionItems(cid)).filter((candidate) => {
265399
+ if (String(candidate.name ?? candidate.title ?? "") !== name) return false;
265400
+ if (String(candidate.$kind ?? candidate.type ?? "http-request") !== kind) return false;
265401
+ const position = asRecord8(candidate.position);
265402
+ const parent = asRecord8(position?.parent);
265403
+ const candidateParent = String(parent?.id ?? position?.parent ?? candidate.parent ?? "").trim();
265404
+ return Boolean(candidateParent) && this.bareModelId(candidateParent) === this.bareModelId(parentId);
265405
+ });
265406
+ return adoptExactMatch(
265407
+ `collection-item:${cid}:${parentId}:${kind}:${name}`,
265408
+ matches,
265409
+ (candidate) => String(candidate.id ?? "")
265410
+ );
265411
+ };
265412
+ let match = await findCommittedItem();
265413
+ if (!match) {
265414
+ await this.sleep(fullJitterDelayMs(attempt - 1, 300, 2e3, this.random));
265415
+ match = await findCommittedItem();
265416
+ }
265417
+ if (match) {
265418
+ created = { data: { id: match.id } };
265419
+ } else {
265420
+ const retriable = error2 instanceof HttpError && error2.status >= 500;
265421
+ if (!retriable || attempt === maxAttempts) throw error2;
265422
+ continue;
265423
+ }
265424
+ }
265425
+ newId = String(asRecord8(created?.data)?.id ?? "").trim();
265426
+ if (newId) break;
265384
265427
  }
265385
- const newId = String(asRecord8(created?.data)?.id ?? "").trim();
265386
265428
  if (!newId) {
265387
265429
  throw new Error(
265388
265430
  `Item create did not return an id for ${String(item.name ?? "item")}`
@@ -265425,6 +265467,30 @@ ${error2.responseBody ?? ""}`
265425
265467
  * - `remove` of /description always works (field exists as "")
265426
265468
  * - on update, GET the root first and only remove fields that currently exist
265427
265469
  */
265470
+ /**
265471
+ * GET a collection root, retrying through the v3 surface's read-after-write
265472
+ * 404 lag. A freshly generated/renamed collection can transiently report
265473
+ * RESOURCE_NOT_FOUND for a few seconds (worse under concurrent runner load);
265474
+ * retrying absorbs that instead of hard-failing the run.
265475
+ */
265476
+ async getCollectionRoot(cid) {
265477
+ const got = await retry(
265478
+ () => this.gateway.requestJson({
265479
+ service: "collection",
265480
+ method: "get",
265481
+ path: `/v3/collections/${cid}`,
265482
+ retry: "none"
265483
+ }),
265484
+ {
265485
+ maxAttempts: 6,
265486
+ delayMs: 1e3,
265487
+ backoffMultiplier: 2,
265488
+ maxDelayMs: 8e3,
265489
+ shouldRetry: (error2) => error2 instanceof HttpError && error2.status === 404
265490
+ }
265491
+ );
265492
+ return asRecord8(got?.data);
265493
+ }
265428
265494
  async applyCollectionLevelSettings(cid, v3, options = {}) {
265429
265495
  const ops = [];
265430
265496
  if (options.rename && typeof v3.name === "string" && v3.name) {
@@ -265432,12 +265498,7 @@ ${error2.responseBody ?? ""}`
265432
265498
  }
265433
265499
  let current = null;
265434
265500
  if (options.reconcileRemovals) {
265435
- const got = await this.gateway.requestJson({
265436
- service: "collection",
265437
- method: "get",
265438
- path: `/v3/collections/${cid}`
265439
- });
265440
- current = asRecord8(got?.data);
265501
+ current = await this.getCollectionRoot(cid);
265441
265502
  }
265442
265503
  const hasDescription = typeof v3.description === "string" && v3.description.length > 0;
265443
265504
  if (hasDescription) {
@@ -265476,6 +265537,9 @@ ${error2.responseBody ?? ""}`
265476
265537
  if (isMissingPatchValueError(error2) && ops.some((op) => op.op === "remove") && await this.verifyRootSettingsApplied(cid, ops)) {
265477
265538
  return;
265478
265539
  }
265540
+ if (isRejectedPatchError(error2) && await this.verifyRootSettingsApplied(cid, ops)) {
265541
+ return;
265542
+ }
265479
265543
  throw error2;
265480
265544
  }
265481
265545
  }
@@ -265599,7 +265663,9 @@ ${error2.responseBody ?? ""}`
265599
265663
  }
265600
265664
  /** Patch only the durable collection description without reconciling its item tree. */
265601
265665
  async updateCollectionDescription(collectionUid, description) {
265602
- await this.applyCollectionLevelSettings(this.bareModelId(collectionUid), { description });
265666
+ const cid = this.bareModelId(collectionUid);
265667
+ await this.getCollectionRoot(cid);
265668
+ await this.applyCollectionLevelSettings(cid, { description });
265603
265669
  }
265604
265670
  /**
265605
265671
  * Full-replace reconcile of a curated local v2.1.0 or collection v3 payload: delete every
@@ -265682,6 +265748,7 @@ function detectInnerError(body2) {
265682
265748
  return typeof innerStatus === "number" && innerStatus >= 400 ? innerStatus : 502;
265683
265749
  }
265684
265750
  function isTransientGatewayError(status, body2) {
265751
+ if (status === 429) return true;
265685
265752
  if (status === 502 || status === 503 || status === 504) return true;
265686
265753
  if (status >= 500 && (body2.includes("ESOCKETTIMEDOUT") || body2.includes("ETIMEDOUT") || body2.includes("ECONNRESET") || body2.includes("serverError") || body2.includes("downstream"))) {
265687
265754
  return true;
@@ -265700,8 +265767,10 @@ var AccessTokenGatewayClient = class {
265700
265767
  secretMasker;
265701
265768
  maxRetries;
265702
265769
  retryBaseDelayMs;
265770
+ retryMaxDelayMs;
265703
265771
  requestTimeoutMs;
265704
265772
  sleepImpl;
265773
+ randomImpl;
265705
265774
  constructor(options) {
265706
265775
  this.tokenProvider = options.tokenProvider;
265707
265776
  this.bifrostBaseUrl = String(
@@ -265713,8 +265782,10 @@ var AccessTokenGatewayClient = class {
265713
265782
  this.secretMasker = options.secretMasker ?? createSecretMasker([this.tokenProvider.current()]);
265714
265783
  this.maxRetries = options.maxRetries ?? 3;
265715
265784
  this.retryBaseDelayMs = options.retryBaseDelayMs ?? 400;
265785
+ this.retryMaxDelayMs = options.retryMaxDelayMs ?? 5e3;
265716
265786
  this.requestTimeoutMs = options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
265717
265787
  this.sleepImpl = options.sleepImpl ?? defaultSleep;
265788
+ this.randomImpl = options.randomImpl ?? Math.random;
265718
265789
  }
265719
265790
  configureTeamContext(teamId, orgMode) {
265720
265791
  this.teamId = String(teamId || "").trim();
@@ -265774,7 +265845,7 @@ var AccessTokenGatewayClient = class {
265774
265845
  response = await this.send(request);
265775
265846
  } catch (error2) {
265776
265847
  if (retryMode === "safe" && attempt < this.maxRetries) {
265777
- const delay = this.retryBaseDelayMs * 2 ** attempt;
265848
+ const delay = this.retryDelayMs(attempt);
265778
265849
  attempt += 1;
265779
265850
  await this.sleepImpl(delay);
265780
265851
  continue;
@@ -265786,7 +265857,7 @@ var AccessTokenGatewayClient = class {
265786
265857
  const innerStatus = detectInnerError(okBody);
265787
265858
  if (innerStatus !== null) {
265788
265859
  if (retryMode === "safe" && isTransientGatewayError(innerStatus, okBody) && attempt < this.maxRetries) {
265789
- const delay = this.retryBaseDelayMs * 2 ** attempt;
265860
+ const delay = this.retryDelayMs(attempt);
265790
265861
  attempt += 1;
265791
265862
  await this.sleepImpl(delay);
265792
265863
  continue;
@@ -265811,7 +265882,10 @@ var AccessTokenGatewayClient = class {
265811
265882
  throw this.toHttpError(request, response, retryBody);
265812
265883
  }
265813
265884
  if (retryMode === "safe" && isTransientGatewayError(response.status, body2) && attempt < this.maxRetries) {
265814
- const delay = this.retryBaseDelayMs * 2 ** attempt;
265885
+ const delay = this.retryDelayMs(
265886
+ attempt,
265887
+ parseRetryAfterMs2(response.headers.get("retry-after"))
265888
+ );
265815
265889
  attempt += 1;
265816
265890
  await this.sleepImpl(delay);
265817
265891
  continue;
@@ -265819,6 +265893,18 @@ var AccessTokenGatewayClient = class {
265819
265893
  throw this.toHttpError(request, response, body2);
265820
265894
  }
265821
265895
  }
265896
+ /**
265897
+ * Full-jitter backoff (uniform in [0, min(cap, base * 2^attempt))) so
265898
+ * concurrent CI runners that fail together never retry in lockstep against
265899
+ * the shared gateway. A server-sent Retry-After beats the heuristic: it is
265900
+ * authoritative backpressure, honored verbatim (capped by the ceiling).
265901
+ */
265902
+ retryDelayMs(attempt, retryAfterMs) {
265903
+ if (retryAfterMs !== void 0) {
265904
+ return Math.min(this.retryMaxDelayMs, retryAfterMs);
265905
+ }
265906
+ return fullJitterDelayMs(attempt, this.retryBaseDelayMs, this.retryMaxDelayMs, this.randomImpl);
265907
+ }
265822
265908
  /**
265823
265909
  * The success path reads the body to inspect for an inner error, which
265824
265910
  * consumes the stream. Hand callers a fresh Response over the buffered text so
@@ -266556,6 +266642,9 @@ function createTelemetryContext(options) {
266556
266642
  var import_node_fs3 = require("node:fs");
266557
266643
  var import_node_path3 = require("node:path");
266558
266644
  function resolveActionVersion2() {
266645
+ if (false) {
266646
+ return void 0;
266647
+ }
266559
266648
  try {
266560
266649
  const raw = (0, import_node_fs3.readFileSync)((0, import_node_path3.join)(__dirname, "..", "package.json"), "utf8");
266561
266650
  return JSON.parse(raw).version ?? "unknown";
@@ -299355,940 +299444,6 @@ function getPositionFromMatch(match) {
299355
299444
  }
299356
299445
 
299357
299446
  // node_modules/@nodable/entities/src/entities.js
299358
- var BASIC_LATIN = {
299359
- amp: "&",
299360
- AMP: "&",
299361
- lt: "<",
299362
- LT: "<",
299363
- gt: ">",
299364
- GT: ">",
299365
- quot: '"',
299366
- QUOT: '"',
299367
- apos: "'",
299368
- lsquo: "\u2018",
299369
- rsquo: "\u2019",
299370
- ldquo: "\u201C",
299371
- rdquo: "\u201D",
299372
- lsquor: "\u201A",
299373
- rsquor: "\u2019",
299374
- ldquor: "\u201E",
299375
- bdquo: "\u201E",
299376
- comma: ",",
299377
- period: ".",
299378
- colon: ":",
299379
- semi: ";",
299380
- excl: "!",
299381
- quest: "?",
299382
- num: "#",
299383
- dollar: "$",
299384
- percent: "%",
299385
- ast: "*",
299386
- commat: "@",
299387
- lowbar: "_",
299388
- verbar: "|",
299389
- vert: "|",
299390
- sol: "/",
299391
- bsol: "\\",
299392
- lbrace: "{",
299393
- rbrace: "}",
299394
- lbrack: "[",
299395
- rbrack: "]",
299396
- lpar: "(",
299397
- rpar: ")",
299398
- nbsp: "\xA0",
299399
- iexcl: "\xA1",
299400
- cent: "\xA2",
299401
- pound: "\xA3",
299402
- curren: "\xA4",
299403
- yen: "\xA5",
299404
- brvbar: "\xA6",
299405
- sect: "\xA7",
299406
- uml: "\xA8",
299407
- copy: "\xA9",
299408
- COPY: "\xA9",
299409
- ordf: "\xAA",
299410
- laquo: "\xAB",
299411
- not: "\xAC",
299412
- shy: "\xAD",
299413
- reg: "\xAE",
299414
- REG: "\xAE",
299415
- macr: "\xAF",
299416
- deg: "\xB0",
299417
- plusmn: "\xB1",
299418
- sup2: "\xB2",
299419
- sup3: "\xB3",
299420
- acute: "\xB4",
299421
- micro: "\xB5",
299422
- para: "\xB6",
299423
- middot: "\xB7",
299424
- cedil: "\xB8",
299425
- sup1: "\xB9",
299426
- ordm: "\xBA",
299427
- raquo: "\xBB",
299428
- frac14: "\xBC",
299429
- frac12: "\xBD",
299430
- half: "\xBD",
299431
- frac34: "\xBE",
299432
- iquest: "\xBF",
299433
- times: "\xD7",
299434
- div: "\xF7",
299435
- divide: "\xF7"
299436
- };
299437
- var LATIN_ACCENTS = {
299438
- Agrave: "\xC0",
299439
- agrave: "\xE0",
299440
- Aacute: "\xC1",
299441
- aacute: "\xE1",
299442
- Acirc: "\xC2",
299443
- acirc: "\xE2",
299444
- Atilde: "\xC3",
299445
- atilde: "\xE3",
299446
- Auml: "\xC4",
299447
- auml: "\xE4",
299448
- Aring: "\xC5",
299449
- aring: "\xE5",
299450
- AElig: "\xC6",
299451
- aelig: "\xE6",
299452
- Ccedil: "\xC7",
299453
- ccedil: "\xE7",
299454
- Egrave: "\xC8",
299455
- egrave: "\xE8",
299456
- Eacute: "\xC9",
299457
- eacute: "\xE9",
299458
- Ecirc: "\xCA",
299459
- ecirc: "\xEA",
299460
- Euml: "\xCB",
299461
- euml: "\xEB",
299462
- Igrave: "\xCC",
299463
- igrave: "\xEC",
299464
- Iacute: "\xCD",
299465
- iacute: "\xED",
299466
- Icirc: "\xCE",
299467
- icirc: "\xEE",
299468
- Iuml: "\xCF",
299469
- iuml: "\xEF",
299470
- ETH: "\xD0",
299471
- eth: "\xF0",
299472
- Ntilde: "\xD1",
299473
- ntilde: "\xF1",
299474
- Ograve: "\xD2",
299475
- ograve: "\xF2",
299476
- Oacute: "\xD3",
299477
- oacute: "\xF3",
299478
- Ocirc: "\xD4",
299479
- ocirc: "\xF4",
299480
- Otilde: "\xD5",
299481
- otilde: "\xF5",
299482
- Ouml: "\xD6",
299483
- ouml: "\xF6",
299484
- Oslash: "\xD8",
299485
- oslash: "\xF8",
299486
- Ugrave: "\xD9",
299487
- ugrave: "\xF9",
299488
- Uacute: "\xDA",
299489
- uacute: "\xFA",
299490
- Ucirc: "\xDB",
299491
- ucirc: "\xFB",
299492
- Uuml: "\xDC",
299493
- uuml: "\xFC",
299494
- Yacute: "\xDD",
299495
- yacute: "\xFD",
299496
- THORN: "\xDE",
299497
- thorn: "\xFE",
299498
- szlig: "\xDF",
299499
- yuml: "\xFF",
299500
- Yuml: "\u0178"
299501
- };
299502
- var LATIN_EXTENDED = {
299503
- Amacr: "\u0100",
299504
- amacr: "\u0101",
299505
- Abreve: "\u0102",
299506
- abreve: "\u0103",
299507
- Aogon: "\u0104",
299508
- aogon: "\u0105",
299509
- Cacute: "\u0106",
299510
- cacute: "\u0107",
299511
- Ccirc: "\u0108",
299512
- ccirc: "\u0109",
299513
- Cdot: "\u010A",
299514
- cdot: "\u010B",
299515
- Ccaron: "\u010C",
299516
- ccaron: "\u010D",
299517
- Dcaron: "\u010E",
299518
- dcaron: "\u010F",
299519
- Dstrok: "\u0110",
299520
- dstrok: "\u0111",
299521
- Emacr: "\u0112",
299522
- emacr: "\u0113",
299523
- Ecaron: "\u011A",
299524
- ecaron: "\u011B",
299525
- Edot: "\u0116",
299526
- edot: "\u0117",
299527
- Eogon: "\u0118",
299528
- eogon: "\u0119",
299529
- Gcirc: "\u011C",
299530
- gcirc: "\u011D",
299531
- Gbreve: "\u011E",
299532
- gbreve: "\u011F",
299533
- Gdot: "\u0120",
299534
- gdot: "\u0121",
299535
- Gcedil: "\u0122",
299536
- Hcirc: "\u0124",
299537
- hcirc: "\u0125",
299538
- Hstrok: "\u0126",
299539
- hstrok: "\u0127",
299540
- Itilde: "\u0128",
299541
- itilde: "\u0129",
299542
- Imacr: "\u012A",
299543
- imacr: "\u012B",
299544
- Iogon: "\u012E",
299545
- iogon: "\u012F",
299546
- Idot: "\u0130",
299547
- IJlig: "\u0132",
299548
- ijlig: "\u0133",
299549
- Jcirc: "\u0134",
299550
- jcirc: "\u0135",
299551
- Kcedil: "\u0136",
299552
- kcedil: "\u0137",
299553
- kgreen: "\u0138",
299554
- Lacute: "\u0139",
299555
- lacute: "\u013A",
299556
- Lcedil: "\u013B",
299557
- lcedil: "\u013C",
299558
- Lcaron: "\u013D",
299559
- lcaron: "\u013E",
299560
- Lmidot: "\u013F",
299561
- lmidot: "\u0140",
299562
- Lstrok: "\u0141",
299563
- lstrok: "\u0142",
299564
- Nacute: "\u0143",
299565
- nacute: "\u0144",
299566
- Ncaron: "\u0147",
299567
- ncaron: "\u0148",
299568
- Ncedil: "\u0145",
299569
- ncedil: "\u0146",
299570
- ENG: "\u014A",
299571
- eng: "\u014B",
299572
- Omacr: "\u014C",
299573
- omacr: "\u014D",
299574
- Odblac: "\u0150",
299575
- odblac: "\u0151",
299576
- OElig: "\u0152",
299577
- oelig: "\u0153",
299578
- Racute: "\u0154",
299579
- racute: "\u0155",
299580
- Rcaron: "\u0158",
299581
- rcaron: "\u0159",
299582
- Rcedil: "\u0156",
299583
- rcedil: "\u0157",
299584
- Sacute: "\u015A",
299585
- sacute: "\u015B",
299586
- Scirc: "\u015C",
299587
- scirc: "\u015D",
299588
- Scedil: "\u015E",
299589
- scedil: "\u015F",
299590
- Scaron: "\u0160",
299591
- scaron: "\u0161",
299592
- Tcedil: "\u0162",
299593
- tcedil: "\u0163",
299594
- Tcaron: "\u0164",
299595
- tcaron: "\u0165",
299596
- Tstrok: "\u0166",
299597
- tstrok: "\u0167",
299598
- Utilde: "\u0168",
299599
- utilde: "\u0169",
299600
- Umacr: "\u016A",
299601
- umacr: "\u016B",
299602
- Ubreve: "\u016C",
299603
- ubreve: "\u016D",
299604
- Uring: "\u016E",
299605
- uring: "\u016F",
299606
- Udblac: "\u0170",
299607
- udblac: "\u0171",
299608
- Uogon: "\u0172",
299609
- uogon: "\u0173",
299610
- Wcirc: "\u0174",
299611
- wcirc: "\u0175",
299612
- Ycirc: "\u0176",
299613
- ycirc: "\u0177",
299614
- Zacute: "\u0179",
299615
- zacute: "\u017A",
299616
- Zdot: "\u017B",
299617
- zdot: "\u017C",
299618
- Zcaron: "\u017D",
299619
- zcaron: "\u017E"
299620
- };
299621
- var GREEK = {
299622
- Alpha: "\u0391",
299623
- alpha: "\u03B1",
299624
- Beta: "\u0392",
299625
- beta: "\u03B2",
299626
- Gamma: "\u0393",
299627
- gamma: "\u03B3",
299628
- Delta: "\u0394",
299629
- delta: "\u03B4",
299630
- Epsilon: "\u0395",
299631
- epsilon: "\u03B5",
299632
- epsiv: "\u03F5",
299633
- varepsilon: "\u03F5",
299634
- Zeta: "\u0396",
299635
- zeta: "\u03B6",
299636
- Eta: "\u0397",
299637
- eta: "\u03B7",
299638
- Theta: "\u0398",
299639
- theta: "\u03B8",
299640
- thetasym: "\u03D1",
299641
- vartheta: "\u03D1",
299642
- Iota: "\u0399",
299643
- iota: "\u03B9",
299644
- Kappa: "\u039A",
299645
- kappa: "\u03BA",
299646
- kappav: "\u03F0",
299647
- varkappa: "\u03F0",
299648
- Lambda: "\u039B",
299649
- lambda: "\u03BB",
299650
- Mu: "\u039C",
299651
- mu: "\u03BC",
299652
- Nu: "\u039D",
299653
- nu: "\u03BD",
299654
- Xi: "\u039E",
299655
- xi: "\u03BE",
299656
- Omicron: "\u039F",
299657
- omicron: "\u03BF",
299658
- Pi: "\u03A0",
299659
- pi: "\u03C0",
299660
- piv: "\u03D6",
299661
- varpi: "\u03D6",
299662
- Rho: "\u03A1",
299663
- rho: "\u03C1",
299664
- rhov: "\u03F1",
299665
- varrho: "\u03F1",
299666
- Sigma: "\u03A3",
299667
- sigma: "\u03C3",
299668
- sigmaf: "\u03C2",
299669
- sigmav: "\u03C2",
299670
- varsigma: "\u03C2",
299671
- Tau: "\u03A4",
299672
- tau: "\u03C4",
299673
- Upsilon: "\u03A5",
299674
- upsilon: "\u03C5",
299675
- upsi: "\u03C5",
299676
- Upsi: "\u03D2",
299677
- upsih: "\u03D2",
299678
- Phi: "\u03A6",
299679
- phi: "\u03C6",
299680
- phiv: "\u03D5",
299681
- varphi: "\u03D5",
299682
- Chi: "\u03A7",
299683
- chi: "\u03C7",
299684
- Psi: "\u03A8",
299685
- psi: "\u03C8",
299686
- Omega: "\u03A9",
299687
- omega: "\u03C9",
299688
- ohm: "\u03A9",
299689
- Gammad: "\u03DC",
299690
- gammad: "\u03DD",
299691
- digamma: "\u03DD"
299692
- };
299693
- var CYRILLIC = {
299694
- Afr: "\u{1D504}",
299695
- afr: "\u{1D51E}",
299696
- Acy: "\u0410",
299697
- acy: "\u0430",
299698
- Bcy: "\u0411",
299699
- bcy: "\u0431",
299700
- Vcy: "\u0412",
299701
- vcy: "\u0432",
299702
- Gcy: "\u0413",
299703
- gcy: "\u0433",
299704
- Dcy: "\u0414",
299705
- dcy: "\u0434",
299706
- IEcy: "\u0415",
299707
- iecy: "\u0435",
299708
- IOcy: "\u0401",
299709
- iocy: "\u0451",
299710
- ZHcy: "\u0416",
299711
- zhcy: "\u0436",
299712
- Zcy: "\u0417",
299713
- zcy: "\u0437",
299714
- Icy: "\u0418",
299715
- icy: "\u0438",
299716
- Jcy: "\u0419",
299717
- jcy: "\u0439",
299718
- Kcy: "\u041A",
299719
- kcy: "\u043A",
299720
- Lcy: "\u041B",
299721
- lcy: "\u043B",
299722
- Mcy: "\u041C",
299723
- mcy: "\u043C",
299724
- Ncy: "\u041D",
299725
- ncy: "\u043D",
299726
- Ocy: "\u041E",
299727
- ocy: "\u043E",
299728
- Pcy: "\u041F",
299729
- pcy: "\u043F",
299730
- Rcy: "\u0420",
299731
- rcy: "\u0440",
299732
- Scy: "\u0421",
299733
- scy: "\u0441",
299734
- Tcy: "\u0422",
299735
- tcy: "\u0442",
299736
- Ucy: "\u0423",
299737
- ucy: "\u0443",
299738
- Fcy: "\u0424",
299739
- fcy: "\u0444",
299740
- KHcy: "\u0425",
299741
- khcy: "\u0445",
299742
- TScy: "\u0426",
299743
- tscy: "\u0446",
299744
- CHcy: "\u0427",
299745
- chcy: "\u0447",
299746
- SHcy: "\u0428",
299747
- shcy: "\u0448",
299748
- SHCHcy: "\u0429",
299749
- shchcy: "\u0449",
299750
- HARDcy: "\u042A",
299751
- hardcy: "\u044A",
299752
- Ycy: "\u042B",
299753
- ycy: "\u044B",
299754
- SOFTcy: "\u042C",
299755
- softcy: "\u044C",
299756
- Ecy: "\u042D",
299757
- ecy: "\u044D",
299758
- YUcy: "\u042E",
299759
- yucy: "\u044E",
299760
- YAcy: "\u042F",
299761
- yacy: "\u044F",
299762
- DJcy: "\u0402",
299763
- djcy: "\u0452",
299764
- GJcy: "\u0403",
299765
- gjcy: "\u0453",
299766
- Jukcy: "\u0404",
299767
- jukcy: "\u0454",
299768
- DScy: "\u0405",
299769
- dscy: "\u0455",
299770
- Iukcy: "\u0406",
299771
- iukcy: "\u0456",
299772
- YIcy: "\u0407",
299773
- yicy: "\u0457",
299774
- Jsercy: "\u0408",
299775
- jsercy: "\u0458",
299776
- LJcy: "\u0409",
299777
- ljcy: "\u0459",
299778
- NJcy: "\u040A",
299779
- njcy: "\u045A",
299780
- TSHcy: "\u040B",
299781
- tshcy: "\u045B",
299782
- KJcy: "\u040C",
299783
- kjcy: "\u045C",
299784
- Ubrcy: "\u040E",
299785
- ubrcy: "\u045E",
299786
- DZcy: "\u040F",
299787
- dzcy: "\u045F"
299788
- };
299789
- var MATH = {
299790
- plus: "+",
299791
- pm: "\xB1",
299792
- times: "\xD7",
299793
- div: "\xF7",
299794
- divide: "\xF7",
299795
- sdot: "\u22C5",
299796
- star: "\u2606",
299797
- starf: "\u2605",
299798
- bigstar: "\u2605",
299799
- lowast: "\u2217",
299800
- ast: "*",
299801
- midast: "*",
299802
- compfn: "\u2218",
299803
- smallcircle: "\u2218",
299804
- bullet: "\u2022",
299805
- bull: "\u2022",
299806
- nbsp: "\xA0",
299807
- hellip: "\u2026",
299808
- mldr: "\u2026",
299809
- prime: "\u2032",
299810
- Prime: "\u2033",
299811
- tprime: "\u2034",
299812
- bprime: "\u2035",
299813
- backprime: "\u2035",
299814
- minus: "\u2212",
299815
- minusd: "\u2238",
299816
- dotminus: "\u2238",
299817
- plusdo: "\u2214",
299818
- dotplus: "\u2214",
299819
- plusmn: "\xB1",
299820
- minusplus: "\u2213",
299821
- mnplus: "\u2213",
299822
- mp: "\u2213",
299823
- setminus: "\u2216",
299824
- smallsetminus: "\u2216",
299825
- Backslash: "\u2216",
299826
- setmn: "\u2216",
299827
- ssetmn: "\u2216",
299828
- lowbar: "_",
299829
- verbar: "|",
299830
- vert: "|",
299831
- VerticalLine: "|",
299832
- colon: ":",
299833
- Colon: "\u2237",
299834
- Proportion: "\u2237",
299835
- ratio: "\u2236",
299836
- equals: "=",
299837
- ne: "\u2260",
299838
- nequiv: "\u2262",
299839
- equiv: "\u2261",
299840
- Congruent: "\u2261",
299841
- sim: "\u223C",
299842
- thicksim: "\u223C",
299843
- thksim: "\u223C",
299844
- sime: "\u2243",
299845
- simeq: "\u2243",
299846
- TildeEqual: "\u2243",
299847
- asymp: "\u2248",
299848
- approx: "\u2248",
299849
- thickapprox: "\u2248",
299850
- thkap: "\u2248",
299851
- TildeTilde: "\u2248",
299852
- ncong: "\u2247",
299853
- cong: "\u2245",
299854
- TildeFullEqual: "\u2245",
299855
- asympeq: "\u224D",
299856
- CupCap: "\u224D",
299857
- bump: "\u224E",
299858
- Bumpeq: "\u224E",
299859
- HumpDownHump: "\u224E",
299860
- bumpe: "\u224F",
299861
- bumpeq: "\u224F",
299862
- HumpEqual: "\u224F",
299863
- le: "\u2264",
299864
- LessEqual: "\u2264",
299865
- ge: "\u2265",
299866
- GreaterEqual: "\u2265",
299867
- lesseqgtr: "\u22DA",
299868
- lesseqqgtr: "\u2A8B",
299869
- greater: ">",
299870
- less: "<"
299871
- };
299872
- var MATH_ADVANCED = {
299873
- alefsym: "\u2135",
299874
- aleph: "\u2135",
299875
- beth: "\u2136",
299876
- gimel: "\u2137",
299877
- daleth: "\u2138",
299878
- forall: "\u2200",
299879
- ForAll: "\u2200",
299880
- part: "\u2202",
299881
- PartialD: "\u2202",
299882
- exist: "\u2203",
299883
- Exists: "\u2203",
299884
- nexist: "\u2204",
299885
- nexists: "\u2204",
299886
- empty: "\u2205",
299887
- emptyset: "\u2205",
299888
- emptyv: "\u2205",
299889
- varnothing: "\u2205",
299890
- nabla: "\u2207",
299891
- Del: "\u2207",
299892
- isin: "\u2208",
299893
- isinv: "\u2208",
299894
- in: "\u2208",
299895
- Element: "\u2208",
299896
- notin: "\u2209",
299897
- notinva: "\u2209",
299898
- ni: "\u220B",
299899
- niv: "\u220B",
299900
- SuchThat: "\u220B",
299901
- ReverseElement: "\u220B",
299902
- notni: "\u220C",
299903
- notniva: "\u220C",
299904
- prod: "\u220F",
299905
- Product: "\u220F",
299906
- coprod: "\u2210",
299907
- Coproduct: "\u2210",
299908
- sum: "\u2211",
299909
- Sum: "\u2211",
299910
- minus: "\u2212",
299911
- mp: "\u2213",
299912
- plusdo: "\u2214",
299913
- dotplus: "\u2214",
299914
- setminus: "\u2216",
299915
- lowast: "\u2217",
299916
- radic: "\u221A",
299917
- Sqrt: "\u221A",
299918
- prop: "\u221D",
299919
- propto: "\u221D",
299920
- Proportional: "\u221D",
299921
- varpropto: "\u221D",
299922
- infin: "\u221E",
299923
- infintie: "\u29DD",
299924
- ang: "\u2220",
299925
- angle: "\u2220",
299926
- angmsd: "\u2221",
299927
- measuredangle: "\u2221",
299928
- angsph: "\u2222",
299929
- mid: "\u2223",
299930
- VerticalBar: "\u2223",
299931
- nmid: "\u2224",
299932
- nsmid: "\u2224",
299933
- npar: "\u2226",
299934
- parallel: "\u2225",
299935
- spar: "\u2225",
299936
- nparallel: "\u2226",
299937
- nspar: "\u2226",
299938
- and: "\u2227",
299939
- wedge: "\u2227",
299940
- or: "\u2228",
299941
- vee: "\u2228",
299942
- cap: "\u2229",
299943
- cup: "\u222A",
299944
- int: "\u222B",
299945
- Integral: "\u222B",
299946
- conint: "\u222E",
299947
- ContourIntegral: "\u222E",
299948
- Conint: "\u222F",
299949
- DoubleContourIntegral: "\u222F",
299950
- Cconint: "\u2230",
299951
- there4: "\u2234",
299952
- therefore: "\u2234",
299953
- Therefore: "\u2234",
299954
- becaus: "\u2235",
299955
- because: "\u2235",
299956
- Because: "\u2235",
299957
- ratio: "\u2236",
299958
- Proportion: "\u2237",
299959
- minusd: "\u2238",
299960
- dotminus: "\u2238",
299961
- mDDot: "\u223A",
299962
- homtht: "\u223B",
299963
- sim: "\u223C",
299964
- bsimg: "\u223D",
299965
- backsim: "\u223D",
299966
- ac: "\u223E",
299967
- mstpos: "\u223E",
299968
- acd: "\u223F",
299969
- VerticalTilde: "\u2240",
299970
- wr: "\u2240",
299971
- wreath: "\u2240",
299972
- nsime: "\u2244",
299973
- nsimeq: "\u2244",
299974
- ncong: "\u2247",
299975
- simne: "\u2246",
299976
- ncongdot: "\u2A6D\u0338",
299977
- ngsim: "\u2275",
299978
- nsim: "\u2241",
299979
- napprox: "\u2249",
299980
- nap: "\u2249",
299981
- ngeq: "\u2271",
299982
- nge: "\u2271",
299983
- nleq: "\u2270",
299984
- nle: "\u2270",
299985
- ngtr: "\u226F",
299986
- ngt: "\u226F",
299987
- nless: "\u226E",
299988
- nlt: "\u226E",
299989
- nprec: "\u2280",
299990
- npr: "\u2280",
299991
- nsucc: "\u2281",
299992
- nsc: "\u2281"
299993
- };
299994
- var ARROWS = {
299995
- larr: "\u2190",
299996
- leftarrow: "\u2190",
299997
- LeftArrow: "\u2190",
299998
- uarr: "\u2191",
299999
- uparrow: "\u2191",
300000
- UpArrow: "\u2191",
300001
- rarr: "\u2192",
300002
- rightarrow: "\u2192",
300003
- RightArrow: "\u2192",
300004
- darr: "\u2193",
300005
- downarrow: "\u2193",
300006
- DownArrow: "\u2193",
300007
- harr: "\u2194",
300008
- leftrightarrow: "\u2194",
300009
- LeftRightArrow: "\u2194",
300010
- varr: "\u2195",
300011
- updownarrow: "\u2195",
300012
- UpDownArrow: "\u2195",
300013
- nwarr: "\u2196",
300014
- nwarrow: "\u2196",
300015
- UpperLeftArrow: "\u2196",
300016
- nearr: "\u2197",
300017
- nearrow: "\u2197",
300018
- UpperRightArrow: "\u2197",
300019
- searr: "\u2198",
300020
- searrow: "\u2198",
300021
- LowerRightArrow: "\u2198",
300022
- swarr: "\u2199",
300023
- swarrow: "\u2199",
300024
- LowerLeftArrow: "\u2199",
300025
- lArr: "\u21D0",
300026
- Leftarrow: "\u21D0",
300027
- uArr: "\u21D1",
300028
- Uparrow: "\u21D1",
300029
- rArr: "\u21D2",
300030
- Rightarrow: "\u21D2",
300031
- dArr: "\u21D3",
300032
- Downarrow: "\u21D3",
300033
- hArr: "\u21D4",
300034
- Leftrightarrow: "\u21D4",
300035
- iff: "\u21D4",
300036
- vArr: "\u21D5",
300037
- Updownarrow: "\u21D5",
300038
- lAarr: "\u21DA",
300039
- Lleftarrow: "\u21DA",
300040
- rAarr: "\u21DB",
300041
- Rrightarrow: "\u21DB",
300042
- lrarr: "\u21C6",
300043
- leftrightarrows: "\u21C6",
300044
- rlarr: "\u21C4",
300045
- rightleftarrows: "\u21C4",
300046
- lrhar: "\u21CB",
300047
- leftrightharpoons: "\u21CB",
300048
- ReverseEquilibrium: "\u21CB",
300049
- rlhar: "\u21CC",
300050
- rightleftharpoons: "\u21CC",
300051
- Equilibrium: "\u21CC",
300052
- udarr: "\u21C5",
300053
- UpArrowDownArrow: "\u21C5",
300054
- duarr: "\u21F5",
300055
- DownArrowUpArrow: "\u21F5",
300056
- llarr: "\u21C7",
300057
- leftleftarrows: "\u21C7",
300058
- rrarr: "\u21C9",
300059
- rightrightarrows: "\u21C9",
300060
- ddarr: "\u21CA",
300061
- downdownarrows: "\u21CA",
300062
- har: "\u21BD",
300063
- lhard: "\u21BD",
300064
- leftharpoondown: "\u21BD",
300065
- lharu: "\u21BC",
300066
- leftharpoonup: "\u21BC",
300067
- rhard: "\u21C1",
300068
- rightharpoondown: "\u21C1",
300069
- rharu: "\u21C0",
300070
- rightharpoonup: "\u21C0",
300071
- lsh: "\u21B0",
300072
- Lsh: "\u21B0",
300073
- rsh: "\u21B1",
300074
- Rsh: "\u21B1",
300075
- ldsh: "\u21B2",
300076
- rdsh: "\u21B3",
300077
- hookleftarrow: "\u21A9",
300078
- hookrightarrow: "\u21AA",
300079
- mapstoleft: "\u21A4",
300080
- mapstoup: "\u21A5",
300081
- map: "\u21A6",
300082
- mapsto: "\u21A6",
300083
- mapstodown: "\u21A7",
300084
- crarr: "\u21B5",
300085
- nleftarrow: "\u219A",
300086
- nleftrightarrow: "\u21AE",
300087
- nrightarrow: "\u219B",
300088
- nrarr: "\u219B",
300089
- larrtl: "\u21A2",
300090
- rarrtl: "\u21A3",
300091
- leftarrowtail: "\u21A2",
300092
- rightarrowtail: "\u21A3",
300093
- twoheadleftarrow: "\u219E",
300094
- twoheadrightarrow: "\u21A0",
300095
- Larr: "\u219E",
300096
- Rarr: "\u21A0",
300097
- larrhk: "\u21A9",
300098
- rarrhk: "\u21AA",
300099
- larrlp: "\u21AB",
300100
- looparrowleft: "\u21AB",
300101
- rarrlp: "\u21AC",
300102
- looparrowright: "\u21AC",
300103
- harrw: "\u21AD",
300104
- leftrightsquigarrow: "\u21AD",
300105
- nrarrw: "\u219D\u0338",
300106
- rarrw: "\u219D",
300107
- rightsquigarrow: "\u219D",
300108
- larrbfs: "\u291F",
300109
- rarrbfs: "\u2920",
300110
- nvHarr: "\u2904",
300111
- nvlArr: "\u2902",
300112
- nvrArr: "\u2903",
300113
- larrfs: "\u291D",
300114
- rarrfs: "\u291E",
300115
- Map: "\u2905",
300116
- larrsim: "\u2973",
300117
- rarrsim: "\u2974",
300118
- harrcir: "\u2948",
300119
- Uarrocir: "\u2949",
300120
- lurdshar: "\u294A",
300121
- ldrdhar: "\u2967",
300122
- ldrushar: "\u294B",
300123
- rdldhar: "\u2969",
300124
- lrhard: "\u296D",
300125
- uharr: "\u21BE",
300126
- uharl: "\u21BF",
300127
- dharr: "\u21C2",
300128
- dharl: "\u21C3",
300129
- Uarr: "\u219F",
300130
- Darr: "\u21A1",
300131
- zigrarr: "\u21DD",
300132
- nwArr: "\u21D6",
300133
- neArr: "\u21D7",
300134
- seArr: "\u21D8",
300135
- swArr: "\u21D9",
300136
- nharr: "\u21AE",
300137
- nhArr: "\u21CE",
300138
- nlarr: "\u219A",
300139
- nlArr: "\u21CD",
300140
- nrArr: "\u21CF",
300141
- larrb: "\u21E4",
300142
- LeftArrowBar: "\u21E4",
300143
- rarrb: "\u21E5",
300144
- RightArrowBar: "\u21E5"
300145
- };
300146
- var SHAPES = {
300147
- square: "\u25A1",
300148
- Square: "\u25A1",
300149
- squ: "\u25A1",
300150
- squf: "\u25AA",
300151
- squarf: "\u25AA",
300152
- blacksquar: "\u25AA",
300153
- blacksquare: "\u25AA",
300154
- FilledVerySmallSquare: "\u25AA",
300155
- blk34: "\u2593",
300156
- blk12: "\u2592",
300157
- blk14: "\u2591",
300158
- block: "\u2588",
300159
- srect: "\u25AD",
300160
- rect: "\u25AD",
300161
- sdot: "\u22C5",
300162
- sdotb: "\u22A1",
300163
- dotsquare: "\u22A1",
300164
- triangle: "\u25B5",
300165
- tri: "\u25B5",
300166
- trine: "\u25B5",
300167
- utri: "\u25B5",
300168
- triangledown: "\u25BF",
300169
- dtri: "\u25BF",
300170
- tridown: "\u25BF",
300171
- triangleleft: "\u25C3",
300172
- ltri: "\u25C3",
300173
- triangleright: "\u25B9",
300174
- rtri: "\u25B9",
300175
- blacktriangle: "\u25B4",
300176
- utrif: "\u25B4",
300177
- blacktriangledown: "\u25BE",
300178
- dtrif: "\u25BE",
300179
- blacktriangleleft: "\u25C2",
300180
- ltrif: "\u25C2",
300181
- blacktriangleright: "\u25B8",
300182
- rtrif: "\u25B8",
300183
- loz: "\u25CA",
300184
- lozenge: "\u25CA",
300185
- blacklozenge: "\u29EB",
300186
- lozf: "\u29EB",
300187
- bigcirc: "\u25EF",
300188
- xcirc: "\u25EF",
300189
- circ: "\u02C6",
300190
- Circle: "\u25CB",
300191
- cir: "\u25CB",
300192
- o: "\u25CB",
300193
- bullet: "\u2022",
300194
- bull: "\u2022",
300195
- hellip: "\u2026",
300196
- mldr: "\u2026",
300197
- nldr: "\u2025",
300198
- boxh: "\u2500",
300199
- HorizontalLine: "\u2500",
300200
- boxv: "\u2502",
300201
- boxdr: "\u250C",
300202
- boxdl: "\u2510",
300203
- boxur: "\u2514",
300204
- boxul: "\u2518",
300205
- boxvr: "\u251C",
300206
- boxvl: "\u2524",
300207
- boxhd: "\u252C",
300208
- boxhu: "\u2534",
300209
- boxvh: "\u253C",
300210
- boxH: "\u2550",
300211
- boxV: "\u2551",
300212
- boxdR: "\u2552",
300213
- boxDr: "\u2553",
300214
- boxDR: "\u2554",
300215
- boxDl: "\u2555",
300216
- boxdL: "\u2556",
300217
- boxDL: "\u2557",
300218
- boxuR: "\u2558",
300219
- boxUr: "\u2559",
300220
- boxUR: "\u255A",
300221
- boxUl: "\u255C",
300222
- boxuL: "\u255B",
300223
- boxUL: "\u255D",
300224
- boxvR: "\u255E",
300225
- boxVr: "\u255F",
300226
- boxVR: "\u2560",
300227
- boxVl: "\u2562",
300228
- boxvL: "\u2561",
300229
- boxVL: "\u2563",
300230
- boxHd: "\u2564",
300231
- boxhD: "\u2565",
300232
- boxHD: "\u2566",
300233
- boxHu: "\u2567",
300234
- boxhU: "\u2568",
300235
- boxHU: "\u2569",
300236
- boxvH: "\u256A",
300237
- boxVh: "\u256B",
300238
- boxVH: "\u256C"
300239
- };
300240
- var PUNCTUATION = {
300241
- excl: "!",
300242
- iexcl: "\xA1",
300243
- brvbar: "\xA6",
300244
- sect: "\xA7",
300245
- uml: "\xA8",
300246
- copy: "\xA9",
300247
- ordf: "\xAA",
300248
- laquo: "\xAB",
300249
- not: "\xAC",
300250
- shy: "\xAD",
300251
- reg: "\xAE",
300252
- macr: "\xAF",
300253
- deg: "\xB0",
300254
- plusmn: "\xB1",
300255
- sup2: "\xB2",
300256
- sup3: "\xB3",
300257
- acute: "\xB4",
300258
- micro: "\xB5",
300259
- para: "\xB6",
300260
- middot: "\xB7",
300261
- cedil: "\xB8",
300262
- sup1: "\xB9",
300263
- ordm: "\xBA",
300264
- raquo: "\xBB",
300265
- frac14: "\xBC",
300266
- frac12: "\xBD",
300267
- frac34: "\xBE",
300268
- iquest: "\xBF",
300269
- nbsp: "\xA0",
300270
- comma: ",",
300271
- period: ".",
300272
- colon: ":",
300273
- semi: ";",
300274
- vert: "|",
300275
- Verbar: "\u2016",
300276
- verbar: "|",
300277
- dblac: "\u02DD",
300278
- circ: "\u02C6",
300279
- caron: "\u02C7",
300280
- breve: "\u02D8",
300281
- dot: "\u02D9",
300282
- ring: "\u02DA",
300283
- ogon: "\u02DB",
300284
- tilde: "\u02DC",
300285
- DiacriticalGrave: "`",
300286
- DiacriticalAcute: "\xB4",
300287
- DiacriticalTilde: "\u02DC",
300288
- DiacriticalDot: "\u02D9",
300289
- DiacriticalDoubleAcute: "\u02DD",
300290
- grave: "`"
300291
- };
300292
299447
  var CURRENCY = {
300293
299448
  cent: "\xA2",
300294
299449
  pound: "\xA3",
@@ -300306,106 +299461,6 @@ var CURRENCY = {
300306
299461
  yuan: "\xA5",
300307
299462
  cedil: "\xB8"
300308
299463
  };
300309
- var FRACTIONS = {
300310
- frac12: "\xBD",
300311
- half: "\xBD",
300312
- frac13: "\u2153",
300313
- frac14: "\xBC",
300314
- frac15: "\u2155",
300315
- frac16: "\u2159",
300316
- frac18: "\u215B",
300317
- frac23: "\u2154",
300318
- frac25: "\u2156",
300319
- frac34: "\xBE",
300320
- frac35: "\u2157",
300321
- frac38: "\u215C",
300322
- frac45: "\u2158",
300323
- frac56: "\u215A",
300324
- frac58: "\u215D",
300325
- frac78: "\u215E",
300326
- frasl: "\u2044"
300327
- };
300328
- var MISC_SYMBOLS = {
300329
- trade: "\u2122",
300330
- TRADE: "\u2122",
300331
- telrec: "\u2315",
300332
- target: "\u2316",
300333
- ulcorn: "\u231C",
300334
- ulcorner: "\u231C",
300335
- urcorn: "\u231D",
300336
- urcorner: "\u231D",
300337
- dlcorn: "\u231E",
300338
- llcorner: "\u231E",
300339
- drcorn: "\u231F",
300340
- lrcorner: "\u231F",
300341
- intercal: "\u22BA",
300342
- intcal: "\u22BA",
300343
- oplus: "\u2295",
300344
- CirclePlus: "\u2295",
300345
- ominus: "\u2296",
300346
- CircleMinus: "\u2296",
300347
- otimes: "\u2297",
300348
- CircleTimes: "\u2297",
300349
- osol: "\u2298",
300350
- odot: "\u2299",
300351
- CircleDot: "\u2299",
300352
- oast: "\u229B",
300353
- circledast: "\u229B",
300354
- odash: "\u229D",
300355
- circleddash: "\u229D",
300356
- ocirc: "\u229A",
300357
- circledcirc: "\u229A",
300358
- boxplus: "\u229E",
300359
- plusb: "\u229E",
300360
- boxminus: "\u229F",
300361
- minusb: "\u229F",
300362
- boxtimes: "\u22A0",
300363
- timesb: "\u22A0",
300364
- boxdot: "\u22A1",
300365
- sdotb: "\u22A1",
300366
- veebar: "\u22BB",
300367
- vee: "\u2228",
300368
- barvee: "\u22BD",
300369
- and: "\u2227",
300370
- wedge: "\u2227",
300371
- Cap: "\u22D2",
300372
- Cup: "\u22D3",
300373
- Fork: "\u22D4",
300374
- pitchfork: "\u22D4",
300375
- epar: "\u22D5",
300376
- ltlarr: "\u2976",
300377
- nvap: "\u224D\u20D2",
300378
- nvsim: "\u223C\u20D2",
300379
- nvge: "\u2265\u20D2",
300380
- nvle: "\u2264\u20D2",
300381
- nvlt: "<\u20D2",
300382
- nvgt: ">\u20D2",
300383
- nvltrie: "\u22B4\u20D2",
300384
- nvrtrie: "\u22B5\u20D2",
300385
- Vdash: "\u22A9",
300386
- dashv: "\u22A3",
300387
- vDash: "\u22A8",
300388
- Vvdash: "\u22AA",
300389
- nvdash: "\u22AC",
300390
- nvDash: "\u22AD",
300391
- nVdash: "\u22AE",
300392
- nVDash: "\u22AF"
300393
- };
300394
- var ALL_ENTITIES = {
300395
- ...BASIC_LATIN,
300396
- ...LATIN_ACCENTS,
300397
- ...LATIN_EXTENDED,
300398
- ...GREEK,
300399
- ...CYRILLIC,
300400
- ...MATH,
300401
- ...MATH_ADVANCED,
300402
- ...ARROWS,
300403
- ...SHAPES,
300404
- ...PUNCTUATION,
300405
- ...CURRENCY,
300406
- ...FRACTIONS,
300407
- ...MISC_SYMBOLS
300408
- };
300409
299464
  var XML = {
300410
299465
  amp: "&",
300411
299466
  apos: "'",
@@ -301049,7 +300104,7 @@ var XmlNode = class {
301049
300104
  }
301050
300105
  };
301051
300106
 
301052
- // node_modules/xml-naming/src/index.js
300107
+ // node_modules/fast-xml-parser/node_modules/xml-naming/src/index.js
301053
300108
  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";
301054
300109
  var nameChar10 = nameStartChar10 + "\\-\\.\\d\xB7\u0300-\u036F\u203F-\u2040";
301055
300110
  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}";
@@ -301068,8 +300123,14 @@ var buildRegexes = (startChar, char, flags = "") => {
301068
300123
  };
301069
300124
  var regexes10 = buildRegexes(nameStartChar10, nameChar10);
301070
300125
  var regexes11 = buildRegexes(nameStartChar11, nameChar11, "u");
301071
- var getRegexes = (xmlVersion = "1.0") => xmlVersion === "1.1" ? regexes11 : regexes10;
301072
- var qName = (str, { xmlVersion = "1.0" } = {}) => getRegexes(xmlVersion).qName.test(str);
300126
+ var nameStartCharAscii = ":A-Za-z_";
300127
+ var nameCharAscii = nameStartCharAscii + "\\-\\.\\d";
300128
+ var regexesAscii = buildRegexes(nameStartCharAscii, nameCharAscii);
300129
+ var getRegexes = (xmlVersion = "1.0", asciiOnly = false) => {
300130
+ if (asciiOnly) return regexesAscii;
300131
+ return xmlVersion === "1.1" ? regexes11 : regexes10;
300132
+ };
300133
+ var qName = (str, { xmlVersion = "1.0", asciiOnly = false } = {}) => getRegexes(xmlVersion, asciiOnly).qName.test(str);
301073
300134
 
301074
300135
  // node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js
301075
300136
  var DocTypeReader = class {
@@ -302231,17 +301292,16 @@ var Matcher = class {
302231
301292
  this.path[this.path.length - 1].values = void 0;
302232
301293
  }
302233
301294
  const currentLevel = this.path.length;
302234
- if (!this.siblingStacks[currentLevel]) {
302235
- this.siblingStacks[currentLevel] = /* @__PURE__ */ new Map();
301295
+ let level = this.siblingStacks[currentLevel];
301296
+ if (!level) {
301297
+ level = { counts: /* @__PURE__ */ new Map(), total: 0 };
301298
+ this.siblingStacks[currentLevel] = level;
302236
301299
  }
302237
- const siblings = this.siblingStacks[currentLevel];
302238
301300
  const siblingKey = namespace ? `${namespace}:${tagName}` : tagName;
302239
- const counter = siblings.get(siblingKey) || 0;
302240
- let position = 0;
302241
- for (const count of siblings.values()) {
302242
- position += count;
302243
- }
302244
- siblings.set(siblingKey, counter + 1);
301301
+ const counter = level.counts.get(siblingKey) || 0;
301302
+ const position = level.total;
301303
+ level.counts.set(siblingKey, counter + 1);
301304
+ level.total++;
302245
301305
  const node = {
302246
301306
  tag: tagName,
302247
301307
  position,
@@ -302550,7 +301610,7 @@ var Matcher = class {
302550
301610
  snapshot() {
302551
301611
  return {
302552
301612
  path: this.path.map((node) => ({ ...node })),
302553
- siblingStacks: this.siblingStacks.map((map) => new Map(map)),
301613
+ siblingStacks: this.siblingStacks.map((level) => level ? { counts: new Map(level.counts), total: level.total } : level),
302554
301614
  keptAttrs: this._keptAttrs.map((entry) => ({ ...entry }))
302555
301615
  };
302556
301616
  }
@@ -302561,7 +301621,7 @@ var Matcher = class {
302561
301621
  restore(snapshot) {
302562
301622
  this._pathStringCache = null;
302563
301623
  this.path = snapshot.path.map((node) => ({ ...node }));
302564
- this.siblingStacks = snapshot.siblingStacks.map((map) => new Map(map));
301624
+ this.siblingStacks = snapshot.siblingStacks.map((level) => level ? { counts: new Map(level.counts), total: level.total } : level);
302565
301625
  this._keptAttrs = (snapshot.keptAttrs || []).map((entry) => ({ ...entry }));
302566
301626
  }
302567
301627
  /**
@@ -302899,27 +301959,6 @@ var SQL_PATTERNS = [
302899
301959
  ];
302900
301960
  var sql_default = SQL_PATTERNS;
302901
301961
 
302902
- // node_modules/is-unsafe/src/contexts/sql-strict.js
302903
- var SQL_STRICT_EXTRA = [
302904
- {
302905
- id: "sql-line-comment",
302906
- description: "SQL line comment: -- followed by whitespace or end of string",
302907
- pattern: /--(?:\s|$)/
302908
- },
302909
- {
302910
- id: "sql-stacked-query",
302911
- description: "Stacked queries: semicolon immediately followed by a SQL keyword",
302912
- pattern: /;\s{0,10}(?:SELECT|INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|EXEC)\b/i
302913
- },
302914
- {
302915
- id: "sql-hex-encoding",
302916
- description: "Hex-encoded string injection: 0x41414141 style (MySQL)",
302917
- pattern: /\b0x[0-9a-f]{4,}/i
302918
- }
302919
- ];
302920
- var SQL_STRICT_PATTERNS = [...sql_default, ...SQL_STRICT_EXTRA];
302921
- var sql_strict_default = SQL_STRICT_PATTERNS;
302922
-
302923
301962
  // node_modules/is-unsafe/src/contexts/shell.js
302924
301963
  var SHELL_PATTERNS = [
302925
301964
  {
@@ -303231,8 +302270,38 @@ var LOG_PATTERNS = [
303231
302270
  ];
303232
302271
  var log_default = LOG_PATTERNS;
303233
302272
 
303234
- // node_modules/is-unsafe/src/registry.js
303235
- var CONTEXT_REGISTRY = {
302273
+ // node_modules/is-unsafe/src/contexts/sql-strict.js
302274
+ var SQL_STRICT_EXTRA = [
302275
+ {
302276
+ id: "sql-line-comment",
302277
+ description: "SQL line comment: -- followed by whitespace or end of string",
302278
+ pattern: /--(?:\s|$)/
302279
+ },
302280
+ {
302281
+ id: "sql-stacked-query",
302282
+ description: "Stacked queries: semicolon immediately followed by a SQL keyword",
302283
+ pattern: /;\s{0,10}(?:SELECT|INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|EXEC)\b/i
302284
+ },
302285
+ {
302286
+ id: "sql-hex-encoding",
302287
+ description: "Hex-encoded string injection: 0x41414141 style (MySQL)",
302288
+ pattern: /\b0x[0-9a-f]{4,}/i
302289
+ }
302290
+ ];
302291
+ var SQL_STRICT_PATTERNS = [...sql_default, ...SQL_STRICT_EXTRA];
302292
+ var sql_strict_default = SQL_STRICT_PATTERNS;
302293
+
302294
+ // node_modules/is-unsafe/src/index.js
302295
+ html_default.label = "HTML";
302296
+ xml_default.label = "XML";
302297
+ svg_default.label = "SVG";
302298
+ sql_default.label = "SQL";
302299
+ sql_strict_default.label = "SQL-STRICT";
302300
+ shell_default.label = "SHELL";
302301
+ redos_default.label = "REDOS";
302302
+ nosql_default.label = "NOSQL";
302303
+ log_default.label = "LOG";
302304
+ var VALID_CONTEXTS = Object.freeze({
303236
302305
  HTML: html_default,
303237
302306
  XML: xml_default,
303238
302307
  SVG: svg_default,
@@ -303242,13 +302311,7 @@ var CONTEXT_REGISTRY = {
303242
302311
  REDOS: redos_default,
303243
302312
  NOSQL: nosql_default,
303244
302313
  LOG: log_default
303245
- };
303246
- var registry_default = CONTEXT_REGISTRY;
303247
- var VALID_CONTEXTS = Object.freeze(
303248
- Object.fromEntries(Object.keys(CONTEXT_REGISTRY).map((k) => [k, k]))
303249
- );
303250
-
303251
- // node_modules/is-unsafe/src/index.js
302314
+ });
303252
302315
  function assertString(value) {
303253
302316
  if (typeof value !== "string") {
303254
302317
  throw new TypeError(
@@ -303258,36 +302321,35 @@ function assertString(value) {
303258
302321
  }
303259
302322
  function assertContext(context) {
303260
302323
  if (context instanceof RegExp) return;
303261
- if (typeof context === "string") {
303262
- if (!registry_default[context]) {
303263
- throw new TypeError(
303264
- `is-unsafe: unknown context "${context}". Valid contexts: ${Object.keys(VALID_CONTEXTS).join(", ")}`
303265
- );
303266
- }
303267
- return;
303268
- }
303269
302324
  if (Array.isArray(context)) {
303270
302325
  if (context.length === 0) {
303271
- throw new TypeError("is-unsafe: context array must not be empty");
302326
+ throw new TypeError("is-unsafe: context must not be an empty array");
303272
302327
  }
303273
- for (const c of context) {
303274
- if (typeof c !== "string" || !registry_default[c]) {
303275
- throw new TypeError(
303276
- `is-unsafe: unknown context "${c}" in array. Valid contexts: ${Object.keys(VALID_CONTEXTS).join(", ")}`
303277
- );
302328
+ if (Array.isArray(context[0])) {
302329
+ for (const list of context) {
302330
+ if (!Array.isArray(list) || list.length === 0) {
302331
+ throw new TypeError(
302332
+ "is-unsafe: each context in the array must be a non-empty pattern array (PatternList)"
302333
+ );
302334
+ }
303278
302335
  }
303279
302336
  }
303280
302337
  return;
303281
302338
  }
303282
302339
  throw new TypeError(
303283
- `is-unsafe: second argument must be a context string, array of context strings, or RegExp. Got: ${typeof context}`
302340
+ `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}`
303284
302341
  );
303285
302342
  }
303286
- function matchContext(value, contextName) {
303287
- const patterns = registry_default[contextName];
303288
- for (const rule of patterns) {
302343
+ function normalise(context) {
302344
+ if (context instanceof RegExp) return { lists: null, regex: context };
302345
+ if (Array.isArray(context[0])) return { lists: context, regex: null };
302346
+ return { lists: [context], regex: null };
302347
+ }
302348
+ function matchList(value, list) {
302349
+ const label = list.label ?? "CUSTOM";
302350
+ for (const rule of list) {
303289
302351
  if (rule.pattern.test(value)) {
303290
- return { context: contextName, id: rule.id, description: rule.description, pattern: rule.pattern };
302352
+ return { context: label, id: rule.id, description: rule.description, pattern: rule.pattern };
303291
302353
  }
303292
302354
  }
303293
302355
  return null;
@@ -303295,14 +302357,10 @@ function matchContext(value, contextName) {
303295
302357
  function isUnsafe(value, context) {
303296
302358
  assertString(value);
303297
302359
  assertContext(context);
303298
- if (context instanceof RegExp) {
303299
- return context.test(value);
303300
- }
303301
- if (typeof context === "string") {
303302
- return matchContext(value, context) !== null;
303303
- }
303304
- for (const c of context) {
303305
- if (matchContext(value, c) !== null) return true;
302360
+ const { lists, regex } = normalise(context);
302361
+ if (regex) return regex.test(value);
302362
+ for (const list of lists) {
302363
+ if (matchList(value, list) !== null) return true;
303306
302364
  }
303307
302365
  return false;
303308
302366
  }
@@ -303351,6 +302409,7 @@ var OrderedObjParser = class {
303351
302409
  this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);
303352
302410
  this.entityExpansionCount = 0;
303353
302411
  this.currentExpandedLength = 0;
302412
+ this.doctypefound = false;
303354
302413
  let namedEntities = { ...XML };
303355
302414
  if (this.options.entityDecoder) {
303356
302415
  this.entityDecoder = this.options.entityDecoder;
@@ -303368,7 +302427,7 @@ var OrderedObjParser = class {
303368
302427
  // onExternalEntity: (name, value) => isUnsafe(value) ? 'block' : 'allow',
303369
302428
  onInputEntity: (name, value) => (
303370
302429
  //TODO: VALID_CONTEXTS.HTML should be set only if this.options.htmlEntities
303371
- isUnsafe(value, [VALID_CONTEXTS.HTML, VALID_CONTEXTS.XML]) ? ENTITY_ACTION.BLOCK : ENTITY_ACTION.ALLOW
302430
+ isUnsafe(value, [html_default, xml_default]) ? ENTITY_ACTION.BLOCK : ENTITY_ACTION.ALLOW
303372
302431
  )
303373
302432
  //postCheck: resolved => resolved
303374
302433
  });
@@ -303502,6 +302561,7 @@ var parseXml = function(xmlData) {
303502
302561
  this.entityDecoder.reset();
303503
302562
  this.entityExpansionCount = 0;
303504
302563
  this.currentExpandedLength = 0;
302564
+ this.doctypefound = false;
303505
302565
  const options = this.options;
303506
302566
  const docTypeReader = new DocTypeReader(options.processEntities);
303507
302567
  const xmlLen = xmlData.length;
@@ -303564,6 +302624,8 @@ var parseXml = function(xmlData) {
303564
302624
  }
303565
302625
  i = endIndex;
303566
302626
  } else if (c1 === 33 && xmlData.charCodeAt(i + 2) === 68) {
302627
+ if (this.doctypefound) throw new Error("Multiple DOCTYPE declarations found.");
302628
+ this.doctypefound = true;
303567
302629
  const result = docTypeReader.readDocType(xmlData, i);
303568
302630
  this.entityDecoder.addInputEntities(result.entities);
303569
302631
  i = result.i;
@@ -312938,8 +312000,8 @@ function resolveInputs(env = process.env) {
312938
312000
  breakingSummaryPath: getInput2("breaking-summary-path", env),
312939
312001
  breakingLogPath: getInput2("breaking-log-path", env),
312940
312002
  governanceMappingJson: parseGovernanceMappingJson(getInput2("governance-mapping-json", env)),
312941
- postmanApiKey: getInput2("postman-api-key", env) ?? "",
312942
- postmanAccessToken: getInput2("postman-access-token", env),
312003
+ postmanApiKey: getInput2("postman-api-key", env) || env.POSTMAN_API_KEY || "",
312004
+ postmanAccessToken: getInput2("postman-access-token", env) || env.POSTMAN_ACCESS_TOKEN,
312943
312005
  credentialPreflight: parseEnumInput(
312944
312006
  "credential-preflight",
312945
312007
  getInput2("credential-preflight", env),
@@ -313101,8 +312163,8 @@ function readActionInputs(actionCore) {
313101
312163
  if (specUrl && specPath) {
313102
312164
  throw new Error("Provide either spec-url or spec-path, not both.");
313103
312165
  }
313104
- const postmanApiKey = optionalInput(actionCore, "postman-api-key") ?? "";
313105
- const postmanAccessToken = optionalInput(actionCore, "postman-access-token");
312166
+ const postmanApiKey = optionalInput(actionCore, "postman-api-key") || process.env.POSTMAN_API_KEY || "";
312167
+ const postmanAccessToken = optionalInput(actionCore, "postman-access-token") || process.env.POSTMAN_ACCESS_TOKEN;
313106
312168
  const githubToken = optionalInput(actionCore, "github-token") || process.env.GITHUB_TOKEN;
313107
312169
  const ghFallbackToken = optionalInput(actionCore, "gh-fallback-token") || process.env.GH_FALLBACK_TOKEN;
313108
312170
  if (postmanApiKey) actionCore.setSecret(postmanApiKey);