@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: f21676a30bdae7f57fc6f082de081b702b2e8cb4d7af10779b1d674cfd256b1d
3
+ // artifact-sha256: 59a78202e498531ace1ce3391b9ac8b385f55a86e332aca4ac7abdb807d506e7
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
@@ -357,8 +357,8 @@ var CONTROL = /[\u0000-\u001f\u007f]/;
357
357
  var cardLikeName = (name) => (name.match(/[0-9]/g) ?? []).length >= 12;
358
358
  var record3 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
359
359
  var sameKeys = (value, keys) => {
360
- const own23 = Object.keys(value);
361
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
360
+ const own24 = Object.keys(value);
361
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
362
362
  };
363
363
  var refuse4 = (code) => Object.freeze({ verdict: "refuse", code });
364
364
  var CARD4 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
@@ -776,8 +776,8 @@ var PADDLE_TOKENEX_PSP = "paddle_tokenex";
776
776
  var PADDLE_TOKENEX_FACT_KEYS = /* @__PURE__ */ Object.freeze(["card_first_six", "card_last_four", "expiry_month", "expiry_year", "card_brand"]);
777
777
  var record4 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
778
778
  var sameKeys2 = (value, keys) => {
779
- const own23 = Object.keys(value);
780
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
779
+ const own24 = Object.keys(value);
780
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
781
781
  };
782
782
  var refuse7 = (code) => Object.freeze({ verdict: "refuse", code });
783
783
  var CARD6 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
@@ -1266,8 +1266,8 @@ var TEXT_LIMIT = 256;
1266
1266
  var CONTROL4 = /[\u0000-\u001f\u007f]/;
1267
1267
  var record6 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
1268
1268
  var sameKeys3 = (value, keys) => {
1269
- const own23 = Object.keys(value);
1270
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
1269
+ const own24 = Object.keys(value);
1270
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
1271
1271
  };
1272
1272
  var plainText = (value) => typeof value === "string" && value.length <= TEXT_LIMIT && !CONTROL4.test(value) && (value.match(/[0-9]/g) ?? []).length < 12;
1273
1273
  var refuse9 = (code) => Object.freeze({ verdict: "refuse", code });
@@ -1469,8 +1469,8 @@ var EXPIRATION = /^[0-9]{2}(?:0[1-9]|1[0-2])$/;
1469
1469
  var CARD_PAYMENT = "PAYMENT_CARD";
1470
1470
  var record8 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
1471
1471
  var sameKeys4 = (value, keys) => {
1472
- const own23 = Object.keys(value);
1473
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
1472
+ const own24 = Object.keys(value);
1473
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
1474
1474
  };
1475
1475
  var refuse11 = (code) => Object.freeze({ verdict: "refuse", code });
1476
1476
  var CARD10 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
@@ -1700,8 +1700,8 @@ var LOCALE = /^[a-z]{2}(?:-[A-Za-z]{2,4})?$/;
1700
1700
  var PAN_LIKE3 = /(?:[0-9][ _.:-]*){12,}/;
1701
1701
  var record9 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
1702
1702
  var sameKeys5 = (value, keys) => {
1703
- const own23 = Object.keys(value);
1704
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
1703
+ const own24 = Object.keys(value);
1704
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
1705
1705
  };
1706
1706
  var refuse13 = (code) => Object.freeze({ verdict: "refuse", code });
1707
1707
  var CARD12 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
@@ -1965,6 +1965,9 @@ function multipartFormRefusal(body, contentType, rule) {
1965
1965
  const read = judge(body, contentType, rule);
1966
1966
  return read.refusal ?? null;
1967
1967
  }
1968
+ // src/answer-card-leak.js
1969
+ 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}";
1970
+ var UTF8_WHOLE = /* @__PURE__ */ new RegExp(`^(?:${UTF8_SEQUENCE})*$`);
1968
1971
  // src/pay-nl.js
1969
1972
  var PAY_NL_PSP = "pay_nl";
1970
1973
  var PAY_NL_TOKEN_URL = "https://payment.pay.nl/v1/Payment/getCardToken/json";
@@ -2732,8 +2735,8 @@ var TEXT_LIMIT3 = 256;
2732
2735
  var CONTROL7 = /[\u0000-\u001f\u007f]/;
2733
2736
  var record13 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
2734
2737
  var sameKeys7 = (value, keys) => {
2735
- const own23 = Object.keys(value);
2736
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
2738
+ const own24 = Object.keys(value);
2739
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
2737
2740
  };
2738
2741
  var plainText3 = (value) => typeof value === "string" && value.length <= TEXT_LIMIT3 && !CONTROL7.test(value) && (value.match(/[0-9]/g) ?? []).length < 12;
2739
2742
  var refuse19 = (code) => Object.freeze({ verdict: "refuse", code });
@@ -3438,8 +3441,8 @@ var HOSTNAME = /^(?=.{1,253}$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](
3438
3441
  var PUBLISHABLE_KEY = /^[A-Za-z0-9]{16,64}$/;
3439
3442
  var record18 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
3440
3443
  var sameKeys8 = (value, keys) => {
3441
- const own23 = Object.keys(value);
3442
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
3444
+ const own24 = Object.keys(value);
3445
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
3443
3446
  };
3444
3447
  var refuse24 = (code) => Object.freeze({ verdict: "refuse", code });
3445
3448
  var CARD23 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
@@ -4130,8 +4133,8 @@ var LONG_TEXT_LIMIT = BODY_LIMIT25;
4130
4133
  var record22 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
4131
4134
  var owns6 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
4132
4135
  var sameKeys9 = (value, keys) => {
4133
- const own23 = Object.keys(value);
4134
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
4136
+ const own24 = Object.keys(value);
4137
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
4135
4138
  };
4136
4139
  var exact3 = (pattern, value) => typeof value === "string" && pattern.test(value);
4137
4140
  var printable3 = (text10) => [...text10].every((character) => {
@@ -4530,8 +4533,8 @@ var POSTAL_CODE4 = /^[A-Za-z0-9 -]{0,16}$/;
4530
4533
  var CIPHERTEXT_B64 = /^[A-Za-z0-9+/]{341}[AQgw]==$/;
4531
4534
  var record24 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
4532
4535
  var sameKeys11 = (value, keys) => {
4533
- const own23 = Object.keys(value);
4534
- return own23.length === keys.length && own23.every((key, at) => key === keys[at]);
4536
+ const own24 = Object.keys(value);
4537
+ return own24.length === keys.length && own24.every((key, at) => key === keys[at]);
4535
4538
  };
4536
4539
  var refuse29 = (code) => Object.freeze({ verdict: "refuse", code });
4537
4540
  var failed = (code) => (
@@ -5863,12 +5866,12 @@ function membersRefusal(root) {
5863
5866
  const pending = [[root, ""]];
5864
5867
  while (pending.length > 0) {
5865
5868
  const [node, path] = pending.pop();
5866
- const own23 = path === "" ? TRANSACTION_MEMBERS : owns7(RECORD_MEMBERS, path) ? RECORD_MEMBERS[path] : null;
5869
+ const own24 = path === "" ? TRANSACTION_MEMBERS : owns7(RECORD_MEMBERS, path) ? RECORD_MEMBERS[path] : null;
5867
5870
  for (const [key, child] of Object.entries(node)) {
5868
5871
  const at = Array.isArray(node) ? path : path === "" ? key : `${path}.${key}`;
5869
5872
  if (at === "checkoutCreditCard")
5870
5873
  continue;
5871
- if (own23 !== null && !own23.includes(key))
5874
+ if (own24 !== null && !own24.includes(key))
5872
5875
  return true;
5873
5876
  if (TEXT_RECORDS.includes(path) && child !== null && typeof child !== "string")
5874
5877
  return true;
@@ -6235,6 +6238,96 @@ var aurus_default = /* @__PURE__ */ registerProcessor({
6235
6238
  bodyGate: (url, body) => url !== void 0 && !isAurusTokenUrl(url) ? refuse37("aurus_url_refused") : aurusBodyVerdict(body),
6236
6239
  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."]
6237
6240
  });
6241
+ // src/processors/bigcommerce.js
6242
+ var BIGCOMMERCE_PSP = "bigcommerce";
6243
+ var BIGCOMMERCE_OPERATION = "bigcommerce.card_request";
6244
+ var BIGCOMMERCE_PAYMENTS_URL = "https://payments.bigcommerce.com/api/public/v1/orders/payments";
6245
+ var BODY_LIMIT36 = 65536;
6246
+ var CARD_KEYS16 = /* @__PURE__ */ new Set([
6247
+ "account_name",
6248
+ "month",
6249
+ "number",
6250
+ "verification_value",
6251
+ "year",
6252
+ "customer_code",
6253
+ "three_d_secure",
6254
+ "hosted_form_nonce"
6255
+ ]);
6256
+ var OTHER_INSTRUMENTS = /* @__PURE__ */ Object.freeze(["bigpay_token", "credit_card_token", "credit_card_cryptogram"]);
6257
+ var NUMBER8 = /^[0-9]{12,19}$/;
6258
+ var CURRENCY6 = /^[A-Z]{3}$/;
6259
+ var record32 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
6260
+ var own12 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
6261
+ var refuse38 = (code) => Object.freeze({ verdict: "refuse", code });
6262
+ var CARD37 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
6263
+ var CONTINUE13 = /* @__PURE__ */ Object.freeze({ verdict: "continue" });
6264
+ function isBigcommercePaymentsUrl(url) {
6265
+ return url === BIGCOMMERCE_PAYMENTS_URL;
6266
+ }
6267
+ function readBody22(body) {
6268
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT36)
6269
+ return null;
6270
+ try {
6271
+ const parsed = JSON.parse(body);
6272
+ return record32(parsed) && record32(parsed.payment) ? parsed : null;
6273
+ }
6274
+ catch {
6275
+ return null;
6276
+ }
6277
+ }
6278
+ function bigcommerceBodyVerdict(body, url) {
6279
+ if (url !== void 0 && !isBigcommercePaymentsUrl(url))
6280
+ return refuse38("bigcommerce_url_refused");
6281
+ const parsed = readBody22(body);
6282
+ if (!parsed)
6283
+ return refuse38("bigcommerce_body_unsupported");
6284
+ const { payment } = parsed;
6285
+ if (!own12(payment, "credit_card"))
6286
+ return CONTINUE13;
6287
+ const card = payment.credit_card;
6288
+ 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)) {
6289
+ return refuse38("bigcommerce_body_unsupported");
6290
+ }
6291
+ if (payment.vault_payment_instrument === true)
6292
+ return refuse38("bigcommerce_keep_on_file");
6293
+ return CARD37;
6294
+ }
6295
+ function bigcommerceAmount(template) {
6296
+ const parsed = record32(template) ? readBody22(template.body) : null;
6297
+ const order = parsed && record32(parsed.order) ? parsed.order : null;
6298
+ const total = order && record32(order.totals) ? order.totals.grand_total : void 0;
6299
+ if (!Number.isSafeInteger(total) || total <= 0 || typeof order.currency !== "string" || !CURRENCY6.test(order.currency))
6300
+ return null;
6301
+ return { amountCents: total, currency: order.currency.toLowerCase() };
6302
+ }
6303
+ var bigcommerce_default = /* @__PURE__ */ registerProcessor({
6304
+ psp: BIGCOMMERCE_PSP,
6305
+ definitions: [
6306
+ {
6307
+ psp: "bigcommerce",
6308
+ // The card request above. One host serves every BigCommerce store, test and live alike, so no sandbox host is
6309
+ // marked. Ships dark: served only to a client that declares `bigcommerce_card_form`, for a company the backend's
6310
+ // processor gate turns BigCommerce on for. `(?![\w/.%-])` ends the path for a consumer that tests `match`
6311
+ // unanchored; the exact-URL rule holds the rest.
6312
+ capability: "bigcommerce_card_form",
6313
+ match: "payments\\.bigcommerce\\.com/api/public/v1/orders/payments(?![\\w/.%-])",
6314
+ hosts: ["^payments\\.bigcommerce\\.com$"],
6315
+ encoding: "json",
6316
+ // The order's payment token and the JSON Accept. Origin, Referer and cookies never ride.
6317
+ passthroughHeaders: ["^authorization$", "^accept$"],
6318
+ jsonCardFields: [["payment", "credit_card", "number"]],
6319
+ // A payment with no new card on the same URL continues untouched (bigcommerceBodyVerdict says which).
6320
+ passWithoutCard: "payments\\.bigcommerce\\.com/api/public/v1/orders/payments"
6321
+ }
6322
+ ],
6323
+ // The request charges the store's gateway at once, so only the cardholder's device sends it, after a person approves.
6324
+ refusedOperations: [BIGCOMMERCE_OPERATION],
6325
+ // Not surveyed: reading a BigCommerce payment back takes the store's own API credentials, which Agentcard never holds.
6326
+ settlementReadback: "not_surveyed",
6327
+ exactUrl: isBigcommercePaymentsUrl,
6328
+ bodyGate: (url, body) => bigcommerceBodyVerdict(body, url),
6329
+ amount: bigcommerceAmount
6330
+ });
6238
6331
  // src/processors/bluesnap.js
6239
6332
  var BLUESNAP_PSP = "bluesnap";
6240
6333
  var BLUESNAP_OPERATION = "bluesnap.card_request";
@@ -6242,16 +6335,16 @@ var BLUESNAP_HOSTS = /* @__PURE__ */ Object.freeze({ 1: "ws1.bluesnap.com", 2: "
6242
6335
  var BLUESNAP_SANDBOX_HOST = "sandpay.bluesnap.com";
6243
6336
  var BLUESNAP_CARD_KEYS = /* @__PURE__ */ Object.freeze(["cvv", "ccNumber", "expDate"]);
6244
6337
  var BLUESNAP_LEG_KEYS = /* @__PURE__ */ Object.freeze(["cvv", "expDate"]);
6245
- var BODY_LIMIT36 = 1024;
6338
+ var BODY_LIMIT37 = 1024;
6246
6339
  var TOKEN_URL2 = /^https:\/\/(ws1|ws2|sandpay)\.bluesnap\.com\/services\/2\/payment-fields-tokens\/([0-9a-f]{64}_[12]?)$/;
6247
6340
  var CARD_NUMBER18 = /^[0-9]{12,19}$/;
6248
6341
  var SECURITY_CODE22 = /^[0-9]{3,4}$/;
6249
6342
  var EXPIRY3 = /^(?:0[1-9]|1[0-2])\/20[0-9]{2}$/;
6250
6343
  var SAVED_CARD_KEYS2 = ["last4Digits", "lastFourDigits", "ccType"];
6251
- var record32 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
6252
- var own12 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
6253
- var refuse38 = (code) => Object.freeze({ verdict: "refuse", code });
6254
- var CARD37 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
6344
+ var record33 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
6345
+ var own13 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
6346
+ var refuse39 = (code) => Object.freeze({ verdict: "refuse", code });
6347
+ var CARD38 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
6255
6348
  var LEG = /* @__PURE__ */ Object.freeze({ verdict: "continue" });
6256
6349
  function bluesnapTokenUrl(url) {
6257
6350
  const match = typeof url === "string" ? TOKEN_URL2.exec(url) : null;
@@ -6263,30 +6356,30 @@ function bluesnapTokenUrl(url) {
6263
6356
  function isBluesnapTokenUrl(url) {
6264
6357
  return bluesnapTokenUrl(url) !== null;
6265
6358
  }
6266
- function readBody22(body) {
6267
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT36)
6359
+ function readBody23(body) {
6360
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT37)
6268
6361
  return null;
6269
6362
  try {
6270
6363
  const value = JSON.parse(body);
6271
- return record32(value) && JSON.stringify(value) === body ? value : null;
6364
+ return record33(value) && JSON.stringify(value) === body ? value : null;
6272
6365
  }
6273
6366
  catch {
6274
6367
  return null;
6275
6368
  }
6276
6369
  }
6277
6370
  function bluesnapBodyVerdict(body) {
6278
- const value = readBody22(body);
6371
+ const value = readBody23(body);
6279
6372
  if (value === null)
6280
- return refuse38("bluesnap_body_unsupported");
6373
+ return refuse39("bluesnap_body_unsupported");
6281
6374
  const keys = Object.keys(value);
6282
6375
  if (keys.some((key) => SAVED_CARD_KEYS2.includes(key)))
6283
- return refuse38(own12(value, "ccNumber") ? "bluesnap_body_unsupported" : "bluesnap_saved_card");
6376
+ return refuse39(own13(value, "ccNumber") ? "bluesnap_body_unsupported" : "bluesnap_saved_card");
6284
6377
  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))) {
6285
- return refuse38("bluesnap_body_unsupported");
6378
+ return refuse39("bluesnap_body_unsupported");
6286
6379
  }
6287
- 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)))
6288
- return refuse38("bluesnap_body_unsupported");
6289
- return own12(value, "ccNumber") ? CARD37 : LEG;
6380
+ 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)))
6381
+ return refuse39("bluesnap_body_unsupported");
6382
+ return own13(value, "ccNumber") ? CARD38 : LEG;
6290
6383
  }
6291
6384
  var bluesnap_default = /* @__PURE__ */ registerProcessor({
6292
6385
  psp: BLUESNAP_PSP,
@@ -6390,7 +6483,7 @@ var REQUIRED = Object.freeze([
6390
6483
  "ekashu_failure_url",
6391
6484
  "ekashu_callback_success_url"
6392
6485
  ]);
6393
- var CARD_KEYS16 = Object.freeze([
6486
+ var CARD_KEYS17 = Object.freeze([
6394
6487
  "ekashu_card_number",
6395
6488
  "ekashu_expires_end_month",
6396
6489
  "ekashu_expires_end_year",
@@ -6592,7 +6685,7 @@ var CURRENCIES2 = Object.freeze({ EUR: "eur" });
6592
6685
  var MAX_URL = 512;
6593
6686
  var MAX_ENTRY3 = 8 * 1024;
6594
6687
  var MAX_VALUE = 256;
6595
- var own13 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
6688
+ var own14 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
6596
6689
  var field2 = (name, reason) => ({ ok: false, code: "hosted_form_field_refused", field: name, reason });
6597
6690
  function cardlinkVposEntryHost(raw) {
6598
6691
  if (typeof raw !== "string" || raw.length > MAX_URL || raw.includes("?") || raw.includes("#"))
@@ -6604,7 +6697,7 @@ function cardlinkVposEntryHost(raw) {
6604
6697
  catch {
6605
6698
  return null;
6606
6699
  }
6607
- 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)
6700
+ 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)
6608
6701
  return null;
6609
6702
  return url.hostname;
6610
6703
  }
@@ -6647,7 +6740,7 @@ function cardlinkVposMerchant(mid, vposHost, merchants = CARDLINK_VPOS_MERCHANTS
6647
6740
  function entryAmount(values) {
6648
6741
  const amount2 = values.get("orderAmount");
6649
6742
  const code = values.get("currency");
6650
- const currency = typeof code === "string" && own13(CURRENCIES2, code) ? CURRENCIES2[code] : null;
6743
+ const currency = typeof code === "string" && own14(CURRENCIES2, code) ? CURRENCIES2[code] : null;
6651
6744
  if (!currency || typeof amount2 !== "string" || !/^(?:0|[1-9]\d{0,11})(?:\.\d{1,2})?$/.test(amount2))
6652
6745
  return null;
6653
6746
  const [whole2, fraction = ""] = amount2.split(".");
@@ -6702,7 +6795,7 @@ function checkCardlinkVposEntry(body, { url = null, merchants = CARDLINK_VPOS_ME
6702
6795
  return field2("payMethod", /^iris$/i.test(method) ? "not_a_card_payment" : "special_flow");
6703
6796
  const amount2 = entryAmount(values);
6704
6797
  if (!amount2)
6705
- return field2(own13(CURRENCIES2, values.get("currency")) ? "orderAmount" : "currency", "malformed");
6798
+ return field2(own14(CURRENCIES2, values.get("currency")) ? "orderAmount" : "currency", "malformed");
6706
6799
  if (!/^\d{1,30}$/.test(values.get("mid")))
6707
6800
  return field2("mid", "malformed");
6708
6801
  if (!/^[A-Za-z0-9]{1,50}$/.test(values.get("orderid")))
@@ -6739,16 +6832,16 @@ var CARDLINK_VPOS_TDS2_FIELDS = Object.freeze([
6739
6832
  ]);
6740
6833
  var PAGE_FIELDS = Object.freeze(["trid", "st", "payStep", "cmd", "startbonus", "bonusdata"]);
6741
6834
  var WALLET_FIELDS2 = Object.freeze(["walletId", "applePayResponse"]);
6742
- var CARD38 = Object.freeze({ number: "card.pan", holder: "card.holderName", month: "card.expiryMonth", year: "card.expiryYear", cvc: "card.cvv" });
6743
- var TEXT_CONTROLS = /* @__PURE__ */ new Set([CARD38.number, CARD38.holder, CARD38.cvc]);
6744
- var SELECT_CONTROLS = /* @__PURE__ */ new Set([CARD38.month, CARD38.year]);
6835
+ var CARD39 = Object.freeze({ number: "card.pan", holder: "card.holderName", month: "card.expiryMonth", year: "card.expiryYear", cvc: "card.cvv" });
6836
+ var TEXT_CONTROLS = /* @__PURE__ */ new Set([CARD39.number, CARD39.holder, CARD39.cvc]);
6837
+ var SELECT_CONTROLS = /* @__PURE__ */ new Set([CARD39.month, CARD39.year]);
6745
6838
  var MAX_PAGE3 = 256 * 1024;
6746
6839
  var COOKIE_DOMAINS = Object.freeze({
6747
6840
  "vpos.eurocommerce.gr": "eurocommerce.gr",
6748
6841
  "ecommerce.cardlink.gr": "cardlink.gr",
6749
6842
  "www.alphaecommerce.gr": "alphaecommerce.gr"
6750
6843
  });
6751
- var POST_REQUIRED = Object.freeze(["trid", "st", "cmd", CARD38.number, CARD38.holder, CARD38.month, CARD38.year, CARD38.cvc, "makepayment"]);
6844
+ var POST_REQUIRED = Object.freeze(["trid", "st", "cmd", CARD39.number, CARD39.holder, CARD39.month, CARD39.year, CARD39.cvc, "makepayment"]);
6752
6845
  var POST_EMPTY = Object.freeze(["payStep", "startbonus", "bonusdata", ...WALLET_FIELDS2]);
6753
6846
  var POST_ALLOWED = /* @__PURE__ */ new Set([...POST_REQUIRED, ...POST_EMPTY, "paymentMethod", ...CARDLINK_VPOS_TDS2_FIELDS]);
6754
6847
  var CARDLINK_VPOS_REFUSALS = Object.freeze([
@@ -6878,7 +6971,7 @@ var REQUIRED4 = Object.freeze([
6878
6971
  "CurrencyCode",
6879
6972
  "HashValue"
6880
6973
  ]);
6881
- var CARD_KEYS17 = /* @__PURE__ */ new Set(["cardno", "cardexp", "cardcvv2", "cardholder", "param2", "param4", "cvv2", "epmonth2", "epyear2", "custocp"]);
6974
+ var CARD_KEYS18 = /* @__PURE__ */ new Set(["cardno", "cardexp", "cardcvv2", "cardholder", "param2", "param4", "cvv2", "epmonth2", "epyear2", "custocp"]);
6882
6975
  var SECRET_KEYS = /* @__PURE__ */ new Set(["password"]);
6883
6976
  var STORED_KEYS2 = /* @__PURE__ */ new Set([
6884
6977
  "tokentype",
@@ -6935,7 +7028,7 @@ function checkEghlEntry(body, { url = null, merchants = EGHL_MERCHANTS } = {}) {
6935
7028
  if (value === "")
6936
7029
  continue;
6937
7030
  const folded = key.toLowerCase();
6938
- if (CARD_KEYS17.has(folded))
7031
+ if (CARD_KEYS18.has(folded))
6939
7032
  return field3(key, "card_in_entry");
6940
7033
  if (SECRET_KEYS.has(folded))
6941
7034
  return field3(key, "not_an_entry");
@@ -7067,7 +7160,7 @@ var FRISBII_REFUSED_PATHS = /* @__PURE__ */ Object.freeze({
7067
7160
  "/v1/token/cof/": "frisbii_stored_card_unsupported",
7068
7161
  "/v1/token/create_click_to_pay": "frisbii_click_to_pay_unsupported"
7069
7162
  });
7070
- var BODY_LIMIT37 = 8192;
7163
+ var BODY_LIMIT38 = 8192;
7071
7164
  var URL_LIMIT15 = 256;
7072
7165
  var CARD_NUMBER19 = /^[0-9]{12,19}$/;
7073
7166
  var MONTH19 = /^(?:0[1-9]|1[0-2])$/;
@@ -7111,13 +7204,13 @@ var BROWSER_ORDER = /* @__PURE__ */ Object.freeze([
7111
7204
  "tz"
7112
7205
  ]);
7113
7206
  var LABEL = /^[A-Za-z0-9_-]{1,64}$/;
7114
- var record33 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
7115
- var own14 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7116
- var refuse39 = (code) => Object.freeze({ verdict: "refuse", code });
7117
- var CARD39 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7207
+ var record34 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
7208
+ var own15 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7209
+ var refuse40 = (code) => Object.freeze({ verdict: "refuse", code });
7210
+ var CARD40 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7118
7211
  var text9 = (value, max) => typeof value === "string" && value.length <= max;
7119
7212
  var absentOrNull = (value) => value === void 0 || value === null;
7120
- var inOrder6 = (value, order) => Object.keys(value).every((key) => order.includes(key)) && Object.keys(value).join() === order.filter((key) => own14(value, key)).join();
7213
+ var inOrder6 = (value, order) => Object.keys(value).every((key) => order.includes(key)) && Object.keys(value).join() === order.filter((key) => own15(value, key)).join();
7121
7214
  function frisbiiTokenUrl(url) {
7122
7215
  if (typeof url !== "string" || url.length > URL_LIMIT15 || url.includes("#"))
7123
7216
  return null;
@@ -7128,7 +7221,7 @@ function frisbiiTokenUrl(url) {
7128
7221
  catch {
7129
7222
  return null;
7130
7223
  }
7131
- if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own14(FRISBII_HOSTS, parsed.hostname) || parsed.pathname !== FRISBII_TOKEN_PATH)
7224
+ if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own15(FRISBII_HOSTS, parsed.hostname) || parsed.pathname !== FRISBII_TOKEN_PATH)
7132
7225
  return null;
7133
7226
  const match = /^\?session=([A-Za-z0-9_-]{8,128})$/.exec(parsed.search);
7134
7227
  return match ? Object.freeze({ host: parsed.hostname, brand: FRISBII_HOSTS[parsed.hostname], session: match[1] }) : null;
@@ -7144,7 +7237,7 @@ function frisbiiRefusedFlowUrl(url) {
7144
7237
  catch {
7145
7238
  return null;
7146
7239
  }
7147
- if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own14(FRISBII_HOSTS, parsed.hostname) || !own14(FRISBII_REFUSED_PATHS, parsed.pathname))
7240
+ if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own15(FRISBII_HOSTS, parsed.hostname) || !own15(FRISBII_REFUSED_PATHS, parsed.pathname))
7148
7241
  return null;
7149
7242
  return FRISBII_REFUSED_PATHS[parsed.pathname];
7150
7243
  }
@@ -7158,28 +7251,28 @@ function luhn9(digits3) {
7158
7251
  }
7159
7252
  return sum % 10 === 0;
7160
7253
  }
7161
- function readBody23(body) {
7162
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT37)
7254
+ function readBody24(body) {
7255
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT38)
7163
7256
  return null;
7164
7257
  try {
7165
7258
  const value = JSON.parse(body);
7166
- return record33(value) && JSON.stringify(value) === body ? value : null;
7259
+ return record34(value) && JSON.stringify(value) === body ? value : null;
7167
7260
  }
7168
7261
  catch {
7169
7262
  return null;
7170
7263
  }
7171
7264
  }
7172
7265
  function browserInfo(info) {
7173
- 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;
7266
+ 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;
7174
7267
  }
7175
7268
  function scaBlock(block, target) {
7176
- if (!record33(block) || !inOrder6(block, SCA_ORDER) || !own14(block, "returnUrl") || !own14(block, "tokenBrowserInfo"))
7269
+ if (!record34(block) || !inOrder6(block, SCA_ORDER) || !own15(block, "returnUrl") || !own15(block, "tokenBrowserInfo"))
7177
7270
  return false;
7178
7271
  if (!Number.isSafeInteger(block.amount) || block.amount < 0 || typeof block.currency !== "string" || !/^[A-Z]{3}$/.test(block.currency))
7179
7272
  return false;
7180
7273
  if (!(absentOrNull(block.orderId) || text9(block.orderId, 128)) || !(absentOrNull(block.orderText) || text9(block.orderText, 512)))
7181
7274
  return false;
7182
- if (!(absentOrNull(block.merchantScaData) || record33(block.merchantScaData)))
7275
+ if (!(absentOrNull(block.merchantScaData) || record34(block.merchantScaData)))
7183
7276
  return false;
7184
7277
  if (!text9(block.returnUrl, 2048) || !browserInfo(block.tokenBrowserInfo))
7185
7278
  return false;
@@ -7187,16 +7280,16 @@ function scaBlock(block, target) {
7187
7280
  return back !== null && (target === null || back[1] === target.brand && back[2] === target.session);
7188
7281
  }
7189
7282
  function frisbiiBodyVerdict(body, url) {
7190
- const value = readBody23(body);
7191
- if (value === null || !inOrder6(value, BODY_ORDER) || !BODY_REQUIRED.every((key) => own14(value, key)) || BODY_REFUSED.some((key) => own14(value, key)))
7192
- return refuse39("frisbii_body_unsupported");
7283
+ const value = readBody24(body);
7284
+ if (value === null || !inOrder6(value, BODY_ORDER) || !BODY_REQUIRED.every((key) => own15(value, key)) || BODY_REFUSED.some((key) => own15(value, key)))
7285
+ return refuse40("frisbii_body_unsupported");
7193
7286
  if (value.recurring === true || value.intent === "CHARGE_AND_STORE")
7194
- return refuse39("frisbii_card_on_file");
7287
+ return refuse40("frisbii_card_on_file");
7195
7288
  const target = url === void 0 ? null : frisbiiTokenUrl(url);
7196
7289
  if (url !== void 0 && target === null)
7197
- return refuse39("frisbii_body_unsupported");
7290
+ return refuse40("frisbii_body_unsupported");
7198
7291
  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));
7199
- return sound ? CARD39 : refuse39("frisbii_body_unsupported");
7292
+ return sound ? CARD40 : refuse40("frisbii_body_unsupported");
7200
7293
  }
7201
7294
  var frisbii_default = /* @__PURE__ */ registerProcessor({
7202
7295
  psp: FRISBII_PSP,
@@ -7231,8 +7324,8 @@ var frisbii_default = /* @__PURE__ */ registerProcessor({
7231
7324
  return frisbiiBodyVerdict(body);
7232
7325
  const flow = frisbiiRefusedFlowUrl(url);
7233
7326
  if (flow !== null)
7234
- return refuse39(flow);
7235
- return isFrisbiiTokenUrl(url) ? frisbiiBodyVerdict(body, url) : refuse39("frisbii_url_refused");
7327
+ return refuse40(flow);
7328
+ return isFrisbiiTokenUrl(url) ? frisbiiBodyVerdict(body, url) : refuse40("frisbii_url_refused");
7236
7329
  },
7237
7330
  limitations: ["A live Frisbii card goes only to a merchant account a reviewed pin lists, and none is pinned yet."]
7238
7331
  });
@@ -7261,7 +7354,7 @@ var IYZICO_CARD_KEYS = /* @__PURE__ */ Object.freeze([
7261
7354
  "registerConsumerCard",
7262
7355
  "registerCard"
7263
7356
  ]);
7264
- var BODY_LIMIT38 = 4096;
7357
+ var BODY_LIMIT39 = 4096;
7265
7358
  var CARD_NUMBER20 = /^[0-9]{12,19}$/;
7266
7359
  var SECURITY_CODE24 = /^[0-9]{3,4}$/;
7267
7360
  var MONTH20 = /^(?:0?[1-9]|1[0-2])$/;
@@ -7271,8 +7364,8 @@ var CHANNELS = /* @__PURE__ */ Object.freeze(["WEB", "MOBILE_WEB", "MOBILE_IOS",
7271
7364
  var METADATA_KEYS3 = /* @__PURE__ */ Object.freeze(["lightRedesign", "pwiGrowthActionDisabled"]);
7272
7365
  var FLAG = /^[A-Za-z_]{1,16}$/;
7273
7366
  var HOLDER5 = /^[^\x00-\x1f\x7f0-9]{3,100}$/u;
7274
- var record34 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
7275
- var own15 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7367
+ var record35 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
7368
+ var own16 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7276
7369
  var inOrder7 = (value, keys) => {
7277
7370
  let at = 0;
7278
7371
  for (const name of Object.keys(value)) {
@@ -7284,17 +7377,17 @@ var inOrder7 = (value, keys) => {
7284
7377
  }
7285
7378
  return true;
7286
7379
  };
7287
- var refuse40 = (code) => Object.freeze({ verdict: "refuse", code });
7288
- var CARD40 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7380
+ var refuse41 = (code) => Object.freeze({ verdict: "refuse", code });
7381
+ var CARD41 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7289
7382
  function isIyzicoCardUrl(url) {
7290
7383
  return typeof url === "string" && IYZICO_CARD_URLS.includes(url);
7291
7384
  }
7292
- function readBody24(body) {
7293
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT38)
7385
+ function readBody25(body) {
7386
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT39)
7294
7387
  return null;
7295
7388
  try {
7296
7389
  const value = JSON.parse(body);
7297
- return record34(value) && JSON.stringify(value) === body ? value : null;
7390
+ return record35(value) && JSON.stringify(value) === body ? value : null;
7298
7391
  }
7299
7392
  catch {
7300
7393
  return null;
@@ -7306,26 +7399,26 @@ function hundredths(price) {
7306
7399
  return value > 0 ? value : null;
7307
7400
  }
7308
7401
  var holderName2 = (name) => typeof name === "string" && HOLDER5.test(name) && name.trim().split(/\s+/).filter((word) => word.length > 1).length > 1;
7309
- 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]));
7402
+ 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]));
7310
7403
  function iyzicoBodyVerdict(body) {
7311
- const value = readBody24(body);
7404
+ const value = readBody25(body);
7312
7405
  if (value === null)
7313
- return refuse40("iyzico_body_unsupported");
7406
+ return refuse41("iyzico_body_unsupported");
7314
7407
  const card = value.paymentCard;
7315
- if (record34(card) && (own15(card, "cardToken") || own15(card, "ucsToken") || own15(card, "consumerToken")) && !own15(card, "cardNumber"))
7316
- return refuse40("iyzico_saved_card");
7317
- if (own15(value, "dccPayment") || own15(value, "dccQueryRrn"))
7318
- return refuse40("iyzico_dcc_refused");
7319
- if (own15(value, "gsmNumber") || own15(value, "buyerProtected") && value.buyerProtected !== false || record34(card) && (own15(card, "registerCard") && card.registerCard !== 0 || own15(card, "registerConsumerCard") && card.registerConsumerCard !== false)) {
7320
- return refuse40("iyzico_keeps_card");
7408
+ if (record35(card) && (own16(card, "cardToken") || own16(card, "ucsToken") || own16(card, "consumerToken")) && !own16(card, "cardNumber"))
7409
+ return refuse41("iyzico_saved_card");
7410
+ if (own16(value, "dccPayment") || own16(value, "dccQueryRrn"))
7411
+ return refuse41("iyzico_dcc_refused");
7412
+ if (own16(value, "gsmNumber") || own16(value, "buyerProtected") && value.buyerProtected !== false || record35(card) && (own16(card, "registerCard") && card.registerCard !== 0 || own16(card, "registerConsumerCard") && card.registerConsumerCard !== false)) {
7413
+ return refuse41("iyzico_keeps_card");
7321
7414
  }
7322
7415
  if (Number.isSafeInteger(value.installment) && value.installment > 1)
7323
- return refuse40("iyzico_installments_refused");
7324
- 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))
7325
- return refuse40("iyzico_body_unsupported");
7326
- 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))
7327
- return refuse40("iyzico_body_unsupported");
7328
- return CARD40;
7416
+ return refuse41("iyzico_installments_refused");
7417
+ 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))
7418
+ return refuse41("iyzico_body_unsupported");
7419
+ 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))
7420
+ return refuse41("iyzico_body_unsupported");
7421
+ return CARD41;
7329
7422
  }
7330
7423
  var iyzico_default = /* @__PURE__ */ registerProcessor({
7331
7424
  psp: IYZICO_PSP,
@@ -7358,7 +7451,7 @@ var iyzico_default = /* @__PURE__ */ registerProcessor({
7358
7451
  source: "https://docs.iyzico.com/en/payment-methods/checkoutform/cf-implementation/cf-retrieve"
7359
7452
  },
7360
7453
  exactUrl: isIyzicoCardUrl,
7361
- bodyGate: (url, body) => url !== void 0 && !isIyzicoCardUrl(url) ? refuse40("iyzico_url_refused") : iyzicoBodyVerdict(body)
7454
+ bodyGate: (url, body) => url !== void 0 && !isIyzicoCardUrl(url) ? refuse41("iyzico_url_refused") : iyzicoBodyVerdict(body)
7362
7455
  });
7363
7456
  // src/processors/midtrans.js
7364
7457
  var MIDTRANS_PSP = "midtrans";
@@ -7366,14 +7459,14 @@ var MIDTRANS_OPERATION = "midtrans.card_request";
7366
7459
  var MIDTRANS_TOKEN_URL = "https://api.midtrans.com/v2/token";
7367
7460
  var MIDTRANS_SANDBOX_TOKEN_URL = "https://api.sandbox.midtrans.com/v2/token";
7368
7461
  var MIDTRANS_TOKEN_KEYS = /* @__PURE__ */ Object.freeze(["card_cvv", "card_number", "card_exp_month", "card_exp_year", "installment_term"]);
7369
- var BODY_LIMIT39 = 4096;
7462
+ var BODY_LIMIT40 = 4096;
7370
7463
  var CARD_NUMBER21 = /^[0-9]{12,19}$/;
7371
7464
  var SECURITY_CODE25 = /^[0-9]{3,4}$/;
7372
7465
  var MONTH21 = /^(?:0[1-9]|1[0-2])$/;
7373
7466
  var YEAR22 = /^20[0-9]{2}$/;
7374
7467
  var TERM = /^[0-9]{1,3}$/;
7375
- var record35 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
7376
- var own16 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7468
+ var record36 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
7469
+ var own17 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7377
7470
  var inOrder8 = (value, keys) => {
7378
7471
  let at = 0;
7379
7472
  for (const name of Object.keys(value)) {
@@ -7385,18 +7478,18 @@ var inOrder8 = (value, keys) => {
7385
7478
  }
7386
7479
  return true;
7387
7480
  };
7388
- var refuse41 = (code) => Object.freeze({ verdict: "refuse", code });
7389
- var CARD41 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7481
+ var refuse42 = (code) => Object.freeze({ verdict: "refuse", code });
7482
+ var CARD42 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7390
7483
  function isMidtransTokenUrl(url) {
7391
7484
  return url === MIDTRANS_TOKEN_URL || url === MIDTRANS_SANDBOX_TOKEN_URL;
7392
7485
  }
7393
- function readBody25(body) {
7394
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT39)
7486
+ function readBody26(body) {
7487
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT40)
7395
7488
  return null;
7396
7489
  let value;
7397
7490
  try {
7398
7491
  value = JSON.parse(body);
7399
- if (!record35(value) || JSON.stringify(value) !== body)
7492
+ if (!record36(value) || JSON.stringify(value) !== body)
7400
7493
  return null;
7401
7494
  }
7402
7495
  catch {
@@ -7405,20 +7498,20 @@ function readBody25(body) {
7405
7498
  return value;
7406
7499
  }
7407
7500
  function midtransBodyVerdict(body) {
7408
- const value = readBody25(body);
7501
+ const value = readBody26(body);
7409
7502
  if (value === null || !inOrder8(value, MIDTRANS_TOKEN_KEYS)) {
7410
- if (record35(value) && (own16(value, "token_id") || own16(value, "two_click")) && !own16(value, "card_number"))
7411
- return refuse41("midtrans_saved_card");
7412
- return refuse41("midtrans_body_unsupported");
7503
+ if (record36(value) && (own17(value, "token_id") || own17(value, "two_click")) && !own17(value, "card_number"))
7504
+ return refuse42("midtrans_saved_card");
7505
+ return refuse42("midtrans_body_unsupported");
7413
7506
  }
7414
- if (!own16(value, "card_cvv") || !own16(value, "card_number") || !own16(value, "card_exp_month") || !own16(value, "card_exp_year")) {
7415
- return refuse41("midtrans_body_unsupported");
7507
+ if (!own17(value, "card_cvv") || !own17(value, "card_number") || !own17(value, "card_exp_month") || !own17(value, "card_exp_year")) {
7508
+ return refuse42("midtrans_body_unsupported");
7416
7509
  }
7417
7510
  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))
7418
- return refuse41("midtrans_body_unsupported");
7419
- if (own16(value, "installment_term") && (typeof value.installment_term !== "string" || !TERM.test(value.installment_term)))
7420
- return refuse41("midtrans_body_unsupported");
7421
- return CARD41;
7511
+ return refuse42("midtrans_body_unsupported");
7512
+ if (own17(value, "installment_term") && (typeof value.installment_term !== "string" || !TERM.test(value.installment_term)))
7513
+ return refuse42("midtrans_body_unsupported");
7514
+ return CARD42;
7422
7515
  }
7423
7516
  var midtrans_default = /* @__PURE__ */ registerProcessor({
7424
7517
  psp: MIDTRANS_PSP,
@@ -7453,20 +7546,20 @@ var midtrans_default = /* @__PURE__ */ registerProcessor({
7453
7546
  var MONEI_PSP = "monei";
7454
7547
  var MONEI_OPERATION = "monei.card_request";
7455
7548
  var MONEI_TOKENS_URL = "https://api.monei.com/v1/tokens";
7456
- var BODY_LIMIT40 = 1024;
7549
+ var BODY_LIMIT41 = 1024;
7457
7550
  var PAYMENT_ID = /^(?:[0-9a-f]{32}|[0-9a-f]{40})$/;
7458
7551
  var MONEI_CARD_KEYS = /* @__PURE__ */ Object.freeze(["number", "expMonth", "expYear", "cvc"]);
7459
- var NUMBER8 = /^[0-9]{12,19}$/;
7552
+ var NUMBER9 = /^[0-9]{12,19}$/;
7460
7553
  var MONTH22 = /^(?:0[1-9]|1[0-2])$/;
7461
7554
  var YEAR23 = /^[0-9]{2}$/;
7462
7555
  var CODE8 = /^[0-9]{3,4}$/;
7463
- var record36 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
7556
+ var record37 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
7464
7557
  var keysAre2 = (value, keys) => {
7465
7558
  const found = Object.keys(value);
7466
7559
  return found.length === keys.length && found.every((key, at) => key === keys[at]);
7467
7560
  };
7468
- var refuse42 = (code) => Object.freeze({ verdict: "refuse", code });
7469
- var CARD42 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7561
+ var refuse43 = (code) => Object.freeze({ verdict: "refuse", code });
7562
+ var CARD43 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7470
7563
  function luhn10(digits3) {
7471
7564
  let sum = 0;
7472
7565
  for (let at = 0; at < digits3.length; at += 1) {
@@ -7483,12 +7576,12 @@ function luhn10(digits3) {
7483
7576
  function isMoneiTokensUrl(url) {
7484
7577
  return url === MONEI_TOKENS_URL;
7485
7578
  }
7486
- function readBody26(body) {
7487
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT40)
7579
+ function readBody27(body) {
7580
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT41)
7488
7581
  return null;
7489
7582
  try {
7490
7583
  const value = JSON.parse(body);
7491
- return record36(value) && JSON.stringify(value) === body ? value : null;
7584
+ return record37(value) && JSON.stringify(value) === body ? value : null;
7492
7585
  }
7493
7586
  catch {
7494
7587
  return null;
@@ -7496,19 +7589,19 @@ function readBody26(body) {
7496
7589
  }
7497
7590
  function moneiBodyVerdict(body, url) {
7498
7591
  if (url !== void 0 && !isMoneiTokensUrl(url))
7499
- return refuse42("monei_url_refused");
7500
- const value = readBody26(body);
7592
+ return refuse43("monei_url_refused");
7593
+ const value = readBody27(body);
7501
7594
  if (value === null || !keysAre2(value, ["paymentId", "paymentMethod"]) || typeof value.paymentId !== "string" || !PAYMENT_ID.test(value.paymentId))
7502
- return refuse42("monei_body_unsupported");
7595
+ return refuse43("monei_body_unsupported");
7503
7596
  const method = value.paymentMethod;
7504
- if (!record36(method) || !keysAre2(method, ["card"]) || !record36(method.card) || !keysAre2(method.card, MONEI_CARD_KEYS))
7505
- return refuse42("monei_body_unsupported");
7597
+ if (!record37(method) || !keysAre2(method, ["card"]) || !record37(method.card) || !keysAre2(method.card, MONEI_CARD_KEYS))
7598
+ return refuse43("monei_body_unsupported");
7506
7599
  const { number, expMonth, expYear, cvc } = method.card;
7507
7600
  if (![number, expMonth, expYear, cvc].every((part) => typeof part === "string"))
7508
- return refuse42("monei_body_unsupported");
7509
- if (!NUMBER8.test(number) || !luhn10(number) || !MONTH22.test(expMonth) || !YEAR23.test(expYear) || !CODE8.test(cvc))
7510
- return refuse42("monei_body_unsupported");
7511
- return CARD42;
7601
+ return refuse43("monei_body_unsupported");
7602
+ if (!NUMBER9.test(number) || !luhn10(number) || !MONTH22.test(expMonth) || !YEAR23.test(expYear) || !CODE8.test(cvc))
7603
+ return refuse43("monei_body_unsupported");
7604
+ return CARD43;
7512
7605
  }
7513
7606
  var MONEI_MERCHANT_PINS = /* @__PURE__ */ Object.freeze([
7514
7607
  Object.freeze({ merchant: "Genuins", accountIds: Object.freeze(["8d58ab4c-4ad0-4053-b18f-79d80e9ee158"]), merchantUrls: Object.freeze(["https://genuins.com/"]) })
@@ -7572,9 +7665,9 @@ var OCEANPAYMENT_FORM_FIELDS = /* @__PURE__ */ Object.freeze([
7572
7665
  "reference"
7573
7666
  ]);
7574
7667
  var URL_LIMIT16 = 2048;
7575
- var BODY_LIMIT41 = 8192;
7668
+ var BODY_LIMIT42 = 8192;
7576
7669
  var SEND_PAY = /^\/gateway\/sendPay;jsessionid=[A-Za-z0-9._!-]{16,128}$/;
7577
- var own17 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7670
+ var own18 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7578
7671
  var exact4 = (pattern, value) => typeof value === "string" && pattern.test(value);
7579
7672
  var CARD_RUN = /[0-9]{12}/;
7580
7673
  var printable5 = (max) => (value) => typeof value === "string" && value.length <= max && /^[\x20-\x7e]*$/.test(value) && !CARD_RUN.test(value);
@@ -7621,7 +7714,7 @@ function oceanpaymentSendPayUrl(url) {
7621
7714
  catch {
7622
7715
  return null;
7623
7716
  }
7624
- if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own17(OCEANPAYMENT_HOSTS, parsed.hostname) || !SEND_PAY.test(parsed.pathname))
7717
+ if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own18(OCEANPAYMENT_HOSTS, parsed.hostname) || !SEND_PAY.test(parsed.pathname))
7625
7718
  return null;
7626
7719
  return Object.freeze({ host: parsed.hostname, environment: OCEANPAYMENT_HOSTS[parsed.hostname] });
7627
7720
  }
@@ -7649,7 +7742,7 @@ function formDecode2(raw) {
7649
7742
  return formEncode3(value) === raw ? value : null;
7650
7743
  }
7651
7744
  function readPairs2(body) {
7652
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT41)
7745
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT42)
7653
7746
  return null;
7654
7747
  const pairs = [];
7655
7748
  for (const chunk of body.split("&")) {
@@ -7734,7 +7827,7 @@ var PAYMENTWALL_PSP = "paymentwall";
7734
7827
  var PAYMENTWALL_OPERATION = "paymentwall.card_request";
7735
7828
  var PAYMENTWALL_TOKEN_URL = "https://pwgateway.com/api/token";
7736
7829
  var PAYMENTWALL_SANDBOX_TOKEN_URL = "https://api.paymentwall.com/api/brick/token";
7737
- var BODY_LIMIT42 = 2048;
7830
+ var BODY_LIMIT43 = 2048;
7738
7831
  var KEY3 = "public_key";
7739
7832
  var PUBLIC_KEY2 = /^(?:t_)?[A-Za-z0-9]{16,64}$/;
7740
7833
  var SHAPES3 = /* @__PURE__ */ Object.freeze({
@@ -7744,8 +7837,8 @@ var SHAPES3 = /* @__PURE__ */ Object.freeze({
7744
7837
  "card[exp_year]": /^(?:[0-9]{2}|20[0-9]{2})$/,
7745
7838
  "card[cvv]": /^[0-9]{3,4}$/
7746
7839
  });
7747
- var refuse43 = (code) => Object.freeze({ verdict: "refuse", code });
7748
- var CARD43 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7840
+ var refuse44 = (code) => Object.freeze({ verdict: "refuse", code });
7841
+ var CARD44 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
7749
7842
  function luhn11(digits3) {
7750
7843
  let sum = 0;
7751
7844
  for (let at = 0; at < digits3.length; at += 1) {
@@ -7773,7 +7866,7 @@ function paymentwallKeyEnvironment(publicKey) {
7773
7866
  return publicKey.startsWith("t_") ? "sandbox" : "production";
7774
7867
  }
7775
7868
  function readPairs3(body) {
7776
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT42 || !/^[A-Za-z0-9_[\]=&]+$/.test(body))
7869
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT43 || !/^[A-Za-z0-9_[\]=&]+$/.test(body))
7777
7870
  return null;
7778
7871
  const pairs = /* @__PURE__ */ new Map();
7779
7872
  for (const chunk of body.split("&")) {
@@ -7789,21 +7882,21 @@ function readPairs3(body) {
7789
7882
  }
7790
7883
  function paymentwallBodyVerdict(body, url) {
7791
7884
  if (url !== void 0 && !isPaymentwallTokenUrl(url))
7792
- return refuse43("paymentwall_url_refused");
7885
+ return refuse44("paymentwall_url_refused");
7793
7886
  const pairs = readPairs3(body);
7794
7887
  if (pairs === null)
7795
- return refuse43("paymentwall_body_unsupported");
7888
+ return refuse44("paymentwall_body_unsupported");
7796
7889
  if (pairs.has("card[token]") && !pairs.has("card[number]"))
7797
- return refuse43("paymentwall_saved_card");
7890
+ return refuse44("paymentwall_saved_card");
7798
7891
  const keys = Object.keys(SHAPES3);
7799
7892
  if (pairs.size !== keys.length || !keys.every((key) => pairs.has(key) && SHAPES3[key].test(pairs.get(key)))) {
7800
- return refuse43("paymentwall_body_unsupported");
7893
+ return refuse44("paymentwall_body_unsupported");
7801
7894
  }
7802
7895
  if (!luhn11(pairs.get("card[number]")))
7803
- return refuse43("paymentwall_body_unsupported");
7896
+ return refuse44("paymentwall_body_unsupported");
7804
7897
  if (url !== void 0 && paymentwallKeyEnvironment(pairs.get(KEY3)) !== paymentwallUrlEnvironment(url))
7805
- return refuse43("paymentwall_key_refused");
7806
- return CARD43;
7898
+ return refuse44("paymentwall_key_refused");
7899
+ return CARD44;
7807
7900
  }
7808
7901
  var paymentwall_default = /* @__PURE__ */ registerProcessor({
7809
7902
  psp: PAYMENTWALL_PSP,
@@ -7953,7 +8046,7 @@ var PAYSTACK_BODY_KEYS = /* @__PURE__ */ Object.freeze([
7953
8046
  "transaction_type"
7954
8047
  ]);
7955
8048
  var OPTIONAL = /* @__PURE__ */ new Set(["access_code", "card_holder_name", "transaction_type"]);
7956
- var BODY_LIMIT43 = 4096;
8049
+ var BODY_LIMIT44 = 4096;
7957
8050
  var CIPHERTEXT_BYTES2 = [62, 63, 64];
7958
8051
  var BASE646 = /^[A-Za-z0-9+/]+={0,2}$/;
7959
8052
  var SHAPES4 = /* @__PURE__ */ Object.freeze({
@@ -7967,8 +8060,8 @@ var SHAPES4 = /* @__PURE__ */ Object.freeze({
7967
8060
  card_holder_name: /^[^\x00-\x1f\x7f0-9]{1,128}$/u,
7968
8061
  transaction_type: /^[a-z_]{1,32}$/
7969
8062
  });
7970
- var own18 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
7971
- var refuse44 = (code) => Object.freeze({ verdict: "refuse", code });
8063
+ var own19 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8064
+ var refuse45 = (code) => Object.freeze({ verdict: "refuse", code });
7972
8065
  function paystackFormValue(value) {
7973
8066
  return encodeURIComponent(String(value)).replace(/%20/g, "+").replace(/[!'()*~]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);
7974
8067
  }
@@ -7991,7 +8084,7 @@ function isCiphertext2(value) {
7991
8084
  return btoa(binary) === value && CIPHERTEXT_BYTES2.includes(binary.length);
7992
8085
  }
7993
8086
  function readForm3(body) {
7994
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT43)
8087
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT44)
7995
8088
  return null;
7996
8089
  const entries = [];
7997
8090
  for (const part of body.split("&")) {
@@ -8010,21 +8103,21 @@ function readForm3(body) {
8010
8103
  function paystackBodyVerdict(body) {
8011
8104
  const entries = readForm3(body);
8012
8105
  if (entries === null)
8013
- return refuse44("paystack_body_unsupported");
8106
+ return refuse45("paystack_body_unsupported");
8014
8107
  const keys = entries.map(([key]) => key);
8015
8108
  if (keys.includes("subscription"))
8016
- return refuse44("paystack_subscription");
8109
+ return refuse45("paystack_subscription");
8017
8110
  if (keys.includes("remember_card") && entries.find(([key]) => key === "remember_card")[1] !== "false")
8018
- return refuse44("paystack_saved_card");
8111
+ return refuse45("paystack_saved_card");
8019
8112
  const expected = PAYSTACK_BODY_KEYS.filter((key) => !OPTIONAL.has(key) || keys.includes(key));
8020
8113
  if (keys.length !== expected.length || keys.some((key, i) => key !== expected[i]))
8021
- return refuse44("paystack_body_unsupported");
8114
+ return refuse45("paystack_body_unsupported");
8022
8115
  const fields = Object.fromEntries(entries);
8023
8116
  if (!isCiphertext2(fields.clientdata))
8024
- return refuse44("paystack_body_unsupported");
8117
+ return refuse45("paystack_body_unsupported");
8025
8118
  for (const [key, shape] of Object.entries(SHAPES4)) {
8026
- if (own18(fields, key) && !shape.test(fields[key]))
8027
- return refuse44("paystack_body_unsupported");
8119
+ if (own19(fields, key) && !shape.test(fields[key]))
8120
+ return refuse45("paystack_body_unsupported");
8028
8121
  }
8029
8122
  return Object.freeze({ verdict: "card", fields: Object.freeze(fields) });
8030
8123
  }
@@ -8051,7 +8144,7 @@ var paystack_default = /* @__PURE__ */ registerProcessor({
8051
8144
  // Not surveyed: reading a charge back takes the merchant's secret key, which Agentcard never holds.
8052
8145
  settlementReadback: "not_surveyed",
8053
8146
  exactUrl: isPaystackChargeUrl,
8054
- bodyGate: (url, body) => url !== void 0 && !isPaystackChargeUrl(url) ? refuse44("paystack_url_refused") : paystackBodyVerdict(body),
8147
+ bodyGate: (url, body) => url !== void 0 && !isPaystackChargeUrl(url) ? refuse45("paystack_url_refused") : paystackBodyVerdict(body),
8055
8148
  // No amount reader: the charge names none, so the agent's pair is the figure the cardholder approves.
8056
8149
  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."]
8057
8150
  });
@@ -8059,7 +8152,7 @@ var paystack_default = /* @__PURE__ */ registerProcessor({
8059
8152
  var PROCESSOUT_PSP = "processout";
8060
8153
  var PROCESSOUT_OPERATION = "processout.card_request";
8061
8154
  var URL_LIMIT17 = 512;
8062
- var BODY_LIMIT44 = 4096;
8155
+ var BODY_LIMIT45 = 4096;
8063
8156
  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})$/;
8064
8157
  var PAGE_KEYS2 = /* @__PURE__ */ Object.freeze(["name", "contact", "preferred_scheme"]);
8065
8158
  var CONTACT_KEYS = /* @__PURE__ */ Object.freeze(["address1", "address2", "city", "state", "country_code", "zip"]);
@@ -8074,7 +8167,7 @@ var DEVICE_KEYS4 = /* @__PURE__ */ Object.freeze([
8074
8167
  ]);
8075
8168
  var PROCESSOUT_CARD_KEYS = /* @__PURE__ */ Object.freeze(["number", "exp_month", "exp_year", "cvc2"]);
8076
8169
  var BODY_KEYS3 = /* @__PURE__ */ new Set([...PAGE_KEYS2, "device", ...DEVICE_KEYS4, ...PROCESSOUT_CARD_KEYS]);
8077
- var NUMBER9 = /^[0-9]{12,19}$/;
8170
+ var NUMBER10 = /^[0-9]{12,19}$/;
8078
8171
  var MONTH23 = /^(?:[1-9]|1[0-2])$/;
8079
8172
  var YEAR24 = /^20[0-9]{2}$/;
8080
8173
  var CODE9 = /^[0-9]{3,4}$/;
@@ -8082,10 +8175,10 @@ var TEXT_LIMIT14 = 256;
8082
8175
  var SCHEME = /^[A-Za-z][A-Za-z0-9 _-]{0,31}$/;
8083
8176
  var LANGUAGE5 = /^[A-Za-z]{1,8}(?:-[A-Za-z0-9]{1,8}){0,4}$/;
8084
8177
  var PAN_LIKE7 = /(?:[0-9][^0-9A-Za-z]*){12,}/;
8085
- var record37 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
8086
- var own19 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8087
- var refuse45 = (code) => Object.freeze({ verdict: "refuse", code });
8088
- var CARD44 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
8178
+ var record38 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
8179
+ var own20 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8180
+ var refuse46 = (code) => Object.freeze({ verdict: "refuse", code });
8181
+ var CARD45 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
8089
8182
  var BASE647 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
8090
8183
  function base64Of(text10) {
8091
8184
  let out = "";
@@ -8122,12 +8215,12 @@ function processoutCardTarget(url) {
8122
8215
  function isProcessoutCardUrl(url) {
8123
8216
  return processoutCardTarget(url) !== null;
8124
8217
  }
8125
- function readBody27(body) {
8126
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT44)
8218
+ function readBody28(body) {
8219
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT45)
8127
8220
  return null;
8128
8221
  try {
8129
8222
  const value = JSON.parse(body);
8130
- return record37(value) && JSON.stringify(value) === body ? value : null;
8223
+ return record38(value) && JSON.stringify(value) === body ? value : null;
8131
8224
  }
8132
8225
  catch {
8133
8226
  return null;
@@ -8145,31 +8238,31 @@ var DEVICE_RULES = /* @__PURE__ */ Object.freeze({
8145
8238
  });
8146
8239
  function soundDevice3(value) {
8147
8240
  const device = value.device;
8148
- if (!record37(device) || !own19(device, "request_origin") || !own19(device, "app_timezone_offset"))
8241
+ if (!record38(device) || !own20(device, "request_origin") || !own20(device, "app_timezone_offset"))
8149
8242
  return false;
8150
- 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));
8243
+ 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));
8151
8244
  }
8152
8245
  function soundPageData(value) {
8153
- if (own19(value, "name") && !pageText2(value.name))
8246
+ if (own20(value, "name") && !pageText2(value.name))
8154
8247
  return false;
8155
- if (own19(value, "preferred_scheme") && !(value.preferred_scheme === null || typeof value.preferred_scheme === "string" && SCHEME.test(value.preferred_scheme)))
8248
+ if (own20(value, "preferred_scheme") && !(value.preferred_scheme === null || typeof value.preferred_scheme === "string" && SCHEME.test(value.preferred_scheme)))
8156
8249
  return false;
8157
8250
  const contact = value.contact;
8158
- return record37(contact) && Object.keys(contact).every((key) => CONTACT_KEYS.includes(key) && pageText2(contact[key]));
8251
+ return record38(contact) && Object.keys(contact).every((key) => CONTACT_KEYS.includes(key) && pageText2(contact[key]));
8159
8252
  }
8160
8253
  function processoutBodyVerdict(body, url) {
8161
8254
  if (url !== void 0 && processoutCardTarget(url) === null)
8162
- return refuse45("processout_url_refused");
8163
- const value = readBody27(body);
8255
+ return refuse46("processout_url_refused");
8256
+ const value = readBody28(body);
8164
8257
  if (value === null || !Object.keys(value).every((key) => BODY_KEYS3.has(key)))
8165
- return refuse45("processout_body_unsupported");
8258
+ return refuse46("processout_body_unsupported");
8166
8259
  if (!PROCESSOUT_CARD_KEYS.every((key) => typeof value[key] === "string"))
8167
- return refuse45("processout_body_unsupported");
8168
- if (!NUMBER9.test(value.number) || !luhn12(value.number) || !MONTH23.test(value.exp_month) || !YEAR24.test(value.exp_year) || !CODE9.test(value.cvc2))
8169
- return refuse45("processout_body_unsupported");
8260
+ return refuse46("processout_body_unsupported");
8261
+ if (!NUMBER10.test(value.number) || !luhn12(value.number) || !MONTH23.test(value.exp_month) || !YEAR24.test(value.exp_year) || !CODE9.test(value.cvc2))
8262
+ return refuse46("processout_body_unsupported");
8170
8263
  if (!soundPageData(value) || !soundDevice3(value))
8171
- return refuse45("processout_body_unsupported");
8172
- return CARD44;
8264
+ return refuse46("processout_body_unsupported");
8265
+ return CARD45;
8173
8266
  }
8174
8267
  var processout_default = /* @__PURE__ */ registerProcessor({
8175
8268
  psp: PROCESSOUT_PSP,
@@ -8212,15 +8305,15 @@ var USAEPAY_HOSTS = /* @__PURE__ */ Object.freeze({
8212
8305
  "sandbox.usaepay.com": "sandbox"
8213
8306
  });
8214
8307
  var USAEPAY_PAYMENT_KEYS_PATH = "/api/v2/pub/payment_keys";
8215
- var BODY_LIMIT45 = 512;
8308
+ var BODY_LIMIT46 = 512;
8216
8309
  var URL_LIMIT18 = 256;
8217
8310
  var CARD_NUMBER22 = /^[0-9]{13,19}$/;
8218
8311
  var EXPIRATION2 = /^(?:0[1-9]|1[0-2])[0-9]{2}$/;
8219
8312
  var SECURITY_CODE26 = /^(?:[0-9]{3,4})?$/;
8220
- var record38 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
8221
- var own20 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8222
- var refuse46 = (code) => Object.freeze({ verdict: "refuse", code });
8223
- var CARD45 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
8313
+ var record39 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
8314
+ var own21 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8315
+ var refuse47 = (code) => Object.freeze({ verdict: "refuse", code });
8316
+ var CARD46 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
8224
8317
  function usaepayPaymentKeysUrl(url) {
8225
8318
  if (typeof url !== "string" || url.length > URL_LIMIT18 || url.includes("?") || url.includes("#"))
8226
8319
  return null;
@@ -8231,7 +8324,7 @@ function usaepayPaymentKeysUrl(url) {
8231
8324
  catch {
8232
8325
  return null;
8233
8326
  }
8234
- if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own20(USAEPAY_HOSTS, parsed.hostname) || parsed.pathname !== USAEPAY_PAYMENT_KEYS_PATH)
8327
+ if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own21(USAEPAY_HOSTS, parsed.hostname) || parsed.pathname !== USAEPAY_PAYMENT_KEYS_PATH)
8235
8328
  return null;
8236
8329
  return Object.freeze({ host: parsed.hostname, environment: USAEPAY_HOSTS[parsed.hostname] });
8237
8330
  }
@@ -8246,23 +8339,23 @@ function luhn13(digits3) {
8246
8339
  }
8247
8340
  return sum % 10 === 0;
8248
8341
  }
8249
- function readBody28(body) {
8250
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT45)
8342
+ function readBody29(body) {
8343
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT46)
8251
8344
  return null;
8252
8345
  try {
8253
8346
  const value = JSON.parse(body);
8254
- return record38(value) && JSON.stringify(value) === body ? value : null;
8347
+ return record39(value) && JSON.stringify(value) === body ? value : null;
8255
8348
  }
8256
8349
  catch {
8257
8350
  return null;
8258
8351
  }
8259
8352
  }
8260
8353
  function usaepayBodyVerdict(body) {
8261
- const value = readBody28(body);
8354
+ const value = readBody29(body);
8262
8355
  const card = value === null ? null : value.creditcard;
8263
- 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))
8264
- return refuse46("usaepay_body_unsupported");
8265
- return CARD45;
8356
+ 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))
8357
+ return refuse47("usaepay_body_unsupported");
8358
+ return CARD46;
8266
8359
  }
8267
8360
  var usaepay_default = /* @__PURE__ */ registerProcessor({
8268
8361
  psp: USAEPAY_PSP,
@@ -8294,7 +8387,7 @@ var usaepay_default = /* @__PURE__ */ registerProcessor({
8294
8387
  source: "https://help.usaepay.info/developer/payjs-v2/ , https://help.usaepay.info/api/rest/"
8295
8388
  },
8296
8389
  exactUrl: isUsaepayPaymentKeysUrl,
8297
- bodyGate: (url, body) => url !== void 0 && !isUsaepayPaymentKeysUrl(url) ? refuse46("usaepay_url_refused") : usaepayBodyVerdict(body)
8390
+ bodyGate: (url, body) => url !== void 0 && !isUsaepayPaymentKeysUrl(url) ? refuse47("usaepay_url_refused") : usaepayBodyVerdict(body)
8298
8391
  // No amount reader: the request names none, so the agent's pair is the figure the cardholder approves.
8299
8392
  });
8300
8393
  // src/processors/viva_wallet.js
@@ -8330,7 +8423,7 @@ var VIVA_WALLET_BODY_KEYS = /* @__PURE__ */ Object.freeze([
8330
8423
  "merchantTrns",
8331
8424
  "captchaToken"
8332
8425
  ]);
8333
- var BODY_LIMIT46 = 16384;
8426
+ var BODY_LIMIT47 = 16384;
8334
8427
  var URL_LIMIT19 = 256;
8335
8428
  var ORDER_CODE = /^[0-9]{16}$/;
8336
8429
  var CARD_NUMBER23 = /^[0-9]{13,19}$/;
@@ -8342,10 +8435,10 @@ var MEMBER_NAME = /^[A-Za-z][A-Za-z0-9]{0,31}$/;
8342
8435
  var SHORT_ID = /^[A-Za-z0-9_-]{1,64}$/;
8343
8436
  var TEXT4 = /^[^\u0000-\u001f\u007f]{0,200}$/;
8344
8437
  var CARD_DIGITS2 = /[0-9]{12,}/;
8345
- var record39 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
8346
- var own21 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8347
- var refuse47 = (code) => Object.freeze({ verdict: "refuse", code });
8348
- var CARD46 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
8438
+ var record40 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
8439
+ var own22 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8440
+ var refuse48 = (code) => Object.freeze({ verdict: "refuse", code });
8441
+ var CARD47 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
8349
8442
  var inOrder9 = (value, keys) => {
8350
8443
  let at = 0;
8351
8444
  for (const name of Object.keys(value)) {
@@ -8360,7 +8453,7 @@ var inOrder9 = (value, keys) => {
8360
8453
  var cardDigits2 = (text10) => CARD_DIGITS2.test(text10.replace(/[^0-9A-Za-z]/g, ""));
8361
8454
  var plainText8 = (value) => typeof value === "string" && TEXT4.test(value) && !cardDigits2(value);
8362
8455
  var scalar = (value) => value === null || typeof value === "boolean" || Number.isSafeInteger(value) && Math.abs(value) < 1e9 || plainText8(value);
8363
- var flatRecord = (value, limit) => record39(value) && Object.keys(value).length <= limit && Object.entries(value).every(([key, item]) => MEMBER_NAME.test(key) && scalar(item));
8456
+ var flatRecord = (value, limit) => record40(value) && Object.keys(value).length <= limit && Object.entries(value).every(([key, item]) => MEMBER_NAME.test(key) && scalar(item));
8364
8457
  function vivaWalletChargeTokensUrl(url) {
8365
8458
  if (typeof url !== "string" || url.length > URL_LIMIT19 || url.includes("?") || url.includes("#"))
8366
8459
  return null;
@@ -8371,7 +8464,7 @@ function vivaWalletChargeTokensUrl(url) {
8371
8464
  catch {
8372
8465
  return null;
8373
8466
  }
8374
- 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)
8467
+ 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)
8375
8468
  return null;
8376
8469
  return Object.freeze({ host: parsed.hostname, environment: VIVA_WALLET_HOSTS[parsed.hostname] });
8377
8470
  }
@@ -8389,12 +8482,12 @@ function luhn14(digits3) {
8389
8482
  function vivaWalletMaskedNumber(number) {
8390
8483
  return `${number.slice(0, 6)}${"X".repeat(Math.max(0, number.length - 10))}${number.slice(-4)}`;
8391
8484
  }
8392
- function readBody29(body) {
8393
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT46)
8485
+ function readBody30(body) {
8486
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT47)
8394
8487
  return null;
8395
8488
  try {
8396
8489
  const value = JSON.parse(body);
8397
- return record39(value) && JSON.stringify(value) === body ? value : null;
8490
+ return record40(value) && JSON.stringify(value) === body ? value : null;
8398
8491
  }
8399
8492
  catch {
8400
8493
  return null;
@@ -8406,26 +8499,26 @@ function currencyNumber(value) {
8406
8499
  return typeof value === "string" && /^[0-9]{3}$/.test(value) ? Number(value) : null;
8407
8500
  }
8408
8501
  function vivaWalletBodyVerdict(body) {
8409
- const value = readBody29(body);
8502
+ const value = readBody30(body);
8410
8503
  if (value === null || !Object.keys(value).every((key) => VIVA_WALLET_BODY_KEYS.includes(key))) {
8411
- return value !== null && (own21(value, "creditCardId") || own21(value, "token")) ? refuse47("viva_wallet_stored_card") : refuse47("viva_wallet_body_unsupported");
8504
+ return value !== null && (own22(value, "creditCardId") || own22(value, "token")) ? refuse48("viva_wallet_stored_card") : refuse48("viva_wallet_body_unsupported");
8412
8505
  }
8413
8506
  if (value.rememberCard !== false)
8414
- return refuse47(value.rememberCard === true ? "viva_wallet_keep_on_file" : "viva_wallet_body_unsupported");
8507
+ return refuse48(value.rememberCard === true ? "viva_wallet_keep_on_file" : "viva_wallet_body_unsupported");
8415
8508
  if (value.dccAccepted === true)
8416
- return refuse47("viva_wallet_currency_conversion");
8417
- if (own21(value, "dccAccepted") && value.dccAccepted !== false)
8418
- return refuse47("viva_wallet_body_unsupported");
8419
- if (own21(value, "scaRequestedTransactionId"))
8420
- return refuse47("viva_wallet_retry_refused");
8509
+ return refuse48("viva_wallet_currency_conversion");
8510
+ if (own22(value, "dccAccepted") && value.dccAccepted !== false)
8511
+ return refuse48("viva_wallet_body_unsupported");
8512
+ if (own22(value, "scaRequestedTransactionId"))
8513
+ return refuse48("viva_wallet_retry_refused");
8421
8514
  if (!(value.installments === 0 || value.installments === 1)) {
8422
- return refuse47(Number.isSafeInteger(value.installments) && value.installments > 1 ? "viva_wallet_installments" : "viva_wallet_body_unsupported");
8515
+ return refuse48(Number.isSafeInteger(value.installments) && value.installments > 1 ? "viva_wallet_installments" : "viva_wallet_body_unsupported");
8423
8516
  }
8424
- if (!inOrder9(value, VIVA_WALLET_BODY_KEYS) || ["offerCodes", "loyaltySupported", "redeemedAmount", "retrievalReferenceNumber", "merchantTrns"].some((key) => own21(value, key)))
8425
- return refuse47("viva_wallet_body_unsupported");
8517
+ if (!inOrder9(value, VIVA_WALLET_BODY_KEYS) || ["offerCodes", "loyaltySupported", "redeemedAmount", "retrievalReferenceNumber", "merchantTrns"].some((key) => own22(value, key)))
8518
+ return refuse48("viva_wallet_body_unsupported");
8426
8519
  const number = value.number;
8427
- 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));
8428
- return sound ? CARD46 : refuse47("viva_wallet_body_unsupported");
8520
+ 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));
8521
+ return sound ? CARD47 : refuse48("viva_wallet_body_unsupported");
8429
8522
  }
8430
8523
  var VIVA_WALLET_CURRENCIES = /* @__PURE__ */ Object.freeze({
8431
8524
  978: "eur",
@@ -8488,9 +8581,9 @@ var viva_wallet_default = /* @__PURE__ */ registerProcessor({
8488
8581
  refusedOperations: [VIVA_WALLET_OPERATION],
8489
8582
  settlementReadback: "not_surveyed",
8490
8583
  exactUrl: isVivaWalletChargeTokensUrl,
8491
- bodyGate: (url, body) => url !== void 0 && !isVivaWalletChargeTokensUrl(url) ? refuse47("viva_wallet_url_refused") : vivaWalletBodyVerdict(body),
8584
+ bodyGate: (url, body) => url !== void 0 && !isVivaWalletChargeTokensUrl(url) ? refuse48("viva_wallet_url_refused") : vivaWalletBodyVerdict(body),
8492
8585
  // The body names the order's amount in cents and its numeric currency, which the page's card-free charge repeats.
8493
- amount: (template) => record39(template) && isVivaWalletChargeTokensUrl(template.url) ? vivaWalletAmount(template.body) : null
8586
+ amount: (template) => record40(template) && isVivaWalletChargeTokensUrl(template.url) ? vivaWalletAmount(template.body) : null
8494
8587
  });
8495
8588
  // src/processors/vtex_payments.js
8496
8589
  var VTEX_PAYMENTS_PSP = "vtex_payments";
@@ -8540,7 +8633,7 @@ var VTEX_PAYMENTS_MERCHANT_PINS = /* @__PURE__ */ Object.freeze([
8540
8633
  Object.freeze({ account: "alssports", origin: "https://www.als.com", merchant: "Al's Sporting Goods", currency: "USD" }),
8541
8634
  Object.freeze({ account: "roadrunnersports", origin: "https://www.roadrunnersports.com", merchant: "Road Runner Sports", currency: "USD" })
8542
8635
  ]);
8543
- var BODY_LIMIT47 = 16384;
8636
+ var BODY_LIMIT48 = 16384;
8544
8637
  var ACCOUNT_HOST = /^([a-z0-9]{1,63})\.vtexvault\.com$/;
8545
8638
  var PATH = /^\/api\/payments\/transactions\/([0-9A-Fa-f]{32})\/payments$/;
8546
8639
  var ORDER_GROUP = /^[0-9]{6,24}$/;
@@ -8548,7 +8641,7 @@ var BASE648 = /^[A-Za-z0-9+/]{4,1020}={0,2}$/;
8548
8641
  var CARD_NUMBER24 = /^[0-9]{12,19}$/;
8549
8642
  var SECURITY_CODE28 = /^[0-9]{3,4}$/;
8550
8643
  var DUE_DATE = /^(?:0[1-9]|1[0-2])\/[0-9]{2}$/;
8551
- var CURRENCY6 = /^[A-Z]{3}$/;
8644
+ var CURRENCY7 = /^[A-Z]{3}$/;
8552
8645
  var TRANSACTION_ID = /^[0-9A-Fa-f]{32}$/;
8553
8646
  var MERCHANT_NAME = /^[A-Za-z0-9_.-]{1,64}$/;
8554
8647
  var SHORT_ID2 = /^[A-Za-z0-9_-]{1,64}$/;
@@ -8556,10 +8649,10 @@ var FINGERPRINT4 = /^[A-Za-z0-9_.:=+/-]{1,256}$/;
8556
8649
  var TEXT5 = /^[^\u0000-\u001f\u007f]{1,200}$/;
8557
8650
  var CARD_DIGITS3 = /[0-9]{12,}/;
8558
8651
  var DEVICE_INFO_KEYS = Object.freeze(["sw", "sh", "cd", "tz", "lang", "java", "sourceApplication"]);
8559
- var record40 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
8560
- var own22 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8561
- var refuse48 = (code) => Object.freeze({ verdict: "refuse", code });
8562
- var CARD47 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
8652
+ var record41 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
8653
+ var own23 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
8654
+ var refuse49 = (code) => Object.freeze({ verdict: "refuse", code });
8655
+ var CARD48 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
8563
8656
  var inOrder10 = (value, keys) => {
8564
8657
  let at = 0;
8565
8658
  for (const name of Object.keys(value)) {
@@ -8609,18 +8702,18 @@ function deviceInfoSound(text10) {
8609
8702
  catch {
8610
8703
  return false;
8611
8704
  }
8612
- if (!record40(info) || !Object.keys(info).every((key) => DEVICE_INFO_KEYS.includes(key)))
8705
+ if (!record41(info) || !Object.keys(info).every((key) => DEVICE_INFO_KEYS.includes(key)))
8613
8706
  return false;
8614
8707
  for (const key of ["sw", "sh", "cd"])
8615
- if (own22(info, key) && !(count(info[key]) && info[key] <= 1e5))
8708
+ if (own23(info, key) && !(count(info[key]) && info[key] <= 1e5))
8616
8709
  return false;
8617
- if (own22(info, "tz") && !(Number.isSafeInteger(info.tz) && Math.abs(info.tz) <= 1440))
8710
+ if (own23(info, "tz") && !(Number.isSafeInteger(info.tz) && Math.abs(info.tz) <= 1440))
8618
8711
  return false;
8619
- if (own22(info, "lang") && !(typeof info.lang === "string" && /^[A-Za-z]{0,8}$/.test(info.lang)))
8712
+ if (own23(info, "lang") && !(typeof info.lang === "string" && /^[A-Za-z]{0,8}$/.test(info.lang)))
8620
8713
  return false;
8621
- if (own22(info, "java") && typeof info.java !== "boolean")
8714
+ if (own23(info, "java") && typeof info.java !== "boolean")
8622
8715
  return false;
8623
- return !own22(info, "sourceApplication") || typeof info.sourceApplication === "string" && /^[A-Za-z0-9_.-]{1,32}$/.test(info.sourceApplication);
8716
+ return !own23(info, "sourceApplication") || typeof info.sourceApplication === "string" && /^[A-Za-z0-9_.-]{1,32}$/.test(info.sourceApplication);
8624
8717
  }
8625
8718
  function vtexPaymentsCardTarget(url) {
8626
8719
  if (typeof url !== "string" || url.length > 8192)
@@ -8666,8 +8759,8 @@ function isVtexPaymentsCardUrl(url) {
8666
8759
  const target = vtexPaymentsCardTarget(url);
8667
8760
  return target !== null && !target.fallback;
8668
8761
  }
8669
- function readBody30(body) {
8670
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT47)
8762
+ function readBody31(body) {
8763
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT48)
8671
8764
  return null;
8672
8765
  let value;
8673
8766
  try {
@@ -8681,13 +8774,13 @@ function readBody30(body) {
8681
8774
  return value;
8682
8775
  }
8683
8776
  function cardLine(line) {
8684
- if (!record40(line))
8777
+ if (!record41(line))
8685
8778
  return false;
8686
- const fields = record40(line.fields) ? line.fields : {};
8687
- return line.groupName === "creditCardPaymentGroup" || line.groupName === "debitCardPaymentGroup" || own22(line, "accountId") || own22(fields, "accountId") || own22(fields, "cardNumber") || own22(fields, "validationCode") || own22(fields, "dueDate");
8779
+ const fields = record41(line.fields) ? line.fields : {};
8780
+ return line.groupName === "creditCardPaymentGroup" || line.groupName === "debitCardPaymentGroup" || own23(line, "accountId") || own23(fields, "accountId") || own23(fields, "cardNumber") || own23(fields, "validationCode") || own23(fields, "dueDate");
8688
8781
  }
8689
8782
  function addressSound(address2) {
8690
- if (!record40(address2) || !inOrder10(address2, VTEX_PAYMENTS_ADDRESS_KEYS))
8783
+ if (!record41(address2) || !inOrder10(address2, VTEX_PAYMENTS_ADDRESS_KEYS))
8691
8784
  return false;
8692
8785
  for (const [key, value] of Object.entries(address2)) {
8693
8786
  if (key === "addressType") {
@@ -8708,7 +8801,7 @@ function addressSound(address2) {
8708
8801
  return true;
8709
8802
  }
8710
8803
  function fieldsSound(fields) {
8711
- if (!record40(fields) || !inOrder10(fields, VTEX_PAYMENTS_FIELD_KEYS) || own22(fields, "metadata"))
8804
+ if (!record41(fields) || !inOrder10(fields, VTEX_PAYMENTS_FIELD_KEYS) || own23(fields, "metadata"))
8712
8805
  return false;
8713
8806
  if (!(typeof fields.cardNumber === "string" && CARD_NUMBER24.test(fields.cardNumber)))
8714
8807
  return false;
@@ -8718,38 +8811,38 @@ function fieldsSound(fields) {
8718
8811
  return false;
8719
8812
  if (!plainText9(fields.holderName))
8720
8813
  return false;
8721
- if (own22(fields, "document") && !(fields.document === "" || plainText9(fields.document) && fields.document.length <= 32))
8814
+ if (own23(fields, "document") && !(fields.document === "" || plainText9(fields.document) && fields.document.length <= 32))
8722
8815
  return false;
8723
- if (own22(fields, "address") && !addressSound(fields.address))
8816
+ if (own23(fields, "address") && !addressSound(fields.address))
8724
8817
  return false;
8725
- if (own22(fields, "deviceFingerprint") && !(typeof fields.deviceFingerprint === "string" && FINGERPRINT4.test(fields.deviceFingerprint)))
8818
+ if (own23(fields, "deviceFingerprint") && !(typeof fields.deviceFingerprint === "string" && FINGERPRINT4.test(fields.deviceFingerprint)))
8726
8819
  return false;
8727
- return !own22(fields, "addressId") || typeof fields.addressId === "string" && SHORT_ID2.test(fields.addressId);
8820
+ return !own23(fields, "addressId") || typeof fields.addressId === "string" && SHORT_ID2.test(fields.addressId);
8728
8821
  }
8729
8822
  function vtexPaymentsBodyVerdict(body, target) {
8730
- const lines = readBody30(body);
8731
- if (lines === null || lines.length === 0 || !lines.every(record40))
8732
- return refuse48("vtex_payments_body_unsupported");
8823
+ const lines = readBody31(body);
8824
+ if (lines === null || lines.length === 0 || !lines.every(record41))
8825
+ return refuse49("vtex_payments_body_unsupported");
8733
8826
  const cards = lines.filter(cardLine);
8734
- if (cards.some((line2) => own22(line2, "accountId") || own22(line2.fields ?? {}, "accountId")))
8735
- return refuse48("vtex_payments_saved_card");
8827
+ if (cards.some((line2) => own23(line2, "accountId") || own23(line2.fields ?? {}, "accountId")))
8828
+ return refuse49("vtex_payments_saved_card");
8736
8829
  if (cards.length === 0)
8737
- return refuse48("vtex_payments_body_unsupported");
8738
- if (lines.length !== 1 || own22(lines[0], "id"))
8739
- return refuse48("vtex_payments_split_payment");
8830
+ return refuse49("vtex_payments_body_unsupported");
8831
+ if (lines.length !== 1 || own23(lines[0], "id"))
8832
+ return refuse49("vtex_payments_split_payment");
8740
8833
  const line = lines[0];
8741
8834
  if (!inOrder10(line, VTEX_PAYMENTS_LINE_KEYS) || line.groupName !== "creditCardPaymentGroup")
8742
- return refuse48("vtex_payments_body_unsupported");
8743
- 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))
8744
- return refuse48("vtex_payments_body_unsupported");
8745
- if (line.installments !== 1 || line.referenceValue !== line.value || own22(line, "installmentsInterestRate") && line.installmentsInterestRate !== 0 || own22(line, "installmentsValue") && line.installmentsValue !== line.value)
8746
- return refuse48("vtex_payments_installments");
8835
+ return refuse49("vtex_payments_body_unsupported");
8836
+ 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))
8837
+ return refuse49("vtex_payments_body_unsupported");
8838
+ if (line.installments !== 1 || line.referenceValue !== line.value || own23(line, "installmentsInterestRate") && line.installmentsInterestRate !== 0 || own23(line, "installmentsValue") && line.installmentsValue !== line.value)
8839
+ return refuse49("vtex_payments_installments");
8747
8840
  const transaction = line.transaction;
8748
- 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)))
8749
- return refuse48("vtex_payments_body_unsupported");
8841
+ 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)))
8842
+ return refuse49("vtex_payments_body_unsupported");
8750
8843
  if (target && transaction.id.toUpperCase() !== target.transactionId.toUpperCase())
8751
- return refuse48("vtex_payments_split_payment");
8752
- return fieldsSound(line.fields) ? CARD47 : refuse48("vtex_payments_body_unsupported");
8844
+ return refuse49("vtex_payments_split_payment");
8845
+ return fieldsSound(line.fields) ? CARD48 : refuse49("vtex_payments_body_unsupported");
8753
8846
  }
8754
8847
  function vtexPaymentsAmount(body) {
8755
8848
  if (vtexPaymentsBodyVerdict(body).verdict !== "card")
@@ -8794,14 +8887,15 @@ var vtex_payments_default = /* @__PURE__ */ registerProcessor({
8794
8887
  return vtexPaymentsBodyVerdict(body);
8795
8888
  const target = vtexPaymentsCardTarget(url);
8796
8889
  if (target === null)
8797
- return refuse48("vtex_payments_url_refused");
8798
- return target.fallback ? refuse48("vtex_payments_fallback_refused") : vtexPaymentsBodyVerdict(body, target);
8890
+ return refuse49("vtex_payments_url_refused");
8891
+ return target.fallback ? refuse49("vtex_payments_fallback_refused") : vtexPaymentsBodyVerdict(body, target);
8799
8892
  },
8800
- amount: (template) => record40(template) && isVtexPaymentsCardUrl(template.url) ? vtexPaymentsAmount(template.body) : null
8893
+ amount: (template) => record41(template) && isVtexPaymentsCardUrl(template.url) ? vtexPaymentsAmount(template.body) : null
8801
8894
  });
8802
8895
  // src/processors/index.generated.js
8803
8896
  var REGISTERED_MODULES = Object.freeze({
8804
8897
  aurus: aurus_default,
8898
+ bigcommerce: bigcommerce_default,
8805
8899
  bluesnap: bluesnap_default,
8806
8900
  cardlink_vpos: cardlink_vpos_default,
8807
8901
  eghl: eghl_default,
@@ -9096,12 +9190,12 @@ function splitCardLeg(recognizer, body) {
9096
9190
  const absorb = list(split.absorb);
9097
9191
  const pass = list(split.pass);
9098
9192
  const sibling = list(split.siblingKeys);
9099
- const own23 = keys.filter((key) => !sibling.includes(key));
9100
- if (own23.length === 0)
9193
+ const own24 = keys.filter((key) => !sibling.includes(key));
9194
+ if (own24.length === 0)
9101
9195
  return null;
9102
- if (own23.every((key) => absorb.includes(key)))
9196
+ if (own24.every((key) => absorb.includes(key)))
9103
9197
  return "absorb";
9104
- if (own23.every((key) => pass.includes(key)))
9198
+ if (own24.every((key) => pass.includes(key)))
9105
9199
  return "pass";
9106
9200
  return null;
9107
9201
  }