voucher-ts
Version:
TypeScript SDK for redeeming TrueWallet vouchers (zero dependencies)
3 lines (2 loc) • 3.28 kB
JavaScript
;var n=Object.defineProperty;var l=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var d=Object.prototype.hasOwnProperty;var f=(e,r)=>{for(var t in r)n(e,t,{get:r[t],enumerable:!0})},T=(e,r,t,s)=>{if(r&&typeof r=="object"||typeof r=="function")for(let o of m(r))!d.call(e,o)&&o!==t&&n(e,o,{get:()=>r[o],enumerable:!(s=l(r,o))||s.enumerable});return e};var p=e=>T(n({},"__esModule",{value:!0}),e);var g={};f(g,{TRUEWALLET_URL_REGEX:()=>E,TrueWalletVoucher:()=>R,ValidationError:()=>a,extractVoucherHash:()=>i,validateVoucherUrl:()=>c});module.exports=p(g);var a=class extends Error{constructor(r){super(r),this.name="ValidationError"}},E=/^https:\/\/gift\.truemoney\.com\/campaign\/\?v=[a-zA-Z0-9]+$/;function c(e){if(!e)throw new a("\u0E01\u0E23\u0E38\u0E13\u0E32\u0E01\u0E23\u0E2D\u0E01 URL");if(!E.test(e))throw new a("URL \u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07")}function i(e){let r=e.match(/\?v=([a-zA-Z0-9]+)/);if(!r)throw new a("Invalid voucher URL format");return r[1]}var _={TARGET_USER_REDEEMED:"\u0E0B\u0E2D\u0E07\u0E02\u0E2D\u0E07\u0E02\u0E27\u0E31\u0E0D\u0E19\u0E35\u0E49\u0E16\u0E39\u0E01\u0E43\u0E0A\u0E49\u0E44\u0E1B\u0E41\u0E25\u0E49\u0E27",INTERNAL_ERROR:"\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E0B\u0E2D\u0E07\u0E02\u0E2D\u0E07\u0E02\u0E27\u0E31\u0E0D\u0E2B\u0E23\u0E37\u0E2D URL \u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14",CANNOT_GET_OWN_VOUCHER:"\u0E44\u0E21\u0E48\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16\u0E43\u0E0A\u0E49\u0E0B\u0E2D\u0E07\u0E02\u0E2D\u0E07\u0E02\u0E27\u0E31\u0E0D\u0E02\u0E2D\u0E07\u0E15\u0E31\u0E27\u0E40\u0E2D\u0E07\u0E44\u0E14\u0E49",VOUCHER_EXPIRED:"\u0E0B\u0E2D\u0E07\u0E02\u0E2D\u0E07\u0E02\u0E27\u0E31\u0E0D\u0E2B\u0E21\u0E14\u0E2D\u0E32\u0E22\u0E38\u0E41\u0E25\u0E49\u0E27",VOUCHER_OUT_OF_STOCK:"\u0E0B\u0E2D\u0E07\u0E02\u0E2D\u0E07\u0E02\u0E27\u0E31\u0E0D\u0E16\u0E39\u0E01\u0E43\u0E0A\u0E49\u0E44\u0E1B\u0E41\u0E25\u0E49\u0E27",VOUCHER_NOT_FOUND:"\u0E44\u0E21\u0E48\u0E1E\u0E1A\u0E0B\u0E2D\u0E07\u0E02\u0E2D\u0E07\u0E02\u0E27\u0E31\u0E0D\u0E19\u0E35\u0E49",SUCCESS:"\u0E2A\u0E33\u0E40\u0E23\u0E47\u0E08"},R=class{constructor(r){this.config=r}async redeem(r){try{c(r);let t=i(r),s=await fetch(`https://gift.maythiwat.com/campaign/vouchers/${t}/redeem`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mobile:this.config.mobile,voucher_hash:t})});if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);let o=await s.json();if(o.status.code!=="SUCCESS")return{error:_[o.status.code]||"\u0E40\u0E01\u0E34\u0E14\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14\u0E01\u0E31\u0E1A\u0E0B\u0E2D\u0E07\u0E02\u0E2D\u0E07\u0E02\u0E27\u0E31\u0E0D",code:o.status.code};if(!o.data?.voucher)return{error:"Invalid response format",code:"INTERNAL_ERROR"};let h=o.data.voucher.redeemed_amount_baht.replace(/,/g,""),u=Number(h);return isNaN(u)?{error:"Invalid amount format",code:"INTERNAL_ERROR"}:{amount:u,originalData:o}}catch(t){return t instanceof a?{error:t.message,code:"INTERNAL_ERROR"}:t instanceof Error?{error:t.message,code:"INTERNAL_ERROR"}:{error:"Unknown error occurred",code:"INTERNAL_ERROR"}}}};0&&(module.exports={TRUEWALLET_URL_REGEX,TrueWalletVoucher,ValidationError,extractVoucherHash,validateVoucherUrl});
//# sourceMappingURL=index.js.map