@agent-cards/sdk 0.24.1 → 0.25.0

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