Skip to content

Commit beeed3a

Browse files
committed
feat(sdk-coin-canton): added transaction class and canton raw transaction local parser
Ticket: COIN-5871
1 parent 0e5d2c4 commit beeed3a

25 files changed

+3003
-8
lines changed

modules/sdk-coin-canton/package.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,16 @@
55
"main": "./dist/src/index.js",
66
"types": "./dist/src/index.d.ts",
77
"scripts": {
8-
"build": "yarn tsc --build --incremental --verbose .",
8+
"build": "npm run prepare",
9+
"build-ts": "yarn tsc --build --incremental --verbose .",
910
"fmt": "prettier --write .",
1011
"check-fmt": "prettier --check .",
1112
"clean": "rm -r ./dist",
1213
"lint": "eslint --quiet .",
13-
"prepare": "npm run build",
14+
"prepare": "npm run build-ts && shx cp -r ./resources ./dist",
1415
"test": "npm run coverage",
1516
"coverage": "nyc -- npm run unit-test",
16-
"unit-test": "mocha"
17+
"unit-test": "yarn run build && node --test dist/test/**/*.js"
1718
},
1819
"author": "BitGo SDK Team <[email protected]>",
1920
"license": "MIT",
@@ -42,6 +43,7 @@
4243
"dependencies": {
4344
"@bitgo/sdk-core": "^36.10.1",
4445
"@bitgo/statics": "^58.2.0",
46+
"@protobuf-ts/runtime": "^2.11.1",
4547
"bignumber.js": "^9.1.1"
4648
},
4749
"devDependencies": {
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
import { MessageType, UnknownFieldHandler, reflectionMergePartial, WireType } from '@protobuf-ts/runtime';
2+
import { DamlTransaction_Node } from './damlTransactionNode.js';
3+
import { DamlTransaction_NodeSeed } from './damlTransactionNodeSeed.js';
4+
5+
class DamlTransaction$Type extends MessageType {
6+
constructor() {
7+
super('com.daml.ledger.api.v2.interactive.DamlTransaction', [
8+
{
9+
no: 1,
10+
name: 'version',
11+
kind: 'scalar',
12+
T: 9 /*ScalarType.STRING*/,
13+
},
14+
{
15+
no: 2,
16+
name: 'roots',
17+
kind: 'scalar',
18+
repeat: 2 /*RepeatType.UNPACKED*/,
19+
T: 9 /*ScalarType.STRING*/,
20+
},
21+
{
22+
no: 3,
23+
name: 'nodes',
24+
kind: 'message',
25+
repeat: 2 /*RepeatType.UNPACKED*/,
26+
T: () => DamlTransaction_Node,
27+
},
28+
{
29+
no: 4,
30+
name: 'node_seeds',
31+
kind: 'message',
32+
repeat: 2 /*RepeatType.UNPACKED*/,
33+
T: () => DamlTransaction_NodeSeed,
34+
},
35+
]);
36+
}
37+
create(value) {
38+
const message = Object.create(this.messagePrototype);
39+
message.version = '';
40+
message.roots = [];
41+
message.nodes = [];
42+
message.nodeSeeds = [];
43+
if (value !== undefined) reflectionMergePartial(this, message, value);
44+
return message;
45+
}
46+
internalBinaryRead(reader, length, options, target) {
47+
const message = target ?? this.create(),
48+
end = reader.pos + length;
49+
while (reader.pos < end) {
50+
const [fieldNo, wireType] = reader.tag();
51+
switch (fieldNo) {
52+
case /* string version */ 1:
53+
message.version = reader.string();
54+
break;
55+
case /* repeated string roots */ 2:
56+
message.roots.push(reader.string());
57+
break;
58+
case /* repeated com.daml.ledger.api.v2.interactive.DamlTransaction.Node nodes */ 3:
59+
message.nodes.push(DamlTransaction_Node.internalBinaryRead(reader, reader.uint32(), options));
60+
break;
61+
case /* repeated com.daml.ledger.api.v2.interactive.DamlTransaction.NodeSeed node_seeds */ 4:
62+
message.nodeSeeds.push(DamlTransaction_NodeSeed.internalBinaryRead(reader, reader.uint32(), options));
63+
break;
64+
default:
65+
const u = options.readUnknownField;
66+
if (u === 'throw') throw new Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
67+
const d = reader.skip(wireType);
68+
if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
69+
}
70+
}
71+
return message;
72+
}
73+
internalBinaryWrite(message, writer, options) {
74+
/* string version = 1; */
75+
if (message.version !== '') writer.tag(1, WireType.LengthDelimited).string(message.version);
76+
/* repeated string roots = 2; */
77+
for (let i = 0; i < message.roots.length; i++) writer.tag(2, WireType.LengthDelimited).string(message.roots[i]);
78+
/* repeated com.daml.ledger.api.v2.interactive.DamlTransaction.Node nodes = 3; */
79+
for (let i = 0; i < message.nodes.length; i++)
80+
DamlTransaction_Node.internalBinaryWrite(
81+
message.nodes[i],
82+
writer.tag(3, WireType.LengthDelimited).fork(),
83+
options
84+
).join();
85+
/* repeated com.daml.ledger.api.v2.interactive.DamlTransaction.NodeSeed node_seeds = 4; */
86+
for (let i = 0; i < message.nodeSeeds.length; i++)
87+
DamlTransaction_NodeSeed.internalBinaryWrite(
88+
message.nodeSeeds[i],
89+
writer.tag(4, WireType.LengthDelimited).fork(),
90+
options
91+
).join();
92+
const u = options.writeUnknownFields;
93+
if (u !== false) (u === true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
94+
return writer;
95+
}
96+
}
97+
/**
98+
* @generated MessageType for protobuf message com.daml.ledger.api.v2.interactive.DamlTransaction
99+
*/
100+
export const DamlTransaction = new DamlTransaction$Type();
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
import { MessageType, UnknownFieldHandler, reflectionMergePartial, WireType } from '@protobuf-ts/runtime';
2+
import { Node } from './node/node.js';
3+
4+
class DamlTransaction_Node$Type extends MessageType {
5+
constructor() {
6+
super('com.daml.ledger.api.v2.interactive.DamlTransaction.Node', [
7+
{
8+
no: 1,
9+
name: 'node_id',
10+
kind: 'scalar',
11+
T: 9 /*ScalarType.STRING*/,
12+
},
13+
{
14+
no: 1000,
15+
name: 'v1',
16+
kind: 'message',
17+
oneof: 'versionedNode',
18+
T: () => Node,
19+
},
20+
]);
21+
}
22+
create(value) {
23+
const message = Object.create(this.messagePrototype);
24+
message.nodeId = '';
25+
message.versionedNode = { oneofKind: undefined };
26+
if (value !== undefined) reflectionMergePartial(this, message, value);
27+
return message;
28+
}
29+
internalBinaryRead(reader, length, options, target) {
30+
const message = target ?? this.create(),
31+
end = reader.pos + length;
32+
while (reader.pos < end) {
33+
const [fieldNo, wireType] = reader.tag();
34+
switch (fieldNo) {
35+
case /* string node_id */ 1:
36+
message.nodeId = reader.string();
37+
break;
38+
case /* com.daml.ledger.api.v2.interactive.transaction.v1.Node v1 */ 1000:
39+
message.versionedNode = {
40+
oneofKind: 'v1',
41+
v1: Node.internalBinaryRead(reader, reader.uint32(), options, message.versionedNode.v1),
42+
};
43+
break;
44+
default:
45+
const u = options.readUnknownField;
46+
if (u === 'throw') throw new Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
47+
const d = reader.skip(wireType);
48+
if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
49+
}
50+
}
51+
return message;
52+
}
53+
internalBinaryWrite(message, writer, options) {
54+
/* string node_id = 1; */
55+
if (message.nodeId !== '') writer.tag(1, WireType.LengthDelimited).string(message.nodeId);
56+
/* com.daml.ledger.api.v2.interactive.transaction.v1.Node v1 = 1000; */
57+
if (message.versionedNode.oneofKind === 'v1')
58+
Node.internalBinaryWrite(
59+
message.versionedNode.v1,
60+
writer.tag(1000, WireType.LengthDelimited).fork(),
61+
options
62+
).join();
63+
const u = options.writeUnknownFields;
64+
if (u !== false) (u === true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
65+
return writer;
66+
}
67+
}
68+
/**
69+
* @generated MessageType for protobuf message com.daml.ledger.api.v2.interactive.DamlTransaction.Node
70+
*/
71+
export const DamlTransaction_Node = new DamlTransaction_Node$Type();
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
import { MessageType, UnknownFieldHandler, reflectionMergePartial, WireType } from '@protobuf-ts/runtime';
2+
3+
class DamlTransaction_NodeSeed$Type extends MessageType {
4+
constructor() {
5+
super('com.daml.ledger.api.v2.interactive.DamlTransaction.NodeSeed', [
6+
{
7+
no: 1,
8+
name: 'node_id',
9+
kind: 'scalar',
10+
T: 5 /*ScalarType.INT32*/,
11+
},
12+
{ no: 2, name: 'seed', kind: 'scalar', T: 12 /*ScalarType.BYTES*/ },
13+
]);
14+
}
15+
create(value) {
16+
const message = Object.create(this.messagePrototype);
17+
message.nodeId = 0;
18+
message.seed = new Uint8Array(0);
19+
if (value !== undefined) reflectionMergePartial(this, message, value);
20+
return message;
21+
}
22+
internalBinaryRead(reader, length, options, target) {
23+
const message = target ?? this.create(),
24+
end = reader.pos + length;
25+
while (reader.pos < end) {
26+
const [fieldNo, wireType] = reader.tag();
27+
switch (fieldNo) {
28+
case /* int32 node_id */ 1:
29+
message.nodeId = reader.int32();
30+
break;
31+
case /* bytes seed */ 2:
32+
message.seed = reader.bytes();
33+
break;
34+
default:
35+
const u = options.readUnknownField;
36+
if (u === 'throw') throw new Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
37+
const d = reader.skip(wireType);
38+
if (u !== false) (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
39+
}
40+
}
41+
return message;
42+
}
43+
internalBinaryWrite(message, writer, options) {
44+
/* int32 node_id = 1; */
45+
if (message.nodeId !== 0) writer.tag(1, WireType.Varint).int32(message.nodeId);
46+
/* bytes seed = 2; */
47+
if (message.seed.length) writer.tag(2, WireType.LengthDelimited).bytes(message.seed);
48+
const u = options.writeUnknownFields;
49+
if (u !== false) (u === true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
50+
return writer;
51+
}
52+
}
53+
/**
54+
* @generated MessageType for protobuf message com.daml.ledger.api.v2.interactive.DamlTransaction.NodeSeed
55+
*/
56+
export const DamlTransaction_NodeSeed = new DamlTransaction_NodeSeed$Type();

0 commit comments

Comments
 (0)