@com-chain/jsc3l 2.0.1-rc.19 → 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/build/bcRead.d.ts +2 -2
- package/build/bcRead.js +12 -12
- package/build/bcRead.js.map +1 -1
- package/build/bcTransaction.d.ts +6 -1
- package/build/bcTransaction.js +87 -33
- package/build/bcTransaction.js.map +1 -1
- package/build/connection.js +1 -1
- package/build/connection.js.map +1 -1
- package/build/customization.js +2 -4
- package/build/customization.js.map +1 -1
- package/build/ethereum/ethFuncs.js +3 -3
- package/build/ethereum/ethFuncs.js.map +1 -1
- package/build/ethereum/myetherwallet.d.ts +1 -1
- package/build/index.d.ts +2 -0
- package/build/index.js +3 -2
- package/build/index.js.map +1 -1
- package/build/memo.js +6 -3
- package/build/memo.js.map +1 -1
- package/build/rest/ajaxReq.js +1 -1
- 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/utils.d.ts +15 -0
- package/build/utils.js +270 -0
- package/build/utils.js.map +1 -0
- package/build/wallet.js +11 -6
- package/build/wallet.js.map +1 -1
- package/package.json +2 -2
- package/src/bcRead.ts +19 -12
- package/src/bcTransaction.ts +87 -39
- package/src/ethereum/ethFuncs.ts +3 -3
- package/src/index.ts +2 -1
- package/src/utils.ts +300 -0
- package/tests/environment.ts +27 -0
- package/tests/setup.ts +12 -0
- package/tsconfig.json +1 -1
- package/vitest.config.ts +2 -0
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,CAAC;QAC9B,CAAC;QAAA,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACjD,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,OAAO,CAAA;QAClB,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAClC;QAAA,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9D,CAAC;SAAM,CAAC;QACN,mBAAmB;QACnB,IAAI,GAAG,EAAE,CAAA;QACT,IAAI,GAAG,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAA;QAC/D,CAAC;QACD,CAAC;QAAA,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAClD,CAAC;SAAM,CAAC;QACN,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,IAAI,GAAG,EAAE,CAAA;QACX,CAAC;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChC,IAAI,GAAG,GAAG,CAAA;QACZ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,8CAA8C,QAAQ,EAAE,CACzD,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO;QACL,QAAQ;QACR,IAAI;QACJ,IAAI;QACJ,IAAI;KACL,CAAA;AACH,CAAC;AAGD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAgB,YAAY;IAIxC,KAAK,CAAC,OAAO,CAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAQ;QAChD,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7D,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;QACrD,CAAC;QAED,IAAI,QAAQ,
|
|
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,CAAC;QAC9B,CAAC;QAAA,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACjD,CAAC;SAAM,CAAC;QACN,QAAQ,GAAG,OAAO,CAAA;QAClB,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAC1C,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAClC;QAAA,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IAC9D,CAAC;SAAM,CAAC;QACN,mBAAmB;QACnB,IAAI,GAAG,EAAE,CAAA;QACT,IAAI,GAAG,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,EAAE,CAAC,CAAA;QAC/D,CAAC;QACD,CAAC;QAAA,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAClD,CAAC;SAAM,CAAC;QACN,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACxB,IAAI,GAAG,EAAE,CAAA;QACX,CAAC;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChC,IAAI,GAAG,GAAG,CAAA;QACZ,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,8CAA8C,QAAQ,EAAE,CACzD,CAAA;QACH,CAAC;IACH,CAAC;IACD,OAAO;QACL,QAAQ;QACR,IAAI;QACJ,IAAI;QACJ,IAAI;KACL,CAAA;AACH,CAAC;AAGD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAgB,YAAY;IAIxC,KAAK,CAAC,OAAO,CAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAQ;QAChD,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7D,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;QACrD,CAAC;QAED,IAAI,QAAQ,GAAG;YACb,MAAM;YACN,IAAI,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;YACpC,GAAG,IAAI;YACP,GAAG,iBAAiB,CAAC,GAAG,CAAC;SAC1B,CAAA;QACD,OAAO,MAAY,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;IAC/C,CAAC;IAED,GAAG,CAAE,GAAG,IAAW,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAA,CAAC,CAAC;IAC5D,IAAI,CAAE,GAAG,IAAW,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA,CAAC,CAAC;CAC/D"}
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/build/wallet.js
CHANGED
|
@@ -34,18 +34,18 @@ export default class MessagingWalletAbstract extends Wallet {
|
|
|
34
34
|
}
|
|
35
35
|
async ensureWalletMessageKey() {
|
|
36
36
|
const remoteKey = await this.ajaxReq.getMessageKey(this.getAddressString(), true);
|
|
37
|
-
const walletMessageKey = this
|
|
37
|
+
const walletMessageKey = this?.message_key;
|
|
38
38
|
if (typeof remoteKey.public_message_key !== 'undefined') {
|
|
39
39
|
this.message_key = {
|
|
40
40
|
pub: remoteKey.public_message_key,
|
|
41
41
|
priv: remoteKey.private_message_key,
|
|
42
42
|
};
|
|
43
|
-
if (
|
|
43
|
+
if (walletMessageKey?.pub !== remoteKey.public_message_key) {
|
|
44
44
|
return 'REPLACED_WITH_REMOTE';
|
|
45
45
|
}
|
|
46
46
|
return;
|
|
47
47
|
}
|
|
48
|
-
if (!
|
|
48
|
+
if (!walletMessageKey?.pub || !walletMessageKey?.priv) {
|
|
49
49
|
this.message_key = this.newMessageKey();
|
|
50
50
|
this.publishMessageKey();
|
|
51
51
|
return 'CREATED_NEW';
|
|
@@ -133,9 +133,14 @@ export default class MessagingWalletAbstract extends Wallet {
|
|
|
133
133
|
// QR Code helpers
|
|
134
134
|
//
|
|
135
135
|
makeSignedQRContent(obj, pubKey) {
|
|
136
|
-
return makeSignedQRContent(
|
|
137
|
-
|
|
138
|
-
|
|
136
|
+
return makeSignedQRContent({
|
|
137
|
+
server: this.currencyName,
|
|
138
|
+
address: this.getAddressString(),
|
|
139
|
+
...obj,
|
|
140
|
+
...pubKey && {
|
|
141
|
+
message_key: cipherMsg(pubKey, this.messageKeysFromWallet())
|
|
142
|
+
},
|
|
143
|
+
}, this.privKey);
|
|
139
144
|
}
|
|
140
145
|
makeSignedQRFragments(obj, fragmentCount, pubKey) {
|
|
141
146
|
return makeSignedQRFragments(this.makeSignedQRContent(obj, pubKey), fragmentCount);
|
package/build/wallet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EAAY,mBAAmB,EAAE,qBAAqB,EACpE,MAAM,MAAM,CAAA;AACb,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,MAAM,MAAM,0BAA0B,CAAA;AAG7C,MAAM,CAAC,OAAO,OAAgB,uBAAwB,SAAQ,MAAM;IAApE;;QAME,gBAAW,GAAuC,IAAI,CAAA;IA+KxD,CAAC;IA7KQ,MAAM,CAAC,KAAK,CAAC,YAAY;QAC9B,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAA;QACzB,MAAM,MAAM,CAAC,sBAAsB,EAAE,CAAA;QACrC,OAAO,MAAM,CAAA;IACf,CAAC;IAEO,iBAAiB;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7B,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAChC,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG;YACxC,mBAAmB,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI;SAC3C,CAAC,CAAA;QAEF,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;IAC3E,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAE,KAAK,EAAE,OAAO;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;QACvC,MAAM,MAAM,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,CAC3B,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAA;QAEnE,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAA;QACxC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,CAAA;QAEpC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;YAC7B,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YACzD,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;SACtD,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;IAC5E,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAChD,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,CAAA;QAChC,MAAM,gBAAgB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@com-chain/jsc3l",
|
|
3
|
-
"version": "2.0.1-rc.
|
|
3
|
+
"version": "2.0.1-rc.20",
|
|
4
4
|
"description": "JavaScript Com-Chain Communication Library",
|
|
5
5
|
"main": "build/index.js",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"test": "vitest run
|
|
7
|
+
"test": "vitest run",
|
|
8
8
|
"build": "tsc",
|
|
9
9
|
"watch": "tsc -w"
|
|
10
10
|
},
|
package/src/bcRead.ts
CHANGED
|
@@ -108,11 +108,11 @@ if (import.meta.vitest) {
|
|
|
108
108
|
expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000000800000000000'))
|
|
109
109
|
.toBe('1407374883553.28')
|
|
110
110
|
});
|
|
111
|
-
it('should decode 0x00...00_8000_0000_0001 to "-1407374883553.27" (
|
|
111
|
+
it('should decode 0x00...00_8000_0000_0001 to "-1407374883553.27" (lowest negative number)', () => {
|
|
112
112
|
expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000000800000000001'))
|
|
113
113
|
.toBe('-1407374883553.27')
|
|
114
114
|
});
|
|
115
|
-
it('should decode 0x00...
|
|
115
|
+
it('should decode 0x00...00_ffff_ffff_ffff to "-0.01" (max negative number)', () => {
|
|
116
116
|
expect(decodeData('number/100', '0x0000000000000000000000000000000000000000000000000000ffffffffffff'))
|
|
117
117
|
.toBe('-0.01')
|
|
118
118
|
});
|
|
@@ -122,7 +122,7 @@ if (import.meta.vitest) {
|
|
|
122
122
|
});
|
|
123
123
|
});
|
|
124
124
|
describe('decode strings', () => {
|
|
125
|
-
it('should decode "0x00...020_0...0_" to "2.0"
|
|
125
|
+
it('should decode "0x00...020_0...0_" to "2.0"', () => {
|
|
126
126
|
expect(decodeData(
|
|
127
127
|
'string', '0x' +
|
|
128
128
|
'0000000000000000000000000000000000000000000000000000000000000020' + // data location
|
|
@@ -185,18 +185,20 @@ export default abstract class BcReadAbstract {
|
|
|
185
185
|
}
|
|
186
186
|
|
|
187
187
|
async getAmountForElement (
|
|
188
|
-
contract, functionAddress, callerAddress, elementAddress
|
|
188
|
+
contract, functionAddress, callerAddress, elementAddress,
|
|
189
|
+
blockNb: string | number = 'pending') {
|
|
189
190
|
const data = await this.read(
|
|
190
191
|
contract, functionAddress, [
|
|
191
192
|
getNakedAddress(callerAddress),
|
|
192
193
|
getNakedAddress(elementAddress)
|
|
193
|
-
])
|
|
194
|
+
], blockNb)
|
|
194
195
|
return decodeData('number/100', data)
|
|
195
196
|
}
|
|
196
197
|
|
|
197
198
|
async getElementInList (
|
|
198
199
|
contract, mapFunctionAddress, amountFunctionAddress,
|
|
199
|
-
callerAddress, index, list, indMin
|
|
200
|
+
callerAddress, index, list, indMin,
|
|
201
|
+
blockNb: string | number = 'pending') {
|
|
200
202
|
|
|
201
203
|
if (index < indMin) return list
|
|
202
204
|
|
|
@@ -204,9 +206,11 @@ export default abstract class BcReadAbstract {
|
|
|
204
206
|
contract, mapFunctionAddress, [
|
|
205
207
|
getNakedAddress(callerAddress),
|
|
206
208
|
padLeft(new BigNumber(index).toString(16), 64)
|
|
207
|
-
]
|
|
209
|
+
],
|
|
210
|
+
blockNb)
|
|
208
211
|
const amount = await this.getAmountForElement(
|
|
209
|
-
contract, amountFunctionAddress, callerAddress, data
|
|
212
|
+
contract, amountFunctionAddress, callerAddress, data,
|
|
213
|
+
blockNb)
|
|
210
214
|
|
|
211
215
|
const address = '0x' + data.substring(data.length - 40)
|
|
212
216
|
const element = { address, amount }
|
|
@@ -214,7 +218,8 @@ export default abstract class BcReadAbstract {
|
|
|
214
218
|
return this.getElementInList(
|
|
215
219
|
contract, mapFunctionAddress,
|
|
216
220
|
amountFunctionAddress, callerAddress, index - 1, list,
|
|
217
|
-
indMin
|
|
221
|
+
indMin,
|
|
222
|
+
blockNb)
|
|
218
223
|
}
|
|
219
224
|
|
|
220
225
|
}
|
|
@@ -273,7 +278,7 @@ const ListFunction = {
|
|
|
273
278
|
for (const key in ListFunction) {
|
|
274
279
|
const configList = ListFunction[key]
|
|
275
280
|
BcReadAbstract.prototype[`get${key}List`] =
|
|
276
|
-
async function (walletAddress, indMin, indMax) {
|
|
281
|
+
async function (walletAddress, indMin, indMax, blockNb: string | number = 'pending') {
|
|
277
282
|
// Simple protection against ill inputs on indMin and indMax and to
|
|
278
283
|
// avoid unwanted infinite loops
|
|
279
284
|
indMax = indMax || 0
|
|
@@ -281,7 +286,8 @@ for (const key in ListFunction) {
|
|
|
281
286
|
const data = await this.read(
|
|
282
287
|
this.contracts[1], `0x${configList.count}`, [
|
|
283
288
|
getNakedAddress(walletAddress)
|
|
284
|
-
]
|
|
289
|
+
],
|
|
290
|
+
blockNb)
|
|
285
291
|
const count = decodeData('number', data)
|
|
286
292
|
const list = []
|
|
287
293
|
const index = Math.min(count - 1, indMax)
|
|
@@ -292,7 +298,8 @@ for (const key in ListFunction) {
|
|
|
292
298
|
walletAddress,
|
|
293
299
|
index,
|
|
294
300
|
list,
|
|
295
|
-
indMin
|
|
301
|
+
indMin,
|
|
302
|
+
blockNb)
|
|
296
303
|
}
|
|
297
304
|
}
|
|
298
305
|
|