@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: 13395ab9cfe5d3a197ccb1efe5cd2211ffa86ffdd727d65cfb175f967d52314d
3
+ // artifact-sha256: b2ba367a9b8d1758f1deea226abb2ca6637b40a88aa0c5ee7f359e074f4c017e
4
4
  // src/deep-freeze.js
5
5
  function deepFreeze(value) {
6
6
  if (value && typeof value === "object" && !Object.isFrozen(value)) {
@@ -157,6 +157,96 @@ var aurus_default = /* @__PURE__ */ registerProcessor({
157
157
  bodyGate: (url, body) => url !== void 0 && !isAurusTokenUrl(url) ? refuse("aurus_url_refused") : aurusBodyVerdict(body),
158
158
  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."]
159
159
  });
160
+ // src/processors/bigcommerce.js
161
+ var BIGCOMMERCE_PSP = "bigcommerce";
162
+ var BIGCOMMERCE_OPERATION = "bigcommerce.card_request";
163
+ var BIGCOMMERCE_PAYMENTS_URL = "https://payments.bigcommerce.com/api/public/v1/orders/payments";
164
+ var BODY_LIMIT2 = 65536;
165
+ var CARD_KEYS = /* @__PURE__ */ new Set([
166
+ "account_name",
167
+ "month",
168
+ "number",
169
+ "verification_value",
170
+ "year",
171
+ "customer_code",
172
+ "three_d_secure",
173
+ "hosted_form_nonce"
174
+ ]);
175
+ var OTHER_INSTRUMENTS = /* @__PURE__ */ Object.freeze(["bigpay_token", "credit_card_token", "credit_card_cryptogram"]);
176
+ var NUMBER = /^[0-9]{12,19}$/;
177
+ var CURRENCY = /^[A-Z]{3}$/;
178
+ var record = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
179
+ var own = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
180
+ var refuse2 = (code) => Object.freeze({ verdict: "refuse", code });
181
+ var CARD2 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
182
+ var CONTINUE = /* @__PURE__ */ Object.freeze({ verdict: "continue" });
183
+ function isBigcommercePaymentsUrl(url) {
184
+ return url === BIGCOMMERCE_PAYMENTS_URL;
185
+ }
186
+ function readBody2(body) {
187
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT2)
188
+ return null;
189
+ try {
190
+ const parsed = JSON.parse(body);
191
+ return record(parsed) && record(parsed.payment) ? parsed : null;
192
+ }
193
+ catch {
194
+ return null;
195
+ }
196
+ }
197
+ function bigcommerceBodyVerdict(body, url) {
198
+ if (url !== void 0 && !isBigcommercePaymentsUrl(url))
199
+ return refuse2("bigcommerce_url_refused");
200
+ const parsed = readBody2(body);
201
+ if (!parsed)
202
+ return refuse2("bigcommerce_body_unsupported");
203
+ const { payment } = parsed;
204
+ if (!own(payment, "credit_card"))
205
+ return CONTINUE;
206
+ const card = payment.credit_card;
207
+ if (!record(card) || OTHER_INSTRUMENTS.some((key) => own(payment, key)) || Object.keys(card).some((key) => !CARD_KEYS.has(key)) || typeof card.number !== "string" || !NUMBER.test(card.number)) {
208
+ return refuse2("bigcommerce_body_unsupported");
209
+ }
210
+ if (payment.vault_payment_instrument === true)
211
+ return refuse2("bigcommerce_keep_on_file");
212
+ return CARD2;
213
+ }
214
+ function bigcommerceAmount(template) {
215
+ const parsed = record(template) ? readBody2(template.body) : null;
216
+ const order = parsed && record(parsed.order) ? parsed.order : null;
217
+ const total = order && record(order.totals) ? order.totals.grand_total : void 0;
218
+ if (!Number.isSafeInteger(total) || total <= 0 || typeof order.currency !== "string" || !CURRENCY.test(order.currency))
219
+ return null;
220
+ return { amountCents: total, currency: order.currency.toLowerCase() };
221
+ }
222
+ var bigcommerce_default = /* @__PURE__ */ registerProcessor({
223
+ psp: BIGCOMMERCE_PSP,
224
+ definitions: [
225
+ {
226
+ psp: "bigcommerce",
227
+ // The card request above. One host serves every BigCommerce store, test and live alike, so no sandbox host is
228
+ // marked. Ships dark: served only to a client that declares `bigcommerce_card_form`, for a company the backend's
229
+ // processor gate turns BigCommerce on for. `(?![\w/.%-])` ends the path for a consumer that tests `match`
230
+ // unanchored; the exact-URL rule holds the rest.
231
+ capability: "bigcommerce_card_form",
232
+ match: "payments\\.bigcommerce\\.com/api/public/v1/orders/payments(?![\\w/.%-])",
233
+ hosts: ["^payments\\.bigcommerce\\.com$"],
234
+ encoding: "json",
235
+ // The order's payment token and the JSON Accept. Origin, Referer and cookies never ride.
236
+ passthroughHeaders: ["^authorization$", "^accept$"],
237
+ jsonCardFields: [["payment", "credit_card", "number"]],
238
+ // A payment with no new card on the same URL continues untouched (bigcommerceBodyVerdict says which).
239
+ passWithoutCard: "payments\\.bigcommerce\\.com/api/public/v1/orders/payments"
240
+ }
241
+ ],
242
+ // The request charges the store's gateway at once, so only the cardholder's device sends it, after a person approves.
243
+ refusedOperations: [BIGCOMMERCE_OPERATION],
244
+ // Not surveyed: reading a BigCommerce payment back takes the store's own API credentials, which Agentcard never holds.
245
+ settlementReadback: "not_surveyed",
246
+ exactUrl: isBigcommercePaymentsUrl,
247
+ bodyGate: (url, body) => bigcommerceBodyVerdict(body, url),
248
+ amount: bigcommerceAmount
249
+ });
160
250
  // src/processors/bluesnap.js
161
251
  var BLUESNAP_PSP = "bluesnap";
162
252
  var BLUESNAP_OPERATION = "bluesnap.card_request";
@@ -164,16 +254,16 @@ var BLUESNAP_HOSTS = /* @__PURE__ */ Object.freeze({ 1: "ws1.bluesnap.com", 2: "
164
254
  var BLUESNAP_SANDBOX_HOST = "sandpay.bluesnap.com";
165
255
  var BLUESNAP_CARD_KEYS = /* @__PURE__ */ Object.freeze(["cvv", "ccNumber", "expDate"]);
166
256
  var BLUESNAP_LEG_KEYS = /* @__PURE__ */ Object.freeze(["cvv", "expDate"]);
167
- var BODY_LIMIT2 = 1024;
257
+ var BODY_LIMIT3 = 1024;
168
258
  var TOKEN_URL = /^https:\/\/(ws1|ws2|sandpay)\.bluesnap\.com\/services\/2\/payment-fields-tokens\/([0-9a-f]{64}_[12]?)$/;
169
259
  var CARD_NUMBER = /^[0-9]{12,19}$/;
170
260
  var SECURITY_CODE = /^[0-9]{3,4}$/;
171
261
  var EXPIRY = /^(?:0[1-9]|1[0-2])\/20[0-9]{2}$/;
172
262
  var SAVED_CARD_KEYS = ["last4Digits", "lastFourDigits", "ccType"];
173
- var record = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
174
- var own = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
175
- var refuse2 = (code) => Object.freeze({ verdict: "refuse", code });
176
- var CARD2 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
263
+ var record2 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
264
+ var own2 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
265
+ var refuse3 = (code) => Object.freeze({ verdict: "refuse", code });
266
+ var CARD3 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
177
267
  var LEG = /* @__PURE__ */ Object.freeze({ verdict: "continue" });
178
268
  function bluesnapTokenUrl(url) {
179
269
  const match = typeof url === "string" ? TOKEN_URL.exec(url) : null;
@@ -185,30 +275,30 @@ function bluesnapTokenUrl(url) {
185
275
  function isBluesnapTokenUrl(url) {
186
276
  return bluesnapTokenUrl(url) !== null;
187
277
  }
188
- function readBody2(body) {
189
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT2)
278
+ function readBody3(body) {
279
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT3)
190
280
  return null;
191
281
  try {
192
282
  const value = JSON.parse(body);
193
- return record(value) && JSON.stringify(value) === body ? value : null;
283
+ return record2(value) && JSON.stringify(value) === body ? value : null;
194
284
  }
195
285
  catch {
196
286
  return null;
197
287
  }
198
288
  }
199
289
  function bluesnapBodyVerdict(body) {
200
- const value = readBody2(body);
290
+ const value = readBody3(body);
201
291
  if (value === null)
202
- return refuse2("bluesnap_body_unsupported");
292
+ return refuse3("bluesnap_body_unsupported");
203
293
  const keys = Object.keys(value);
204
294
  if (keys.some((key) => SAVED_CARD_KEYS.includes(key)))
205
- return refuse2(own(value, "ccNumber") ? "bluesnap_body_unsupported" : "bluesnap_saved_card");
295
+ return refuse3(own2(value, "ccNumber") ? "bluesnap_body_unsupported" : "bluesnap_saved_card");
206
296
  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))) {
207
- return refuse2("bluesnap_body_unsupported");
297
+ return refuse3("bluesnap_body_unsupported");
208
298
  }
209
- if (own(value, "ccNumber") && !(typeof value.ccNumber === "string" && CARD_NUMBER.test(value.ccNumber)) || own(value, "cvv") && !(typeof value.cvv === "string" && SECURITY_CODE.test(value.cvv)) || own(value, "expDate") && !(typeof value.expDate === "string" && EXPIRY.test(value.expDate)))
210
- return refuse2("bluesnap_body_unsupported");
211
- return own(value, "ccNumber") ? CARD2 : LEG;
299
+ if (own2(value, "ccNumber") && !(typeof value.ccNumber === "string" && CARD_NUMBER.test(value.ccNumber)) || own2(value, "cvv") && !(typeof value.cvv === "string" && SECURITY_CODE.test(value.cvv)) || own2(value, "expDate") && !(typeof value.expDate === "string" && EXPIRY.test(value.expDate)))
300
+ return refuse3("bluesnap_body_unsupported");
301
+ return own2(value, "ccNumber") ? CARD3 : LEG;
212
302
  }
213
303
  var bluesnap_default = /* @__PURE__ */ registerProcessor({
214
304
  psp: BLUESNAP_PSP,
@@ -312,7 +402,7 @@ var REQUIRED = Object.freeze([
312
402
  "ekashu_failure_url",
313
403
  "ekashu_callback_success_url"
314
404
  ]);
315
- var CARD_KEYS = Object.freeze([
405
+ var CARD_KEYS2 = Object.freeze([
316
406
  "ekashu_card_number",
317
407
  "ekashu_expires_end_month",
318
408
  "ekashu_expires_end_year",
@@ -514,7 +604,7 @@ var CURRENCIES2 = Object.freeze({ EUR: "eur" });
514
604
  var MAX_URL = 512;
515
605
  var MAX_ENTRY3 = 8 * 1024;
516
606
  var MAX_VALUE = 256;
517
- var own2 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
607
+ var own3 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
518
608
  var field = (name, reason) => ({ ok: false, code: "hosted_form_field_refused", field: name, reason });
519
609
  function cardlinkVposEntryHost(raw) {
520
610
  if (typeof raw !== "string" || raw.length > MAX_URL || raw.includes("?") || raw.includes("#"))
@@ -526,7 +616,7 @@ function cardlinkVposEntryHost(raw) {
526
616
  catch {
527
617
  return null;
528
618
  }
529
- if (url.href !== raw || url.protocol !== "https:" || url.port || url.username || url.password || !own2(CARDLINK_VPOS_HOSTS, url.hostname) || url.pathname !== CARDLINK_VPOS_ENTRY_PATH)
619
+ if (url.href !== raw || url.protocol !== "https:" || url.port || url.username || url.password || !own3(CARDLINK_VPOS_HOSTS, url.hostname) || url.pathname !== CARDLINK_VPOS_ENTRY_PATH)
530
620
  return null;
531
621
  return url.hostname;
532
622
  }
@@ -569,7 +659,7 @@ function cardlinkVposMerchant(mid, vposHost, merchants = CARDLINK_VPOS_MERCHANTS
569
659
  function entryAmount(values) {
570
660
  const amount = values.get("orderAmount");
571
661
  const code = values.get("currency");
572
- const currency = typeof code === "string" && own2(CURRENCIES2, code) ? CURRENCIES2[code] : null;
662
+ const currency = typeof code === "string" && own3(CURRENCIES2, code) ? CURRENCIES2[code] : null;
573
663
  if (!currency || typeof amount !== "string" || !/^(?:0|[1-9]\d{0,11})(?:\.\d{1,2})?$/.test(amount))
574
664
  return null;
575
665
  const [whole, fraction = ""] = amount.split(".");
@@ -624,7 +714,7 @@ function checkCardlinkVposEntry(body, { url = null, merchants = CARDLINK_VPOS_ME
624
714
  return field("payMethod", /^iris$/i.test(method) ? "not_a_card_payment" : "special_flow");
625
715
  const amount = entryAmount(values);
626
716
  if (!amount)
627
- return field(own2(CURRENCIES2, values.get("currency")) ? "orderAmount" : "currency", "malformed");
717
+ return field(own3(CURRENCIES2, values.get("currency")) ? "orderAmount" : "currency", "malformed");
628
718
  if (!/^\d{1,30}$/.test(values.get("mid")))
629
719
  return field("mid", "malformed");
630
720
  if (!/^[A-Za-z0-9]{1,50}$/.test(values.get("orderid")))
@@ -661,16 +751,16 @@ var CARDLINK_VPOS_TDS2_FIELDS = Object.freeze([
661
751
  ]);
662
752
  var PAGE_FIELDS = Object.freeze(["trid", "st", "payStep", "cmd", "startbonus", "bonusdata"]);
663
753
  var WALLET_FIELDS = Object.freeze(["walletId", "applePayResponse"]);
664
- var CARD3 = Object.freeze({ number: "card.pan", holder: "card.holderName", month: "card.expiryMonth", year: "card.expiryYear", cvc: "card.cvv" });
665
- var TEXT_CONTROLS = /* @__PURE__ */ new Set([CARD3.number, CARD3.holder, CARD3.cvc]);
666
- var SELECT_CONTROLS = /* @__PURE__ */ new Set([CARD3.month, CARD3.year]);
754
+ var CARD4 = Object.freeze({ number: "card.pan", holder: "card.holderName", month: "card.expiryMonth", year: "card.expiryYear", cvc: "card.cvv" });
755
+ var TEXT_CONTROLS = /* @__PURE__ */ new Set([CARD4.number, CARD4.holder, CARD4.cvc]);
756
+ var SELECT_CONTROLS = /* @__PURE__ */ new Set([CARD4.month, CARD4.year]);
667
757
  var MAX_PAGE3 = 256 * 1024;
668
758
  var COOKIE_DOMAINS = Object.freeze({
669
759
  "vpos.eurocommerce.gr": "eurocommerce.gr",
670
760
  "ecommerce.cardlink.gr": "cardlink.gr",
671
761
  "www.alphaecommerce.gr": "alphaecommerce.gr"
672
762
  });
673
- var POST_REQUIRED = Object.freeze(["trid", "st", "cmd", CARD3.number, CARD3.holder, CARD3.month, CARD3.year, CARD3.cvc, "makepayment"]);
763
+ var POST_REQUIRED = Object.freeze(["trid", "st", "cmd", CARD4.number, CARD4.holder, CARD4.month, CARD4.year, CARD4.cvc, "makepayment"]);
674
764
  var POST_EMPTY = Object.freeze(["payStep", "startbonus", "bonusdata", ...WALLET_FIELDS]);
675
765
  var POST_ALLOWED = /* @__PURE__ */ new Set([...POST_REQUIRED, ...POST_EMPTY, "paymentMethod", ...CARDLINK_VPOS_TDS2_FIELDS]);
676
766
  var CARDLINK_VPOS_REFUSALS = Object.freeze([
@@ -800,7 +890,7 @@ var REQUIRED4 = Object.freeze([
800
890
  "CurrencyCode",
801
891
  "HashValue"
802
892
  ]);
803
- var CARD_KEYS2 = /* @__PURE__ */ new Set(["cardno", "cardexp", "cardcvv2", "cardholder", "param2", "param4", "cvv2", "epmonth2", "epyear2", "custocp"]);
893
+ var CARD_KEYS3 = /* @__PURE__ */ new Set(["cardno", "cardexp", "cardcvv2", "cardholder", "param2", "param4", "cvv2", "epmonth2", "epyear2", "custocp"]);
804
894
  var SECRET_KEYS = /* @__PURE__ */ new Set(["password"]);
805
895
  var STORED_KEYS2 = /* @__PURE__ */ new Set([
806
896
  "tokentype",
@@ -857,7 +947,7 @@ function checkEghlEntry(body, { url = null, merchants = EGHL_MERCHANTS } = {}) {
857
947
  if (value === "")
858
948
  continue;
859
949
  const folded = key.toLowerCase();
860
- if (CARD_KEYS2.has(folded))
950
+ if (CARD_KEYS3.has(folded))
861
951
  return field2(key, "card_in_entry");
862
952
  if (SECRET_KEYS.has(folded))
863
953
  return field2(key, "not_an_entry");
@@ -989,7 +1079,7 @@ var FRISBII_REFUSED_PATHS = /* @__PURE__ */ Object.freeze({
989
1079
  "/v1/token/cof/": "frisbii_stored_card_unsupported",
990
1080
  "/v1/token/create_click_to_pay": "frisbii_click_to_pay_unsupported"
991
1081
  });
992
- var BODY_LIMIT3 = 8192;
1082
+ var BODY_LIMIT4 = 8192;
993
1083
  var URL_LIMIT2 = 256;
994
1084
  var CARD_NUMBER2 = /^[0-9]{12,19}$/;
995
1085
  var MONTH = /^(?:0[1-9]|1[0-2])$/;
@@ -1033,13 +1123,13 @@ var BROWSER_ORDER = /* @__PURE__ */ Object.freeze([
1033
1123
  "tz"
1034
1124
  ]);
1035
1125
  var LABEL = /^[A-Za-z0-9_-]{1,64}$/;
1036
- var record2 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
1037
- var own3 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
1038
- var refuse3 = (code) => Object.freeze({ verdict: "refuse", code });
1039
- var CARD4 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
1126
+ var record3 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
1127
+ var own4 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
1128
+ var refuse4 = (code) => Object.freeze({ verdict: "refuse", code });
1129
+ var CARD5 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
1040
1130
  var text = (value, max) => typeof value === "string" && value.length <= max;
1041
1131
  var absentOrNull = (value) => value === void 0 || value === null;
1042
- var inOrder = (value, order) => Object.keys(value).every((key) => order.includes(key)) && Object.keys(value).join() === order.filter((key) => own3(value, key)).join();
1132
+ var inOrder = (value, order) => Object.keys(value).every((key) => order.includes(key)) && Object.keys(value).join() === order.filter((key) => own4(value, key)).join();
1043
1133
  function frisbiiTokenUrl(url) {
1044
1134
  if (typeof url !== "string" || url.length > URL_LIMIT2 || url.includes("#"))
1045
1135
  return null;
@@ -1050,7 +1140,7 @@ function frisbiiTokenUrl(url) {
1050
1140
  catch {
1051
1141
  return null;
1052
1142
  }
1053
- if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own3(FRISBII_HOSTS, parsed.hostname) || parsed.pathname !== FRISBII_TOKEN_PATH)
1143
+ if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own4(FRISBII_HOSTS, parsed.hostname) || parsed.pathname !== FRISBII_TOKEN_PATH)
1054
1144
  return null;
1055
1145
  const match = /^\?session=([A-Za-z0-9_-]{8,128})$/.exec(parsed.search);
1056
1146
  return match ? Object.freeze({ host: parsed.hostname, brand: FRISBII_HOSTS[parsed.hostname], session: match[1] }) : null;
@@ -1066,7 +1156,7 @@ function frisbiiRefusedFlowUrl(url) {
1066
1156
  catch {
1067
1157
  return null;
1068
1158
  }
1069
- if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own3(FRISBII_HOSTS, parsed.hostname) || !own3(FRISBII_REFUSED_PATHS, parsed.pathname))
1159
+ if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own4(FRISBII_HOSTS, parsed.hostname) || !own4(FRISBII_REFUSED_PATHS, parsed.pathname))
1070
1160
  return null;
1071
1161
  return FRISBII_REFUSED_PATHS[parsed.pathname];
1072
1162
  }
@@ -1080,28 +1170,28 @@ function luhn(digits2) {
1080
1170
  }
1081
1171
  return sum % 10 === 0;
1082
1172
  }
1083
- function readBody3(body) {
1084
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT3)
1173
+ function readBody4(body) {
1174
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT4)
1085
1175
  return null;
1086
1176
  try {
1087
1177
  const value = JSON.parse(body);
1088
- return record2(value) && JSON.stringify(value) === body ? value : null;
1178
+ return record3(value) && JSON.stringify(value) === body ? value : null;
1089
1179
  }
1090
1180
  catch {
1091
1181
  return null;
1092
1182
  }
1093
1183
  }
1094
1184
  function browserInfo(info) {
1095
- return record2(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;
1185
+ return record3(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;
1096
1186
  }
1097
1187
  function scaBlock(block, target) {
1098
- if (!record2(block) || !inOrder(block, SCA_ORDER) || !own3(block, "returnUrl") || !own3(block, "tokenBrowserInfo"))
1188
+ if (!record3(block) || !inOrder(block, SCA_ORDER) || !own4(block, "returnUrl") || !own4(block, "tokenBrowserInfo"))
1099
1189
  return false;
1100
1190
  if (!Number.isSafeInteger(block.amount) || block.amount < 0 || typeof block.currency !== "string" || !/^[A-Z]{3}$/.test(block.currency))
1101
1191
  return false;
1102
1192
  if (!(absentOrNull(block.orderId) || text(block.orderId, 128)) || !(absentOrNull(block.orderText) || text(block.orderText, 512)))
1103
1193
  return false;
1104
- if (!(absentOrNull(block.merchantScaData) || record2(block.merchantScaData)))
1194
+ if (!(absentOrNull(block.merchantScaData) || record3(block.merchantScaData)))
1105
1195
  return false;
1106
1196
  if (!text(block.returnUrl, 2048) || !browserInfo(block.tokenBrowserInfo))
1107
1197
  return false;
@@ -1109,16 +1199,16 @@ function scaBlock(block, target) {
1109
1199
  return back !== null && (target === null || back[1] === target.brand && back[2] === target.session);
1110
1200
  }
1111
1201
  function frisbiiBodyVerdict(body, url) {
1112
- const value = readBody3(body);
1113
- if (value === null || !inOrder(value, BODY_ORDER) || !BODY_REQUIRED.every((key) => own3(value, key)) || BODY_REFUSED.some((key) => own3(value, key)))
1114
- return refuse3("frisbii_body_unsupported");
1202
+ const value = readBody4(body);
1203
+ if (value === null || !inOrder(value, BODY_ORDER) || !BODY_REQUIRED.every((key) => own4(value, key)) || BODY_REFUSED.some((key) => own4(value, key)))
1204
+ return refuse4("frisbii_body_unsupported");
1115
1205
  if (value.recurring === true || value.intent === "CHARGE_AND_STORE")
1116
- return refuse3("frisbii_card_on_file");
1206
+ return refuse4("frisbii_card_on_file");
1117
1207
  const target = url === void 0 ? null : frisbiiTokenUrl(url);
1118
1208
  if (url !== void 0 && target === null)
1119
- return refuse3("frisbii_body_unsupported");
1209
+ return refuse4("frisbii_body_unsupported");
1120
1210
  const sound = typeof value.number === "string" && CARD_NUMBER2.test(value.number) && luhn(value.number) && typeof value.month === "string" && MONTH.test(value.month) && typeof value.year === "string" && YEAR.test(value.year) && typeof value.cvv === "string" && SECURITY_CODE2.test(value.cvv) && typeof value.pkey === "string" && IDENTIFIER.test(value.pkey) && value.recurring === false && (value.cardholder_name === void 0 || text(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));
1121
- return sound ? CARD4 : refuse3("frisbii_body_unsupported");
1211
+ return sound ? CARD5 : refuse4("frisbii_body_unsupported");
1122
1212
  }
1123
1213
  var frisbii_default = /* @__PURE__ */ registerProcessor({
1124
1214
  psp: FRISBII_PSP,
@@ -1153,8 +1243,8 @@ var frisbii_default = /* @__PURE__ */ registerProcessor({
1153
1243
  return frisbiiBodyVerdict(body);
1154
1244
  const flow = frisbiiRefusedFlowUrl(url);
1155
1245
  if (flow !== null)
1156
- return refuse3(flow);
1157
- return isFrisbiiTokenUrl(url) ? frisbiiBodyVerdict(body, url) : refuse3("frisbii_url_refused");
1246
+ return refuse4(flow);
1247
+ return isFrisbiiTokenUrl(url) ? frisbiiBodyVerdict(body, url) : refuse4("frisbii_url_refused");
1158
1248
  },
1159
1249
  limitations: ["A live Frisbii card goes only to a merchant account a reviewed pin lists, and none is pinned yet."]
1160
1250
  });
@@ -1183,7 +1273,7 @@ var IYZICO_CARD_KEYS = /* @__PURE__ */ Object.freeze([
1183
1273
  "registerConsumerCard",
1184
1274
  "registerCard"
1185
1275
  ]);
1186
- var BODY_LIMIT4 = 4096;
1276
+ var BODY_LIMIT5 = 4096;
1187
1277
  var CARD_NUMBER3 = /^[0-9]{12,19}$/;
1188
1278
  var SECURITY_CODE3 = /^[0-9]{3,4}$/;
1189
1279
  var MONTH2 = /^(?:0?[1-9]|1[0-2])$/;
@@ -1193,8 +1283,8 @@ var CHANNELS = /* @__PURE__ */ Object.freeze(["WEB", "MOBILE_WEB", "MOBILE_IOS",
1193
1283
  var METADATA_KEYS = /* @__PURE__ */ Object.freeze(["lightRedesign", "pwiGrowthActionDisabled"]);
1194
1284
  var FLAG = /^[A-Za-z_]{1,16}$/;
1195
1285
  var HOLDER = /^[^\x00-\x1f\x7f0-9]{3,100}$/u;
1196
- var record3 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
1197
- var own4 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
1286
+ var record4 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
1287
+ var own5 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
1198
1288
  var inOrder2 = (value, keys) => {
1199
1289
  let at = 0;
1200
1290
  for (const name of Object.keys(value)) {
@@ -1206,17 +1296,17 @@ var inOrder2 = (value, keys) => {
1206
1296
  }
1207
1297
  return true;
1208
1298
  };
1209
- var refuse4 = (code) => Object.freeze({ verdict: "refuse", code });
1210
- var CARD5 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
1299
+ var refuse5 = (code) => Object.freeze({ verdict: "refuse", code });
1300
+ var CARD6 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
1211
1301
  function isIyzicoCardUrl(url) {
1212
1302
  return typeof url === "string" && IYZICO_CARD_URLS.includes(url);
1213
1303
  }
1214
- function readBody4(body) {
1215
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT4)
1304
+ function readBody5(body) {
1305
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT5)
1216
1306
  return null;
1217
1307
  try {
1218
1308
  const value = JSON.parse(body);
1219
- return record3(value) && JSON.stringify(value) === body ? value : null;
1309
+ return record4(value) && JSON.stringify(value) === body ? value : null;
1220
1310
  }
1221
1311
  catch {
1222
1312
  return null;
@@ -1228,26 +1318,26 @@ function hundredths(price) {
1228
1318
  return value > 0 ? value : null;
1229
1319
  }
1230
1320
  var holderName = (name) => typeof name === "string" && HOLDER.test(name) && name.trim().split(/\s+/).filter((word) => word.length > 1).length > 1;
1231
- var metadata = (value) => record3(value) && inOrder2(value, METADATA_KEYS) && Object.values(value).every((flag) => Array.isArray(flag) && flag.length === 1 && typeof flag[0] === "string" && FLAG.test(flag[0]));
1321
+ var metadata = (value) => record4(value) && inOrder2(value, METADATA_KEYS) && Object.values(value).every((flag) => Array.isArray(flag) && flag.length === 1 && typeof flag[0] === "string" && FLAG.test(flag[0]));
1232
1322
  function iyzicoBodyVerdict(body) {
1233
- const value = readBody4(body);
1323
+ const value = readBody5(body);
1234
1324
  if (value === null)
1235
- return refuse4("iyzico_body_unsupported");
1325
+ return refuse5("iyzico_body_unsupported");
1236
1326
  const card = value.paymentCard;
1237
- if (record3(card) && (own4(card, "cardToken") || own4(card, "ucsToken") || own4(card, "consumerToken")) && !own4(card, "cardNumber"))
1238
- return refuse4("iyzico_saved_card");
1239
- if (own4(value, "dccPayment") || own4(value, "dccQueryRrn"))
1240
- return refuse4("iyzico_dcc_refused");
1241
- if (own4(value, "gsmNumber") || own4(value, "buyerProtected") && value.buyerProtected !== false || record3(card) && (own4(card, "registerCard") && card.registerCard !== 0 || own4(card, "registerConsumerCard") && card.registerConsumerCard !== false)) {
1242
- return refuse4("iyzico_keeps_card");
1327
+ if (record4(card) && (own5(card, "cardToken") || own5(card, "ucsToken") || own5(card, "consumerToken")) && !own5(card, "cardNumber"))
1328
+ return refuse5("iyzico_saved_card");
1329
+ if (own5(value, "dccPayment") || own5(value, "dccQueryRrn"))
1330
+ return refuse5("iyzico_dcc_refused");
1331
+ if (own5(value, "gsmNumber") || own5(value, "buyerProtected") && value.buyerProtected !== false || record4(card) && (own5(card, "registerCard") && card.registerCard !== 0 || own5(card, "registerConsumerCard") && card.registerConsumerCard !== false)) {
1332
+ return refuse5("iyzico_keeps_card");
1243
1333
  }
1244
1334
  if (Number.isSafeInteger(value.installment) && value.installment > 1)
1245
- return refuse4("iyzico_installments_refused");
1246
- if (!inOrder2(value, IYZICO_BODY_KEYS) || !["installment", "paidPrice", "paymentChannel", "paymentCard"].every((key) => own4(value, key)) || value.installment !== 1 || hundredths(value.paidPrice) === null || !CHANNELS.includes(value.paymentChannel) || own4(value, "pwiMetadata") && !metadata(value.pwiMetadata))
1247
- return refuse4("iyzico_body_unsupported");
1248
- if (!record3(card) || Object.keys(card).join() !== IYZICO_CARD_KEYS.join() || typeof card.cardNumber !== "string" || !CARD_NUMBER3.test(card.cardNumber) || !holderName(card.cardHolderName) || typeof card.expireYear !== "string" || !YEAR2.test(card.expireYear) || typeof card.expireMonth !== "string" || !MONTH2.test(card.expireMonth) || typeof card.cvc !== "string" || !SECURITY_CODE3.test(card.cvc))
1249
- return refuse4("iyzico_body_unsupported");
1250
- return CARD5;
1335
+ return refuse5("iyzico_installments_refused");
1336
+ if (!inOrder2(value, IYZICO_BODY_KEYS) || !["installment", "paidPrice", "paymentChannel", "paymentCard"].every((key) => own5(value, key)) || value.installment !== 1 || hundredths(value.paidPrice) === null || !CHANNELS.includes(value.paymentChannel) || own5(value, "pwiMetadata") && !metadata(value.pwiMetadata))
1337
+ return refuse5("iyzico_body_unsupported");
1338
+ if (!record4(card) || Object.keys(card).join() !== IYZICO_CARD_KEYS.join() || typeof card.cardNumber !== "string" || !CARD_NUMBER3.test(card.cardNumber) || !holderName(card.cardHolderName) || typeof card.expireYear !== "string" || !YEAR2.test(card.expireYear) || typeof card.expireMonth !== "string" || !MONTH2.test(card.expireMonth) || typeof card.cvc !== "string" || !SECURITY_CODE3.test(card.cvc))
1339
+ return refuse5("iyzico_body_unsupported");
1340
+ return CARD6;
1251
1341
  }
1252
1342
  var iyzico_default = /* @__PURE__ */ registerProcessor({
1253
1343
  psp: IYZICO_PSP,
@@ -1280,7 +1370,7 @@ var iyzico_default = /* @__PURE__ */ registerProcessor({
1280
1370
  source: "https://docs.iyzico.com/en/payment-methods/checkoutform/cf-implementation/cf-retrieve"
1281
1371
  },
1282
1372
  exactUrl: isIyzicoCardUrl,
1283
- bodyGate: (url, body) => url !== void 0 && !isIyzicoCardUrl(url) ? refuse4("iyzico_url_refused") : iyzicoBodyVerdict(body)
1373
+ bodyGate: (url, body) => url !== void 0 && !isIyzicoCardUrl(url) ? refuse5("iyzico_url_refused") : iyzicoBodyVerdict(body)
1284
1374
  });
1285
1375
  // src/processors/midtrans.js
1286
1376
  var MIDTRANS_PSP = "midtrans";
@@ -1288,14 +1378,14 @@ var MIDTRANS_OPERATION = "midtrans.card_request";
1288
1378
  var MIDTRANS_TOKEN_URL = "https://api.midtrans.com/v2/token";
1289
1379
  var MIDTRANS_SANDBOX_TOKEN_URL = "https://api.sandbox.midtrans.com/v2/token";
1290
1380
  var MIDTRANS_TOKEN_KEYS = /* @__PURE__ */ Object.freeze(["card_cvv", "card_number", "card_exp_month", "card_exp_year", "installment_term"]);
1291
- var BODY_LIMIT5 = 4096;
1381
+ var BODY_LIMIT6 = 4096;
1292
1382
  var CARD_NUMBER4 = /^[0-9]{12,19}$/;
1293
1383
  var SECURITY_CODE4 = /^[0-9]{3,4}$/;
1294
1384
  var MONTH3 = /^(?:0[1-9]|1[0-2])$/;
1295
1385
  var YEAR3 = /^20[0-9]{2}$/;
1296
1386
  var TERM = /^[0-9]{1,3}$/;
1297
- var record4 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
1298
- var own5 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
1387
+ var record5 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
1388
+ var own6 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
1299
1389
  var inOrder3 = (value, keys) => {
1300
1390
  let at = 0;
1301
1391
  for (const name of Object.keys(value)) {
@@ -1307,18 +1397,18 @@ var inOrder3 = (value, keys) => {
1307
1397
  }
1308
1398
  return true;
1309
1399
  };
1310
- var refuse5 = (code) => Object.freeze({ verdict: "refuse", code });
1311
- var CARD6 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
1400
+ var refuse6 = (code) => Object.freeze({ verdict: "refuse", code });
1401
+ var CARD7 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
1312
1402
  function isMidtransTokenUrl(url) {
1313
1403
  return url === MIDTRANS_TOKEN_URL || url === MIDTRANS_SANDBOX_TOKEN_URL;
1314
1404
  }
1315
- function readBody5(body) {
1316
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT5)
1405
+ function readBody6(body) {
1406
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT6)
1317
1407
  return null;
1318
1408
  let value;
1319
1409
  try {
1320
1410
  value = JSON.parse(body);
1321
- if (!record4(value) || JSON.stringify(value) !== body)
1411
+ if (!record5(value) || JSON.stringify(value) !== body)
1322
1412
  return null;
1323
1413
  }
1324
1414
  catch {
@@ -1327,20 +1417,20 @@ function readBody5(body) {
1327
1417
  return value;
1328
1418
  }
1329
1419
  function midtransBodyVerdict(body) {
1330
- const value = readBody5(body);
1420
+ const value = readBody6(body);
1331
1421
  if (value === null || !inOrder3(value, MIDTRANS_TOKEN_KEYS)) {
1332
- if (record4(value) && (own5(value, "token_id") || own5(value, "two_click")) && !own5(value, "card_number"))
1333
- return refuse5("midtrans_saved_card");
1334
- return refuse5("midtrans_body_unsupported");
1422
+ if (record5(value) && (own6(value, "token_id") || own6(value, "two_click")) && !own6(value, "card_number"))
1423
+ return refuse6("midtrans_saved_card");
1424
+ return refuse6("midtrans_body_unsupported");
1335
1425
  }
1336
- if (!own5(value, "card_cvv") || !own5(value, "card_number") || !own5(value, "card_exp_month") || !own5(value, "card_exp_year")) {
1337
- return refuse5("midtrans_body_unsupported");
1426
+ if (!own6(value, "card_cvv") || !own6(value, "card_number") || !own6(value, "card_exp_month") || !own6(value, "card_exp_year")) {
1427
+ return refuse6("midtrans_body_unsupported");
1338
1428
  }
1339
1429
  if (typeof value.card_cvv !== "string" || !SECURITY_CODE4.test(value.card_cvv) || typeof value.card_number !== "string" || !CARD_NUMBER4.test(value.card_number) || typeof value.card_exp_month !== "string" || !MONTH3.test(value.card_exp_month) || typeof value.card_exp_year !== "string" || !YEAR3.test(value.card_exp_year))
1340
- return refuse5("midtrans_body_unsupported");
1341
- if (own5(value, "installment_term") && (typeof value.installment_term !== "string" || !TERM.test(value.installment_term)))
1342
- return refuse5("midtrans_body_unsupported");
1343
- return CARD6;
1430
+ return refuse6("midtrans_body_unsupported");
1431
+ if (own6(value, "installment_term") && (typeof value.installment_term !== "string" || !TERM.test(value.installment_term)))
1432
+ return refuse6("midtrans_body_unsupported");
1433
+ return CARD7;
1344
1434
  }
1345
1435
  var midtrans_default = /* @__PURE__ */ registerProcessor({
1346
1436
  psp: MIDTRANS_PSP,
@@ -1375,20 +1465,20 @@ var midtrans_default = /* @__PURE__ */ registerProcessor({
1375
1465
  var MONEI_PSP = "monei";
1376
1466
  var MONEI_OPERATION = "monei.card_request";
1377
1467
  var MONEI_TOKENS_URL = "https://api.monei.com/v1/tokens";
1378
- var BODY_LIMIT6 = 1024;
1468
+ var BODY_LIMIT7 = 1024;
1379
1469
  var PAYMENT_ID = /^(?:[0-9a-f]{32}|[0-9a-f]{40})$/;
1380
1470
  var MONEI_CARD_KEYS = /* @__PURE__ */ Object.freeze(["number", "expMonth", "expYear", "cvc"]);
1381
- var NUMBER = /^[0-9]{12,19}$/;
1471
+ var NUMBER2 = /^[0-9]{12,19}$/;
1382
1472
  var MONTH4 = /^(?:0[1-9]|1[0-2])$/;
1383
1473
  var YEAR4 = /^[0-9]{2}$/;
1384
1474
  var CODE = /^[0-9]{3,4}$/;
1385
- var record5 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
1475
+ var record6 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
1386
1476
  var keysAre = (value, keys) => {
1387
1477
  const found = Object.keys(value);
1388
1478
  return found.length === keys.length && found.every((key, at) => key === keys[at]);
1389
1479
  };
1390
- var refuse6 = (code) => Object.freeze({ verdict: "refuse", code });
1391
- var CARD7 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
1480
+ var refuse7 = (code) => Object.freeze({ verdict: "refuse", code });
1481
+ var CARD8 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
1392
1482
  function luhn2(digits2) {
1393
1483
  let sum = 0;
1394
1484
  for (let at = 0; at < digits2.length; at += 1) {
@@ -1405,12 +1495,12 @@ function luhn2(digits2) {
1405
1495
  function isMoneiTokensUrl(url) {
1406
1496
  return url === MONEI_TOKENS_URL;
1407
1497
  }
1408
- function readBody6(body) {
1409
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT6)
1498
+ function readBody7(body) {
1499
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT7)
1410
1500
  return null;
1411
1501
  try {
1412
1502
  const value = JSON.parse(body);
1413
- return record5(value) && JSON.stringify(value) === body ? value : null;
1503
+ return record6(value) && JSON.stringify(value) === body ? value : null;
1414
1504
  }
1415
1505
  catch {
1416
1506
  return null;
@@ -1418,19 +1508,19 @@ function readBody6(body) {
1418
1508
  }
1419
1509
  function moneiBodyVerdict(body, url) {
1420
1510
  if (url !== void 0 && !isMoneiTokensUrl(url))
1421
- return refuse6("monei_url_refused");
1422
- const value = readBody6(body);
1511
+ return refuse7("monei_url_refused");
1512
+ const value = readBody7(body);
1423
1513
  if (value === null || !keysAre(value, ["paymentId", "paymentMethod"]) || typeof value.paymentId !== "string" || !PAYMENT_ID.test(value.paymentId))
1424
- return refuse6("monei_body_unsupported");
1514
+ return refuse7("monei_body_unsupported");
1425
1515
  const method = value.paymentMethod;
1426
- if (!record5(method) || !keysAre(method, ["card"]) || !record5(method.card) || !keysAre(method.card, MONEI_CARD_KEYS))
1427
- return refuse6("monei_body_unsupported");
1516
+ if (!record6(method) || !keysAre(method, ["card"]) || !record6(method.card) || !keysAre(method.card, MONEI_CARD_KEYS))
1517
+ return refuse7("monei_body_unsupported");
1428
1518
  const { number, expMonth, expYear, cvc } = method.card;
1429
1519
  if (![number, expMonth, expYear, cvc].every((part) => typeof part === "string"))
1430
- return refuse6("monei_body_unsupported");
1431
- if (!NUMBER.test(number) || !luhn2(number) || !MONTH4.test(expMonth) || !YEAR4.test(expYear) || !CODE.test(cvc))
1432
- return refuse6("monei_body_unsupported");
1433
- return CARD7;
1520
+ return refuse7("monei_body_unsupported");
1521
+ if (!NUMBER2.test(number) || !luhn2(number) || !MONTH4.test(expMonth) || !YEAR4.test(expYear) || !CODE.test(cvc))
1522
+ return refuse7("monei_body_unsupported");
1523
+ return CARD8;
1434
1524
  }
1435
1525
  var MONEI_MERCHANT_PINS = /* @__PURE__ */ Object.freeze([
1436
1526
  Object.freeze({ merchant: "Genuins", accountIds: Object.freeze(["8d58ab4c-4ad0-4053-b18f-79d80e9ee158"]), merchantUrls: Object.freeze(["https://genuins.com/"]) })
@@ -1494,9 +1584,9 @@ var OCEANPAYMENT_FORM_FIELDS = /* @__PURE__ */ Object.freeze([
1494
1584
  "reference"
1495
1585
  ]);
1496
1586
  var URL_LIMIT3 = 2048;
1497
- var BODY_LIMIT7 = 8192;
1587
+ var BODY_LIMIT8 = 8192;
1498
1588
  var SEND_PAY = /^\/gateway\/sendPay;jsessionid=[A-Za-z0-9._!-]{16,128}$/;
1499
- var own6 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
1589
+ var own7 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
1500
1590
  var exact = (pattern, value) => typeof value === "string" && pattern.test(value);
1501
1591
  var CARD_RUN = /[0-9]{12}/;
1502
1592
  var printable = (max) => (value) => typeof value === "string" && value.length <= max && /^[\x20-\x7e]*$/.test(value) && !CARD_RUN.test(value);
@@ -1543,7 +1633,7 @@ function oceanpaymentSendPayUrl(url) {
1543
1633
  catch {
1544
1634
  return null;
1545
1635
  }
1546
- if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own6(OCEANPAYMENT_HOSTS, parsed.hostname) || !SEND_PAY.test(parsed.pathname))
1636
+ if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own7(OCEANPAYMENT_HOSTS, parsed.hostname) || !SEND_PAY.test(parsed.pathname))
1547
1637
  return null;
1548
1638
  return Object.freeze({ host: parsed.hostname, environment: OCEANPAYMENT_HOSTS[parsed.hostname] });
1549
1639
  }
@@ -1571,7 +1661,7 @@ function formDecode(raw) {
1571
1661
  return formEncode(value) === raw ? value : null;
1572
1662
  }
1573
1663
  function readPairs(body) {
1574
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT7)
1664
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT8)
1575
1665
  return null;
1576
1666
  const pairs = [];
1577
1667
  for (const chunk of body.split("&")) {
@@ -1656,7 +1746,7 @@ var PAYMENTWALL_PSP = "paymentwall";
1656
1746
  var PAYMENTWALL_OPERATION = "paymentwall.card_request";
1657
1747
  var PAYMENTWALL_TOKEN_URL = "https://pwgateway.com/api/token";
1658
1748
  var PAYMENTWALL_SANDBOX_TOKEN_URL = "https://api.paymentwall.com/api/brick/token";
1659
- var BODY_LIMIT8 = 2048;
1749
+ var BODY_LIMIT9 = 2048;
1660
1750
  var KEY = "public_key";
1661
1751
  var PUBLIC_KEY = /^(?:t_)?[A-Za-z0-9]{16,64}$/;
1662
1752
  var SHAPES2 = /* @__PURE__ */ Object.freeze({
@@ -1666,8 +1756,8 @@ var SHAPES2 = /* @__PURE__ */ Object.freeze({
1666
1756
  "card[exp_year]": /^(?:[0-9]{2}|20[0-9]{2})$/,
1667
1757
  "card[cvv]": /^[0-9]{3,4}$/
1668
1758
  });
1669
- var refuse7 = (code) => Object.freeze({ verdict: "refuse", code });
1670
- var CARD8 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
1759
+ var refuse8 = (code) => Object.freeze({ verdict: "refuse", code });
1760
+ var CARD9 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
1671
1761
  function luhn3(digits2) {
1672
1762
  let sum = 0;
1673
1763
  for (let at = 0; at < digits2.length; at += 1) {
@@ -1695,7 +1785,7 @@ function paymentwallKeyEnvironment(publicKey) {
1695
1785
  return publicKey.startsWith("t_") ? "sandbox" : "production";
1696
1786
  }
1697
1787
  function readPairs2(body) {
1698
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT8 || !/^[A-Za-z0-9_[\]=&]+$/.test(body))
1788
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT9 || !/^[A-Za-z0-9_[\]=&]+$/.test(body))
1699
1789
  return null;
1700
1790
  const pairs = /* @__PURE__ */ new Map();
1701
1791
  for (const chunk of body.split("&")) {
@@ -1711,21 +1801,21 @@ function readPairs2(body) {
1711
1801
  }
1712
1802
  function paymentwallBodyVerdict(body, url) {
1713
1803
  if (url !== void 0 && !isPaymentwallTokenUrl(url))
1714
- return refuse7("paymentwall_url_refused");
1804
+ return refuse8("paymentwall_url_refused");
1715
1805
  const pairs = readPairs2(body);
1716
1806
  if (pairs === null)
1717
- return refuse7("paymentwall_body_unsupported");
1807
+ return refuse8("paymentwall_body_unsupported");
1718
1808
  if (pairs.has("card[token]") && !pairs.has("card[number]"))
1719
- return refuse7("paymentwall_saved_card");
1809
+ return refuse8("paymentwall_saved_card");
1720
1810
  const keys = Object.keys(SHAPES2);
1721
1811
  if (pairs.size !== keys.length || !keys.every((key) => pairs.has(key) && SHAPES2[key].test(pairs.get(key)))) {
1722
- return refuse7("paymentwall_body_unsupported");
1812
+ return refuse8("paymentwall_body_unsupported");
1723
1813
  }
1724
1814
  if (!luhn3(pairs.get("card[number]")))
1725
- return refuse7("paymentwall_body_unsupported");
1815
+ return refuse8("paymentwall_body_unsupported");
1726
1816
  if (url !== void 0 && paymentwallKeyEnvironment(pairs.get(KEY)) !== paymentwallUrlEnvironment(url))
1727
- return refuse7("paymentwall_key_refused");
1728
- return CARD8;
1817
+ return refuse8("paymentwall_key_refused");
1818
+ return CARD9;
1729
1819
  }
1730
1820
  var paymentwall_default = /* @__PURE__ */ registerProcessor({
1731
1821
  psp: PAYMENTWALL_PSP,
@@ -1878,7 +1968,7 @@ var PAYSTACK_BODY_KEYS = /* @__PURE__ */ Object.freeze([
1878
1968
  "transaction_type"
1879
1969
  ]);
1880
1970
  var OPTIONAL = /* @__PURE__ */ new Set(["access_code", "card_holder_name", "transaction_type"]);
1881
- var BODY_LIMIT9 = 4096;
1971
+ var BODY_LIMIT10 = 4096;
1882
1972
  var CIPHERTEXT_BYTES = [62, 63, 64];
1883
1973
  var BASE64 = /^[A-Za-z0-9+/]+={0,2}$/;
1884
1974
  var SHAPES3 = /* @__PURE__ */ Object.freeze({
@@ -1892,8 +1982,8 @@ var SHAPES3 = /* @__PURE__ */ Object.freeze({
1892
1982
  card_holder_name: /^[^\x00-\x1f\x7f0-9]{1,128}$/u,
1893
1983
  transaction_type: /^[a-z_]{1,32}$/
1894
1984
  });
1895
- var own7 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
1896
- var refuse8 = (code) => Object.freeze({ verdict: "refuse", code });
1985
+ var own8 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
1986
+ var refuse9 = (code) => Object.freeze({ verdict: "refuse", code });
1897
1987
  function paystackFormValue(value) {
1898
1988
  return encodeURIComponent(String(value)).replace(/%20/g, "+").replace(/[!'()*~]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);
1899
1989
  }
@@ -1916,7 +2006,7 @@ function isCiphertext(value) {
1916
2006
  return btoa(binary) === value && CIPHERTEXT_BYTES.includes(binary.length);
1917
2007
  }
1918
2008
  function readForm(body) {
1919
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT9)
2009
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT10)
1920
2010
  return null;
1921
2011
  const entries = [];
1922
2012
  for (const part of body.split("&")) {
@@ -1935,21 +2025,21 @@ function readForm(body) {
1935
2025
  function paystackBodyVerdict(body) {
1936
2026
  const entries = readForm(body);
1937
2027
  if (entries === null)
1938
- return refuse8("paystack_body_unsupported");
2028
+ return refuse9("paystack_body_unsupported");
1939
2029
  const keys = entries.map(([key]) => key);
1940
2030
  if (keys.includes("subscription"))
1941
- return refuse8("paystack_subscription");
2031
+ return refuse9("paystack_subscription");
1942
2032
  if (keys.includes("remember_card") && entries.find(([key]) => key === "remember_card")[1] !== "false")
1943
- return refuse8("paystack_saved_card");
2033
+ return refuse9("paystack_saved_card");
1944
2034
  const expected = PAYSTACK_BODY_KEYS.filter((key) => !OPTIONAL.has(key) || keys.includes(key));
1945
2035
  if (keys.length !== expected.length || keys.some((key, i) => key !== expected[i]))
1946
- return refuse8("paystack_body_unsupported");
2036
+ return refuse9("paystack_body_unsupported");
1947
2037
  const fields = Object.fromEntries(entries);
1948
2038
  if (!isCiphertext(fields.clientdata))
1949
- return refuse8("paystack_body_unsupported");
2039
+ return refuse9("paystack_body_unsupported");
1950
2040
  for (const [key, shape] of Object.entries(SHAPES3)) {
1951
- if (own7(fields, key) && !shape.test(fields[key]))
1952
- return refuse8("paystack_body_unsupported");
2041
+ if (own8(fields, key) && !shape.test(fields[key]))
2042
+ return refuse9("paystack_body_unsupported");
1953
2043
  }
1954
2044
  return Object.freeze({ verdict: "card", fields: Object.freeze(fields) });
1955
2045
  }
@@ -1976,7 +2066,7 @@ var paystack_default = /* @__PURE__ */ registerProcessor({
1976
2066
  // Not surveyed: reading a charge back takes the merchant's secret key, which Agentcard never holds.
1977
2067
  settlementReadback: "not_surveyed",
1978
2068
  exactUrl: isPaystackChargeUrl,
1979
- bodyGate: (url, body) => url !== void 0 && !isPaystackChargeUrl(url) ? refuse8("paystack_url_refused") : paystackBodyVerdict(body),
2069
+ bodyGate: (url, body) => url !== void 0 && !isPaystackChargeUrl(url) ? refuse9("paystack_url_refused") : paystackBodyVerdict(body),
1980
2070
  // No amount reader: the charge names none, so the agent's pair is the figure the cardholder approves.
1981
2071
  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."]
1982
2072
  });
@@ -1984,7 +2074,7 @@ var paystack_default = /* @__PURE__ */ registerProcessor({
1984
2074
  var PROCESSOUT_PSP = "processout";
1985
2075
  var PROCESSOUT_OPERATION = "processout.card_request";
1986
2076
  var URL_LIMIT4 = 512;
1987
- var BODY_LIMIT10 = 4096;
2077
+ var BODY_LIMIT11 = 4096;
1988
2078
  var CARD_URL = /^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})$/;
1989
2079
  var PAGE_KEYS2 = /* @__PURE__ */ Object.freeze(["name", "contact", "preferred_scheme"]);
1990
2080
  var CONTACT_KEYS = /* @__PURE__ */ Object.freeze(["address1", "address2", "city", "state", "country_code", "zip"]);
@@ -1999,7 +2089,7 @@ var DEVICE_KEYS = /* @__PURE__ */ Object.freeze([
1999
2089
  ]);
2000
2090
  var PROCESSOUT_CARD_KEYS = /* @__PURE__ */ Object.freeze(["number", "exp_month", "exp_year", "cvc2"]);
2001
2091
  var BODY_KEYS = /* @__PURE__ */ new Set([...PAGE_KEYS2, "device", ...DEVICE_KEYS, ...PROCESSOUT_CARD_KEYS]);
2002
- var NUMBER2 = /^[0-9]{12,19}$/;
2092
+ var NUMBER3 = /^[0-9]{12,19}$/;
2003
2093
  var MONTH5 = /^(?:[1-9]|1[0-2])$/;
2004
2094
  var YEAR5 = /^20[0-9]{2}$/;
2005
2095
  var CODE2 = /^[0-9]{3,4}$/;
@@ -2007,10 +2097,10 @@ var TEXT_LIMIT = 256;
2007
2097
  var SCHEME = /^[A-Za-z][A-Za-z0-9 _-]{0,31}$/;
2008
2098
  var LANGUAGE2 = /^[A-Za-z]{1,8}(?:-[A-Za-z0-9]{1,8}){0,4}$/;
2009
2099
  var PAN_LIKE = /(?:[0-9][^0-9A-Za-z]*){12,}/;
2010
- var record6 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
2011
- var own8 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
2012
- var refuse9 = (code) => Object.freeze({ verdict: "refuse", code });
2013
- var CARD9 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
2100
+ var record7 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
2101
+ var own9 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
2102
+ var refuse10 = (code) => Object.freeze({ verdict: "refuse", code });
2103
+ var CARD10 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
2014
2104
  var BASE642 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
2015
2105
  function base64Of(text3) {
2016
2106
  let out = "";
@@ -2047,12 +2137,12 @@ function processoutCardTarget(url) {
2047
2137
  function isProcessoutCardUrl(url) {
2048
2138
  return processoutCardTarget(url) !== null;
2049
2139
  }
2050
- function readBody7(body) {
2051
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT10)
2140
+ function readBody8(body) {
2141
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT11)
2052
2142
  return null;
2053
2143
  try {
2054
2144
  const value = JSON.parse(body);
2055
- return record6(value) && JSON.stringify(value) === body ? value : null;
2145
+ return record7(value) && JSON.stringify(value) === body ? value : null;
2056
2146
  }
2057
2147
  catch {
2058
2148
  return null;
@@ -2070,31 +2160,31 @@ var DEVICE_RULES = /* @__PURE__ */ Object.freeze({
2070
2160
  });
2071
2161
  function soundDevice(value) {
2072
2162
  const device = value.device;
2073
- if (!record6(device) || !own8(device, "request_origin") || !own8(device, "app_timezone_offset"))
2163
+ if (!record7(device) || !own9(device, "request_origin") || !own9(device, "app_timezone_offset"))
2074
2164
  return false;
2075
- return DEVICE_KEYS.every((key) => own8(device, key) ? DEVICE_RULES[key](device[key]) && own8(value, key) && value[key] === device[key] : !own8(value, key)) && Object.keys(device).every((key) => DEVICE_KEYS.includes(key));
2165
+ return DEVICE_KEYS.every((key) => own9(device, key) ? DEVICE_RULES[key](device[key]) && own9(value, key) && value[key] === device[key] : !own9(value, key)) && Object.keys(device).every((key) => DEVICE_KEYS.includes(key));
2076
2166
  }
2077
2167
  function soundPageData(value) {
2078
- if (own8(value, "name") && !pageText(value.name))
2168
+ if (own9(value, "name") && !pageText(value.name))
2079
2169
  return false;
2080
- if (own8(value, "preferred_scheme") && !(value.preferred_scheme === null || typeof value.preferred_scheme === "string" && SCHEME.test(value.preferred_scheme)))
2170
+ if (own9(value, "preferred_scheme") && !(value.preferred_scheme === null || typeof value.preferred_scheme === "string" && SCHEME.test(value.preferred_scheme)))
2081
2171
  return false;
2082
2172
  const contact = value.contact;
2083
- return record6(contact) && Object.keys(contact).every((key) => CONTACT_KEYS.includes(key) && pageText(contact[key]));
2173
+ return record7(contact) && Object.keys(contact).every((key) => CONTACT_KEYS.includes(key) && pageText(contact[key]));
2084
2174
  }
2085
2175
  function processoutBodyVerdict(body, url) {
2086
2176
  if (url !== void 0 && processoutCardTarget(url) === null)
2087
- return refuse9("processout_url_refused");
2088
- const value = readBody7(body);
2177
+ return refuse10("processout_url_refused");
2178
+ const value = readBody8(body);
2089
2179
  if (value === null || !Object.keys(value).every((key) => BODY_KEYS.has(key)))
2090
- return refuse9("processout_body_unsupported");
2180
+ return refuse10("processout_body_unsupported");
2091
2181
  if (!PROCESSOUT_CARD_KEYS.every((key) => typeof value[key] === "string"))
2092
- return refuse9("processout_body_unsupported");
2093
- if (!NUMBER2.test(value.number) || !luhn4(value.number) || !MONTH5.test(value.exp_month) || !YEAR5.test(value.exp_year) || !CODE2.test(value.cvc2))
2094
- return refuse9("processout_body_unsupported");
2182
+ return refuse10("processout_body_unsupported");
2183
+ if (!NUMBER3.test(value.number) || !luhn4(value.number) || !MONTH5.test(value.exp_month) || !YEAR5.test(value.exp_year) || !CODE2.test(value.cvc2))
2184
+ return refuse10("processout_body_unsupported");
2095
2185
  if (!soundPageData(value) || !soundDevice(value))
2096
- return refuse9("processout_body_unsupported");
2097
- return CARD9;
2186
+ return refuse10("processout_body_unsupported");
2187
+ return CARD10;
2098
2188
  }
2099
2189
  var processout_default = /* @__PURE__ */ registerProcessor({
2100
2190
  psp: PROCESSOUT_PSP,
@@ -2137,15 +2227,15 @@ var USAEPAY_HOSTS = /* @__PURE__ */ Object.freeze({
2137
2227
  "sandbox.usaepay.com": "sandbox"
2138
2228
  });
2139
2229
  var USAEPAY_PAYMENT_KEYS_PATH = "/api/v2/pub/payment_keys";
2140
- var BODY_LIMIT11 = 512;
2230
+ var BODY_LIMIT12 = 512;
2141
2231
  var URL_LIMIT5 = 256;
2142
2232
  var CARD_NUMBER5 = /^[0-9]{13,19}$/;
2143
2233
  var EXPIRATION = /^(?:0[1-9]|1[0-2])[0-9]{2}$/;
2144
2234
  var SECURITY_CODE5 = /^(?:[0-9]{3,4})?$/;
2145
- var record7 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
2146
- var own9 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
2147
- var refuse10 = (code) => Object.freeze({ verdict: "refuse", code });
2148
- var CARD10 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
2235
+ var record8 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
2236
+ var own10 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
2237
+ var refuse11 = (code) => Object.freeze({ verdict: "refuse", code });
2238
+ var CARD11 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
2149
2239
  function usaepayPaymentKeysUrl(url) {
2150
2240
  if (typeof url !== "string" || url.length > URL_LIMIT5 || url.includes("?") || url.includes("#"))
2151
2241
  return null;
@@ -2156,7 +2246,7 @@ function usaepayPaymentKeysUrl(url) {
2156
2246
  catch {
2157
2247
  return null;
2158
2248
  }
2159
- if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own9(USAEPAY_HOSTS, parsed.hostname) || parsed.pathname !== USAEPAY_PAYMENT_KEYS_PATH)
2249
+ if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own10(USAEPAY_HOSTS, parsed.hostname) || parsed.pathname !== USAEPAY_PAYMENT_KEYS_PATH)
2160
2250
  return null;
2161
2251
  return Object.freeze({ host: parsed.hostname, environment: USAEPAY_HOSTS[parsed.hostname] });
2162
2252
  }
@@ -2171,23 +2261,23 @@ function luhn5(digits2) {
2171
2261
  }
2172
2262
  return sum % 10 === 0;
2173
2263
  }
2174
- function readBody8(body) {
2175
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT11)
2264
+ function readBody9(body) {
2265
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT12)
2176
2266
  return null;
2177
2267
  try {
2178
2268
  const value = JSON.parse(body);
2179
- return record7(value) && JSON.stringify(value) === body ? value : null;
2269
+ return record8(value) && JSON.stringify(value) === body ? value : null;
2180
2270
  }
2181
2271
  catch {
2182
2272
  return null;
2183
2273
  }
2184
2274
  }
2185
2275
  function usaepayBodyVerdict(body) {
2186
- const value = readBody8(body);
2276
+ const value = readBody9(body);
2187
2277
  const card = value === null ? null : value.creditcard;
2188
- if (value === null || Object.keys(value).join() !== "creditcard" || !record7(card) || Object.keys(card).join() !== "number,expiration,cvc" || typeof card.number !== "string" || !CARD_NUMBER5.test(card.number) || !luhn5(card.number) || typeof card.expiration !== "string" || !EXPIRATION.test(card.expiration) || typeof card.cvc !== "string" || !SECURITY_CODE5.test(card.cvc))
2189
- return refuse10("usaepay_body_unsupported");
2190
- return CARD10;
2278
+ if (value === null || Object.keys(value).join() !== "creditcard" || !record8(card) || Object.keys(card).join() !== "number,expiration,cvc" || typeof card.number !== "string" || !CARD_NUMBER5.test(card.number) || !luhn5(card.number) || typeof card.expiration !== "string" || !EXPIRATION.test(card.expiration) || typeof card.cvc !== "string" || !SECURITY_CODE5.test(card.cvc))
2279
+ return refuse11("usaepay_body_unsupported");
2280
+ return CARD11;
2191
2281
  }
2192
2282
  var usaepay_default = /* @__PURE__ */ registerProcessor({
2193
2283
  psp: USAEPAY_PSP,
@@ -2219,7 +2309,7 @@ var usaepay_default = /* @__PURE__ */ registerProcessor({
2219
2309
  source: "https://help.usaepay.info/developer/payjs-v2/ , https://help.usaepay.info/api/rest/"
2220
2310
  },
2221
2311
  exactUrl: isUsaepayPaymentKeysUrl,
2222
- bodyGate: (url, body) => url !== void 0 && !isUsaepayPaymentKeysUrl(url) ? refuse10("usaepay_url_refused") : usaepayBodyVerdict(body)
2312
+ bodyGate: (url, body) => url !== void 0 && !isUsaepayPaymentKeysUrl(url) ? refuse11("usaepay_url_refused") : usaepayBodyVerdict(body)
2223
2313
  // No amount reader: the request names none, so the agent's pair is the figure the cardholder approves.
2224
2314
  });
2225
2315
  // src/processors/viva_wallet.js
@@ -2255,7 +2345,7 @@ var VIVA_WALLET_BODY_KEYS = /* @__PURE__ */ Object.freeze([
2255
2345
  "merchantTrns",
2256
2346
  "captchaToken"
2257
2347
  ]);
2258
- var BODY_LIMIT12 = 16384;
2348
+ var BODY_LIMIT13 = 16384;
2259
2349
  var URL_LIMIT6 = 256;
2260
2350
  var ORDER_CODE = /^[0-9]{16}$/;
2261
2351
  var CARD_NUMBER6 = /^[0-9]{13,19}$/;
@@ -2267,10 +2357,10 @@ var MEMBER_NAME = /^[A-Za-z][A-Za-z0-9]{0,31}$/;
2267
2357
  var SHORT_ID = /^[A-Za-z0-9_-]{1,64}$/;
2268
2358
  var TEXT = /^[^\u0000-\u001f\u007f]{0,200}$/;
2269
2359
  var CARD_DIGITS = /[0-9]{12,}/;
2270
- var record8 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
2271
- var own10 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
2272
- var refuse11 = (code) => Object.freeze({ verdict: "refuse", code });
2273
- var CARD11 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
2360
+ var record9 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
2361
+ var own11 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
2362
+ var refuse12 = (code) => Object.freeze({ verdict: "refuse", code });
2363
+ var CARD12 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
2274
2364
  var inOrder4 = (value, keys) => {
2275
2365
  let at = 0;
2276
2366
  for (const name of Object.keys(value)) {
@@ -2285,7 +2375,7 @@ var inOrder4 = (value, keys) => {
2285
2375
  var cardDigits = (text3) => CARD_DIGITS.test(text3.replace(/[^0-9A-Za-z]/g, ""));
2286
2376
  var plainText = (value) => typeof value === "string" && TEXT.test(value) && !cardDigits(value);
2287
2377
  var scalar = (value) => value === null || typeof value === "boolean" || Number.isSafeInteger(value) && Math.abs(value) < 1e9 || plainText(value);
2288
- var flatRecord = (value, limit) => record8(value) && Object.keys(value).length <= limit && Object.entries(value).every(([key, item]) => MEMBER_NAME.test(key) && scalar(item));
2378
+ var flatRecord = (value, limit) => record9(value) && Object.keys(value).length <= limit && Object.entries(value).every(([key, item]) => MEMBER_NAME.test(key) && scalar(item));
2289
2379
  function vivaWalletChargeTokensUrl(url) {
2290
2380
  if (typeof url !== "string" || url.length > URL_LIMIT6 || url.includes("?") || url.includes("#"))
2291
2381
  return null;
@@ -2296,7 +2386,7 @@ function vivaWalletChargeTokensUrl(url) {
2296
2386
  catch {
2297
2387
  return null;
2298
2388
  }
2299
- if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own10(VIVA_WALLET_HOSTS, parsed.hostname) || parsed.pathname !== VIVA_WALLET_CHARGE_TOKENS_PATH)
2389
+ if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password || !own11(VIVA_WALLET_HOSTS, parsed.hostname) || parsed.pathname !== VIVA_WALLET_CHARGE_TOKENS_PATH)
2300
2390
  return null;
2301
2391
  return Object.freeze({ host: parsed.hostname, environment: VIVA_WALLET_HOSTS[parsed.hostname] });
2302
2392
  }
@@ -2314,12 +2404,12 @@ function luhn6(digits2) {
2314
2404
  function vivaWalletMaskedNumber(number) {
2315
2405
  return `${number.slice(0, 6)}${"X".repeat(Math.max(0, number.length - 10))}${number.slice(-4)}`;
2316
2406
  }
2317
- function readBody9(body) {
2318
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT12)
2407
+ function readBody10(body) {
2408
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT13)
2319
2409
  return null;
2320
2410
  try {
2321
2411
  const value = JSON.parse(body);
2322
- return record8(value) && JSON.stringify(value) === body ? value : null;
2412
+ return record9(value) && JSON.stringify(value) === body ? value : null;
2323
2413
  }
2324
2414
  catch {
2325
2415
  return null;
@@ -2331,26 +2421,26 @@ function currencyNumber(value) {
2331
2421
  return typeof value === "string" && /^[0-9]{3}$/.test(value) ? Number(value) : null;
2332
2422
  }
2333
2423
  function vivaWalletBodyVerdict(body) {
2334
- const value = readBody9(body);
2424
+ const value = readBody10(body);
2335
2425
  if (value === null || !Object.keys(value).every((key) => VIVA_WALLET_BODY_KEYS.includes(key))) {
2336
- return value !== null && (own10(value, "creditCardId") || own10(value, "token")) ? refuse11("viva_wallet_stored_card") : refuse11("viva_wallet_body_unsupported");
2426
+ return value !== null && (own11(value, "creditCardId") || own11(value, "token")) ? refuse12("viva_wallet_stored_card") : refuse12("viva_wallet_body_unsupported");
2337
2427
  }
2338
2428
  if (value.rememberCard !== false)
2339
- return refuse11(value.rememberCard === true ? "viva_wallet_keep_on_file" : "viva_wallet_body_unsupported");
2429
+ return refuse12(value.rememberCard === true ? "viva_wallet_keep_on_file" : "viva_wallet_body_unsupported");
2340
2430
  if (value.dccAccepted === true)
2341
- return refuse11("viva_wallet_currency_conversion");
2342
- if (own10(value, "dccAccepted") && value.dccAccepted !== false)
2343
- return refuse11("viva_wallet_body_unsupported");
2344
- if (own10(value, "scaRequestedTransactionId"))
2345
- return refuse11("viva_wallet_retry_refused");
2431
+ return refuse12("viva_wallet_currency_conversion");
2432
+ if (own11(value, "dccAccepted") && value.dccAccepted !== false)
2433
+ return refuse12("viva_wallet_body_unsupported");
2434
+ if (own11(value, "scaRequestedTransactionId"))
2435
+ return refuse12("viva_wallet_retry_refused");
2346
2436
  if (!(value.installments === 0 || value.installments === 1)) {
2347
- return refuse11(Number.isSafeInteger(value.installments) && value.installments > 1 ? "viva_wallet_installments" : "viva_wallet_body_unsupported");
2437
+ return refuse12(Number.isSafeInteger(value.installments) && value.installments > 1 ? "viva_wallet_installments" : "viva_wallet_body_unsupported");
2348
2438
  }
2349
- if (!inOrder4(value, VIVA_WALLET_BODY_KEYS) || ["offerCodes", "loyaltySupported", "redeemedAmount", "retrievalReferenceNumber", "merchantTrns"].some((key) => own10(value, key)))
2350
- return refuse11("viva_wallet_body_unsupported");
2439
+ if (!inOrder4(value, VIVA_WALLET_BODY_KEYS) || ["offerCodes", "loyaltySupported", "redeemedAmount", "retrievalReferenceNumber", "merchantTrns"].some((key) => own11(value, key)))
2440
+ return refuse12("viva_wallet_body_unsupported");
2351
2441
  const number = value.number;
2352
- const sound = typeof value.orderCode === "string" && ORDER_CODE.test(value.orderCode) && Number.isSafeInteger(value.amount) && value.amount > 0 && currencyNumber(value.currencyCode) !== null && plainText(value.holderName) && value.holderName.trim() !== "" && plainText(value.holderMail) && (value.cvc === null || typeof value.cvc === "string" && SECURITY_CODE6.test(value.cvc)) && typeof number === "string" && CARD_NUMBER6.test(number) && luhn6(number) && typeof value.expirationMonth === "string" && MONTH6.test(value.expirationMonth) && typeof value.expirationYear === "string" && YEAR6.test(value.expirationYear) && flatRecord(value.customer, 12) && (!own10(value, "friendlyName") || plainText(value.friendlyName)) && value.maskedNumber === vivaWalletMaskedNumber(number) && (!own10(value, "bankId") || typeof value.bankId === "string" && SHORT_ID.test(value.bankId) || Number.isSafeInteger(value.bankId) && value.bankId >= 0) && (!own10(value, "selectedBrand") || value.selectedBrand === null || flatRecord(value.selectedBrand, 16)) && (!own10(value, "cardholderBrandSelection") || typeof value.cardholderBrandSelection === "boolean") && (!own10(value, "dccOptions") || flatRecord(value.dccOptions, 16)) && (!own10(value, "captchaToken") || typeof value.captchaToken === "string" && CAPTCHA_TOKEN.test(value.captchaToken));
2353
- return sound ? CARD11 : refuse11("viva_wallet_body_unsupported");
2442
+ const sound = typeof value.orderCode === "string" && ORDER_CODE.test(value.orderCode) && Number.isSafeInteger(value.amount) && value.amount > 0 && currencyNumber(value.currencyCode) !== null && plainText(value.holderName) && value.holderName.trim() !== "" && plainText(value.holderMail) && (value.cvc === null || typeof value.cvc === "string" && SECURITY_CODE6.test(value.cvc)) && typeof number === "string" && CARD_NUMBER6.test(number) && luhn6(number) && typeof value.expirationMonth === "string" && MONTH6.test(value.expirationMonth) && typeof value.expirationYear === "string" && YEAR6.test(value.expirationYear) && flatRecord(value.customer, 12) && (!own11(value, "friendlyName") || plainText(value.friendlyName)) && value.maskedNumber === vivaWalletMaskedNumber(number) && (!own11(value, "bankId") || typeof value.bankId === "string" && SHORT_ID.test(value.bankId) || Number.isSafeInteger(value.bankId) && value.bankId >= 0) && (!own11(value, "selectedBrand") || value.selectedBrand === null || flatRecord(value.selectedBrand, 16)) && (!own11(value, "cardholderBrandSelection") || typeof value.cardholderBrandSelection === "boolean") && (!own11(value, "dccOptions") || flatRecord(value.dccOptions, 16)) && (!own11(value, "captchaToken") || typeof value.captchaToken === "string" && CAPTCHA_TOKEN.test(value.captchaToken));
2443
+ return sound ? CARD12 : refuse12("viva_wallet_body_unsupported");
2354
2444
  }
2355
2445
  var VIVA_WALLET_CURRENCIES = /* @__PURE__ */ Object.freeze({
2356
2446
  978: "eur",
@@ -2413,9 +2503,9 @@ var viva_wallet_default = /* @__PURE__ */ registerProcessor({
2413
2503
  refusedOperations: [VIVA_WALLET_OPERATION],
2414
2504
  settlementReadback: "not_surveyed",
2415
2505
  exactUrl: isVivaWalletChargeTokensUrl,
2416
- bodyGate: (url, body) => url !== void 0 && !isVivaWalletChargeTokensUrl(url) ? refuse11("viva_wallet_url_refused") : vivaWalletBodyVerdict(body),
2506
+ bodyGate: (url, body) => url !== void 0 && !isVivaWalletChargeTokensUrl(url) ? refuse12("viva_wallet_url_refused") : vivaWalletBodyVerdict(body),
2417
2507
  // The body names the order's amount in cents and its numeric currency, which the page's card-free charge repeats.
2418
- amount: (template) => record8(template) && isVivaWalletChargeTokensUrl(template.url) ? vivaWalletAmount(template.body) : null
2508
+ amount: (template) => record9(template) && isVivaWalletChargeTokensUrl(template.url) ? vivaWalletAmount(template.body) : null
2419
2509
  });
2420
2510
  // src/processors/vtex_payments.js
2421
2511
  var VTEX_PAYMENTS_PSP = "vtex_payments";
@@ -2465,7 +2555,7 @@ var VTEX_PAYMENTS_MERCHANT_PINS = /* @__PURE__ */ Object.freeze([
2465
2555
  Object.freeze({ account: "alssports", origin: "https://www.als.com", merchant: "Al's Sporting Goods", currency: "USD" }),
2466
2556
  Object.freeze({ account: "roadrunnersports", origin: "https://www.roadrunnersports.com", merchant: "Road Runner Sports", currency: "USD" })
2467
2557
  ]);
2468
- var BODY_LIMIT13 = 16384;
2558
+ var BODY_LIMIT14 = 16384;
2469
2559
  var ACCOUNT_HOST = /^([a-z0-9]{1,63})\.vtexvault\.com$/;
2470
2560
  var PATH = /^\/api\/payments\/transactions\/([0-9A-Fa-f]{32})\/payments$/;
2471
2561
  var ORDER_GROUP = /^[0-9]{6,24}$/;
@@ -2473,7 +2563,7 @@ var BASE643 = /^[A-Za-z0-9+/]{4,1020}={0,2}$/;
2473
2563
  var CARD_NUMBER7 = /^[0-9]{12,19}$/;
2474
2564
  var SECURITY_CODE7 = /^[0-9]{3,4}$/;
2475
2565
  var DUE_DATE = /^(?:0[1-9]|1[0-2])\/[0-9]{2}$/;
2476
- var CURRENCY = /^[A-Z]{3}$/;
2566
+ var CURRENCY2 = /^[A-Z]{3}$/;
2477
2567
  var TRANSACTION_ID = /^[0-9A-Fa-f]{32}$/;
2478
2568
  var MERCHANT_NAME = /^[A-Za-z0-9_.-]{1,64}$/;
2479
2569
  var SHORT_ID2 = /^[A-Za-z0-9_-]{1,64}$/;
@@ -2481,10 +2571,10 @@ var FINGERPRINT = /^[A-Za-z0-9_.:=+/-]{1,256}$/;
2481
2571
  var TEXT2 = /^[^\u0000-\u001f\u007f]{1,200}$/;
2482
2572
  var CARD_DIGITS2 = /[0-9]{12,}/;
2483
2573
  var DEVICE_INFO_KEYS = Object.freeze(["sw", "sh", "cd", "tz", "lang", "java", "sourceApplication"]);
2484
- var record9 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
2485
- var own11 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
2486
- var refuse12 = (code) => Object.freeze({ verdict: "refuse", code });
2487
- var CARD12 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
2574
+ var record10 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
2575
+ var own12 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
2576
+ var refuse13 = (code) => Object.freeze({ verdict: "refuse", code });
2577
+ var CARD13 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
2488
2578
  var inOrder5 = (value, keys) => {
2489
2579
  let at = 0;
2490
2580
  for (const name of Object.keys(value)) {
@@ -2534,18 +2624,18 @@ function deviceInfoSound(text3) {
2534
2624
  catch {
2535
2625
  return false;
2536
2626
  }
2537
- if (!record9(info) || !Object.keys(info).every((key) => DEVICE_INFO_KEYS.includes(key)))
2627
+ if (!record10(info) || !Object.keys(info).every((key) => DEVICE_INFO_KEYS.includes(key)))
2538
2628
  return false;
2539
2629
  for (const key of ["sw", "sh", "cd"])
2540
- if (own11(info, key) && !(count(info[key]) && info[key] <= 1e5))
2630
+ if (own12(info, key) && !(count(info[key]) && info[key] <= 1e5))
2541
2631
  return false;
2542
- if (own11(info, "tz") && !(Number.isSafeInteger(info.tz) && Math.abs(info.tz) <= 1440))
2632
+ if (own12(info, "tz") && !(Number.isSafeInteger(info.tz) && Math.abs(info.tz) <= 1440))
2543
2633
  return false;
2544
- if (own11(info, "lang") && !(typeof info.lang === "string" && /^[A-Za-z]{0,8}$/.test(info.lang)))
2634
+ if (own12(info, "lang") && !(typeof info.lang === "string" && /^[A-Za-z]{0,8}$/.test(info.lang)))
2545
2635
  return false;
2546
- if (own11(info, "java") && typeof info.java !== "boolean")
2636
+ if (own12(info, "java") && typeof info.java !== "boolean")
2547
2637
  return false;
2548
- return !own11(info, "sourceApplication") || typeof info.sourceApplication === "string" && /^[A-Za-z0-9_.-]{1,32}$/.test(info.sourceApplication);
2638
+ return !own12(info, "sourceApplication") || typeof info.sourceApplication === "string" && /^[A-Za-z0-9_.-]{1,32}$/.test(info.sourceApplication);
2549
2639
  }
2550
2640
  function vtexPaymentsCardTarget(url) {
2551
2641
  if (typeof url !== "string" || url.length > 8192)
@@ -2591,8 +2681,8 @@ function isVtexPaymentsCardUrl(url) {
2591
2681
  const target = vtexPaymentsCardTarget(url);
2592
2682
  return target !== null && !target.fallback;
2593
2683
  }
2594
- function readBody10(body) {
2595
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT13)
2684
+ function readBody11(body) {
2685
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT14)
2596
2686
  return null;
2597
2687
  let value;
2598
2688
  try {
@@ -2606,13 +2696,13 @@ function readBody10(body) {
2606
2696
  return value;
2607
2697
  }
2608
2698
  function cardLine(line) {
2609
- if (!record9(line))
2699
+ if (!record10(line))
2610
2700
  return false;
2611
- const fields = record9(line.fields) ? line.fields : {};
2612
- return line.groupName === "creditCardPaymentGroup" || line.groupName === "debitCardPaymentGroup" || own11(line, "accountId") || own11(fields, "accountId") || own11(fields, "cardNumber") || own11(fields, "validationCode") || own11(fields, "dueDate");
2701
+ const fields = record10(line.fields) ? line.fields : {};
2702
+ return line.groupName === "creditCardPaymentGroup" || line.groupName === "debitCardPaymentGroup" || own12(line, "accountId") || own12(fields, "accountId") || own12(fields, "cardNumber") || own12(fields, "validationCode") || own12(fields, "dueDate");
2613
2703
  }
2614
2704
  function addressSound(address) {
2615
- if (!record9(address) || !inOrder5(address, VTEX_PAYMENTS_ADDRESS_KEYS))
2705
+ if (!record10(address) || !inOrder5(address, VTEX_PAYMENTS_ADDRESS_KEYS))
2616
2706
  return false;
2617
2707
  for (const [key, value] of Object.entries(address)) {
2618
2708
  if (key === "addressType") {
@@ -2633,7 +2723,7 @@ function addressSound(address) {
2633
2723
  return true;
2634
2724
  }
2635
2725
  function fieldsSound(fields) {
2636
- if (!record9(fields) || !inOrder5(fields, VTEX_PAYMENTS_FIELD_KEYS) || own11(fields, "metadata"))
2726
+ if (!record10(fields) || !inOrder5(fields, VTEX_PAYMENTS_FIELD_KEYS) || own12(fields, "metadata"))
2637
2727
  return false;
2638
2728
  if (!(typeof fields.cardNumber === "string" && CARD_NUMBER7.test(fields.cardNumber)))
2639
2729
  return false;
@@ -2643,38 +2733,38 @@ function fieldsSound(fields) {
2643
2733
  return false;
2644
2734
  if (!plainText2(fields.holderName))
2645
2735
  return false;
2646
- if (own11(fields, "document") && !(fields.document === "" || plainText2(fields.document) && fields.document.length <= 32))
2736
+ if (own12(fields, "document") && !(fields.document === "" || plainText2(fields.document) && fields.document.length <= 32))
2647
2737
  return false;
2648
- if (own11(fields, "address") && !addressSound(fields.address))
2738
+ if (own12(fields, "address") && !addressSound(fields.address))
2649
2739
  return false;
2650
- if (own11(fields, "deviceFingerprint") && !(typeof fields.deviceFingerprint === "string" && FINGERPRINT.test(fields.deviceFingerprint)))
2740
+ if (own12(fields, "deviceFingerprint") && !(typeof fields.deviceFingerprint === "string" && FINGERPRINT.test(fields.deviceFingerprint)))
2651
2741
  return false;
2652
- return !own11(fields, "addressId") || typeof fields.addressId === "string" && SHORT_ID2.test(fields.addressId);
2742
+ return !own12(fields, "addressId") || typeof fields.addressId === "string" && SHORT_ID2.test(fields.addressId);
2653
2743
  }
2654
2744
  function vtexPaymentsBodyVerdict(body, target) {
2655
- const lines = readBody10(body);
2656
- if (lines === null || lines.length === 0 || !lines.every(record9))
2657
- return refuse12("vtex_payments_body_unsupported");
2745
+ const lines = readBody11(body);
2746
+ if (lines === null || lines.length === 0 || !lines.every(record10))
2747
+ return refuse13("vtex_payments_body_unsupported");
2658
2748
  const cards = lines.filter(cardLine);
2659
- if (cards.some((line2) => own11(line2, "accountId") || own11(line2.fields ?? {}, "accountId")))
2660
- return refuse12("vtex_payments_saved_card");
2749
+ if (cards.some((line2) => own12(line2, "accountId") || own12(line2.fields ?? {}, "accountId")))
2750
+ return refuse13("vtex_payments_saved_card");
2661
2751
  if (cards.length === 0)
2662
- return refuse12("vtex_payments_body_unsupported");
2663
- if (lines.length !== 1 || own11(lines[0], "id"))
2664
- return refuse12("vtex_payments_split_payment");
2752
+ return refuse13("vtex_payments_body_unsupported");
2753
+ if (lines.length !== 1 || own12(lines[0], "id"))
2754
+ return refuse13("vtex_payments_split_payment");
2665
2755
  const line = lines[0];
2666
2756
  if (!inOrder5(line, VTEX_PAYMENTS_LINE_KEYS) || line.groupName !== "creditCardPaymentGroup")
2667
- return refuse12("vtex_payments_body_unsupported");
2668
- if (!(typeof line.currencyCode === "string" && CURRENCY.test(line.currencyCode)) || !own11(VTEX_PAYMENTS_NETWORKS, line.paymentSystem) || !Number.isSafeInteger(line.paymentSystem) || !(count(line.value) && line.value > 0))
2669
- return refuse12("vtex_payments_body_unsupported");
2670
- if (line.installments !== 1 || line.referenceValue !== line.value || own11(line, "installmentsInterestRate") && line.installmentsInterestRate !== 0 || own11(line, "installmentsValue") && line.installmentsValue !== line.value)
2671
- return refuse12("vtex_payments_installments");
2757
+ return refuse13("vtex_payments_body_unsupported");
2758
+ if (!(typeof line.currencyCode === "string" && CURRENCY2.test(line.currencyCode)) || !own12(VTEX_PAYMENTS_NETWORKS, line.paymentSystem) || !Number.isSafeInteger(line.paymentSystem) || !(count(line.value) && line.value > 0))
2759
+ return refuse13("vtex_payments_body_unsupported");
2760
+ if (line.installments !== 1 || line.referenceValue !== line.value || own12(line, "installmentsInterestRate") && line.installmentsInterestRate !== 0 || own12(line, "installmentsValue") && line.installmentsValue !== line.value)
2761
+ return refuse13("vtex_payments_installments");
2672
2762
  const transaction = line.transaction;
2673
- if (!record9(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)))
2674
- return refuse12("vtex_payments_body_unsupported");
2763
+ if (!record10(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)))
2764
+ return refuse13("vtex_payments_body_unsupported");
2675
2765
  if (target && transaction.id.toUpperCase() !== target.transactionId.toUpperCase())
2676
- return refuse12("vtex_payments_split_payment");
2677
- return fieldsSound(line.fields) ? CARD12 : refuse12("vtex_payments_body_unsupported");
2766
+ return refuse13("vtex_payments_split_payment");
2767
+ return fieldsSound(line.fields) ? CARD13 : refuse13("vtex_payments_body_unsupported");
2678
2768
  }
2679
2769
  function vtexPaymentsAmount(body) {
2680
2770
  if (vtexPaymentsBodyVerdict(body).verdict !== "card")
@@ -2719,14 +2809,15 @@ var vtex_payments_default = /* @__PURE__ */ registerProcessor({
2719
2809
  return vtexPaymentsBodyVerdict(body);
2720
2810
  const target = vtexPaymentsCardTarget(url);
2721
2811
  if (target === null)
2722
- return refuse12("vtex_payments_url_refused");
2723
- return target.fallback ? refuse12("vtex_payments_fallback_refused") : vtexPaymentsBodyVerdict(body, target);
2812
+ return refuse13("vtex_payments_url_refused");
2813
+ return target.fallback ? refuse13("vtex_payments_fallback_refused") : vtexPaymentsBodyVerdict(body, target);
2724
2814
  },
2725
- amount: (template) => record9(template) && isVtexPaymentsCardUrl(template.url) ? vtexPaymentsAmount(template.body) : null
2815
+ amount: (template) => record10(template) && isVtexPaymentsCardUrl(template.url) ? vtexPaymentsAmount(template.body) : null
2726
2816
  });
2727
2817
  // src/processors/index.generated.js
2728
2818
  var REGISTERED_MODULES = Object.freeze({
2729
2819
  aurus: aurus_default,
2820
+ bigcommerce: bigcommerce_default,
2730
2821
  bluesnap: bluesnap_default,
2731
2822
  cardlink_vpos: cardlink_vpos_default,
2732
2823
  eghl: eghl_default,
@@ -5706,6 +5797,9 @@ function trustedClientRecognizer(pspOrEntry) {
5706
5797
  throw new Error("Refusing to pay: unknown payment processor.");
5707
5798
  return definition;
5708
5799
  }
5800
+ // src/answer-card-leak.js
5801
+ 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}";
5802
+ var UTF8_WHOLE = /* @__PURE__ */ new RegExp(`^(?:${UTF8_SEQUENCE})*$`);
5709
5803
  // src/datatrans.js
5710
5804
  var DATATRANS_HOSTS = Object.freeze(["pay.datatrans.com", "pay.sandbox.datatrans.com"]);
5711
5805
  var DATATRANS_REFUSAL_REASONS = Object.freeze(["unsupported", "card_on_file", "brand_mismatch", "unregistered_merchant"]);
@@ -5895,7 +5989,7 @@ var HIPAY_MERCHANT_PINS = /* @__PURE__ */ Object.freeze([
5895
5989
  pin6({ id: "happybulle", merchant: "HappyBulle", origins: ["https://www.happybulle.com"], usernames: ["94683309.secure-gateway.hipay-tpp.com"] })
5896
5990
  ]);
5897
5991
  // src/amazon-payment-services.js
5898
- var BODY_LIMIT14 = 32 * 1024;
5992
+ var BODY_LIMIT15 = 32 * 1024;
5899
5993
  var ANSWER_LIMIT = 64 * 1024;
5900
5994
  // src/clover.js
5901
5995
  var REQUIRED_KEYS = /* @__PURE__ */ Object.freeze(["encrypted_pan", "exp_month", "exp_year", "cvv", "first6", "last4", "brand"]);
@@ -6247,7 +6341,7 @@ var RECORD_MEMBERS = /* @__PURE__ */ Object.freeze({
6247
6341
  ]
6248
6342
  });
6249
6343
  // src/pin-payments.js
6250
- var CARD_KEYS3 = /* @__PURE__ */ Object.freeze(["name", "number", "cvc", "expiry_month", "expiry_year"]);
6344
+ var CARD_KEYS4 = /* @__PURE__ */ Object.freeze(["name", "number", "cvc", "expiry_month", "expiry_year"]);
6251
6345
  var ADDRESS_KEYS = /* @__PURE__ */ Object.freeze([
6252
6346
  "address_line1",
6253
6347
  "address_line2",
@@ -6258,7 +6352,7 @@ var ADDRESS_KEYS = /* @__PURE__ */ Object.freeze([
6258
6352
  ]);
6259
6353
  var KEY2 = "publishable_api_key";
6260
6354
  var METHOD = "_method";
6261
- var DOCUMENTED = /* @__PURE__ */ new Set([KEY2, METHOD, ...CARD_KEYS3, ...ADDRESS_KEYS]);
6355
+ var DOCUMENTED = /* @__PURE__ */ new Set([KEY2, METHOD, ...CARD_KEYS4, ...ADDRESS_KEYS]);
6262
6356
  var TOKEN_FACTS = /* @__PURE__ */ Object.freeze([
6263
6357
  "token",
6264
6358
  "scheme",