1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 |
|
4 | const errors_1 = require("../errors");
|
5 | const utils_1 = require("../utils");
|
6 | const deserializer_1 = require("./deserializer");
|
7 | const serializer_1 = require("./serializer");
|
8 | const types_1 = require("./types");
|
9 | const utils_2 = require("./utils");
|
10 | const verifier_1 = require("./verifier");
|
11 | class TransactionFactory {
|
12 | static fromHex(hex) {
|
13 | return this.fromSerialized(hex);
|
14 | }
|
15 | static fromBytes(buffer, strict = true) {
|
16 | return this.fromSerialized(buffer ? buffer.toString("hex") : undefined, strict);
|
17 | }
|
18 | |
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 | static fromBytesUnsafe(buffer, id) {
|
26 | try {
|
27 | const transaction = deserializer_1.deserializer.deserialize(buffer);
|
28 | transaction.data.id = id || utils_2.Utils.getId(transaction.data);
|
29 | transaction.isVerified = true;
|
30 | return transaction;
|
31 | }
|
32 | catch (error) {
|
33 | throw new errors_1.MalformedTransactionBytesError();
|
34 | }
|
35 | }
|
36 | static fromJson(json) {
|
37 | const data = { ...json };
|
38 | data.amount = utils_1.BigNumber.make(data.amount);
|
39 | data.fee = utils_1.BigNumber.make(data.fee);
|
40 | return this.fromData(data);
|
41 | }
|
42 | static fromData(data, strict = true) {
|
43 | const { value, error } = verifier_1.Verifier.verifySchema(data, strict);
|
44 | if (error && !utils_1.isException(value)) {
|
45 | throw new errors_1.TransactionSchemaError(error);
|
46 | }
|
47 | const transaction = types_1.TransactionTypeFactory.create(value);
|
48 | const { version } = transaction.data;
|
49 | if (!version || version === 1) {
|
50 | deserializer_1.deserializer.applyV1Compatibility(transaction.data);
|
51 | }
|
52 | serializer_1.Serializer.serialize(transaction);
|
53 | return this.fromBytes(transaction.serialized, strict);
|
54 | }
|
55 | static fromSerialized(serialized, strict = true) {
|
56 | try {
|
57 | const transaction = deserializer_1.deserializer.deserialize(serialized);
|
58 | transaction.data.id = utils_2.Utils.getId(transaction.data);
|
59 | const { value, error } = verifier_1.Verifier.verifySchema(transaction.data, strict);
|
60 | if (error && !utils_1.isException(value)) {
|
61 | throw new errors_1.TransactionSchemaError(error);
|
62 | }
|
63 | transaction.isVerified = transaction.verify();
|
64 | return transaction;
|
65 | }
|
66 | catch (error) {
|
67 | if (error instanceof errors_1.TransactionVersionError || error instanceof errors_1.TransactionSchemaError) {
|
68 | throw error;
|
69 | }
|
70 | throw new errors_1.MalformedTransactionBytesError();
|
71 | }
|
72 | }
|
73 | }
|
74 | exports.TransactionFactory = TransactionFactory;
|
75 |
|
\ | No newline at end of file |