@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/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,53 @@ ${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 findCommittedItem = async () => {
265373
+ const matches = (await this.listCollectionItems(cid)).filter((candidate) => {
265374
+ if (String(candidate.name ?? candidate.title ?? "") !== name) return false;
265375
+ if (String(candidate.$kind ?? candidate.type ?? "http-request") !== kind) return false;
265376
+ const position = asRecord8(candidate.position);
265377
+ const parent = asRecord8(position?.parent);
265378
+ const candidateParent = String(parent?.id ?? position?.parent ?? candidate.parent ?? "").trim();
265379
+ return Boolean(candidateParent) && this.bareModelId(candidateParent) === this.bareModelId(parentId);
265380
+ });
265381
+ return adoptExactMatch(
265382
+ `collection-item:${cid}:${parentId}:${kind}:${name}`,
265383
+ matches,
265384
+ (candidate) => String(candidate.id ?? "")
265385
+ );
265386
+ };
265387
+ let match = await findCommittedItem();
265388
+ if (!match) {
265389
+ await this.sleep(fullJitterDelayMs(attempt - 1, 300, 2e3, this.random));
265390
+ match = await findCommittedItem();
265391
+ }
265392
+ if (match) {
265393
+ created = { data: { id: match.id } };
265394
+ } else {
265395
+ const retriable = error2 instanceof HttpError && error2.status >= 500;
265396
+ if (!retriable || attempt === maxAttempts) throw error2;
265397
+ continue;
265398
+ }
265399
+ }
265400
+ newId = String(asRecord8(created?.data)?.id ?? "").trim();
265401
+ if (newId) break;
265359
265402
  }
265360
- const newId = String(asRecord8(created?.data)?.id ?? "").trim();
265361
265403
  if (!newId) {
265362
265404
  throw new Error(
265363
265405
  `Item create did not return an id for ${String(item.name ?? "item")}`
@@ -265400,6 +265442,30 @@ ${error2.responseBody ?? ""}`
265400
265442
  * - `remove` of /description always works (field exists as "")
265401
265443
  * - on update, GET the root first and only remove fields that currently exist
265402
265444
  */
265445
+ /**
265446
+ * GET a collection root, retrying through the v3 surface's read-after-write
265447
+ * 404 lag. A freshly generated/renamed collection can transiently report
265448
+ * RESOURCE_NOT_FOUND for a few seconds (worse under concurrent runner load);
265449
+ * retrying absorbs that instead of hard-failing the run.
265450
+ */
265451
+ async getCollectionRoot(cid) {
265452
+ const got = await retry(
265453
+ () => this.gateway.requestJson({
265454
+ service: "collection",
265455
+ method: "get",
265456
+ path: `/v3/collections/${cid}`,
265457
+ retry: "none"
265458
+ }),
265459
+ {
265460
+ maxAttempts: 6,
265461
+ delayMs: 1e3,
265462
+ backoffMultiplier: 2,
265463
+ maxDelayMs: 8e3,
265464
+ shouldRetry: (error2) => error2 instanceof HttpError && error2.status === 404
265465
+ }
265466
+ );
265467
+ return asRecord8(got?.data);
265468
+ }
265403
265469
  async applyCollectionLevelSettings(cid, v3, options = {}) {
265404
265470
  const ops = [];
265405
265471
  if (options.rename && typeof v3.name === "string" && v3.name) {
@@ -265407,12 +265473,7 @@ ${error2.responseBody ?? ""}`
265407
265473
  }
265408
265474
  let current = null;
265409
265475
  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);
265476
+ current = await this.getCollectionRoot(cid);
265416
265477
  }
265417
265478
  const hasDescription = typeof v3.description === "string" && v3.description.length > 0;
265418
265479
  if (hasDescription) {
@@ -265451,6 +265512,9 @@ ${error2.responseBody ?? ""}`
265451
265512
  if (isMissingPatchValueError(error2) && ops.some((op) => op.op === "remove") && await this.verifyRootSettingsApplied(cid, ops)) {
265452
265513
  return;
265453
265514
  }
265515
+ if (isRejectedPatchError(error2) && await this.verifyRootSettingsApplied(cid, ops)) {
265516
+ return;
265517
+ }
265454
265518
  throw error2;
265455
265519
  }
265456
265520
  }
@@ -265574,7 +265638,9 @@ ${error2.responseBody ?? ""}`
265574
265638
  }
265575
265639
  /** Patch only the durable collection description without reconciling its item tree. */
265576
265640
  async updateCollectionDescription(collectionUid, description) {
265577
- await this.applyCollectionLevelSettings(this.bareModelId(collectionUid), { description });
265641
+ const cid = this.bareModelId(collectionUid);
265642
+ await this.getCollectionRoot(cid);
265643
+ await this.applyCollectionLevelSettings(cid, { description });
265578
265644
  }
265579
265645
  /**
265580
265646
  * Full-replace reconcile of a curated local v2.1.0 or collection v3 payload: delete every
@@ -265657,6 +265723,7 @@ function detectInnerError(body2) {
265657
265723
  return typeof innerStatus === "number" && innerStatus >= 400 ? innerStatus : 502;
265658
265724
  }
265659
265725
  function isTransientGatewayError(status, body2) {
265726
+ if (status === 429) return true;
265660
265727
  if (status === 502 || status === 503 || status === 504) return true;
265661
265728
  if (status >= 500 && (body2.includes("ESOCKETTIMEDOUT") || body2.includes("ETIMEDOUT") || body2.includes("ECONNRESET") || body2.includes("serverError") || body2.includes("downstream"))) {
265662
265729
  return true;
@@ -265675,8 +265742,10 @@ var AccessTokenGatewayClient = class {
265675
265742
  secretMasker;
265676
265743
  maxRetries;
265677
265744
  retryBaseDelayMs;
265745
+ retryMaxDelayMs;
265678
265746
  requestTimeoutMs;
265679
265747
  sleepImpl;
265748
+ randomImpl;
265680
265749
  constructor(options) {
265681
265750
  this.tokenProvider = options.tokenProvider;
265682
265751
  this.bifrostBaseUrl = String(
@@ -265688,8 +265757,10 @@ var AccessTokenGatewayClient = class {
265688
265757
  this.secretMasker = options.secretMasker ?? createSecretMasker([this.tokenProvider.current()]);
265689
265758
  this.maxRetries = options.maxRetries ?? 3;
265690
265759
  this.retryBaseDelayMs = options.retryBaseDelayMs ?? 400;
265760
+ this.retryMaxDelayMs = options.retryMaxDelayMs ?? 5e3;
265691
265761
  this.requestTimeoutMs = options.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
265692
265762
  this.sleepImpl = options.sleepImpl ?? defaultSleep;
265763
+ this.randomImpl = options.randomImpl ?? Math.random;
265693
265764
  }
265694
265765
  configureTeamContext(teamId, orgMode) {
265695
265766
  this.teamId = String(teamId || "").trim();
@@ -265749,7 +265820,7 @@ var AccessTokenGatewayClient = class {
265749
265820
  response = await this.send(request);
265750
265821
  } catch (error2) {
265751
265822
  if (retryMode === "safe" && attempt < this.maxRetries) {
265752
- const delay = this.retryBaseDelayMs * 2 ** attempt;
265823
+ const delay = this.retryDelayMs(attempt);
265753
265824
  attempt += 1;
265754
265825
  await this.sleepImpl(delay);
265755
265826
  continue;
@@ -265761,7 +265832,7 @@ var AccessTokenGatewayClient = class {
265761
265832
  const innerStatus = detectInnerError(okBody);
265762
265833
  if (innerStatus !== null) {
265763
265834
  if (retryMode === "safe" && isTransientGatewayError(innerStatus, okBody) && attempt < this.maxRetries) {
265764
- const delay = this.retryBaseDelayMs * 2 ** attempt;
265835
+ const delay = this.retryDelayMs(attempt);
265765
265836
  attempt += 1;
265766
265837
  await this.sleepImpl(delay);
265767
265838
  continue;
@@ -265786,7 +265857,10 @@ var AccessTokenGatewayClient = class {
265786
265857
  throw this.toHttpError(request, response, retryBody);
265787
265858
  }
265788
265859
  if (retryMode === "safe" && isTransientGatewayError(response.status, body2) && attempt < this.maxRetries) {
265789
- const delay = this.retryBaseDelayMs * 2 ** attempt;
265860
+ const delay = this.retryDelayMs(
265861
+ attempt,
265862
+ parseRetryAfterMs2(response.headers.get("retry-after"))
265863
+ );
265790
265864
  attempt += 1;
265791
265865
  await this.sleepImpl(delay);
265792
265866
  continue;
@@ -265794,6 +265868,18 @@ var AccessTokenGatewayClient = class {
265794
265868
  throw this.toHttpError(request, response, body2);
265795
265869
  }
265796
265870
  }
265871
+ /**
265872
+ * Full-jitter backoff (uniform in [0, min(cap, base * 2^attempt))) so
265873
+ * concurrent CI runners that fail together never retry in lockstep against
265874
+ * the shared gateway. A server-sent Retry-After beats the heuristic: it is
265875
+ * authoritative backpressure, honored verbatim (capped by the ceiling).
265876
+ */
265877
+ retryDelayMs(attempt, retryAfterMs) {
265878
+ if (retryAfterMs !== void 0) {
265879
+ return Math.min(this.retryMaxDelayMs, retryAfterMs);
265880
+ }
265881
+ return fullJitterDelayMs(attempt, this.retryBaseDelayMs, this.retryMaxDelayMs, this.randomImpl);
265882
+ }
265797
265883
  /**
265798
265884
  * The success path reads the body to inspect for an inner error, which
265799
265885
  * consumes the stream. Hand callers a fresh Response over the buffered text so
@@ -266531,6 +266617,9 @@ function createTelemetryContext(options) {
266531
266617
  var import_node_fs3 = require("node:fs");
266532
266618
  var import_node_path3 = require("node:path");
266533
266619
  function resolveActionVersion2() {
266620
+ if (false) {
266621
+ return void 0;
266622
+ }
266534
266623
  try {
266535
266624
  const raw = (0, import_node_fs3.readFileSync)((0, import_node_path3.join)(__dirname, "..", "package.json"), "utf8");
266536
266625
  return JSON.parse(raw).version ?? "unknown";
@@ -299330,940 +299419,6 @@ function getPositionFromMatch(match) {
299330
299419
  }
299331
299420
 
299332
299421
  // 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
299422
  var CURRENCY = {
300268
299423
  cent: "\xA2",
300269
299424
  pound: "\xA3",
@@ -300281,106 +299436,6 @@ var CURRENCY = {
300281
299436
  yuan: "\xA5",
300282
299437
  cedil: "\xB8"
300283
299438
  };
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
299439
  var XML = {
300385
299440
  amp: "&",
300386
299441
  apos: "'",
@@ -301024,7 +300079,7 @@ var XmlNode = class {
301024
300079
  }
301025
300080
  };
301026
300081
 
301027
- // node_modules/xml-naming/src/index.js
300082
+ // node_modules/fast-xml-parser/node_modules/xml-naming/src/index.js
301028
300083
  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
300084
  var nameChar10 = nameStartChar10 + "\\-\\.\\d\xB7\u0300-\u036F\u203F-\u2040";
301030
300085
  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 +300098,14 @@ var buildRegexes = (startChar, char, flags = "") => {
301043
300098
  };
301044
300099
  var regexes10 = buildRegexes(nameStartChar10, nameChar10);
301045
300100
  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);
300101
+ var nameStartCharAscii = ":A-Za-z_";
300102
+ var nameCharAscii = nameStartCharAscii + "\\-\\.\\d";
300103
+ var regexesAscii = buildRegexes(nameStartCharAscii, nameCharAscii);
300104
+ var getRegexes = (xmlVersion = "1.0", asciiOnly = false) => {
300105
+ if (asciiOnly) return regexesAscii;
300106
+ return xmlVersion === "1.1" ? regexes11 : regexes10;
300107
+ };
300108
+ var qName = (str, { xmlVersion = "1.0", asciiOnly = false } = {}) => getRegexes(xmlVersion, asciiOnly).qName.test(str);
301048
300109
 
301049
300110
  // node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js
301050
300111
  var DocTypeReader = class {
@@ -302206,17 +301267,16 @@ var Matcher = class {
302206
301267
  this.path[this.path.length - 1].values = void 0;
302207
301268
  }
302208
301269
  const currentLevel = this.path.length;
302209
- if (!this.siblingStacks[currentLevel]) {
302210
- this.siblingStacks[currentLevel] = /* @__PURE__ */ new Map();
301270
+ let level = this.siblingStacks[currentLevel];
301271
+ if (!level) {
301272
+ level = { counts: /* @__PURE__ */ new Map(), total: 0 };
301273
+ this.siblingStacks[currentLevel] = level;
302211
301274
  }
302212
- const siblings = this.siblingStacks[currentLevel];
302213
301275
  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);
301276
+ const counter = level.counts.get(siblingKey) || 0;
301277
+ const position = level.total;
301278
+ level.counts.set(siblingKey, counter + 1);
301279
+ level.total++;
302220
301280
  const node = {
302221
301281
  tag: tagName,
302222
301282
  position,
@@ -302525,7 +301585,7 @@ var Matcher = class {
302525
301585
  snapshot() {
302526
301586
  return {
302527
301587
  path: this.path.map((node) => ({ ...node })),
302528
- siblingStacks: this.siblingStacks.map((map) => new Map(map)),
301588
+ siblingStacks: this.siblingStacks.map((level) => level ? { counts: new Map(level.counts), total: level.total } : level),
302529
301589
  keptAttrs: this._keptAttrs.map((entry) => ({ ...entry }))
302530
301590
  };
302531
301591
  }
@@ -302536,7 +301596,7 @@ var Matcher = class {
302536
301596
  restore(snapshot) {
302537
301597
  this._pathStringCache = null;
302538
301598
  this.path = snapshot.path.map((node) => ({ ...node }));
302539
- this.siblingStacks = snapshot.siblingStacks.map((map) => new Map(map));
301599
+ this.siblingStacks = snapshot.siblingStacks.map((level) => level ? { counts: new Map(level.counts), total: level.total } : level);
302540
301600
  this._keptAttrs = (snapshot.keptAttrs || []).map((entry) => ({ ...entry }));
302541
301601
  }
302542
301602
  /**
@@ -302874,27 +301934,6 @@ var SQL_PATTERNS = [
302874
301934
  ];
302875
301935
  var sql_default = SQL_PATTERNS;
302876
301936
 
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
301937
  // node_modules/is-unsafe/src/contexts/shell.js
302899
301938
  var SHELL_PATTERNS = [
302900
301939
  {
@@ -303206,8 +302245,38 @@ var LOG_PATTERNS = [
303206
302245
  ];
303207
302246
  var log_default = LOG_PATTERNS;
303208
302247
 
303209
- // node_modules/is-unsafe/src/registry.js
303210
- var CONTEXT_REGISTRY = {
302248
+ // node_modules/is-unsafe/src/contexts/sql-strict.js
302249
+ var SQL_STRICT_EXTRA = [
302250
+ {
302251
+ id: "sql-line-comment",
302252
+ description: "SQL line comment: -- followed by whitespace or end of string",
302253
+ pattern: /--(?:\s|$)/
302254
+ },
302255
+ {
302256
+ id: "sql-stacked-query",
302257
+ description: "Stacked queries: semicolon immediately followed by a SQL keyword",
302258
+ pattern: /;\s{0,10}(?:SELECT|INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|EXEC)\b/i
302259
+ },
302260
+ {
302261
+ id: "sql-hex-encoding",
302262
+ description: "Hex-encoded string injection: 0x41414141 style (MySQL)",
302263
+ pattern: /\b0x[0-9a-f]{4,}/i
302264
+ }
302265
+ ];
302266
+ var SQL_STRICT_PATTERNS = [...sql_default, ...SQL_STRICT_EXTRA];
302267
+ var sql_strict_default = SQL_STRICT_PATTERNS;
302268
+
302269
+ // node_modules/is-unsafe/src/index.js
302270
+ html_default.label = "HTML";
302271
+ xml_default.label = "XML";
302272
+ svg_default.label = "SVG";
302273
+ sql_default.label = "SQL";
302274
+ sql_strict_default.label = "SQL-STRICT";
302275
+ shell_default.label = "SHELL";
302276
+ redos_default.label = "REDOS";
302277
+ nosql_default.label = "NOSQL";
302278
+ log_default.label = "LOG";
302279
+ var VALID_CONTEXTS = Object.freeze({
303211
302280
  HTML: html_default,
303212
302281
  XML: xml_default,
303213
302282
  SVG: svg_default,
@@ -303217,13 +302286,7 @@ var CONTEXT_REGISTRY = {
303217
302286
  REDOS: redos_default,
303218
302287
  NOSQL: nosql_default,
303219
302288
  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
302289
+ });
303227
302290
  function assertString(value) {
303228
302291
  if (typeof value !== "string") {
303229
302292
  throw new TypeError(
@@ -303233,36 +302296,35 @@ function assertString(value) {
303233
302296
  }
303234
302297
  function assertContext(context) {
303235
302298
  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
302299
  if (Array.isArray(context)) {
303245
302300
  if (context.length === 0) {
303246
- throw new TypeError("is-unsafe: context array must not be empty");
302301
+ throw new TypeError("is-unsafe: context must not be an empty array");
303247
302302
  }
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
- );
302303
+ if (Array.isArray(context[0])) {
302304
+ for (const list of context) {
302305
+ if (!Array.isArray(list) || list.length === 0) {
302306
+ throw new TypeError(
302307
+ "is-unsafe: each context in the array must be a non-empty pattern array (PatternList)"
302308
+ );
302309
+ }
303253
302310
  }
303254
302311
  }
303255
302312
  return;
303256
302313
  }
303257
302314
  throw new TypeError(
303258
- `is-unsafe: second argument must be a context string, array of context strings, or RegExp. Got: ${typeof context}`
302315
+ `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
302316
  );
303260
302317
  }
303261
- function matchContext(value, contextName) {
303262
- const patterns = registry_default[contextName];
303263
- for (const rule of patterns) {
302318
+ function normalise(context) {
302319
+ if (context instanceof RegExp) return { lists: null, regex: context };
302320
+ if (Array.isArray(context[0])) return { lists: context, regex: null };
302321
+ return { lists: [context], regex: null };
302322
+ }
302323
+ function matchList(value, list) {
302324
+ const label = list.label ?? "CUSTOM";
302325
+ for (const rule of list) {
303264
302326
  if (rule.pattern.test(value)) {
303265
- return { context: contextName, id: rule.id, description: rule.description, pattern: rule.pattern };
302327
+ return { context: label, id: rule.id, description: rule.description, pattern: rule.pattern };
303266
302328
  }
303267
302329
  }
303268
302330
  return null;
@@ -303270,14 +302332,10 @@ function matchContext(value, contextName) {
303270
302332
  function isUnsafe(value, context) {
303271
302333
  assertString(value);
303272
302334
  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;
302335
+ const { lists, regex } = normalise(context);
302336
+ if (regex) return regex.test(value);
302337
+ for (const list of lists) {
302338
+ if (matchList(value, list) !== null) return true;
303281
302339
  }
303282
302340
  return false;
303283
302341
  }
@@ -303326,6 +302384,7 @@ var OrderedObjParser = class {
303326
302384
  this.ignoreAttributesFn = getIgnoreAttributesFn(this.options.ignoreAttributes);
303327
302385
  this.entityExpansionCount = 0;
303328
302386
  this.currentExpandedLength = 0;
302387
+ this.doctypefound = false;
303329
302388
  let namedEntities = { ...XML };
303330
302389
  if (this.options.entityDecoder) {
303331
302390
  this.entityDecoder = this.options.entityDecoder;
@@ -303343,7 +302402,7 @@ var OrderedObjParser = class {
303343
302402
  // onExternalEntity: (name, value) => isUnsafe(value) ? 'block' : 'allow',
303344
302403
  onInputEntity: (name, value) => (
303345
302404
  //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
302405
+ isUnsafe(value, [html_default, xml_default]) ? ENTITY_ACTION.BLOCK : ENTITY_ACTION.ALLOW
303347
302406
  )
303348
302407
  //postCheck: resolved => resolved
303349
302408
  });
@@ -303477,6 +302536,7 @@ var parseXml = function(xmlData) {
303477
302536
  this.entityDecoder.reset();
303478
302537
  this.entityExpansionCount = 0;
303479
302538
  this.currentExpandedLength = 0;
302539
+ this.doctypefound = false;
303480
302540
  const options = this.options;
303481
302541
  const docTypeReader = new DocTypeReader(options.processEntities);
303482
302542
  const xmlLen = xmlData.length;
@@ -303539,6 +302599,8 @@ var parseXml = function(xmlData) {
303539
302599
  }
303540
302600
  i = endIndex;
303541
302601
  } else if (c1 === 33 && xmlData.charCodeAt(i + 2) === 68) {
302602
+ if (this.doctypefound) throw new Error("Multiple DOCTYPE declarations found.");
302603
+ this.doctypefound = true;
303542
302604
  const result = docTypeReader.readDocType(xmlData, i);
303543
302605
  this.entityDecoder.addInputEntities(result.entities);
303544
302606
  i = result.i;
@@ -312913,8 +311975,8 @@ function resolveInputs(env = process.env) {
312913
311975
  breakingSummaryPath: getInput2("breaking-summary-path", env),
312914
311976
  breakingLogPath: getInput2("breaking-log-path", env),
312915
311977
  governanceMappingJson: parseGovernanceMappingJson(getInput2("governance-mapping-json", env)),
312916
- postmanApiKey: getInput2("postman-api-key", env) ?? "",
312917
- postmanAccessToken: getInput2("postman-access-token", env),
311978
+ postmanApiKey: getInput2("postman-api-key", env) || env.POSTMAN_API_KEY || "",
311979
+ postmanAccessToken: getInput2("postman-access-token", env) || env.POSTMAN_ACCESS_TOKEN,
312918
311980
  credentialPreflight: parseEnumInput(
312919
311981
  "credential-preflight",
312920
311982
  getInput2("credential-preflight", env),
@@ -313073,8 +312135,8 @@ function readActionInputs(actionCore) {
313073
312135
  if (specUrl && specPath) {
313074
312136
  throw new Error("Provide either spec-url or spec-path, not both.");
313075
312137
  }
313076
- const postmanApiKey = optionalInput(actionCore, "postman-api-key") ?? "";
313077
- const postmanAccessToken = optionalInput(actionCore, "postman-access-token");
312138
+ const postmanApiKey = optionalInput(actionCore, "postman-api-key") || process.env.POSTMAN_API_KEY || "";
312139
+ const postmanAccessToken = optionalInput(actionCore, "postman-access-token") || process.env.POSTMAN_ACCESS_TOKEN;
313078
312140
  const githubToken = optionalInput(actionCore, "github-token") || process.env.GITHUB_TOKEN;
313079
312141
  const ghFallbackToken = optionalInput(actionCore, "gh-fallback-token") || process.env.GH_FALLBACK_TOKEN;
313080
312142
  if (postmanApiKey) actionCore.setSecret(postmanApiKey);