@agent-cards/sdk 0.23.25 → 0.23.27

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: e6f7697efcf41d051189ca331d0d99f5a701e50cb0b7d3a3f967178bf87d7df1
3
+ // artifact-sha256: c278e78b910411f826f9313f7dde769c3c0eb483df9bcd4f6280eec186ce4c98
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
@@ -101,8 +101,8 @@ function parseConvergeBody(body) {
101
101
  return parsed;
102
102
  }
103
103
  function convergeAmountCents(value) {
104
- const text8 = typeof value === "number" && Number.isFinite(value) ? String(value) : value;
105
- const m = typeof text8 === "string" ? AMOUNT.exec(text8) : null;
104
+ const text9 = typeof value === "number" && Number.isFinite(value) ? String(value) : value;
105
+ const m = typeof text9 === "string" ? AMOUNT.exec(text9) : null;
106
106
  if (!m)
107
107
  return null;
108
108
  const cents2 = Number(m[1]) * 100 + Number(((m[2] ?? "") + "00").slice(0, 2));
@@ -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 own12 = Object.keys(value);
361
- return own12.length === keys.length && own12.every((key, at) => key === keys[at]);
360
+ const own13 = Object.keys(value);
361
+ return own13.length === keys.length && own13.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" });
@@ -582,9 +582,9 @@ var K = /* @__PURE__ */ new Uint32Array([
582
582
  3329325298
583
583
  ]);
584
584
  var rotr = (x, n) => x >>> n | x << 32 - n;
585
- function utf8(text8) {
585
+ function utf8(text9) {
586
586
  const out = [];
587
- for (const char of text8) {
587
+ for (const char of text9) {
588
588
  let cp = char.codePointAt(0);
589
589
  if (cp >= 55296 && cp <= 57343)
590
590
  cp = 65533;
@@ -663,13 +663,13 @@ var TYPED_ARRAY = Object.getPrototypeOf(Uint8Array.prototype);
663
663
  var typedArrayName = Object.getOwnPropertyDescriptor(TYPED_ARRAY, Symbol.toStringTag).get;
664
664
  function parseRsaPublicKey(key) {
665
665
  const spki = key && typeof key === "object" ? key.spki : void 0;
666
- const pin11 = key && typeof key === "object" ? key.sha256 : void 0;
666
+ const pin10 = key && typeof key === "object" ? key.sha256 : void 0;
667
667
  const named = key && typeof key === "object" && Object.prototype.hasOwnProperty.call(key, "exponent") ? key.exponent : void 0;
668
668
  if (named !== void 0 && named !== 17)
669
669
  throw refuse6("key");
670
670
  if (typeof spki !== "string" || spki.length > 1024 || spki.length % 4 !== 0 || !BASE64.test(spki))
671
671
  throw refuse6("key");
672
- if (typeof pin11 !== "string" || !SHA256_HEX.test(pin11))
672
+ if (typeof pin10 !== "string" || !SHA256_HEX.test(pin10))
673
673
  throw refuse6("key");
674
674
  let binary;
675
675
  try {
@@ -681,7 +681,7 @@ function parseRsaPublicKey(key) {
681
681
  if (btoa(binary) !== spki)
682
682
  throw refuse6("key");
683
683
  const der = Uint8Array.from(binary, (c) => c.charCodeAt(0));
684
- if (sha256Hex(der) !== pin11)
684
+ if (sha256Hex(der) !== pin10)
685
685
  throw refuse6("key");
686
686
  const outer = readElement(der, 0, 48);
687
687
  if (outer.end !== der.length || outer.start + RSA_ALGORITHM.length > der.length)
@@ -771,8 +771,8 @@ var PADDLE_TOKENEX_PSP = "paddle_tokenex";
771
771
  var PADDLE_TOKENEX_FACT_KEYS = /* @__PURE__ */ Object.freeze(["card_first_six", "card_last_four", "expiry_month", "expiry_year", "card_brand"]);
772
772
  var record4 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
773
773
  var sameKeys2 = (value, keys) => {
774
- const own12 = Object.keys(value);
775
- return own12.length === keys.length && own12.every((key, at) => key === keys[at]);
774
+ const own13 = Object.keys(value);
775
+ return own13.length === keys.length && own13.every((key, at) => key === keys[at]);
776
776
  };
777
777
  var refuse7 = (code) => Object.freeze({ verdict: "refuse", code });
778
778
  var CARD6 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
@@ -1261,8 +1261,8 @@ var TEXT_LIMIT = 256;
1261
1261
  var CONTROL4 = /[\u0000-\u001f\u007f]/;
1262
1262
  var record6 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
1263
1263
  var sameKeys3 = (value, keys) => {
1264
- const own12 = Object.keys(value);
1265
- return own12.length === keys.length && own12.every((key, at) => key === keys[at]);
1264
+ const own13 = Object.keys(value);
1265
+ return own13.length === keys.length && own13.every((key, at) => key === keys[at]);
1266
1266
  };
1267
1267
  var plainText = (value) => typeof value === "string" && value.length <= TEXT_LIMIT && !CONTROL4.test(value) && (value.match(/[0-9]/g) ?? []).length < 12;
1268
1268
  var refuse9 = (code) => Object.freeze({ verdict: "refuse", code });
@@ -1464,8 +1464,8 @@ var EXPIRATION = /^[0-9]{2}(?:0[1-9]|1[0-2])$/;
1464
1464
  var CARD_PAYMENT = "PAYMENT_CARD";
1465
1465
  var record8 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
1466
1466
  var sameKeys4 = (value, keys) => {
1467
- const own12 = Object.keys(value);
1468
- return own12.length === keys.length && own12.every((key, at) => key === keys[at]);
1467
+ const own13 = Object.keys(value);
1468
+ return own13.length === keys.length && own13.every((key, at) => key === keys[at]);
1469
1469
  };
1470
1470
  var refuse11 = (code) => Object.freeze({ verdict: "refuse", code });
1471
1471
  var CARD10 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
@@ -1695,8 +1695,8 @@ var LOCALE = /^[a-z]{2}(?:-[A-Za-z]{2,4})?$/;
1695
1695
  var PAN_LIKE3 = /(?:[0-9][ _.:-]*){12,}/;
1696
1696
  var record9 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
1697
1697
  var sameKeys5 = (value, keys) => {
1698
- const own12 = Object.keys(value);
1699
- return own12.length === keys.length && own12.every((key, at) => key === keys[at]);
1698
+ const own13 = Object.keys(value);
1699
+ return own13.length === keys.length && own13.every((key, at) => key === keys[at]);
1700
1700
  };
1701
1701
  var refuse13 = (code) => Object.freeze({ verdict: "refuse", code });
1702
1702
  var CARD12 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
@@ -2112,7 +2112,7 @@ var luhn2 = (digits3) => {
2112
2112
  return sum % 10 === 0;
2113
2113
  };
2114
2114
  var ANY_NETWORK = /^[2-6][0-9]{12,18}$/;
2115
- var holdsCardShape = (text8, shape = NETWORK) => (text8.match(/[0-9]{13,}/g) ?? []).some((run) => run.length > 19 || shape.test(run) && luhn2(run));
2115
+ var holdsCardShape = (text9, shape = NETWORK) => (text9.match(/[0-9]{13,}/g) ?? []).some((run) => run.length > 19 || shape.test(run) && luhn2(run));
2116
2116
  var phone = (value) => typeof value === "string" && PHONE.test(value) && (value.match(/[0-9]/g) ?? []).length >= 6 && (value.match(/[0-9]/g) ?? []).length <= 15;
2117
2117
  var refuse16 = (code) => Object.freeze({ verdict: "refuse", code });
2118
2118
  var CARD15 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
@@ -2340,13 +2340,13 @@ var printable = (value) => [...value].every((ch) => ch.charCodeAt(0) >= 32 && ch
2340
2340
  function typed(value, limit = 256) {
2341
2341
  return typeof value === "string" && value.length >= 1 && value.length <= limit && !PAN_LIKE4.test(value) && printable(value);
2342
2342
  }
2343
- function decodeBase64(text8) {
2344
- if (typeof text8 !== "string" || !BASE643.test(text8) || text8.length % 4 !== 0)
2343
+ function decodeBase64(text9) {
2344
+ if (typeof text9 !== "string" || !BASE643.test(text9) || text9.length % 4 !== 0)
2345
2345
  return null;
2346
2346
  let bits = 0;
2347
2347
  let value = 0;
2348
2348
  let out = "";
2349
- for (const ch of text8.replace(/=+$/, "")) {
2349
+ for (const ch of text9.replace(/=+$/, "")) {
2350
2350
  value = (value << 6 | BASE64_ALPHABET.indexOf(ch)) & 16777215;
2351
2351
  bits += 6;
2352
2352
  if (bits >= 8) {
@@ -2356,8 +2356,8 @@ function decodeBase64(text8) {
2356
2356
  }
2357
2357
  return out;
2358
2358
  }
2359
- function soundDevice(text8) {
2360
- const json = decodeBase64(text8);
2359
+ function soundDevice(text9) {
2360
+ const json = decodeBase64(text9);
2361
2361
  if (json === null)
2362
2362
  return false;
2363
2363
  let value;
@@ -2475,17 +2475,17 @@ function sumupBodyVerdict(body, url) {
2475
2475
  var SALTED = /* @__PURE__ */ Object.freeze([83, 97, 108, 116, 101, 100, 95, 95]);
2476
2476
  var B64 = /^[A-Za-z0-9+/]+={0,2}$/;
2477
2477
  var FIELD_LIMIT = 1024;
2478
- function decodeCanonical(text8) {
2479
- if (typeof text8 !== "string" || text8.length === 0 || text8.length % 4 !== 0 || !B64.test(text8))
2478
+ function decodeCanonical(text9) {
2479
+ if (typeof text9 !== "string" || text9.length === 0 || text9.length % 4 !== 0 || !B64.test(text9))
2480
2480
  return null;
2481
2481
  let binary;
2482
2482
  try {
2483
- binary = atob(text8);
2483
+ binary = atob(text9);
2484
2484
  }
2485
2485
  catch {
2486
2486
  return null;
2487
2487
  }
2488
- if (btoa(binary) !== text8)
2488
+ if (btoa(binary) !== text9)
2489
2489
  return null;
2490
2490
  return Uint8Array.from(binary, (char) => char.charCodeAt(0));
2491
2491
  }
@@ -2727,8 +2727,8 @@ var TEXT_LIMIT3 = 256;
2727
2727
  var CONTROL7 = /[\u0000-\u001f\u007f]/;
2728
2728
  var record13 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
2729
2729
  var sameKeys7 = (value, keys) => {
2730
- const own12 = Object.keys(value);
2731
- return own12.length === keys.length && own12.every((key, at) => key === keys[at]);
2730
+ const own13 = Object.keys(value);
2731
+ return own13.length === keys.length && own13.every((key, at) => key === keys[at]);
2732
2732
  };
2733
2733
  var plainText3 = (value) => typeof value === "string" && value.length <= TEXT_LIMIT3 && !CONTROL7.test(value) && (value.match(/[0-9]/g) ?? []).length < 12;
2734
2734
  var refuse19 = (code) => Object.freeze({ verdict: "refuse", code });
@@ -3178,31 +3178,6 @@ var record16 = (value) => value !== null && typeof value === "object" && !Array.
3178
3178
  function isTapPaymentsTokenUrl(url) {
3179
3179
  return url === TAP_PAYMENTS_TOKEN_URL;
3180
3180
  }
3181
- var pin7 = (fields) => Object.freeze({
3182
- ...fields,
3183
- origins: Object.freeze([...fields.origins]),
3184
- sessions: Object.freeze({ ...fields.sessions }),
3185
- key: Object.freeze({ ...fields.key })
3186
- });
3187
- var TAP_PAYMENTS_MERCHANT_PINS = /* @__PURE__ */ Object.freeze([
3188
- pin7({
3189
- id: "casefilegame",
3190
- merchant: "Casefilegame",
3191
- tapMerchantId: "67977048",
3192
- publishableKey: "pk_live_ydlRjrWcLXaVvpsSBQKOie86",
3193
- environment: "production",
3194
- origins: ["https://checkout.tap.company"],
3195
- // The WooCommerce plugin's redirect (Plugin-WooCommerce-All-in-one tap.php 567-586, read 2026-10-17)
3196
- // creates the src_all charge with save_card false and names no agreement, subscription or destinations.
3197
- sessions: { saveCard: false, agreement: false, subscription: false, destinations: false },
3198
- key: {
3199
- spki: "MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEAzja2vB+Iyafj2Mm3pFg65z7Yvj9ZeoFLdMBgWFyyjF020r5HSPKVhuZ39uJkjs0U/kWgEpKDzHZAKdtGv36dS33NjMAzYpgFkD8j+9/YWqpvAGRj5nv1b/q7NaiZk3b1wm7aXHJOx5L6rPQf2qDQxhcSNHocU+Uy8wGmGxRRu6QRKN3khaz4o4jJDzqxns4h/ShzHjdZeWIVfpCAyVoED0IESBYrvGEhJeyKnga5XdHdBU2yP8P1huO4RbSKcZv00ZgxVHAQQ9CqArW3TE8SyLLnJPkSpSHHBnIPSQS1z3ld1mImy/zqTd4ltkV6XHpYqVvoPmys2EuZX3pMvCcPGwIBEQ==",
3200
- sha256: "6eb4e89a1e05a06a39d631f6fb450c052a9cad9935edc1921e84e80207470552",
3201
- // The shared parser takes exponent 17 only under a pin that names it (rsa-pkcs1v15.js).
3202
- exponent: 17
3203
- }
3204
- })
3205
- ]);
3206
3181
  var BODY_LIMIT19 = 16384;
3207
3182
  var ROOT_KEYS7 = /* @__PURE__ */ Object.freeze([
3208
3183
  "encryptedData",
@@ -3449,7 +3424,7 @@ var YEAR11 = /^[0-9]{2}$/;
3449
3424
  var CODE4 = /^[0-9]{3}$/;
3450
3425
  var NAME_LIMIT3 = 100;
3451
3426
  var NAME_WORD = /[a-z]+/gi;
3452
- var printable2 = (text8) => [...text8].every((character) => {
3427
+ var printable2 = (text9) => [...text9].every((character) => {
3453
3428
  const point = character.codePointAt(0);
3454
3429
  return point >= 32 && !(point >= 127 && point <= 159) && point !== 8232 && point !== 8233;
3455
3430
  });
@@ -3458,8 +3433,8 @@ var HOSTNAME = /^(?=.{1,253}$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](
3458
3433
  var PUBLISHABLE_KEY = /^[A-Za-z0-9]{16,64}$/;
3459
3434
  var record18 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
3460
3435
  var sameKeys8 = (value, keys) => {
3461
- const own12 = Object.keys(value);
3462
- return own12.length === keys.length && own12.every((key, at) => key === keys[at]);
3436
+ const own13 = Object.keys(value);
3437
+ return own13.length === keys.length && own13.every((key, at) => key === keys[at]);
3463
3438
  };
3464
3439
  var refuse24 = (code) => Object.freeze({ verdict: "refuse", code });
3465
3440
  var CARD23 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
@@ -3795,9 +3770,9 @@ function openpayBodyVerdict(body, url) {
3795
3770
  }
3796
3771
  return CARD24;
3797
3772
  }
3798
- var pin8 = (fields) => Object.freeze({ ...fields, origins: Object.freeze([...fields.origins]), publicKeys: Object.freeze([...fields.publicKeys]) });
3773
+ var pin7 = (fields) => Object.freeze({ ...fields, origins: Object.freeze([...fields.origins]), publicKeys: Object.freeze([...fields.publicKeys]) });
3799
3774
  var OPENPAY_MERCHANT_PINS = /* @__PURE__ */ Object.freeze([
3800
- pin8({
3775
+ pin7({
3801
3776
  id: "diario_de_yucatan",
3802
3777
  merchant: "Diario de Yucatán",
3803
3778
  origins: ["https://www.yucatan.com.mx"],
@@ -3829,7 +3804,7 @@ var POSTAL_CODE3 = /^[A-Za-z0-9_]{0,16}$/;
3829
3804
  var COUNTRY4 = /^[A-Z]{2}$/;
3830
3805
  var TEXT_LIMIT7 = 256;
3831
3806
  var CONTROL10 = /[\u0000-\u001f\u007f]/;
3832
- var cardLike2 = (text8) => (text8.match(/[0-9]/g) ?? []).length >= 12;
3807
+ var cardLike2 = (text9) => (text9.match(/[0-9]/g) ?? []).length >= 12;
3833
3808
  var text5 = (value) => typeof value === "string" && value.length <= TEXT_LIMIT7 && !CONTROL10.test(value) && !cardLike2(value);
3834
3809
  var record21 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
3835
3810
  var own5 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
@@ -3887,15 +3862,15 @@ function poyntBodyVerdict(body) {
3887
3862
  return refuse26("poynt_body_unsupported");
3888
3863
  return CARD25;
3889
3864
  }
3890
- var pin9 = (fields) => Object.freeze({ ...fields, origins: Object.freeze([...fields.origins]), storeIds: Object.freeze([...fields.storeIds]) });
3865
+ var pin8 = (fields) => Object.freeze({ ...fields, origins: Object.freeze([...fields.origins]), storeIds: Object.freeze([...fields.storeIds]) });
3891
3866
  var POYNT_MERCHANT_PINS = /* @__PURE__ */ Object.freeze([
3892
- pin9({
3867
+ pin8({
3893
3868
  id: "yearning_for_learning",
3894
3869
  merchant: "Yearning for Learning Publishing & Coaching",
3895
3870
  origins: ["https://ff305485-ba6c-423a-87b0-cebe3f83ffe9.mysimplestore.com"],
3896
3871
  storeIds: ["71ac12ed-e61f-4318-95db-db0e7c649d6f"]
3897
3872
  }),
3898
- pin9({
3873
+ pin8({
3899
3874
  id: "timber_ridge_bookkeeping",
3900
3875
  merchant: "Timber Ridge Bookkeeping",
3901
3876
  origins: ["https://d7d64ac3-0352-4e53-af9a-f6d8e7b5fb71.mysimplestore.com"],
@@ -4150,11 +4125,11 @@ var LONG_TEXT_LIMIT = BODY_LIMIT25;
4150
4125
  var record22 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
4151
4126
  var owns6 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
4152
4127
  var sameKeys9 = (value, keys) => {
4153
- const own12 = Object.keys(value);
4154
- return own12.length === keys.length && own12.every((key, at) => key === keys[at]);
4128
+ const own13 = Object.keys(value);
4129
+ return own13.length === keys.length && own13.every((key, at) => key === keys[at]);
4155
4130
  };
4156
4131
  var exact3 = (pattern, value) => typeof value === "string" && pattern.test(value);
4157
- var printable3 = (text8) => [...text8].every((character) => {
4132
+ var printable3 = (text9) => [...text9].every((character) => {
4158
4133
  const point = character.codePointAt(0);
4159
4134
  return point >= 32 && !(point >= 127 && point <= 159) && point !== 8232 && point !== 8233;
4160
4135
  });
@@ -4227,7 +4202,7 @@ function companyStore(value) {
4227
4202
  return record22(value) && sameKeys9(value, COMPANY_KEYS) && whole(value.CompanyNumber, 1) && COMPANY_KEYS.slice(1).every((key) => key.startsWith("Show") ? flag(value[key]) : pageText(value[key]));
4228
4203
  }
4229
4204
  var SUM_TEXT = /^(?:0*[1-9][0-9]*(?:\.[0-9]+)?|0+\.[0-9]*[1-9][0-9]*)$/;
4230
- var sumText = (text8, sum) => text8 === null || typeof text8 === "string" && SUM_TEXT.test(text8) && Number.parseFloat(text8) === sum;
4205
+ var sumText = (text9, sum) => text9 === null || typeof text9 === "string" && SUM_TEXT.test(text9) && Number.parseFloat(text9) === sum;
4231
4206
  function chosenProduct(value) {
4232
4207
  return record22(value) && sameKeys9(value, PRODUCT_KEYS) && whole(value.MinQuantity) && whole(value.MaxQuantity) && whole(value.JumpsInQuantity) && value.SelectedBuyQuantity === 1 && Array.isArray(value.QuantityOptions) && value.QuantityOptions.length === 0 && pageText(value.Comments) && flag(value.IsManualSum) && Array.isArray(value.PaymentsOptions) && flag(value.IsCouponActive) && typeof value.ManualPrice === "number" && sumText(value.ManualPriceTxt, value.ManualPrice) && flag(value.IsVatFree) && Array.isArray(value.SpecialPrices) && (value.PreConfiguredPrice === null || typeof value.PreConfiguredPrice === "number") && flag(value.IsPreSelected) && typeof value.CurrentInventory === "number" && flag(value.CheckInventory) && exact3(PRODUCT_ID, value.uid) && pageText(value.imageUrl) && typeof value.name === "string" && pageText(value.name) && pageText(value.description) && typeof value.BasePrice === "number" && typeof value.PriceBeforeDiscount === "number" && whole(value.BaseISOCurrency) && typeof value.PriceToShow === "number" && typeof value.PriceBeforeDiscountToShow === "number" && flag(value.IsCurrent);
4233
4208
  }
@@ -4458,7 +4433,7 @@ var sameKeys10 = (value, keys) => {
4458
4433
  };
4459
4434
  var refuse28 = (code) => Object.freeze({ verdict: "refuse", code });
4460
4435
  var CARD27 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
4461
- var printable4 = (text8) => [...text8].every((character) => {
4436
+ var printable4 = (text9) => [...text9].every((character) => {
4462
4437
  const point = character.codePointAt(0);
4463
4438
  return point >= 32 && !(point >= 127 && point <= 159) && point !== 8232 && point !== 8233;
4464
4439
  });
@@ -4550,8 +4525,8 @@ var POSTAL_CODE4 = /^[A-Za-z0-9 -]{0,16}$/;
4550
4525
  var CIPHERTEXT_B64 = /^[A-Za-z0-9+/]{341}[AQgw]==$/;
4551
4526
  var record24 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
4552
4527
  var sameKeys11 = (value, keys) => {
4553
- const own12 = Object.keys(value);
4554
- return own12.length === keys.length && own12.every((key, at) => key === keys[at]);
4528
+ const own13 = Object.keys(value);
4529
+ return own13.length === keys.length && own13.every((key, at) => key === keys[at]);
4555
4530
  };
4556
4531
  var refuse29 = (code) => Object.freeze({ verdict: "refuse", code });
4557
4532
  var failed = (code) => (
@@ -4924,11 +4899,11 @@ function omiseBodyVerdict(body) {
4924
4899
  return refuse31("omise_body_unsupported");
4925
4900
  return CARD30;
4926
4901
  }
4927
- var pin10 = (fields) => Object.freeze({ ...fields, origins: Object.freeze([...fields.origins]), keys: Object.freeze([...fields.keys]) });
4902
+ var pin9 = (fields) => Object.freeze({ ...fields, origins: Object.freeze([...fields.origins]), keys: Object.freeze([...fields.keys]) });
4928
4903
  var OMISE_MERCHANT_PINS = /* @__PURE__ */ Object.freeze([
4929
- pin10({ id: "taejai", merchant: "Taejai", origins: ["https://taejai.com"], keys: ["pkey_53q6mm66esjr563ob0h"] }),
4930
- pin10({ id: "socialgiver", merchant: "Socialgiver", origins: ["https://www.socialgiver.com"], keys: ["pkey_5d5o2iahksmyrkybemg"] }),
4931
- pin10({ id: "thireq_pecko_links", merchant: "Thireq Pecko", origins: ["https://linksplus.omise.co"], keys: ["pkey_65w70xniwsinf0gm680"] })
4904
+ pin9({ id: "taejai", merchant: "Taejai", origins: ["https://taejai.com"], keys: ["pkey_53q6mm66esjr563ob0h"] }),
4905
+ pin9({ id: "socialgiver", merchant: "Socialgiver", origins: ["https://www.socialgiver.com"], keys: ["pkey_5d5o2iahksmyrkybemg"] }),
4906
+ pin9({ id: "thireq_pecko_links", merchant: "Thireq Pecko", origins: ["https://linksplus.omise.co"], keys: ["pkey_65w70xniwsinf0gm680"] })
4932
4907
  ]);
4933
4908
  // src/xendit.js
4934
4909
  var XENDIT_PSP = "xendit";
@@ -5020,10 +4995,10 @@ function readBody18(body) {
5020
4995
  function amountValue(value) {
5021
4996
  if (typeof value === "number" && !Number.isFinite(value))
5022
4997
  return false;
5023
- const text8 = typeof value === "number" ? String(value) : value;
5024
- if (typeof text8 !== "string" || !AMOUNT_TEXT.test(text8))
4998
+ const text9 = typeof value === "number" ? String(value) : value;
4999
+ if (typeof text9 !== "string" || !AMOUNT_TEXT.test(text9))
5025
5000
  return false;
5026
- const amount2 = Number(text8);
5001
+ const amount2 = Number(text9);
5027
5002
  return amount2 > 0 && amount2 <= AMOUNT_LIMIT3;
5028
5003
  }
5029
5004
  function billingDetails(value) {
@@ -5221,10 +5196,10 @@ function isPaymobPayUrl(url) {
5221
5196
  var BASE645 = /^[A-Za-z0-9+/]+={0,2}$/;
5222
5197
  var BASE64URL = /^[A-Za-z0-9_-]+$/;
5223
5198
  var ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
5224
- function decodeBase642(text8, url) {
5225
- if (typeof text8 !== "string" || text8 === "")
5199
+ function decodeBase642(text9, url) {
5200
+ if (typeof text9 !== "string" || text9 === "")
5226
5201
  return null;
5227
- let body = text8;
5202
+ let body = text9;
5228
5203
  if (url) {
5229
5204
  if (!BASE64URL.test(body) || body.length % 4 === 1)
5230
5205
  return null;
@@ -5257,15 +5232,15 @@ function decodeBase642(text8, url) {
5257
5232
  function jsonOf(bytes) {
5258
5233
  if (!bytes)
5259
5234
  return null;
5260
- let text8;
5235
+ let text9;
5261
5236
  try {
5262
- text8 = new TextDecoder("utf-8", { fatal: true }).decode(bytes);
5237
+ text9 = new TextDecoder("utf-8", { fatal: true }).decode(bytes);
5263
5238
  }
5264
5239
  catch {
5265
5240
  return null;
5266
5241
  }
5267
5242
  try {
5268
- const value = JSON.parse(text8);
5243
+ const value = JSON.parse(text9);
5269
5244
  return record29(value) ? value : null;
5270
5245
  }
5271
5246
  catch {
@@ -5366,7 +5341,7 @@ function namesCardValue3(parsed) {
5366
5341
  return false;
5367
5342
  }
5368
5343
  function addressBlock(value) {
5369
- return record29(value) && Object.keys(value).length <= 32 && Object.entries(value).every(([key, text8]) => FIELD.test(key) && !CARD_MEMBER4.test(key) && (text8 === null || typeof text8 === "string" && TEXT3.test(text8)));
5344
+ return record29(value) && Object.keys(value).length <= 32 && Object.entries(value).every(([key, text9]) => FIELD.test(key) && !CARD_MEMBER4.test(key) && (text9 === null || typeof text9 === "string" && TEXT3.test(text9)));
5370
5345
  }
5371
5346
  function judgeCardPayment(parsed) {
5372
5347
  const source = parsed.source;
@@ -5864,8 +5839,8 @@ function cardNamed2(key) {
5864
5839
  const phrase = words.join(" ");
5865
5840
  return words.some((word) => CARD_WORDS.includes(word)) || ["security code", "codigo seguridad", "codigo verificacion"].some((said) => phrase.includes(said));
5866
5841
  }
5867
- function carriesCardNumber(text8) {
5868
- for (const [run] of text8.matchAll(/[0-9]+(?:[ ._/,-][0-9]+)*/g)) {
5842
+ function carriesCardNumber(text9) {
5843
+ for (const [run] of text9.matchAll(/[0-9]+(?:[ ._/,-][0-9]+)*/g)) {
5869
5844
  const groups = run.split(/[ ._/,-]/);
5870
5845
  for (let first = 0; first < groups.length; first += 1) {
5871
5846
  let digits3 = "";
@@ -5878,17 +5853,17 @@ function carriesCardNumber(text8) {
5878
5853
  }
5879
5854
  return false;
5880
5855
  }
5881
- var wholeCardNumber = (text8) => /^[2-6][0-9]{12,18}$/.test(text8) && luhn7(text8);
5856
+ var wholeCardNumber = (text9) => /^[2-6][0-9]{12,18}$/.test(text9) && luhn7(text9);
5882
5857
  function membersRefusal(root) {
5883
5858
  const pending = [[root, ""]];
5884
5859
  while (pending.length > 0) {
5885
5860
  const [node, path] = pending.pop();
5886
- const own12 = path === "" ? TRANSACTION_MEMBERS : owns7(RECORD_MEMBERS, path) ? RECORD_MEMBERS[path] : null;
5861
+ const own13 = path === "" ? TRANSACTION_MEMBERS : owns7(RECORD_MEMBERS, path) ? RECORD_MEMBERS[path] : null;
5887
5862
  for (const [key, child] of Object.entries(node)) {
5888
5863
  const at = Array.isArray(node) ? path : path === "" ? key : `${path}.${key}`;
5889
5864
  if (at === "checkoutCreditCard")
5890
5865
  continue;
5891
- if (own12 !== null && !own12.includes(key))
5866
+ if (own13 !== null && !own13.includes(key))
5892
5867
  return true;
5893
5868
  if (TEXT_RECORDS.includes(path) && child !== null && typeof child !== "string")
5894
5869
  return true;
@@ -5995,6 +5970,119 @@ function payuLatamBodyVerdict(body, url) {
5995
5970
  const { code } = judgeBody5(body, target);
5996
5971
  return code === null ? CARD34 : refuse35(code);
5997
5972
  }
5973
+ // src/pin-payments.js
5974
+ var PIN_PAYMENTS_PSP = "pin_payments";
5975
+ var PIN_PAYMENTS_CARD_HOSTS = /* @__PURE__ */ Object.freeze({ "api.pinpayments.com": "production", "test-api.pinpayments.com": "test" });
5976
+ var PIN_PAYMENTS_CARD_PATH = "/1/cards";
5977
+ var BODY_LIMIT34 = 4096;
5978
+ var CARD_KEYS15 = /* @__PURE__ */ Object.freeze(["name", "number", "cvc", "expiry_month", "expiry_year"]);
5979
+ var ADDRESS_KEYS6 = /* @__PURE__ */ Object.freeze([
5980
+ "address_line1",
5981
+ "address_line2",
5982
+ "address_city",
5983
+ "address_postcode",
5984
+ "address_state",
5985
+ "address_country"
5986
+ ]);
5987
+ var KEY2 = "publishable_api_key";
5988
+ var METHOD = "_method";
5989
+ var DOCUMENTED = /* @__PURE__ */ new Set([KEY2, METHOD, ...CARD_KEYS15, ...ADDRESS_KEYS6]);
5990
+ var PUBLISHABLE_KEY2 = /^pk_[A-Za-z0-9_-]{8,64}$/;
5991
+ var CARD_NUMBER17 = /^[0-9]{12,19}$/;
5992
+ var CODE7 = /^[0-9]{3,4}$/;
5993
+ var MONTH18 = /^(?:0?[1-9]|1[0-2])$/;
5994
+ var YEAR19 = /^(?:[0-9]{2}|[0-9]{4})$/;
5995
+ var TEXT_LIMIT13 = 256;
5996
+ var record31 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
5997
+ var own11 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
5998
+ var refuse36 = (code) => Object.freeze({ verdict: "refuse", code });
5999
+ var CARD35 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
6000
+ function luhn8(digits3) {
6001
+ let sum = 0;
6002
+ for (let at = 0; at < digits3.length; at += 1) {
6003
+ let digit = Number(digits3[digits3.length - 1 - at]);
6004
+ if (at % 2 === 1) {
6005
+ digit *= 2;
6006
+ if (digit > 9)
6007
+ digit -= 9;
6008
+ }
6009
+ sum += digit;
6010
+ }
6011
+ return sum % 10 === 0;
6012
+ }
6013
+ function pinPaymentsCardUrl(url) {
6014
+ if (typeof url !== "string" || url.length > 256 || url.includes("?") || url.includes("#"))
6015
+ return null;
6016
+ let parsed;
6017
+ try {
6018
+ parsed = new URL(url);
6019
+ }
6020
+ catch {
6021
+ return null;
6022
+ }
6023
+ if (parsed.href !== url || parsed.protocol !== "https:" || parsed.port || parsed.username || parsed.password)
6024
+ return null;
6025
+ if (!own11(PIN_PAYMENTS_CARD_HOSTS, parsed.hostname) || parsed.pathname !== PIN_PAYMENTS_CARD_PATH)
6026
+ return null;
6027
+ return Object.freeze({ host: parsed.hostname, environment: PIN_PAYMENTS_CARD_HOSTS[parsed.hostname] });
6028
+ }
6029
+ function readBody20(body) {
6030
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT34)
6031
+ return null;
6032
+ let value;
6033
+ try {
6034
+ value = JSON.parse(body);
6035
+ if (!record31(value) || JSON.stringify(value) !== body)
6036
+ return null;
6037
+ }
6038
+ catch {
6039
+ return null;
6040
+ }
6041
+ return value;
6042
+ }
6043
+ var text8 = (value) => typeof value === "string" && value.length <= TEXT_LIMIT13;
6044
+ var dateValue = (value, shape) => typeof value === "string" && shape.test(value) || Number.isSafeInteger(value) && shape.test(String(value));
6045
+ function isCardBody(value) {
6046
+ if (!Object.keys(value).every((key) => DOCUMENTED.has(key)))
6047
+ return false;
6048
+ if (!CARD_KEYS15.every((key) => own11(value, key)) || !own11(value, KEY2))
6049
+ return false;
6050
+ if (typeof value[KEY2] !== "string" || !PUBLISHABLE_KEY2.test(value[KEY2]))
6051
+ return false;
6052
+ if (own11(value, METHOD) && value[METHOD] !== "POST")
6053
+ return false;
6054
+ if (!text8(value.name) || value.name.trim() === "")
6055
+ return false;
6056
+ if (typeof value.number !== "string" || !CARD_NUMBER17.test(value.number) || !luhn8(value.number))
6057
+ return false;
6058
+ if (typeof value.cvc !== "string" || !CODE7.test(value.cvc))
6059
+ return false;
6060
+ if (!dateValue(value.expiry_month, MONTH18) || !dateValue(value.expiry_year, YEAR19))
6061
+ return false;
6062
+ return ADDRESS_KEYS6.every((key) => !own11(value, key) || value[key] === null || text8(value[key]));
6063
+ }
6064
+ function pinPaymentsBodyVerdict(body, url) {
6065
+ if (url !== void 0 && pinPaymentsCardUrl(url) === null)
6066
+ return refuse36("pin_payments_url_refused");
6067
+ const value = readBody20(body);
6068
+ if (value === null || !isCardBody(value))
6069
+ return refuse36("pin_payments_body_unsupported");
6070
+ return CARD35;
6071
+ }
6072
+ var TOKEN_FACTS = /* @__PURE__ */ Object.freeze([
6073
+ "token",
6074
+ "scheme",
6075
+ "display_number",
6076
+ "issuing_country",
6077
+ "expiry_month",
6078
+ "expiry_year",
6079
+ "name",
6080
+ ...ADDRESS_KEYS6,
6081
+ "network_type",
6082
+ "network_format",
6083
+ "customer_token",
6084
+ "primary"
6085
+ ]);
5998
6086
  // src/registration.js
5999
6087
  var PARTS = { psp: "id", definitions: "list", refusedOperations: "list", settlementReadback: "any", exactUrl: "rule", bodyGate: "rule", amount: "rule" };
6000
6088
  var PSP_ID = /^[a-z][a-z0-9_]*$/;
@@ -6043,14 +6131,14 @@ var MIDTRANS_OPERATION = "midtrans.card_request";
6043
6131
  var MIDTRANS_TOKEN_URL = "https://api.midtrans.com/v2/token";
6044
6132
  var MIDTRANS_SANDBOX_TOKEN_URL = "https://api.sandbox.midtrans.com/v2/token";
6045
6133
  var MIDTRANS_TOKEN_KEYS = /* @__PURE__ */ Object.freeze(["card_cvv", "card_number", "card_exp_month", "card_exp_year", "installment_term"]);
6046
- var BODY_LIMIT34 = 4096;
6047
- var CARD_NUMBER17 = /^[0-9]{12,19}$/;
6134
+ var BODY_LIMIT35 = 4096;
6135
+ var CARD_NUMBER18 = /^[0-9]{12,19}$/;
6048
6136
  var SECURITY_CODE22 = /^[0-9]{3,4}$/;
6049
- var MONTH18 = /^(?:0[1-9]|1[0-2])$/;
6050
- var YEAR19 = /^20[0-9]{2}$/;
6137
+ var MONTH19 = /^(?:0[1-9]|1[0-2])$/;
6138
+ var YEAR20 = /^20[0-9]{2}$/;
6051
6139
  var TERM = /^[0-9]{1,3}$/;
6052
- var record31 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
6053
- var own11 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
6140
+ var record32 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
6141
+ var own12 = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
6054
6142
  var inOrder6 = (value, keys) => {
6055
6143
  let at = 0;
6056
6144
  for (const name of Object.keys(value)) {
@@ -6062,18 +6150,18 @@ var inOrder6 = (value, keys) => {
6062
6150
  }
6063
6151
  return true;
6064
6152
  };
6065
- var refuse36 = (code) => Object.freeze({ verdict: "refuse", code });
6066
- var CARD35 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
6153
+ var refuse37 = (code) => Object.freeze({ verdict: "refuse", code });
6154
+ var CARD36 = /* @__PURE__ */ Object.freeze({ verdict: "card" });
6067
6155
  function isMidtransTokenUrl(url) {
6068
6156
  return url === MIDTRANS_TOKEN_URL || url === MIDTRANS_SANDBOX_TOKEN_URL;
6069
6157
  }
6070
- function readBody20(body) {
6071
- if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT34)
6158
+ function readBody21(body) {
6159
+ if (typeof body !== "string" || body === "" || body.length > BODY_LIMIT35)
6072
6160
  return null;
6073
6161
  let value;
6074
6162
  try {
6075
6163
  value = JSON.parse(body);
6076
- if (!record31(value) || JSON.stringify(value) !== body)
6164
+ if (!record32(value) || JSON.stringify(value) !== body)
6077
6165
  return null;
6078
6166
  }
6079
6167
  catch {
@@ -6082,20 +6170,20 @@ function readBody20(body) {
6082
6170
  return value;
6083
6171
  }
6084
6172
  function midtransBodyVerdict(body) {
6085
- const value = readBody20(body);
6173
+ const value = readBody21(body);
6086
6174
  if (value === null || !inOrder6(value, MIDTRANS_TOKEN_KEYS)) {
6087
- if (record31(value) && (own11(value, "token_id") || own11(value, "two_click")) && !own11(value, "card_number"))
6088
- return refuse36("midtrans_saved_card");
6089
- return refuse36("midtrans_body_unsupported");
6175
+ if (record32(value) && (own12(value, "token_id") || own12(value, "two_click")) && !own12(value, "card_number"))
6176
+ return refuse37("midtrans_saved_card");
6177
+ return refuse37("midtrans_body_unsupported");
6090
6178
  }
6091
- if (!own11(value, "card_cvv") || !own11(value, "card_number") || !own11(value, "card_exp_month") || !own11(value, "card_exp_year")) {
6092
- return refuse36("midtrans_body_unsupported");
6179
+ if (!own12(value, "card_cvv") || !own12(value, "card_number") || !own12(value, "card_exp_month") || !own12(value, "card_exp_year")) {
6180
+ return refuse37("midtrans_body_unsupported");
6093
6181
  }
6094
- if (typeof value.card_cvv !== "string" || !SECURITY_CODE22.test(value.card_cvv) || typeof value.card_number !== "string" || !CARD_NUMBER17.test(value.card_number) || typeof value.card_exp_month !== "string" || !MONTH18.test(value.card_exp_month) || typeof value.card_exp_year !== "string" || !YEAR19.test(value.card_exp_year))
6095
- return refuse36("midtrans_body_unsupported");
6096
- if (own11(value, "installment_term") && (typeof value.installment_term !== "string" || !TERM.test(value.installment_term)))
6097
- return refuse36("midtrans_body_unsupported");
6098
- return CARD35;
6182
+ if (typeof value.card_cvv !== "string" || !SECURITY_CODE22.test(value.card_cvv) || typeof value.card_number !== "string" || !CARD_NUMBER18.test(value.card_number) || typeof value.card_exp_month !== "string" || !MONTH19.test(value.card_exp_month) || typeof value.card_exp_year !== "string" || !YEAR20.test(value.card_exp_year))
6183
+ return refuse37("midtrans_body_unsupported");
6184
+ if (own12(value, "installment_term") && (typeof value.installment_term !== "string" || !TERM.test(value.installment_term)))
6185
+ return refuse37("midtrans_body_unsupported");
6186
+ return CARD36;
6099
6187
  }
6100
6188
  var midtrans_default = /* @__PURE__ */ registerProcessor({
6101
6189
  psp: MIDTRANS_PSP,
@@ -6277,6 +6365,8 @@ function processorGate(recognizer, url, body) {
6277
6365
  return { verdict: "refuse", code: "paymob_url_refused" };
6278
6366
  return paymobBodyVerdict(body);
6279
6367
  }
6368
+ if (recognizer && recognizer.psp === PIN_PAYMENTS_PSP)
6369
+ return pinPaymentsBodyVerdict(body, url);
6280
6370
  if (recognizer && recognizer.psp === GRAVY_PSP)
6281
6371
  return gravyBodyVerdict(body);
6282
6372
  if (recognizer && recognizer.psp === MONERIS_PSP) {
@@ -6402,7 +6492,7 @@ function splitCardLeg(recognizer, body) {
6402
6492
  const absorb = list(split.absorb);
6403
6493
  const pass = list(split.pass);
6404
6494
  const sibling = list(split.siblingKeys);
6405
- const own12 = [];
6495
+ const own13 = [];
6406
6496
  const seen = /* @__PURE__ */ new Set();
6407
6497
  for (const chunk of body.split("&")) {
6408
6498
  const eq = chunk.indexOf("=");
@@ -6419,13 +6509,13 @@ function splitCardLeg(recognizer, body) {
6419
6509
  return null;
6420
6510
  seen.add(key);
6421
6511
  if (!sibling.includes(key))
6422
- own12.push(key);
6512
+ own13.push(key);
6423
6513
  }
6424
- if (own12.length === 0)
6514
+ if (own13.length === 0)
6425
6515
  return null;
6426
- if (own12.every((key) => absorb.includes(key)))
6516
+ if (own13.every((key) => absorb.includes(key)))
6427
6517
  return "absorb";
6428
- if (own12.every((key) => pass.includes(key)))
6518
+ if (own13.every((key) => pass.includes(key)))
6429
6519
  return "pass";
6430
6520
  return null;
6431
6521
  }