@mainsail/transactions 0.0.1-alpha.2 → 0.0.1-alpha.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 +19 -0
- package/distribution/handlers/handler-provider.d.ts.map +1 -1
- package/distribution/handlers/handler-provider.js +29 -27
- package/distribution/handlers/handler-provider.js.map +1 -1
- package/distribution/handlers/handler-registry.d.ts +1 -1
- package/distribution/handlers/handler-registry.d.ts.map +1 -1
- package/distribution/handlers/handler-registry.js +18 -21
- package/distribution/handlers/handler-registry.js.map +1 -1
- package/distribution/handlers/index.d.ts +4 -3
- package/distribution/handlers/index.d.ts.map +1 -1
- package/distribution/handlers/index.js +3 -9
- package/distribution/handlers/index.js.map +1 -1
- package/distribution/handlers/transaction.d.ts +2 -1
- package/distribution/handlers/transaction.d.ts.map +1 -1
- package/distribution/handlers/transaction.js +37 -41
- package/distribution/handlers/transaction.js.map +1 -1
- package/distribution/index.d.ts +3 -3
- package/distribution/index.d.ts.map +1 -1
- package/distribution/index.js +4 -33
- package/distribution/index.js.map +1 -1
- package/distribution/service-provider.d.ts +1 -1
- package/distribution/service-provider.d.ts.map +1 -1
- package/distribution/service-provider.js +14 -13
- package/distribution/service-provider.js.map +1 -1
- package/distribution/transaction-validator.d.ts +10 -0
- package/distribution/transaction-validator.d.ts.map +1 -0
- package/distribution/transaction-validator.js +62 -0
- package/distribution/transaction-validator.js.map +1 -0
- package/distribution/utils.js +1 -5
- package/distribution/utils.js.map +1 -1
- package/package.json +12 -9
package/README.md
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# Mainsail - Transactions
|
2
|
+
|
3
|
+

|
4
|
+
|
5
|
+
## Documentation
|
6
|
+
|
7
|
+
You can find installation instructions and detailed instructions on how to use this package at the [dedicated documentation site](https://ark.dev/docs/mainsail).
|
8
|
+
|
9
|
+
## Security
|
10
|
+
|
11
|
+
If you discover a security vulnerability within this package, please send an e-mail to [security@ark.io](mailto:security@ark.io). All security vulnerabilities will be promptly addressed.
|
12
|
+
|
13
|
+
## Credits
|
14
|
+
|
15
|
+
This project exists thanks to all the people who [contribute](https://github.com/ArkEcosystem/mainsail/graphs/contributors).
|
16
|
+
|
17
|
+
## License
|
18
|
+
|
19
|
+
[GPL-3.0-only](https://github.com/ArkEcosystem/mainsail/blob/main/LICENSE) © [ARK Ecosystem](https://ark.io)
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"handler-provider.d.ts","sourceRoot":"","sources":["../../source/handlers/handler-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA2B,MAAM,qBAAqB,CAAC;AAMzE,qBACa,0BAA2B,YAAW,SAAS,CAAC,YAAY,CAAC,0BAA0B;;IAEnG,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAuC;IAG3E,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAmC;IAGvE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAwC;
|
1
|
+
{"version":3,"file":"handler-provider.d.ts","sourceRoot":"","sources":["../../source/handlers/handler-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA2B,MAAM,qBAAqB,CAAC;AAMzE,qBACa,0BAA2B,YAAW,SAAS,CAAC,YAAY,CAAC,0BAA0B;;IAEnG,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAuC;IAG3E,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAmC;IAGvE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAwC;IAKrE,sBAAsB,IAAI,OAAO;IAIjC,gBAAgB,IAAI,IAAI;CAkF/B"}
|
@@ -1,4 +1,3 @@
|
|
1
|
-
"use strict";
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
@@ -19,17 +18,16 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
19
18
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
20
19
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
21
20
|
};
|
22
|
-
var _TransactionHandlerProvider_instances, _TransactionHandlerProvider_registered, _TransactionHandlerProvider_registerHandler, _TransactionHandlerProvider_hasOtherHandlerHandling, _TransactionHandlerProvider_hasOtherHandler;
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
const crypto_transaction_1 = require("@mainsail/crypto-transaction");
|
28
|
-
const kernel_1 = require("@mainsail/kernel");
|
21
|
+
var _TransactionHandlerProvider_instances, _TransactionHandlerProvider_registered, _TransactionHandlerProvider_handlerDependencyLookup, _TransactionHandlerProvider_registerHandler, _TransactionHandlerProvider_hasOtherHandlerHandling, _TransactionHandlerProvider_hasOtherHandler;
|
22
|
+
import { inject, injectable } from "@mainsail/container";
|
23
|
+
import { Contracts, Exceptions, Identifiers } from "@mainsail/contracts";
|
24
|
+
import { InternalTransactionType } from "@mainsail/crypto-transaction";
|
25
|
+
import { Utils } from "@mainsail/kernel";
|
29
26
|
let TransactionHandlerProvider = class TransactionHandlerProvider {
|
30
27
|
constructor() {
|
31
28
|
_TransactionHandlerProvider_instances.add(this);
|
32
29
|
_TransactionHandlerProvider_registered.set(this, false);
|
30
|
+
_TransactionHandlerProvider_handlerDependencyLookup.set(this, new Set());
|
33
31
|
}
|
34
32
|
isRegistrationRequired() {
|
35
33
|
return __classPrivateFieldGet(this, _TransactionHandlerProvider_registered, "f") === false;
|
@@ -41,21 +39,22 @@ let TransactionHandlerProvider = class TransactionHandlerProvider {
|
|
41
39
|
__classPrivateFieldSet(this, _TransactionHandlerProvider_registered, true, "f");
|
42
40
|
}
|
43
41
|
};
|
44
|
-
exports.TransactionHandlerProvider = TransactionHandlerProvider;
|
45
42
|
_TransactionHandlerProvider_registered = new WeakMap();
|
43
|
+
_TransactionHandlerProvider_handlerDependencyLookup = new WeakMap();
|
46
44
|
_TransactionHandlerProvider_instances = new WeakSet();
|
47
45
|
_TransactionHandlerProvider_registerHandler = function _TransactionHandlerProvider_registerHandler(handlerConstructor) {
|
48
46
|
const handler = new handlerConstructor();
|
49
47
|
const transactionConstructor = handler.getConstructor();
|
50
|
-
|
51
|
-
|
52
|
-
|
48
|
+
__classPrivateFieldGet(this, _TransactionHandlerProvider_handlerDependencyLookup, "f").add(transactionConstructor);
|
49
|
+
Utils.assert.defined(transactionConstructor.type);
|
50
|
+
Utils.assert.defined(transactionConstructor.typeGroup);
|
51
|
+
const internalType = InternalTransactionType.from(transactionConstructor.type, transactionConstructor.typeGroup);
|
53
52
|
if (__classPrivateFieldGet(this, _TransactionHandlerProvider_instances, "m", _TransactionHandlerProvider_hasOtherHandlerHandling).call(this, handlerConstructor, internalType, transactionConstructor.version)) {
|
54
|
-
throw new
|
53
|
+
throw new Exceptions.AlreadyRegisteredError(internalType);
|
55
54
|
}
|
56
55
|
for (const dependency of handler.dependencies()) {
|
57
|
-
if (__classPrivateFieldGet(this, _TransactionHandlerProvider_instances, "m", _TransactionHandlerProvider_hasOtherHandler).call(this,
|
58
|
-
throw new
|
56
|
+
if (__classPrivateFieldGet(this, _TransactionHandlerProvider_instances, "m", _TransactionHandlerProvider_hasOtherHandler).call(this, dependency) === false) {
|
57
|
+
throw new Exceptions.UnsatisfiedDependencyError(internalType);
|
59
58
|
}
|
60
59
|
}
|
61
60
|
for (const attribute of handler.walletAttributes()) {
|
@@ -63,7 +62,7 @@ _TransactionHandlerProvider_registerHandler = function _TransactionHandlerProvid
|
|
63
62
|
this.attributeRepository.set(attribute.name, attribute.type);
|
64
63
|
}
|
65
64
|
}
|
66
|
-
if (transactionConstructor.typeGroup !==
|
65
|
+
if (transactionConstructor.typeGroup !== Contracts.Crypto.TransactionTypeGroup.Core) {
|
67
66
|
this.transactionRegistry.registerTransactionType(transactionConstructor);
|
68
67
|
}
|
69
68
|
};
|
@@ -74,32 +73,35 @@ _TransactionHandlerProvider_hasOtherHandlerHandling = function _TransactionHandl
|
|
74
73
|
}
|
75
74
|
const otherHandler = new otherHandlerConstructor();
|
76
75
|
const otherTransactionConstructor = otherHandler.getConstructor();
|
77
|
-
|
78
|
-
|
79
|
-
const otherInternalType =
|
76
|
+
Utils.assert.defined(otherTransactionConstructor.type);
|
77
|
+
Utils.assert.defined(otherTransactionConstructor.typeGroup);
|
78
|
+
const otherInternalType = InternalTransactionType.from(otherTransactionConstructor.type, otherTransactionConstructor.typeGroup);
|
80
79
|
if (otherInternalType === internalType && otherTransactionConstructor.version === version) {
|
81
80
|
return true;
|
82
81
|
}
|
83
82
|
}
|
84
83
|
return false;
|
85
84
|
};
|
86
|
-
_TransactionHandlerProvider_hasOtherHandler = function _TransactionHandlerProvider_hasOtherHandler(
|
87
|
-
|
88
|
-
|
85
|
+
_TransactionHandlerProvider_hasOtherHandler = function _TransactionHandlerProvider_hasOtherHandler(dependencyConstructor) {
|
86
|
+
const dependency = new dependencyConstructor().getConstructor();
|
87
|
+
return [...__classPrivateFieldGet(this, _TransactionHandlerProvider_handlerDependencyLookup, "f")].some((handler) => handler.type === dependency.type &&
|
88
|
+
handler.typeGroup === dependency.typeGroup &&
|
89
|
+
handler.version === dependency.version);
|
89
90
|
};
|
90
91
|
__decorate([
|
91
|
-
|
92
|
+
inject(Identifiers.State.Wallet.Attributes),
|
92
93
|
__metadata("design:type", Object)
|
93
94
|
], TransactionHandlerProvider.prototype, "attributeRepository", void 0);
|
94
95
|
__decorate([
|
95
|
-
|
96
|
+
inject(Identifiers.Transaction.Handler.Constructors),
|
96
97
|
__metadata("design:type", Array)
|
97
98
|
], TransactionHandlerProvider.prototype, "handlerConstructors", void 0);
|
98
99
|
__decorate([
|
99
|
-
|
100
|
+
inject(Identifiers.Cryptography.Transaction.Registry),
|
100
101
|
__metadata("design:type", Object)
|
101
102
|
], TransactionHandlerProvider.prototype, "transactionRegistry", void 0);
|
102
|
-
|
103
|
-
|
103
|
+
TransactionHandlerProvider = __decorate([
|
104
|
+
injectable()
|
104
105
|
], TransactionHandlerProvider);
|
106
|
+
export { TransactionHandlerProvider };
|
105
107
|
//# sourceMappingURL=handler-provider.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"handler-provider.js","sourceRoot":"","sources":["../../source/handlers/handler-provider.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"handler-provider.js","sourceRoot":"","sources":["../../source/handlers/handler-provider.ts"],"names":[],"mappings":"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"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { Contracts } from "@mainsail/contracts";
|
2
|
-
import { TransactionHandler } from "./transaction";
|
2
|
+
import { TransactionHandler } from "./transaction.js";
|
3
3
|
export declare class TransactionHandlerRegistry implements Contracts.Transactions.TransactionHandlerRegistry {
|
4
4
|
private readonly provider;
|
5
5
|
private readonly handlers;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"handler-registry.d.ts","sourceRoot":"","sources":["../../source/handlers/handler-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA2B,MAAM,qBAAqB,CAAC;AAKzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"handler-registry.d.ts","sourceRoot":"","sources":["../../source/handlers/handler-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA2B,MAAM,qBAAqB,CAAC;AAKzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,qBACa,0BAA2B,YAAW,SAAS,CAAC,YAAY,CAAC,0BAA0B;IAEnG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA8B;IAGvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IAG1C,UAAU,IAAI,IAAI;IAMlB,qBAAqB,IAAI,kBAAkB,EAAE;IAI7C,0BAA0B,CAChC,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,uBAAuB,EAC5D,OAAO,SAAI,GACT,kBAAkB;IAiBR,oBAAoB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IASrD,yBAAyB,CACrC,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC,uBAAuB,EAC5D,OAAO,SAAI,GACT,OAAO,CAAC,kBAAkB,CAAC;IAQjB,0BAA0B,CACtC,eAAe,EAAE,SAAS,CAAC,MAAM,CAAC,eAAe,GAC/C,OAAO,CAAC,kBAAkB,CAAC;CAI9B"}
|
@@ -1,4 +1,3 @@
|
|
1
|
-
"use strict";
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
@@ -8,13 +7,11 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
8
7
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
9
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
10
9
|
};
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
const kernel_1 = require("@mainsail/kernel");
|
17
|
-
const handler_provider_1 = require("./handler-provider");
|
10
|
+
import { inject, injectable, multiInject, postConstruct } from "@mainsail/container";
|
11
|
+
import { Exceptions, Identifiers } from "@mainsail/contracts";
|
12
|
+
import { InternalTransactionType } from "@mainsail/crypto-transaction";
|
13
|
+
import { Utils } from "@mainsail/kernel";
|
14
|
+
import { TransactionHandlerProvider } from "./handler-provider.js";
|
18
15
|
let TransactionHandlerRegistry = class TransactionHandlerRegistry {
|
19
16
|
initialize() {
|
20
17
|
if (this.provider.isRegistrationRequired()) {
|
@@ -27,14 +24,14 @@ let TransactionHandlerRegistry = class TransactionHandlerRegistry {
|
|
27
24
|
getRegisteredHandlerByType(internalType, version = 1) {
|
28
25
|
for (const handler of this.handlers) {
|
29
26
|
const transactionConstructor = handler.getConstructor();
|
30
|
-
|
31
|
-
|
32
|
-
const handlerInternalType =
|
27
|
+
Utils.assert.defined(transactionConstructor.type);
|
28
|
+
Utils.assert.defined(transactionConstructor.typeGroup);
|
29
|
+
const handlerInternalType = InternalTransactionType.from(transactionConstructor.type, transactionConstructor.typeGroup);
|
33
30
|
if (handlerInternalType === internalType && transactionConstructor.version === version) {
|
34
31
|
return handler;
|
35
32
|
}
|
36
33
|
}
|
37
|
-
throw new
|
34
|
+
throw new Exceptions.InvalidTransactionTypeError(internalType);
|
38
35
|
}
|
39
36
|
async getActivatedHandlers() {
|
40
37
|
const promises = this.handlers.map(async (handler) => [handler, await handler.isActivated()]);
|
@@ -47,29 +44,29 @@ let TransactionHandlerRegistry = class TransactionHandlerRegistry {
|
|
47
44
|
if (await handler.isActivated()) {
|
48
45
|
return handler;
|
49
46
|
}
|
50
|
-
throw new
|
47
|
+
throw new Exceptions.DeactivatedTransactionHandlerError(internalType);
|
51
48
|
}
|
52
49
|
async getActivatedHandlerForData(transactionData) {
|
53
|
-
const internalType =
|
50
|
+
const internalType = InternalTransactionType.from(transactionData.type, transactionData.typeGroup);
|
54
51
|
return this.getActivatedHandlerByType(internalType, transactionData.version);
|
55
52
|
}
|
56
53
|
};
|
57
|
-
exports.TransactionHandlerRegistry = TransactionHandlerRegistry;
|
58
54
|
__decorate([
|
59
|
-
|
60
|
-
__metadata("design:type",
|
55
|
+
inject(Identifiers.Transaction.Handler.Provider),
|
56
|
+
__metadata("design:type", TransactionHandlerProvider)
|
61
57
|
], TransactionHandlerRegistry.prototype, "provider", void 0);
|
62
58
|
__decorate([
|
63
|
-
|
59
|
+
multiInject(Identifiers.Transaction.Handler.Instances),
|
64
60
|
__metadata("design:type", Array)
|
65
61
|
], TransactionHandlerRegistry.prototype, "handlers", void 0);
|
66
62
|
__decorate([
|
67
|
-
|
63
|
+
postConstruct(),
|
68
64
|
__metadata("design:type", Function),
|
69
65
|
__metadata("design:paramtypes", []),
|
70
66
|
__metadata("design:returntype", void 0)
|
71
67
|
], TransactionHandlerRegistry.prototype, "initialize", null);
|
72
|
-
|
73
|
-
|
68
|
+
TransactionHandlerRegistry = __decorate([
|
69
|
+
injectable()
|
74
70
|
], TransactionHandlerRegistry);
|
71
|
+
export { TransactionHandlerRegistry };
|
75
72
|
//# sourceMappingURL=handler-registry.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"handler-registry.js","sourceRoot":"","sources":["../../source/handlers/handler-registry.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"handler-registry.js","sourceRoot":"","sources":["../../source/handlers/handler-registry.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAa,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAI5D,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAQ/B,UAAU;QAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAClC,CAAC;IACF,CAAC;IAEM,qBAAqB;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAEM,0BAA0B,CAChC,YAA4D,EAC5D,OAAO,GAAG,CAAC;QAEX,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,sBAAsB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;YACxD,KAAK,CAAC,MAAM,CAAC,OAAO,CAAS,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAC1D,KAAK,CAAC,MAAM,CAAC,OAAO,CAAS,sBAAsB,CAAC,SAAS,CAAC,CAAC;YAC/D,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,IAAI,CACvD,sBAAsB,CAAC,IAAI,EAC3B,sBAAsB,CAAC,SAAS,CAChC,CAAC;YACF,IAAI,mBAAmB,KAAK,YAAY,IAAI,sBAAsB,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;gBACxF,OAAO,OAAO,CAAC;YAChB,CAAC;QACF,CAAC;QAED,MAAM,IAAI,UAAU,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC;IAChE,CAAC;IAEM,KAAK,CAAC,oBAAoB;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CACjC,KAAK,EAAE,OAAO,EAA0C,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC,CACjG,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;QAChE,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAEM,KAAK,CAAC,yBAAyB,CACrC,YAA4D,EAC5D,OAAO,GAAG,CAAC;QAEX,MAAM,OAAO,GAAG,IAAI,CAAC,0BAA0B,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACvE,IAAI,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;YACjC,OAAO,OAAO,CAAC;QAChB,CAAC;QACD,MAAM,IAAI,UAAU,CAAC,kCAAkC,CAAC,YAAY,CAAC,CAAC;IACvE,CAAC;IAEM,KAAK,CAAC,0BAA0B,CACtC,eAAiD;QAEjD,MAAM,YAAY,GAAG,uBAAuB,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;QACnG,OAAO,IAAI,CAAC,yBAAyB,CAAC,YAAY,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAC9E,CAAC;CACD,CAAA;AA9DiB;IADhB,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;8BACrB,0BAA0B;4DAAC;AAGtC;IADhB,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;;4DACN;AAG1C;IADN,aAAa,EAAE;;;;4DAKf;AAZW,0BAA0B;IADtC,UAAU,EAAE;GACA,0BAA0B,CAgEtC"}
|
@@ -1,4 +1,5 @@
|
|
1
|
-
export { TransactionHandlerProvider } from "./handler-provider";
|
2
|
-
export { TransactionHandlerRegistry as Registry } from "./handler-registry";
|
3
|
-
export {
|
1
|
+
export { TransactionHandlerProvider } from "./handler-provider.js";
|
2
|
+
export { TransactionHandlerRegistry as Registry } from "./handler-registry.js";
|
3
|
+
export type { TransactionHandlerConstructor } from "./transaction.js";
|
4
|
+
export { TransactionHandler } from "./transaction.js";
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/handlers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../source/handlers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,0BAA0B,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC/E,YAAY,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
|
@@ -1,10 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
var handler_provider_1 = require("./handler-provider");
|
5
|
-
Object.defineProperty(exports, "TransactionHandlerProvider", { enumerable: true, get: function () { return handler_provider_1.TransactionHandlerProvider; } });
|
6
|
-
var handler_registry_1 = require("./handler-registry");
|
7
|
-
Object.defineProperty(exports, "Registry", { enumerable: true, get: function () { return handler_registry_1.TransactionHandlerRegistry; } });
|
8
|
-
var transaction_1 = require("./transaction");
|
9
|
-
Object.defineProperty(exports, "TransactionHandler", { enumerable: true, get: function () { return transaction_1.TransactionHandler; } });
|
1
|
+
export { TransactionHandlerProvider } from "./handler-provider.js";
|
2
|
+
export { TransactionHandlerRegistry as Registry } from "./handler-registry.js";
|
3
|
+
export { TransactionHandler } from "./transaction.js";
|
10
4
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/handlers/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/handlers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,0BAA0B,IAAI,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC"}
|
@@ -5,11 +5,12 @@ export declare abstract class TransactionHandler implements Contracts.Transactio
|
|
5
5
|
protected readonly logger: Contracts.Kernel.Logger;
|
6
6
|
protected readonly configuration: Contracts.Crypto.Configuration;
|
7
7
|
protected readonly verifier: Contracts.Crypto.TransactionVerifier;
|
8
|
+
protected readonly eventDispatcher: Contracts.Kernel.EventDispatcher;
|
8
9
|
verify(walletRepository: Contracts.State.WalletRepository, transaction: Contracts.Crypto.Transaction): Promise<boolean>;
|
9
10
|
throwIfCannotBeApplied(walletRepository: Contracts.State.WalletRepository, transaction: Contracts.Crypto.Transaction, sender: Contracts.State.Wallet): Promise<void>;
|
10
11
|
apply(walletRepository: Contracts.State.WalletRepository, transaction: Contracts.Crypto.Transaction): Promise<void>;
|
11
12
|
applyToSender(walletRepository: Contracts.State.WalletRepository, transaction: Contracts.Crypto.Transaction): Promise<void>;
|
12
|
-
emitEvents(transaction: Contracts.Crypto.Transaction
|
13
|
+
emitEvents(transaction: Contracts.Crypto.Transaction): void;
|
13
14
|
walletAttributes(): ReadonlyArray<{
|
14
15
|
name: string;
|
15
16
|
type: Contracts.State.AttributeType;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../source/handlers/transaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA2B,MAAM,qBAAqB,CAAC;
|
1
|
+
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../source/handlers/transaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAA2B,MAAM,qBAAqB,CAAC;AAIzE,8BACsB,kBAAmB,YAAW,SAAS,CAAC,YAAY,CAAC,kBAAkB;;IAE5F,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAG,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC;IAGtD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;IAGpD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAG,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC;IAGlE,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAG,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC;IAGnE,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAG,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC;IAEzD,MAAM,CAClB,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAClD,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,GACvC,OAAO,CAAC,OAAO,CAAC;IAcN,sBAAsB,CAClC,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAClD,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,EACzC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,GAC5B,OAAO,CAAC,IAAI,CAAC;IA2DH,KAAK,CACjB,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAClD,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,GACvC,OAAO,CAAC,IAAI,CAAC;IAKH,aAAa,CACzB,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAClD,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,GACvC,OAAO,CAAC,IAAI,CAAC;IAmBT,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI;IAE3D,gBAAgB,IAAI,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,aAAa,CAAA;KAAE,CAAC;IAIlF,sBAAsB,CAClC,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAClD,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,GACvC,OAAO,CAAC,IAAI,CAAC;IAEH,gBAAgB,CAC5B,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,EAC9B,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,eAAe,EAC7C,cAAc,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,mBAAmB,GACnD,OAAO,CAAC,OAAO,CAAC;IAYnB,SAAS,CAAC,eAAe,CAAC,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE;aAS3F,cAAc,IAAI,SAAS,CAAC,MAAM,CAAC,sBAAsB;aAEzD,YAAY,IAAI,aAAa,CAAC,6BAA6B,CAAC;aAE5D,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;aAE/B,gBAAgB,CAC/B,gBAAgB,EAAE,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAClD,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,GACvC,OAAO,CAAC,IAAI,CAAC;CAChB;AAED,MAAM,MAAM,6BAA6B,GAAG,UAAU,kBAAkB,CAAC"}
|
@@ -1,4 +1,3 @@
|
|
1
|
-
"use strict";
|
2
1
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
2
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
3
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
@@ -14,19 +13,16 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
14
13
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
15
14
|
};
|
16
15
|
var _TransactionHandler_instances, _TransactionHandler_verifyTransactionNonceApply;
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
const kernel_1 = require("@mainsail/kernel");
|
22
|
-
const utils_1 = require("@mainsail/utils");
|
23
|
-
// @TODO revisit the implementation, container usage and arguments after database rework
|
16
|
+
import { inject, injectable } from "@mainsail/container";
|
17
|
+
import { Contracts, Exceptions, Identifiers } from "@mainsail/contracts";
|
18
|
+
import { Utils as AppUtils } from "@mainsail/kernel";
|
19
|
+
import { BigNumber } from "@mainsail/utils";
|
24
20
|
let TransactionHandler = class TransactionHandler {
|
25
21
|
constructor() {
|
26
22
|
_TransactionHandler_instances.add(this);
|
27
23
|
}
|
28
24
|
async verify(walletRepository, transaction) {
|
29
|
-
|
25
|
+
AppUtils.assert.defined(transaction.data.senderPublicKey);
|
30
26
|
const senderWallet = await walletRepository.findByPublicKey(transaction.data.senderPublicKey);
|
31
27
|
if (senderWallet.hasMultiSignature()) {
|
32
28
|
return this.verifySignatures(senderWallet, transaction.data);
|
@@ -35,38 +31,38 @@ let TransactionHandler = class TransactionHandler {
|
|
35
31
|
}
|
36
32
|
async throwIfCannotBeApplied(walletRepository, transaction, sender) {
|
37
33
|
const senderWallet = walletRepository.findByAddress(sender.getAddress());
|
38
|
-
|
34
|
+
AppUtils.assert.defined(sender.getPublicKey());
|
39
35
|
if (!walletRepository.hasByPublicKey(sender.getPublicKey()) && senderWallet.getBalance().isZero()) {
|
40
|
-
throw new
|
36
|
+
throw new Exceptions.ColdWalletError();
|
41
37
|
}
|
42
38
|
// @TODO: enforce fees here to support dynamic cases
|
43
39
|
__classPrivateFieldGet(this, _TransactionHandler_instances, "m", _TransactionHandler_verifyTransactionNonceApply).call(this, sender, transaction);
|
44
40
|
if (sender.getBalance().minus(transaction.data.amount).minus(transaction.data.fee).isNegative() &&
|
45
41
|
this.configuration.getHeight() > 0) {
|
46
|
-
throw new
|
42
|
+
throw new Exceptions.InsufficientBalanceError();
|
47
43
|
}
|
48
44
|
if (transaction.data.senderPublicKey !== sender.getPublicKey()) {
|
49
|
-
throw new
|
45
|
+
throw new Exceptions.SenderWalletMismatchError();
|
50
46
|
}
|
51
47
|
// Prevent legacy multi signatures from being used
|
52
|
-
const isMultiSignatureRegistration = transaction.type ===
|
53
|
-
transaction.typeGroup ===
|
48
|
+
const isMultiSignatureRegistration = transaction.type === Contracts.Crypto.TransactionType.MultiSignature &&
|
49
|
+
transaction.typeGroup === Contracts.Crypto.TransactionTypeGroup.Core;
|
54
50
|
if (sender.hasMultiSignature()) {
|
55
|
-
|
51
|
+
AppUtils.assert.defined(transaction.data.senderPublicKey);
|
56
52
|
// Ensure the database wallet already has a multi signature, in case we checked a pool wallet.
|
57
53
|
const databaseSender = await walletRepository.findByPublicKey(transaction.data.senderPublicKey);
|
58
54
|
if (!databaseSender.hasMultiSignature()) {
|
59
|
-
throw new
|
55
|
+
throw new Exceptions.MissingMultiSignatureOnSenderError();
|
60
56
|
}
|
61
57
|
if (databaseSender.hasAttribute("multiSignature.legacy")) {
|
62
|
-
throw new
|
58
|
+
throw new Exceptions.LegacyMultiSignatureError();
|
63
59
|
}
|
64
|
-
if (!this.verifySignatures(databaseSender, transaction.data, databaseSender.getAttribute("multiSignature"))) {
|
65
|
-
throw new
|
60
|
+
if (!(await this.verifySignatures(databaseSender, transaction.data, databaseSender.getAttribute("multiSignature")))) {
|
61
|
+
throw new Exceptions.InvalidMultiSignaturesError();
|
66
62
|
}
|
67
63
|
}
|
68
64
|
else if (transaction.data.signatures && !isMultiSignatureRegistration) {
|
69
|
-
throw new
|
65
|
+
throw new Exceptions.UnsupportedMultiSignatureRegistrationTransactionError();
|
70
66
|
}
|
71
67
|
}
|
72
68
|
async apply(walletRepository, transaction) {
|
@@ -74,22 +70,18 @@ let TransactionHandler = class TransactionHandler {
|
|
74
70
|
await this.applyToRecipient(walletRepository, transaction);
|
75
71
|
}
|
76
72
|
async applyToSender(walletRepository, transaction) {
|
77
|
-
|
73
|
+
AppUtils.assert.defined(transaction.data.senderPublicKey);
|
78
74
|
const sender = await walletRepository.findByPublicKey(transaction.data.senderPublicKey);
|
79
75
|
const data = transaction.data;
|
80
76
|
await this.throwIfCannotBeApplied(walletRepository, transaction, sender);
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
else {
|
87
|
-
sender.increaseNonce();
|
88
|
-
}
|
89
|
-
const newBalance = sender.getBalance().minus(data.amount).minus(data.fee);
|
77
|
+
__classPrivateFieldGet(this, _TransactionHandler_instances, "m", _TransactionHandler_verifyTransactionNonceApply).call(this, sender, transaction);
|
78
|
+
AppUtils.assert.defined(data.nonce);
|
79
|
+
sender.setNonce(data.nonce);
|
80
|
+
// Subtract fee
|
81
|
+
const newBalance = sender.getBalance().minus(data.fee);
|
90
82
|
sender.setBalance(newBalance);
|
91
83
|
}
|
92
|
-
emitEvents(transaction
|
84
|
+
emitEvents(transaction) { }
|
93
85
|
walletAttributes() {
|
94
86
|
return [];
|
95
87
|
}
|
@@ -103,31 +95,35 @@ let TransactionHandler = class TransactionHandler {
|
|
103
95
|
.map(({ data }) => data);
|
104
96
|
}
|
105
97
|
};
|
106
|
-
exports.TransactionHandler = TransactionHandler;
|
107
98
|
_TransactionHandler_instances = new WeakSet();
|
108
99
|
_TransactionHandler_verifyTransactionNonceApply = function _TransactionHandler_verifyTransactionNonceApply(wallet, transaction) {
|
109
|
-
const nonce = transaction.data.nonce ||
|
100
|
+
const nonce = transaction.data.nonce || BigNumber.ZERO;
|
110
101
|
if (!wallet.getNonce().plus(1).isEqualTo(nonce)) {
|
111
|
-
throw new
|
102
|
+
throw new Exceptions.UnexpectedNonceError(nonce, wallet, false);
|
112
103
|
}
|
113
104
|
};
|
114
105
|
__decorate([
|
115
|
-
|
106
|
+
inject(Identifiers.Application.Instance),
|
116
107
|
__metadata("design:type", Object)
|
117
108
|
], TransactionHandler.prototype, "app", void 0);
|
118
109
|
__decorate([
|
119
|
-
|
110
|
+
inject(Identifiers.Services.Log.Service),
|
120
111
|
__metadata("design:type", Object)
|
121
112
|
], TransactionHandler.prototype, "logger", void 0);
|
122
113
|
__decorate([
|
123
|
-
|
114
|
+
inject(Identifiers.Cryptography.Configuration),
|
124
115
|
__metadata("design:type", Object)
|
125
116
|
], TransactionHandler.prototype, "configuration", void 0);
|
126
117
|
__decorate([
|
127
|
-
|
118
|
+
inject(Identifiers.Cryptography.Transaction.Verifier),
|
128
119
|
__metadata("design:type", Object)
|
129
120
|
], TransactionHandler.prototype, "verifier", void 0);
|
130
|
-
|
131
|
-
(
|
121
|
+
__decorate([
|
122
|
+
inject(Identifiers.Services.EventDispatcher.Service),
|
123
|
+
__metadata("design:type", Object)
|
124
|
+
], TransactionHandler.prototype, "eventDispatcher", void 0);
|
125
|
+
TransactionHandler = __decorate([
|
126
|
+
injectable()
|
132
127
|
], TransactionHandler);
|
128
|
+
export { TransactionHandler };
|
133
129
|
//# sourceMappingURL=transaction.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../source/handlers/transaction.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../source/handlers/transaction.ts"],"names":[],"mappings":"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"}
|
package/distribution/index.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
export * as Handlers from "./handlers";
|
2
|
-
export * from "./service-provider";
|
3
|
-
export * as Utils from "./utils";
|
1
|
+
export * as Handlers from "./handlers/index.js";
|
2
|
+
export * from "./service-provider.js";
|
3
|
+
export * as Utils from "./utils.js";
|
4
4
|
export * as Errors from "@mainsail/contracts";
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC"}
|
package/distribution/index.js
CHANGED
@@ -1,34 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
-
}
|
8
|
-
Object.defineProperty(o, k2, desc);
|
9
|
-
}) : (function(o, m, k, k2) {
|
10
|
-
if (k2 === undefined) k2 = k;
|
11
|
-
o[k2] = m[k];
|
12
|
-
}));
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
-
}) : function(o, v) {
|
16
|
-
o["default"] = v;
|
17
|
-
});
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
-
if (mod && mod.__esModule) return mod;
|
20
|
-
var result = {};
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
-
__setModuleDefault(result, mod);
|
23
|
-
return result;
|
24
|
-
};
|
25
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
26
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
27
|
-
};
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
29
|
-
exports.Errors = exports.Utils = exports.Handlers = void 0;
|
30
|
-
exports.Handlers = __importStar(require("./handlers"));
|
31
|
-
__exportStar(require("./service-provider"), exports);
|
32
|
-
exports.Utils = __importStar(require("./utils"));
|
33
|
-
exports.Errors = __importStar(require("@mainsail/contracts"));
|
1
|
+
export * as Handlers from "./handlers/index.js";
|
2
|
+
export * from "./service-provider.js";
|
3
|
+
export * as Utils from "./utils.js";
|
4
|
+
export * as Errors from "@mainsail/contracts";
|
34
5
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC"}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { interfaces } from "@mainsail/container";
|
2
2
|
import { Providers } from "@mainsail/kernel";
|
3
|
-
import { TransactionHandlerConstructor } from "./handlers";
|
3
|
+
import { TransactionHandlerConstructor } from "./handlers/index.js";
|
4
4
|
export declare class ServiceProvider extends Providers.ServiceProvider {
|
5
5
|
static getTransactionHandlerConstructorsBinding(): (context: interfaces.Context) => TransactionHandlerConstructor[];
|
6
6
|
register(): Promise<void>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"service-provider.d.ts","sourceRoot":"","sources":["../source/service-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
1
|
+
{"version":3,"file":"service-provider.d.ts","sourceRoot":"","sources":["../source/service-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,6BAA6B,EAA8B,MAAM,qBAAqB,CAAC;AAGhG,qBAAa,eAAgB,SAAQ,SAAS,CAAC,eAAe;WAC/C,wCAAwC,IAAI,CACzD,OAAO,EAAE,UAAU,CAAC,OAAO,KACvB,6BAA6B,EAAE;IAuBvB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAezB,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;CAGzC"}
|
@@ -1,18 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
const handler_registry_1 = require("./handlers/handler-registry");
|
8
|
-
class ServiceProvider extends kernel_1.Providers.ServiceProvider {
|
1
|
+
import { Identifiers } from "@mainsail/contracts";
|
2
|
+
import { Providers } from "@mainsail/kernel";
|
3
|
+
import { TransactionHandlerRegistry } from "./handlers/handler-registry.js";
|
4
|
+
import { TransactionHandlerProvider } from "./handlers/index.js";
|
5
|
+
import { TransactionValidator } from "./transaction-validator.js";
|
6
|
+
export class ServiceProvider extends Providers.ServiceProvider {
|
9
7
|
static getTransactionHandlerConstructorsBinding() {
|
10
8
|
return (context) => {
|
11
9
|
const handlerConstructors = [];
|
12
10
|
let container = context.container;
|
13
11
|
do {
|
14
12
|
const bindingDictionary = container["_bindingDictionary"];
|
15
|
-
const handlerBindings = bindingDictionary.getMap().get(
|
13
|
+
const handlerBindings = bindingDictionary.getMap().get(Identifiers.Transaction.Handler.Instances) ?? [];
|
16
14
|
for (const handlerBinding of handlerBindings) {
|
17
15
|
if (handlerBinding.implementationType) {
|
18
16
|
handlerConstructors.push(handlerBinding.implementationType);
|
@@ -24,15 +22,18 @@ class ServiceProvider extends kernel_1.Providers.ServiceProvider {
|
|
24
22
|
};
|
25
23
|
}
|
26
24
|
async register() {
|
27
|
-
this.app.bind(
|
25
|
+
this.app.bind(Identifiers.Transaction.Handler.Provider).to(TransactionHandlerProvider).inSingletonScope();
|
28
26
|
this.app
|
29
|
-
.bind(
|
27
|
+
.bind(Identifiers.Transaction.Handler.Constructors)
|
30
28
|
.toDynamicValue(ServiceProvider.getTransactionHandlerConstructorsBinding());
|
31
|
-
this.app.bind(
|
29
|
+
this.app.bind(Identifiers.Transaction.Handler.Registry).to(TransactionHandlerRegistry);
|
30
|
+
this.app.bind(Identifiers.Transaction.Validator.Instance).to(TransactionValidator);
|
31
|
+
this.app
|
32
|
+
.bind(Identifiers.Transaction.Validator.Factory)
|
33
|
+
.toAutoFactory(Identifiers.Transaction.Validator.Instance);
|
32
34
|
}
|
33
35
|
async required() {
|
34
36
|
return true;
|
35
37
|
}
|
36
38
|
}
|
37
|
-
exports.ServiceProvider = ServiceProvider;
|
38
39
|
//# sourceMappingURL=service-provider.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"service-provider.js","sourceRoot":"","sources":["../source/service-provider.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"service-provider.js","sourceRoot":"","sources":["../source/service-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAiC,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,MAAM,OAAO,eAAgB,SAAQ,SAAS,CAAC,eAAe;IACtD,MAAM,CAAC,wCAAwC;QAGrD,OAAO,CAAC,OAA2B,EAAE,EAAE;YAEtC,MAAM,mBAAmB,GAAoC,EAAE,CAAC;YAChE,IAAI,SAAS,GAAgC,OAAO,CAAC,SAAS,CAAC;YAE/D,GAAG,CAAC;gBACH,MAAM,iBAAiB,GAAG,SAAS,CAAC,oBAAoB,CAAsB,CAAC;gBAC/E,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBAExG,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE,CAAC;oBAC9C,IAAI,cAAc,CAAC,kBAAkB,EAAE,CAAC;wBACvC,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAmD,CAAC,CAAC;oBAC9F,CAAC;gBACF,CAAC;gBAED,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;YAC9B,CAAC,QAAQ,SAAS,EAAE;YAEpB,OAAO,mBAAmB,CAAC;QAC5B,CAAC,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,QAAQ;QACpB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC,gBAAgB,EAAE,CAAC;QAE1G,IAAI,CAAC,GAAG;aACN,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC;aAClD,cAAc,CAAC,eAAe,CAAC,wCAAwC,EAAE,CAAC,CAAC;QAE7E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAC;QAEvF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC;QACnF,IAAI,CAAC,GAAG;aACN,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC;aAC/C,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAEM,KAAK,CAAC,QAAQ;QACpB,OAAO,IAAI,CAAC;IACb,CAAC;CACD"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { Contracts } from "@mainsail/contracts";
|
2
|
+
export declare class TransactionValidator implements Contracts.Transactions.TransactionValidator {
|
3
|
+
#private;
|
4
|
+
private readonly handlerRegistry;
|
5
|
+
private readonly stateService;
|
6
|
+
private readonly transactionFactory;
|
7
|
+
initialize(): void;
|
8
|
+
validate(transaction: Contracts.Crypto.Transaction): Promise<void>;
|
9
|
+
}
|
10
|
+
//# sourceMappingURL=transaction-validator.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"transaction-validator.d.ts","sourceRoot":"","sources":["../source/transaction-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAe,MAAM,qBAAqB,CAAC;AAG7D,qBACa,oBAAqB,YAAW,SAAS,CAAC,YAAY,CAAC,oBAAoB;;IAEvF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqD;IAGrF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2B;IAGxD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAuC;IAKnE,UAAU,IAAI,IAAI;IAIZ,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAQ/E"}
|
@@ -0,0 +1,62 @@
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
6
|
+
};
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
9
|
+
};
|
10
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
11
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
12
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
13
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
14
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
15
|
+
};
|
16
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
17
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
18
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
19
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
20
|
+
};
|
21
|
+
var _TransactionValidator_walletRepository;
|
22
|
+
import { inject, injectable, postConstruct } from "@mainsail/container";
|
23
|
+
import { Contracts, Identifiers } from "@mainsail/contracts";
|
24
|
+
import { strictEqual } from "assert";
|
25
|
+
let TransactionValidator = class TransactionValidator {
|
26
|
+
constructor() {
|
27
|
+
_TransactionValidator_walletRepository.set(this, void 0);
|
28
|
+
}
|
29
|
+
initialize() {
|
30
|
+
__classPrivateFieldSet(this, _TransactionValidator_walletRepository, this.stateService.createStoreClone().walletRepository, "f");
|
31
|
+
}
|
32
|
+
async validate(transaction) {
|
33
|
+
const deserialized = await this.transactionFactory.fromBytes(transaction.serialized);
|
34
|
+
strictEqual(transaction.id, deserialized.id);
|
35
|
+
const handler = await this.handlerRegistry.getActivatedHandlerForData(transaction.data);
|
36
|
+
await handler.apply(__classPrivateFieldGet(this, _TransactionValidator_walletRepository, "f"), transaction);
|
37
|
+
}
|
38
|
+
};
|
39
|
+
_TransactionValidator_walletRepository = new WeakMap();
|
40
|
+
__decorate([
|
41
|
+
inject(Identifiers.Transaction.Handler.Registry),
|
42
|
+
__metadata("design:type", Object)
|
43
|
+
], TransactionValidator.prototype, "handlerRegistry", void 0);
|
44
|
+
__decorate([
|
45
|
+
inject(Identifiers.State.Service),
|
46
|
+
__metadata("design:type", Object)
|
47
|
+
], TransactionValidator.prototype, "stateService", void 0);
|
48
|
+
__decorate([
|
49
|
+
inject(Identifiers.Cryptography.Transaction.Factory),
|
50
|
+
__metadata("design:type", Object)
|
51
|
+
], TransactionValidator.prototype, "transactionFactory", void 0);
|
52
|
+
__decorate([
|
53
|
+
postConstruct(),
|
54
|
+
__metadata("design:type", Function),
|
55
|
+
__metadata("design:paramtypes", []),
|
56
|
+
__metadata("design:returntype", void 0)
|
57
|
+
], TransactionValidator.prototype, "initialize", null);
|
58
|
+
TransactionValidator = __decorate([
|
59
|
+
injectable()
|
60
|
+
], TransactionValidator);
|
61
|
+
export { TransactionValidator };
|
62
|
+
//# sourceMappingURL=transaction-validator.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"transaction-validator.js","sourceRoot":"","sources":["../source/transaction-validator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG9B,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAA1B;QAUN,yDAAqD;IAetD,CAAC;IAZO,UAAU;QAChB,uBAAA,IAAI,0CAAqB,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC,gBAAgB,MAAA,CAAC;IAChF,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,WAAyC;QAC9D,MAAM,YAAY,GAAiC,MAAM,IAAI,CAAC,kBAAkB,CAAC,SAAS,CACzF,WAAW,CAAC,UAAU,CACtB,CAAC;QACF,WAAW,CAAC,WAAW,CAAC,EAAE,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxF,MAAM,OAAO,CAAC,KAAK,CAAC,uBAAA,IAAI,8CAAkB,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;CACD,CAAA;;AAvBiB;IADhB,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;;6DACoC;AAGpE;IADhB,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;;0DACsB;AAGvC;IADhB,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC;;gEACqB;AAKnE;IADN,aAAa,EAAE;;;;sDAGf;AAfW,oBAAoB;IADhC,UAAU,EAAE;GACA,oBAAoB,CAyBhC"}
|
package/distribution/utils.js
CHANGED
@@ -1,6 +1,2 @@
|
|
1
|
-
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.isRecipientOnActiveNetwork = void 0;
|
4
|
-
const isRecipientOnActiveNetwork = (recipientId, base58, configuration) => base58.decodeCheck(recipientId).readUInt8(0) === configuration.get("network.pubKeyHash");
|
5
|
-
exports.isRecipientOnActiveNetwork = isRecipientOnActiveNetwork;
|
1
|
+
export const isRecipientOnActiveNetwork = (recipientId, base58, configuration) => base58.decodeCheck(recipientId).readUInt8(0) === configuration.get("network.pubKeyHash");
|
6
2
|
//# sourceMappingURL=utils.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../source/utils.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../source/utils.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACzC,WAAmB,EACnB,MAAM,EACN,aAA6C,EACnC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC"}
|
package/package.json
CHANGED
@@ -1,24 +1,26 @@
|
|
1
1
|
{
|
2
2
|
"name": "@mainsail/transactions",
|
3
|
-
"version": "0.0.1-alpha.
|
3
|
+
"version": "0.0.1-alpha.20",
|
4
4
|
"description": "Transaction Services for Mainsail blockchain",
|
5
5
|
"license": "GPL-3.0-only",
|
6
6
|
"contributors": [],
|
7
|
+
"type": "module",
|
7
8
|
"main": "distribution/index.js",
|
8
9
|
"types": "distribution/index.d.ts",
|
9
10
|
"files": [
|
10
11
|
"/distribution"
|
11
12
|
],
|
12
13
|
"dependencies": {
|
13
|
-
"@mainsail/
|
14
|
-
"@mainsail/
|
15
|
-
"@mainsail/
|
16
|
-
"@mainsail/kernel": "0.0.1-alpha.
|
17
|
-
"@mainsail/utils": "0.0.1-alpha.
|
14
|
+
"@mainsail/contracts": "0.0.1-alpha.20",
|
15
|
+
"@mainsail/crypto-transaction": "0.0.1-alpha.20",
|
16
|
+
"@mainsail/container": "0.0.1-alpha.20",
|
17
|
+
"@mainsail/kernel": "0.0.1-alpha.20",
|
18
|
+
"@mainsail/utils": "0.0.1-alpha.20"
|
18
19
|
},
|
19
20
|
"devDependencies": {
|
20
21
|
"dayjs": "1.11.10",
|
21
|
-
"uvu": "^0.5.6"
|
22
|
+
"uvu": "^0.5.6",
|
23
|
+
"@mainsail/crypto-config": "0.0.1-alpha.20"
|
22
24
|
},
|
23
25
|
"engines": {
|
24
26
|
"node": ">=20.x"
|
@@ -28,9 +30,10 @@
|
|
28
30
|
"build:watch": "pnpm run clean && tsc -w",
|
29
31
|
"clean": "del distribution",
|
30
32
|
"release": "pnpm publish --access public",
|
31
|
-
"test": "
|
33
|
+
"test": "pnpm run uvu source .test.ts",
|
32
34
|
"test:coverage": "c8 pnpm run test",
|
33
35
|
"test:coverage:html": "c8 -r html --all pnpm run test",
|
34
|
-
"test:file": "
|
36
|
+
"test:file": "pnpm run uvu source",
|
37
|
+
"uvu": "tsx --tsconfig ../../tsconfig.test.json ./node_modules/uvu/bin.js"
|
35
38
|
}
|
36
39
|
}
|