voucher-ts
Version:
TypeScript SDK for redeeming TrueWallet vouchers (zero dependencies)
3 lines (2 loc) • 2.71 kB
JavaScript
var t=class extends Error{constructor(r){super(r),this.name="ValidationError"}},E=/^https:\/\/gift\.truemoney\.com\/campaign\/\?v=[a-zA-Z0-9]+$/;function c(o){if(!o)throw new t("\u0E01\u0E23\u0E38\u0E13\u0E32\u0E01\u0E23\u0E2D\u0E01 URL");if(!E.test(o))throw new t("URL \u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07")}function i(o){let r=o.match(/\?v=([a-zA-Z0-9]+)/);if(!r)throw new t("Invalid voucher URL format");return r[1]}var h={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 e=i(r),s=await fetch(`https://gift.maythiwat.com/campaign/vouchers/${e}/redeem`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mobile:this.config.mobile,voucher_hash:e})});if(!s.ok)throw new Error(`HTTP error! status: ${s.status}`);let a=await s.json();if(a.status.code!=="SUCCESS")return{error:h[a.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:a.status.code};if(!a.data?.voucher)return{error:"Invalid response format",code:"INTERNAL_ERROR"};let u=a.data.voucher.redeemed_amount_baht.replace(/,/g,""),n=Number(u);return isNaN(n)?{error:"Invalid amount format",code:"INTERNAL_ERROR"}:{amount:n,originalData:a}}catch(e){return e instanceof t?{error:e.message,code:"INTERNAL_ERROR"}:e instanceof Error?{error:e.message,code:"INTERNAL_ERROR"}:{error:"Unknown error occurred",code:"INTERNAL_ERROR"}}}};export{E as TRUEWALLET_URL_REGEX,R as TrueWalletVoucher,t as ValidationError,i as extractVoucherHash,c as validateVoucherUrl};
//# sourceMappingURL=index.mjs.map