@sentio/runtime 2.43.3-rc.3 → 2.44.0-rc.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentio/runtime",
3
- "version": "2.43.3-rc.3",
3
+ "version": "2.44.0-rc.10",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "exports": {
@@ -213,6 +213,7 @@ export enum HandlerType {
213
213
  COSMOS_CALL = 14,
214
214
  STARKNET_EVENT = 15,
215
215
  BTC_TRANSACTION = 16,
216
+ BTC_BLOCK = 18,
216
217
  UNRECOGNIZED = -1,
217
218
  }
218
219
 
@@ -272,6 +273,9 @@ export function handlerTypeFromJSON(object: any): HandlerType {
272
273
  case 16:
273
274
  case "BTC_TRANSACTION":
274
275
  return HandlerType.BTC_TRANSACTION;
276
+ case 18:
277
+ case "BTC_BLOCK":
278
+ return HandlerType.BTC_BLOCK;
275
279
  case -1:
276
280
  case "UNRECOGNIZED":
277
281
  default:
@@ -317,6 +321,8 @@ export function handlerTypeToJSON(object: HandlerType): string {
317
321
  return "STARKNET_EVENT";
318
322
  case HandlerType.BTC_TRANSACTION:
319
323
  return "BTC_TRANSACTION";
324
+ case HandlerType.BTC_BLOCK:
325
+ return "BTC_BLOCK";
320
326
  case HandlerType.UNRECOGNIZED:
321
327
  default:
322
328
  return "UNRECOGNIZED";
@@ -1032,6 +1038,7 @@ export interface Data {
1032
1038
  cosmosCall?: Data_CosmosCall | undefined;
1033
1039
  starknetEvents?: Data_StarknetEvent | undefined;
1034
1040
  btcTransaction?: Data_BTCTransaction | undefined;
1041
+ btcBlock?: Data_BTCBlock | undefined;
1035
1042
  }
1036
1043
 
1037
1044
  export interface Data_EthLog {
@@ -1135,6 +1142,11 @@ export interface Data_BTCTransaction {
1135
1142
  timestamp: Date | undefined;
1136
1143
  }
1137
1144
 
1145
+ export interface Data_BTCBlock {
1146
+ block: { [key: string]: any } | undefined;
1147
+ timestamp: Date | undefined;
1148
+ }
1149
+
1138
1150
  export interface DataBinding {
1139
1151
  data: Data | undefined;
1140
1152
  handlerType: HandlerType;
@@ -8349,6 +8361,7 @@ function createBaseData(): Data {
8349
8361
  cosmosCall: undefined,
8350
8362
  starknetEvents: undefined,
8351
8363
  btcTransaction: undefined,
8364
+ btcBlock: undefined,
8352
8365
  };
8353
8366
  }
8354
8367
 
@@ -8408,6 +8421,9 @@ export const Data = {
8408
8421
  if (message.btcTransaction !== undefined) {
8409
8422
  Data_BTCTransaction.encode(message.btcTransaction, writer.uint32(138).fork()).ldelim();
8410
8423
  }
8424
+ if (message.btcBlock !== undefined) {
8425
+ Data_BTCBlock.encode(message.btcBlock, writer.uint32(154).fork()).ldelim();
8426
+ }
8411
8427
  return writer;
8412
8428
  },
8413
8429
 
@@ -8544,6 +8560,13 @@ export const Data = {
8544
8560
 
8545
8561
  message.btcTransaction = Data_BTCTransaction.decode(reader, reader.uint32());
8546
8562
  continue;
8563
+ case 19:
8564
+ if (tag !== 154) {
8565
+ break;
8566
+ }
8567
+
8568
+ message.btcBlock = Data_BTCBlock.decode(reader, reader.uint32());
8569
+ continue;
8547
8570
  }
8548
8571
  if ((tag & 7) === 4 || tag === 0) {
8549
8572
  break;
@@ -8575,6 +8598,7 @@ export const Data = {
8575
8598
  cosmosCall: isSet(object.cosmosCall) ? Data_CosmosCall.fromJSON(object.cosmosCall) : undefined,
8576
8599
  starknetEvents: isSet(object.starknetEvents) ? Data_StarknetEvent.fromJSON(object.starknetEvents) : undefined,
8577
8600
  btcTransaction: isSet(object.btcTransaction) ? Data_BTCTransaction.fromJSON(object.btcTransaction) : undefined,
8601
+ btcBlock: isSet(object.btcBlock) ? Data_BTCBlock.fromJSON(object.btcBlock) : undefined,
8578
8602
  };
8579
8603
  },
8580
8604
 
@@ -8634,6 +8658,9 @@ export const Data = {
8634
8658
  if (message.btcTransaction !== undefined) {
8635
8659
  obj.btcTransaction = Data_BTCTransaction.toJSON(message.btcTransaction);
8636
8660
  }
8661
+ if (message.btcBlock !== undefined) {
8662
+ obj.btcBlock = Data_BTCBlock.toJSON(message.btcBlock);
8663
+ }
8637
8664
  return obj;
8638
8665
  },
8639
8666
 
@@ -8694,6 +8721,9 @@ export const Data = {
8694
8721
  message.btcTransaction = (object.btcTransaction !== undefined && object.btcTransaction !== null)
8695
8722
  ? Data_BTCTransaction.fromPartial(object.btcTransaction)
8696
8723
  : undefined;
8724
+ message.btcBlock = (object.btcBlock !== undefined && object.btcBlock !== null)
8725
+ ? Data_BTCBlock.fromPartial(object.btcBlock)
8726
+ : undefined;
8697
8727
  return message;
8698
8728
  },
8699
8729
  };
@@ -10229,6 +10259,80 @@ export const Data_BTCTransaction = {
10229
10259
  },
10230
10260
  };
10231
10261
 
10262
+ function createBaseData_BTCBlock(): Data_BTCBlock {
10263
+ return { block: undefined, timestamp: undefined };
10264
+ }
10265
+
10266
+ export const Data_BTCBlock = {
10267
+ encode(message: Data_BTCBlock, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
10268
+ if (message.block !== undefined) {
10269
+ Struct.encode(Struct.wrap(message.block), writer.uint32(10).fork()).ldelim();
10270
+ }
10271
+ if (message.timestamp !== undefined) {
10272
+ Timestamp.encode(toTimestamp(message.timestamp), writer.uint32(18).fork()).ldelim();
10273
+ }
10274
+ return writer;
10275
+ },
10276
+
10277
+ decode(input: _m0.Reader | Uint8Array, length?: number): Data_BTCBlock {
10278
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
10279
+ let end = length === undefined ? reader.len : reader.pos + length;
10280
+ const message = createBaseData_BTCBlock();
10281
+ while (reader.pos < end) {
10282
+ const tag = reader.uint32();
10283
+ switch (tag >>> 3) {
10284
+ case 1:
10285
+ if (tag !== 10) {
10286
+ break;
10287
+ }
10288
+
10289
+ message.block = Struct.unwrap(Struct.decode(reader, reader.uint32()));
10290
+ continue;
10291
+ case 2:
10292
+ if (tag !== 18) {
10293
+ break;
10294
+ }
10295
+
10296
+ message.timestamp = fromTimestamp(Timestamp.decode(reader, reader.uint32()));
10297
+ continue;
10298
+ }
10299
+ if ((tag & 7) === 4 || tag === 0) {
10300
+ break;
10301
+ }
10302
+ reader.skipType(tag & 7);
10303
+ }
10304
+ return message;
10305
+ },
10306
+
10307
+ fromJSON(object: any): Data_BTCBlock {
10308
+ return {
10309
+ block: isObject(object.block) ? object.block : undefined,
10310
+ timestamp: isSet(object.timestamp) ? fromJsonTimestamp(object.timestamp) : undefined,
10311
+ };
10312
+ },
10313
+
10314
+ toJSON(message: Data_BTCBlock): unknown {
10315
+ const obj: any = {};
10316
+ if (message.block !== undefined) {
10317
+ obj.block = message.block;
10318
+ }
10319
+ if (message.timestamp !== undefined) {
10320
+ obj.timestamp = message.timestamp.toISOString();
10321
+ }
10322
+ return obj;
10323
+ },
10324
+
10325
+ create(base?: DeepPartial<Data_BTCBlock>): Data_BTCBlock {
10326
+ return Data_BTCBlock.fromPartial(base ?? {});
10327
+ },
10328
+ fromPartial(object: DeepPartial<Data_BTCBlock>): Data_BTCBlock {
10329
+ const message = createBaseData_BTCBlock();
10330
+ message.block = object.block ?? undefined;
10331
+ message.timestamp = object.timestamp ?? undefined;
10332
+ return message;
10333
+ },
10334
+ };
10335
+
10232
10336
  function createBaseDataBinding(): DataBinding {
10233
10337
  return { data: undefined, handlerType: 0, handlerIds: [] };
10234
10338
  }
package/src/metrics.ts CHANGED
@@ -1,13 +1,18 @@
1
1
  import { Attributes, Counter, metrics, Gauge } from '@opentelemetry/api'
2
2
 
3
- const meter = metrics.getMeter('processor')
3
+ const getMeter = () => metrics.getMeter('processor')
4
4
 
5
5
  class C {
6
- private counter: Counter<Attributes>
6
+ private _counter: Counter<Attributes>
7
7
  private value: number = 0
8
8
 
9
- constructor(name: string) {
10
- this.counter = meter.createCounter(name)
9
+ constructor(private name: string) {}
10
+
11
+ get counter(): Counter<Attributes> {
12
+ if (!this._counter) {
13
+ this._counter = getMeter().createCounter(this.name)
14
+ }
15
+ return this._counter
11
16
  }
12
17
 
13
18
  add(value: number, attributes?: Attributes) {
@@ -21,11 +26,16 @@ class C {
21
26
  }
22
27
 
23
28
  class G {
24
- private gauge: Gauge<Attributes>
29
+ private _gauge: Gauge<Attributes>
25
30
  private value: number = 0
26
31
 
27
- constructor(name: string) {
28
- this.gauge = meter.createGauge(name)
32
+ constructor(private name: string) {}
33
+
34
+ get gauge(): Gauge<Attributes> {
35
+ if (!this._gauge) {
36
+ this._gauge = getMeter().createGauge(this.name)
37
+ }
38
+ return this._gauge
29
39
  }
30
40
 
31
41
  record(value: number, attributes?: Attributes) {
package/src/otlp.ts CHANGED
@@ -5,9 +5,13 @@ import { PrometheusExporter } from '@opentelemetry/exporter-prometheus'
5
5
  import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'
6
6
  import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc'
7
7
  import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base'
8
- import { metrics, trace, ProxyTracerProvider } from '@opentelemetry/api'
8
+ import { diag, DiagConsoleLogger, DiagLogLevel, metrics, trace, ProxyTracerProvider } from '@opentelemetry/api'
9
+
10
+ export async function setupOTLP(debug?: boolean) {
11
+ if (debug) {
12
+ diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG)
13
+ }
9
14
 
10
- export async function setupOTLP() {
11
15
  const resource = await envDetector.detect()
12
16
 
13
17
  const meterProvider = new MeterProvider({
@@ -29,12 +33,15 @@ export async function setupOTLP() {
29
33
  const exporter = new OTLPTraceExporter() // new ConsoleSpanExporter();
30
34
  const processor = new BatchSpanProcessor(exporter)
31
35
  traceProvider.addSpanProcessor(processor)
36
+ traceProvider.register()
32
37
 
33
38
  metrics.setGlobalMeterProvider(meterProvider)
34
39
  trace.setGlobalTracerProvider(traceProvider)
35
40
  ;['SIGINT', 'SIGTERM'].forEach((signal) => {
36
41
  process.on(signal as any, () => shutdownProvider())
37
42
  })
43
+
44
+ metrics.getMeter('processor').createGauge('up').record(1)
38
45
  }
39
46
 
40
47
  export async function shutdownProvider() {
@@ -21,15 +21,7 @@ import { FullProcessorServiceImpl } from './full-service.js'
21
21
  import { ChainConfig } from './chain-config.js'
22
22
  import { setupLogger } from './logger.js'
23
23
 
24
- // import { NodeSDK } from '@opentelemetry/sdk-node'
25
- import { envDetector } from '@opentelemetry/resources'
26
- import { OTLPMetricExporter } from '@opentelemetry/exporter-metrics-otlp-grpc'
27
- import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc'
28
- import { PeriodicExportingMetricReader, MeterProvider } from '@opentelemetry/sdk-metrics'
29
- import { BatchSpanProcessor } from '@opentelemetry/sdk-trace-base'
30
- import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'
31
- import { diag, DiagConsoleLogger, DiagLogLevel, metrics, trace } from '@opentelemetry/api'
32
- import { PrometheusExporter } from '@opentelemetry/exporter-prometheus'
24
+ import { setupOTLP } from './otlp.js'
33
25
 
34
26
  // const mergedRegistry = Registry.merge([globalRegistry, niceGrpcRegistry])
35
27
 
@@ -58,51 +50,7 @@ const logLevel = process.env['LOG_LEVEL']?.toUpperCase()
58
50
  setupLogger(options['log-format'] === 'json', logLevel === 'debug' ? true : options.debug)
59
51
  console.debug('Starting with', options.target)
60
52
 
61
- if (options.debug) {
62
- diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG)
63
- }
64
-
65
- const resource = await envDetector.detect()
66
-
67
- const meterProvider = new MeterProvider({
68
- resource,
69
- readers: [
70
- new PeriodicExportingMetricReader({
71
- exporter: new OTLPMetricExporter()
72
- }),
73
- new PrometheusExporter({
74
- // http://localhost:4041/metrics
75
- port: 4041
76
- })
77
- ]
78
- })
79
-
80
- const traceProvider = new NodeTracerProvider({
81
- resource: resource
82
- })
83
- const exporter = new OTLPTraceExporter() // new ConsoleSpanExporter();
84
- const processor = new BatchSpanProcessor(exporter)
85
- traceProvider.addSpanProcessor(processor)
86
- traceProvider.register()
87
-
88
- metrics.setGlobalMeterProvider(meterProvider)
89
- trace.setGlobalTracerProvider(traceProvider)
90
- ;['SIGINT', 'SIGTERM'].forEach((signal) => {
91
- process.on(signal as any, () => shutdownProvider())
92
- })
93
-
94
- export async function shutdownProvider() {
95
- const traceProvider = trace.getTracerProvider()
96
- if (traceProvider instanceof NodeTracerProvider) {
97
- traceProvider.shutdown().catch(console.error)
98
- }
99
- const meterProvider = metrics.getMeterProvider()
100
- if (meterProvider instanceof MeterProvider) {
101
- meterProvider.shutdown().catch(console.error)
102
- }
103
- }
104
-
105
- metrics.getMeter('processor').createGauge('up').record(1)
53
+ await setupOTLP(options.debug)
106
54
 
107
55
  Error.stackTraceLimit = 20
108
56
 
package/src/state.ts CHANGED
@@ -29,6 +29,12 @@ export abstract class StateStorage<T> {
29
29
  }
30
30
  return metricState
31
31
  }
32
+
33
+ unregister(): T {
34
+ const value = State.INSTANCE.stateMap.get(this.key())
35
+ State.INSTANCE.stateMap.delete(this.key())
36
+ return value
37
+ }
32
38
  }
33
39
 
34
40
  export abstract class MapStateStorage<T> extends StateStorage<Map<string, T>> {