@bitgo/sdk-coin-starknet 0.0.1 → 1.2.0
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/LICENSE +191 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +20 -0
- package/dist/src/lib/constants.d.ts +13 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +25 -0
- package/dist/src/lib/iface.d.ts +78 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +9 -0
- package/dist/src/lib/index.d.ts +9 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +53 -0
- package/dist/src/lib/keyPair.d.ts +9 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -0
- package/dist/src/lib/keyPair.js +48 -0
- package/dist/src/lib/transaction.d.ts +23 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +145 -0
- package/dist/src/lib/transactionBuilder.d.ts +43 -0
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilder.js +158 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +16 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilderFactory.js +44 -0
- package/dist/src/lib/transferBuilder.d.ts +21 -0
- package/dist/src/lib/transferBuilder.d.ts.map +1 -0
- package/dist/src/lib/transferBuilder.js +88 -0
- package/dist/src/lib/utils.d.ts +104 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +290 -0
- package/dist/src/register.d.ts +3 -0
- package/dist/src/register.d.ts.map +1 -0
- package/dist/src/register.js +10 -0
- package/dist/src/starknet.d.ts +35 -0
- package/dist/src/starknet.d.ts.map +1 -0
- package/dist/src/starknet.js +127 -0
- package/dist/test/resources/starknet.d.ts +98 -0
- package/dist/test/resources/starknet.d.ts.map +1 -0
- package/dist/test/resources/starknet.js +104 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +56 -0
- package/dist/test/unit/starknet.d.ts +2 -0
- package/dist/test/unit/starknet.d.ts.map +1 -0
- package/dist/test/unit/starknet.js +126 -0
- package/dist/test/unit/transaction.d.ts +2 -0
- package/dist/test/unit/transaction.d.ts.map +1 -0
- package/dist/test/unit/transaction.js +53 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transactionBuilderFactory.js +74 -0
- package/dist/test/unit/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transferBuilder.js +208 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +260 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +52 -10
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const should_1 = __importDefault(require("should"));
|
|
7
|
+
const statics_1 = require("@bitgo/statics");
|
|
8
|
+
const transaction_1 = require("../../src/lib/transaction");
|
|
9
|
+
const starknet_1 = require("../resources/starknet");
|
|
10
|
+
describe('Starknet Transaction', () => {
|
|
11
|
+
describe('Parse unsigned transaction', () => {
|
|
12
|
+
it('should parse unsigned transfer hex and extract correct fields', async () => {
|
|
13
|
+
const coinConfig = statics_1.coins.get('starknet');
|
|
14
|
+
const tx = new transaction_1.Transaction(coinConfig);
|
|
15
|
+
await tx.fromRawTransaction(starknet_1.rawTx.transfer.unsigned);
|
|
16
|
+
const json = tx.toJson();
|
|
17
|
+
json.sender.should.equal(starknet_1.Accounts.account1.address);
|
|
18
|
+
should_1.default.exist(json.amount);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
describe('Parse signed transaction', () => {
|
|
22
|
+
it('should parse signed transfer hex and extract correct fields', async () => {
|
|
23
|
+
const coinConfig = statics_1.coins.get('starknet');
|
|
24
|
+
const tx = new transaction_1.Transaction(coinConfig);
|
|
25
|
+
await tx.fromRawTransaction(starknet_1.rawTx.transfer.signed);
|
|
26
|
+
const json = tx.toJson();
|
|
27
|
+
json.sender.should.equal(starknet_1.Accounts.account1.address);
|
|
28
|
+
should_1.default.exist(json.amount);
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
describe('Transaction Explanation', () => {
|
|
32
|
+
it('should explain a parsed transaction', async () => {
|
|
33
|
+
const coinConfig = statics_1.coins.get('starknet');
|
|
34
|
+
const tx = new transaction_1.Transaction(coinConfig);
|
|
35
|
+
await tx.fromRawTransaction(starknet_1.rawTx.transfer.signed);
|
|
36
|
+
const exp = tx.explainTransaction();
|
|
37
|
+
should_1.default.exist(exp);
|
|
38
|
+
should_1.default.exist(exp.outputs);
|
|
39
|
+
exp.outputs.length.should.be.greaterThan(0);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
describe('toBroadcastFormat', () => {
|
|
43
|
+
it('should produce non-empty broadcast format for unsigned tx', async () => {
|
|
44
|
+
const coinConfig = statics_1.coins.get('starknet');
|
|
45
|
+
const tx = new transaction_1.Transaction(coinConfig);
|
|
46
|
+
await tx.fromRawTransaction(starknet_1.rawTx.transfer.unsigned);
|
|
47
|
+
const payload = tx.toBroadcastFormat();
|
|
48
|
+
should_1.default.exist(payload);
|
|
49
|
+
payload.length.should.be.greaterThan(0);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsNENBQXVDO0FBQ3ZDLDJEQUF3RDtBQUN4RCxvREFBd0Q7QUFFeEQsUUFBUSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsRUFBRTtJQUNwQyxRQUFRLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxFQUFFO1FBQzFDLEVBQUUsQ0FBQywrREFBK0QsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM3RSxNQUFNLFVBQVUsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sRUFBRSxHQUFHLElBQUkseUJBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN2QyxNQUFNLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUVyRCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLDBCQUEwQixFQUFFLEdBQUcsRUFBRTtRQUN4QyxFQUFFLENBQUMsNkRBQTZELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDM0UsTUFBTSxVQUFVLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN6QyxNQUFNLEVBQUUsR0FBRyxJQUFJLHlCQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdkMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUMsZ0JBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbkQsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxtQkFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNwRCxnQkFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxHQUFHLEVBQUU7UUFDdkMsRUFBRSxDQUFDLHFDQUFxQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ25ELE1BQU0sVUFBVSxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDekMsTUFBTSxFQUFFLEdBQUcsSUFBSSx5QkFBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sRUFBRSxDQUFDLGtCQUFrQixDQUFDLGdCQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRW5ELE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQ3BDLGdCQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2xCLGdCQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQixHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsRUFBRTtRQUNqQyxFQUFFLENBQUMsMkRBQTJELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDekUsTUFBTSxVQUFVLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN6QyxNQUFNLEVBQUUsR0FBRyxJQUFJLHlCQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdkMsTUFBTSxFQUFFLENBQUMsa0JBQWtCLENBQUMsZ0JBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFckQsTUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDdkMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyByYXdUeCwgQWNjb3VudHMgfSBmcm9tICcuLi9yZXNvdXJjZXMvc3RhcmtuZXQnO1xuXG5kZXNjcmliZSgnU3RhcmtuZXQgVHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gIGRlc2NyaWJlKCdQYXJzZSB1bnNpZ25lZCB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHBhcnNlIHVuc2lnbmVkIHRyYW5zZmVyIGhleCBhbmQgZXh0cmFjdCBjb3JyZWN0IGZpZWxkcycsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNvaW5Db25maWcgPSBjb2lucy5nZXQoJ3N0YXJrbmV0Jyk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2luQ29uZmlnKTtcbiAgICAgIGF3YWl0IHR4LmZyb21SYXdUcmFuc2FjdGlvbihyYXdUeC50cmFuc2Zlci51bnNpZ25lZCk7XG5cbiAgICAgIGNvbnN0IGpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIGpzb24uc2VuZGVyLnNob3VsZC5lcXVhbChBY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5leGlzdChqc29uLmFtb3VudCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdQYXJzZSBzaWduZWQgdHJhbnNhY3Rpb24nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBwYXJzZSBzaWduZWQgdHJhbnNmZXIgaGV4IGFuZCBleHRyYWN0IGNvcnJlY3QgZmllbGRzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldCgnc3RhcmtuZXQnKTtcbiAgICAgIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKGNvaW5Db25maWcpO1xuICAgICAgYXdhaXQgdHguZnJvbVJhd1RyYW5zYWN0aW9uKHJhd1R4LnRyYW5zZmVyLnNpZ25lZCk7XG5cbiAgICAgIGNvbnN0IGpzb24gPSB0eC50b0pzb24oKTtcbiAgICAgIGpzb24uc2VuZGVyLnNob3VsZC5lcXVhbChBY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzKTtcbiAgICAgIHNob3VsZC5leGlzdChqc29uLmFtb3VudCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdUcmFuc2FjdGlvbiBFeHBsYW5hdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGV4cGxhaW4gYSBwYXJzZWQgdHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBjb2luQ29uZmlnID0gY29pbnMuZ2V0KCdzdGFya25ldCcpO1xuICAgICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oY29pbkNvbmZpZyk7XG4gICAgICBhd2FpdCB0eC5mcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHgudHJhbnNmZXIuc2lnbmVkKTtcblxuICAgICAgY29uc3QgZXhwID0gdHguZXhwbGFpblRyYW5zYWN0aW9uKCk7XG4gICAgICBzaG91bGQuZXhpc3QoZXhwKTtcbiAgICAgIHNob3VsZC5leGlzdChleHAub3V0cHV0cyk7XG4gICAgICBleHAub3V0cHV0cy5sZW5ndGguc2hvdWxkLmJlLmdyZWF0ZXJUaGFuKDApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndG9Ccm9hZGNhc3RGb3JtYXQnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBwcm9kdWNlIG5vbi1lbXB0eSBicm9hZGNhc3QgZm9ybWF0IGZvciB1bnNpZ25lZCB0eCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGNvaW5Db25maWcgPSBjb2lucy5nZXQoJ3N0YXJrbmV0Jyk7XG4gICAgICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbihjb2luQ29uZmlnKTtcbiAgICAgIGF3YWl0IHR4LmZyb21SYXdUcmFuc2FjdGlvbihyYXdUeC50cmFuc2Zlci51bnNpZ25lZCk7XG5cbiAgICAgIGNvbnN0IHBheWxvYWQgPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuICAgICAgc2hvdWxkLmV4aXN0KHBheWxvYWQpO1xuICAgICAgcGF5bG9hZC5sZW5ndGguc2hvdWxkLmJlLmdyZWF0ZXJUaGFuKDApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionBuilderFactory.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/transactionBuilderFactory.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const should_1 = __importDefault(require("should"));
|
|
7
|
+
const statics_1 = require("@bitgo/statics");
|
|
8
|
+
const transactionBuilderFactory_1 = require("../../../src/lib/transactionBuilderFactory");
|
|
9
|
+
const starknet_1 = require("../../resources/starknet");
|
|
10
|
+
describe('Starknet TransactionBuilderFactory', () => {
|
|
11
|
+
const coinConfig = statics_1.coins.get('starknet');
|
|
12
|
+
describe('getTransferBuilder', () => {
|
|
13
|
+
it('should return a transfer builder', () => {
|
|
14
|
+
const builder = new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig).getTransferBuilder();
|
|
15
|
+
should_1.default.exist(builder);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
describe('from', () => {
|
|
19
|
+
it('should rebuild unsigned tx from raw hex', async () => {
|
|
20
|
+
const builder = await new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig).from(starknet_1.rawTx.transfer.unsigned);
|
|
21
|
+
const tx = await builder.build();
|
|
22
|
+
const json = tx.toJson();
|
|
23
|
+
should_1.default.exist(json);
|
|
24
|
+
json.sender.should.equal(starknet_1.Accounts.account1.address);
|
|
25
|
+
});
|
|
26
|
+
it('should rebuild signed tx from raw hex', async () => {
|
|
27
|
+
const builder = await new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig).from(starknet_1.rawTx.transfer.signed);
|
|
28
|
+
const tx = await builder.build();
|
|
29
|
+
const json = tx.toJson();
|
|
30
|
+
should_1.default.exist(json);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
describe('Starknet TransferBuilder', () => {
|
|
35
|
+
const coinConfig = statics_1.coins.get('starknet');
|
|
36
|
+
const getBuilder = () => new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig).getTransferBuilder();
|
|
37
|
+
describe('Build unsigned transaction', () => {
|
|
38
|
+
it('should build an unsigned transfer with required fields', async () => {
|
|
39
|
+
const builder = getBuilder();
|
|
40
|
+
builder
|
|
41
|
+
.sender(starknet_1.Accounts.account1.address)
|
|
42
|
+
.receiverId(starknet_1.Accounts.account2.address)
|
|
43
|
+
.amount(starknet_1.TEST_AMOUNTS.small)
|
|
44
|
+
.nonce('0')
|
|
45
|
+
.chainId('0x534e5f5345504f4c4941');
|
|
46
|
+
const tx = await builder.build();
|
|
47
|
+
should_1.default.exist(tx);
|
|
48
|
+
const json = tx.toJson();
|
|
49
|
+
should_1.default.exist(json);
|
|
50
|
+
json.sender.should.equal(starknet_1.Accounts.account1.address);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe('Validation', () => {
|
|
54
|
+
it('should reject missing sender', async () => {
|
|
55
|
+
const builder = getBuilder();
|
|
56
|
+
builder.receiverId(starknet_1.Accounts.account2.address).amount(starknet_1.TEST_AMOUNTS.small).chainId('0x534e5f5345504f4c4941');
|
|
57
|
+
await builder.build().should.be.rejectedWith('Invalid or missing sender address');
|
|
58
|
+
});
|
|
59
|
+
it('should reject missing recipient', async () => {
|
|
60
|
+
const builder = getBuilder();
|
|
61
|
+
builder.sender(starknet_1.Accounts.account1.address).amount(starknet_1.TEST_AMOUNTS.small).nonce('0').chainId('0x534e5f5345504f4c4941');
|
|
62
|
+
await builder.build().should.be.rejectedWith('Receiver is required');
|
|
63
|
+
});
|
|
64
|
+
it('should reject invalid sender address', () => {
|
|
65
|
+
const builder = getBuilder();
|
|
66
|
+
should_1.default.throws(() => builder.sender('not_a_valid_address'));
|
|
67
|
+
});
|
|
68
|
+
it('should reject negative amount', () => {
|
|
69
|
+
const builder = getBuilder();
|
|
70
|
+
should_1.default.throws(() => builder.amount('-1'));
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC90cmFuc2FjdGlvbkJ1aWxkZXIvdHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUM1Qiw0Q0FBdUM7QUFDdkMsMEZBQXVGO0FBQ3ZGLHVEQUF5RTtBQUV6RSxRQUFRLENBQUMsb0NBQW9DLEVBQUUsR0FBRyxFQUFFO0lBQ2xELE1BQU0sVUFBVSxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFekMsUUFBUSxDQUFDLG9CQUFvQixFQUFFLEdBQUcsRUFBRTtRQUNsQyxFQUFFLENBQUMsa0NBQWtDLEVBQUUsR0FBRyxFQUFFO1lBQzFDLE1BQU0sT0FBTyxHQUFHLElBQUkscURBQXlCLENBQUMsVUFBVSxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMvRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7UUFDcEIsRUFBRSxDQUFDLHlDQUF5QyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3ZELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxxREFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUYsTUFBTSxFQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pCLGdCQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMs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bEgsTUFBTSxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7WUFDOUMsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7WUFDN0IsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsK0JBQStCLEVBQUUsR0FBRyxFQUFFO1lBQ3ZDLE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1lBQzdCLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkgfSBmcm9tICcuLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnknO1xuaW1wb3J0IHsgQWNjb3VudHMsIHJhd1R4LCBURVNUX0FNT1VOVFMgfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvc3RhcmtuZXQnO1xuXG5kZXNjcmliZSgnU3RhcmtuZXQgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeScsICgpID0+IHtcbiAgY29uc3QgY29pbkNvbmZpZyA9IGNvaW5zLmdldCgnc3RhcmtuZXQnKTtcblxuICBkZXNjcmliZSgnZ2V0VHJhbnNmZXJCdWlsZGVyJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgdHJhbnNmZXIgYnVpbGRlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2luQ29uZmlnKS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIHNob3VsZC5leGlzdChidWlsZGVyKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2Zyb20nLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCByZWJ1aWxkIHVuc2lnbmVkIHR4IGZyb20gcmF3IGhleCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBhd2FpdCBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2luQ29uZmlnKS5mcm9tKHJhd1R4LnRyYW5zZmVyLnVuc2lnbmVkKTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgYnVpbGRlci5idWlsZCgpO1xuICAgICAgY29uc3QganNvbiA9IHR4LnRvSnNvbigpO1xuICAgICAgc2hvdWxkLmV4aXN0KGpzb24pO1xuICAgICAganNvbi5zZW5kZXIuc2hvdWxkLmVxdWFsKEFjY291bnRzLmFjY291bnQxLmFkZHJlc3MpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWJ1aWxkIHNpZ25lZCB0eCBmcm9tIHJhdyBoZXgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBidWlsZGVyID0gYXdhaXQgbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbkNvbmZpZykuZnJvbShyYXdUeC50cmFuc2Zlci5zaWduZWQpO1xuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBjb25zdCBqc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZXhpc3QoanNvbik7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdTdGFya25ldCBUcmFuc2ZlckJ1aWxkZXInLCAoKSA9PiB7XG4gIGNvbnN0IGNvaW5Db25maWcgPSBjb2lucy5nZXQoJ3N0YXJrbmV0Jyk7XG5cbiAgY29uc3QgZ2V0QnVpbGRlciA9ICgpID0+IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5Db25maWcpLmdldFRyYW5zZmVyQnVpbGRlcigpO1xuXG4gIGRlc2NyaWJlKCdCdWlsZCB1bnNpZ25lZCB0cmFuc2FjdGlvbicsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGJ1aWxkIGFuIHVuc2lnbmVkIHRyYW5zZmVyIHdpdGggcmVxdWlyZWQgZmllbGRzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IGdldEJ1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLnNlbmRlcihBY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzKVxuICAgICAgICAucmVjZWl2ZXJJZChBY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzKVxuICAgICAgICAuYW1vdW50KFRFU1RfQU1PVU5UUy5zbWFsbClcbiAgICAgICAgLm5vbmNlKCcwJylcbiAgICAgICAgLmNoYWluSWQoJzB4NTM0ZTVmNTM0NTUwNGY0YzQ5NDEnKTtcblxuICAgICAgY29uc3QgdHggPSBhd2FpdCBidWlsZGVyLmJ1aWxkKCk7XG4gICAgICBzaG91bGQuZXhpc3QodHgpO1xuXG4gICAgICBjb25zdCBqc29uID0gdHgudG9Kc29uKCk7XG4gICAgICBzaG91bGQuZXhpc3QoanNvbik7XG4gICAgICBqc29uLnNlbmRlci5zaG91bGQuZXF1YWwoQWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdWYWxpZGF0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVqZWN0IG1pc3Npbmcgc2VuZGVyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IGdldEJ1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXIucmVjZWl2ZXJJZChBY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzKS5hbW91bnQoVEVTVF9BTU9VTlRTLnNtYWxsKS5jaGFpbklkKCcweDUzNGU1ZjUzNDU1MDRmNGM0OTQxJyk7XG4gICAgICBhd2FpdCBidWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnSW52YWxpZCBvciBtaXNzaW5nIHNlbmRlciBhZGRyZXNzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBtaXNzaW5nIHJlY2lwaWVudCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBnZXRCdWlsZGVyKCk7XG4gICAgICBidWlsZGVyLnNlbmRlcihBY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzKS5hbW91bnQoVEVTVF9BTU9VTlRTLnNtYWxsKS5ub25jZSgnMCcpLmNoYWluSWQoJzB4NTM0ZTVmNTM0NTUwNGY0YzQ5NDEnKTtcbiAgICAgIGF3YWl0IGJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKCdSZWNlaXZlciBpcyByZXF1aXJlZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgaW52YWxpZCBzZW5kZXIgYWRkcmVzcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBnZXRCdWlsZGVyKCk7XG4gICAgICBzaG91bGQudGhyb3dzKCgpID0+IGJ1aWxkZXIuc2VuZGVyKCdub3RfYV92YWxpZF9hZGRyZXNzJykpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZWplY3QgbmVnYXRpdmUgYW1vdW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgYnVpbGRlciA9IGdldEJ1aWxkZXIoKTtcbiAgICAgIHNob3VsZC50aHJvd3MoKCkgPT4gYnVpbGRlci5hbW91bnQoJy0xJykpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transferBuilder.d.ts","sourceRoot":"","sources":["../../../test/unit/transferBuilder.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const should_1 = __importDefault(require("should"));
|
|
7
|
+
const statics_1 = require("@bitgo/statics");
|
|
8
|
+
const transactionBuilderFactory_1 = require("../../src/lib/transactionBuilderFactory");
|
|
9
|
+
const starknet_1 = require("../resources/starknet");
|
|
10
|
+
describe('Starknet TransferBuilder', () => {
|
|
11
|
+
const coinConfig = statics_1.coins.get('starknet');
|
|
12
|
+
describe('Build transfer transaction', () => {
|
|
13
|
+
it('should build a transfer and produce a transactionHash', async () => {
|
|
14
|
+
const factory = new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig);
|
|
15
|
+
const builder = factory.getTransferBuilder();
|
|
16
|
+
builder
|
|
17
|
+
.sender(starknet_1.Accounts.account1.address)
|
|
18
|
+
.nonce('0x0')
|
|
19
|
+
.chainId(starknet_1.SandboxTransferData.chainId)
|
|
20
|
+
.receiverId(starknet_1.Accounts.account2.address)
|
|
21
|
+
.amount('1000000000000000000');
|
|
22
|
+
const tx = (await builder.build());
|
|
23
|
+
const data = tx.starknetTransactionData;
|
|
24
|
+
should_1.default.exist(data.transactionHash);
|
|
25
|
+
data.transactionHash.should.startWith('0x');
|
|
26
|
+
data.transactionHash.length.should.be.greaterThan(2);
|
|
27
|
+
});
|
|
28
|
+
it('should set signableHex from the Poseidon hash', async () => {
|
|
29
|
+
const factory = new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig);
|
|
30
|
+
const builder = factory.getTransferBuilder();
|
|
31
|
+
builder
|
|
32
|
+
.sender(starknet_1.Accounts.account1.address)
|
|
33
|
+
.nonce('0x0')
|
|
34
|
+
.chainId(starknet_1.SandboxTransferData.chainId)
|
|
35
|
+
.receiverId(starknet_1.Accounts.account2.address)
|
|
36
|
+
.amount('1000000000000000000');
|
|
37
|
+
const tx = (await builder.build());
|
|
38
|
+
tx.signableHex.should.equal(tx.starknetTransactionData.transactionHash);
|
|
39
|
+
tx.id.should.equal(tx.starknetTransactionData.transactionHash);
|
|
40
|
+
});
|
|
41
|
+
it('should produce different hashes for different recipients', async () => {
|
|
42
|
+
const factory = new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig);
|
|
43
|
+
const builder1 = factory.getTransferBuilder();
|
|
44
|
+
builder1
|
|
45
|
+
.sender(starknet_1.Accounts.account1.address)
|
|
46
|
+
.nonce('0x0')
|
|
47
|
+
.chainId(starknet_1.SandboxTransferData.chainId)
|
|
48
|
+
.receiverId(starknet_1.Accounts.account2.address)
|
|
49
|
+
.amount('1000000000000000000');
|
|
50
|
+
const tx1 = (await builder1.build());
|
|
51
|
+
const builder2 = factory.getTransferBuilder();
|
|
52
|
+
builder2
|
|
53
|
+
.sender(starknet_1.Accounts.account1.address)
|
|
54
|
+
.nonce('0x0')
|
|
55
|
+
.chainId(starknet_1.SandboxTransferData.chainId)
|
|
56
|
+
.receiverId(starknet_1.Accounts.account3.address)
|
|
57
|
+
.amount('1000000000000000000');
|
|
58
|
+
const tx2 = (await builder2.build());
|
|
59
|
+
tx1.signableHex.should.not.equal(tx2.signableHex);
|
|
60
|
+
});
|
|
61
|
+
it('should produce different hashes for different amounts', async () => {
|
|
62
|
+
const factory = new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig);
|
|
63
|
+
const builder1 = factory.getTransferBuilder();
|
|
64
|
+
builder1
|
|
65
|
+
.sender(starknet_1.Accounts.account1.address)
|
|
66
|
+
.nonce('0x0')
|
|
67
|
+
.chainId(starknet_1.SandboxTransferData.chainId)
|
|
68
|
+
.receiverId(starknet_1.Accounts.account2.address)
|
|
69
|
+
.amount('1000000000000000000');
|
|
70
|
+
const tx1 = (await builder1.build());
|
|
71
|
+
const builder2 = factory.getTransferBuilder();
|
|
72
|
+
builder2
|
|
73
|
+
.sender(starknet_1.Accounts.account1.address)
|
|
74
|
+
.nonce('0x0')
|
|
75
|
+
.chainId(starknet_1.SandboxTransferData.chainId)
|
|
76
|
+
.receiverId(starknet_1.Accounts.account2.address)
|
|
77
|
+
.amount('2000000000000000000');
|
|
78
|
+
const tx2 = (await builder2.build());
|
|
79
|
+
tx1.signableHex.should.not.equal(tx2.signableHex);
|
|
80
|
+
});
|
|
81
|
+
it('should include compiledCalldata in transaction data', async () => {
|
|
82
|
+
const factory = new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig);
|
|
83
|
+
const builder = factory.getTransferBuilder();
|
|
84
|
+
builder
|
|
85
|
+
.sender(starknet_1.Accounts.account1.address)
|
|
86
|
+
.nonce('0x0')
|
|
87
|
+
.chainId(starknet_1.SandboxTransferData.chainId)
|
|
88
|
+
.receiverId(starknet_1.Accounts.account2.address)
|
|
89
|
+
.amount('1000000000000000000');
|
|
90
|
+
const tx = (await builder.build());
|
|
91
|
+
const data = tx.starknetTransactionData;
|
|
92
|
+
should_1.default.exist(data.compiledCalldata);
|
|
93
|
+
data.compiledCalldata.length.should.be.greaterThan(0);
|
|
94
|
+
data.compiledCalldata[0].should.equal('0x1'); // 1 call
|
|
95
|
+
});
|
|
96
|
+
it('should include resourceBounds in transaction data', async () => {
|
|
97
|
+
const factory = new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig);
|
|
98
|
+
const builder = factory.getTransferBuilder();
|
|
99
|
+
builder
|
|
100
|
+
.sender(starknet_1.Accounts.account1.address)
|
|
101
|
+
.nonce('0x0')
|
|
102
|
+
.chainId(starknet_1.SandboxTransferData.chainId)
|
|
103
|
+
.receiverId(starknet_1.Accounts.account2.address)
|
|
104
|
+
.amount('1000000000000000000')
|
|
105
|
+
.resourceBounds(starknet_1.SandboxTransferData.resourceBounds);
|
|
106
|
+
const tx = (await builder.build());
|
|
107
|
+
const data = tx.starknetTransactionData;
|
|
108
|
+
should_1.default.exist(data.resourceBounds);
|
|
109
|
+
data.resourceBounds.l2_gas.max_amount.should.equal(starknet_1.SandboxTransferData.resourceBounds.l2_gas.max_amount);
|
|
110
|
+
});
|
|
111
|
+
it('should accept custom resource bounds and produce different hash', async () => {
|
|
112
|
+
const factory = new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig);
|
|
113
|
+
const builder1 = factory.getTransferBuilder();
|
|
114
|
+
builder1
|
|
115
|
+
.sender(starknet_1.Accounts.account1.address)
|
|
116
|
+
.nonce('0x0')
|
|
117
|
+
.chainId(starknet_1.SandboxTransferData.chainId)
|
|
118
|
+
.receiverId(starknet_1.Accounts.account2.address)
|
|
119
|
+
.amount('1000000000000000000');
|
|
120
|
+
const tx1 = (await builder1.build());
|
|
121
|
+
const customBounds = {
|
|
122
|
+
l2_gas: { max_amount: '0x3938700', max_price_per_unit: '0x174876e800' },
|
|
123
|
+
l1_gas: { max_amount: '0x0', max_price_per_unit: '0x5af3107a4000' },
|
|
124
|
+
l1_data_gas: { max_amount: '0x7d0', max_price_per_unit: '0x2540be400' },
|
|
125
|
+
};
|
|
126
|
+
const builder2 = factory.getTransferBuilder();
|
|
127
|
+
builder2
|
|
128
|
+
.sender(starknet_1.Accounts.account1.address)
|
|
129
|
+
.nonce('0x0')
|
|
130
|
+
.chainId(starknet_1.SandboxTransferData.chainId)
|
|
131
|
+
.receiverId(starknet_1.Accounts.account2.address)
|
|
132
|
+
.amount('1000000000000000000')
|
|
133
|
+
.resourceBounds(customBounds);
|
|
134
|
+
const tx2 = (await builder2.build());
|
|
135
|
+
tx1.signableHex.should.not.equal(tx2.signableHex);
|
|
136
|
+
});
|
|
137
|
+
it('should round-trip through toBroadcastFormat and fromRawTransaction', async () => {
|
|
138
|
+
const factory = new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig);
|
|
139
|
+
const builder = factory.getTransferBuilder();
|
|
140
|
+
builder
|
|
141
|
+
.sender(starknet_1.Accounts.account1.address)
|
|
142
|
+
.nonce('0x0')
|
|
143
|
+
.chainId(starknet_1.SandboxTransferData.chainId)
|
|
144
|
+
.receiverId(starknet_1.Accounts.account2.address)
|
|
145
|
+
.amount('1000000000000000000');
|
|
146
|
+
const tx = (await builder.build());
|
|
147
|
+
const broadcastHex = tx.toBroadcastFormat();
|
|
148
|
+
const factory2 = new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig);
|
|
149
|
+
const builder2 = await factory2.from(broadcastHex);
|
|
150
|
+
const tx2 = (await builder2.build());
|
|
151
|
+
tx2.signableHex.should.equal(tx.signableHex);
|
|
152
|
+
tx2.id.should.equal(tx.id);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
155
|
+
describe('Validation', () => {
|
|
156
|
+
it('should reject build without sender', async () => {
|
|
157
|
+
const factory = new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig);
|
|
158
|
+
const builder = factory.getTransferBuilder();
|
|
159
|
+
builder
|
|
160
|
+
.nonce('0x0')
|
|
161
|
+
.chainId(starknet_1.SandboxTransferData.chainId)
|
|
162
|
+
.receiverId(starknet_1.Accounts.account2.address)
|
|
163
|
+
.amount('1000000000000000000');
|
|
164
|
+
await builder.build().should.be.rejectedWith(/[Ss]ender/);
|
|
165
|
+
});
|
|
166
|
+
it('should reject build without nonce', async () => {
|
|
167
|
+
const factory = new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig);
|
|
168
|
+
const builder = factory.getTransferBuilder();
|
|
169
|
+
builder
|
|
170
|
+
.sender(starknet_1.Accounts.account1.address)
|
|
171
|
+
.chainId(starknet_1.SandboxTransferData.chainId)
|
|
172
|
+
.receiverId(starknet_1.Accounts.account2.address)
|
|
173
|
+
.amount('1000000000000000000');
|
|
174
|
+
await builder.build().should.be.rejectedWith(/[Nn]once/);
|
|
175
|
+
});
|
|
176
|
+
it('should reject build without chainId', async () => {
|
|
177
|
+
const factory = new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig);
|
|
178
|
+
const builder = factory.getTransferBuilder();
|
|
179
|
+
builder
|
|
180
|
+
.sender(starknet_1.Accounts.account1.address)
|
|
181
|
+
.nonce('0x0')
|
|
182
|
+
.receiverId(starknet_1.Accounts.account2.address)
|
|
183
|
+
.amount('1000000000000000000');
|
|
184
|
+
await builder.build().should.be.rejectedWith(/[Cc]hain/);
|
|
185
|
+
});
|
|
186
|
+
it('should reject build without receiver', async () => {
|
|
187
|
+
const factory = new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig);
|
|
188
|
+
const builder = factory.getTransferBuilder();
|
|
189
|
+
builder
|
|
190
|
+
.sender(starknet_1.Accounts.account1.address)
|
|
191
|
+
.nonce('0x0')
|
|
192
|
+
.chainId(starknet_1.SandboxTransferData.chainId)
|
|
193
|
+
.amount('1000000000000000000');
|
|
194
|
+
await builder.build().should.be.rejectedWith(/[Rr]eceiver/);
|
|
195
|
+
});
|
|
196
|
+
it('should reject invalid sender address', () => {
|
|
197
|
+
const factory = new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig);
|
|
198
|
+
const builder = factory.getTransferBuilder();
|
|
199
|
+
(() => builder.sender('invalid')).should.throw(/[Ii]nvalid/);
|
|
200
|
+
});
|
|
201
|
+
it('should reject invalid receiver address', () => {
|
|
202
|
+
const factory = new transactionBuilderFactory_1.TransactionBuilderFactory(coinConfig);
|
|
203
|
+
const builder = factory.getTransferBuilder();
|
|
204
|
+
(() => builder.receiverId('invalid')).should.throw(/[Ii]nvalid/);
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L3RyYW5zZmVyQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9EQUE0QjtBQUM1Qiw0Q0FBdUM7QUFDdkMsdUZBQW9GO0FBRXBGLG9EQUFzRTtBQUV0RSxRQUFRLENBQUMsMEJBQTBCLEVBQUUsR0FBRyxFQUFFO0lBQ3hDLE1BQU0sVUFBVSxHQUFHLGVBQUssQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFekMsUUFBUSxDQUFDLDRCQUE0QixFQUFFLEdBQUcsRUFBRTtRQUMxQyxFQUFFLENBQUMsdURBQXVELEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDckUsTUFBTSxPQUFPLEdBQUcsSUFBSSxxREFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUU3QyxPQUFPO2lCQUNKLE1BQU0sQ0FBQyxtQkFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7aUJBQ2pDLEtBQUssQ0FBQyxLQUFLLENBQUM7aUJBQ1osT0FBTyxDQUFDLDhCQUFtQixDQUFDLE9BQU8sQ0FBQztpQkFDcEMsVUFBVSxDQUFDLG1CQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztpQkFDckMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFFakMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBZ0IsQ0FBQztZQUNsRCxNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsdUJBQXVCLENBQUM7WUFFeEMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxlQUEwQixDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkQsSUFBSSxD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LE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxzQ0FBc0MsRUFBRSxHQUFHLEVBQUU7WUFDOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxxREFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMxRCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM3QyxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9ELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsRUFBRTtZQUNoRCxNQUFNLE9BQU8sR0FBRyxJQUFJLHFEQUF5QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzFELE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzdDLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgY29pbnMgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5JztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBBY2NvdW50cywgU2FuZGJveFRyYW5zZmVyRGF0YSB9IGZyb20gJy4uL3Jlc291cmNlcy9zdGFya25ldCc7XG5cbmRlc2NyaWJlKCdTdGFya25ldCBUcmFuc2ZlckJ1aWxkZXInLCAoKSA9PiB7XG4gIGNvbnN0IGNvaW5Db25maWcgPSBjb2lucy5nZXQoJ3N0YXJrbmV0Jyk7XG5cbiAgZGVzY3JpYmUoJ0J1aWxkIHRyYW5zZmVyIHRyYW5zYWN0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgYnVpbGQgYSB0cmFuc2ZlciBhbmQgcHJvZHVjZSBhIHRyYW5zYWN0aW9uSGFzaCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2luQ29uZmlnKTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuXG4gICAgICBidWlsZGVyXG4gICAgICAgIC5zZW5kZXIoQWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcylcbiAgICAgICAgLm5vbmNlKCcweDAnKVxuICAgICAgICAuY2hhaW5JZChTYW5kYm94VHJhbnNmZXJEYXRhLmNoYWluSWQpXG4gICAgICAgIC5yZWNlaXZlcklkKEFjY291bnRzLmFjY291bnQyLmFkZHJlc3MpXG4gICAgICAgIC5hbW91bnQoJzEwMDAwMDAwMDAwMDAwMDAwMDAnKTtcblxuICAgICAgY29uc3QgdHggPSAoYXdhaXQgYnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcbiAgICAgIGNvbnN0IGRhdGEgPSB0eC5zdGFya25ldFRyYW5zYWN0aW9uRGF0YTtcblxuICAgICAgc2hvdWxkLmV4aXN0KGRhdGEudHJhbnNhY3Rpb25IYXNoKTtcbiAgICAgIChkYXRhLnRyYW5zYWN0aW9uSGFzaCBhcyBzdHJpbmcpLnNob3VsZC5zdGFydFdpdGgoJzB4Jyk7XG4gICAgICAoZGF0YS50cmFuc2FjdGlvbkhhc2ggYXMgc3RyaW5nKS5sZW5ndGguc2hvdWxkLmJlLmdyZWF0ZXJUaGFuKDIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzZXQgc2lnbmFibGVIZXggZnJvbSB0aGUgUG9zZWlkb24gaGFzaCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGZhY3RvcnkgPSBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2luQ29uZmlnKTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuXG4gICAgICBidWlsZGVyXG4gICAgICAgIC5zZW5kZXIoQWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcylcbiAgICAgICAgLm5vbmNlKCcweDAnKVxuICAgICAgICAuY2hhaW5JZChTYW5kYm94VHJhbnNmZXJEYXRhLmNoYWluSWQpXG4gICAgICAgIC5yZWNlaXZlcklkKEFjY291bnRzLmFjY291bnQyLmFkZHJlc3MpXG4gICAgICAgIC5hbW91bnQoJzEwMDAwMDAwMDAwMDAwMDAwMDAnKTtcblxuICAgICAgY29uc3QgdHggPSAoYXdhaXQgYnVpbGRlci5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcbiAgICAgIHR4LnNpZ25hYmxlSGV4LnNob3VsZC5lcXVhbCh0eC5zdGFya25ldFRyYW5zYWN0aW9uRGF0YS50cmFuc2FjdGlvbkhhc2gpO1xuICAgICAgdHguaWQuc2hvdWxkLmVxdWFsKHR4LnN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhLnRyYW5zYWN0aW9uSGFzaCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHByb2R1Y2UgZGlmZmVyZW50IGhhc2hlcyBmb3IgZGlmZmVyZW50IHJlY2lwaWVudHMnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbkNvbmZpZyk7XG5cbiAgICAgIGNvbnN0IGJ1aWxkZXIxID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXIxXG4gICAgICAgIC5zZW5kZXIoQWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcylcbiAgICAgICAgLm5vbmNlKCcweDAnKVxuICAgICAgICAuY2hhaW5JZChTYW5kYm94VHJhbnNmZXJEYXRhLmNoYWluSWQpXG4gICAgICAgIC5yZWNlaXZlcklkKEFjY291bnRzLmFjY291bnQyLmFkZHJlc3MpXG4gICAgICAgIC5hbW91bnQoJzEwMDAwMDAwMDAwMDAwMDAwMDAnKTtcbiAgICAgIGNvbnN0IHR4MSA9IChhd2FpdCBidWlsZGVyMS5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcblxuICAgICAgY29uc3QgYnVpbGRlcjIgPSBmYWN0b3J5LmdldFRyYW5zZmVyQnVpbGRlcigpO1xuICAgICAgYnVpbGRlcjJcbiAgICAgICAgLnNlbmRlcihBY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzKVxuICAgICAgICAubm9uY2UoJzB4MCcpXG4gICAgICAgIC5jaGFpbklkKFNhbmRib3hUcmFuc2ZlckRhdGEuY2hhaW5JZClcbiAgICAgICAgLnJlY2VpdmVySWQoQWNjb3VudHMuYWNjb3VudDMuYWRkcmVzcylcbiAgICAgICAgLmFtb3VudCgnMTAwMDAwMDAwMDAwMDAwMDAwMCcpO1xuICAgICAgY29uc3QgdHgyID0gKGF3YWl0IGJ1aWxkZXIyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuXG4gICAgICB0eDEuc2lnbmFibGVIZXguc2hvdWxkLm5vdC5lcXVhbCh0eDIuc2lnbmFibGVIZXgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwcm9kdWNlIGRpZmZlcmVudCBoYXNoZXMgZm9yIGRpZmZlcmVudCBhbW91bnRzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5Db25maWcpO1xuXG4gICAgICBjb25zdCBidWlsZGVyMSA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICBidWlsZGVyMVxuICAgICAgICAuc2VuZGVyKEFjY291bnRzLmFjY291bnQxLmFkZHJlc3MpXG4gICAgICAgIC5ub25jZSgnMHgwJylcbiAgICAgICAgLmNoYWluSWQoU2FuZGJveFRyYW5zZmVyRGF0YS5jaGFpbklkKVxuICAgICAgICAucmVjZWl2ZXJJZChBY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzKVxuICAgICAgICAuYW1vdW50KCcxMDAwMDAwMDAwMDAwMDAwMDAwJyk7XG4gICAgICBjb25zdCB0eDEgPSAoYXdhaXQgYnVpbGRlcjEuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG5cbiAgICAgIGNvbnN0IGJ1aWxkZXIyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXIyXG4gICAgICAgIC5zZW5kZXIoQWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcylcbiAgICAgICAgLm5vbmNlKCcweDAnKVxuICAgICAgICAuY2hhaW5JZChTYW5kYm94VHJhbnNmZXJEYXRhLmNoYWluSWQpXG4gICAgICAgIC5yZWNlaXZlcklkKEFjY291bnRzLmFjY291bnQyLmFkZHJlc3MpXG4gICAgICAgIC5hbW91bnQoJzIwMDAwMDAwMDAwMDAwMDAwMDAnKTtcbiAgICAgIGNvbnN0IHR4MiA9IChhd2FpdCBidWlsZGVyMi5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbjtcblxuICAgICAgdHgxLnNpZ25hYmxlSGV4LnNob3VsZC5ub3QuZXF1YWwodHgyLnNpZ25hYmxlSGV4KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaW5jbHVkZSBjb21waWxlZENhbGxkYXRhIGluIHRyYW5zYWN0aW9uIGRhdGEnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbkNvbmZpZyk7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcblxuICAgICAgYnVpbGRlclxuICAgICAgICAuc2VuZGVyKEFjY291bnRzLmFjY291bnQxLmFkZHJlc3MpXG4gICAgICAgIC5ub25jZSgnMHgwJylcbiAgICAgICAgLmNoYWluSWQoU2FuZGJveFRyYW5zZmVyRGF0YS5jaGFpbklkKVxuICAgICAgICAucmVjZWl2ZXJJZChBY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzKVxuICAgICAgICAuYW1vdW50KCcxMDAwMDAwMDAwMDAwMDAwMDAwJyk7XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG4gICAgICBjb25zdCBkYXRhID0gdHguc3RhcmtuZXRUcmFuc2FjdGlvbkRhdGE7XG5cbiAgICAgIHNob3VsZC5leGlzdChkYXRhLmNvbXBpbGVkQ2FsbGRhdGEpO1xuICAgICAgKGRhdGEuY29tcGlsZWRDYWxsZGF0YSBhcyBzdHJpbmdbXSkubGVuZ3RoLnNob3VsZC5iZS5ncmVhdGVyVGhhbigwKTtcbiAgICAgIChkYXRhLmNvbXBpbGVkQ2FsbGRhdGEgYXMgc3RyaW5nW10pWzBdLnNob3VsZC5lcXVhbCgnMHgxJyk7IC8vIDEgY2FsbFxuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBpbmNsdWRlIHJlc291cmNlQm91bmRzIGluIHRyYW5zYWN0aW9uIGRhdGEnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbkNvbmZpZyk7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcblxuICAgICAgYnVpbGRlclxuICAgICAgICAuc2VuZGVyKEFjY291bnRzLmFjY291bnQxLmFkZHJlc3MpXG4gICAgICAgIC5ub25jZSgnMHgwJylcbiAgICAgICAgLmNoYWluSWQoU2FuZGJveFRyYW5zZmVyRGF0YS5jaGFpbklkKVxuICAgICAgICAucmVjZWl2ZXJJZChBY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzKVxuICAgICAgICAuYW1vdW50KCcxMDAwMDAwMDAwMDAwMDAwMDAwJylcbiAgICAgICAgLnJlc291cmNlQm91bmRzKFNhbmRib3hUcmFuc2ZlckRhdGEucmVzb3VyY2VCb3VuZHMpO1xuXG4gICAgICBjb25zdCB0eCA9IChhd2FpdCBidWlsZGVyLmJ1aWxkKCkpIGFzIFRyYW5zYWN0aW9uO1xuICAgICAgY29uc3QgZGF0YSA9IHR4LnN0YXJrbmV0VHJhbnNhY3Rpb25EYXRhO1xuXG4gICAgICBzaG91bGQuZXhpc3QoZGF0YS5yZXNvdXJjZUJvdW5kcyk7XG4gICAgICAoZGF0YS5yZXNvdXJjZUJvdW5kcyBhcyB7IGwyX2dhczogeyBtYXhfYW1vdW50OiBzdHJpbmcgfSB9KS5sMl9nYXMubWF4X2Ftb3VudC5zaG91bGQuZXF1YWwoXG4gICAgICAgIFNhbmRib3hUcmFuc2ZlckRhdGEucmVzb3VyY2VCb3VuZHMubDJfZ2FzLm1heF9hbW91bnRcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFjY2VwdCBjdXN0b20gcmVzb3VyY2UgYm91bmRzIGFuZCBwcm9kdWNlIGRpZmZlcmVudCBoYXNoJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5Db25maWcpO1xuXG4gICAgICBjb25zdCBidWlsZGVyMSA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICBidWlsZGVyMVxuICAgICAgICAuc2VuZGVyKEFjY291bnRzLmFjY291bnQxLmFkZHJlc3MpXG4gICAgICAgIC5ub25jZSgnMHgwJylcbiAgICAgICAgLmNoYWluSWQoU2FuZGJveFRyYW5zZmVyRGF0YS5jaGFpbklkKVxuICAgICAgICAucmVjZWl2ZXJJZChBY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzKVxuICAgICAgICAuYW1vdW50KCcxMDAwMDAwMDAwMDAwMDAwMDAwJyk7XG4gICAgICBjb25zdCB0eDEgPSAoYXdhaXQgYnVpbGRlcjEuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb24gYXMgVHJhbnNhY3Rpb247XG5cbiAgICAgIGNvbnN0IGN1c3RvbUJvdW5kcyA9IHtcbiAgICAgICAgbDJfZ2FzOiB7IG1heF9hbW91bnQ6ICcweDM5Mzg3MDAnLCBtYXhfcHJpY2VfcGVyX3VuaXQ6ICcweDE3NDg3NmU4MDAnIH0sXG4gICAgICAgIGwxX2dhczogeyBtYXhfYW1vdW50OiAnMHgwJywgbWF4X3ByaWNlX3Blcl91bml0OiAnMHg1YWYzMTA3YTQwMDAnIH0sXG4gICAgICAgIGwxX2RhdGFfZ2FzOiB7IG1heF9hbW91bnQ6ICcweDdkMCcsIG1heF9wcmljZV9wZXJfdW5pdDogJzB4MjU0MGJlNDAwJyB9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IGJ1aWxkZXIyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXIyXG4gICAgICAgIC5zZW5kZXIoQWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcylcbiAgICAgICAgLm5vbmNlKCcweDAnKVxuICAgICAgICAuY2hhaW5JZChTYW5kYm94VHJhbnNmZXJEYXRhLmNoYWluSWQpXG4gICAgICAgIC5yZWNlaXZlcklkKEFjY291bnRzLmFjY291bnQyLmFkZHJlc3MpXG4gICAgICAgIC5hbW91bnQoJzEwMDAwMDAwMDAwMDAwMDAwMDAnKVxuICAgICAgICAucmVzb3VyY2VCb3VuZHMoY3VzdG9tQm91bmRzKTtcbiAgICAgIGNvbnN0IHR4MiA9IChhd2FpdCBidWlsZGVyMi5idWlsZCgpKSBhcyBUcmFuc2FjdGlvbiBhcyBUcmFuc2FjdGlvbjtcblxuICAgICAgdHgxLnNpZ25hYmxlSGV4LnNob3VsZC5ub3QuZXF1YWwodHgyLnNpZ25hYmxlSGV4KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcm91bmQtdHJpcCB0aHJvdWdoIHRvQnJvYWRjYXN0Rm9ybWF0IGFuZCBmcm9tUmF3VHJhbnNhY3Rpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbkNvbmZpZyk7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcblxuICAgICAgYnVpbGRlclxuICAgICAgICAuc2VuZGVyKEFjY291bnRzLmFjY291bnQxLmFkZHJlc3MpXG4gICAgICAgIC5ub25jZSgnMHgwJylcbiAgICAgICAgLmNoYWluSWQoU2FuZGJveFRyYW5zZmVyRGF0YS5jaGFpbklkKVxuICAgICAgICAucmVjZWl2ZXJJZChBY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzKVxuICAgICAgICAuYW1vdW50KCcxMDAwMDAwMDAwMDAwMDAwMDAwJyk7XG5cbiAgICAgIGNvbnN0IHR4ID0gKGF3YWl0IGJ1aWxkZXIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb247XG4gICAgICBjb25zdCBicm9hZGNhc3RIZXggPSB0eC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgICBjb25zdCBmYWN0b3J5MiA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5Db25maWcpO1xuICAgICAgY29uc3QgYnVpbGRlcjIgPSBhd2FpdCBmYWN0b3J5Mi5mcm9tKGJyb2FkY2FzdEhleCk7XG4gICAgICBjb25zdCB0eDIgPSAoYXdhaXQgYnVpbGRlcjIuYnVpbGQoKSkgYXMgVHJhbnNhY3Rpb24gYXMgVHJhbnNhY3Rpb247XG5cbiAgICAgIHR4Mi5zaWduYWJsZUhleC5zaG91bGQuZXF1YWwodHguc2lnbmFibGVIZXgpO1xuICAgICAgdHgyLmlkLnNob3VsZC5lcXVhbCh0eC5pZCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdWYWxpZGF0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgcmVqZWN0IGJ1aWxkIHdpdGhvdXQgc2VuZGVyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5Db25maWcpO1xuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC5ub25jZSgnMHgwJylcbiAgICAgICAgLmNoYWluSWQoU2FuZGJveFRyYW5zZmVyRGF0YS5jaGFpbklkKVxuICAgICAgICAucmVjZWl2ZXJJZChBY2NvdW50cy5hY2NvdW50Mi5hZGRyZXNzKVxuICAgICAgICAuYW1vdW50KCcxMDAwMDAwMDAwMDAwMDAwMDAwJyk7XG5cbiAgICAgIGF3YWl0IGJ1aWxkZXIuYnVpbGQoKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9bU3NdZW5kZXIvKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVqZWN0IGJ1aWxkIHdpdGhvdXQgbm9uY2UnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbkNvbmZpZyk7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLnNlbmRlcihBY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzKVxuICAgICAgICAuY2hhaW5JZChTYW5kYm94VHJhbnNmZXJEYXRhLmNoYWluSWQpXG4gICAgICAgIC5yZWNlaXZlcklkKEFjY291bnRzLmFjY291bnQyLmFkZHJlc3MpXG4gICAgICAgIC5hbW91bnQoJzEwMDAwMDAwMDAwMDAwMDAwMDAnKTtcblxuICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1tObl1vbmNlLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBidWlsZCB3aXRob3V0IGNoYWluSWQnLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbkNvbmZpZyk7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgIGJ1aWxkZXJcbiAgICAgICAgLnNlbmRlcihBY2NvdW50cy5hY2NvdW50MS5hZGRyZXNzKVxuICAgICAgICAubm9uY2UoJzB4MCcpXG4gICAgICAgIC5yZWNlaXZlcklkKEFjY291bnRzLmFjY291bnQyLmFkZHJlc3MpXG4gICAgICAgIC5hbW91bnQoJzEwMDAwMDAwMDAwMDAwMDAwMDAnKTtcblxuICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1tDY11oYWluLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBidWlsZCB3aXRob3V0IHJlY2VpdmVyJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5Db25maWcpO1xuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICBidWlsZGVyXG4gICAgICAgIC5zZW5kZXIoQWNjb3VudHMuYWNjb3VudDEuYWRkcmVzcylcbiAgICAgICAgLm5vbmNlKCcweDAnKVxuICAgICAgICAuY2hhaW5JZChTYW5kYm94VHJhbnNmZXJEYXRhLmNoYWluSWQpXG4gICAgICAgIC5hbW91bnQoJzEwMDAwMDAwMDAwMDAwMDAwMDAnKTtcblxuICAgICAgYXdhaXQgYnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1tScl1lY2VpdmVyLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBpbnZhbGlkIHNlbmRlciBhZGRyZXNzJywgKCkgPT4ge1xuICAgICAgY29uc3QgZmFjdG9yeSA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5Db25maWcpO1xuICAgICAgY29uc3QgYnVpbGRlciA9IGZhY3RvcnkuZ2V0VHJhbnNmZXJCdWlsZGVyKCk7XG4gICAgICAoKCkgPT4gYnVpbGRlci5zZW5kZXIoJ2ludmFsaWQnKSkuc2hvdWxkLnRocm93KC9bSWldbnZhbGlkLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJlamVjdCBpbnZhbGlkIHJlY2VpdmVyIGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCBmYWN0b3J5ID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbkNvbmZpZyk7XG4gICAgICBjb25zdCBidWlsZGVyID0gZmFjdG9yeS5nZXRUcmFuc2ZlckJ1aWxkZXIoKTtcbiAgICAgICgoKSA9PiBidWlsZGVyLnJlY2VpdmVySWQoJ2ludmFsaWQnKSkuc2hvdWxkLnRocm93KC9bSWldbnZhbGlkLyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../test/unit/utils.ts"],"names":[],"mappings":"AAQA,OAAO,QAAQ,CAAC"}
|