@com-chain/jsc3l 2.0.1-rc.2 → 2.0.1-rc.20
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/README.md +12 -2
- package/build/bcRead.d.ts +8 -10
- package/build/bcRead.js +162 -49
- package/build/bcRead.js.map +1 -1
- package/build/bcTransaction.d.ts +8 -2
- package/build/bcTransaction.js +141 -108
- package/build/bcTransaction.js.map +1 -1
- package/build/blockies.js.map +1 -1
- package/build/config/transactions.d.ts +44 -0
- package/build/config/transactions.js +29 -0
- package/build/config/transactions.js.map +1 -0
- package/build/connection.d.ts +1 -1
- package/build/connection.js +44 -13
- package/build/connection.js.map +1 -1
- package/build/customization.js +13 -6
- package/build/customization.js.map +1 -1
- package/build/ethereum/cipher.js +3 -3
- package/build/ethereum/cipher.js.map +1 -1
- package/build/ethereum/ethFuncs.js +37 -1
- package/build/ethereum/ethFuncs.js.map +1 -1
- package/build/ethereum/etherUnits.js +5 -5
- package/build/ethereum/etherUnits.js.map +1 -1
- package/build/ethereum/myetherwallet.d.ts +1 -2
- package/build/ethereum/myetherwallet.js.map +1 -1
- package/build/ethereum/uiFuncs.d.ts +1 -3
- package/build/ethereum/uiFuncs.js +13 -23
- package/build/ethereum/uiFuncs.js.map +1 -1
- package/build/exception.d.ts +8 -0
- package/build/exception.js +14 -0
- package/build/exception.js.map +1 -0
- package/build/index.d.ts +8 -5
- package/build/index.js +38 -19
- package/build/index.js.map +1 -1
- package/build/memo.js +6 -3
- package/build/memo.js.map +1 -1
- package/build/qr.d.ts +31 -6
- package/build/qr.js +32 -12
- package/build/qr.js.map +1 -1
- package/build/rest/ajaxReq.d.ts +3 -10
- package/build/rest/ajaxReq.js +16 -33
- package/build/rest/ajaxReq.js.map +1 -1
- package/build/rest/http.js +6 -1
- package/build/rest/http.js.map +1 -1
- package/build/rest/serializer.js.map +1 -1
- package/build/type.d.ts +4 -4
- package/build/utils.d.ts +15 -0
- package/build/utils.js +270 -0
- package/build/utils.js.map +1 -0
- package/build/wallet.d.ts +6 -8
- package/build/wallet.js +35 -39
- package/build/wallet.js.map +1 -1
- package/package.json +10 -5
- package/skip-prod-transpilation.ts +48 -0
- package/src/bcRead.ts +184 -63
- package/src/bcTransaction.ts +143 -114
- package/src/config/transactions.ts +30 -0
- package/src/connection.ts +42 -9
- package/src/customization.ts +17 -2
- package/src/ethereum/ethFuncs.ts +42 -1
- package/src/ethereum/etherUnits.ts +5 -5
- package/src/ethereum/uiFuncs.ts +16 -25
- package/src/exception.ts +16 -0
- package/src/index.ts +53 -27
- package/src/qr.ts +86 -12
- package/src/rest/ajaxReq.ts +18 -40
- package/src/utils.ts +300 -0
- package/src/wallet.ts +37 -48
- package/tests/environment.ts +27 -0
- package/tests/setup.ts +12 -0
- package/tsconfig.json +8 -2
- package/vitest.config.ts +14 -0
package/build/qr.d.ts
CHANGED
|
@@ -1,8 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
type Signature = {
|
|
2
|
+
v: string;
|
|
3
|
+
r: string;
|
|
4
|
+
s: string;
|
|
4
5
|
};
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
type QRDataRaw = {
|
|
7
|
+
address: string;
|
|
8
|
+
destinary: string;
|
|
9
|
+
begin: string;
|
|
10
|
+
end: string;
|
|
11
|
+
viewbalance: boolean;
|
|
12
|
+
viewoldtran: boolean;
|
|
13
|
+
message_key?: string;
|
|
8
14
|
};
|
|
15
|
+
type QRData = {
|
|
16
|
+
address: string;
|
|
17
|
+
destinary: string;
|
|
18
|
+
begin: Date;
|
|
19
|
+
end: Date;
|
|
20
|
+
viewbalance: boolean;
|
|
21
|
+
viewoldtran: boolean;
|
|
22
|
+
message_key?: string;
|
|
23
|
+
};
|
|
24
|
+
export type SignedQR = {
|
|
25
|
+
data: QRDataRaw;
|
|
26
|
+
signature: Signature;
|
|
27
|
+
};
|
|
28
|
+
export declare function checkSignedQR(qrContent: SignedQR, intendedRecipientAddress: any): true | "InvalidFormat" | "InvalidSignature" | "NotForYou" | "Expired";
|
|
29
|
+
export declare function makeSignedQRFragments(qrContent: SignedQR, fragmentCount: number): {
|
|
30
|
+
full: string;
|
|
31
|
+
};
|
|
32
|
+
export declare function makeSignedQRContent(obj: QRData, privKey: string): SignedQR;
|
|
33
|
+
export {};
|
package/build/qr.js
CHANGED
|
@@ -1,24 +1,16 @@
|
|
|
1
1
|
import ethUtil from 'ethereumjs-util';
|
|
2
|
-
export function
|
|
3
|
-
let data, signature;
|
|
4
|
-
try {
|
|
5
|
-
({ data, signature } = JSON.parse(qrString));
|
|
6
|
-
}
|
|
7
|
-
catch (e) {
|
|
8
|
-
return 'InvalidFormat';
|
|
9
|
-
}
|
|
10
|
-
return checkSignedQR(data, signature, intendedRecipientAddress);
|
|
11
|
-
}
|
|
12
|
-
export function checkSignedQR(data, signature, intendedRecipientAddress) {
|
|
2
|
+
export function checkSignedQR(qrContent, intendedRecipientAddress) {
|
|
13
3
|
let hash;
|
|
14
4
|
let publicSignKey;
|
|
15
5
|
let receiverAddress;
|
|
6
|
+
const { data, signature } = qrContent;
|
|
16
7
|
try {
|
|
17
8
|
hash = ethUtil.sha3(JSON.stringify(data));
|
|
18
9
|
publicSignKey = ethUtil.ecrecover(hash, signature.v, signature.r, signature.s);
|
|
19
10
|
receiverAddress = ethUtil.bufferToHex(ethUtil.publicToAddress(publicSignKey));
|
|
20
11
|
}
|
|
21
12
|
catch (e) {
|
|
13
|
+
// XXXVlab: should probably use exceptions
|
|
22
14
|
return 'InvalidFormat';
|
|
23
15
|
}
|
|
24
16
|
if (receiverAddress !== data.address) {
|
|
@@ -30,6 +22,34 @@ export function checkSignedQR(data, signature, intendedRecipientAddress) {
|
|
|
30
22
|
if ((new Date(data.end)).getTime() < (new Date()).getTime()) {
|
|
31
23
|
return 'Expired';
|
|
32
24
|
}
|
|
33
|
-
return
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
export function makeSignedQRFragments(qrContent, fragmentCount) {
|
|
28
|
+
const signatureId = qrContent.signature.s.substring(4, 8);
|
|
29
|
+
const qrString = JSON.stringify(qrContent);
|
|
30
|
+
const fragmentSize = Math.ceil(qrString.length / fragmentCount);
|
|
31
|
+
const fragments = {
|
|
32
|
+
full: qrString,
|
|
33
|
+
};
|
|
34
|
+
for (let i = 0; i < fragmentCount; i++) {
|
|
35
|
+
fragments[i] = `FRAG_CR${signatureId}${i}${qrString.substring(fragmentSize * i, Math.min(fragmentSize * (i + 1), qrString.length))}`;
|
|
36
|
+
}
|
|
37
|
+
return fragments;
|
|
38
|
+
}
|
|
39
|
+
export function makeSignedQRContent(obj, privKey) {
|
|
40
|
+
const { begin, end } = obj;
|
|
41
|
+
const formatDate = (date) => `${date.getFullYear()}/${(date.getMonth() + 1)}/${date.getDate()}`;
|
|
42
|
+
const data = Object.assign(obj, {
|
|
43
|
+
begin: formatDate(begin),
|
|
44
|
+
end: formatDate(end),
|
|
45
|
+
});
|
|
46
|
+
const hash = ethUtil.sha3(JSON.stringify(data));
|
|
47
|
+
const { v, r, s } = ethUtil.ecsign(hash, privKey);
|
|
48
|
+
const signature = {
|
|
49
|
+
v,
|
|
50
|
+
r: '0x' + r.toString('hex'),
|
|
51
|
+
s: '0x' + s.toString('hex'),
|
|
52
|
+
};
|
|
53
|
+
return { data, signature };
|
|
34
54
|
}
|
|
35
55
|
//# sourceMappingURL=qr.js.map
|
package/build/qr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qr.js","sourceRoot":"","sources":["../src/qr.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"qr.js","sourceRoot":"","sources":["../src/qr.ts"],"names":[],"mappings":"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"}
|
package/build/rest/ajaxReq.d.ts
CHANGED
|
@@ -5,20 +5,12 @@ export default abstract class AjaxReqAbstract {
|
|
|
5
5
|
queuePost(): void;
|
|
6
6
|
getBalance(addr: any): Promise<unknown>;
|
|
7
7
|
getTransactionData(addr: any): Promise<unknown>;
|
|
8
|
-
sendTx(rawTx: any,
|
|
9
|
-
isError: boolean;
|
|
10
|
-
error: any;
|
|
11
|
-
}>;
|
|
12
|
-
getEstimatedGas(txobj: any): Promise<unknown>;
|
|
8
|
+
sendTx(rawTx: any, more: any): Promise<unknown>;
|
|
13
9
|
getEthCall(txobj: any): Promise<unknown>;
|
|
14
10
|
getEthCallAt(txobj: any, blockNb: any): Promise<unknown>;
|
|
15
11
|
enrollPost(data: any): any;
|
|
16
|
-
validateEnrollmentLetter(id: any, currency: any, signature: any): any;
|
|
17
|
-
enrollAddress(id: any, address: any, currency: any, token: any): any;
|
|
18
12
|
getTransList(id: any, count: any, offset: any): Promise<any>;
|
|
19
|
-
|
|
20
|
-
getExportTransList(id: any, start: any, end: any): any;
|
|
21
|
-
getExportTransListWithId(id: any, start: any, end: any): any;
|
|
13
|
+
getExportTransList(id: any, start: any, end: any): Promise<any>;
|
|
22
14
|
getCodesFromAddresses(addresses: any, currency: any, caller: any, signature: any): any;
|
|
23
15
|
getAddressesFromCode(code: any, currency: any, caller: any, signature: any): any;
|
|
24
16
|
getMessageKey(addr: any, withPrivate: any): any;
|
|
@@ -28,4 +20,5 @@ export default abstract class AjaxReqAbstract {
|
|
|
28
20
|
publishReqMessages(data: any, sign: any): any;
|
|
29
21
|
currBlock(): any;
|
|
30
22
|
getBlock(hash: any): Promise<any>;
|
|
23
|
+
getTransactionInfo(hash: any): Promise<any>;
|
|
31
24
|
}
|
package/build/rest/ajaxReq.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { APIError } from '../exception';
|
|
1
2
|
class URL {
|
|
2
3
|
}
|
|
3
4
|
URL.SERVER = 'api.php';
|
|
4
5
|
URL.ENROLL = 'enroll.php';
|
|
5
6
|
URL.TRANLIST = 'trnslist.php';
|
|
6
|
-
URL.TRANCHECK = 'api.php';
|
|
7
7
|
URL.EXPORTTRAN = 'export.php';
|
|
8
8
|
URL.GETCODE = 'getuid.php';
|
|
9
9
|
URL.GETADDRESS = 'getadd.php';
|
|
@@ -26,15 +26,13 @@ export default class AjaxReqAbstract {
|
|
|
26
26
|
}
|
|
27
27
|
queuePost() {
|
|
28
28
|
const { data, resolve, reject } = this.pendingPosts[0];
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
reject(err);
|
|
37
|
-
}
|
|
29
|
+
this.endpoint.post(URL.SERVER, data).then(res => {
|
|
30
|
+
if (res.error) {
|
|
31
|
+
reject(new APIError(res.msg, res.data));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
resolve(res.data);
|
|
35
|
+
});
|
|
38
36
|
this.pendingPosts.splice(0, 1);
|
|
39
37
|
if (this.pendingPosts.length > 0) {
|
|
40
38
|
this.queuePost();
|
|
@@ -42,14 +40,7 @@ export default class AjaxReqAbstract {
|
|
|
42
40
|
}
|
|
43
41
|
getBalance(addr) { return this.post({ balance: addr }); }
|
|
44
42
|
getTransactionData(addr) { return this.post({ txdata: addr }); }
|
|
45
|
-
|
|
46
|
-
const data = await this.post(Object.assign({}, { rawtx: rawTx }, additionalData !== null && additionalData !== void 0 ? additionalData : {}));
|
|
47
|
-
return {
|
|
48
|
-
isError: !!data.error,
|
|
49
|
-
error: data.error ? data.data : data.msg
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
getEstimatedGas(txobj) { return this.post({ estimatedGas: txobj }); }
|
|
43
|
+
sendTx(rawTx, more) { return this.post({ rawtx: rawTx, ...(more ?? {}) }); }
|
|
53
44
|
getEthCall(txobj) { return this.post({ ethCall: txobj }); }
|
|
54
45
|
getEthCallAt(txobj, blockNb) {
|
|
55
46
|
return this.post({ ethCallAt: txobj, blockNb });
|
|
@@ -60,26 +51,15 @@ export default class AjaxReqAbstract {
|
|
|
60
51
|
enrollPost(data) {
|
|
61
52
|
return this.endpoint.post(URL.ENROLL, { data: JSON.stringify(data) });
|
|
62
53
|
}
|
|
63
|
-
validateEnrollmentLetter(id, currency, signature) {
|
|
64
|
-
return this.enrollPost({ id, currency, signature });
|
|
65
|
-
}
|
|
66
|
-
enrollAddress(id, address, currency, token) {
|
|
67
|
-
return this.enrollPost({ id, addresse: address, token, currency });
|
|
68
|
-
}
|
|
69
54
|
async getTransList(id, count, offset) {
|
|
70
55
|
// for some strange reasons, the answer is stringified 2 times,
|
|
71
56
|
// so we need to unpack each entry a second time.
|
|
72
57
|
const data = await this.endpoint.get(URL.TRANLIST, { addr: id, count, offset });
|
|
73
58
|
return data.map((dataJSON) => JSON.parse(dataJSON));
|
|
74
59
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
getExportTransList(id, start, end) {
|
|
79
|
-
return this.endpoint.get(URL.EXPORTTRAN, { addr: id, start, end });
|
|
80
|
-
}
|
|
81
|
-
getExportTransListWithId(id, start, end) {
|
|
82
|
-
return this.endpoint.get(URL.EXPORTTRAN, { addr: id, start, end });
|
|
60
|
+
async getExportTransList(id, start, end) {
|
|
61
|
+
const data = await this.endpoint.get(URL.EXPORTTRAN, { addr: id, start, end });
|
|
62
|
+
return data.map((dataJSON) => JSON.parse(dataJSON));
|
|
83
63
|
}
|
|
84
64
|
getCodesFromAddresses(addresses, currency, caller, signature) {
|
|
85
65
|
return this.endpoint.post(URL.GETCODE, {
|
|
@@ -117,9 +97,12 @@ export default class AjaxReqAbstract {
|
|
|
117
97
|
}
|
|
118
98
|
currBlock() { return this.endpoint.get(URL.SERVER); }
|
|
119
99
|
async getBlock(hash) {
|
|
100
|
+
return (await this.getTransactionInfo(hash)).transaction;
|
|
101
|
+
}
|
|
102
|
+
async getTransactionInfo(hash) {
|
|
120
103
|
let res = await this.endpoint.get(URL.SERVER, { hash });
|
|
121
104
|
if (res && typeof res !== 'object') {
|
|
122
|
-
res = JSON.parse(res)
|
|
105
|
+
res = JSON.parse(res);
|
|
123
106
|
}
|
|
124
107
|
return res;
|
|
125
108
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ajaxReq.js","sourceRoot":"","sources":["../../src/rest/ajaxReq.ts"],"names":[],"mappings":"AACA,MAAM,GAAG;;AACA,UAAM,GAAG,SAAS,CAAC;AACnB,UAAM,GAAG,YAAY,CAAC;AACtB,YAAQ,GAAG,cAAc,CAAC;AAC1B,
|
|
1
|
+
{"version":3,"file":"ajaxReq.js","sourceRoot":"","sources":["../../src/rest/ajaxReq.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC,MAAM,GAAG;;AACA,UAAM,GAAG,SAAS,CAAC;AACnB,UAAM,GAAG,YAAY,CAAC;AACtB,YAAQ,GAAG,cAAc,CAAC;AAC1B,cAAU,GAAG,YAAY,CAAC;AAC1B,WAAO,GAAG,YAAY,CAAC;AACvB,cAAU,GAAG,YAAY,CAAC;AAC1B,YAAQ,GAAG,UAAU,CAAC;AACtB,mBAAe,GAAG,qBAAqB,CAAC;AAIjD,MAAM,CAAC,OAAO,OAAgB,eAAe;IAA7C;QAME,iBAAY,GAAG,EAAE,CAAA;IAmHnB,CAAC;IAjHC,EAAE;IACF,6DAA6D;IAC7D,EAAE;IAEF,IAAI,CAAE,IAAI;QACR,MAAM,IAAI,GAAG,IAAI,CAAA;QACjB,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM;YAC1C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAA;YACjD,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAA;QACtD,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,SAAS;QACP,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;QAEtD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC9C,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;gBACvC,OAAM;YACR,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAC9B,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,SAAS,EAAE,CAAA;QAAC,CAAC;IACxD,CAAC;IAGD,UAAU,CAAE,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC,CAAC;IACzD,kBAAkB,CAAE,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC,CAAC;IAChE,MAAM,CAAE,KAAK,EAAE,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC;IAC5E,UAAU,CAAE,KAAK,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA,CAAC,CAAC;IAE3D,YAAY,CAAE,KAAK,EAAE,OAAO;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAA;IACjD,CAAC;IAGD,EAAE;IACF,cAAc;IACd,EAAE;IAEF,UAAU,CAAE,IAAI;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,YAAY,CAAE,EAAE,EAAE,KAAK,EAAE,MAAM;QACnC,+DAA+D;QAC/D,iDAAiD;QACjD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QAC/E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAE,EAAE,EAAE,KAAK,EAAE,GAAG;QACtC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAA;QAC9E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,qBAAqB,CAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS;QAC3D,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;YACrC,MAAM,EAAE,QAAQ;YAChB,MAAM;YACN,SAAS;YACT,SAAS;SACV,CAAC,CAAA;IACJ,CAAC;IAED,oBAAoB,CAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS;QACrD,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;YACxC,MAAM,EAAE,QAAQ;YAChB,MAAM;YACN,SAAS;YACT,IAAI;SACL,CAAC,CAAA;IACJ,CAAC;IAED,aAAa,CAAE,IAAI,EAAE,WAAW;QAC9B,MAAM,IAAI,GAAuB,EAAE,IAAI,EAAE,CAAA;QACzC,IAAI,WAAW;YAAE,IAAI,CAAC,OAAO,GAAG,GAAG,CAAA;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;IAC9C,CAAC;IAED,iBAAiB,CAAE,IAAI,EAAE,IAAI;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IACzD,CAAC;IAED,aAAa,CAAE,OAAO,EAAE,GAAG;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IAC7C,CAAC;IAED,cAAc,CAAE,OAAO,EAAE,KAAK;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CACtB,GAAG,CAAC,eAAe,EACnB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,kBAAkB,CAAE,IAAI,EAAE,IAAI;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAChE,CAAC;IAED,SAAS,KAAM,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA,CAAC,CAAC;IAErD,KAAK,CAAC,QAAQ,CAAE,IAAI;QAClB,OAAO,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAA;IAC1D,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAE,IAAI;QAC5B,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;QACvD,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YACnC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACvB,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;CAEF"}
|
package/build/rest/http.js
CHANGED
|
@@ -51,7 +51,12 @@ export default class HttpAbstract {
|
|
|
51
51
|
if (method === 'GET' && data && Object.keys(data).length > 0) {
|
|
52
52
|
url += '?' + (new URLSearchParams(data)).toString();
|
|
53
53
|
}
|
|
54
|
-
var coreOpts =
|
|
54
|
+
var coreOpts = {
|
|
55
|
+
method,
|
|
56
|
+
data: method === 'GET' ? null : data,
|
|
57
|
+
...opts,
|
|
58
|
+
...getHostOrUrlParts(url)
|
|
59
|
+
};
|
|
55
60
|
return await this.httpRequest(coreOpts);
|
|
56
61
|
}
|
|
57
62
|
get(...args) { return this.request('GET', ...args); }
|
package/build/rest/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/rest/http.ts"],"names":[],"mappings":"AAGA,SAAS,iBAAiB,CAAE,SAAiB;IAC3C,IAAI,QAAgB,EAAE,IAAY,EAAE,IAAY,EAAE,IAAY,CAAA;IAC9D,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/rest/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/rest/serializer.ts"],"names":[],"mappings":"AACA,SAAS,OAAO,CAAE,GAAG;IACnB,OAAO,GAAG,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,MAAM,CAAA;AAC5C,CAAC;AAED,SAAS,QAAQ,CAAE,GAAG;IACpB,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAA;AAClC,CAAC;AAED,SAAS,cAAc,CAAE,GAAG,EAAE,KAAK;IACjC,IAAI,GAAG,GAAG,KAAK,CAAA;IACf,IAAI,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;QACrB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;
|
|
1
|
+
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/rest/serializer.ts"],"names":[],"mappings":"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"}
|
package/build/type.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export declare const httpMethods: readonly ["GET", "POST", "PUT", "DELETE", "PATCH", "HEAD"];
|
|
2
|
-
export
|
|
3
|
-
export
|
|
2
|
+
export type httpMethod = typeof httpMethods[number];
|
|
3
|
+
export type coreHttpOpts = {
|
|
4
4
|
protocol: string;
|
|
5
5
|
host: string;
|
|
6
6
|
path: string;
|
|
@@ -10,13 +10,13 @@ export declare type coreHttpOpts = {
|
|
|
10
10
|
data?: any;
|
|
11
11
|
timeout?: number;
|
|
12
12
|
};
|
|
13
|
-
export
|
|
13
|
+
export type HttpRequest = (opts: coreHttpOpts) => Object;
|
|
14
14
|
export interface IPersistentStore {
|
|
15
15
|
get(key: string, defaultValue?: string): string;
|
|
16
16
|
set(key: string, value: string): void;
|
|
17
17
|
del(key: string): void;
|
|
18
18
|
}
|
|
19
|
-
export
|
|
19
|
+
export type UrlParts = {
|
|
20
20
|
protocol: string;
|
|
21
21
|
host: string;
|
|
22
22
|
port: number;
|
package/build/utils.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare class SplitError extends Error {
|
|
2
|
+
constructor(message: any);
|
|
3
|
+
}
|
|
4
|
+
export declare class InsufficientBalanceError extends SplitError {
|
|
5
|
+
missingAmount: number;
|
|
6
|
+
constructor(message: any, missingAmount: any);
|
|
7
|
+
}
|
|
8
|
+
export declare class CmSpendLimitError extends SplitError {
|
|
9
|
+
missingAmount: number;
|
|
10
|
+
constructor(message: any, missingAmount: any);
|
|
11
|
+
}
|
|
12
|
+
export declare let getSplitting: (amount: any, bals: any, cmSrcMin: any, cmSpendMax?: any) => {
|
|
13
|
+
nant: number;
|
|
14
|
+
cm: number;
|
|
15
|
+
};
|
package/build/utils.js
ADDED
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
export class SplitError extends Error {
|
|
2
|
+
constructor(message) {
|
|
3
|
+
super(message);
|
|
4
|
+
this.name = 'SplitError';
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export class InsufficientBalanceError extends SplitError {
|
|
8
|
+
constructor(message, missingAmount) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = 'InsufficientBalanceError';
|
|
11
|
+
this.missingAmount = missingAmount;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export class CmSpendLimitError extends SplitError {
|
|
15
|
+
constructor(message, missingAmount) {
|
|
16
|
+
super(message);
|
|
17
|
+
this.name = 'CmSpendLimitError';
|
|
18
|
+
this.missingAmount = missingAmount;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
function min(a, b) {
|
|
22
|
+
return a < b ? a : b;
|
|
23
|
+
}
|
|
24
|
+
export let getSplitting = function (amount, bals, cmSrcMin, cmSpendMax = null) {
|
|
25
|
+
const zero = amount - amount; // Required for agnosticity
|
|
26
|
+
const split = { nant: zero, cm: zero };
|
|
27
|
+
const cmPosSpendMax = cmSpendMax !== null ? min(bals.cm, cmSpendMax) : bals.cm;
|
|
28
|
+
if (cmPosSpendMax >= 0) {
|
|
29
|
+
if (cmPosSpendMax >= amount) {
|
|
30
|
+
split.cm += amount;
|
|
31
|
+
return split;
|
|
32
|
+
}
|
|
33
|
+
split.cm += cmPosSpendMax;
|
|
34
|
+
amount -= cmPosSpendMax;
|
|
35
|
+
bals.cm -= cmPosSpendMax;
|
|
36
|
+
if (cmSpendMax !== null) {
|
|
37
|
+
cmSpendMax -= cmPosSpendMax;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (bals.nant >= amount) {
|
|
41
|
+
split.nant += amount;
|
|
42
|
+
return split;
|
|
43
|
+
}
|
|
44
|
+
split.nant = bals.nant;
|
|
45
|
+
amount -= bals.nant;
|
|
46
|
+
let cmNegAvailable = bals.cm - cmSrcMin;
|
|
47
|
+
const cmNegSpendMax = cmSpendMax !== null ? min(cmNegAvailable, cmSpendMax) : cmNegAvailable;
|
|
48
|
+
if (cmNegSpendMax >= amount) {
|
|
49
|
+
split.cm += amount;
|
|
50
|
+
return split;
|
|
51
|
+
}
|
|
52
|
+
amount -= cmNegSpendMax;
|
|
53
|
+
bals.cm -= cmNegSpendMax;
|
|
54
|
+
if (cmSpendMax !== null) {
|
|
55
|
+
cmSpendMax -= cmNegSpendMax;
|
|
56
|
+
}
|
|
57
|
+
cmNegAvailable = (bals.cm - cmSrcMin);
|
|
58
|
+
if (cmNegAvailable >= amount && cmSpendMax == 0) {
|
|
59
|
+
throw new CmSpendLimitError(`Cm spend limit preventing to complete amount (remaining: ${amount}).`, amount);
|
|
60
|
+
}
|
|
61
|
+
throw new InsufficientBalanceError(`Missing ${amount - cmNegAvailable} to complete amount`, amount - cmNegAvailable);
|
|
62
|
+
};
|
|
63
|
+
/* @skip-prod-transpilation */
|
|
64
|
+
if (import.meta.vitest) {
|
|
65
|
+
const { it, expect, describe, beforeAll, afterAll } = import.meta.vitest;
|
|
66
|
+
function testSuite(numberFactory = null, label = null) {
|
|
67
|
+
let msg;
|
|
68
|
+
if (numberFactory) {
|
|
69
|
+
msg = `check with ${label}`;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
msg = "check with standard number";
|
|
73
|
+
}
|
|
74
|
+
describe(msg, () => {
|
|
75
|
+
let getSplittingOrig = getSplitting;
|
|
76
|
+
let toStrictEqual;
|
|
77
|
+
beforeAll(() => {
|
|
78
|
+
if (numberFactory) {
|
|
79
|
+
getSplitting = function (amount, bals, cmSrcMin, cmSpendMax = null) {
|
|
80
|
+
amount = numberFactory(amount);
|
|
81
|
+
bals.cm = numberFactory(bals.cm);
|
|
82
|
+
bals.nant = numberFactory(bals.nant);
|
|
83
|
+
cmSrcMin = numberFactory(cmSrcMin);
|
|
84
|
+
if (cmSpendMax !== null) {
|
|
85
|
+
cmSpendMax = numberFactory(cmSpendMax);
|
|
86
|
+
}
|
|
87
|
+
return getSplittingOrig(amount, bals, cmSrcMin, cmSpendMax);
|
|
88
|
+
};
|
|
89
|
+
toStrictEqual = function (actual, expected) {
|
|
90
|
+
let { cm, nant } = expected;
|
|
91
|
+
expect(actual).toStrictEqual({ cm: numberFactory(cm), nant: numberFactory(nant) });
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
toStrictEqual = function (actual, expected) {
|
|
96
|
+
expect(actual).toStrictEqual(expected);
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
afterAll(() => {
|
|
101
|
+
getSplitting = getSplittingOrig;
|
|
102
|
+
});
|
|
103
|
+
describe('split without cmSpendMax', () => {
|
|
104
|
+
it('should split 0 to cm: 0, nant: 0', () => {
|
|
105
|
+
toStrictEqual(getSplitting(0, { cm: 0, nant: 0 }, 0), { nant: 0, cm: 0 });
|
|
106
|
+
});
|
|
107
|
+
it('should NOT split 1 with no funds', () => {
|
|
108
|
+
expect(() => getSplitting(1, { cm: 0, nant: 0 }, 0))
|
|
109
|
+
.toThrow("Missing 1 to complete amount");
|
|
110
|
+
});
|
|
111
|
+
// Only Cm
|
|
112
|
+
it('should split 1 to cm: 1, nant: 0 with bal cm: 2, nant: 0', () => {
|
|
113
|
+
toStrictEqual(getSplitting(1, { cm: 2, nant: 0 }, 0), { nant: 0, cm: 1 });
|
|
114
|
+
});
|
|
115
|
+
it('should split 2 to cm: 2, nant: 0 with bal cm: 2, nant: 0', () => {
|
|
116
|
+
toStrictEqual(getSplitting(2, { cm: 2, nant: 0 }, 0), { nant: 0, cm: 2 });
|
|
117
|
+
});
|
|
118
|
+
it('should NOT split 3 with bal cm: 2, nant: 0', () => {
|
|
119
|
+
expect(() => getSplitting(3, { cm: 2, nant: 0 }, 0))
|
|
120
|
+
.toThrow("Missing 1 to complete amount");
|
|
121
|
+
});
|
|
122
|
+
// Only Nant
|
|
123
|
+
it('should split 1 to cm: 0, nant: 1 with bal cm: 0, nant: 2', () => {
|
|
124
|
+
toStrictEqual(getSplitting(1, { cm: 0, nant: 2 }, 0), { nant: 1, cm: 0 });
|
|
125
|
+
});
|
|
126
|
+
it('should split 2 to cm: 0, nant: 2 with bal cm: 0, nant: 2', () => {
|
|
127
|
+
toStrictEqual(getSplitting(2, { cm: 0, nant: 2 }, 0), { nant: 2, cm: 0 });
|
|
128
|
+
});
|
|
129
|
+
it('should NOT split 3 with bal cm: 0, nant: 2', () => {
|
|
130
|
+
expect(() => getSplitting(3, { cm: 0, nant: 2 }, 0))
|
|
131
|
+
.toThrow("Missing 1 to complete amount");
|
|
132
|
+
});
|
|
133
|
+
// Both Nant and Cm
|
|
134
|
+
it('should split 2 to cm: 1, nant: 1 with bal cm: 1, nant: 1', () => {
|
|
135
|
+
toStrictEqual(getSplitting(2, { cm: 1, nant: 1 }, 0), { nant: 1, cm: 1 });
|
|
136
|
+
});
|
|
137
|
+
it('should split 2 to cm: 0, nant: 2 with bal cm: 0, nant: 2 (limSrcCm: -2)', () => {
|
|
138
|
+
toStrictEqual(getSplitting(2, { cm: 0, nant: 2 }, -2), { nant: 2, cm: 0 });
|
|
139
|
+
});
|
|
140
|
+
it('should split 2 to cm: 1, nant: 1 with bal cm: 0, nant: 1 (limSrcCm: -1)', () => {
|
|
141
|
+
toStrictEqual(getSplitting(2, { cm: 0, nant: 1 }, -1), { nant: 1, cm: 1 });
|
|
142
|
+
});
|
|
143
|
+
it('should NOT split 3 with bal cm: 0, nant: 1 (limSrcCm: -1)', () => {
|
|
144
|
+
expect(() => getSplitting(3, { cm: 0, nant: 1 }, -1))
|
|
145
|
+
.toThrow("Missing 1 to complete amount");
|
|
146
|
+
});
|
|
147
|
+
it('should split 3 to cm: 2, nant: 1 with bal cm: 1, nant: 1 (limSrcCm: -1)', () => {
|
|
148
|
+
toStrictEqual(getSplitting(3, { cm: 1, nant: 1 }, -1), { nant: 1, cm: 2 });
|
|
149
|
+
});
|
|
150
|
+
// Negative cm bal and limSrcCm
|
|
151
|
+
it('should split 1 to cm: -1, nant: 0 with bal cm: -1, nant: 0 (limSrcCm: -2)', () => {
|
|
152
|
+
toStrictEqual(getSplitting(1, { cm: -1, nant: 0 }, -2), { nant: 0, cm: 1 });
|
|
153
|
+
});
|
|
154
|
+
it('should NOT split 2 with bal cm: -1, nant: 0 (limSrcCm: -2)', () => {
|
|
155
|
+
expect(() => getSplitting(2, { cm: -1, nant: 0 }, -2))
|
|
156
|
+
.toThrow("Missing 1 to complete amount");
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
describe('split with cmSpendMax', () => {
|
|
160
|
+
it('should split 0 to cm: 0, nant: 0 (cmSpendMax: 0)', () => {
|
|
161
|
+
toStrictEqual(getSplitting(0, { cm: 0, nant: 0 }, 0, 0), { nant: 0, cm: 0 });
|
|
162
|
+
});
|
|
163
|
+
it('should split 0 to cm: 0, nant: 0 (cmSpendMax: 1)', () => {
|
|
164
|
+
toStrictEqual(getSplitting(0, { cm: 0, nant: 0 }, 0, 0), { nant: 0, cm: 0 });
|
|
165
|
+
});
|
|
166
|
+
it('should NOT split 1 with no funds (cmSpendMax: 1)', () => {
|
|
167
|
+
expect(() => getSplitting(1, { cm: 0, nant: 0 }, 0, 1))
|
|
168
|
+
.toThrow("Missing 1 to complete amount");
|
|
169
|
+
});
|
|
170
|
+
it('should NOT split 1 with no funds (cmSpendMax: 0)', () => {
|
|
171
|
+
expect(() => getSplitting(1, { cm: 0, nant: 0 }, 0, 0))
|
|
172
|
+
.toThrow("Missing 1 to complete amount");
|
|
173
|
+
});
|
|
174
|
+
// Only Cm
|
|
175
|
+
it('should split 1 to cm: 1, nant: 0 with bal cm: 2, nant: 0 (cmSpendMax: 1)', () => {
|
|
176
|
+
toStrictEqual(getSplitting(1, { cm: 2, nant: 0 }, 0, 1), { nant: 0, cm: 1 });
|
|
177
|
+
});
|
|
178
|
+
it('should split 2 to cm: 2, nant: 0 with bal cm: 2, nant: 0 (cmSpendMax: 2)', () => {
|
|
179
|
+
toStrictEqual(getSplitting(2, { cm: 2, nant: 0 }, 0, 2), { nant: 0, cm: 2 });
|
|
180
|
+
});
|
|
181
|
+
it('should NOT split 2 to cm: 2, nant: 0 with bal cm: 2, nant: 0 (cmSpendMax: 1)', () => {
|
|
182
|
+
expect(() => getSplitting(2, { cm: 2, nant: 0 }, 0, 1))
|
|
183
|
+
.toThrow("Cm spend limit preventing to complete amount (remaining: 1)");
|
|
184
|
+
});
|
|
185
|
+
it('should NOT split 3 with bal cm: 2, nant: 0 (cmSpendMax: 5)', () => {
|
|
186
|
+
expect(() => getSplitting(3, { cm: 2, nant: 0 }, 0, 5))
|
|
187
|
+
.toThrow("Missing 1 to complete amount");
|
|
188
|
+
});
|
|
189
|
+
it('should NOT split 3 with bal cm: 2, nant: 0 (cmSpendMax: 2)', () => {
|
|
190
|
+
expect(() => getSplitting(3, { cm: 2, nant: 0 }, 0, 2))
|
|
191
|
+
.toThrow("Missing 1 to complete amount");
|
|
192
|
+
});
|
|
193
|
+
it('should NOT split 3 with bal cm: 2, nant: 0 (cmSpendMax: 1)', () => {
|
|
194
|
+
expect(() => getSplitting(3, { cm: 2, nant: 0 }, 0, 1))
|
|
195
|
+
.toThrow("Missing 1 to complete amount");
|
|
196
|
+
});
|
|
197
|
+
// Only Nant
|
|
198
|
+
it('should split 1 to cm: 0, nant: 1 with bal cm: 0, nant: 2 (cmSpendMax: 0)', () => {
|
|
199
|
+
toStrictEqual(getSplitting(1, { cm: 0, nant: 2 }, 0, 0), { nant: 1, cm: 0 });
|
|
200
|
+
});
|
|
201
|
+
it('should split 2 to cm: 0, nant: 2 with bal cm: 0, nant: 2 (cmSpendMax: 1)', () => {
|
|
202
|
+
toStrictEqual(getSplitting(2, { cm: 0, nant: 2 }, 0, 1), { nant: 2, cm: 0 });
|
|
203
|
+
});
|
|
204
|
+
it('should NOT split 3 with bal cm: 0, nant: 2 (cmSpendMax: 0)', () => {
|
|
205
|
+
expect(() => getSplitting(3, { cm: 0, nant: 2 }, 0, 0))
|
|
206
|
+
.toThrow("Missing 1 to complete amount");
|
|
207
|
+
});
|
|
208
|
+
// Both Nant and Cm
|
|
209
|
+
it('should split 2 to cm: 1, nant: 1 with bal cm: 1, nant: 1 (cmSpendMax: 1)', () => {
|
|
210
|
+
toStrictEqual(getSplitting(2, { cm: 1, nant: 1 }, 0, 1), { nant: 1, cm: 1 });
|
|
211
|
+
});
|
|
212
|
+
it('should NOT split 2 to cm: 1, nant: 1 with bal cm: 1, nant: 1 (cmSpendMax: 0)', () => {
|
|
213
|
+
expect(() => getSplitting(2, { cm: 1, nant: 1 }, 0, 0))
|
|
214
|
+
.toThrow("Cm spend limit preventing to complete amount (remaining: 1)");
|
|
215
|
+
});
|
|
216
|
+
it('should split 2 to cm: 1, nant: 1 with bal cm: 0, nant: 1 (limSrcCm: -1, cmSpendMax: 1)', () => {
|
|
217
|
+
toStrictEqual(getSplitting(2, { cm: 0, nant: 1 }, -1, 1), { nant: 1, cm: 1 });
|
|
218
|
+
});
|
|
219
|
+
it('should NOT split 2 to cm: 1, nant: 1 with bal cm: 0, nant: 1 (limSrcCm: -1, cmSpendMax: 0)', () => {
|
|
220
|
+
expect(() => getSplitting(2, { cm: 0, nant: 1 }, -1, 0))
|
|
221
|
+
.toThrow("Cm spend limit preventing to complete amount (remaining: 1)");
|
|
222
|
+
});
|
|
223
|
+
it('should NOT split 3 with bal cm: 0, nant: 1 (limSrcCm: -1, cmSpendMax: 5)', () => {
|
|
224
|
+
expect(() => getSplitting(3, { cm: 0, nant: 1 }, -1, 5))
|
|
225
|
+
.toThrow("Missing 1 to complete amount");
|
|
226
|
+
});
|
|
227
|
+
it('should NOT split 3 with bal cm: 0, nant: 1 (limSrcCm: -1, cmSpendMax: 0)', () => {
|
|
228
|
+
expect(() => getSplitting(3, { cm: 0, nant: 1 }, -1, 0))
|
|
229
|
+
.toThrow("Missing 1 to complete amount");
|
|
230
|
+
});
|
|
231
|
+
it('should split 3 to cm: 2, nant: 1 with bal cm: 1, nant: 1 (limSrcCm: -1, cmSpendMax: 2)', () => {
|
|
232
|
+
toStrictEqual(getSplitting(3, { cm: 1, nant: 1 }, -1, 2), { nant: 1, cm: 2 });
|
|
233
|
+
});
|
|
234
|
+
it('should NOT split 3 to cm: 2, nant: 1 with bal cm: 1, nant: 1 (limSrcCm: -1, cmSpendMax: 1)', () => {
|
|
235
|
+
expect(() => getSplitting(3, { cm: 1, nant: 1 }, -1, 1))
|
|
236
|
+
.toThrow("Cm spend limit preventing to complete amount (remaining: 1)");
|
|
237
|
+
});
|
|
238
|
+
// If the recipient can't receive cm, then pay with nant if possible.
|
|
239
|
+
it('should split 2 to cm: 0, nant: 2 with bal cm: 2, nant: 2 (limSrcCm: 0, cmSpendMax: 0)', () => {
|
|
240
|
+
toStrictEqual(getSplitting(2, { cm: 2, nant: 2 }, 0, 0), { nant: 2, cm: 0 });
|
|
241
|
+
});
|
|
242
|
+
it('should split 3 to cm: 1, nant: 2 with bal cm: 2, nant: 2 (limSrcCm: 0, cmSpendMax: 1)', () => {
|
|
243
|
+
toStrictEqual(getSplitting(3, { cm: 2, nant: 2 }, 0, 1), { nant: 2, cm: 1 });
|
|
244
|
+
});
|
|
245
|
+
it('should split 3 to cm: 2, nant: 2 with bal cm: 2, nant: 2 (limSrcCm: 0, cmSpendMax: 2)', () => {
|
|
246
|
+
toStrictEqual(getSplitting(3, { cm: 2, nant: 2 }, 0, 2), { nant: 1, cm: 2 });
|
|
247
|
+
});
|
|
248
|
+
// Negative cm bal and limSrcCm
|
|
249
|
+
it('should split 1 to cm: -1, nant: 0 with bal cm: -1, nant: 0 (limSrcCm: -2, cmSpendMax: 1)', () => {
|
|
250
|
+
toStrictEqual(getSplitting(1, { cm: -1, nant: 0 }, -2, 1), { nant: 0, cm: 1 });
|
|
251
|
+
});
|
|
252
|
+
it('should NOT split 2 with bal cm: -1, nant: 0 (limSrcCm: -2, cmSpendMax: 2)', () => {
|
|
253
|
+
expect(() => getSplitting(2, { cm: -1, nant: 0 }, -2, 2))
|
|
254
|
+
.toThrow("Missing 1 to complete amount");
|
|
255
|
+
});
|
|
256
|
+
it('should NOT split 2 with bal cm: -1, nant: 0 (limSrcCm: -2, cmSpendMax: 0)', () => {
|
|
257
|
+
expect(() => getSplitting(2, { cm: -1, nant: 0 }, -2, 2))
|
|
258
|
+
.toThrow("Missing 1 to complete amount");
|
|
259
|
+
});
|
|
260
|
+
it('should NOT split 2 with bal cm: -1, nant: 0 (limSrcCm: -3, cmSpendMax: 1)', () => {
|
|
261
|
+
expect(() => getSplitting(2, { cm: -1, nant: 0 }, -3, 1))
|
|
262
|
+
.toThrow("Cm spend limit preventing to complete amount (remaining: 1)");
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
testSuite();
|
|
268
|
+
testSuite(BigInt, "BigInt");
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=utils.js.map
|