{"version":3,"sources":["/home/runner/work/promptparse/promptparse/dist/chunk-PBZUGBTQ.mjs","../src/generate/index.ts","../src/generate/promptpay/AnyID.ts","../src/utils/encoder.ts","../src/generate/TrueMoney.ts","../src/generate/TrueMoneySlipVerify.ts","../src/generate/SlipVerify.ts","../src/generate/BOTBarcode.ts"],"names":["BOTBarcode","__export","billPayment","encode","tag","withCrcTag","generate_exports","ProxyType","anyId","botBarcode","slipVerify","trueMoney","trueMoneySlipVerify","type","target","amount","replace","slice","tag29","payload","push","Number","toFixed","encodeTag81","message","split","map","c","charCodeAt","toString","padStart","join","toUpperCase","mobileNo","eventType","transactionId","date","sendingBank","transRef","billerId","ref1","ref2"],"mappings":"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","sourcesContent":["import {\n  BOTBarcode,\n  __export,\n  billPayment,\n  encode,\n  tag,\n  withCrcTag\n} from \"./chunk-TM2THQCK.mjs\";\n\n// src/generate/index.ts\nvar generate_exports = {};\n__export(generate_exports, {\n  ProxyType: () => ProxyType,\n  anyId: () => anyId,\n  billPayment: () => billPayment,\n  botBarcode: () => botBarcode,\n  slipVerify: () => slipVerify,\n  trueMoney: () => trueMoney,\n  trueMoneySlipVerify: () => trueMoneySlipVerify\n});\n\n// src/generate/promptpay/AnyID.ts\nvar ProxyType = /* @__PURE__ */ ((ProxyType2) => {\n  ProxyType2[\"MSISDN\"] = \"01\";\n  ProxyType2[\"NATID\"] = \"02\";\n  ProxyType2[\"EWALLETID\"] = \"03\";\n  ProxyType2[\"BANKACC\"] = \"04\";\n  return ProxyType2;\n})(ProxyType || {});\nfunction anyId({ type, target, amount }) {\n  if (type == \"MSISDN\") {\n    target = (\"0000000000000\" + target.replace(/^0/, \"66\")).slice(-13);\n  }\n  const tag29 = encode([\n    tag(\"00\", \"A000000677010111\"),\n    tag(ProxyType[type], target)\n  ]);\n  const payload = [\n    tag(\"00\", \"01\"),\n    tag(\"01\", !amount ? \"11\" : \"12\"),\n    tag(\"29\", tag29),\n    tag(\"53\", \"764\"),\n    tag(\"58\", \"TH\")\n  ];\n  if (amount) {\n    payload.push(tag(\"54\", Number(amount).toFixed(2)));\n  }\n  return withCrcTag(encode(payload), \"63\");\n}\n\n// src/utils/encoder.ts\nfunction encodeTag81(message) {\n  return message.split(\"\").map((c) => c.charCodeAt(0).toString(16).padStart(4, \"0\")).join(\"\").toUpperCase();\n}\n\n// src/generate/TrueMoney.ts\nfunction trueMoney({ mobileNo, amount, message }) {\n  const tag29 = encode([\n    tag(\"00\", \"A000000677010111\"),\n    tag(\"03\", `14000${mobileNo}`)\n  ]);\n  const payload = [\n    tag(\"00\", \"01\"),\n    tag(\"01\", !amount ? \"11\" : \"12\"),\n    tag(\"29\", tag29),\n    tag(\"53\", \"764\"),\n    tag(\"58\", \"TH\")\n  ];\n  if (amount) {\n    payload.push(tag(\"54\", Number(amount).toFixed(2)));\n  }\n  if (message) {\n    payload.push(tag(\"81\", encodeTag81(message)));\n  }\n  return withCrcTag(encode(payload), \"63\");\n}\n\n// src/generate/TrueMoneySlipVerify.ts\nfunction trueMoneySlipVerify({\n  eventType,\n  transactionId,\n  date\n}) {\n  const payload = [\n    tag(\n      \"00\",\n      encode([\n        tag(\"00\", \"01\"),\n        tag(\"01\", \"01\"),\n        tag(\"02\", eventType),\n        tag(\"03\", transactionId),\n        tag(\"04\", date)\n      ])\n    )\n  ];\n  return withCrcTag(encode(payload), \"91\", false);\n}\n\n// src/generate/SlipVerify.ts\nfunction slipVerify({ sendingBank, transRef }) {\n  const payload = [\n    tag(\n      \"00\",\n      encode([\n        tag(\"00\", \"000001\"),\n        tag(\"01\", sendingBank),\n        tag(\"02\", transRef)\n      ])\n    ),\n    tag(\"51\", \"TH\")\n  ];\n  return withCrcTag(encode(payload), \"91\");\n}\n\n// src/generate/BOTBarcode.ts\nfunction botBarcode({ billerId, ref1, ref2, amount }) {\n  return new BOTBarcode(billerId, ref1, ref2, amount).toString();\n}\n\nexport {\n  ProxyType,\n  anyId,\n  trueMoney,\n  trueMoneySlipVerify,\n  slipVerify,\n  botBarcode,\n  generate_exports\n};\n","export * from './promptpay/AnyID'\nexport * from './promptpay/BillPayment'\nexport * from './TrueMoney'\nexport * from './TrueMoneySlipVerify'\nexport * from './SlipVerify'\nexport * from './BOTBarcode'\n","import { encode, tag, withCrcTag } from '@/lib/tlv'\n\nexport enum ProxyType {\n  /** Mobile number */\n  'MSISDN' = '01',\n\n  /** National ID or Tax ID */\n  'NATID' = '02',\n\n  /** E-Wallet ID */\n  'EWALLETID' = '03',\n\n  /** Bank Account (Reserved) */\n  'BANKACC' = '04',\n}\n\nexport interface AnyIDConfig {\n  /** Proxy type */\n  type: keyof typeof ProxyType\n\n  /** Recipient number */\n  target: string\n\n  /** Transaction amount */\n  amount?: number\n}\n\n/**\n * Generate PromptPay AnyID (Tag 29) QR Code\n *\n * @returns QR Code Payload\n */\nexport function anyId({ type, target, amount }: AnyIDConfig) {\n  if (type == 'MSISDN') {\n    target = ('0000000000000' + target.replace(/^0/, '66')).slice(-13)\n  }\n\n  const tag29 = encode([\n    tag('00', 'A000000677010111'),\n    tag(ProxyType[type], target),\n  ])\n\n  const payload = [\n    tag('00', '01'),\n    tag('01', !amount ? '11' : '12'),\n    tag('29', tag29),\n    tag('53', '764'),\n    tag('58', 'TH'),\n  ]\n\n  if (amount) {\n    payload.push(tag('54', Number(amount).toFixed(2)))\n  }\n\n  return withCrcTag(encode(payload), '63')\n}\n","/**\n * Generate an `UCS-2`-like? Hex string for Tag 81\n *\n * This method is equivalent to:\n *\n * `Buffer.from(message, 'utf16le').swap16().toString('hex').toUpperCase()`\n *\n * @param message - Message\n * @returns Hex string of provided message\n */\nexport function encodeTag81(message: string) {\n  return message\n    .split('')\n    .map((c) => c.charCodeAt(0).toString(16).padStart(4, '0'))\n    .join('')\n    .toUpperCase()\n}\n","import { encode, tag, withCrcTag } from '@/lib/tlv'\nimport { encodeTag81 } from '@/utils/encoder'\n\nexport interface TrueMoneyConfig {\n  /** Mobile number */\n  mobileNo: string\n\n  /** Transaction amount */\n  amount?: number\n\n  /** Personal message (Tag 81) */\n  message?: string\n}\n\n/**\n * Generate QR Code for TrueMoney Wallet\n *\n * This QR Code can also be scanned with other apps,\n * just like a regular e-Wallet PromptPay QR\n * but `Personal Message (Tag 81)` will be ignored.\n *\n * @returns QR Code Payload\n */\nexport function trueMoney({ mobileNo, amount, message }: TrueMoneyConfig) {\n  const tag29 = encode([\n    tag('00', 'A000000677010111'),\n    tag('03', `14000${mobileNo}`),\n  ])\n\n  const payload = [\n    tag('00', '01'),\n    tag('01', !amount ? '11' : '12'),\n    tag('29', tag29),\n    tag('53', '764'),\n    tag('58', 'TH'),\n  ]\n\n  if (amount) {\n    payload.push(tag('54', Number(amount).toFixed(2)))\n  }\n\n  if (message) {\n    payload.push(tag('81', encodeTag81(message)))\n  }\n\n  return withCrcTag(encode(payload), '63')\n}\n","import { encode, tag, withCrcTag } from '@/lib/tlv'\n\nexport interface TrueMoneySlipVerifyConfig {\n  /** Event Type (Example: P2P) */\n  eventType: string\n\n  /** Transaction ID */\n  transactionId: string\n\n  /** Date (DDMMYYYY) */\n  date: string\n}\n\n/**\n * Generate TrueMoney Slip Verify QR Code\n *\n * Same as a regular Slip Verify QR but with some differences\n * - Tag 00 and 01 are set to '01'\n * - Tag 51 does not exist\n * - Additional tags that are TrueMoney-specific\n * - CRC checksum are case-sensitive\n *\n * @returns QR Code Payload\n */\nexport function trueMoneySlipVerify({\n  eventType,\n  transactionId,\n  date,\n}: TrueMoneySlipVerifyConfig) {\n  const payload = [\n    tag(\n      '00',\n      encode([\n        tag('00', '01'),\n        tag('01', '01'),\n        tag('02', eventType),\n        tag('03', transactionId),\n        tag('04', date),\n      ]),\n    ),\n  ]\n\n  return withCrcTag(encode(payload), '91', false)\n}\n","import { encode, tag, withCrcTag } from '@/lib/tlv'\n\nexport interface SlipVerifyConfig {\n  /** Bank code */\n  sendingBank: string\n\n  /** Transaction reference */\n  transRef: string\n}\n\n/**\n * Generate Slip Verify QR Code\n *\n * This also called \"Mini-QR\" that embedded in slip used for verify transactions\n *\n * @returns QR Code Payload\n */\nexport function slipVerify({ sendingBank, transRef }: SlipVerifyConfig) {\n  const payload = [\n    tag(\n      '00',\n      encode([\n        tag('00', '000001'),\n        tag('01', sendingBank),\n        tag('02', transRef),\n      ]),\n    ),\n    tag('51', 'TH'),\n  ]\n\n  return withCrcTag(encode(payload), '91')\n}\n","import { BOTBarcode } from '@/lib/BOTBarcode'\n\nexport interface BOTBarcodeConfig {\n  /** Biller ID (Tax ID + Suffix) */\n  billerId: string\n\n  /** Reference No. 1 / Customer No. */\n  ref1: string\n\n  /** Reference No. 2 */\n  ref2?: string | null\n\n  /** Transaction amount */\n  amount?: number | null\n}\n\n/**\n * Generate BOT Barcode\n *\n * @returns Barcode Payload\n */\nexport function botBarcode({ billerId, ref1, ref2, amount }: BOTBarcodeConfig) {\n  return new BOTBarcode(billerId, ref1, ref2, amount).toString()\n}\n"]}