cppay-sdk 0.0.2-beta.0 → 0.0.2-beta.1

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.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- const e={Ethereum:[`USDT`,`USDC`,`ETH`],BSC:[`USDT`,`USDC`,`BNB`],Tron:[`USDT`,`USDC`,`TRX`],Polygon:[`USDT`,`USDC`],Solana:[`USDT`,`USDC`,`SOL`]},t={Ethereum:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png`,BSC:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,Tron:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png`,Polygon:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon/info/logo.png`,Solana:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png`},n={USDT:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png`,USDC:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png`,ETH:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png`,BNB:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,TRX:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png`,SOL:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png`},r=Object.entries(n).map(([e,t])=>({symbol:e,icon:t})),i=Object.entries(t).map(([e,t])=>({name:e,icon:t}));var a=async(e,t,n)=>{let r=Object.assign({timeout:15e3},n),i=new AbortController;setTimeout(()=>i.abort(),r.timeout);let a=await fetch(e,{signal:i.signal,...t}),o=a.headers.get(`Content-Type`)??``;if(o.includes(`json`))return await a.json();try{return await a.json()}catch{throw Error(`Unsupport Content Type: ${o}`)}},o=0;const s=async e=>{let t=await a(e.url,{method:e.method??`get`,headers:e.headers,body:JSON.stringify(e.data)});if(t.code!==o)throw Error(t.message);return t.data},c=(e=1e3)=>new Promise(t=>setTimeout(t,e));var l=class t{static supportedChains=i;static chainTokens=e;static getSupportedTokens(e){let n=[];return Object.entries(t.chainTokens).some(([t,i])=>{if(t===e)return n=r.filter(e=>i.includes(e.symbol)),!0}),n}apikey;constructor(e){this.apikey=e}get headers(){return{Authorization:this.apikey}}async createPayment(e){let t=await s({url:`/api/payment/create`,method:`post`,data:{chain:e.paymentChain,token:e.paymentToken,order_no:e.orderId,amount:e.amount},headers:this.headers});if(!t)throw Error(`Create Payment Failed`);return{orderId:e.orderId,paymentId:t.payment_id,paymentAmount:t.pay_amount,paymentChain:e.paymentChain,paymentToken:e.paymentToken}}async checkPaymentStatus(e,t=3e3){let n=10;for(;n--;){if((await s({url:`/api/payment/query`,data:{payment_id:e},headers:this.headers}))?.status===`success`)return;await c(t)}throw Error(`Check Payment Status Timeout, PaymentId: ${e}`)}},u=l;exports.CHAINS=i,exports.CHAIN_ICONS=t,exports.CHAIN_TOKENS=e,exports.Cppay=u,exports.TOKENS=r,exports.TOKEN_ICONS=n;
1
+ const e={Ethereum:[`USDT`,`USDC`,`ETH`],BSC:[`USDT`,`USDC`,`BNB`],Tron:[`USDT`,`USDC`,`TRX`],Polygon:[`USDT`,`USDC`],Solana:[`USDT`,`USDC`,`SOL`]},t={Ethereum:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png`,BSC:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,Tron:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png`,Polygon:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/polygon/info/logo.png`,Solana:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png`},n={USDT:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xdAC17F958D2ee523a2206206994597C13D831ec7/logo.png`,USDC:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/assets/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48/logo.png`,ETH:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/ethereum/info/logo.png`,BNB:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png`,TRX:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png`,SOL:`https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png`};var r=`http://192.168.0.162:8000`,i=async(e,t,n)=>{let i=Object.assign({timeout:15e3},n),a=new AbortController,o=setTimeout(()=>a.abort(),i.timeout);try{let n=await fetch(new URL(e,r),{signal:a.signal,...t});clearTimeout(o);let i=n.headers.get(`Content-Type`)??``;if(i.includes(`json`))return await n.json();try{return await n.json()}catch{throw Error(`URL: ${e}, Unsupport Content Type: ${i}`)}}catch(t){throw clearTimeout(o),t instanceof DOMException&&t.name===`AbortError`?Error(`URL: ${e}, Request timeout after ${i.timeout}ms`):t}},a=0;const o=async(e,t)=>{let n=await i(t.url,{method:t.method??`get`,headers:{Authorization:e,...t.headers},body:JSON.stringify(t.data)});if(n.code!==a)throw Error(`Request ${t.url} Failed. ${n.message}`);return n.data},s=(e=1e3)=>new Promise(t=>setTimeout(t,e));var c=class{apikey;constructor(e){this.apikey=e}async getSupportedChains(){let e=(await o(this.apikey,{url:`/api/payment/token`})).reduce((e,r)=>{let i=e[r.chain]??{chain:r.chain,tokens:[],icon:t[r.chain]};return i.tokens.push({symbol:r.token_symbol,decimals:r.token_decimals,address:r.token_address,receiveAddresses:r.receive_addresses,icon:n[r.token_symbol]}),e[r.chain]=i,e},{});return Object.values(e)}async createPayment(e){let t={chain:e.paymentChain,token:e.paymentToken,order_no:e.orderId,amount:e.amount},n=await o(this.apikey,{url:`/api/payment/create`,method:`post`,data:t});return{orderId:e.orderId,paymentId:n.payment_id,paymentAmount:n.pay_amount,paymentChain:e.paymentChain,paymentToken:e.paymentToken}}async checkPaymentStatus(e,t=1e3){let n=15;for(;n--;){let n={payment_id:e};if((await o(this.apikey,{url:`/api/payment/query`,data:n})).status===`success`)return;await s(t)}throw Error(`Check Payment Status Timeout, PaymentId: ${e}`)}},l=c;exports.CHAIN_ICONS=t,exports.CHAIN_TOKENS=e,exports.Cppay=l,exports.TOKEN_ICONS=n;
package/dist/index.d.ts CHANGED
@@ -4,26 +4,16 @@ export declare const CHAIN_ICONS: Record<Chain, string>;
4
4
 
5
5
  export declare const CHAIN_TOKENS: Record<Chain, Token[]>;
6
6
 
7
- export declare const CHAINS: {
8
- name: Chain;
9
- icon: string;
10
- }[];
7
+ export declare interface ChainInfo {
8
+ icon?: string;
9
+ chain: Chain;
10
+ tokens: TokenInfo[];
11
+ }
11
12
 
12
13
  export declare class Cppay {
13
- static readonly supportedChains: {
14
- name: Chain;
15
- icon: string;
16
- }[];
17
- static readonly chainTokens: Record<Chain, Token[]>;
18
- static getSupportedTokens(chain: Chain): {
19
- symbol: Token;
20
- icon: string;
21
- }[];
22
14
  private apikey;
23
15
  constructor(apikey: string);
24
- get headers(): {
25
- Authorization: string;
26
- };
16
+ getSupportedChains(): Promise<ChainInfo[]>;
27
17
  createPayment(params: {
28
18
  paymentChain: Chain;
29
19
  paymentToken: Token;
@@ -36,7 +26,7 @@ export declare class Cppay {
36
26
  export declare interface CppayResponse<R> {
37
27
  code: number;
38
28
  message: string;
39
- data: R extends object ? R | null : R;
29
+ data: R;
40
30
  }
41
31
 
42
32
  export declare type Numberic = `${number}.${number}` | `${number}`;
@@ -53,9 +43,12 @@ export declare type Token = "USDT" | "USDC" | "ETH" | "BNB" | "TRX" | "SOL";
53
43
 
54
44
  export declare const TOKEN_ICONS: Record<Token, string>;
55
45
 
56
- export declare const TOKENS: {
57
- symbol: Token;
58
- icon: string;
59
- }[];
46
+ export declare interface TokenInfo {
47
+ icon?: string;
48
+ symbol: string;
49
+ decimals: number;
50
+ address: string | "";
51
+ receiveAddresses: string[];
52
+ }
60
53
 
61
54
  export { }
package/dist/index.js CHANGED
@@ -33,65 +33,71 @@ const CHAIN_TOKENS = {
33
33
  BNB: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/binance/info/logo.png",
34
34
  TRX: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/tron/info/logo.png",
35
35
  SOL: "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/solana/info/logo.png"
36
- }, TOKENS = Object.entries(TOKEN_ICONS).map(([e, i]) => ({
37
- symbol: e,
38
- icon: i
39
- })), CHAINS = Object.entries(CHAIN_ICONS).map(([e, i]) => ({
40
- name: e,
41
- icon: i
42
- }));
43
- var request = async (e, i, a) => {
44
- let o = Object.assign({ timeout: 15e3 }, a), s = new AbortController();
45
- setTimeout(() => s.abort(), o.timeout);
46
- let c = await fetch(e, {
47
- signal: s.signal,
48
- ...i
49
- }), l = c.headers.get("Content-Type") ?? "";
50
- if (l.includes("json")) return await c.json();
36
+ };
37
+ var BASE_URL = "http://192.168.0.162:8000", request = async (e, r, i) => {
38
+ let o = Object.assign({ timeout: 15e3 }, i), s = new AbortController(), c = setTimeout(() => s.abort(), o.timeout);
51
39
  try {
52
- return await c.json();
53
- } catch {
54
- throw Error(`Unsupport Content Type: ${l}`);
40
+ let i = await fetch(new URL(e, BASE_URL), {
41
+ signal: s.signal,
42
+ ...r
43
+ });
44
+ clearTimeout(c);
45
+ let o = i.headers.get("Content-Type") ?? "";
46
+ if (o.includes("json")) return await i.json();
47
+ try {
48
+ return await i.json();
49
+ } catch {
50
+ throw Error(`URL: ${e}, Unsupport Content Type: ${o}`);
51
+ }
52
+ } catch (r) {
53
+ throw clearTimeout(c), r instanceof DOMException && r.name === "AbortError" ? Error(`URL: ${e}, Request timeout after ${o.timeout}ms`) : r;
55
54
  }
56
55
  }, SUCCESS_CODE = 0;
57
- const cppayRequest = async (e) => {
58
- let i = await request(e.url, {
59
- method: e.method ?? "get",
60
- headers: e.headers,
61
- body: JSON.stringify(e.data)
56
+ const cppayRequest = async (e, r) => {
57
+ let i = await request(r.url, {
58
+ method: r.method ?? "get",
59
+ headers: {
60
+ Authorization: e,
61
+ ...r.headers
62
+ },
63
+ body: JSON.stringify(r.data)
62
64
  });
63
- if (i.code !== SUCCESS_CODE) throw Error(i.message);
65
+ if (i.code !== SUCCESS_CODE) throw Error(`Request ${r.url} Failed. ${i.message}`);
64
66
  return i.data;
65
- }, sleep = (e = 1e3) => new Promise((i) => setTimeout(i, e));
66
- var cppay_default = class i {
67
- static supportedChains = CHAINS;
68
- static chainTokens = CHAIN_TOKENS;
69
- static getSupportedTokens(e) {
70
- let a = [];
71
- return Object.entries(i.chainTokens).some(([i, s]) => {
72
- if (i === e) return a = TOKENS.filter((e) => s.includes(e.symbol)), !0;
73
- }), a;
74
- }
67
+ }, sleep = (e = 1e3) => new Promise((r) => setTimeout(r, e));
68
+ var cppay_default = class {
75
69
  apikey;
76
70
  constructor(e) {
77
71
  this.apikey = e;
78
72
  }
79
- get headers() {
80
- return { Authorization: this.apikey };
73
+ async getSupportedChains() {
74
+ let e = (await cppayRequest(this.apikey, { url: "/api/payment/token" })).reduce((e, a) => {
75
+ let o = e[a.chain] ?? {
76
+ chain: a.chain,
77
+ tokens: [],
78
+ icon: CHAIN_ICONS[a.chain]
79
+ };
80
+ return o.tokens.push({
81
+ symbol: a.token_symbol,
82
+ decimals: a.token_decimals,
83
+ address: a.token_address,
84
+ receiveAddresses: a.receive_addresses,
85
+ icon: TOKEN_ICONS[a.token_symbol]
86
+ }), e[a.chain] = o, e;
87
+ }, {});
88
+ return Object.values(e);
81
89
  }
82
90
  async createPayment(e) {
83
- let i = await cppayRequest({
91
+ let r = {
92
+ chain: e.paymentChain,
93
+ token: e.paymentToken,
94
+ order_no: e.orderId,
95
+ amount: e.amount
96
+ }, i = await cppayRequest(this.apikey, {
84
97
  url: "/api/payment/create",
85
98
  method: "post",
86
- data: {
87
- chain: e.paymentChain,
88
- token: e.paymentToken,
89
- order_no: e.orderId,
90
- amount: e.amount
91
- },
92
- headers: this.headers
99
+ data: r
93
100
  });
94
- if (!i) throw Error("Create Payment Failed");
95
101
  return {
96
102
  orderId: e.orderId,
97
103
  paymentId: i.payment_id,
@@ -100,17 +106,17 @@ var cppay_default = class i {
100
106
  paymentToken: e.paymentToken
101
107
  };
102
108
  }
103
- async checkPaymentStatus(e, i = 3e3) {
104
- let a = 10;
105
- for (; a--;) {
106
- if ((await cppayRequest({
109
+ async checkPaymentStatus(e, r = 1e3) {
110
+ let i = 15;
111
+ for (; i--;) {
112
+ let i = { payment_id: e };
113
+ if ((await cppayRequest(this.apikey, {
107
114
  url: "/api/payment/query",
108
- data: { payment_id: e },
109
- headers: this.headers
110
- }))?.status === "success") return;
111
- await sleep(i);
115
+ data: i
116
+ })).status === "success") return;
117
+ await sleep(r);
112
118
  }
113
119
  throw Error(`Check Payment Status Timeout, PaymentId: ${e}`);
114
120
  }
115
121
  };
116
- export { CHAINS, CHAIN_ICONS, CHAIN_TOKENS, cppay_default as Cppay, TOKENS, TOKEN_ICONS };
122
+ export { CHAIN_ICONS, CHAIN_TOKENS, cppay_default as Cppay, TOKEN_ICONS };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cppay-sdk",
3
- "version": "0.0.2-beta.0",
3
+ "version": "0.0.2-beta.1",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "dev": "vite",