@mainsail/transactions 0.0.1-alpha.9 → 0.0.1-evm.10
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/distribution/handlers/handler-provider.d.ts +0 -2
- package/distribution/handlers/handler-provider.d.ts.map +1 -1
- package/distribution/handlers/handler-provider.js +10 -59
- package/distribution/handlers/handler-provider.js.map +1 -1
- package/distribution/handlers/handler-registry.d.ts +3 -3
- package/distribution/handlers/handler-registry.d.ts.map +1 -1
- package/distribution/handlers/handler-registry.js +18 -30
- 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 +7 -14
- package/distribution/handlers/transaction.d.ts.map +1 -1
- package/distribution/handlers/transaction.js +31 -100
- 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 +9 -0
- package/distribution/transaction-validator.d.ts.map +1 -0
- package/distribution/transaction-validator.js +55 -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 +9 -9
@@ -1,9 +1,7 @@
|
|
1
1
|
import { Contracts } from "@mainsail/contracts";
|
2
2
|
export declare class TransactionHandlerProvider implements Contracts.Transactions.TransactionHandlerProvider {
|
3
3
|
#private;
|
4
|
-
private readonly attributeRepository;
|
5
4
|
private readonly handlerConstructors;
|
6
|
-
private readonly transactionRegistry;
|
7
5
|
isRegistrationRequired(): boolean;
|
8
6
|
registerHandlers(): void;
|
9
7
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"handler-provider.d.ts","sourceRoot":"","sources":["../../source/handlers/handler-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,
|
1
|
+
{"version":3,"file":"handler-provider.d.ts","sourceRoot":"","sources":["../../source/handlers/handler-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAe,MAAM,qBAAqB,CAAC;AAK7D,qBACa,0BAA2B,YAAW,SAAS,CAAC,YAAY,CAAC,0BAA0B;;IAEnG,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAmC;IAKhE,sBAAsB,IAAI,OAAO;IAIjC,gBAAgB,IAAI,IAAI;CAc/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,14 @@ 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,
|
23
|
-
|
24
|
-
|
25
|
-
const container_1 = require("@mainsail/container");
|
26
|
-
const contracts_1 = require("@mainsail/contracts");
|
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;
|
22
|
+
import { inject, injectable } from "@mainsail/container";
|
23
|
+
import { Identifiers } from "@mainsail/contracts";
|
29
24
|
let TransactionHandlerProvider = class TransactionHandlerProvider {
|
30
25
|
constructor() {
|
31
26
|
_TransactionHandlerProvider_instances.add(this);
|
32
27
|
_TransactionHandlerProvider_registered.set(this, false);
|
28
|
+
_TransactionHandlerProvider_handlerDependencyLookup.set(this, new Set());
|
33
29
|
}
|
34
30
|
isRegistrationRequired() {
|
35
31
|
return __classPrivateFieldGet(this, _TransactionHandlerProvider_registered, "f") === false;
|
@@ -41,65 +37,20 @@ let TransactionHandlerProvider = class TransactionHandlerProvider {
|
|
41
37
|
__classPrivateFieldSet(this, _TransactionHandlerProvider_registered, true, "f");
|
42
38
|
}
|
43
39
|
};
|
44
|
-
exports.TransactionHandlerProvider = TransactionHandlerProvider;
|
45
40
|
_TransactionHandlerProvider_registered = new WeakMap();
|
41
|
+
_TransactionHandlerProvider_handlerDependencyLookup = new WeakMap();
|
46
42
|
_TransactionHandlerProvider_instances = new WeakSet();
|
47
43
|
_TransactionHandlerProvider_registerHandler = function _TransactionHandlerProvider_registerHandler(handlerConstructor) {
|
48
44
|
const handler = new handlerConstructor();
|
49
45
|
const transactionConstructor = handler.getConstructor();
|
50
|
-
|
51
|
-
kernel_1.Utils.assert.defined(transactionConstructor.typeGroup);
|
52
|
-
const internalType = crypto_transaction_1.InternalTransactionType.from(transactionConstructor.type, transactionConstructor.typeGroup);
|
53
|
-
if (__classPrivateFieldGet(this, _TransactionHandlerProvider_instances, "m", _TransactionHandlerProvider_hasOtherHandlerHandling).call(this, handlerConstructor, internalType, transactionConstructor.version)) {
|
54
|
-
throw new contracts_1.Exceptions.AlreadyRegisteredError(internalType);
|
55
|
-
}
|
56
|
-
for (const dependency of handler.dependencies()) {
|
57
|
-
if (__classPrivateFieldGet(this, _TransactionHandlerProvider_instances, "m", _TransactionHandlerProvider_hasOtherHandler).call(this, handlerConstructor, dependency) === false) {
|
58
|
-
throw new contracts_1.Exceptions.UnsatisfiedDependencyError(internalType);
|
59
|
-
}
|
60
|
-
}
|
61
|
-
for (const attribute of handler.walletAttributes()) {
|
62
|
-
if (!this.attributeRepository.has(attribute.name)) {
|
63
|
-
this.attributeRepository.set(attribute.name, attribute.type);
|
64
|
-
}
|
65
|
-
}
|
66
|
-
if (transactionConstructor.typeGroup !== contracts_1.Contracts.Crypto.TransactionTypeGroup.Core) {
|
67
|
-
this.transactionRegistry.registerTransactionType(transactionConstructor);
|
68
|
-
}
|
46
|
+
__classPrivateFieldGet(this, _TransactionHandlerProvider_handlerDependencyLookup, "f").add(transactionConstructor);
|
69
47
|
};
|
70
|
-
_TransactionHandlerProvider_hasOtherHandlerHandling = function _TransactionHandlerProvider_hasOtherHandlerHandling(handlerConstructor, internalType, version) {
|
71
|
-
for (const otherHandlerConstructor of this.handlerConstructors) {
|
72
|
-
if (otherHandlerConstructor === handlerConstructor) {
|
73
|
-
continue;
|
74
|
-
}
|
75
|
-
const otherHandler = new otherHandlerConstructor();
|
76
|
-
const otherTransactionConstructor = otherHandler.getConstructor();
|
77
|
-
kernel_1.Utils.assert.defined(otherTransactionConstructor.type);
|
78
|
-
kernel_1.Utils.assert.defined(otherTransactionConstructor.typeGroup);
|
79
|
-
const otherInternalType = crypto_transaction_1.InternalTransactionType.from(otherTransactionConstructor.type, otherTransactionConstructor.typeGroup);
|
80
|
-
if (otherInternalType === internalType && otherTransactionConstructor.version === version) {
|
81
|
-
return true;
|
82
|
-
}
|
83
|
-
}
|
84
|
-
return false;
|
85
|
-
};
|
86
|
-
_TransactionHandlerProvider_hasOtherHandler = function _TransactionHandlerProvider_hasOtherHandler(handlerConstructor, dependency) {
|
87
|
-
return this.handlerConstructors.some((otherHandlerConstructor) => otherHandlerConstructor.name !== handlerConstructor.name &&
|
88
|
-
otherHandlerConstructor.name === dependency.name);
|
89
|
-
};
|
90
|
-
__decorate([
|
91
|
-
(0, container_1.inject)(contracts_1.Identifiers.State.Wallet.Attributes),
|
92
|
-
__metadata("design:type", Object)
|
93
|
-
], TransactionHandlerProvider.prototype, "attributeRepository", void 0);
|
94
48
|
__decorate([
|
95
|
-
|
49
|
+
inject(Identifiers.Transaction.Handler.Constructors),
|
96
50
|
__metadata("design:type", Array)
|
97
51
|
], TransactionHandlerProvider.prototype, "handlerConstructors", void 0);
|
98
|
-
__decorate([
|
99
|
-
(
|
100
|
-
__metadata("design:type", Object)
|
101
|
-
], TransactionHandlerProvider.prototype, "transactionRegistry", void 0);
|
102
|
-
exports.TransactionHandlerProvider = TransactionHandlerProvider = __decorate([
|
103
|
-
(0, container_1.injectable)()
|
52
|
+
TransactionHandlerProvider = __decorate([
|
53
|
+
injectable()
|
104
54
|
], TransactionHandlerProvider);
|
55
|
+
export { TransactionHandlerProvider };
|
105
56
|
//# 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":";;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAa,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMtD,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAAhC;;QAIN,iDAAc,KAAK,EAAC;QACpB,8DAA2B,IAAI,GAAG,EAA0B,EAAC;IAoB9D,CAAC;IAlBO,sBAAsB;QAC5B,OAAO,uBAAA,IAAI,8CAAY,KAAK,KAAK,CAAC;IACnC,CAAC;IAEM,gBAAgB;QACtB,KAAK,MAAM,kBAAkB,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3D,uBAAA,IAAI,0FAAiB,MAArB,IAAI,EAAkB,kBAAkB,CAAC,CAAC;QAC3C,CAAC;QAED,uBAAA,IAAI,0CAAe,IAAI,MAAA,CAAC;IACzB,CAAC;CAQD,CAAA;;;;mGANiB,kBAAiD;IACjE,MAAM,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACzC,MAAM,sBAAsB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAExD,uBAAA,IAAI,2DAAyB,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AAC3D,CAAC;AAtBgB;IADhB,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC;;uEACkB;AAF3D,0BAA0B;IADtC,UAAU,EAAE;GACA,0BAA0B,CAyBtC"}
|
@@ -1,13 +1,13 @@
|
|
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;
|
6
6
|
initialize(): void;
|
7
7
|
getRegisteredHandlers(): TransactionHandler[];
|
8
|
-
getRegisteredHandlerByType(internalType:
|
8
|
+
getRegisteredHandlerByType(internalType: number, version?: number): TransactionHandler;
|
9
9
|
getActivatedHandlers(): Promise<TransactionHandler[]>;
|
10
|
-
getActivatedHandlerByType(internalType:
|
10
|
+
getActivatedHandlerByType(internalType: number, version?: number): Promise<TransactionHandler>;
|
11
11
|
getActivatedHandlerForData(transactionData: Contracts.Crypto.TransactionData): Promise<TransactionHandler>;
|
12
12
|
}
|
13
13
|
//# sourceMappingURL=handler-registry.d.ts.map
|
@@ -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;
|
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;AAIzE,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,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,kBAAkB;IAM3E,oBAAoB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IASrD,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAQzF,0BAA0B,CACtC,eAAe,EAAE,SAAS,CAAC,MAAM,CAAC,eAAe,GAC/C,OAAO,CAAC,kBAAkB,CAAC;CAG9B"}
|
@@ -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,10 @@ 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
|
-
const crypto_transaction_1 = require("@mainsail/crypto-transaction");
|
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 { Utils } from "@mainsail/kernel";
|
13
|
+
import { TransactionHandlerProvider } from "./handler-provider.js";
|
18
14
|
let TransactionHandlerRegistry = class TransactionHandlerRegistry {
|
19
15
|
initialize() {
|
20
16
|
if (this.provider.isRegistrationRequired()) {
|
@@ -24,17 +20,10 @@ let TransactionHandlerRegistry = class TransactionHandlerRegistry {
|
|
24
20
|
getRegisteredHandlers() {
|
25
21
|
return this.handlers;
|
26
22
|
}
|
27
|
-
getRegisteredHandlerByType(internalType, version =
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
kernel_1.Utils.assert.defined(transactionConstructor.typeGroup);
|
32
|
-
const handlerInternalType = crypto_transaction_1.InternalTransactionType.from(transactionConstructor.type, transactionConstructor.typeGroup);
|
33
|
-
if (handlerInternalType === internalType && transactionConstructor.version === version) {
|
34
|
-
return handler;
|
35
|
-
}
|
36
|
-
}
|
37
|
-
throw new contracts_1.Exceptions.InvalidTransactionTypeError(internalType);
|
23
|
+
getRegisteredHandlerByType(internalType, version = 0) {
|
24
|
+
const [handler] = this.handlers;
|
25
|
+
Utils.assert.defined(handler);
|
26
|
+
return handler;
|
38
27
|
}
|
39
28
|
async getActivatedHandlers() {
|
40
29
|
const promises = this.handlers.map(async (handler) => [handler, await handler.isActivated()]);
|
@@ -42,34 +31,33 @@ let TransactionHandlerRegistry = class TransactionHandlerRegistry {
|
|
42
31
|
const activated = results.filter(([_, activated]) => activated);
|
43
32
|
return activated.map(([handler, _]) => handler);
|
44
33
|
}
|
45
|
-
async getActivatedHandlerByType(internalType, version =
|
34
|
+
async getActivatedHandlerByType(internalType, version = 0) {
|
46
35
|
const handler = this.getRegisteredHandlerByType(internalType, version);
|
47
36
|
if (await handler.isActivated()) {
|
48
37
|
return handler;
|
49
38
|
}
|
50
|
-
throw new
|
39
|
+
throw new Exceptions.DeactivatedTransactionHandlerError(internalType);
|
51
40
|
}
|
52
41
|
async getActivatedHandlerForData(transactionData) {
|
53
|
-
|
54
|
-
return this.getActivatedHandlerByType(internalType, transactionData.version);
|
42
|
+
return this.getActivatedHandlerByType(0, 0);
|
55
43
|
}
|
56
44
|
};
|
57
|
-
exports.TransactionHandlerRegistry = TransactionHandlerRegistry;
|
58
45
|
__decorate([
|
59
|
-
|
60
|
-
__metadata("design:type",
|
46
|
+
inject(Identifiers.Transaction.Handler.Provider),
|
47
|
+
__metadata("design:type", TransactionHandlerProvider)
|
61
48
|
], TransactionHandlerRegistry.prototype, "provider", void 0);
|
62
49
|
__decorate([
|
63
|
-
|
50
|
+
multiInject(Identifiers.Transaction.Handler.Instances),
|
64
51
|
__metadata("design:type", Array)
|
65
52
|
], TransactionHandlerRegistry.prototype, "handlers", void 0);
|
66
53
|
__decorate([
|
67
|
-
|
54
|
+
postConstruct(),
|
68
55
|
__metadata("design:type", Function),
|
69
56
|
__metadata("design:paramtypes", []),
|
70
57
|
__metadata("design:returntype", void 0)
|
71
58
|
], TransactionHandlerRegistry.prototype, "initialize", null);
|
72
|
-
|
73
|
-
|
59
|
+
TransactionHandlerRegistry = __decorate([
|
60
|
+
injectable()
|
74
61
|
], TransactionHandlerRegistry);
|
62
|
+
export { TransactionHandlerRegistry };
|
75
63
|
//# 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,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,CAAC,YAAoB,EAAE,OAAO,GAAG,CAAC;QAClE,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAChC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAqB,OAAO,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC;IAChB,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,CAAC,YAAoB,EAAE,OAAO,GAAG,CAAC;QACvE,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,OAAO,IAAI,CAAC,yBAAyB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;CACD,CAAA;AA5CiB;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,CA8CtC"}
|
@@ -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"}
|
@@ -1,26 +1,19 @@
|
|
1
1
|
import { Contracts } from "@mainsail/contracts";
|
2
2
|
export declare abstract class TransactionHandler implements Contracts.Transactions.TransactionHandler {
|
3
|
-
#private;
|
4
3
|
protected readonly app: Contracts.Kernel.Application;
|
4
|
+
protected readonly gasFeeCalculator: Contracts.Evm.GasFeeCalculator;
|
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
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
name: string;
|
15
|
-
type: Contracts.State.AttributeType;
|
16
|
-
}>;
|
17
|
-
throwIfCannotEnterPool(walletRepository: Contracts.State.WalletRepository, transaction: Contracts.Crypto.Transaction): Promise<void>;
|
18
|
-
verifySignatures(wallet: Contracts.State.Wallet, transaction: Contracts.Crypto.TransactionData, multiSignature?: Contracts.Crypto.MultiSignatureAsset): Promise<boolean>;
|
19
|
-
protected allTransactions(transactions: Contracts.Crypto.Transaction[]): Contracts.Crypto.TransactionData[];
|
8
|
+
protected readonly eventDispatcher: Contracts.Kernel.EventDispatcher;
|
9
|
+
verify(transaction: Contracts.Crypto.Transaction): Promise<boolean>;
|
10
|
+
throwIfCannotBeApplied(transaction: Contracts.Crypto.Transaction, sender: Contracts.State.Wallet): Promise<void>;
|
11
|
+
emitEvents(transaction: Contracts.Crypto.Transaction): void;
|
12
|
+
verifySignatures(wallet: Contracts.State.Wallet, transaction: Contracts.Crypto.TransactionData, multiSignature: Contracts.Crypto.MultiSignatureAsset): Promise<boolean>;
|
13
|
+
abstract apply(context: Contracts.Transactions.TransactionHandlerContext, transaction: Contracts.Crypto.Transaction): Promise<Contracts.Evm.TransactionReceipt>;
|
20
14
|
abstract getConstructor(): Contracts.Crypto.TransactionConstructor;
|
21
15
|
abstract dependencies(): ReadonlyArray<TransactionHandlerConstructor>;
|
22
16
|
abstract isActivated(): Promise<boolean>;
|
23
|
-
abstract applyToRecipient(walletRepository: Contracts.State.WalletRepository, transaction: Contracts.Crypto.Transaction): Promise<void>;
|
24
17
|
}
|
25
18
|
export type TransactionHandlerConstructor = new () => TransactionHandler;
|
26
19
|
//# sourceMappingURL=transaction.d.ts.map
|
@@ -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;AAGzE,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,gBAAgB,EAAG,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAGrE,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,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAKnE,sBAAsB,CAClC,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,EACzC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,GAC5B,OAAO,CAAC,IAAI,CAAC;IAiBT,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI;IAErD,gBAAgB,CAC5B,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,EAC9B,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,eAAe,EAC7C,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC,mBAAmB,GAClD,OAAO,CAAC,OAAO,CAAC;aAIH,KAAK,CACpB,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,yBAAyB,EACzD,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,GACvC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC;aAE5B,cAAc,IAAI,SAAS,CAAC,MAAM,CAAC,sBAAsB;aAEzD,YAAY,IAAI,aAAa,CAAC,6BAA6B,CAAC;aAE5D,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAC/C;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);
|
@@ -8,126 +7,58 @@ 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
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
15
|
-
};
|
16
|
-
var _TransactionHandler_instances, _TransactionHandler_verifyTransactionNonceApply;
|
17
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
18
|
-
exports.TransactionHandler = void 0;
|
19
|
-
const container_1 = require("@mainsail/container");
|
20
|
-
const contracts_1 = require("@mainsail/contracts");
|
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
|
10
|
+
import { inject, injectable } from "@mainsail/container";
|
11
|
+
import { Contracts, Exceptions, Identifiers } from "@mainsail/contracts";
|
12
|
+
import { Utils as AppUtils } from "@mainsail/kernel";
|
24
13
|
let TransactionHandler = class TransactionHandler {
|
25
|
-
|
26
|
-
|
27
|
-
}
|
28
|
-
async verify(walletRepository, transaction) {
|
29
|
-
kernel_1.Utils.assert.defined(transaction.data.senderPublicKey);
|
30
|
-
const senderWallet = await walletRepository.findByPublicKey(transaction.data.senderPublicKey);
|
31
|
-
if (senderWallet.hasMultiSignature()) {
|
32
|
-
return this.verifySignatures(senderWallet, transaction.data);
|
33
|
-
}
|
14
|
+
async verify(transaction) {
|
15
|
+
AppUtils.assert.defined(transaction.data.senderAddress);
|
34
16
|
return this.verifier.verifyHash(transaction.data);
|
35
17
|
}
|
36
|
-
async throwIfCannotBeApplied(
|
37
|
-
|
38
|
-
|
39
|
-
if (!walletRepository.hasByPublicKey(sender.getPublicKey()) && senderWallet.getBalance().isZero()) {
|
40
|
-
throw new contracts_1.Exceptions.ColdWalletError();
|
18
|
+
async throwIfCannotBeApplied(transaction, sender) {
|
19
|
+
if (!sender.getNonce().isEqualTo(transaction.data.nonce)) {
|
20
|
+
throw new Exceptions.UnexpectedNonceError(transaction.data.nonce, sender);
|
41
21
|
}
|
42
|
-
|
43
|
-
|
44
|
-
|
22
|
+
if (sender
|
23
|
+
.getBalance()
|
24
|
+
.minus(transaction.data.value)
|
25
|
+
.minus(this.gasFeeCalculator.calculate(transaction))
|
26
|
+
.isNegative() &&
|
45
27
|
this.configuration.getHeight() > 0) {
|
46
|
-
throw new
|
47
|
-
}
|
48
|
-
if (transaction.data.senderPublicKey !== sender.getPublicKey()) {
|
49
|
-
throw new contracts_1.Exceptions.SenderWalletMismatchError();
|
50
|
-
}
|
51
|
-
// Prevent legacy multi signatures from being used
|
52
|
-
const isMultiSignatureRegistration = transaction.type === contracts_1.Contracts.Crypto.TransactionType.MultiSignature &&
|
53
|
-
transaction.typeGroup === contracts_1.Contracts.Crypto.TransactionTypeGroup.Core;
|
54
|
-
if (sender.hasMultiSignature()) {
|
55
|
-
kernel_1.Utils.assert.defined(transaction.data.senderPublicKey);
|
56
|
-
// Ensure the database wallet already has a multi signature, in case we checked a pool wallet.
|
57
|
-
const databaseSender = await walletRepository.findByPublicKey(transaction.data.senderPublicKey);
|
58
|
-
if (!databaseSender.hasMultiSignature()) {
|
59
|
-
throw new contracts_1.Exceptions.MissingMultiSignatureOnSenderError();
|
60
|
-
}
|
61
|
-
if (databaseSender.hasAttribute("multiSignature.legacy")) {
|
62
|
-
throw new contracts_1.Exceptions.LegacyMultiSignatureError();
|
63
|
-
}
|
64
|
-
if (!this.verifySignatures(databaseSender, transaction.data, databaseSender.getAttribute("multiSignature"))) {
|
65
|
-
throw new contracts_1.Exceptions.InvalidMultiSignaturesError();
|
66
|
-
}
|
67
|
-
}
|
68
|
-
else if (transaction.data.signatures && !isMultiSignatureRegistration) {
|
69
|
-
throw new contracts_1.Exceptions.UnsupportedMultiSignatureRegistrationTransactionError();
|
70
|
-
}
|
71
|
-
}
|
72
|
-
async apply(walletRepository, transaction) {
|
73
|
-
await this.applyToSender(walletRepository, transaction);
|
74
|
-
await this.applyToRecipient(walletRepository, transaction);
|
75
|
-
}
|
76
|
-
async applyToSender(walletRepository, transaction) {
|
77
|
-
kernel_1.Utils.assert.defined(transaction.data.senderPublicKey);
|
78
|
-
const sender = await walletRepository.findByPublicKey(transaction.data.senderPublicKey);
|
79
|
-
const data = transaction.data;
|
80
|
-
await this.throwIfCannotBeApplied(walletRepository, transaction, sender);
|
81
|
-
if (data.version) {
|
82
|
-
__classPrivateFieldGet(this, _TransactionHandler_instances, "m", _TransactionHandler_verifyTransactionNonceApply).call(this, sender, transaction);
|
83
|
-
kernel_1.Utils.assert.defined(data.nonce);
|
84
|
-
sender.setNonce(data.nonce);
|
28
|
+
throw new Exceptions.InsufficientBalanceError();
|
85
29
|
}
|
86
|
-
else {
|
87
|
-
sender.increaseNonce();
|
88
|
-
}
|
89
|
-
const newBalance = sender.getBalance().minus(data.amount).minus(data.fee);
|
90
|
-
sender.setBalance(newBalance);
|
91
|
-
}
|
92
|
-
emitEvents(transaction, emitter) { }
|
93
|
-
walletAttributes() {
|
94
|
-
return [];
|
95
30
|
}
|
96
|
-
|
31
|
+
emitEvents(transaction) { }
|
97
32
|
async verifySignatures(wallet, transaction, multiSignature) {
|
98
|
-
return this.verifier.verifySignatures(transaction, multiSignature
|
99
|
-
}
|
100
|
-
allTransactions(transactions) {
|
101
|
-
return transactions
|
102
|
-
.filter(({ data }) => data.type === this.getConstructor().type && data.typeGroup === this.getConstructor().typeGroup)
|
103
|
-
.map(({ data }) => data);
|
104
|
-
}
|
105
|
-
};
|
106
|
-
exports.TransactionHandler = TransactionHandler;
|
107
|
-
_TransactionHandler_instances = new WeakSet();
|
108
|
-
_TransactionHandler_verifyTransactionNonceApply = function _TransactionHandler_verifyTransactionNonceApply(wallet, transaction) {
|
109
|
-
const nonce = transaction.data.nonce || utils_1.BigNumber.ZERO;
|
110
|
-
if (!wallet.getNonce().plus(1).isEqualTo(nonce)) {
|
111
|
-
throw new contracts_1.Exceptions.UnexpectedNonceError(nonce, wallet, false);
|
33
|
+
return this.verifier.verifySignatures(transaction, multiSignature);
|
112
34
|
}
|
113
35
|
};
|
114
36
|
__decorate([
|
115
|
-
|
37
|
+
inject(Identifiers.Application.Instance),
|
116
38
|
__metadata("design:type", Object)
|
117
39
|
], TransactionHandler.prototype, "app", void 0);
|
118
40
|
__decorate([
|
119
|
-
|
41
|
+
inject(Identifiers.Evm.Gas.FeeCalculator),
|
42
|
+
__metadata("design:type", Object)
|
43
|
+
], TransactionHandler.prototype, "gasFeeCalculator", void 0);
|
44
|
+
__decorate([
|
45
|
+
inject(Identifiers.Services.Log.Service),
|
120
46
|
__metadata("design:type", Object)
|
121
47
|
], TransactionHandler.prototype, "logger", void 0);
|
122
48
|
__decorate([
|
123
|
-
|
49
|
+
inject(Identifiers.Cryptography.Configuration),
|
124
50
|
__metadata("design:type", Object)
|
125
51
|
], TransactionHandler.prototype, "configuration", void 0);
|
126
52
|
__decorate([
|
127
|
-
|
53
|
+
inject(Identifiers.Cryptography.Transaction.Verifier),
|
128
54
|
__metadata("design:type", Object)
|
129
55
|
], TransactionHandler.prototype, "verifier", void 0);
|
130
|
-
|
131
|
-
(
|
56
|
+
__decorate([
|
57
|
+
inject(Identifiers.Services.EventDispatcher.Service),
|
58
|
+
__metadata("design:type", Object)
|
59
|
+
], TransactionHandler.prototype, "eventDispatcher", void 0);
|
60
|
+
TransactionHandler = __decorate([
|
61
|
+
injectable()
|
132
62
|
], TransactionHandler);
|
63
|
+
export { TransactionHandler };
|
133
64
|
//# 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":";;;;;;;;;AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG9C,IAAe,kBAAkB,GAAjC,MAAe,kBAAkB;IAmBhC,KAAK,CAAC,MAAM,CAAC,WAAyC;QAC5D,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAS,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAEM,KAAK,CAAC,sBAAsB,CAClC,WAAyC,EACzC,MAA8B;QAE9B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,UAAU,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3E,CAAC;QAED,IACC,MAAM;aACJ,UAAU,EAAE;aACZ,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;aAC7B,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;aACnD,UAAU,EAAE;YACd,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,EACjC,CAAC;YACF,MAAM,IAAI,UAAU,CAAC,wBAAwB,EAAE,CAAC;QACjD,CAAC;IACF,CAAC;IAEM,UAAU,CAAC,WAAyC,IAAS,CAAC;IAE9D,KAAK,CAAC,gBAAgB,CAC5B,MAA8B,EAC9B,WAA6C,EAC7C,cAAoD;QAEpD,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACpE,CAAC;CAYD,CAAA;AA9DmB;IADlB,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC;;+CACa;AAGnC;IADlB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC;;4DAC2B;AAGlD;IADlB,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;;kDACW;AAGjC;IADlB,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,aAAa,CAAC;;yDACmB;AAG/C;IADlB,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC;;oDACa;AAGhD;IADlB,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC;;2DACiB;AAjBjD,kBAAkB;IADvC,UAAU,EAAE;GACS,kBAAkB,CAgEvC"}
|
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,9 @@
|
|
1
|
+
import { Contracts } from "@mainsail/contracts";
|
2
|
+
export declare class TransactionValidator implements Contracts.Transactions.TransactionValidator {
|
3
|
+
private readonly evm;
|
4
|
+
private readonly handlerRegistry;
|
5
|
+
private readonly transactionFactory;
|
6
|
+
getEvm(): Contracts.Evm.Instance;
|
7
|
+
validate(context: Contracts.Transactions.TransactionValidatorContext, transaction: Contracts.Crypto.Transaction): Promise<Contracts.Evm.TransactionReceipt>;
|
8
|
+
}
|
9
|
+
//# 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;AAI7D,qBACa,oBAAqB,YAAW,SAAS,CAAC,YAAY,CAAC,oBAAoB;IAGvF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA0B;IAG9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqD;IAGrF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAuC;IAEnE,MAAM,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ;IAI1B,QAAQ,CACpB,OAAO,EAAE,SAAS,CAAC,YAAY,CAAC,2BAA2B,EAC3D,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,GACvC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC;CA4B5C"}
|
@@ -0,0 +1,55 @@
|
|
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
|
+
import { inject, injectable, tagged } from "@mainsail/container";
|
11
|
+
import { Contracts, Identifiers } from "@mainsail/contracts";
|
12
|
+
import { Utils as AppUtils } from "@mainsail/kernel";
|
13
|
+
import { strictEqual } from "assert";
|
14
|
+
let TransactionValidator = class TransactionValidator {
|
15
|
+
getEvm() {
|
16
|
+
return this.evm;
|
17
|
+
}
|
18
|
+
async validate(context, transaction) {
|
19
|
+
const deserialized = await this.transactionFactory.fromBytes(transaction.serialized);
|
20
|
+
strictEqual(transaction.id, deserialized.id);
|
21
|
+
const { commitKey, gasLimit, timestamp, generatorAddress } = context;
|
22
|
+
const handler = await this.handlerRegistry.getActivatedHandlerForData(transaction.data);
|
23
|
+
const receipt = await handler.apply({
|
24
|
+
evm: {
|
25
|
+
blockContext: {
|
26
|
+
commitKey,
|
27
|
+
gasLimit: BigInt(gasLimit),
|
28
|
+
timestamp: BigInt(timestamp),
|
29
|
+
validatorAddress: generatorAddress,
|
30
|
+
},
|
31
|
+
instance: this.evm,
|
32
|
+
},
|
33
|
+
}, transaction);
|
34
|
+
AppUtils.assert.defined(transaction.data.senderAddress);
|
35
|
+
return receipt;
|
36
|
+
}
|
37
|
+
};
|
38
|
+
__decorate([
|
39
|
+
inject(Identifiers.Evm.Instance),
|
40
|
+
tagged("instance", "ephemeral"),
|
41
|
+
__metadata("design:type", Object)
|
42
|
+
], TransactionValidator.prototype, "evm", void 0);
|
43
|
+
__decorate([
|
44
|
+
inject(Identifiers.Transaction.Handler.Registry),
|
45
|
+
__metadata("design:type", Object)
|
46
|
+
], TransactionValidator.prototype, "handlerRegistry", void 0);
|
47
|
+
__decorate([
|
48
|
+
inject(Identifiers.Cryptography.Transaction.Factory),
|
49
|
+
__metadata("design:type", Object)
|
50
|
+
], TransactionValidator.prototype, "transactionFactory", void 0);
|
51
|
+
TransactionValidator = __decorate([
|
52
|
+
injectable()
|
53
|
+
], TransactionValidator);
|
54
|
+
export { TransactionValidator };
|
55
|
+
//# 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,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG9B,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAWzB,MAAM;QACZ,OAAO,IAAI,CAAC,GAAG,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,QAAQ,CACpB,OAA2D,EAC3D,WAAyC;QAEzC,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;QAE7C,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,OAAO,CAAC;QAErE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,KAAK,CAClC;YACC,GAAG,EAAE;gBACJ,YAAY,EAAE;oBACb,SAAS;oBACT,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;oBAC1B,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;oBAC5B,gBAAgB,EAAE,gBAAgB;iBAClC;gBACD,QAAQ,EAAE,IAAI,CAAC,GAAG;aAClB;SACD,EACD,WAAW,CACX,CAAC;QAEF,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAS,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEhE,OAAO,OAAO,CAAC;IAChB,CAAC;CACD,CAAA;AA3CiB;IAFhB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;IAChC,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC;;iDACc;AAG7B;IADhB,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;;6DACoC;AAGpE;IADhB,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC;;gEACqB;AAT9D,oBAAoB;IADhC,UAAU,EAAE;GACA,oBAAoB,CA8ChC"}
|
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,23 +1,22 @@
|
|
1
1
|
{
|
2
2
|
"name": "@mainsail/transactions",
|
3
|
-
"version": "0.0.1-
|
3
|
+
"version": "0.0.1-evm.10",
|
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/
|
17
|
-
"@mainsail/contracts": "0.0.1-alpha.9"
|
14
|
+
"@mainsail/contracts": "0.0.1-evm.10",
|
15
|
+
"@mainsail/kernel": "0.0.1-evm.10",
|
16
|
+
"@mainsail/crypto-transaction": "0.0.1-evm.10",
|
17
|
+
"@mainsail/container": "0.0.1-evm.10"
|
18
18
|
},
|
19
19
|
"devDependencies": {
|
20
|
-
"dayjs": "1.11.10",
|
21
20
|
"uvu": "^0.5.6"
|
22
21
|
},
|
23
22
|
"engines": {
|
@@ -28,9 +27,10 @@
|
|
28
27
|
"build:watch": "pnpm run clean && tsc -w",
|
29
28
|
"clean": "del distribution",
|
30
29
|
"release": "pnpm publish --access public",
|
31
|
-
"test": "
|
30
|
+
"test": "pnpm run uvu source .test.ts",
|
32
31
|
"test:coverage": "c8 pnpm run test",
|
33
32
|
"test:coverage:html": "c8 -r html --all pnpm run test",
|
34
|
-
"test:file": "
|
33
|
+
"test:file": "pnpm run uvu source",
|
34
|
+
"uvu": "tsx --tsconfig ../../tsconfig.test.json ./node_modules/uvu/bin.js"
|
35
35
|
}
|
36
36
|
}
|