@sentio/sdk 1.36.4 → 1.37.0-rc.2

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.
Files changed (199) hide show
  1. package/lib/aptos/api.d.ts +1 -1
  2. package/lib/aptos/api.js +1 -1
  3. package/lib/aptos/api.js.map +1 -1
  4. package/lib/aptos/aptos-plugin.d.ts +2 -2
  5. package/lib/aptos/aptos-plugin.js +14 -19
  6. package/lib/aptos/aptos-plugin.js.map +1 -1
  7. package/lib/aptos/aptos-processor.d.ts +2 -2
  8. package/lib/aptos/aptos-processor.js +3 -3
  9. package/lib/aptos/aptos-processor.js.map +1 -1
  10. package/lib/aptos/context.d.ts +1 -1
  11. package/lib/aptos/context.js +2 -6
  12. package/lib/aptos/context.js.map +1 -1
  13. package/lib/binds.d.ts +1 -1
  14. package/lib/binds.js +2 -2
  15. package/lib/binds.js.map +1 -1
  16. package/lib/builtin/internal/eacaggregatorproxy_processor.js +18 -18
  17. package/lib/builtin/internal/eacaggregatorproxy_processor.js.map +1 -1
  18. package/lib/builtin/internal/erc1155_processor.js +5 -5
  19. package/lib/builtin/internal/erc1155_processor.js.map +1 -1
  20. package/lib/builtin/internal/erc20_processor.js +8 -8
  21. package/lib/builtin/internal/erc20_processor.js.map +1 -1
  22. package/lib/builtin/internal/erc20bytes_processor.js +6 -6
  23. package/lib/builtin/internal/erc20bytes_processor.js.map +1 -1
  24. package/lib/builtin/internal/erc721_processor.js +9 -9
  25. package/lib/builtin/internal/erc721_processor.js.map +1 -1
  26. package/lib/builtin/internal/weth9_processor.js +6 -6
  27. package/lib/builtin/internal/weth9_processor.js.map +1 -1
  28. package/lib/builtin/solana/wormhole-processor.d.ts +0 -4
  29. package/lib/builtin/solana/wormhole-processor.js +123 -50
  30. package/lib/builtin/solana/wormhole-processor.js.map +1 -1
  31. package/lib/core/account-processor.d.ts +1 -1
  32. package/lib/core/account-processor.js +2 -2
  33. package/lib/core/account-processor.js.map +1 -1
  34. package/lib/core/base-context.d.ts +1 -1
  35. package/lib/core/base-context.js.map +1 -1
  36. package/lib/core/base-processor-template.d.ts +2 -2
  37. package/lib/core/base-processor-template.js +7 -21
  38. package/lib/core/base-processor-template.js.map +1 -1
  39. package/lib/core/base-processor.d.ts +1 -1
  40. package/lib/core/base-processor.js +6 -20
  41. package/lib/core/base-processor.js.map +1 -1
  42. package/lib/core/bind-options.d.ts +5 -6
  43. package/lib/core/bind-options.js.map +1 -1
  44. package/lib/core/context.d.ts +4 -5
  45. package/lib/core/context.js +6 -10
  46. package/lib/core/context.js.map +1 -1
  47. package/lib/core/eth-plugin.d.ts +2 -2
  48. package/lib/core/eth-plugin.js +8 -12
  49. package/lib/core/eth-plugin.js.map +1 -1
  50. package/lib/core/event-tracker.d.ts +1 -1
  51. package/lib/core/event-tracker.js +2 -2
  52. package/lib/core/event-tracker.js.map +1 -1
  53. package/lib/core/exporter.d.ts +1 -1
  54. package/lib/core/exporter.js +2 -2
  55. package/lib/core/exporter.js.map +1 -1
  56. package/lib/core/generic-processor.test.js.map +1 -1
  57. package/lib/core/index.d.ts +1 -1
  58. package/lib/core/index.js +2 -1
  59. package/lib/core/index.js.map +1 -1
  60. package/lib/core/logger.d.ts +1 -1
  61. package/lib/core/logger.js +5 -5
  62. package/lib/core/logger.js.map +1 -1
  63. package/lib/core/meter.d.ts +2 -2
  64. package/lib/core/meter.js +10 -10
  65. package/lib/core/meter.js.map +1 -1
  66. package/lib/core/numberish.d.ts +4 -4
  67. package/lib/core/numberish.js +23 -25
  68. package/lib/core/numberish.js.map +1 -1
  69. package/lib/core/numberish.test.js.map +1 -1
  70. package/lib/core/solana-context.d.ts +2 -3
  71. package/lib/core/solana-context.js.map +1 -1
  72. package/lib/core/solana-options.d.ts +2 -3
  73. package/lib/core/solana-options.js.map +1 -1
  74. package/lib/core/solana-plugin.d.ts +2 -2
  75. package/lib/core/solana-plugin.js +6 -6
  76. package/lib/core/solana-plugin.js.map +1 -1
  77. package/lib/core/solana-processor.d.ts +7 -8
  78. package/lib/core/solana-processor.js +5 -15
  79. package/lib/core/solana-processor.js.map +1 -1
  80. package/lib/core/sui-plugin.d.ts +2 -2
  81. package/lib/core/sui-plugin.js +5 -5
  82. package/lib/core/sui-plugin.js.map +1 -1
  83. package/lib/core/sui-processor.d.ts +8 -9
  84. package/lib/core/sui-processor.js +5 -15
  85. package/lib/core/sui-processor.js.map +1 -1
  86. package/lib/index.d.ts +2 -3
  87. package/lib/index.js +3 -5
  88. package/lib/index.js.map +1 -1
  89. package/lib/processor-runner.js +4 -4
  90. package/lib/processor-runner.js.map +1 -1
  91. package/lib/service.d.ts +3 -4
  92. package/lib/service.js +7 -11
  93. package/lib/service.js.map +1 -1
  94. package/lib/solana-codegen/codegen.js +16 -5
  95. package/lib/solana-codegen/codegen.js.map +1 -1
  96. package/lib/target-ethers-sentio/file.js +1 -0
  97. package/lib/target-ethers-sentio/file.js.map +1 -1
  98. package/lib/target-ethers-sentio/view-function.js +1 -1
  99. package/lib/testing/metric-utils.d.ts +1 -1
  100. package/lib/testing/metric-utils.js.map +1 -1
  101. package/lib/testing/test-processor-server.d.ts +3 -3
  102. package/lib/testing/test-processor-server.js +10 -22
  103. package/lib/testing/test-processor-server.js.map +1 -1
  104. package/lib/utils/conversion.d.ts +1 -1
  105. package/lib/utils/conversion.js.map +1 -1
  106. package/lib/utils/dex-price.test.js.map +1 -1
  107. package/lib/utils/erc20.test.js.map +1 -1
  108. package/lib/utils/price.d.ts +10 -10
  109. package/lib/utils/price.js +1 -1
  110. package/lib/utils/price.js.map +1 -1
  111. package/package.json +5 -2
  112. package/src/aptos/api.ts +1 -1
  113. package/src/aptos/aptos-plugin.ts +10 -11
  114. package/src/aptos/aptos-processor.ts +2 -2
  115. package/src/aptos/context.ts +3 -4
  116. package/src/binds.ts +1 -1
  117. package/src/builtin/internal/eacaggregatorproxy_processor.ts +19 -18
  118. package/src/builtin/internal/erc1155_processor.ts +6 -5
  119. package/src/builtin/internal/erc20_processor.ts +9 -8
  120. package/src/builtin/internal/erc20bytes_processor.ts +7 -6
  121. package/src/builtin/internal/erc721_processor.ts +10 -9
  122. package/src/builtin/internal/weth9_processor.ts +7 -6
  123. package/src/builtin/solana/wormhole-processor.ts +119 -28
  124. package/src/core/account-processor.ts +1 -1
  125. package/src/core/base-context.ts +1 -1
  126. package/src/core/base-processor-template.ts +6 -15
  127. package/src/core/base-processor.ts +4 -13
  128. package/src/core/bind-options.ts +5 -6
  129. package/src/core/context.ts +10 -11
  130. package/src/core/eth-plugin.ts +3 -4
  131. package/src/core/event-tracker.ts +2 -2
  132. package/src/core/exporter.ts +1 -1
  133. package/src/core/index.ts +1 -1
  134. package/src/core/logger.ts +1 -1
  135. package/src/core/meter.ts +2 -2
  136. package/src/core/numberish.ts +20 -21
  137. package/src/core/solana-context.ts +2 -3
  138. package/src/core/solana-options.ts +2 -4
  139. package/src/core/solana-plugin.ts +3 -3
  140. package/src/core/solana-processor.ts +10 -17
  141. package/src/core/sui-plugin.ts +3 -8
  142. package/src/core/sui-processor.ts +11 -18
  143. package/src/index.ts +3 -5
  144. package/src/processor-runner.ts +3 -3
  145. package/src/service.ts +5 -5
  146. package/src/solana-codegen/codegen.ts +20 -7
  147. package/src/target-ethers-sentio/file.ts +1 -0
  148. package/src/target-ethers-sentio/view-function.ts +1 -1
  149. package/src/testing/metric-utils.ts +1 -1
  150. package/src/testing/test-processor-server.ts +6 -16
  151. package/src/types/global.d.ts +2 -2
  152. package/src/utils/conversion.ts +1 -1
  153. package/src/utils/price.ts +1 -1
  154. package/lib/gen/builtin.d.ts +0 -6
  155. package/lib/gen/builtin.js +0 -3
  156. package/lib/gen/builtin.js.map +0 -1
  157. package/lib/gen/chainquery/protos/chainquery.d.ts +0 -400
  158. package/lib/gen/chainquery/protos/chainquery.js +0 -972
  159. package/lib/gen/chainquery/protos/chainquery.js.map +0 -1
  160. package/lib/gen/google/protobuf/empty.d.ts +0 -16
  161. package/lib/gen/google/protobuf/empty.js +0 -47
  162. package/lib/gen/google/protobuf/empty.js.map +0 -1
  163. package/lib/gen/google/protobuf/struct.d.ts +0 -73
  164. package/lib/gen/google/protobuf/struct.js +0 -371
  165. package/lib/gen/google/protobuf/struct.js.map +0 -1
  166. package/lib/gen/google/protobuf/timestamp.d.ts +0 -18
  167. package/lib/gen/google/protobuf/timestamp.js +0 -71
  168. package/lib/gen/google/protobuf/timestamp.js.map +0 -1
  169. package/lib/gen/index.d.ts +0 -2
  170. package/lib/gen/index.js +0 -19
  171. package/lib/gen/index.js.map +0 -1
  172. package/lib/gen/processor/protos/processor.d.ts +0 -826
  173. package/lib/gen/processor/protos/processor.js +0 -3988
  174. package/lib/gen/processor/protos/processor.js.map +0 -1
  175. package/lib/gen/service/price/protos/price.d.ts +0 -85
  176. package/lib/gen/service/price/protos/price.js +0 -269
  177. package/lib/gen/service/price/protos/price.js.map +0 -1
  178. package/lib/plugin.d.ts +0 -15
  179. package/lib/plugin.js +0 -32
  180. package/lib/plugin.js.map +0 -1
  181. package/lib/state/processor-state.d.ts +0 -3
  182. package/lib/state/processor-state.js +0 -8
  183. package/lib/state/processor-state.js.map +0 -1
  184. package/lib/state/state-storage.d.ts +0 -17
  185. package/lib/state/state-storage.js +0 -60
  186. package/lib/state/state-storage.js.map +0 -1
  187. package/lib/state/state-storage.test.d.ts +0 -1
  188. package/lib/state/state-storage.test.js.map +0 -1
  189. package/src/gen/builtin.ts +0 -22
  190. package/src/gen/chainquery/protos/chainquery.ts +0 -1212
  191. package/src/gen/google/protobuf/empty.ts +0 -58
  192. package/src/gen/google/protobuf/struct.ts +0 -422
  193. package/src/gen/google/protobuf/timestamp.ts +0 -85
  194. package/src/gen/index.ts +0 -3
  195. package/src/gen/processor/protos/processor.ts +0 -4619
  196. package/src/gen/service/price/protos/price.ts +0 -329
  197. package/src/plugin.ts +0 -41
  198. package/src/state/processor-state.ts +0 -3
  199. package/src/state/state-storage.ts +0 -65
@@ -1,329 +0,0 @@
1
- /* eslint-disable */
2
- import Long from "long";
3
- import type { CallContext, CallOptions } from "nice-grpc-common";
4
- import _m0 from "protobufjs/minimal";
5
- import { Timestamp } from "../../../google/protobuf/timestamp";
6
-
7
- export interface CoinID {
8
- symbol?: string | undefined;
9
- address?: CoinID_AddressIdentifier | undefined;
10
- }
11
-
12
- export interface CoinID_AddressIdentifier {
13
- address: string;
14
- chain: string;
15
- }
16
-
17
- export interface GetPriceRequest {
18
- timestamp: Date | undefined;
19
- coinId: CoinID | undefined;
20
- }
21
-
22
- export interface GetPriceResponse {
23
- price: number;
24
- timestamp: Date | undefined;
25
- }
26
-
27
- function createBaseCoinID(): CoinID {
28
- return { symbol: undefined, address: undefined };
29
- }
30
-
31
- export const CoinID = {
32
- encode(message: CoinID, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
33
- if (message.symbol !== undefined) {
34
- writer.uint32(18).string(message.symbol);
35
- }
36
- if (message.address !== undefined) {
37
- CoinID_AddressIdentifier.encode(message.address, writer.uint32(26).fork()).ldelim();
38
- }
39
- return writer;
40
- },
41
-
42
- decode(input: _m0.Reader | Uint8Array, length?: number): CoinID {
43
- const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
44
- let end = length === undefined ? reader.len : reader.pos + length;
45
- const message = createBaseCoinID();
46
- while (reader.pos < end) {
47
- const tag = reader.uint32();
48
- switch (tag >>> 3) {
49
- case 2:
50
- message.symbol = reader.string();
51
- break;
52
- case 3:
53
- message.address = CoinID_AddressIdentifier.decode(reader, reader.uint32());
54
- break;
55
- default:
56
- reader.skipType(tag & 7);
57
- break;
58
- }
59
- }
60
- return message;
61
- },
62
-
63
- fromJSON(object: any): CoinID {
64
- return {
65
- symbol: isSet(object.symbol) ? String(object.symbol) : undefined,
66
- address: isSet(object.address) ? CoinID_AddressIdentifier.fromJSON(object.address) : undefined,
67
- };
68
- },
69
-
70
- toJSON(message: CoinID): unknown {
71
- const obj: any = {};
72
- message.symbol !== undefined && (obj.symbol = message.symbol);
73
- message.address !== undefined &&
74
- (obj.address = message.address ? CoinID_AddressIdentifier.toJSON(message.address) : undefined);
75
- return obj;
76
- },
77
-
78
- fromPartial(object: DeepPartial<CoinID>): CoinID {
79
- const message = createBaseCoinID();
80
- message.symbol = object.symbol ?? undefined;
81
- message.address = (object.address !== undefined && object.address !== null)
82
- ? CoinID_AddressIdentifier.fromPartial(object.address)
83
- : undefined;
84
- return message;
85
- },
86
- };
87
-
88
- function createBaseCoinID_AddressIdentifier(): CoinID_AddressIdentifier {
89
- return { address: "", chain: "" };
90
- }
91
-
92
- export const CoinID_AddressIdentifier = {
93
- encode(message: CoinID_AddressIdentifier, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
94
- if (message.address !== "") {
95
- writer.uint32(10).string(message.address);
96
- }
97
- if (message.chain !== "") {
98
- writer.uint32(18).string(message.chain);
99
- }
100
- return writer;
101
- },
102
-
103
- decode(input: _m0.Reader | Uint8Array, length?: number): CoinID_AddressIdentifier {
104
- const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
105
- let end = length === undefined ? reader.len : reader.pos + length;
106
- const message = createBaseCoinID_AddressIdentifier();
107
- while (reader.pos < end) {
108
- const tag = reader.uint32();
109
- switch (tag >>> 3) {
110
- case 1:
111
- message.address = reader.string();
112
- break;
113
- case 2:
114
- message.chain = reader.string();
115
- break;
116
- default:
117
- reader.skipType(tag & 7);
118
- break;
119
- }
120
- }
121
- return message;
122
- },
123
-
124
- fromJSON(object: any): CoinID_AddressIdentifier {
125
- return {
126
- address: isSet(object.address) ? String(object.address) : "",
127
- chain: isSet(object.chain) ? String(object.chain) : "",
128
- };
129
- },
130
-
131
- toJSON(message: CoinID_AddressIdentifier): unknown {
132
- const obj: any = {};
133
- message.address !== undefined && (obj.address = message.address);
134
- message.chain !== undefined && (obj.chain = message.chain);
135
- return obj;
136
- },
137
-
138
- fromPartial(object: DeepPartial<CoinID_AddressIdentifier>): CoinID_AddressIdentifier {
139
- const message = createBaseCoinID_AddressIdentifier();
140
- message.address = object.address ?? "";
141
- message.chain = object.chain ?? "";
142
- return message;
143
- },
144
- };
145
-
146
- function createBaseGetPriceRequest(): GetPriceRequest {
147
- return { timestamp: undefined, coinId: undefined };
148
- }
149
-
150
- export const GetPriceRequest = {
151
- encode(message: GetPriceRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
152
- if (message.timestamp !== undefined) {
153
- Timestamp.encode(toTimestamp(message.timestamp), writer.uint32(10).fork()).ldelim();
154
- }
155
- if (message.coinId !== undefined) {
156
- CoinID.encode(message.coinId, writer.uint32(18).fork()).ldelim();
157
- }
158
- return writer;
159
- },
160
-
161
- decode(input: _m0.Reader | Uint8Array, length?: number): GetPriceRequest {
162
- const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
163
- let end = length === undefined ? reader.len : reader.pos + length;
164
- const message = createBaseGetPriceRequest();
165
- while (reader.pos < end) {
166
- const tag = reader.uint32();
167
- switch (tag >>> 3) {
168
- case 1:
169
- message.timestamp = fromTimestamp(Timestamp.decode(reader, reader.uint32()));
170
- break;
171
- case 2:
172
- message.coinId = CoinID.decode(reader, reader.uint32());
173
- break;
174
- default:
175
- reader.skipType(tag & 7);
176
- break;
177
- }
178
- }
179
- return message;
180
- },
181
-
182
- fromJSON(object: any): GetPriceRequest {
183
- return {
184
- timestamp: isSet(object.timestamp) ? fromJsonTimestamp(object.timestamp) : undefined,
185
- coinId: isSet(object.coinId) ? CoinID.fromJSON(object.coinId) : undefined,
186
- };
187
- },
188
-
189
- toJSON(message: GetPriceRequest): unknown {
190
- const obj: any = {};
191
- message.timestamp !== undefined && (obj.timestamp = message.timestamp.toISOString());
192
- message.coinId !== undefined && (obj.coinId = message.coinId ? CoinID.toJSON(message.coinId) : undefined);
193
- return obj;
194
- },
195
-
196
- fromPartial(object: DeepPartial<GetPriceRequest>): GetPriceRequest {
197
- const message = createBaseGetPriceRequest();
198
- message.timestamp = object.timestamp ?? undefined;
199
- message.coinId = (object.coinId !== undefined && object.coinId !== null)
200
- ? CoinID.fromPartial(object.coinId)
201
- : undefined;
202
- return message;
203
- },
204
- };
205
-
206
- function createBaseGetPriceResponse(): GetPriceResponse {
207
- return { price: 0, timestamp: undefined };
208
- }
209
-
210
- export const GetPriceResponse = {
211
- encode(message: GetPriceResponse, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
212
- if (message.price !== 0) {
213
- writer.uint32(9).double(message.price);
214
- }
215
- if (message.timestamp !== undefined) {
216
- Timestamp.encode(toTimestamp(message.timestamp), writer.uint32(18).fork()).ldelim();
217
- }
218
- return writer;
219
- },
220
-
221
- decode(input: _m0.Reader | Uint8Array, length?: number): GetPriceResponse {
222
- const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
223
- let end = length === undefined ? reader.len : reader.pos + length;
224
- const message = createBaseGetPriceResponse();
225
- while (reader.pos < end) {
226
- const tag = reader.uint32();
227
- switch (tag >>> 3) {
228
- case 1:
229
- message.price = reader.double();
230
- break;
231
- case 2:
232
- message.timestamp = fromTimestamp(Timestamp.decode(reader, reader.uint32()));
233
- break;
234
- default:
235
- reader.skipType(tag & 7);
236
- break;
237
- }
238
- }
239
- return message;
240
- },
241
-
242
- fromJSON(object: any): GetPriceResponse {
243
- return {
244
- price: isSet(object.price) ? Number(object.price) : 0,
245
- timestamp: isSet(object.timestamp) ? fromJsonTimestamp(object.timestamp) : undefined,
246
- };
247
- },
248
-
249
- toJSON(message: GetPriceResponse): unknown {
250
- const obj: any = {};
251
- message.price !== undefined && (obj.price = message.price);
252
- message.timestamp !== undefined && (obj.timestamp = message.timestamp.toISOString());
253
- return obj;
254
- },
255
-
256
- fromPartial(object: DeepPartial<GetPriceResponse>): GetPriceResponse {
257
- const message = createBaseGetPriceResponse();
258
- message.price = object.price ?? 0;
259
- message.timestamp = object.timestamp ?? undefined;
260
- return message;
261
- },
262
- };
263
-
264
- export type PriceServiceDefinition = typeof PriceServiceDefinition;
265
- export const PriceServiceDefinition = {
266
- name: "PriceService",
267
- fullName: "price_service.PriceService",
268
- methods: {
269
- getPrice: {
270
- name: "GetPrice",
271
- requestType: GetPriceRequest,
272
- requestStream: false,
273
- responseType: GetPriceResponse,
274
- responseStream: false,
275
- options: {},
276
- },
277
- },
278
- } as const;
279
-
280
- export interface PriceServiceImplementation<CallContextExt = {}> {
281
- getPrice(request: GetPriceRequest, context: CallContext & CallContextExt): Promise<DeepPartial<GetPriceResponse>>;
282
- }
283
-
284
- export interface PriceServiceClient<CallOptionsExt = {}> {
285
- getPrice(request: DeepPartial<GetPriceRequest>, options?: CallOptions & CallOptionsExt): Promise<GetPriceResponse>;
286
- }
287
-
288
- type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
289
-
290
- type DeepPartial<T> = T extends Builtin ? T
291
- : T extends Long ? string | number | Long : T extends Array<infer U> ? Array<DeepPartial<U>>
292
- : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
293
- : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
294
- : Partial<T>;
295
-
296
- function toTimestamp(date: Date): Timestamp {
297
- const seconds = numberToLong(date.getTime() / 1_000);
298
- const nanos = (date.getTime() % 1_000) * 1_000_000;
299
- return { seconds, nanos };
300
- }
301
-
302
- function fromTimestamp(t: Timestamp): Date {
303
- let millis = t.seconds.toNumber() * 1_000;
304
- millis += t.nanos / 1_000_000;
305
- return new Date(millis);
306
- }
307
-
308
- function fromJsonTimestamp(o: any): Date {
309
- if (o instanceof Date) {
310
- return o;
311
- } else if (typeof o === "string") {
312
- return new Date(o);
313
- } else {
314
- return fromTimestamp(Timestamp.fromJSON(o));
315
- }
316
- }
317
-
318
- function numberToLong(number: number) {
319
- return Long.fromNumber(number);
320
- }
321
-
322
- if (_m0.util.Long !== Long) {
323
- _m0.util.Long = Long as any;
324
- _m0.configure();
325
- }
326
-
327
- function isSet(value: any): boolean {
328
- return value !== null && value !== undefined;
329
- }
package/src/plugin.ts DELETED
@@ -1,41 +0,0 @@
1
- import { DataBinding, HandlerType, ProcessConfigResponse, ProcessResult } from './gen'
2
-
3
- export interface Plugin {
4
- name: string
5
- supportedHandlers: HandlerType[]
6
-
7
- configure(config: ProcessConfigResponse): void
8
- processBinding(request: DataBinding): Promise<ProcessResult>
9
- }
10
-
11
- export class PluginManager {
12
- static INSTANCE = new PluginManager()
13
-
14
- plugins: Plugin[] = []
15
- typesToPlugin = new Map<HandlerType, Plugin>()
16
-
17
- register(plugin: Plugin) {
18
- this.plugins.push(plugin)
19
- // for (const plugin of this.plugins) {
20
- for (const handlerType of plugin.supportedHandlers) {
21
- const exsited = this.typesToPlugin.get(handlerType)
22
- if (exsited) {
23
- throw new Error(`Duplicate plugin for ${handlerType}: ${exsited.name} and ${plugin.name}`)
24
- }
25
- this.typesToPlugin.set(handlerType, plugin)
26
- }
27
- // }
28
- }
29
-
30
- configure(config: ProcessConfigResponse) {
31
- this.plugins.forEach((plugin) => plugin.configure(config))
32
- }
33
-
34
- processBinding(request: DataBinding): Promise<ProcessResult> {
35
- const plugin = this.typesToPlugin.get(request.handlerType)
36
- if (!plugin) {
37
- throw new Error(`No plugin for ${request.handlerType}`)
38
- }
39
- return plugin.processBinding(request)
40
- }
41
- }
@@ -1,3 +0,0 @@
1
- export class ProcessorState {
2
- stateMap = new Map<string, any>()
3
- }
@@ -1,65 +0,0 @@
1
- export abstract class StateStorage<T> {
2
- // TODO learn how to define single instance for all subclasses
3
-
4
- protected constructor() {
5
- //
6
- }
7
-
8
- abstract initValue(): T
9
-
10
- key(): string {
11
- return this.constructor.name
12
- }
13
-
14
- getOrRegister(): T {
15
- let metricState: T = global.PROCESSOR_STATE.stateMap.get(this.key())
16
- if (!metricState) {
17
- metricState = this.initValue()
18
- global.PROCESSOR_STATE.stateMap.set(this.key(), metricState)
19
- }
20
- return metricState
21
- }
22
- }
23
-
24
- export abstract class MapStateStorage<T> extends StateStorage<Map<string, T>> {
25
- initValue() {
26
- return new Map<string, T>()
27
- }
28
-
29
- getValue(key: string): T | undefined {
30
- const m = this.getOrRegister()
31
- return m.get(key)
32
- }
33
-
34
- getValues(): T[] {
35
- const m = this.getOrRegister()
36
- return Array.from(m.values())
37
- }
38
-
39
- getOrSetValue(key: string, value: T): T {
40
- const m = this.getOrRegister()
41
- const oldValue = m.get(key)
42
- if (oldValue) {
43
- console.warn(key, 'has been registered twice, use the previous one')
44
- return oldValue
45
- }
46
- m.set(key, value)
47
- return value
48
- }
49
- }
50
-
51
- export abstract class ListStateStorage<T> extends StateStorage<T[]> {
52
- initValue() {
53
- return []
54
- }
55
-
56
- getValues(): T[] {
57
- return this.getOrRegister()
58
- }
59
-
60
- addValue(value: T): T {
61
- const m = this.getOrRegister()
62
- m.push(value)
63
- return value
64
- }
65
- }