@agent-cards/sdk 0.24.1 → 0.24.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  // @ts-nocheck
2
2
  // Generated from @agent-cards/payment-core. Do not edit.
3
- // artifact-sha256: 6c0e945e1d49960ab9a1af9cdcfc73ca013e927dda8e75bed8f1a19d39e81d3f
3
+ // artifact-sha256: 90e78fe2563fa4e058ffb098ef6a1354baffee49d6d73fc52018b2700683b755
4
4
  // src/card-number-key.js
5
5
  var CARD_NUMBER_KEY = /^(number|card_number|cardnumber|cardNum|card_num|pan)$/i;
6
6
  // src/json-path.js
@@ -365,8 +365,8 @@ var CONTROL = /[\u0000-\u001f\u007f]/;
365
365
  var cardLikeName = (name) => (name.match(/[0-9]/g) ?? []).length >= 12;
366
366
  var record3 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
367
367
  var sameKeys = (value, keys) => {
368
- const own23 = Object.keys(value);
369
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
368
+ const own24 = Object.keys(value);
369
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
370
370
  };
371
371
  var refuse4 = (code) => Object.freeze({ verdict: "refuse", code });
372
372
  var CARD4 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
@@ -784,8 +784,8 @@ var PADDLE_TOKENEX_PSP = "paddle_tokenex";
784
784
  var PADDLE_TOKENEX_FACT_KEYS = /* @__PURE__ */ Object.freeze(["card_first_six", "card_last_four", "expiry_month", "expiry_year", "card_brand"]);
785
785
  var record4 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
786
786
  var sameKeys2 = (value, keys) => {
787
- const own23 = Object.keys(value);
788
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
787
+ const own24 = Object.keys(value);
788
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
789
789
  };
790
790
  var refuse7 = (code) => Object.freeze({ verdict: "refuse", code });
791
791
  var CARD6 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
@@ -1274,8 +1274,8 @@ var TEXT_LIMIT = 256;
1274
1274
  var CONTROL4 = /[\u0000-\u001f\u007f]/;
1275
1275
  var record6 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
1276
1276
  var sameKeys3 = (value, keys) => {
1277
- const own23 = Object.keys(value);
1278
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
1277
+ const own24 = Object.keys(value);
1278
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
1279
1279
  };
1280
1280
  var plainText = (value) => typeof value === "string" && value.length <= TEXT_LIMIT && !CONTROL4.test(value) && (value.match(/[0-9]/g) ?? []).length < 12;
1281
1281
  var refuse9 = (code) => Object.freeze({ verdict: "refuse", code });
@@ -1477,8 +1477,8 @@ var EXPIRATION = /^[0-9]{2}(?:0[1-9]|1[0-2])$/;
1477
1477
  var CARD_PAYMENT = "PAYMENT_CARD";
1478
1478
  var record8 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
1479
1479
  var sameKeys4 = (value, keys) => {
1480
- const own23 = Object.keys(value);
1481
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
1480
+ const own24 = Object.keys(value);
1481
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
1482
1482
  };
1483
1483
  var refuse11 = (code) => Object.freeze({ verdict: "refuse", code });
1484
1484
  var CARD10 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
@@ -1708,8 +1708,8 @@ var LOCALE = /^[a-z]{2}(?:-[A-Za-z]{2,4})?$/;
1708
1708
  var PAN_LIKE3 = /(?:[0-9][ _.:-]*){12,}/;
1709
1709
  var record9 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
1710
1710
  var sameKeys5 = (value, keys) => {
1711
- const own23 = Object.keys(value);
1712
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
1711
+ const own24 = Object.keys(value);
1712
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
1713
1713
  };
1714
1714
  var refuse13 = (code) => Object.freeze({ verdict: "refuse", code });
1715
1715
  var CARD12 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
@@ -2759,8 +2759,8 @@ var TEXT_LIMIT3 = 256;
2759
2759
  var CONTROL7 = /[\u0000-\u001f\u007f]/;
2760
2760
  var record13 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
2761
2761
  var sameKeys7 = (value, keys) => {
2762
- const own23 = Object.keys(value);
2763
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
2762
+ const own24 = Object.keys(value);
2763
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
2764
2764
  };
2765
2765
  var plainText3 = (value) => typeof value === "string" && value.length <= TEXT_LIMIT3 && !CONTROL7.test(value) && (value.match(/[0-9]/g) ?? []).length < 12;
2766
2766
  var refuse19 = (code) => Object.freeze({ verdict: "refuse", code });
@@ -3465,8 +3465,8 @@ var HOSTNAME = /^(?=.{1,253}$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](
3465
3465
  var PUBLISHABLE_KEY = /^[A-Za-z0-9]{16,64}$/;
3466
3466
  var record18 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
3467
3467
  var sameKeys8 = (value, keys) => {
3468
- const own23 = Object.keys(value);
3469
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
3468
+ const own24 = Object.keys(value);
3469
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
3470
3470
  };
3471
3471
  var refuse24 = (code) => Object.freeze({ verdict: "refuse", code });
3472
3472
  var CARD23 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
@@ -4157,8 +4157,8 @@ var LONG_TEXT_LIMIT = BODY_LIMIT25;
4157
4157
  var record22 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
4158
4158
  var owns6 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
4159
4159
  var sameKeys9 = (value, keys) => {
4160
- const own23 = Object.keys(value);
4161
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
4160
+ const own24 = Object.keys(value);
4161
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
4162
4162
  };
4163
4163
  var exact3 = (pattern, value) => typeof value === "string" && pattern.test(value);
4164
4164
  var printable3 = (text11) => [...text11].every((character) => {
@@ -4557,8 +4557,8 @@ var POSTAL_CODE4 = /^[A-Za-z0-9 -]{0,16}$/;
4557
4557
  var CIPHERTEXT_B64 = /^[A-Za-z0-9+/]{341}[AQgw]==$/;
4558
4558
  var record24 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
4559
4559
  var sameKeys11 = (value, keys) => {
4560
- const own23 = Object.keys(value);
4561
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
4560
+ const own24 = Object.keys(value);
4561
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
4562
4562
  };
4563
4563
  var refuse29 = (code) => Object.freeze({ verdict: "refuse", code });
4564
4564
  var failed = (code) => (
@@ -5890,12 +5890,12 @@ function membersRefusal(root) {
5890
5890
  const pending = [[root, ""]];
5891
5891
  while (pending.length > 0) {
5892
5892
  const [node, path] = pending.pop();
5893
- const own23 = path === "" ? TRANSACTION_MEMBERS : owns7(RECORD_MEMBERS, path) ? RECORD_MEMBERS[path] : null;
5893
+ const own24 = path === "" ? TRANSACTION_MEMBERS : owns7(RECORD_MEMBERS, path) ? RECORD_MEMBERS[path] : null;
5894
5894
  for (const [key, child] of Object.entries(node)) {
5895
5895
  const at = Array.isArray(node) ? path : path === "" ? key : `${path}.${key}`;
5896
5896
  if (at === "checkoutCreditCard")
5897
5897
  continue;
5898
- if (own23 !== null && !own23.includes(key))
5898
+ if (own24 !== null && !own24.includes(key))
5899
5899
  return true;
5900
5900
  if (TEXT_RECORDS.includes(path) && child !== null && typeof child !== "string")
5901
5901
  return true;
@@ -6262,6 +6262,96 @@ var aurus_default = /* @__PURE__ */ registerProcessor({
6262
6262
  bodyGate: (url, body) => url !== void 0 && !isAurusTokenUrl(url) ? refuse37("aurus_url_refused") : aurusBodyVerdict(body),
6263
6263
  limitations: ["The card frame seals the card in the page under a public key its own script carries; the cardholder's device does not seal for Aurus yet, so a held request opens no approval that pays."]
6264
6264
  });
6265
+ // src/processors/bigcommerce.js
6266
+ var BIGCOMMERCE_PSP = "bigcommerce";
6267
+ var BIGCOMMERCE_OPERATION = "bigcommerce.card_request";
6268
+ var BIGCOMMERCE_PAYMENTS_URL = "https://payments.bigcommerce.com/api/public/v1/orders/payments";
6269
+ var BODY_LIMIT36 = 65536;
6270
+ var CARD_KEYS16 = /* @__PURE__ */ new Set([
6271
+ "account_name",
6272
+ "month",
6273
+ "number",
6274
+ "verification_value",
6275
+ "year",
6276
+ "customer_code",
6277
+ "three_d_secure",
6278
+ "hosted_form_nonce"
6279
+ ]);
6280
+ var OTHER_INSTRUMENTS = /* @__PURE__ */ Object.freeze(["bigpay_token", "credit_card_token", "credit_card_cryptogram"]);
6281
+ var NUMBER8 = /^[0-9]{12,19}$/;
6282
+ var CURRENCY6 = /^[A-Z]{3}$/;
6283
+ var record32 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
6284
+ var own12 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
6285
+ var refuse38 = (code) => Object.freeze({ verdict: "refuse", code });
6286
+ var CARD37 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
6287
+ var CONTINUE13 = /* @__PURE__ */ Object.freeze({ verdict: "continue" });
6288
+ function isBigcommercePaymentsUrl(url) {
6289
+ return url === BIGCOMMERCE_PAYMENTS_URL;
6290
+ }
6291
+ function readBody22(body) {
6292
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT36)
6293
+ return null;
6294
+ try {
6295
+ const parsed = JSON.parse(body);
6296
+ return record32(parsed) && record32(parsed.payment) ? parsed : null;
6297
+ }
6298
+ catch {
6299
+ return null;
6300
+ }
6301
+ }
6302
+ function bigcommerceBodyVerdict(body, url) {
6303
+ if (url !== void 0 && !isBigcommercePaymentsUrl(url))
6304
+ return refuse38("bigcommerce_url_refused");
6305
+ const parsed = readBody22(body);
6306
+ if (!parsed)
6307
+ return refuse38("bigcommerce_body_unsupported");
6308
+ const { payment } = parsed;
6309
+ if (!own12(payment, "credit_card"))
6310
+ return CONTINUE13;
6311
+ const card = payment.credit_card;
6312
+ if (!record32(card) || OTHER_INSTRUMENTS.some((key) => own12(payment, key)) || Object.keys(card).some((key) => !CARD_KEYS16.has(key)) || typeof card.number !== "string" || !NUMBER8.test(card.number)) {
6313
+ return refuse38("bigcommerce_body_unsupported");
6314
+ }
6315
+ if (payment.vault_payment_instrument === true)
6316
+ return refuse38("bigcommerce_keep_on_file");
6317
+ return CARD37;
6318
+ }
6319
+ function bigcommerceAmount(template) {
6320
+ const parsed = record32(template) ? readBody22(template.body) : null;
6321
+ const order = parsed && record32(parsed.order) ? parsed.order : null;
6322
+ const total = order && record32(order.totals) ? order.totals.grand_total : void 0;
6323
+ if (!Number.isSafeInteger(total) || total <= 0 || typeof order.currency !== "string" || !CURRENCY6.test(order.currency))
6324
+ return null;
6325
+ return { amountCents: total, currency: order.currency.toLowerCase() };
6326
+ }
6327
+ var bigcommerce_default = /* @__PURE__ */ registerProcessor({
6328
+ psp: BIGCOMMERCE_PSP,
6329
+ definitions: [
6330
+ {
6331
+ psp: "bigcommerce",
6332
+ // The card request above. One host serves every BigCommerce store, test and live alike, so no sandbox host is
6333
+ // marked. Ships dark: served only to a client that declares `bigcommerce_card_form`, for a company the backend's
6334
+ // processor gate turns BigCommerce on for. `(?![\w/.%-])` ends the path for a consumer that tests `match`
6335
+ // unanchored; the exact-URL rule holds the rest.
6336
+ capability: "bigcommerce_card_form",
6337
+ match: "payments\\.bigcommerce\\.com/api/public/v1/orders/payments(?![\\w/.%-])",
6338
+ hosts: ["^payments\\.bigcommerce\\.com$"],
6339
+ encoding: "json",
6340
+ // The order's payment token and the JSON Accept. Origin, Referer and cookies never ride.
6341
+ passthroughHeaders: ["^authorization$", "^accept$"],
6342
+ jsonCardFields: [["payment", "credit_card", "number"]],
6343
+ // A payment with no new card on the same URL continues untouched (bigcommerceBodyVerdict says which).
6344
+ passWithoutCard: "payments\\.bigcommerce\\.com/api/public/v1/orders/payments"
6345
+ }
6346
+ ],
6347
+ // The request charges the store's gateway at once, so only the cardholder's device sends it, after a person approves.
6348
+ refusedOperations: [BIGCOMMERCE_OPERATION],
6349
+ // Not surveyed: reading a BigCommerce payment back takes the store's own API credentials, which Agentcard never holds.
6350
+ settlementReadback: "not_surveyed",
6351
+ exactUrl: isBigcommercePaymentsUrl,
6352
+ bodyGate: (url, body) => bigcommerceBodyVerdict(body, url),
6353
+ amount: bigcommerceAmount
6354
+ });
6265
6355
  // src/processors/bluesnap.js
6266
6356
  var BLUESNAP_PSP = "bluesnap";
6267
6357
  var BLUESNAP_OPERATION = "bluesnap.card_request";
@@ -6269,16 +6359,16 @@ var BLUESNAP_HOSTS = /* @__PURE__ */ Object.freeze({ 1: "ws1.bluesnap.com", 2: "
6269
6359
  var BLUESNAP_SANDBOX_HOST = "sandpay.bluesnap.com";
6270
6360
  var BLUESNAP_CARD_KEYS = /* @__PURE__ */ Object.freeze(["cvv", "ccNumber", "expDate"]);
6271
6361
  var BLUESNAP_LEG_KEYS = /* @__PURE__ */ Object.freeze(["cvv", "expDate"]);
6272
- var BODY_LIMIT36 = 1024;
6362
+ var BODY_LIMIT37 = 1024;
6273
6363
  var TOKEN_URL2 = /^https:\/\/(ws1|ws2|sandpay)\.bluesnap\.com\/services\/2\/payment-fields-tokens\/([0-9a-f]{64}_[12]?)$/;
6274
6364
  var CARD_NUMBER18 = /^[0-9]{12,19}$/;
6275
6365
  var SECURITY_CODE22 = /^[0-9]{3,4}$/;
6276
6366
  var EXPIRY3 = /^(?:0[1-9]|1[0-2])\/20[0-9]{2}$/;
6277
6367
  var SAVED_CARD_KEYS2 = ["last4Digits", "lastFourDigits", "ccType"];
6278
- var record32 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
6279
- var own12 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
6280
- var refuse38 = (code) => Object.freeze({ verdict: "refuse", code });
6281
- var CARD37 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
6368
+ var record33 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
6369
+ var own13 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
6370
+ var refuse39 = (code) => Object.freeze({ verdict: "refuse", code });
6371
+ var CARD38 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
6282
6372
  var LEG = /* @__PURE__ */ Object.freeze({ verdict: "continue" });
6283
6373
  function bluesnapTokenUrl(url) {
6284
6374
  const match = typeof url === "string" ? TOKEN_URL2.exec(url) : null;
@@ -6290,30 +6380,30 @@ function bluesnapTokenUrl(url) {
6290
6380
  function isBluesnapTokenUrl(url) {
6291
6381
  return bluesnapTokenUrl(url) !== null;
6292
6382
  }
6293
- function readBody22(body) {
6294
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT36)
6383
+ function readBody23(body) {
6384
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT37)
6295
6385
  return null;
6296
6386
  try {
6297
6387
  const value = JSON.parse(body);
6298
- return record32(value) && JSON.stringify(value) === body ? value : null;
6388
+ return record33(value) && JSON.stringify(value) === body ? value : null;
6299
6389
  }
6300
6390
  catch {
6301
6391
  return null;
6302
6392
  }
6303
6393
  }
6304
6394
  function bluesnapBodyVerdict(body) {
6305
- const value = readBody22(body);
6395
+ const value = readBody23(body);
6306
6396
  if (value === null)
6307
- return refuse38("bluesnap_body_unsupported");
6397
+ return refuse39("bluesnap_body_unsupported");
6308
6398
  const keys = Object.keys(value);
6309
6399
  if (keys.some((key) => SAVED_CARD_KEYS2.includes(key)))
6310
- return refuse38(own12(value, "ccNumber") ? "bluesnap_body_unsupported" : "bluesnap_saved_card");
6400
+ return refuse39(own13(value, "ccNumber") ? "bluesnap_body_unsupported" : "bluesnap_saved_card");
6311
6401
  if (keys.length === 0 || keys.some((key, i) => !BLUESNAP_CARD_KEYS.includes(key) || i > 0 && BLUESNAP_CARD_KEYS.indexOf(keys[i - 1]) >= BLUESNAP_CARD_KEYS.indexOf(key))) {
6312
- return refuse38("bluesnap_body_unsupported");
6402
+ return refuse39("bluesnap_body_unsupported");
6313
6403
  }
6314
- if (own12(value, "ccNumber") && !(typeof value.ccNumber === "string" && CARD_NUMBER18.test(value.ccNumber)) || own12(value, "cvv") && !(typeof value.cvv === "string" && SECURITY_CODE22.test(value.cvv)) || own12(value, "expDate") && !(typeof value.expDate === "string" && EXPIRY3.test(value.expDate)))
6315
- return refuse38("bluesnap_body_unsupported");
6316
- return own12(value, "ccNumber") ? CARD37 : LEG;
6404
+ if (own13(value, "ccNumber") && !(typeof value.ccNumber === "string" && CARD_NUMBER18.test(value.ccNumber)) || own13(value, "cvv") && !(typeof value.cvv === "string" && SECURITY_CODE22.test(value.cvv)) || own13(value, "expDate") && !(typeof value.expDate === "string" && EXPIRY3.test(value.expDate)))
6405
+ return refuse39("bluesnap_body_unsupported");
6406
+ return own13(value, "ccNumber") ? CARD38 : LEG;
6317
6407
  }
6318
6408
  var bluesnap_default = /* @__PURE__ */ registerProcessor({
6319
6409
  psp: BLUESNAP_PSP,
@@ -6417,7 +6507,7 @@ var REQUIRED = Object.freeze([
6417
6507
  "ekashu_failure_url",
6418
6508
  "ekashu_callback_success_url"
6419
6509
  ]);
6420
- var CARD_KEYS16 = Object.freeze([
6510
+ var CARD_KEYS17 = Object.freeze([
6421
6511
  "ekashu_card_number",
6422
6512
  "ekashu_expires_end_month",
6423
6513
  "ekashu_expires_end_year",
@@ -6619,7 +6709,7 @@ var CURRENCIES2 = Object.freeze({ EUR: "eur" });
6619
6709
  var MAX_URL = 512;
6620
6710
  var MAX_ENTRY3 = 8 * 1024;
6621
6711
  var MAX_VALUE = 256;
6622
- var own13 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
6712
+ var own14 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
6623
6713
  var field2 = (name, reason) => ({ ok: false, code: "hosted_form_field_refused", field: name, reason });
6624
6714
  function cardlinkVposEntryHost(raw) {
6625
6715
  if (typeof raw !== "string" || raw.length > MAX_URL || raw.includes("?") || raw.includes("#"))
@@ -6631,7 +6721,7 @@ function cardlinkVposEntryHost(raw) {
6631
6721
  catch {
6632
6722
  return null;
6633
6723
  }
6634
- if (url.href !== raw || url.protocol !== "https:" || url.port || url.username || url.password || !own13(CARDLINK_VPOS_HOSTS, url.hostname) || url.pathname !== CARDLINK_VPOS_ENTRY_PATH)
6724
+ if (url.href !== raw || url.protocol !== "https:" || url.port || url.username || url.password || !own14(CARDLINK_VPOS_HOSTS, url.hostname) || url.pathname !== CARDLINK_VPOS_ENTRY_PATH)
6635
6725
  return null;
6636
6726
  return url.hostname;
6637
6727
  }
@@ -6674,7 +6764,7 @@ function cardlinkVposMerchant(mid, vposHost, merchants = CARDLINK_VPOS_MERCHANTS
6674
6764
  function entryAmount(values) {
6675
6765
  const amount2 = values.get("orderAmount");
6676
6766
  const code = values.get("currency");
6677
- const currency = typeof code === "string" && own13(CURRENCIES2, code) ? CURRENCIES2[code] : null;
6767
+ const currency = typeof code === "string" && own14(CURRENCIES2, code) ? CURRENCIES2[code] : null;
6678
6768
  if (!currency || typeof amount2 !== "string" || !/^(?:0|[1-9]\d{0,11})(?:\.\d{1,2})?$/.test(amount2))
6679
6769
  return null;
6680
6770
  const [whole2, fraction = ""] = amount2.split(".");
@@ -6729,7 +6819,7 @@ function checkCardlinkVposEntry(body, { url = null, merchants = CARDLINK_VPOS_ME
6729
6819
  return field2("payMethod", /^iris$/i.test(method) ? "not_a_card_payment" : "special_flow");
6730
6820
  const amount2 = entryAmount(values);
6731
6821
  if (!amount2)
6732
- return field2(own13(CURRENCIES2, values.get("currency")) ? "orderAmount" : "currency", "malformed");
6822
+ return field2(own14(CURRENCIES2, values.get("currency")) ? "orderAmount" : "currency", "malformed");
6733
6823
  if (!/^\d{1,30}$/.test(values.get("mid")))
6734
6824
  return field2("mid", "malformed");
6735
6825
  if (!/^[A-Za-z0-9]{1,50}$/.test(values.get("orderid")))
@@ -6766,16 +6856,16 @@ var CARDLINK_VPOS_TDS2_FIELDS = Object.freeze([
6766
6856
  ]);
6767
6857
  var PAGE_FIELDS = Object.freeze(["trid", "st", "payStep", "cmd", "startbonus", "bonusdata"]);
6768
6858
  var WALLET_FIELDS2 = Object.freeze(["walletId", "applePayResponse"]);
6769
- var CARD38 = Object.freeze({ number: "card.pan", holder: "card.holderName", month: "card.expiryMonth", year: "card.expiryYear", cvc: "card.cvv" });
6770
- var TEXT_CONTROLS = /* @__PURE__ */ new Set([CARD38.number, CARD38.holder, CARD38.cvc]);
6771
- var SELECT_CONTROLS = /* @__PURE__ */ new Set([CARD38.month, CARD38.year]);
6859
+ var CARD39 = Object.freeze({ number: "card.pan", holder: "card.holderName", month: "card.expiryMonth", year: "card.expiryYear", cvc: "card.cvv" });
6860
+ var TEXT_CONTROLS = /* @__PURE__ */ new Set([CARD39.number, CARD39.holder, CARD39.cvc]);
6861
+ var SELECT_CONTROLS = /* @__PURE__ */ new Set([CARD39.month, CARD39.year]);
6772
6862
  var MAX_PAGE3 = 256 * 1024;
6773
6863
  var COOKIE_DOMAINS = Object.freeze({
6774
6864
  "vpos.eurocommerce.gr": "eurocommerce.gr",
6775
6865
  "ecommerce.cardlink.gr": "cardlink.gr",
6776
6866
  "www.alphaecommerce.gr": "alphaecommerce.gr"
6777
6867
  });
6778
- var POST_REQUIRED = Object.freeze(["trid", "st", "cmd", CARD38.number, CARD38.holder, CARD38.month, CARD38.year, CARD38.cvc, "makepayment"]);
6868
+ var POST_REQUIRED = Object.freeze(["trid", "st", "cmd", CARD39.number, CARD39.holder, CARD39.month, CARD39.year, CARD39.cvc, "makepayment"]);
6779
6869
  var POST_EMPTY = Object.freeze(["payStep", "startbonus", "bonusdata", ...WALLET_FIELDS2]);
6780
6870
  var POST_ALLOWED = /* @__PURE__ */ new Set([...POST_REQUIRED, ...POST_EMPTY, "paymentMethod", ...CARDLINK_VPOS_TDS2_FIELDS]);
6781
6871
  var CARDLINK_VPOS_REFUSALS = Object.freeze([
@@ -6905,7 +6995,7 @@ var REQUIRED4 = Object.freeze([
6905
6995
  "CurrencyCode",
6906
6996
  "HashValue"
6907
6997
  ]);
6908
- var CARD_KEYS17 = /* @__PURE__ */ new Set(["cardno", "cardexp", "cardcvv2", "cardholder", "param2", "param4", "cvv2", "epmonth2", "epyear2", "custocp"]);
6998
+ var CARD_KEYS18 = /* @__PURE__ */ new Set(["cardno", "cardexp", "cardcvv2", "cardholder", "param2", "param4", "cvv2", "epmonth2", "epyear2", "custocp"]);
6909
6999
  var SECRET_KEYS = /* @__PURE__ */ new Set(["password"]);
6910
7000
  var STORED_KEYS2 = /* @__PURE__ */ new Set([
6911
7001
  "tokentype",
@@ -6962,7 +7052,7 @@ function checkEghlEntry(body, { url = null, merchants = EGHL_MERCHANTS } = {}) {
6962
7052
  if (value === "")
6963
7053
  continue;
6964
7054
  const folded = key.toLowerCase();
6965
- if (CARD_KEYS17.has(folded))
7055
+ if (CARD_KEYS18.has(folded))
6966
7056
  return field3(key, "card_in_entry");
6967
7057
  if (SECRET_KEYS.has(folded))
6968
7058
  return field3(key, "not_an_entry");
@@ -7094,7 +7184,7 @@ var FRISBII_REFUSED_PATHS = /* @__PURE__ */ Object.freeze({
7094
7184
  "/v1/token/cof/": "frisbii_stored_card_unsupported",
7095
7185
  "/v1/token/create_click_to_pay": "frisbii_click_to_pay_unsupported"
7096
7186
  });
7097
- var BODY_LIMIT37 = 8192;
7187
+ var BODY_LIMIT38 = 8192;
7098
7188
  var URL_LIMIT15 = 256;
7099
7189
  var CARD_NUMBER19 = /^[0-9]{12,19}$/;
7100
7190
  var MONTH19 = /^(?:0[1-9]|1[0-2])$/;
@@ -7138,13 +7228,13 @@ var BROWSER_ORDER = /* @__PURE__ */ Object.freeze([
7138
7228
  "tz"
7139
7229
  ]);
7140
7230
  var LABEL = /^[A-Za-z0-9_-]{1,64}$/;
7141
- var record33 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
7142
- var own14 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7143
- var refuse39 = (code) => Object.freeze({ verdict: "refuse", code });
7144
- var CARD39 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7231
+ var record34 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
7232
+ var own15 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7233
+ var refuse40 = (code) => Object.freeze({ verdict: "refuse", code });
7234
+ var CARD40 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7145
7235
  var text9 = (value, max) => typeof value === "string" && value.length <= max;
7146
7236
  var absentOrNull = (value) => value === void 0 || value === null;
7147
- var inOrder6 = (value, order) => Object.keys(value).every((key) => order.includes(key)) && Object.keys(value).join() === order.filter((key) => own14(value, key)).join();
7237
+ var inOrder6 = (value, order) => Object.keys(value).every((key) => order.includes(key)) && Object.keys(value).join() === order.filter((key) => own15(value, key)).join();
7148
7238
  function frisbiiTokenUrl(url) {
7149
7239
  if (typeof url !== "string" || url.length > URL_LIMIT15 || url.includes("#"))
7150
7240
  return null;
@@ -7155,7 +7245,7 @@ function frisbiiTokenUrl(url) {
7155
7245
  catch {
7156
7246
  return null;
7157
7247
  }
7158
- if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own14(FRISBII_HOSTS, parsed.hostname) || parsed.pathname !== FRISBII_TOKEN_PATH)
7248
+ if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own15(FRISBII_HOSTS, parsed.hostname) || parsed.pathname !== FRISBII_TOKEN_PATH)
7159
7249
  return null;
7160
7250
  const match = /^\?session=([A-Za-z0-9_-]{8,128})$/.exec(parsed.search);
7161
7251
  return match ? Object.freeze({ host: parsed.hostname, brand: FRISBII_HOSTS[parsed.hostname], session: match[1] }) : null;
@@ -7171,7 +7261,7 @@ function frisbiiRefusedFlowUrl(url) {
7171
7261
  catch {
7172
7262
  return null;
7173
7263
  }
7174
- if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own14(FRISBII_HOSTS, parsed.hostname) || !own14(FRISBII_REFUSED_PATHS, parsed.pathname))
7264
+ if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own15(FRISBII_HOSTS, parsed.hostname) || !own15(FRISBII_REFUSED_PATHS, parsed.pathname))
7175
7265
  return null;
7176
7266
  return FRISBII_REFUSED_PATHS[parsed.pathname];
7177
7267
  }
@@ -7185,28 +7275,28 @@ function luhn9(digits4) {
7185
7275
  }
7186
7276
  return sum % 10 === 0;
7187
7277
  }
7188
- function readBody23(body) {
7189
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT37)
7278
+ function readBody24(body) {
7279
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT38)
7190
7280
  return null;
7191
7281
  try {
7192
7282
  const value = JSON.parse(body);
7193
- return record33(value) && JSON.stringify(value) === body ? value : null;
7283
+ return record34(value) && JSON.stringify(value) === body ? value : null;
7194
7284
  }
7195
7285
  catch {
7196
7286
  return null;
7197
7287
  }
7198
7288
  }
7199
7289
  function browserInfo(info) {
7200
- return record33(info) && Object.keys(info).join() === BROWSER_ORDER.join() && info.javascriptEnabled === true && typeof info.javaEnabled === "boolean" && /^size_[0-9]{3}x[0-9]{3}$/.test(info.challengeWindowSize) && [info.colorDepth, info.screenHeight, info.screenWidth].every((n) => Number.isSafeInteger(n) && n >= 0 && n <= 1e5) && Number.isSafeInteger(info.tz) && Math.abs(info.tz) <= 1440;
7290
+ return record34(info) && Object.keys(info).join() === BROWSER_ORDER.join() && info.javascriptEnabled === true && typeof info.javaEnabled === "boolean" && /^size_[0-9]{3}x[0-9]{3}$/.test(info.challengeWindowSize) && [info.colorDepth, info.screenHeight, info.screenWidth].every((n) => Number.isSafeInteger(n) && n >= 0 && n <= 1e5) && Number.isSafeInteger(info.tz) && Math.abs(info.tz) <= 1440;
7201
7291
  }
7202
7292
  function scaBlock(block, target) {
7203
- if (!record33(block) || !inOrder6(block, SCA_ORDER) || !own14(block, "returnUrl") || !own14(block, "tokenBrowserInfo"))
7293
+ if (!record34(block) || !inOrder6(block, SCA_ORDER) || !own15(block, "returnUrl") || !own15(block, "tokenBrowserInfo"))
7204
7294
  return false;
7205
7295
  if (!Number.isSafeInteger(block.amount) || block.amount < 0 || typeof block.currency !== "string" || !/^[A-Z]{3}$/.test(block.currency))
7206
7296
  return false;
7207
7297
  if (!(absentOrNull(block.orderId) || text9(block.orderId, 128)) || !(absentOrNull(block.orderText) || text9(block.orderText, 512)))
7208
7298
  return false;
7209
- if (!(absentOrNull(block.merchantScaData) || record33(block.merchantScaData)))
7299
+ if (!(absentOrNull(block.merchantScaData) || record34(block.merchantScaData)))
7210
7300
  return false;
7211
7301
  if (!text9(block.returnUrl, 2048) || !browserInfo(block.tokenBrowserInfo))
7212
7302
  return false;
@@ -7214,16 +7304,16 @@ function scaBlock(block, target) {
7214
7304
  return back !== null && (target === null || back[1] === target.brand && back[2] === target.session);
7215
7305
  }
7216
7306
  function frisbiiBodyVerdict(body, url) {
7217
- const value = readBody23(body);
7218
- if (value === null || !inOrder6(value, BODY_ORDER) || !BODY_REQUIRED.every((key) => own14(value, key)) || BODY_REFUSED.some((key) => own14(value, key)))
7219
- return refuse39("frisbii_body_unsupported");
7307
+ const value = readBody24(body);
7308
+ if (value === null || !inOrder6(value, BODY_ORDER) || !BODY_REQUIRED.every((key) => own15(value, key)) || BODY_REFUSED.some((key) => own15(value, key)))
7309
+ return refuse40("frisbii_body_unsupported");
7220
7310
  if (value.recurring === true || value.intent === "CHARGE_AND_STORE")
7221
- return refuse39("frisbii_card_on_file");
7311
+ return refuse40("frisbii_card_on_file");
7222
7312
  const target = url === void 0 ? null : frisbiiTokenUrl(url);
7223
7313
  if (url !== void 0 && target === null)
7224
- return refuse39("frisbii_body_unsupported");
7314
+ return refuse40("frisbii_body_unsupported");
7225
7315
  const sound = typeof value.number === "string" && CARD_NUMBER19.test(value.number) && luhn9(value.number) && typeof value.month === "string" && MONTH19.test(value.month) && typeof value.year === "string" && YEAR20.test(value.year) && typeof value.cvv === "string" && SECURITY_CODE23.test(value.cvv) && typeof value.pkey === "string" && IDENTIFIER2.test(value.pkey) && value.recurring === false && (value.cardholder_name === void 0 || text9(value.cardholder_name, 64)) && (value.intent === void 0 || value.intent === "CHARGE") && (absentOrNull(value.recurringAverageAmount) || Number.isSafeInteger(value.recurringAverageAmount) && value.recurringAverageAmount >= 0) && (absentOrNull(value.agreementFilter) || typeof value.agreementFilter === "string" && LABEL.test(value.agreementFilter) || Array.isArray(value.agreementFilter) && value.agreementFilter.length <= 16 && value.agreementFilter.every((entry) => typeof entry === "string" && LABEL.test(entry))) && SCA_RULES.includes(value.strongAuthenticationRule) && (value.tokenStrongAuthenticationRequest === void 0 || scaBlock(value.tokenStrongAuthenticationRequest, target));
7226
- return sound ? CARD39 : refuse39("frisbii_body_unsupported");
7316
+ return sound ? CARD40 : refuse40("frisbii_body_unsupported");
7227
7317
  }
7228
7318
  var frisbii_default = /* @__PURE__ */ registerProcessor({
7229
7319
  psp: FRISBII_PSP,
@@ -7258,8 +7348,8 @@ var frisbii_default = /* @__PURE__ */ registerProcessor({
7258
7348
  return frisbiiBodyVerdict(body);
7259
7349
  const flow = frisbiiRefusedFlowUrl(url);
7260
7350
  if (flow !== null)
7261
- return refuse39(flow);
7262
- return isFrisbiiTokenUrl(url) ? frisbiiBodyVerdict(body, url) : refuse39("frisbii_url_refused");
7351
+ return refuse40(flow);
7352
+ return isFrisbiiTokenUrl(url) ? frisbiiBodyVerdict(body, url) : refuse40("frisbii_url_refused");
7263
7353
  },
7264
7354
  limitations: ["A live Frisbii card goes only to a merchant account a reviewed pin lists, and none is pinned yet."]
7265
7355
  });
@@ -7288,7 +7378,7 @@ var IYZICO_CARD_KEYS = /* @__PURE__ */ Object.freeze([
7288
7378
  "registerConsumerCard",
7289
7379
  "registerCard"
7290
7380
  ]);
7291
- var BODY_LIMIT38 = 4096;
7381
+ var BODY_LIMIT39 = 4096;
7292
7382
  var CARD_NUMBER20 = /^[0-9]{12,19}$/;
7293
7383
  var SECURITY_CODE24 = /^[0-9]{3,4}$/;
7294
7384
  var MONTH20 = /^(?:0?[1-9]|1[0-2])$/;
@@ -7298,8 +7388,8 @@ var CHANNELS = /* @__PURE__ */ Object.freeze(["WEB", "MOBILE_WEB", "MOBILE_IOS",
7298
7388
  var METADATA_KEYS3 = /* @__PURE__ */ Object.freeze(["lightRedesign", "pwiGrowthActionDisabled"]);
7299
7389
  var FLAG = /^[A-Za-z_]{1,16}$/;
7300
7390
  var HOLDER5 = /^[^\x00-\x1f\x7f0-9]{3,100}$/u;
7301
- var record34 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
7302
- var own15 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7391
+ var record35 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
7392
+ var own16 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7303
7393
  var inOrder7 = (value, keys) => {
7304
7394
  let at = 0;
7305
7395
  for (const name of Object.keys(value)) {
@@ -7311,17 +7401,17 @@ var inOrder7 = (value, keys) => {
7311
7401
  }
7312
7402
  return true;
7313
7403
  };
7314
- var refuse40 = (code) => Object.freeze({ verdict: "refuse", code });
7315
- var CARD40 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7404
+ var refuse41 = (code) => Object.freeze({ verdict: "refuse", code });
7405
+ var CARD41 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7316
7406
  function isIyzicoCardUrl(url) {
7317
7407
  return typeof url === "string" && IYZICO_CARD_URLS.includes(url);
7318
7408
  }
7319
- function readBody24(body) {
7320
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT38)
7409
+ function readBody25(body) {
7410
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT39)
7321
7411
  return null;
7322
7412
  try {
7323
7413
  const value = JSON.parse(body);
7324
- return record34(value) && JSON.stringify(value) === body ? value : null;
7414
+ return record35(value) && JSON.stringify(value) === body ? value : null;
7325
7415
  }
7326
7416
  catch {
7327
7417
  return null;
@@ -7333,26 +7423,26 @@ function hundredths(price) {
7333
7423
  return value > 0 ? value : null;
7334
7424
  }
7335
7425
  var holderName2 = (name) => typeof name === "string" && HOLDER5.test(name) && name.trim().split(/\s+/).filter((word) => word.length > 1).length > 1;
7336
- var metadata = (value) => record34(value) && inOrder7(value, METADATA_KEYS3) && Object.values(value).every((flag3) => Array.isArray(flag3) && flag3.length === 1 && typeof flag3[0] === "string" && FLAG.test(flag3[0]));
7426
+ var metadata = (value) => record35(value) && inOrder7(value, METADATA_KEYS3) && Object.values(value).every((flag3) => Array.isArray(flag3) && flag3.length === 1 && typeof flag3[0] === "string" && FLAG.test(flag3[0]));
7337
7427
  function iyzicoBodyVerdict(body) {
7338
- const value = readBody24(body);
7428
+ const value = readBody25(body);
7339
7429
  if (value === null)
7340
- return refuse40("iyzico_body_unsupported");
7430
+ return refuse41("iyzico_body_unsupported");
7341
7431
  const card = value.paymentCard;
7342
- if (record34(card) && (own15(card, "cardToken") || own15(card, "ucsToken") || own15(card, "consumerToken")) && !own15(card, "cardNumber"))
7343
- return refuse40("iyzico_saved_card");
7344
- if (own15(value, "dccPayment") || own15(value, "dccQueryRrn"))
7345
- return refuse40("iyzico_dcc_refused");
7346
- if (own15(value, "gsmNumber") || own15(value, "buyerProtected") && value.buyerProtected !== false || record34(card) && (own15(card, "registerCard") && card.registerCard !== 0 || own15(card, "registerConsumerCard") && card.registerConsumerCard !== false)) {
7347
- return refuse40("iyzico_keeps_card");
7432
+ if (record35(card) && (own16(card, "cardToken") || own16(card, "ucsToken") || own16(card, "consumerToken")) && !own16(card, "cardNumber"))
7433
+ return refuse41("iyzico_saved_card");
7434
+ if (own16(value, "dccPayment") || own16(value, "dccQueryRrn"))
7435
+ return refuse41("iyzico_dcc_refused");
7436
+ if (own16(value, "gsmNumber") || own16(value, "buyerProtected") && value.buyerProtected !== false || record35(card) && (own16(card, "registerCard") && card.registerCard !== 0 || own16(card, "registerConsumerCard") && card.registerConsumerCard !== false)) {
7437
+ return refuse41("iyzico_keeps_card");
7348
7438
  }
7349
7439
  if (Number.isSafeInteger(value.installment) && value.installment > 1)
7350
- return refuse40("iyzico_installments_refused");
7351
- if (!inOrder7(value, IYZICO_BODY_KEYS) || !["installment", "paidPrice", "paymentChannel", "paymentCard"].every((key) => own15(value, key)) || value.installment !== 1 || hundredths(value.paidPrice) === null || !CHANNELS.includes(value.paymentChannel) || own15(value, "pwiMetadata") && !metadata(value.pwiMetadata))
7352
- return refuse40("iyzico_body_unsupported");
7353
- if (!record34(card) || Object.keys(card).join() !== IYZICO_CARD_KEYS.join() || typeof card.cardNumber !== "string" || !CARD_NUMBER20.test(card.cardNumber) || !holderName2(card.cardHolderName) || typeof card.expireYear !== "string" || !YEAR21.test(card.expireYear) || typeof card.expireMonth !== "string" || !MONTH20.test(card.expireMonth) || typeof card.cvc !== "string" || !SECURITY_CODE24.test(card.cvc))
7354
- return refuse40("iyzico_body_unsupported");
7355
- return CARD40;
7440
+ return refuse41("iyzico_installments_refused");
7441
+ if (!inOrder7(value, IYZICO_BODY_KEYS) || !["installment", "paidPrice", "paymentChannel", "paymentCard"].every((key) => own16(value, key)) || value.installment !== 1 || hundredths(value.paidPrice) === null || !CHANNELS.includes(value.paymentChannel) || own16(value, "pwiMetadata") && !metadata(value.pwiMetadata))
7442
+ return refuse41("iyzico_body_unsupported");
7443
+ if (!record35(card) || Object.keys(card).join() !== IYZICO_CARD_KEYS.join() || typeof card.cardNumber !== "string" || !CARD_NUMBER20.test(card.cardNumber) || !holderName2(card.cardHolderName) || typeof card.expireYear !== "string" || !YEAR21.test(card.expireYear) || typeof card.expireMonth !== "string" || !MONTH20.test(card.expireMonth) || typeof card.cvc !== "string" || !SECURITY_CODE24.test(card.cvc))
7444
+ return refuse41("iyzico_body_unsupported");
7445
+ return CARD41;
7356
7446
  }
7357
7447
  var iyzico_default = /* @__PURE__ */ registerProcessor({
7358
7448
  psp: IYZICO_PSP,
@@ -7385,7 +7475,7 @@ var iyzico_default = /* @__PURE__ */ registerProcessor({
7385
7475
  source: "https://docs.iyzico.com/en/payment-methods/checkoutform/cf-implementation/cf-retrieve"
7386
7476
  },
7387
7477
  exactUrl: isIyzicoCardUrl,
7388
- bodyGate: (url, body) => url !== void 0 && !isIyzicoCardUrl(url) ? refuse40("iyzico_url_refused") : iyzicoBodyVerdict(body)
7478
+ bodyGate: (url, body) => url !== void 0 && !isIyzicoCardUrl(url) ? refuse41("iyzico_url_refused") : iyzicoBodyVerdict(body)
7389
7479
  });
7390
7480
  // src/processors/midtrans.js
7391
7481
  var MIDTRANS_PSP = "midtrans";
@@ -7393,14 +7483,14 @@ var MIDTRANS_OPERATION = "midtrans.card_request";
7393
7483
  var MIDTRANS_TOKEN_URL = "https://api.midtrans.com/v2/token";
7394
7484
  var MIDTRANS_SANDBOX_TOKEN_URL = "https://api.sandbox.midtrans.com/v2/token";
7395
7485
  var MIDTRANS_TOKEN_KEYS = /* @__PURE__ */ Object.freeze(["card_cvv", "card_number", "card_exp_month", "card_exp_year", "installment_term"]);
7396
- var BODY_LIMIT39 = 4096;
7486
+ var BODY_LIMIT40 = 4096;
7397
7487
  var CARD_NUMBER21 = /^[0-9]{12,19}$/;
7398
7488
  var SECURITY_CODE25 = /^[0-9]{3,4}$/;
7399
7489
  var MONTH21 = /^(?:0[1-9]|1[0-2])$/;
7400
7490
  var YEAR22 = /^20[0-9]{2}$/;
7401
7491
  var TERM = /^[0-9]{1,3}$/;
7402
- var record35 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
7403
- var own16 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7492
+ var record36 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
7493
+ var own17 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7404
7494
  var inOrder8 = (value, keys) => {
7405
7495
  let at = 0;
7406
7496
  for (const name of Object.keys(value)) {
@@ -7412,18 +7502,18 @@ var inOrder8 = (value, keys) => {
7412
7502
  }
7413
7503
  return true;
7414
7504
  };
7415
- var refuse41 = (code) => Object.freeze({ verdict: "refuse", code });
7416
- var CARD41 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7505
+ var refuse42 = (code) => Object.freeze({ verdict: "refuse", code });
7506
+ var CARD42 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7417
7507
  function isMidtransTokenUrl(url) {
7418
7508
  return url === MIDTRANS_TOKEN_URL || url === MIDTRANS_SANDBOX_TOKEN_URL;
7419
7509
  }
7420
- function readBody25(body) {
7421
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT39)
7510
+ function readBody26(body) {
7511
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT40)
7422
7512
  return null;
7423
7513
  let value;
7424
7514
  try {
7425
7515
  value = JSON.parse(body);
7426
- if (!record35(value) || JSON.stringify(value) !== body)
7516
+ if (!record36(value) || JSON.stringify(value) !== body)
7427
7517
  return null;
7428
7518
  }
7429
7519
  catch {
@@ -7432,20 +7522,20 @@ function readBody25(body) {
7432
7522
  return value;
7433
7523
  }
7434
7524
  function midtransBodyVerdict(body) {
7435
- const value = readBody25(body);
7525
+ const value = readBody26(body);
7436
7526
  if (value === null || !inOrder8(value, MIDTRANS_TOKEN_KEYS)) {
7437
- if (record35(value) && (own16(value, "token_id") || own16(value, "two_click")) && !own16(value, "card_number"))
7438
- return refuse41("midtrans_saved_card");
7439
- return refuse41("midtrans_body_unsupported");
7527
+ if (record36(value) && (own17(value, "token_id") || own17(value, "two_click")) && !own17(value, "card_number"))
7528
+ return refuse42("midtrans_saved_card");
7529
+ return refuse42("midtrans_body_unsupported");
7440
7530
  }
7441
- if (!own16(value, "card_cvv") || !own16(value, "card_number") || !own16(value, "card_exp_month") || !own16(value, "card_exp_year")) {
7442
- return refuse41("midtrans_body_unsupported");
7531
+ if (!own17(value, "card_cvv") || !own17(value, "card_number") || !own17(value, "card_exp_month") || !own17(value, "card_exp_year")) {
7532
+ return refuse42("midtrans_body_unsupported");
7443
7533
  }
7444
7534
  if (typeof value.card_cvv !== "string" || !SECURITY_CODE25.test(value.card_cvv) || typeof value.card_number !== "string" || !CARD_NUMBER21.test(value.card_number) || typeof value.card_exp_month !== "string" || !MONTH21.test(value.card_exp_month) || typeof value.card_exp_year !== "string" || !YEAR22.test(value.card_exp_year))
7445
- return refuse41("midtrans_body_unsupported");
7446
- if (own16(value, "installment_term") && (typeof value.installment_term !== "string" || !TERM.test(value.installment_term)))
7447
- return refuse41("midtrans_body_unsupported");
7448
- return CARD41;
7535
+ return refuse42("midtrans_body_unsupported");
7536
+ if (own17(value, "installment_term") && (typeof value.installment_term !== "string" || !TERM.test(value.installment_term)))
7537
+ return refuse42("midtrans_body_unsupported");
7538
+ return CARD42;
7449
7539
  }
7450
7540
  var midtrans_default = /* @__PURE__ */ registerProcessor({
7451
7541
  psp: MIDTRANS_PSP,
@@ -7480,20 +7570,20 @@ var midtrans_default = /* @__PURE__ */ registerProcessor({
7480
7570
  var MONEI_PSP = "monei";
7481
7571
  var MONEI_OPERATION = "monei.card_request";
7482
7572
  var MONEI_TOKENS_URL = "https://api.monei.com/v1/tokens";
7483
- var BODY_LIMIT40 = 1024;
7573
+ var BODY_LIMIT41 = 1024;
7484
7574
  var PAYMENT_ID = /^(?:[0-9a-f]{32}|[0-9a-f]{40})$/;
7485
7575
  var MONEI_CARD_KEYS = /* @__PURE__ */ Object.freeze(["number", "expMonth", "expYear", "cvc"]);
7486
- var NUMBER8 = /^[0-9]{12,19}$/;
7576
+ var NUMBER9 = /^[0-9]{12,19}$/;
7487
7577
  var MONTH22 = /^(?:0[1-9]|1[0-2])$/;
7488
7578
  var YEAR23 = /^[0-9]{2}$/;
7489
7579
  var CODE8 = /^[0-9]{3,4}$/;
7490
- var record36 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
7580
+ var record37 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
7491
7581
  var keysAre2 = (value, keys) => {
7492
7582
  const found = Object.keys(value);
7493
7583
  return found.length === keys.length && found.every((key, at) => key === keys[at]);
7494
7584
  };
7495
- var refuse42 = (code) => Object.freeze({ verdict: "refuse", code });
7496
- var CARD42 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7585
+ var refuse43 = (code) => Object.freeze({ verdict: "refuse", code });
7586
+ var CARD43 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7497
7587
  function luhn10(digits4) {
7498
7588
  let sum = 0;
7499
7589
  for (let at = 0; at < digits4.length; at += 1) {
@@ -7510,12 +7600,12 @@ function luhn10(digits4) {
7510
7600
  function isMoneiTokensUrl(url) {
7511
7601
  return url === MONEI_TOKENS_URL;
7512
7602
  }
7513
- function readBody26(body) {
7514
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT40)
7603
+ function readBody27(body) {
7604
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT41)
7515
7605
  return null;
7516
7606
  try {
7517
7607
  const value = JSON.parse(body);
7518
- return record36(value) && JSON.stringify(value) === body ? value : null;
7608
+ return record37(value) && JSON.stringify(value) === body ? value : null;
7519
7609
  }
7520
7610
  catch {
7521
7611
  return null;
@@ -7523,19 +7613,19 @@ function readBody26(body) {
7523
7613
  }
7524
7614
  function moneiBodyVerdict(body, url) {
7525
7615
  if (url !== void 0 && !isMoneiTokensUrl(url))
7526
- return refuse42("monei_url_refused");
7527
- const value = readBody26(body);
7616
+ return refuse43("monei_url_refused");
7617
+ const value = readBody27(body);
7528
7618
  if (value === null || !keysAre2(value, ["paymentId", "paymentMethod"]) || typeof value.paymentId !== "string" || !PAYMENT_ID.test(value.paymentId))
7529
- return refuse42("monei_body_unsupported");
7619
+ return refuse43("monei_body_unsupported");
7530
7620
  const method = value.paymentMethod;
7531
- if (!record36(method) || !keysAre2(method, ["card"]) || !record36(method.card) || !keysAre2(method.card, MONEI_CARD_KEYS))
7532
- return refuse42("monei_body_unsupported");
7621
+ if (!record37(method) || !keysAre2(method, ["card"]) || !record37(method.card) || !keysAre2(method.card, MONEI_CARD_KEYS))
7622
+ return refuse43("monei_body_unsupported");
7533
7623
  const { number, expMonth, expYear, cvc } = method.card;
7534
7624
  if (![number, expMonth, expYear, cvc].every((part) => typeof part === "string"))
7535
- return refuse42("monei_body_unsupported");
7536
- if (!NUMBER8.test(number) || !luhn10(number) || !MONTH22.test(expMonth) || !YEAR23.test(expYear) || !CODE8.test(cvc))
7537
- return refuse42("monei_body_unsupported");
7538
- return CARD42;
7625
+ return refuse43("monei_body_unsupported");
7626
+ if (!NUMBER9.test(number) || !luhn10(number) || !MONTH22.test(expMonth) || !YEAR23.test(expYear) || !CODE8.test(cvc))
7627
+ return refuse43("monei_body_unsupported");
7628
+ return CARD43;
7539
7629
  }
7540
7630
  var MONEI_MERCHANT_PINS = /* @__PURE__ */ Object.freeze([
7541
7631
  Object.freeze({ merchant: "Genuins", accountIds: Object.freeze(["8d58ab4c-4ad0-4053-b18f-79d80e9ee158"]), merchantUrls: Object.freeze(["https://genuins.com/"]) })
@@ -7599,9 +7689,9 @@ var OCEANPAYMENT_FORM_FIELDS = /* @__PURE__ */ Object.freeze([
7599
7689
  "reference"
7600
7690
  ]);
7601
7691
  var URL_LIMIT16 = 2048;
7602
- var BODY_LIMIT41 = 8192;
7692
+ var BODY_LIMIT42 = 8192;
7603
7693
  var SEND_PAY = /^\/gateway\/sendPay;jsessionid=[A-Za-z0-9._!-]{16,128}$/;
7604
- var own17 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7694
+ var own18 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7605
7695
  var exact4 = (pattern, value) => typeof value === "string" && pattern.test(value);
7606
7696
  var CARD_RUN = /[0-9]{12}/;
7607
7697
  var printable5 = (max) => (value) => typeof value === "string" && value.length <= max && /^[\x20-\x7e]*$/.test(value) && !CARD_RUN.test(value);
@@ -7648,7 +7738,7 @@ function oceanpaymentSendPayUrl(url) {
7648
7738
  catch {
7649
7739
  return null;
7650
7740
  }
7651
- if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own17(OCEANPAYMENT_HOSTS, parsed.hostname) || !SEND_PAY.test(parsed.pathname))
7741
+ if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own18(OCEANPAYMENT_HOSTS, parsed.hostname) || !SEND_PAY.test(parsed.pathname))
7652
7742
  return null;
7653
7743
  return Object.freeze({ host: parsed.hostname, environment: OCEANPAYMENT_HOSTS[parsed.hostname] });
7654
7744
  }
@@ -7676,7 +7766,7 @@ function formDecode2(raw) {
7676
7766
  return formEncode3(value) === raw ? value : null;
7677
7767
  }
7678
7768
  function readPairs2(body) {
7679
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT41)
7769
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT42)
7680
7770
  return null;
7681
7771
  const pairs = [];
7682
7772
  for (const chunk of body.split("&")) {
@@ -7761,7 +7851,7 @@ var PAYMENTWALL_PSP = "paymentwall";
7761
7851
  var PAYMENTWALL_OPERATION = "paymentwall.card_request";
7762
7852
  var PAYMENTWALL_TOKEN_URL = "https://pwgateway.com/api/token";
7763
7853
  var PAYMENTWALL_SANDBOX_TOKEN_URL = "https://api.paymentwall.com/api/brick/token";
7764
- var BODY_LIMIT42 = 2048;
7854
+ var BODY_LIMIT43 = 2048;
7765
7855
  var KEY3 = "public_key";
7766
7856
  var PUBLIC_KEY2 = /^(?:t_)?[A-Za-z0-9]{16,64}$/;
7767
7857
  var SHAPES3 = /* @__PURE__ */ Object.freeze({
@@ -7771,8 +7861,8 @@ var SHAPES3 = /* @__PURE__ */ Object.freeze({
7771
7861
  "card[exp_year]": /^(?:[0-9]{2}|20[0-9]{2})$/,
7772
7862
  "card[cvv]": /^[0-9]{3,4}$/
7773
7863
  });
7774
- var refuse43 = (code) => Object.freeze({ verdict: "refuse", code });
7775
- var CARD43 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7864
+ var refuse44 = (code) => Object.freeze({ verdict: "refuse", code });
7865
+ var CARD44 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7776
7866
  function luhn11(digits4) {
7777
7867
  let sum = 0;
7778
7868
  for (let at = 0; at < digits4.length; at += 1) {
@@ -7800,7 +7890,7 @@ function paymentwallKeyEnvironment(publicKey) {
7800
7890
  return publicKey.startsWith("t_") ? "sandbox" : "production";
7801
7891
  }
7802
7892
  function readPairs3(body) {
7803
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT42 || !/^[A-Za-z0-9_[\]=&]+$/.test(body))
7893
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT43 || !/^[A-Za-z0-9_[\]=&]+$/.test(body))
7804
7894
  return null;
7805
7895
  const pairs = /* @__PURE__ */ new Map();
7806
7896
  for (const chunk of body.split("&")) {
@@ -7816,21 +7906,21 @@ function readPairs3(body) {
7816
7906
  }
7817
7907
  function paymentwallBodyVerdict(body, url) {
7818
7908
  if (url !== void 0 && !isPaymentwallTokenUrl(url))
7819
- return refuse43("paymentwall_url_refused");
7909
+ return refuse44("paymentwall_url_refused");
7820
7910
  const pairs = readPairs3(body);
7821
7911
  if (pairs === null)
7822
- return refuse43("paymentwall_body_unsupported");
7912
+ return refuse44("paymentwall_body_unsupported");
7823
7913
  if (pairs.has("card[token]") && !pairs.has("card[number]"))
7824
- return refuse43("paymentwall_saved_card");
7914
+ return refuse44("paymentwall_saved_card");
7825
7915
  const keys = Object.keys(SHAPES3);
7826
7916
  if (pairs.size !== keys.length || !keys.every((key) => pairs.has(key) && SHAPES3[key].test(pairs.get(key)))) {
7827
- return refuse43("paymentwall_body_unsupported");
7917
+ return refuse44("paymentwall_body_unsupported");
7828
7918
  }
7829
7919
  if (!luhn11(pairs.get("card[number]")))
7830
- return refuse43("paymentwall_body_unsupported");
7920
+ return refuse44("paymentwall_body_unsupported");
7831
7921
  if (url !== void 0 && paymentwallKeyEnvironment(pairs.get(KEY3)) !== paymentwallUrlEnvironment(url))
7832
- return refuse43("paymentwall_key_refused");
7833
- return CARD43;
7922
+ return refuse44("paymentwall_key_refused");
7923
+ return CARD44;
7834
7924
  }
7835
7925
  var paymentwall_default = /* @__PURE__ */ registerProcessor({
7836
7926
  psp: PAYMENTWALL_PSP,
@@ -7980,7 +8070,7 @@ var PAYSTACK_BODY_KEYS = /* @__PURE__ */ Object.freeze([
7980
8070
  "transaction_type"
7981
8071
  ]);
7982
8072
  var OPTIONAL = /* @__PURE__ */ new Set(["access_code", "card_holder_name", "transaction_type"]);
7983
- var BODY_LIMIT43 = 4096;
8073
+ var BODY_LIMIT44 = 4096;
7984
8074
  var CIPHERTEXT_BYTES2 = [62, 63, 64];
7985
8075
  var BASE646 = /^[A-Za-z0-9+/]+={0,2}$/;
7986
8076
  var SHAPES4 = /* @__PURE__ */ Object.freeze({
@@ -7994,8 +8084,8 @@ var SHAPES4 = /* @__PURE__ */ Object.freeze({
7994
8084
  card_holder_name: /^[^\x00-\x1f\x7f0-9]{1,128}$/u,
7995
8085
  transaction_type: /^[a-z_]{1,32}$/
7996
8086
  });
7997
- var own18 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7998
- var refuse44 = (code) => Object.freeze({ verdict: "refuse", code });
8087
+ var own19 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8088
+ var refuse45 = (code) => Object.freeze({ verdict: "refuse", code });
7999
8089
  function paystackFormValue(value) {
8000
8090
  return encodeURIComponent(String(value)).replace(/%20/g, "+").replace(/[!'()*~]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);
8001
8091
  }
@@ -8018,7 +8108,7 @@ function isCiphertext2(value) {
8018
8108
  return btoa(binary) === value && CIPHERTEXT_BYTES2.includes(binary.length);
8019
8109
  }
8020
8110
  function readForm3(body) {
8021
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT43)
8111
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT44)
8022
8112
  return null;
8023
8113
  const entries = [];
8024
8114
  for (const part of body.split("&")) {
@@ -8037,21 +8127,21 @@ function readForm3(body) {
8037
8127
  function paystackBodyVerdict(body) {
8038
8128
  const entries = readForm3(body);
8039
8129
  if (entries === null)
8040
- return refuse44("paystack_body_unsupported");
8130
+ return refuse45("paystack_body_unsupported");
8041
8131
  const keys = entries.map(([key]) => key);
8042
8132
  if (keys.includes("subscription"))
8043
- return refuse44("paystack_subscription");
8133
+ return refuse45("paystack_subscription");
8044
8134
  if (keys.includes("remember_card") && entries.find(([key]) => key === "remember_card")[1] !== "false")
8045
- return refuse44("paystack_saved_card");
8135
+ return refuse45("paystack_saved_card");
8046
8136
  const expected = PAYSTACK_BODY_KEYS.filter((key) => !OPTIONAL.has(key) || keys.includes(key));
8047
8137
  if (keys.length !== expected.length || keys.some((key, i) => key !== expected[i]))
8048
- return refuse44("paystack_body_unsupported");
8138
+ return refuse45("paystack_body_unsupported");
8049
8139
  const fields = Object.fromEntries(entries);
8050
8140
  if (!isCiphertext2(fields.clientdata))
8051
- return refuse44("paystack_body_unsupported");
8141
+ return refuse45("paystack_body_unsupported");
8052
8142
  for (const [key, shape] of Object.entries(SHAPES4)) {
8053
- if (own18(fields, key) && !shape.test(fields[key]))
8054
- return refuse44("paystack_body_unsupported");
8143
+ if (own19(fields, key) && !shape.test(fields[key]))
8144
+ return refuse45("paystack_body_unsupported");
8055
8145
  }
8056
8146
  return Object.freeze({ verdict: "card", fields: Object.freeze(fields) });
8057
8147
  }
@@ -8078,7 +8168,7 @@ var paystack_default = /* @__PURE__ */ registerProcessor({
8078
8168
  // Not surveyed: reading a charge back takes the merchant's secret key, which Agentcard never holds.
8079
8169
  settlementReadback: "not_surveyed",
8080
8170
  exactUrl: isPaystackChargeUrl,
8081
- bodyGate: (url, body) => url !== void 0 && !isPaystackChargeUrl(url) ? refuse44("paystack_url_refused") : paystackBodyVerdict(body),
8171
+ bodyGate: (url, body) => url !== void 0 && !isPaystackChargeUrl(url) ? refuse45("paystack_url_refused") : paystackBodyVerdict(body),
8082
8172
  // No amount reader: the charge names none, so the agent's pair is the figure the cardholder approves.
8083
8173
  limitations: ["The charge names no merchant and no amount: Paystack's transaction binds both, so the cardholder approves the agent's figure for whichever Paystack merchant opened the checkout."]
8084
8174
  });
@@ -8086,7 +8176,7 @@ var paystack_default = /* @__PURE__ */ registerProcessor({
8086
8176
  var PROCESSOUT_PSP = "processout";
8087
8177
  var PROCESSOUT_OPERATION = "processout.card_request";
8088
8178
  var URL_LIMIT17 = 512;
8089
- var BODY_LIMIT44 = 4096;
8179
+ var BODY_LIMIT45 = 4096;
8090
8180
  var CARD_URL2 = /^https:\/\/api\.processout\.com\/cards\?legacyrequest=true&project_id=((?:test-)?proj_[A-Za-z0-9]{16,64})&x-Content-Type=application\/json&x-API-Version=1\.3\.0\.0&x-Authorization=Basic%20([A-Za-z0-9+/]{4,256}={0,2})$/;
8091
8181
  var PAGE_KEYS2 = /* @__PURE__ */ Object.freeze(["name", "contact", "preferred_scheme"]);
8092
8182
  var CONTACT_KEYS = /* @__PURE__ */ Object.freeze(["address1", "address2", "city", "state", "country_code", "zip"]);
@@ -8101,7 +8191,7 @@ var DEVICE_KEYS4 = /* @__PURE__ */ Object.freeze([
8101
8191
  ]);
8102
8192
  var PROCESSOUT_CARD_KEYS = /* @__PURE__ */ Object.freeze(["number", "exp_month", "exp_year", "cvc2"]);
8103
8193
  var BODY_KEYS3 = /* @__PURE__ */ new Set([...PAGE_KEYS2, "device", ...DEVICE_KEYS4, ...PROCESSOUT_CARD_KEYS]);
8104
- var NUMBER9 = /^[0-9]{12,19}$/;
8194
+ var NUMBER10 = /^[0-9]{12,19}$/;
8105
8195
  var MONTH23 = /^(?:[1-9]|1[0-2])$/;
8106
8196
  var YEAR24 = /^20[0-9]{2}$/;
8107
8197
  var CODE9 = /^[0-9]{3,4}$/;
@@ -8109,10 +8199,10 @@ var TEXT_LIMIT14 = 256;
8109
8199
  var SCHEME = /^[A-Za-z][A-Za-z0-9 _-]{0,31}$/;
8110
8200
  var LANGUAGE5 = /^[A-Za-z]{1,8}(?:-[A-Za-z0-9]{1,8}){0,4}$/;
8111
8201
  var PAN_LIKE7 = /(?:[0-9][^0-9A-Za-z]*){12,}/;
8112
- var record37 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
8113
- var own19 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8114
- var refuse45 = (code) => Object.freeze({ verdict: "refuse", code });
8115
- var CARD44 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
8202
+ var record38 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
8203
+ var own20 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8204
+ var refuse46 = (code) => Object.freeze({ verdict: "refuse", code });
8205
+ var CARD45 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
8116
8206
  var BASE647 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
8117
8207
  function base64Of(text11) {
8118
8208
  let out = "";
@@ -8149,12 +8239,12 @@ function processoutCardTarget(url) {
8149
8239
  function isProcessoutCardUrl(url) {
8150
8240
  return processoutCardTarget(url) !== null;
8151
8241
  }
8152
- function readBody27(body) {
8153
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT44)
8242
+ function readBody28(body) {
8243
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT45)
8154
8244
  return null;
8155
8245
  try {
8156
8246
  const value = JSON.parse(body);
8157
- return record37(value) && JSON.stringify(value) === body ? value : null;
8247
+ return record38(value) && JSON.stringify(value) === body ? value : null;
8158
8248
  }
8159
8249
  catch {
8160
8250
  return null;
@@ -8172,31 +8262,31 @@ var DEVICE_RULES = /* @__PURE__ */ Object.freeze({
8172
8262
  });
8173
8263
  function soundDevice3(value) {
8174
8264
  const device = value.device;
8175
- if (!record37(device) || !own19(device, "request_origin") || !own19(device, "app_timezone_offset"))
8265
+ if (!record38(device) || !own20(device, "request_origin") || !own20(device, "app_timezone_offset"))
8176
8266
  return false;
8177
- return DEVICE_KEYS4.every((key) => own19(device, key) ? DEVICE_RULES[key](device[key]) && own19(value, key) && value[key] === device[key] : !own19(value, key)) && Object.keys(device).every((key) => DEVICE_KEYS4.includes(key));
8267
+ return DEVICE_KEYS4.every((key) => own20(device, key) ? DEVICE_RULES[key](device[key]) && own20(value, key) && value[key] === device[key] : !own20(value, key)) && Object.keys(device).every((key) => DEVICE_KEYS4.includes(key));
8178
8268
  }
8179
8269
  function soundPageData(value) {
8180
- if (own19(value, "name") && !pageText2(value.name))
8270
+ if (own20(value, "name") && !pageText2(value.name))
8181
8271
  return false;
8182
- if (own19(value, "preferred_scheme") && !(value.preferred_scheme === null || typeof value.preferred_scheme === "string" && SCHEME.test(value.preferred_scheme)))
8272
+ if (own20(value, "preferred_scheme") && !(value.preferred_scheme === null || typeof value.preferred_scheme === "string" && SCHEME.test(value.preferred_scheme)))
8183
8273
  return false;
8184
8274
  const contact = value.contact;
8185
- return record37(contact) && Object.keys(contact).every((key) => CONTACT_KEYS.includes(key) && pageText2(contact[key]));
8275
+ return record38(contact) && Object.keys(contact).every((key) => CONTACT_KEYS.includes(key) && pageText2(contact[key]));
8186
8276
  }
8187
8277
  function processoutBodyVerdict(body, url) {
8188
8278
  if (url !== void 0 && processoutCardTarget(url) === null)
8189
- return refuse45("processout_url_refused");
8190
- const value = readBody27(body);
8279
+ return refuse46("processout_url_refused");
8280
+ const value = readBody28(body);
8191
8281
  if (value === null || !Object.keys(value).every((key) => BODY_KEYS3.has(key)))
8192
- return refuse45("processout_body_unsupported");
8282
+ return refuse46("processout_body_unsupported");
8193
8283
  if (!PROCESSOUT_CARD_KEYS.every((key) => typeof value[key] === "string"))
8194
- return refuse45("processout_body_unsupported");
8195
- if (!NUMBER9.test(value.number) || !luhn12(value.number) || !MONTH23.test(value.exp_month) || !YEAR24.test(value.exp_year) || !CODE9.test(value.cvc2))
8196
- return refuse45("processout_body_unsupported");
8284
+ return refuse46("processout_body_unsupported");
8285
+ if (!NUMBER10.test(value.number) || !luhn12(value.number) || !MONTH23.test(value.exp_month) || !YEAR24.test(value.exp_year) || !CODE9.test(value.cvc2))
8286
+ return refuse46("processout_body_unsupported");
8197
8287
  if (!soundPageData(value) || !soundDevice3(value))
8198
- return refuse45("processout_body_unsupported");
8199
- return CARD44;
8288
+ return refuse46("processout_body_unsupported");
8289
+ return CARD45;
8200
8290
  }
8201
8291
  var processout_default = /* @__PURE__ */ registerProcessor({
8202
8292
  psp: PROCESSOUT_PSP,
@@ -8239,15 +8329,15 @@ var USAEPAY_HOSTS = /* @__PURE__ */ Object.freeze({
8239
8329
  "sandbox.usaepay.com": "sandbox"
8240
8330
  });
8241
8331
  var USAEPAY_PAYMENT_KEYS_PATH = "/api/v2/pub/payment_keys";
8242
- var BODY_LIMIT45 = 512;
8332
+ var BODY_LIMIT46 = 512;
8243
8333
  var URL_LIMIT18 = 256;
8244
8334
  var CARD_NUMBER22 = /^[0-9]{13,19}$/;
8245
8335
  var EXPIRATION2 = /^(?:0[1-9]|1[0-2])[0-9]{2}$/;
8246
8336
  var SECURITY_CODE26 = /^(?:[0-9]{3,4})?$/;
8247
- var record38 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
8248
- var own20 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8249
- var refuse46 = (code) => Object.freeze({ verdict: "refuse", code });
8250
- var CARD45 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
8337
+ var record39 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
8338
+ var own21 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8339
+ var refuse47 = (code) => Object.freeze({ verdict: "refuse", code });
8340
+ var CARD46 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
8251
8341
  function usaepayPaymentKeysUrl(url) {
8252
8342
  if (typeof url !== "string" || url.length > URL_LIMIT18 || url.includes("?") || url.includes("#"))
8253
8343
  return null;
@@ -8258,7 +8348,7 @@ function usaepayPaymentKeysUrl(url) {
8258
8348
  catch {
8259
8349
  return null;
8260
8350
  }
8261
- if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own20(USAEPAY_HOSTS, parsed.hostname) || parsed.pathname !== USAEPAY_PAYMENT_KEYS_PATH)
8351
+ if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own21(USAEPAY_HOSTS, parsed.hostname) || parsed.pathname !== USAEPAY_PAYMENT_KEYS_PATH)
8262
8352
  return null;
8263
8353
  return Object.freeze({ host: parsed.hostname, environment: USAEPAY_HOSTS[parsed.hostname] });
8264
8354
  }
@@ -8273,23 +8363,23 @@ function luhn13(digits4) {
8273
8363
  }
8274
8364
  return sum % 10 === 0;
8275
8365
  }
8276
- function readBody28(body) {
8277
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT45)
8366
+ function readBody29(body) {
8367
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT46)
8278
8368
  return null;
8279
8369
  try {
8280
8370
  const value = JSON.parse(body);
8281
- return record38(value) && JSON.stringify(value) === body ? value : null;
8371
+ return record39(value) && JSON.stringify(value) === body ? value : null;
8282
8372
  }
8283
8373
  catch {
8284
8374
  return null;
8285
8375
  }
8286
8376
  }
8287
8377
  function usaepayBodyVerdict(body) {
8288
- const value = readBody28(body);
8378
+ const value = readBody29(body);
8289
8379
  const card = value === null ? null : value.creditcard;
8290
- if (value === null || Object.keys(value).join() !== "creditcard" || !record38(card) || Object.keys(card).join() !== "number,expiration,cvc" || typeof card.number !== "string" || !CARD_NUMBER22.test(card.number) || !luhn13(card.number) || typeof card.expiration !== "string" || !EXPIRATION2.test(card.expiration) || typeof card.cvc !== "string" || !SECURITY_CODE26.test(card.cvc))
8291
- return refuse46("usaepay_body_unsupported");
8292
- return CARD45;
8380
+ if (value === null || Object.keys(value).join() !== "creditcard" || !record39(card) || Object.keys(card).join() !== "number,expiration,cvc" || typeof card.number !== "string" || !CARD_NUMBER22.test(card.number) || !luhn13(card.number) || typeof card.expiration !== "string" || !EXPIRATION2.test(card.expiration) || typeof card.cvc !== "string" || !SECURITY_CODE26.test(card.cvc))
8381
+ return refuse47("usaepay_body_unsupported");
8382
+ return CARD46;
8293
8383
  }
8294
8384
  var usaepay_default = /* @__PURE__ */ registerProcessor({
8295
8385
  psp: USAEPAY_PSP,
@@ -8321,7 +8411,7 @@ var usaepay_default = /* @__PURE__ */ registerProcessor({
8321
8411
  source: "https://help.usaepay.info/developer/payjs-v2/ , https://help.usaepay.info/api/rest/"
8322
8412
  },
8323
8413
  exactUrl: isUsaepayPaymentKeysUrl,
8324
- bodyGate: (url, body) => url !== void 0 && !isUsaepayPaymentKeysUrl(url) ? refuse46("usaepay_url_refused") : usaepayBodyVerdict(body)
8414
+ bodyGate: (url, body) => url !== void 0 && !isUsaepayPaymentKeysUrl(url) ? refuse47("usaepay_url_refused") : usaepayBodyVerdict(body)
8325
8415
  // No amount reader: the request names none, so the agent's pair is the figure the cardholder approves.
8326
8416
  });
8327
8417
  // src/processors/viva_wallet.js
@@ -8357,7 +8447,7 @@ var VIVA_WALLET_BODY_KEYS = /* @__PURE__ */ Object.freeze([
8357
8447
  "merchantTrns",
8358
8448
  "captchaToken"
8359
8449
  ]);
8360
- var BODY_LIMIT46 = 16384;
8450
+ var BODY_LIMIT47 = 16384;
8361
8451
  var URL_LIMIT19 = 256;
8362
8452
  var ORDER_CODE = /^[0-9]{16}$/;
8363
8453
  var CARD_NUMBER23 = /^[0-9]{13,19}$/;
@@ -8369,10 +8459,10 @@ var MEMBER_NAME = /^[A-Za-z][A-Za-z0-9]{0,31}$/;
8369
8459
  var SHORT_ID = /^[A-Za-z0-9_-]{1,64}$/;
8370
8460
  var TEXT4 = /^[^\u0000-\u001f\u007f]{0,200}$/;
8371
8461
  var CARD_DIGITS2 = /[0-9]{12,}/;
8372
- var record39 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
8373
- var own21 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8374
- var refuse47 = (code) => Object.freeze({ verdict: "refuse", code });
8375
- var CARD46 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
8462
+ var record40 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
8463
+ var own22 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8464
+ var refuse48 = (code) => Object.freeze({ verdict: "refuse", code });
8465
+ var CARD47 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
8376
8466
  var inOrder9 = (value, keys) => {
8377
8467
  let at = 0;
8378
8468
  for (const name of Object.keys(value)) {
@@ -8387,7 +8477,7 @@ var inOrder9 = (value, keys) => {
8387
8477
  var cardDigits2 = (text11) => CARD_DIGITS2.test(text11.replace(/[^0-9A-Za-z]/g, ""));
8388
8478
  var plainText8 = (value) => typeof value === "string" && TEXT4.test(value) && !cardDigits2(value);
8389
8479
  var scalar = (value) => value === null || typeof value === "boolean" || Number.isSafeInteger(value) && Math.abs(value) < 1e9 || plainText8(value);
8390
- var flatRecord = (value, limit) => record39(value) && Object.keys(value).length <= limit && Object.entries(value).every(([key, item]) => MEMBER_NAME.test(key) && scalar(item));
8480
+ var flatRecord = (value, limit) => record40(value) && Object.keys(value).length <= limit && Object.entries(value).every(([key, item]) => MEMBER_NAME.test(key) && scalar(item));
8391
8481
  function vivaWalletChargeTokensUrl(url) {
8392
8482
  if (typeof url !== "string" || url.length > URL_LIMIT19 || url.includes("?") || url.includes("#"))
8393
8483
  return null;
@@ -8398,7 +8488,7 @@ function vivaWalletChargeTokensUrl(url) {
8398
8488
  catch {
8399
8489
  return null;
8400
8490
  }
8401
- if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own21(VIVA_WALLET_HOSTS, parsed.hostname) || parsed.pathname !== VIVA_WALLET_CHARGE_TOKENS_PATH)
8491
+ if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own22(VIVA_WALLET_HOSTS, parsed.hostname) || parsed.pathname !== VIVA_WALLET_CHARGE_TOKENS_PATH)
8402
8492
  return null;
8403
8493
  return Object.freeze({ host: parsed.hostname, environment: VIVA_WALLET_HOSTS[parsed.hostname] });
8404
8494
  }
@@ -8416,12 +8506,12 @@ function luhn14(digits4) {
8416
8506
  function vivaWalletMaskedNumber(number) {
8417
8507
  return `${number.slice(0, 6)}${"X".repeat(Math.max(0, number.length - 10))}${number.slice(-4)}`;
8418
8508
  }
8419
- function readBody29(body) {
8420
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT46)
8509
+ function readBody30(body) {
8510
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT47)
8421
8511
  return null;
8422
8512
  try {
8423
8513
  const value = JSON.parse(body);
8424
- return record39(value) && JSON.stringify(value) === body ? value : null;
8514
+ return record40(value) && JSON.stringify(value) === body ? value : null;
8425
8515
  }
8426
8516
  catch {
8427
8517
  return null;
@@ -8433,26 +8523,26 @@ function currencyNumber(value) {
8433
8523
  return typeof value === "string" && /^[0-9]{3}$/.test(value) ? Number(value) : null;
8434
8524
  }
8435
8525
  function vivaWalletBodyVerdict(body) {
8436
- const value = readBody29(body);
8526
+ const value = readBody30(body);
8437
8527
  if (value === null || !Object.keys(value).every((key) => VIVA_WALLET_BODY_KEYS.includes(key))) {
8438
- return value !== null && (own21(value, "creditCardId") || own21(value, "token")) ? refuse47("viva_wallet_stored_card") : refuse47("viva_wallet_body_unsupported");
8528
+ return value !== null && (own22(value, "creditCardId") || own22(value, "token")) ? refuse48("viva_wallet_stored_card") : refuse48("viva_wallet_body_unsupported");
8439
8529
  }
8440
8530
  if (value.rememberCard !== false)
8441
- return refuse47(value.rememberCard === true ? "viva_wallet_keep_on_file" : "viva_wallet_body_unsupported");
8531
+ return refuse48(value.rememberCard === true ? "viva_wallet_keep_on_file" : "viva_wallet_body_unsupported");
8442
8532
  if (value.dccAccepted === true)
8443
- return refuse47("viva_wallet_currency_conversion");
8444
- if (own21(value, "dccAccepted") && value.dccAccepted !== false)
8445
- return refuse47("viva_wallet_body_unsupported");
8446
- if (own21(value, "scaRequestedTransactionId"))
8447
- return refuse47("viva_wallet_retry_refused");
8533
+ return refuse48("viva_wallet_currency_conversion");
8534
+ if (own22(value, "dccAccepted") && value.dccAccepted !== false)
8535
+ return refuse48("viva_wallet_body_unsupported");
8536
+ if (own22(value, "scaRequestedTransactionId"))
8537
+ return refuse48("viva_wallet_retry_refused");
8448
8538
  if (!(value.installments === 0 || value.installments === 1)) {
8449
- return refuse47(Number.isSafeInteger(value.installments) && value.installments > 1 ? "viva_wallet_installments" : "viva_wallet_body_unsupported");
8539
+ return refuse48(Number.isSafeInteger(value.installments) && value.installments > 1 ? "viva_wallet_installments" : "viva_wallet_body_unsupported");
8450
8540
  }
8451
- if (!inOrder9(value, VIVA_WALLET_BODY_KEYS) || ["offerCodes", "loyaltySupported", "redeemedAmount", "retrievalReferenceNumber", "merchantTrns"].some((key) => own21(value, key)))
8452
- return refuse47("viva_wallet_body_unsupported");
8541
+ if (!inOrder9(value, VIVA_WALLET_BODY_KEYS) || ["offerCodes", "loyaltySupported", "redeemedAmount", "retrievalReferenceNumber", "merchantTrns"].some((key) => own22(value, key)))
8542
+ return refuse48("viva_wallet_body_unsupported");
8453
8543
  const number = value.number;
8454
- const sound = typeof value.orderCode === "string" && ORDER_CODE.test(value.orderCode) && Number.isSafeInteger(value.amount) && value.amount > 0 && currencyNumber(value.currencyCode) !== null && plainText8(value.holderName) && value.holderName.trim() !== "" && plainText8(value.holderMail) && (value.cvc === null || typeof value.cvc === "string" && SECURITY_CODE27.test(value.cvc)) && typeof number === "string" && CARD_NUMBER23.test(number) && luhn14(number) && typeof value.expirationMonth === "string" && MONTH24.test(value.expirationMonth) && typeof value.expirationYear === "string" && YEAR25.test(value.expirationYear) && flatRecord(value.customer, 12) && (!own21(value, "friendlyName") || plainText8(value.friendlyName)) && value.maskedNumber === vivaWalletMaskedNumber(number) && (!own21(value, "bankId") || typeof value.bankId === "string" && SHORT_ID.test(value.bankId) || Number.isSafeInteger(value.bankId) && value.bankId >= 0) && (!own21(value, "selectedBrand") || value.selectedBrand === null || flatRecord(value.selectedBrand, 16)) && (!own21(value, "cardholderBrandSelection") || typeof value.cardholderBrandSelection === "boolean") && (!own21(value, "dccOptions") || flatRecord(value.dccOptions, 16)) && (!own21(value, "captchaToken") || typeof value.captchaToken === "string" && CAPTCHA_TOKEN.test(value.captchaToken));
8455
- return sound ? CARD46 : refuse47("viva_wallet_body_unsupported");
8544
+ const sound = typeof value.orderCode === "string" && ORDER_CODE.test(value.orderCode) && Number.isSafeInteger(value.amount) && value.amount > 0 && currencyNumber(value.currencyCode) !== null && plainText8(value.holderName) && value.holderName.trim() !== "" && plainText8(value.holderMail) && (value.cvc === null || typeof value.cvc === "string" && SECURITY_CODE27.test(value.cvc)) && typeof number === "string" && CARD_NUMBER23.test(number) && luhn14(number) && typeof value.expirationMonth === "string" && MONTH24.test(value.expirationMonth) && typeof value.expirationYear === "string" && YEAR25.test(value.expirationYear) && flatRecord(value.customer, 12) && (!own22(value, "friendlyName") || plainText8(value.friendlyName)) && value.maskedNumber === vivaWalletMaskedNumber(number) && (!own22(value, "bankId") || typeof value.bankId === "string" && SHORT_ID.test(value.bankId) || Number.isSafeInteger(value.bankId) && value.bankId >= 0) && (!own22(value, "selectedBrand") || value.selectedBrand === null || flatRecord(value.selectedBrand, 16)) && (!own22(value, "cardholderBrandSelection") || typeof value.cardholderBrandSelection === "boolean") && (!own22(value, "dccOptions") || flatRecord(value.dccOptions, 16)) && (!own22(value, "captchaToken") || typeof value.captchaToken === "string" && CAPTCHA_TOKEN.test(value.captchaToken));
8545
+ return sound ? CARD47 : refuse48("viva_wallet_body_unsupported");
8456
8546
  }
8457
8547
  var VIVA_WALLET_CURRENCIES = /* @__PURE__ */ Object.freeze({
8458
8548
  978: "eur",
@@ -8515,9 +8605,9 @@ var viva_wallet_default = /* @__PURE__ */ registerProcessor({
8515
8605
  refusedOperations: [VIVA_WALLET_OPERATION],
8516
8606
  settlementReadback: "not_surveyed",
8517
8607
  exactUrl: isVivaWalletChargeTokensUrl,
8518
- bodyGate: (url, body) => url !== void 0 && !isVivaWalletChargeTokensUrl(url) ? refuse47("viva_wallet_url_refused") : vivaWalletBodyVerdict(body),
8608
+ bodyGate: (url, body) => url !== void 0 && !isVivaWalletChargeTokensUrl(url) ? refuse48("viva_wallet_url_refused") : vivaWalletBodyVerdict(body),
8519
8609
  // The body names the order's amount in cents and its numeric currency, which the page's card-free charge repeats.
8520
- amount: (template) => record39(template) && isVivaWalletChargeTokensUrl(template.url) ? vivaWalletAmount(template.body) : null
8610
+ amount: (template) => record40(template) && isVivaWalletChargeTokensUrl(template.url) ? vivaWalletAmount(template.body) : null
8521
8611
  });
8522
8612
  // src/processors/vtex_payments.js
8523
8613
  var VTEX_PAYMENTS_PSP = "vtex_payments";
@@ -8567,7 +8657,7 @@ var VTEX_PAYMENTS_MERCHANT_PINS = /* @__PURE__ */ Object.freeze([
8567
8657
  Object.freeze({ account: "alssports", origin: "https://www.als.com", merchant: "Al's Sporting Goods", currency: "USD" }),
8568
8658
  Object.freeze({ account: "roadrunnersports", origin: "https://www.roadrunnersports.com", merchant: "Road Runner Sports", currency: "USD" })
8569
8659
  ]);
8570
- var BODY_LIMIT47 = 16384;
8660
+ var BODY_LIMIT48 = 16384;
8571
8661
  var ACCOUNT_HOST = /^([a-z0-9]{1,63})\.vtexvault\.com$/;
8572
8662
  var PATH = /^\/api\/payments\/transactions\/([0-9A-Fa-f]{32})\/payments$/;
8573
8663
  var ORDER_GROUP = /^[0-9]{6,24}$/;
@@ -8575,7 +8665,7 @@ var BASE648 = /^[A-Za-z0-9+/]{4,1020}={0,2}$/;
8575
8665
  var CARD_NUMBER24 = /^[0-9]{12,19}$/;
8576
8666
  var SECURITY_CODE28 = /^[0-9]{3,4}$/;
8577
8667
  var DUE_DATE = /^(?:0[1-9]|1[0-2])\/[0-9]{2}$/;
8578
- var CURRENCY6 = /^[A-Z]{3}$/;
8668
+ var CURRENCY7 = /^[A-Z]{3}$/;
8579
8669
  var TRANSACTION_ID = /^[0-9A-Fa-f]{32}$/;
8580
8670
  var MERCHANT_NAME = /^[A-Za-z0-9_.-]{1,64}$/;
8581
8671
  var SHORT_ID2 = /^[A-Za-z0-9_-]{1,64}$/;
@@ -8583,10 +8673,10 @@ var FINGERPRINT4 = /^[A-Za-z0-9_.:=+/-]{1,256}$/;
8583
8673
  var TEXT5 = /^[^\u0000-\u001f\u007f]{1,200}$/;
8584
8674
  var CARD_DIGITS3 = /[0-9]{12,}/;
8585
8675
  var DEVICE_INFO_KEYS = Object.freeze(["sw", "sh", "cd", "tz", "lang", "java", "sourceApplication"]);
8586
- var record40 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
8587
- var own22 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8588
- var refuse48 = (code) => Object.freeze({ verdict: "refuse", code });
8589
- var CARD47 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
8676
+ var record41 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
8677
+ var own23 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8678
+ var refuse49 = (code) => Object.freeze({ verdict: "refuse", code });
8679
+ var CARD48 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
8590
8680
  var inOrder10 = (value, keys) => {
8591
8681
  let at = 0;
8592
8682
  for (const name of Object.keys(value)) {
@@ -8636,18 +8726,18 @@ function deviceInfoSound(text11) {
8636
8726
  catch {
8637
8727
  return false;
8638
8728
  }
8639
- if (!record40(info) || !Object.keys(info).every((key) => DEVICE_INFO_KEYS.includes(key)))
8729
+ if (!record41(info) || !Object.keys(info).every((key) => DEVICE_INFO_KEYS.includes(key)))
8640
8730
  return false;
8641
8731
  for (const key of ["sw", "sh", "cd"])
8642
- if (own22(info, key) && !(count(info[key]) && info[key] <= 1e5))
8732
+ if (own23(info, key) && !(count(info[key]) && info[key] <= 1e5))
8643
8733
  return false;
8644
- if (own22(info, "tz") && !(Number.isSafeInteger(info.tz) && Math.abs(info.tz) <= 1440))
8734
+ if (own23(info, "tz") && !(Number.isSafeInteger(info.tz) && Math.abs(info.tz) <= 1440))
8645
8735
  return false;
8646
- if (own22(info, "lang") && !(typeof info.lang === "string" && /^[A-Za-z]{0,8}$/.test(info.lang)))
8736
+ if (own23(info, "lang") && !(typeof info.lang === "string" && /^[A-Za-z]{0,8}$/.test(info.lang)))
8647
8737
  return false;
8648
- if (own22(info, "java") && typeof info.java !== "boolean")
8738
+ if (own23(info, "java") && typeof info.java !== "boolean")
8649
8739
  return false;
8650
- return !own22(info, "sourceApplication") || typeof info.sourceApplication === "string" && /^[A-Za-z0-9_.-]{1,32}$/.test(info.sourceApplication);
8740
+ return !own23(info, "sourceApplication") || typeof info.sourceApplication === "string" && /^[A-Za-z0-9_.-]{1,32}$/.test(info.sourceApplication);
8651
8741
  }
8652
8742
  function vtexPaymentsCardTarget(url) {
8653
8743
  if (typeof url !== "string" || url.length > 8192)
@@ -8693,8 +8783,8 @@ function isVtexPaymentsCardUrl(url) {
8693
8783
  const target = vtexPaymentsCardTarget(url);
8694
8784
  return target !== null && !target.fallback;
8695
8785
  }
8696
- function readBody30(body) {
8697
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT47)
8786
+ function readBody31(body) {
8787
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT48)
8698
8788
  return null;
8699
8789
  let value;
8700
8790
  try {
@@ -8708,13 +8798,13 @@ function readBody30(body) {
8708
8798
  return value;
8709
8799
  }
8710
8800
  function cardLine(line) {
8711
- if (!record40(line))
8801
+ if (!record41(line))
8712
8802
  return false;
8713
- const fields = record40(line.fields) ? line.fields : {};
8714
- return line.groupName === "creditCardPaymentGroup" || line.groupName === "debitCardPaymentGroup" || own22(line, "accountId") || own22(fields, "accountId") || own22(fields, "cardNumber") || own22(fields, "validationCode") || own22(fields, "dueDate");
8803
+ const fields = record41(line.fields) ? line.fields : {};
8804
+ return line.groupName === "creditCardPaymentGroup" || line.groupName === "debitCardPaymentGroup" || own23(line, "accountId") || own23(fields, "accountId") || own23(fields, "cardNumber") || own23(fields, "validationCode") || own23(fields, "dueDate");
8715
8805
  }
8716
8806
  function addressSound(address2) {
8717
- if (!record40(address2) || !inOrder10(address2, VTEX_PAYMENTS_ADDRESS_KEYS))
8807
+ if (!record41(address2) || !inOrder10(address2, VTEX_PAYMENTS_ADDRESS_KEYS))
8718
8808
  return false;
8719
8809
  for (const [key, value] of Object.entries(address2)) {
8720
8810
  if (key === "addressType") {
@@ -8735,7 +8825,7 @@ function addressSound(address2) {
8735
8825
  return true;
8736
8826
  }
8737
8827
  function fieldsSound(fields) {
8738
- if (!record40(fields) || !inOrder10(fields, VTEX_PAYMENTS_FIELD_KEYS) || own22(fields, "metadata"))
8828
+ if (!record41(fields) || !inOrder10(fields, VTEX_PAYMENTS_FIELD_KEYS) || own23(fields, "metadata"))
8739
8829
  return false;
8740
8830
  if (!(typeof fields.cardNumber === "string" && CARD_NUMBER24.test(fields.cardNumber)))
8741
8831
  return false;
@@ -8745,38 +8835,38 @@ function fieldsSound(fields) {
8745
8835
  return false;
8746
8836
  if (!plainText9(fields.holderName))
8747
8837
  return false;
8748
- if (own22(fields, "document") && !(fields.document === "" || plainText9(fields.document) && fields.document.length <= 32))
8838
+ if (own23(fields, "document") && !(fields.document === "" || plainText9(fields.document) && fields.document.length <= 32))
8749
8839
  return false;
8750
- if (own22(fields, "address") && !addressSound(fields.address))
8840
+ if (own23(fields, "address") && !addressSound(fields.address))
8751
8841
  return false;
8752
- if (own22(fields, "deviceFingerprint") && !(typeof fields.deviceFingerprint === "string" && FINGERPRINT4.test(fields.deviceFingerprint)))
8842
+ if (own23(fields, "deviceFingerprint") && !(typeof fields.deviceFingerprint === "string" && FINGERPRINT4.test(fields.deviceFingerprint)))
8753
8843
  return false;
8754
- return !own22(fields, "addressId") || typeof fields.addressId === "string" && SHORT_ID2.test(fields.addressId);
8844
+ return !own23(fields, "addressId") || typeof fields.addressId === "string" && SHORT_ID2.test(fields.addressId);
8755
8845
  }
8756
8846
  function vtexPaymentsBodyVerdict(body, target) {
8757
- const lines = readBody30(body);
8758
- if (lines === null || lines.length === 0 || !lines.every(record40))
8759
- return refuse48("vtex_payments_body_unsupported");
8847
+ const lines = readBody31(body);
8848
+ if (lines === null || lines.length === 0 || !lines.every(record41))
8849
+ return refuse49("vtex_payments_body_unsupported");
8760
8850
  const cards = lines.filter(cardLine);
8761
- if (cards.some((line2) => own22(line2, "accountId") || own22(line2.fields ?? {}, "accountId")))
8762
- return refuse48("vtex_payments_saved_card");
8851
+ if (cards.some((line2) => own23(line2, "accountId") || own23(line2.fields ?? {}, "accountId")))
8852
+ return refuse49("vtex_payments_saved_card");
8763
8853
  if (cards.length === 0)
8764
- return refuse48("vtex_payments_body_unsupported");
8765
- if (lines.length !== 1 || own22(lines[0], "id"))
8766
- return refuse48("vtex_payments_split_payment");
8854
+ return refuse49("vtex_payments_body_unsupported");
8855
+ if (lines.length !== 1 || own23(lines[0], "id"))
8856
+ return refuse49("vtex_payments_split_payment");
8767
8857
  const line = lines[0];
8768
8858
  if (!inOrder10(line, VTEX_PAYMENTS_LINE_KEYS) || line.groupName !== "creditCardPaymentGroup")
8769
- return refuse48("vtex_payments_body_unsupported");
8770
- if (!(typeof line.currencyCode === "string" && CURRENCY6.test(line.currencyCode)) || !own22(VTEX_PAYMENTS_NETWORKS, line.paymentSystem) || !Number.isSafeInteger(line.paymentSystem) || !(count(line.value) && line.value > 0))
8771
- return refuse48("vtex_payments_body_unsupported");
8772
- if (line.installments !== 1 || line.referenceValue !== line.value || own22(line, "installmentsInterestRate") && line.installmentsInterestRate !== 0 || own22(line, "installmentsValue") && line.installmentsValue !== line.value)
8773
- return refuse48("vtex_payments_installments");
8859
+ return refuse49("vtex_payments_body_unsupported");
8860
+ if (!(typeof line.currencyCode === "string" && CURRENCY7.test(line.currencyCode)) || !own23(VTEX_PAYMENTS_NETWORKS, line.paymentSystem) || !Number.isSafeInteger(line.paymentSystem) || !(count(line.value) && line.value > 0))
8861
+ return refuse49("vtex_payments_body_unsupported");
8862
+ if (line.installments !== 1 || line.referenceValue !== line.value || own23(line, "installmentsInterestRate") && line.installmentsInterestRate !== 0 || own23(line, "installmentsValue") && line.installmentsValue !== line.value)
8863
+ return refuse49("vtex_payments_installments");
8774
8864
  const transaction = line.transaction;
8775
- if (!record40(transaction) || Object.keys(transaction).join() !== "id,merchantName" || !(typeof transaction.id === "string" && TRANSACTION_ID.test(transaction.id)) || !(typeof transaction.merchantName === "string" && MERCHANT_NAME.test(transaction.merchantName)))
8776
- return refuse48("vtex_payments_body_unsupported");
8865
+ if (!record41(transaction) || Object.keys(transaction).join() !== "id,merchantName" || !(typeof transaction.id === "string" && TRANSACTION_ID.test(transaction.id)) || !(typeof transaction.merchantName === "string" && MERCHANT_NAME.test(transaction.merchantName)))
8866
+ return refuse49("vtex_payments_body_unsupported");
8777
8867
  if (target && transaction.id.toUpperCase() !== target.transactionId.toUpperCase())
8778
- return refuse48("vtex_payments_split_payment");
8779
- return fieldsSound(line.fields) ? CARD47 : refuse48("vtex_payments_body_unsupported");
8868
+ return refuse49("vtex_payments_split_payment");
8869
+ return fieldsSound(line.fields) ? CARD48 : refuse49("vtex_payments_body_unsupported");
8780
8870
  }
8781
8871
  function vtexPaymentsAmount(body) {
8782
8872
  if (vtexPaymentsBodyVerdict(body).verdict !== "card")
@@ -8821,14 +8911,15 @@ var vtex_payments_default = /* @__PURE__ */ registerProcessor({
8821
8911
  return vtexPaymentsBodyVerdict(body);
8822
8912
  const target = vtexPaymentsCardTarget(url);
8823
8913
  if (target === null)
8824
- return refuse48("vtex_payments_url_refused");
8825
- return target.fallback ? refuse48("vtex_payments_fallback_refused") : vtexPaymentsBodyVerdict(body, target);
8914
+ return refuse49("vtex_payments_url_refused");
8915
+ return target.fallback ? refuse49("vtex_payments_fallback_refused") : vtexPaymentsBodyVerdict(body, target);
8826
8916
  },
8827
- amount: (template) => record40(template) && isVtexPaymentsCardUrl(template.url) ? vtexPaymentsAmount(template.body) : null
8917
+ amount: (template) => record41(template) && isVtexPaymentsCardUrl(template.url) ? vtexPaymentsAmount(template.body) : null
8828
8918
  });
8829
8919
  // src/processors/index.generated.js
8830
8920
  var REGISTERED_MODULES = Object.freeze({
8831
8921
  aurus: aurus_default,
8922
+ bigcommerce: bigcommerce_default,
8832
8923
  bluesnap: bluesnap_default,
8833
8924
  cardlink_vpos: cardlink_vpos_default,
8834
8925
  eghl: eghl_default,
@@ -9122,12 +9213,12 @@ var KEEP_ON_FILE_REFUSAL = "Refusing to pay: this Primer payment would keep the
9122
9213
  var UNSUPPORTED_SDK_REFUSAL = "Refusing to pay: this checkout uses a Primer SDK Agentcard does not support yet. Nothing was sent.";
9123
9214
  var NETWORK_MISMATCH_REFUSAL = "Refusing to pay: this Primer payment names a card network that is not your card's. Nothing was sent.";
9124
9215
  var FILL_REFUSAL = "Could not fill the card fields for Primer. Nothing was sent.";
9125
- var BODY_LIMIT48 = 16384;
9216
+ var BODY_LIMIT49 = 16384;
9126
9217
  var RESPONSE_LIMIT = 32768;
9127
9218
  var ROOT_KEYS10 = ["paymentInstrument", "userDescription", "tokenType", "paymentFlow"];
9128
9219
  var INSTRUMENT_KEYS = ["number", "cvv", "expirationMonth", "expirationYear", "cardholderName", "preferredNetwork"];
9129
9220
  var REQUIRED_INSTRUMENT_KEYS = ["number", "cvv", "expirationMonth", "expirationYear"];
9130
- var record41 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
9221
+ var record42 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
9131
9222
  var owns8 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
9132
9223
  var exact5 = (pattern, value) => typeof value === "string" && pattern.exec(value)?.[0] === value;
9133
9224
  var text10 = (value, max) => typeof value === "string" && value.length <= max && !/[\u0000-\u001f\u007f]/.test(value);
@@ -9150,7 +9241,7 @@ function isPrimerTokenizeUrl(url, method = "POST") {
9150
9241
  return parsed.href === url && parsed.protocol === "https:" && !parsed.port && !parsed.username && !parsed.password && !parsed.search && !parsed.hash && PRIMER_PCI_HOSTS.includes(parsed.hostname) && parsed.pathname === PRIMER_TOKENIZE_PATH;
9151
9242
  }
9152
9243
  function judgeBody6(body) {
9153
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT48)
9244
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT49)
9154
9245
  return null;
9155
9246
  let value;
9156
9247
  try {
@@ -9159,12 +9250,12 @@ function judgeBody6(body) {
9159
9250
  catch {
9160
9251
  return null;
9161
9252
  }
9162
- if (!record41(value) || !roundTrips(value, body))
9253
+ if (!record42(value) || !roundTrips(value, body))
9163
9254
  return null;
9164
9255
  if (!Object.keys(value).every((key) => ROOT_KEYS10.includes(key)) || !owns8(value, "paymentInstrument"))
9165
9256
  return null;
9166
9257
  const instrument = value.paymentInstrument;
9167
- if (!record41(instrument) || !Object.keys(instrument).every((key) => INSTRUMENT_KEYS.includes(key)) || !REQUIRED_INSTRUMENT_KEYS.every((key) => owns8(instrument, key)))
9258
+ if (!record42(instrument) || !Object.keys(instrument).every((key) => INSTRUMENT_KEYS.includes(key)) || !REQUIRED_INSTRUMENT_KEYS.every((key) => owns8(instrument, key)))
9168
9259
  return null;
9169
9260
  if (!digits3(instrument.number, 12, 19) || !digits3(instrument.cvv, 3, 4) || !exact5(MONTH25, instrument.expirationMonth) || !exact5(YEAR26, instrument.expirationYear))
9170
9261
  return null;
@@ -9192,7 +9283,7 @@ var CLIENT_TOKEN = /^[A-Za-z0-9._~+/=-]{16,4096}$/;
9192
9283
  var REQUEST_ID = /^[A-Za-z0-9-]{1,64}$/;
9193
9284
  var API_VERSION = /^2\.[0-9]{1,2}$/;
9194
9285
  function readHeaders(headers) {
9195
- if (!record41(headers))
9286
+ if (!record42(headers))
9196
9287
  return null;
9197
9288
  const folded = /* @__PURE__ */ new Map();
9198
9289
  for (const [name, value] of Object.entries(headers)) {
@@ -9239,7 +9330,7 @@ function onTokenizePath(url) {
9239
9330
  }
9240
9331
  }
9241
9332
  function primerTokenizeRefusal(request) {
9242
- if (!record41(request) || request.method !== "POST" || !isPrimerTokenizeUrl(request.url))
9333
+ if (!record42(request) || request.method !== "POST" || !isPrimerTokenizeUrl(request.url))
9243
9334
  return "unsupported";
9244
9335
  return headersRefusal(request.headers) ?? primerBodyRefusal(request.body);
9245
9336
  }
@@ -9254,7 +9345,7 @@ function primerCardOnFileRefusal(url, options, policy = PRIMER_SESSION_CARD_ON_F
9254
9345
  return "unsupported";
9255
9346
  if (new URL(url).hostname !== LIVE_PCI_HOST)
9256
9347
  return null;
9257
- return primerCardOnFileDisclosure(url, policy) && record41(options) && options.keepOnFile === true ? null : "keep_on_file";
9348
+ return primerCardOnFileDisclosure(url, policy) && record42(options) && options.keepOnFile === true ? null : "keep_on_file";
9258
9349
  }
9259
9350
  function primerRefusalMessage(reason) {
9260
9351
  if (reason === "keep_on_file")
@@ -9338,7 +9429,7 @@ function readAnswer(body) {
9338
9429
  return null;
9339
9430
  try {
9340
9431
  const value = JSON.parse(body);
9341
- return record41(value) ? value : null;
9432
+ return record42(value) ? value : null;
9342
9433
  }
9343
9434
  catch {
9344
9435
  return null;
@@ -9347,16 +9438,16 @@ function readAnswer(body) {
9347
9438
  var tokenValue = (value) => exact5(TOKEN4, value) && !panLike2(value);
9348
9439
  var optional = (value, key, check) => !owns8(value, key) || value[key] === null || check(value[key]);
9349
9440
  function cardDetails(data) {
9350
- if (!record41(data) || !exact5(/^[0-9]{4}$/, data.last4Digits))
9441
+ if (!record42(data) || !exact5(/^[0-9]{4}$/, data.last4Digits))
9351
9442
  return null;
9352
- if (!optional(data, "first6Digits", (v) => exact5(/^[0-9]{6}$/, v)) || !optional(data, "expirationMonth", (v) => exact5(RESPONSE_MONTH, v)) || !optional(data, "expirationYear", (v) => exact5(RESPONSE_YEAR, v)) || !optional(data, "cardholderName", (v) => plain2(v, 256)) || !optional(data, "network", (v) => exact5(NETWORK_NAME2, v)) || !optional(data, "isNetworkTokenized", (v) => typeof v === "boolean") || !optional(data, "binData", record41))
9443
+ if (!optional(data, "first6Digits", (v) => exact5(/^[0-9]{6}$/, v)) || !optional(data, "expirationMonth", (v) => exact5(RESPONSE_MONTH, v)) || !optional(data, "expirationYear", (v) => exact5(RESPONSE_YEAR, v)) || !optional(data, "cardholderName", (v) => plain2(v, 256)) || !optional(data, "network", (v) => exact5(NETWORK_NAME2, v)) || !optional(data, "isNetworkTokenized", (v) => typeof v === "boolean") || !optional(data, "binData", record42))
9353
9444
  return null;
9354
9445
  const safe = { last4Digits: data.last4Digits };
9355
9446
  for (const key of ["first6Digits", "expirationMonth", "expirationYear", "cardholderName", "network", "isNetworkTokenized"]) {
9356
9447
  if (owns8(data, key) && data[key] !== null)
9357
9448
  safe[key] = data[key];
9358
9449
  }
9359
- if (record41(data.binData)) {
9450
+ if (record42(data.binData)) {
9360
9451
  const bin = {};
9361
9452
  for (const key of BIN_KEYS) {
9362
9453
  if (!owns8(data.binData, key) || data.binData[key] === null)
@@ -9374,7 +9465,7 @@ function cardDetails(data) {
9374
9465
  function threeDsSummary(value) {
9375
9466
  if (value === void 0 || value === null)
9376
9467
  return null;
9377
- if (!record41(value) || !exact5(CODE10, value.responseCode) || !optional(value, "reasonCode", (v) => exact5(CODE10, v)) || !optional(value, "reasonText", (v) => plain2(v, 256)) || !optional(value, "protocolVersion", (v) => v === "" || exact5(PROTOCOL2, v)) || !optional(value, "challengeIssued", (v) => typeof v === "boolean"))
9468
+ if (!record42(value) || !exact5(CODE10, value.responseCode) || !optional(value, "reasonCode", (v) => exact5(CODE10, v)) || !optional(value, "reasonText", (v) => plain2(v, 256)) || !optional(value, "protocolVersion", (v) => v === "" || exact5(PROTOCOL2, v)) || !optional(value, "challengeIssued", (v) => typeof v === "boolean"))
9378
9469
  return void 0;
9379
9470
  const safe = { responseCode: value.responseCode };
9380
9471
  for (const key of ["reasonCode", "reasonText", "protocolVersion", "challengeIssued"]) {
@@ -9402,7 +9493,7 @@ function rebuildToken(value) {
9402
9493
  }
9403
9494
  function primerErrorId(body) {
9404
9495
  const value = readAnswer(body);
9405
- const id = value && record41(value.error) ? value.error.errorId : null;
9496
+ const id = value && record42(value.error) ? value.error.errorId : null;
9406
9497
  return exact5(ERROR_ID, id) && !panLike2(id) ? id : null;
9407
9498
  }
9408
9499
  function matchesCard(details, card) {