@sentio/runtime 2.31.0-rc.12 → 2.31.0-rc.14
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/lib/global-config.d.ts +10 -0
- package/lib/global-config.d.ts.map +1 -0
- package/lib/global-config.js +22 -0
- package/lib/global-config.js.map +1 -0
- package/lib/global-config.test.d.ts +2 -0
- package/lib/global-config.test.d.ts.map +1 -0
- package/lib/global-config.test.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/service.d.ts.map +1 -1
- package/lib/service.js +16 -7
- package/lib/service.js.map +1 -1
- package/package.json +3 -3
- package/src/global-config.ts +34 -0
- package/src/index.ts +1 -0
- package/src/service.ts +19 -7
@@ -0,0 +1,10 @@
|
|
1
|
+
export interface ExecutionConfig {
|
2
|
+
sequential: boolean;
|
3
|
+
}
|
4
|
+
export interface GlobalConfig {
|
5
|
+
execution: ExecutionConfig;
|
6
|
+
}
|
7
|
+
export declare const GLOBAL_CONFIG: GlobalConfig;
|
8
|
+
export declare function freezeGlobalConfig(): void;
|
9
|
+
export declare function deepFreeze(object: any): any;
|
10
|
+
//# sourceMappingURL=global-config.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"global-config.d.ts","sourceRoot":"","sources":["../src/global-config.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAE9B,UAAU,EAAE,OAAO,CAAA;CACpB;AACD,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,eAAe,CAAA;CAC3B;AAGD,eAAO,MAAM,aAAa,EAAE,YAI3B,CAAA;AAED,wBAAgB,kBAAkB,SAEjC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,GAAG,OAcrC"}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
// Experimental global config, only apply to eth for now
|
2
|
+
export const GLOBAL_CONFIG = {
|
3
|
+
execution: {
|
4
|
+
sequential: false
|
5
|
+
}
|
6
|
+
};
|
7
|
+
export function freezeGlobalConfig() {
|
8
|
+
deepFreeze(GLOBAL_CONFIG.execution);
|
9
|
+
}
|
10
|
+
export function deepFreeze(object) {
|
11
|
+
// Retrieve the property names defined on object
|
12
|
+
const propNames = Reflect.ownKeys(object);
|
13
|
+
// Freeze properties before freezing self
|
14
|
+
for (const name of propNames) {
|
15
|
+
const value = object[name];
|
16
|
+
if ((value && typeof value === 'object') || typeof value === 'function') {
|
17
|
+
deepFreeze(value);
|
18
|
+
}
|
19
|
+
}
|
20
|
+
return Object.freeze(object);
|
21
|
+
}
|
22
|
+
//# sourceMappingURL=global-config.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"global-config.js","sourceRoot":"","sources":["../src/global-config.ts"],"names":[],"mappings":"AAQA,wDAAwD;AACxD,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,SAAS,EAAE;QACT,UAAU,EAAE,KAAK;KAClB;CACF,CAAA;AAED,MAAM,UAAU,kBAAkB;IAChC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;AACrC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAW;IACpC,gDAAgD;IAChD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAEzC,yCAAyC;IACzC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;QAE1B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;YACvE,UAAU,CAAC,KAAK,CAAC,CAAA;SAClB;KACF;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;AAC9B,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"global-config.test.d.ts","sourceRoot":"","sources":["../src/global-config.test.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"global-config.test.js","sourceRoot":"","sources":["../src/global-config.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAE7B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC7B,aAAa,CAAC,SAAS,GAAG;YACxB,UAAU,EAAE,IAAI;SACjB,CAAA;QAED,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;QACnC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;QAEnC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;YAChB,aAAa,CAAC,SAAS,CAAC,UAAU,GAAG,KAAK,CAAA;QAC5C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/lib/index.d.ts
CHANGED
package/lib/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,OAAO,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA"}
|
package/lib/index.js
CHANGED
package/lib/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA"}
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,cAAc,CAAA;AAC5B,OAAO,EAAE,aAAa,EAA2C,MAAM,oBAAoB,CAAA"}
|
package/lib/service.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAuB,MAAM,WAAW,CAAA;AAG5D,OAAO,EACL,WAAW,EAEX,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,8BAA8B,EAC9B,aAAa,EACb,YAAY,EACZ,KAAK,EACN,MAAM,gBAAgB,CAAA;
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAuB,MAAM,WAAW,CAAA;AAG5D,OAAO,EACL,WAAW,EAEX,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,8BAA8B,EAC9B,aAAa,EACb,YAAY,EACZ,KAAK,EACN,MAAM,gBAAgB,CAAA;AAUvB,qBAAa,oBAAqB,YAAW,8BAA8B;IACzE,OAAO,CAAC,OAAO,CAAQ;IAEvB,SAAS,EAAE,KAAK,CAAA;IAGhB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAE3C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAY;gBAEjC,MAAM,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,EAAE,MAAM,IAAI;IAK9D,SAAS,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAoB9F,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;IAsClE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC;IAQ1D,eAAe,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,sBAAsB,CAAC;IA6BxG,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAqBlF,qBAAqB,CAAC,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,WAAW;;;;CAcxF"}
|
package/lib/service.js
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
import { ServerError, Status } from 'nice-grpc';
|
2
2
|
import { RichServerError, DebugInfo } from 'nice-grpc-error-details';
|
3
|
-
import { ProcessConfigResponse
|
3
|
+
import { ProcessConfigResponse } from '@sentio/protos';
|
4
4
|
import { PluginManager } from './plugin.js';
|
5
5
|
import { errorString, mergeProcessResults } from './utils.js';
|
6
|
+
import { freezeGlobalConfig, GLOBAL_CONFIG } from './global-config.js';
|
6
7
|
BigInt.prototype.toJSON = function () {
|
7
8
|
return this.toString();
|
8
9
|
};
|
@@ -38,6 +39,7 @@ export class ProcessorServiceImpl {
|
|
38
39
|
if (this.started) {
|
39
40
|
return {};
|
40
41
|
}
|
42
|
+
freezeGlobalConfig();
|
41
43
|
try {
|
42
44
|
// for (const plugin of ['@sentio/sdk', '@sentio/sdk/eth']) {
|
43
45
|
// try {
|
@@ -74,7 +76,14 @@ export class ProcessorServiceImpl {
|
|
74
76
|
return {};
|
75
77
|
}
|
76
78
|
async processBindings(request, options) {
|
77
|
-
const promises =
|
79
|
+
const promises = [];
|
80
|
+
for (const binding of request.bindings) {
|
81
|
+
const promise = this.processBinding(binding);
|
82
|
+
if (GLOBAL_CONFIG.execution.sequential) {
|
83
|
+
await promise;
|
84
|
+
}
|
85
|
+
promises.push(promise);
|
86
|
+
}
|
78
87
|
let promise;
|
79
88
|
try {
|
80
89
|
promise = await Promise.all(promises);
|
@@ -89,7 +98,7 @@ export class ProcessorServiceImpl {
|
|
89
98
|
// updated = true
|
90
99
|
// }
|
91
100
|
return {
|
92
|
-
result
|
101
|
+
result
|
93
102
|
};
|
94
103
|
}
|
95
104
|
async processBinding(request, options) {
|
@@ -100,8 +109,8 @@ export class ProcessorServiceImpl {
|
|
100
109
|
throw new RichServerError(Status.UNAVAILABLE, 'Unhandled exception/rejection in previous request: ' + errorString(this.unhandled), [
|
101
110
|
DebugInfo.fromPartial({
|
102
111
|
detail: this.unhandled.message,
|
103
|
-
stackEntries: this.unhandled.stack?.split('\n')
|
104
|
-
})
|
112
|
+
stackEntries: this.unhandled.stack?.split('\n')
|
113
|
+
})
|
105
114
|
]);
|
106
115
|
}
|
107
116
|
const result = await PluginManager.INSTANCE.processBinding(request);
|
@@ -118,7 +127,7 @@ export class ProcessorServiceImpl {
|
|
118
127
|
// }
|
119
128
|
yield {
|
120
129
|
result,
|
121
|
-
configUpdated: result.states?.configUpdated || false
|
130
|
+
configUpdated: result.states?.configUpdated || false
|
122
131
|
};
|
123
132
|
}
|
124
133
|
}
|
@@ -127,7 +136,7 @@ function recordRuntimeInfo(results, handlerType) {
|
|
127
136
|
for (const list of [results.gauges, results.counters, results.events, results.exports]) {
|
128
137
|
list.forEach((e) => {
|
129
138
|
e.runtimeInfo = {
|
130
|
-
from: handlerType
|
139
|
+
from: handlerType
|
131
140
|
};
|
132
141
|
});
|
133
142
|
}
|
package/lib/service.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,WAAW,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAEpE,OAAO,EAML,qBAAqB,
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sentio/runtime",
|
3
|
-
"version": "2.31.0-rc.
|
3
|
+
"version": "2.31.0-rc.14",
|
4
4
|
"license": "Apache-2.0",
|
5
5
|
"type": "module",
|
6
6
|
"exports": {
|
@@ -30,10 +30,10 @@
|
|
30
30
|
"protobufjs": "^7.2.5",
|
31
31
|
"utility-types": "^3.10.0",
|
32
32
|
"winston": "^3.10.0",
|
33
|
-
"@sentio/protos": "2.31.0-rc.
|
33
|
+
"@sentio/protos": "2.31.0-rc.14"
|
34
34
|
},
|
35
35
|
"peerDependencies": {
|
36
|
-
"@sentio/sdk": "^2.31.0-rc.
|
36
|
+
"@sentio/sdk": "^2.31.0-rc.14"
|
37
37
|
},
|
38
38
|
"devDependencies": {
|
39
39
|
"@types/command-line-args": "^5.2.0",
|
@@ -0,0 +1,34 @@
|
|
1
|
+
export interface ExecutionConfig {
|
2
|
+
// Whether to execute transactions sequentially, by default it's false
|
3
|
+
sequential: boolean
|
4
|
+
}
|
5
|
+
export interface GlobalConfig {
|
6
|
+
execution: ExecutionConfig
|
7
|
+
}
|
8
|
+
|
9
|
+
// Experimental global config, only apply to eth for now
|
10
|
+
export const GLOBAL_CONFIG: GlobalConfig = {
|
11
|
+
execution: {
|
12
|
+
sequential: false
|
13
|
+
}
|
14
|
+
}
|
15
|
+
|
16
|
+
export function freezeGlobalConfig() {
|
17
|
+
deepFreeze(GLOBAL_CONFIG.execution)
|
18
|
+
}
|
19
|
+
|
20
|
+
export function deepFreeze(object: any) {
|
21
|
+
// Retrieve the property names defined on object
|
22
|
+
const propNames = Reflect.ownKeys(object)
|
23
|
+
|
24
|
+
// Freeze properties before freezing self
|
25
|
+
for (const name of propNames) {
|
26
|
+
const value = object[name]
|
27
|
+
|
28
|
+
if ((value && typeof value === 'object') || typeof value === 'function') {
|
29
|
+
deepFreeze(value)
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
return Object.freeze(object)
|
34
|
+
}
|
package/src/index.ts
CHANGED
package/src/service.ts
CHANGED
@@ -11,11 +11,13 @@ import {
|
|
11
11
|
ProcessorServiceImplementation,
|
12
12
|
ProcessResult,
|
13
13
|
StartRequest,
|
14
|
-
Empty
|
14
|
+
Empty
|
15
15
|
} from '@sentio/protos'
|
16
16
|
|
17
17
|
import { PluginManager } from './plugin.js'
|
18
18
|
import { errorString, mergeProcessResults } from './utils.js'
|
19
|
+
import { freezeGlobalConfig, GLOBAL_CONFIG } from './global-config.js'
|
20
|
+
|
19
21
|
;(BigInt.prototype as any).toJSON = function () {
|
20
22
|
return this.toString()
|
21
23
|
}
|
@@ -60,6 +62,8 @@ export class ProcessorServiceImpl implements ProcessorServiceImplementation {
|
|
60
62
|
return {}
|
61
63
|
}
|
62
64
|
|
65
|
+
freezeGlobalConfig()
|
66
|
+
|
63
67
|
try {
|
64
68
|
// for (const plugin of ['@sentio/sdk', '@sentio/sdk/eth']) {
|
65
69
|
// try {
|
@@ -100,7 +104,15 @@ export class ProcessorServiceImpl implements ProcessorServiceImplementation {
|
|
100
104
|
}
|
101
105
|
|
102
106
|
async processBindings(request: ProcessBindingsRequest, options?: CallContext): Promise<ProcessBindingResponse> {
|
103
|
-
const promises =
|
107
|
+
const promises = []
|
108
|
+
|
109
|
+
for (const binding of request.bindings) {
|
110
|
+
const promise = this.processBinding(binding)
|
111
|
+
if (GLOBAL_CONFIG.execution.sequential) {
|
112
|
+
await promise
|
113
|
+
}
|
114
|
+
promises.push(promise)
|
115
|
+
}
|
104
116
|
let promise
|
105
117
|
try {
|
106
118
|
promise = await Promise.all(promises)
|
@@ -116,7 +128,7 @@ export class ProcessorServiceImpl implements ProcessorServiceImplementation {
|
|
116
128
|
// }
|
117
129
|
|
118
130
|
return {
|
119
|
-
result
|
131
|
+
result
|
120
132
|
}
|
121
133
|
}
|
122
134
|
|
@@ -131,8 +143,8 @@ export class ProcessorServiceImpl implements ProcessorServiceImplementation {
|
|
131
143
|
[
|
132
144
|
DebugInfo.fromPartial({
|
133
145
|
detail: this.unhandled.message,
|
134
|
-
stackEntries: this.unhandled.stack?.split('\n')
|
135
|
-
})
|
146
|
+
stackEntries: this.unhandled.stack?.split('\n')
|
147
|
+
})
|
136
148
|
]
|
137
149
|
)
|
138
150
|
}
|
@@ -151,7 +163,7 @@ export class ProcessorServiceImpl implements ProcessorServiceImplementation {
|
|
151
163
|
// }
|
152
164
|
yield {
|
153
165
|
result,
|
154
|
-
configUpdated: result.states?.configUpdated || false
|
166
|
+
configUpdated: result.states?.configUpdated || false
|
155
167
|
}
|
156
168
|
}
|
157
169
|
}
|
@@ -161,7 +173,7 @@ function recordRuntimeInfo(results: ProcessResult, handlerType: HandlerType) {
|
|
161
173
|
for (const list of [results.gauges, results.counters, results.events, results.exports]) {
|
162
174
|
list.forEach((e) => {
|
163
175
|
e.runtimeInfo = {
|
164
|
-
from: handlerType
|
176
|
+
from: handlerType
|
165
177
|
}
|
166
178
|
})
|
167
179
|
}
|