@sentio/sdk 2.1.2 → 2.1.3-rc.1

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.
@@ -1,9 +1,8 @@
1
1
  import { AptosAccountProcessor, defaultMoveCoder } from '@sentio/sdk/aptos';
2
- import { AccountEventTracker } from '@sentio/sdk';
3
2
  import { SouffleChefCampaign, CandyMachine } from './types/souffle.js';
4
3
  import { token } from '../builtin/0x3.js';
5
4
  import { aptos_account, voting } from '../builtin/0x1.js';
6
- const accountTracker = AccountEventTracker.register('pull');
5
+ // const accountTracker = AccountEventTracker.register('pull')
7
6
  SouffleChefCampaign.bind({ startVersion: 3212312n })
8
7
  .onEntryPullTokenV2((call, ctx) => {
9
8
  ctx.meter.Counter('call_num').add(1);
@@ -11,7 +10,7 @@ SouffleChefCampaign.bind({ startVersion: 3212312n })
11
10
  })
12
11
  .onEventPullTokenEvent((evt, ctx) => {
13
12
  ctx.meter.Counter('burned').add(1);
14
- accountTracker.trackEvent(ctx, { distinctId: ctx.transaction.sender });
13
+ ctx.eventLogger.emit('pull', { distinctId: ctx.transaction.sender });
15
14
  })
16
15
  .onEvent((event, ctx) => {
17
16
  ctx.meter.Counter('evt_num').add(1);
@@ -1 +1 @@
1
- {"version":3,"file":"souffl3.js","sourceRoot":"","sources":["../../../src/aptos/tests/souffl3.ts"],"names":[],"mappings":"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","sourcesContent":["import { AptosAccountProcessor, defaultMoveCoder } from '@sentio/sdk/aptos'\nimport { AccountEventTracker } from '@sentio/sdk'\nimport { SouffleChefCampaign, CandyMachine } from './types/souffle.js'\nimport { token } from '../builtin/0x3.js'\nimport { aptos_account, voting } from '../builtin/0x1.js'\n\nconst accountTracker = AccountEventTracker.register('pull')\n\nSouffleChefCampaign.bind({ startVersion: 3212312n })\n .onEntryPullTokenV2((call: SouffleChefCampaign.PullTokenV2Payload, ctx) => {\n ctx.meter.Counter('call_num').add(1)\n ctx.meter.Counter('pulled').add(call.arguments_decoded[3])\n })\n .onEventPullTokenEvent((evt, ctx) => {\n ctx.meter.Counter('burned').add(1)\n accountTracker.trackEvent(ctx, { distinctId: ctx.transaction.sender })\n })\n .onEvent(\n (event, ctx) => {\n ctx.meter.Counter('evt_num').add(1)\n },\n {\n type: '0x1::coin::DepositEvent',\n }\n )\n .onTransaction((txn, ctx) => {\n const events = defaultMoveCoder().filterAndDecodeEvents<token.DepositEvent>('0x3::token::DepositEvent', txn.events)\n for (const event of events) {\n // const depositEventInstance = DEFAULT_TYPE_REGISTRY.decodeEvent(event) as DepositEventInstance\n ctx.meter.Counter('deposit_token_count').add(event.data_decoded.amount)\n }\n })\n\nCandyMachine.bind().onEntryPullToken((call: CandyMachine.PullTokenPayload, ctx) => {\n ctx.meter.Counter('pulled').add(call.arguments[2])\n})\n\ntoken.bind().onEventDepositEvent((evt: token.DepositEventInstance, ctx) => {\n ctx.meter.Gauge('version').record(evt.data_decoded.id.property_version)\n ctx.meter.Counter('deposit').add(evt.data_decoded.amount, { token: evt.data_decoded.id.token_data_id.name })\n})\n\nvoting.bind().onEventCreateProposalEvent((evt, ctx) => {\n ctx.meter.Gauge('size').record(evt.data_decoded.metadata.data.length)\n})\n\nAptosAccountProcessor.bind({ address: '0x1' }).onTimeInterval((resources, ctx) => {\n ctx.meter.Counter('onTimer').add(1)\n}, 10000)\n\naptos_account.bind().onEntryCreateAccount(\n (call, ctx) => {\n ctx.meter.Counter('xx').add(1)\n },\n undefined,\n { resourceChanges: true }\n)\n"]}
1
+ {"version":3,"file":"souffl3.js","sourceRoot":"","sources":["../../../src/aptos/tests/souffl3.ts"],"names":[],"mappings":"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","sourcesContent":["import { AptosAccountProcessor, defaultMoveCoder } from '@sentio/sdk/aptos'\nimport { SouffleChefCampaign, CandyMachine } from './types/souffle.js'\nimport { token } from '../builtin/0x3.js'\nimport { aptos_account, voting } from '../builtin/0x1.js'\n\n// const accountTracker = AccountEventTracker.register('pull')\n\nSouffleChefCampaign.bind({ startVersion: 3212312n })\n .onEntryPullTokenV2((call: SouffleChefCampaign.PullTokenV2Payload, ctx) => {\n ctx.meter.Counter('call_num').add(1)\n ctx.meter.Counter('pulled').add(call.arguments_decoded[3])\n })\n .onEventPullTokenEvent((evt, ctx) => {\n ctx.meter.Counter('burned').add(1)\n ctx.eventLogger.emit('pull', { distinctId: ctx.transaction.sender })\n })\n .onEvent(\n (event, ctx) => {\n ctx.meter.Counter('evt_num').add(1)\n },\n {\n type: '0x1::coin::DepositEvent',\n }\n )\n .onTransaction((txn, ctx) => {\n const events = defaultMoveCoder().filterAndDecodeEvents<token.DepositEvent>('0x3::token::DepositEvent', txn.events)\n for (const event of events) {\n // const depositEventInstance = DEFAULT_TYPE_REGISTRY.decodeEvent(event) as DepositEventInstance\n ctx.meter.Counter('deposit_token_count').add(event.data_decoded.amount)\n }\n })\n\nCandyMachine.bind().onEntryPullToken((call: CandyMachine.PullTokenPayload, ctx) => {\n ctx.meter.Counter('pulled').add(call.arguments[2])\n})\n\ntoken.bind().onEventDepositEvent((evt: token.DepositEventInstance, ctx) => {\n ctx.meter.Gauge('version').record(evt.data_decoded.id.property_version)\n ctx.meter.Counter('deposit').add(evt.data_decoded.amount, { token: evt.data_decoded.id.token_data_id.name })\n})\n\nvoting.bind().onEventCreateProposalEvent((evt, ctx) => {\n ctx.meter.Gauge('size').record(evt.data_decoded.metadata.data.length)\n})\n\nAptosAccountProcessor.bind({ address: '0x1' }).onTimeInterval((resources, ctx) => {\n ctx.meter.Counter('onTimer').add(1)\n}, 10000)\n\naptos_account.bind().onEntryCreateAccount(\n (call, ctx) => {\n ctx.meter.Counter('xx').add(1)\n },\n undefined,\n { resourceChanges: true }\n)\n"]}
@@ -1,10 +1,12 @@
1
1
  import { ProcessResult, RecordMetaData } from '@sentio/protos';
2
- import { Logger } from './logger.js';
2
+ import { EventLogger } from './event-logger.js';
3
3
  import { Meter, Labels } from './meter.js';
4
4
  import { BoundedEventTracker } from './event-tracker.js';
5
5
  export declare abstract class BaseContext {
6
6
  meter: Meter;
7
- logger: Logger;
7
+ eventLogger: EventLogger;
8
+ logger: EventLogger;
9
+ /** @deprecated use {@link this.eventLogger} instead */
8
10
  eventTracker: BoundedEventTracker;
9
11
  _res: ProcessResult;
10
12
  protected constructor();
@@ -1,9 +1,11 @@
1
- import { Logger } from './logger.js';
1
+ import { EventLogger } from './event-logger.js';
2
2
  import { Meter } from './meter.js';
3
3
  import { BoundedEventTracker } from './event-tracker.js';
4
4
  export class BaseContext {
5
5
  meter;
6
+ eventLogger;
6
7
  logger;
8
+ /** @deprecated use {@link this.eventLogger} instead */
7
9
  eventTracker;
8
10
  _res = {
9
11
  counters: [],
@@ -14,7 +16,10 @@ export class BaseContext {
14
16
  };
15
17
  constructor() {
16
18
  this.meter = new Meter(this);
17
- this.logger = new Logger(this);
19
+ this.eventLogger = new EventLogger(this);
20
+ // eslint-disable-next-line deprecation/deprecation
21
+ this.logger = this.eventLogger;
22
+ // eslint-disable-next-line deprecation/deprecation
18
23
  this.eventTracker = new BoundedEventTracker(this);
19
24
  }
20
25
  getProcessResult() {
@@ -1 +1 @@
1
- {"version":3,"file":"base-context.js","sourceRoot":"","sources":["../../src/core/base-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,KAAK,EAAU,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAExD,MAAM,OAAgB,WAAW;IAC/B,KAAK,CAAO;IACZ,MAAM,CAAQ;IACd,YAAY,CAAqB;IAEjC,IAAI,GAAkB;QACpB,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,EAAE;KACT,CAAA;IAED;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAA;IACnD,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;CAGF","sourcesContent":["import { ProcessResult, RecordMetaData } from '@sentio/protos'\nimport { Logger } from './logger.js'\nimport { Meter, Labels } from './meter.js'\nimport { BoundedEventTracker } from './event-tracker.js'\n\nexport abstract class BaseContext {\n meter: Meter\n logger: Logger\n eventTracker: BoundedEventTracker\n\n _res: ProcessResult = {\n counters: [],\n events: [],\n exports: [],\n gauges: [],\n logs: [],\n }\n\n protected constructor() {\n this.meter = new Meter(this)\n this.logger = new Logger(this)\n this.eventTracker = new BoundedEventTracker(this)\n }\n\n getProcessResult(): ProcessResult {\n return this._res\n }\n\n abstract getMetaData(name: string, labels: Labels): RecordMetaData\n}\n"]}
1
+ {"version":3,"file":"base-context.js","sourceRoot":"","sources":["../../src/core/base-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAU,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAExD,MAAM,OAAgB,WAAW;IAC/B,KAAK,CAAO;IACZ,WAAW,CAAa;IAExB,MAAM,CAAa;IACnB,uDAAuD;IACvD,YAAY,CAAqB;IAEjC,IAAI,GAAkB;QACpB,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,EAAE;KACT,CAAA;IAED;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAA;QACxC,mDAAmD;QACnD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAA;QAC9B,mDAAmD;QACnD,IAAI,CAAC,YAAY,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAA;IACnD,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;CAGF","sourcesContent":["import { ProcessResult, RecordMetaData } from '@sentio/protos'\nimport { EventLogger } from './event-logger.js'\nimport { Meter, Labels } from './meter.js'\nimport { BoundedEventTracker } from './event-tracker.js'\n\nexport abstract class BaseContext {\n meter: Meter\n eventLogger: EventLogger\n\n logger: EventLogger\n /** @deprecated use {@link this.eventLogger} instead */\n eventTracker: BoundedEventTracker\n\n _res: ProcessResult = {\n counters: [],\n events: [],\n exports: [],\n gauges: [],\n logs: [],\n }\n\n protected constructor() {\n this.meter = new Meter(this)\n this.eventLogger = new EventLogger(this)\n // eslint-disable-next-line deprecation/deprecation\n this.logger = this.eventLogger\n // eslint-disable-next-line deprecation/deprecation\n this.eventTracker = new BoundedEventTracker(this)\n }\n\n getProcessResult(): ProcessResult {\n return this._res\n }\n\n abstract getMetaData(name: string, labels: Labels): RecordMetaData\n}\n"]}
@@ -1,6 +1,5 @@
1
1
  import { Plugin, PluginManager } from '@sentio/runtime';
2
2
  import { MetricState } from './meter.js';
3
- import { EventTrackerState } from './event-tracker.js';
4
3
  import { ExporterState } from './exporter.js';
5
4
  export class CorePlugin extends Plugin {
6
5
  name = 'CorePlugin';
@@ -11,16 +10,6 @@ export class CorePlugin extends Plugin {
11
10
  ...metric.config,
12
11
  });
13
12
  }
14
- for (const eventTracker of EventTrackerState.INSTANCE.getValues()) {
15
- config.eventTrackingConfigs.push({
16
- distinctAggregationByDays: eventTracker.options.distinctByDays || [],
17
- eventName: eventTracker.name,
18
- retentionConfig: undefined,
19
- totalByDay: eventTracker.options.totalByDay || false,
20
- totalPerEntity: undefined,
21
- unique: eventTracker.options.unique || false,
22
- });
23
- }
24
13
  for (const exporter of ExporterState.INSTANCE.getValues()) {
25
14
  config.exportConfigs.push({
26
15
  name: exporter.name,
@@ -1 +1 @@
1
- {"version":3,"file":"core-plugin.js","sourceRoot":"","sources":["../../src/core/core-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,OAAO,UAAW,SAAQ,MAAM;IACpC,IAAI,GAAW,YAAY,CAAA;IAE3B,KAAK,CAAC,SAAS,CAAC,MAA6B;QAC3C,qDAAqD;QACrD,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACrD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;gBACxB,GAAG,MAAM,CAAC,MAAM;aACjB,CAAC,CAAA;SACH;QAED,KAAK,MAAM,YAAY,IAAI,iBAAiB,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACjE,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC;gBAC/B,yBAAyB,EAAE,YAAY,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE;gBACpE,SAAS,EAAE,YAAY,CAAC,IAAI;gBAC5B,eAAe,EAAE,SAAS;gBAC1B,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK;gBACpD,cAAc,EAAE,SAAS;gBACzB,MAAM,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK;aAC7C,CAAC,CAAA;SACH;QAED,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACzD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;gBACxB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;aAC1B,CAAC,CAAA;SACH;IACH,CAAC;CACF;AAED,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC,CAAA","sourcesContent":["import { Plugin, PluginManager } from '@sentio/runtime'\nimport { ProcessConfigResponse } from '@sentio/protos'\n\nimport { MetricState } from './meter.js'\nimport { EventTrackerState } from './event-tracker.js'\nimport { ExporterState } from './exporter.js'\n\nexport class CorePlugin extends Plugin {\n name: string = 'CorePlugin'\n\n async configure(config: ProcessConfigResponse): Promise<void> {\n // part 0, prepare metrics and event tracking configs\n for (const metric of MetricState.INSTANCE.getValues()) {\n config.metricConfigs.push({\n ...metric.config,\n })\n }\n\n for (const eventTracker of EventTrackerState.INSTANCE.getValues()) {\n config.eventTrackingConfigs.push({\n distinctAggregationByDays: eventTracker.options.distinctByDays || [],\n eventName: eventTracker.name,\n retentionConfig: undefined,\n totalByDay: eventTracker.options.totalByDay || false,\n totalPerEntity: undefined,\n unique: eventTracker.options.unique || false,\n })\n }\n\n for (const exporter of ExporterState.INSTANCE.getValues()) {\n config.exportConfigs.push({\n name: exporter.name,\n channel: exporter.channel,\n })\n }\n }\n}\n\nPluginManager.INSTANCE.register(new CorePlugin())\n"]}
1
+ {"version":3,"file":"core-plugin.js","sourceRoot":"","sources":["../../src/core/core-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,MAAM,OAAO,UAAW,SAAQ,MAAM;IACpC,IAAI,GAAW,YAAY,CAAA;IAE3B,KAAK,CAAC,SAAS,CAAC,MAA6B;QAC3C,qDAAqD;QACrD,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACrD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;gBACxB,GAAG,MAAM,CAAC,MAAM;aACjB,CAAC,CAAA;SACH;QAED,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE;YACzD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC;gBACxB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;aAC1B,CAAC,CAAA;SACH;IACH,CAAC;CACF;AAED,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,EAAE,CAAC,CAAA","sourcesContent":["import { Plugin, PluginManager } from '@sentio/runtime'\nimport { ProcessConfigResponse } from '@sentio/protos'\n\nimport { MetricState } from './meter.js'\nimport { ExporterState } from './exporter.js'\n\nexport class CorePlugin extends Plugin {\n name: string = 'CorePlugin'\n\n async configure(config: ProcessConfigResponse): Promise<void> {\n // part 0, prepare metrics and event tracking configs\n for (const metric of MetricState.INSTANCE.getValues()) {\n config.metricConfigs.push({\n ...metric.config,\n })\n }\n\n for (const exporter of ExporterState.INSTANCE.getValues()) {\n config.exportConfigs.push({\n name: exporter.name,\n channel: exporter.channel,\n })\n }\n }\n}\n\nPluginManager.INSTANCE.register(new CorePlugin())\n"]}
@@ -1,14 +1,16 @@
1
1
  import { BaseContext } from './base-context.js';
2
2
  import { LogLevel } from '@sentio/protos';
3
3
  import { NamedResultDescriptor } from './metadata.js';
4
+ import { Event } from './event-tracker.js';
4
5
  export type Attributes = Record<string, any>;
5
- export declare class Logger extends NamedResultDescriptor {
6
+ export declare class EventLogger extends NamedResultDescriptor {
6
7
  private readonly ctx;
7
8
  constructor(ctx: BaseContext, name?: string);
8
- withName(name: string): Logger;
9
+ withName(name: string): EventLogger;
9
10
  protected log(level: LogLevel, message: any, attributes?: Attributes): void;
10
11
  info(msg: any, attributes?: Attributes): void;
11
12
  warn(msg: any, attributes?: Attributes): void;
12
13
  error(msg: any, attributes?: Attributes): void;
13
14
  critical(msg: any, attributes?: Attributes): void;
15
+ emit(eventName: string, event: Event): void;
14
16
  }
@@ -1,14 +1,14 @@
1
1
  import { LogLevel } from '@sentio/protos';
2
2
  import { NamedResultDescriptor } from './metadata.js';
3
3
  import { normalizeAttribute } from './normalization.js';
4
- export class Logger extends NamedResultDescriptor {
4
+ export class EventLogger extends NamedResultDescriptor {
5
5
  ctx;
6
6
  constructor(ctx, name = '') {
7
7
  super(name);
8
8
  this.ctx = ctx;
9
9
  }
10
10
  withName(name) {
11
- return new Logger(this.ctx, name);
11
+ return new EventLogger(this.ctx, name);
12
12
  }
13
13
  log(level, message, attributes = {}) {
14
14
  if (typeof message !== 'string' && !(message instanceof String)) {
@@ -36,5 +36,18 @@ export class Logger extends NamedResultDescriptor {
36
36
  critical(msg, attributes = {}) {
37
37
  this.log(LogLevel.CRITICAL, msg, attributes);
38
38
  }
39
+ emit(eventName, event) {
40
+ const { distinctId, severity, message, ...payload } = event;
41
+ const res = {
42
+ metadata: this.ctx.getMetaData(eventName, {}),
43
+ severity: severity || LogLevel.INFO,
44
+ message: message || '',
45
+ distinctEntityId: distinctId || '',
46
+ attributes: payload,
47
+ runtimeInfo: undefined,
48
+ noMetric: true,
49
+ };
50
+ this.ctx._res.events.push(res);
51
+ }
39
52
  }
40
- //# sourceMappingURL=logger.js.map
53
+ //# sourceMappingURL=event-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-logger.js","sourceRoot":"","sources":["../../src/core/event-logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAKvD,MAAM,OAAO,WAAY,SAAQ,qBAAqB;IACnC,GAAG,CAAa;IAEjC,YAAY,GAAgB,EAAE,IAAI,GAAG,EAAE;QACrC,KAAK,CAAC,IAAI,CAAC,CAAA;QACX,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACxC,CAAC;IAES,GAAG,CAAC,KAAe,EAAE,OAAY,EAAE,aAAyB,EAAE;QACtE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,YAAY,MAAM,CAAC,EAAE;YAC/D,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;SAClC;QAED,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;QAE3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,mBAAmB;YACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,KAAK;YACL,OAAO;YACP,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,SAAS;SACvB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,GAAQ,EAAE,aAAyB,EAAE;QACxC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,CAAC,GAAQ,EAAE,aAAyB,EAAE;QACxC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,GAAQ,EAAE,aAAyB,EAAE;QACzC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAC3C,CAAC;IAED,QAAQ,CAAC,GAAQ,EAAE,aAAyB,EAAE;QAC5C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAC9C,CAAC;IAED,IAAI,CAAC,SAAiB,EAAE,KAAY;QAClC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAA;QAE3D,MAAM,GAAG,GAAwB;YAC/B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC;YAC7C,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,IAAI;YACnC,OAAO,EAAE,OAAO,IAAI,EAAE;YACtB,gBAAgB,EAAE,UAAU,IAAI,EAAE;YAClC,UAAU,EAAE,OAAO;YACnB,WAAW,EAAE,SAAS;YACtB,QAAQ,EAAE,IAAI;SACf,CAAA;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAChC,CAAC;CACF","sourcesContent":["import { BaseContext } from './base-context.js'\nimport { EventTrackingResult, LogLevel } from '@sentio/protos'\nimport { NamedResultDescriptor } from './metadata.js'\nimport { normalizeAttribute } from './normalization.js'\nimport { Event } from './event-tracker.js'\n\nexport type Attributes = Record<string, any>\n\nexport class EventLogger extends NamedResultDescriptor {\n private readonly ctx: BaseContext\n\n constructor(ctx: BaseContext, name = '') {\n super(name)\n this.ctx = ctx\n }\n\n withName(name: string) {\n return new EventLogger(this.ctx, name)\n }\n\n protected log(level: LogLevel, message: any, attributes: Attributes = {}) {\n if (typeof message !== 'string' && !(message instanceof String)) {\n message = JSON.stringify(message)\n }\n\n const norm = normalizeAttribute(attributes)\n\n this.ctx._res.logs.push({\n // name: this.name,\n metadata: this.ctx.getMetaData(this.name, {}), // GetRecordMetaData(this.ctx, this, {}),\n level,\n message,\n attributes2: norm,\n runtimeInfo: undefined,\n })\n }\n\n info(msg: any, attributes: Attributes = {}) {\n this.log(LogLevel.INFO, msg, attributes)\n }\n\n warn(msg: any, attributes: Attributes = {}) {\n this.log(LogLevel.WARNING, msg, attributes)\n }\n\n error(msg: any, attributes: Attributes = {}) {\n this.log(LogLevel.ERROR, msg, attributes)\n }\n\n critical(msg: any, attributes: Attributes = {}) {\n this.log(LogLevel.CRITICAL, msg, attributes)\n }\n\n emit(eventName: string, event: Event) {\n const { distinctId, severity, message, ...payload } = event\n\n const res: EventTrackingResult = {\n metadata: this.ctx.getMetaData(eventName, {}),\n severity: severity || LogLevel.INFO,\n message: message || '',\n distinctEntityId: distinctId || '',\n attributes: payload,\n runtimeInfo: undefined,\n noMetric: true,\n }\n this.ctx._res.events.push(res)\n }\n}\n"]}
@@ -1,29 +1,11 @@
1
1
  import { BaseContext } from './base-context.js';
2
- import { NamedResultDescriptor } from './metadata.js';
3
- import { MapStateStorage } from '@sentio/runtime';
2
+ import { LogLevel } from '@sentio/protos';
4
3
  export interface Event {
5
- distinctId: string;
4
+ distinctId?: string;
5
+ severity?: LogLevel;
6
+ message?: string;
6
7
  [key: string]: any;
7
8
  }
8
- export interface TrackerOptions {
9
- totalByDay?: boolean;
10
- unique?: boolean;
11
- distinctByDays?: number[];
12
- }
13
- export declare class EventTrackerState extends MapStateStorage<EventTracker> {
14
- static INSTANCE: EventTrackerState;
15
- }
16
- export declare class EventTracker extends NamedResultDescriptor {
17
- static DEFAULT_OPTIONS: TrackerOptions;
18
- static register(eventName: string, options?: TrackerOptions): EventTracker;
19
- options: TrackerOptions;
20
- protected constructor(eventName: string, options: TrackerOptions);
21
- trackEvent(ctx: BaseContext, event: Event): void;
22
- }
23
- export declare class AccountEventTracker extends EventTracker {
24
- static DEFAULT_OPTIONS: TrackerOptions;
25
- static register(eventName?: string, options?: TrackerOptions): EventTracker;
26
- }
27
9
  export declare class BoundedEventTracker {
28
10
  private readonly ctx;
29
11
  constructor(ctx: BaseContext);
@@ -1,63 +1,16 @@
1
- import { NamedResultDescriptor } from './metadata.js';
2
- import { MapStateStorage } from '@sentio/runtime';
3
- import { normalizeAttribute } from './normalization.js';
4
- export class EventTrackerState extends MapStateStorage {
5
- static INSTANCE = new EventTrackerState();
6
- }
7
- // Track Event with an identity associate with it
8
- export class EventTracker extends NamedResultDescriptor {
9
- static DEFAULT_OPTIONS = {
10
- totalByDay: true,
11
- unique: true,
12
- };
13
- static register(eventName, options) {
14
- const tracker = new EventTracker(eventName, { ...EventTracker.DEFAULT_OPTIONS, ...options });
15
- return EventTrackerState.INSTANCE.getOrSetValue(eventName, tracker);
16
- }
17
- options;
18
- constructor(eventName, options) {
19
- super(eventName);
20
- this.options = options;
21
- }
22
- trackEvent(ctx, event) {
23
- const { distinctId, ...payload } = event;
24
- const res = {
25
- metadata: ctx.getMetaData(this.name, {}),
26
- distinctEntityId: distinctId,
27
- attributes: normalizeAttribute(payload),
28
- runtimeInfo: undefined,
29
- noMetric: false,
30
- };
31
- ctx._res.events.push(res);
32
- }
33
- }
34
- export class AccountEventTracker extends EventTracker {
35
- static DEFAULT_OPTIONS = {
36
- totalByDay: true,
37
- unique: true,
38
- distinctByDays: [1, 7, 30],
39
- };
40
- static register(eventName, options) {
41
- if (eventName) {
42
- eventName = ['user', eventName].join('_');
43
- }
44
- else {
45
- eventName = 'user';
46
- }
47
- const tracker = new AccountEventTracker(eventName, { ...AccountEventTracker.DEFAULT_OPTIONS, ...options });
48
- return EventTrackerState.INSTANCE.getOrSetValue(eventName, tracker);
49
- }
50
- }
1
+ import { LogLevel } from '@sentio/protos';
51
2
  export class BoundedEventTracker {
52
3
  ctx;
53
4
  constructor(ctx) {
54
5
  this.ctx = ctx;
55
6
  }
56
7
  track(eventName, event) {
57
- const { distinctId, ...payload } = event;
8
+ const { distinctId, severity, message, ...payload } = event;
58
9
  const res = {
59
10
  metadata: this.ctx.getMetaData(eventName, {}),
60
- distinctEntityId: distinctId,
11
+ severity: severity || LogLevel.INFO,
12
+ message: message || '',
13
+ distinctEntityId: distinctId || '',
61
14
  attributes: payload,
62
15
  runtimeInfo: undefined,
63
16
  noMetric: true,
@@ -1 +1 @@
1
- {"version":3,"file":"event-tracker.js","sourceRoot":"","sources":["../../src/core/event-tracker.ts"],"names":[],"mappings":"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","sourcesContent":["import { BaseContext } from './base-context.js'\nimport { EventTrackingResult } from '@sentio/protos'\nimport { NamedResultDescriptor } from './metadata.js'\nimport { MapStateStorage } from '@sentio/runtime'\nimport { normalizeAttribute } from './normalization.js'\n\nexport interface Event {\n // The unique identifier of main identity associate with an event\n // .e.g user id / toekn address / account address / contract address id\n //\n distinctId: string\n [key: string]: any\n}\n\nexport interface TrackerOptions {\n totalByDay?: boolean\n unique?: boolean\n distinctByDays?: number[]\n}\n\nexport class EventTrackerState extends MapStateStorage<EventTracker> {\n static INSTANCE = new EventTrackerState()\n}\n\n// Track Event with an identity associate with it\nexport class EventTracker extends NamedResultDescriptor {\n static DEFAULT_OPTIONS: TrackerOptions = {\n totalByDay: true,\n unique: true,\n }\n\n static register(eventName: string, options?: TrackerOptions) {\n const tracker = new EventTracker(eventName, { ...EventTracker.DEFAULT_OPTIONS, ...options })\n return EventTrackerState.INSTANCE.getOrSetValue(eventName, tracker)\n }\n\n options: TrackerOptions\n protected constructor(eventName: string, options: TrackerOptions) {\n super(eventName)\n this.options = options\n }\n\n trackEvent(ctx: BaseContext, event: Event) {\n const { distinctId, ...payload } = event\n\n const res: EventTrackingResult = {\n metadata: ctx.getMetaData(this.name, {}),\n distinctEntityId: distinctId,\n attributes: normalizeAttribute(payload),\n runtimeInfo: undefined,\n noMetric: false,\n }\n ctx._res.events.push(res)\n }\n}\n\nexport class AccountEventTracker extends EventTracker {\n static DEFAULT_OPTIONS: TrackerOptions = {\n totalByDay: true,\n unique: true,\n distinctByDays: [1, 7, 30],\n }\n\n static register(eventName?: string, options?: TrackerOptions) {\n if (eventName) {\n eventName = ['user', eventName].join('_')\n } else {\n eventName = 'user'\n }\n const tracker = new AccountEventTracker(eventName, { ...AccountEventTracker.DEFAULT_OPTIONS, ...options })\n return EventTrackerState.INSTANCE.getOrSetValue(eventName, tracker)\n }\n}\n\nexport class BoundedEventTracker {\n private readonly ctx: BaseContext\n\n constructor(ctx: BaseContext) {\n this.ctx = ctx\n }\n\n track(eventName: string, event: Event) {\n const { distinctId, ...payload } = event\n const res: EventTrackingResult = {\n metadata: this.ctx.getMetaData(eventName, {}),\n distinctEntityId: distinctId,\n attributes: payload,\n runtimeInfo: undefined,\n noMetric: true,\n }\n this.ctx._res.events.push(res)\n }\n}\n"]}
1
+ {"version":3,"file":"event-tracker.js","sourceRoot":"","sources":["../../src/core/event-tracker.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAa9D,MAAM,OAAO,mBAAmB;IACb,GAAG,CAAa;IAEjC,YAAY,GAAgB;QAC1B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,SAAiB,EAAE,KAAY;QACnC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAA;QAE3D,MAAM,GAAG,GAAwB;YAC/B,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC;YAC7C,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,IAAI;YACnC,OAAO,EAAE,OAAO,IAAI,EAAE;YACtB,gBAAgB,EAAE,UAAU,IAAI,EAAE;YAClC,UAAU,EAAE,OAAO;YACnB,WAAW,EAAE,SAAS;YACtB,QAAQ,EAAE,IAAI;SACf,CAAA;QACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAChC,CAAC;CACF","sourcesContent":["import { BaseContext } from './base-context.js'\nimport { EventTrackingResult, LogLevel } from '@sentio/protos'\n\nexport interface Event {\n // The unique identifier of main identity associate with an event\n // .e.g user id / token address / account address / contract address id\n //\n distinctId?: string\n severity?: LogLevel\n message?: string\n\n [key: string]: any\n}\n\nexport class BoundedEventTracker {\n private readonly ctx: BaseContext\n\n constructor(ctx: BaseContext) {\n this.ctx = ctx\n }\n\n track(eventName: string, event: Event) {\n const { distinctId, severity, message, ...payload } = event\n\n const res: EventTrackingResult = {\n metadata: this.ctx.getMetaData(eventName, {}),\n severity: severity || LogLevel.INFO,\n message: message || '',\n distinctEntityId: distinctId || '',\n attributes: payload,\n runtimeInfo: undefined,\n noMetric: true,\n }\n this.ctx._res.events.push(res)\n }\n}\n"]}
@@ -2,7 +2,6 @@ export { BigDecimal, scaleDown } from './big-decimal.js';
2
2
  export { BaseContext } from './base-context.js';
3
3
  export { normalizeLabels } from './normalization.js';
4
4
  export { CounterBinding, Meter, type Labels, GaugeBinding, Counter, Gauge, MetricOptions } from './meter.js';
5
- export { EventTracker, AccountEventTracker } from './event-tracker.js';
6
5
  export { Exporter } from './exporter.js';
7
6
  export { type Numberish, toBigInteger, toMetricValue } from './numberish.js';
8
7
  export { SuiBaseProcessor, SuiBindOptions } from './sui-processor.js';
package/lib/core/index.js CHANGED
@@ -2,7 +2,6 @@ export { BigDecimal, scaleDown } from './big-decimal.js';
2
2
  export { BaseContext } from './base-context.js';
3
3
  export { normalizeLabels } from './normalization.js';
4
4
  export { CounterBinding, Meter, GaugeBinding, Counter, Gauge, MetricOptions } from './meter.js';
5
- export { EventTracker, AccountEventTracker } from './event-tracker.js';
6
5
  export { Exporter } from './exporter.js';
7
6
  export { toBigInteger, toMetricValue } from './numberish.js';
8
7
  export { SuiBaseProcessor, SuiBindOptions } from './sui-processor.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,KAAK,EAAe,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC5G,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAkB,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE5E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA","sourcesContent":["export { BigDecimal, scaleDown } from './big-decimal.js'\nexport { BaseContext } from './base-context.js'\nexport { normalizeLabels } from './normalization.js'\nexport { CounterBinding, Meter, type Labels, GaugeBinding, Counter, Gauge, MetricOptions } from './meter.js'\nexport { EventTracker, AccountEventTracker } from './event-tracker.js'\nexport { Exporter } from './exporter.js'\nexport { type Numberish, toBigInteger, toMetricValue } from './numberish.js'\n\nexport { SuiBaseProcessor, SuiBindOptions } from './sui-processor.js'\n\nexport { SuiPlugin } from './sui-plugin.js'\nexport { CorePlugin } from './core-plugin.js'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,KAAK,EAAe,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC5G,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAkB,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE5E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAErE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA","sourcesContent":["export { BigDecimal, scaleDown } from './big-decimal.js'\nexport { BaseContext } from './base-context.js'\nexport { normalizeLabels } from './normalization.js'\nexport { CounterBinding, Meter, type Labels, GaugeBinding, Counter, Gauge, MetricOptions } from './meter.js'\nexport { Exporter } from './exporter.js'\nexport { type Numberish, toBigInteger, toMetricValue } from './numberish.js'\n\nexport { SuiBaseProcessor, SuiBindOptions } from './sui-processor.js'\n\nexport { SuiPlugin } from './sui-plugin.js'\nexport { CorePlugin } from './core-plugin.js'\n"]}
@@ -49,7 +49,7 @@ function normalizeObject(obj, length) {
49
49
  ret = {};
50
50
  for (const [key, value] of Object.entries(obj)) {
51
51
  const normValue = normalizeObject(value, length);
52
- if (normValue) {
52
+ if (normValue != null) {
53
53
  ret[key] = normValue;
54
54
  }
55
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"normalization.js","sourceRoot":"","sources":["../../src/core/normalization.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAA;AAC5D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,OAAO,SAAS,CAAA;KACjB;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,UAAU,GAAW,EAAE,CAAA;IAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;QACxB,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;KAC5D;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,GAAQ,EAAE,MAAc;IAC/C,IAAI,GAAQ,CAAA;IAEZ,MAAM,UAAU,GAAG,OAAO,GAAG,CAAA;IAC7B,QAAQ,UAAU,EAAE;QAClB,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QAC7B,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;QACpB,KAAK,QAAQ;YACX,OAAO,GAAG,CAAA;QACZ,KAAK,UAAU;YACb,OAAO,IAAI,CAAA;QACb,KAAK,QAAQ;YACX,OAAO,IAAI,CAAA;KACd;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACtB,GAAG,GAAG,EAAE,CAAA;QACR,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;YACrB,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;SACvC;KACF;SAAM,IAAI,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE;QAC9B,IAAI,GAAG,YAAY,IAAI,EAAE;YACvB,OAAO,GAAG,CAAC,WAAW,EAAE,CAAA;SACzB;QACD,IAAI,GAAG,YAAY,UAAU,EAAE;YAC7B,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;SACtB;QACD,GAAG,GAAG,EAAE,CAAA;QACR,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC9C,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAChD,IAAI,SAAS,EAAE;gBACb,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;aACrB;SACF;KACF;SAAM;QACL,GAAG,GAAG,GAAG,CAAA;KACV;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAA2B;IAC5D,OAAO,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AACtC,CAAC","sourcesContent":["import { Labels } from './meter.js'\nimport { BigDecimal } from './big-decimal.js'\n\nfunction normalizeName(name: string): string {\n return name.slice(0, 100).replace(/[^_\\-a-zA-Z0-9]/g, '_')\n}\n\nexport function normalizeKey(name: string): string {\n if (name === 'labels') {\n return 'labels_'\n }\n return normalizeName(name)\n}\n\nfunction normalizeValue(name: string): string {\n return name.slice(0, 100)\n}\n\nexport function normalizeLabels(labels: Labels): Labels {\n const normLabels: Labels = {}\n for (const key in labels) {\n normLabels[normalizeKey(key)] = normalizeValue(labels[key])\n }\n return normLabels\n}\n\nfunction normalizeObject(obj: any, length: number): any {\n let ret: any\n\n const typeString = typeof obj\n switch (typeString) {\n case 'string':\n return obj.slice(0, length)\n case 'bigint':\n return Number(obj)\n case 'number':\n return obj\n case 'function':\n return null\n case 'symbol':\n return null\n }\n if (Array.isArray(obj)) {\n ret = []\n for (const val of obj) {\n ret.push(normalizeObject(val, length))\n }\n } else if (obj === Object(obj)) {\n if (obj instanceof Date) {\n return obj.toISOString()\n }\n if (obj instanceof BigDecimal) {\n return obj.toNumber()\n }\n ret = {}\n for (const [key, value] of Object.entries(obj)) {\n const normValue = normalizeObject(value, length)\n if (normValue) {\n ret[key] = normValue\n }\n }\n } else {\n ret = obj\n }\n return ret\n}\n\nexport function normalizeAttribute(record: Record<string, any>): any {\n return normalizeObject(record, 1000)\n}\n"]}
1
+ {"version":3,"file":"normalization.js","sourceRoot":"","sources":["../../src/core/normalization.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE7C,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAA;AAC5D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,OAAO,SAAS,CAAA;KACjB;IACD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAA;AAC5B,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,MAAM,UAAU,GAAW,EAAE,CAAA;IAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;QACxB,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;KAC5D;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,GAAQ,EAAE,MAAc;IAC/C,IAAI,GAAQ,CAAA;IAEZ,MAAM,UAAU,GAAG,OAAO,GAAG,CAAA;IAC7B,QAAQ,UAAU,EAAE;QAClB,KAAK,QAAQ;YACX,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;QAC7B,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC,GAAG,CAAC,CAAA;QACpB,KAAK,QAAQ;YACX,OAAO,GAAG,CAAA;QACZ,KAAK,UAAU;YACb,OAAO,IAAI,CAAA;QACb,KAAK,QAAQ;YACX,OAAO,IAAI,CAAA;KACd;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACtB,GAAG,GAAG,EAAE,CAAA;QACR,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;YACrB,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAA;SACvC;KACF;SAAM,IAAI,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE;QAC9B,IAAI,GAAG,YAAY,IAAI,EAAE;YACvB,OAAO,GAAG,CAAC,WAAW,EAAE,CAAA;SACzB;QACD,IAAI,GAAG,YAAY,UAAU,EAAE;YAC7B,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAA;SACtB;QACD,GAAG,GAAG,EAAE,CAAA;QACR,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC9C,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;YAChD,IAAI,SAAS,IAAI,IAAI,EAAE;gBACrB,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;aACrB;SACF;KACF;SAAM;QACL,GAAG,GAAG,GAAG,CAAA;KACV;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAA2B;IAC5D,OAAO,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AACtC,CAAC","sourcesContent":["import { Labels } from './meter.js'\nimport { BigDecimal } from './big-decimal.js'\n\nfunction normalizeName(name: string): string {\n return name.slice(0, 100).replace(/[^_\\-a-zA-Z0-9]/g, '_')\n}\n\nexport function normalizeKey(name: string): string {\n if (name === 'labels') {\n return 'labels_'\n }\n return normalizeName(name)\n}\n\nfunction normalizeValue(name: string): string {\n return name.slice(0, 100)\n}\n\nexport function normalizeLabels(labels: Labels): Labels {\n const normLabels: Labels = {}\n for (const key in labels) {\n normLabels[normalizeKey(key)] = normalizeValue(labels[key])\n }\n return normLabels\n}\n\nfunction normalizeObject(obj: any, length: number): any {\n let ret: any\n\n const typeString = typeof obj\n switch (typeString) {\n case 'string':\n return obj.slice(0, length)\n case 'bigint':\n return Number(obj)\n case 'number':\n return obj\n case 'function':\n return null\n case 'symbol':\n return null\n }\n if (Array.isArray(obj)) {\n ret = []\n for (const val of obj) {\n ret.push(normalizeObject(val, length))\n }\n } else if (obj === Object(obj)) {\n if (obj instanceof Date) {\n return obj.toISOString()\n }\n if (obj instanceof BigDecimal) {\n return obj.toNumber()\n }\n ret = {}\n for (const [key, value] of Object.entries(obj)) {\n const normValue = normalizeObject(value, length)\n if (normValue != null) {\n ret[key] = normValue\n }\n }\n } else {\n ret = obj\n }\n return ret\n}\n\nexport function normalizeAttribute(record: Record<string, any>): any {\n return normalizeObject(record, 1000)\n}\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sentio/sdk",
3
3
  "license": "Apache-2.0",
4
- "version": "2.1.2",
4
+ "version": "2.1.3-rc.1",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "compile": "tsc -p . && cp src/utils/*.csv lib/utils && cp src/tsup.config.ts lib",
@@ -18,9 +18,9 @@
18
18
  "@project-serum/anchor": "^0.26.0",
19
19
  "@sentio/bigdecimal": "^9.1.1-patch.3",
20
20
  "@sentio/ethers-v6": "^1.0.25",
21
- "@sentio/protos": "^2.1.2",
22
- "@sentio/runtime": "^2.1.2",
23
- "@sentio/sdk": "^2.1.2",
21
+ "@sentio/protos": "^2.1.3-rc.1",
22
+ "@sentio/runtime": "^2.1.3-rc.1",
23
+ "@sentio/sdk": "^2.1.3-rc.1",
24
24
  "@solana/web3.js": "^1.47.3",
25
25
  "@types/prettier": "^2.7.2",
26
26
  "aptos-sdk": "npm:@sentio/aptos@^1.6.0",
@@ -71,5 +71,5 @@
71
71
  "typedoc": {
72
72
  "entryPoint": "./src/index.ts"
73
73
  },
74
- "gitHead": "f00dfbe0fa3056472ce6691ff2cea94262680875"
74
+ "gitHead": "7abc8209ebf49b692f138aa1377f3da15e736be7"
75
75
  }
@@ -1,10 +1,9 @@
1
1
  import { AptosAccountProcessor, defaultMoveCoder } from '@sentio/sdk/aptos'
2
- import { AccountEventTracker } from '@sentio/sdk'
3
2
  import { SouffleChefCampaign, CandyMachine } from './types/souffle.js'
4
3
  import { token } from '../builtin/0x3.js'
5
4
  import { aptos_account, voting } from '../builtin/0x1.js'
6
5
 
7
- const accountTracker = AccountEventTracker.register('pull')
6
+ // const accountTracker = AccountEventTracker.register('pull')
8
7
 
9
8
  SouffleChefCampaign.bind({ startVersion: 3212312n })
10
9
  .onEntryPullTokenV2((call: SouffleChefCampaign.PullTokenV2Payload, ctx) => {
@@ -13,7 +12,7 @@ SouffleChefCampaign.bind({ startVersion: 3212312n })
13
12
  })
14
13
  .onEventPullTokenEvent((evt, ctx) => {
15
14
  ctx.meter.Counter('burned').add(1)
16
- accountTracker.trackEvent(ctx, { distinctId: ctx.transaction.sender })
15
+ ctx.eventLogger.emit('pull', { distinctId: ctx.transaction.sender })
17
16
  })
18
17
  .onEvent(
19
18
  (event, ctx) => {
@@ -1,11 +1,14 @@
1
1
  import { ProcessResult, RecordMetaData } from '@sentio/protos'
2
- import { Logger } from './logger.js'
2
+ import { EventLogger } from './event-logger.js'
3
3
  import { Meter, Labels } from './meter.js'
4
4
  import { BoundedEventTracker } from './event-tracker.js'
5
5
 
6
6
  export abstract class BaseContext {
7
7
  meter: Meter
8
- logger: Logger
8
+ eventLogger: EventLogger
9
+
10
+ logger: EventLogger
11
+ /** @deprecated use {@link this.eventLogger} instead */
9
12
  eventTracker: BoundedEventTracker
10
13
 
11
14
  _res: ProcessResult = {
@@ -18,7 +21,10 @@ export abstract class BaseContext {
18
21
 
19
22
  protected constructor() {
20
23
  this.meter = new Meter(this)
21
- this.logger = new Logger(this)
24
+ this.eventLogger = new EventLogger(this)
25
+ // eslint-disable-next-line deprecation/deprecation
26
+ this.logger = this.eventLogger
27
+ // eslint-disable-next-line deprecation/deprecation
22
28
  this.eventTracker = new BoundedEventTracker(this)
23
29
  }
24
30
 
@@ -2,7 +2,6 @@ import { Plugin, PluginManager } from '@sentio/runtime'
2
2
  import { ProcessConfigResponse } from '@sentio/protos'
3
3
 
4
4
  import { MetricState } from './meter.js'
5
- import { EventTrackerState } from './event-tracker.js'
6
5
  import { ExporterState } from './exporter.js'
7
6
 
8
7
  export class CorePlugin extends Plugin {
@@ -16,17 +15,6 @@ export class CorePlugin extends Plugin {
16
15
  })
17
16
  }
18
17
 
19
- for (const eventTracker of EventTrackerState.INSTANCE.getValues()) {
20
- config.eventTrackingConfigs.push({
21
- distinctAggregationByDays: eventTracker.options.distinctByDays || [],
22
- eventName: eventTracker.name,
23
- retentionConfig: undefined,
24
- totalByDay: eventTracker.options.totalByDay || false,
25
- totalPerEntity: undefined,
26
- unique: eventTracker.options.unique || false,
27
- })
28
- }
29
-
30
18
  for (const exporter of ExporterState.INSTANCE.getValues()) {
31
19
  config.exportConfigs.push({
32
20
  name: exporter.name,
@@ -1,11 +1,12 @@
1
1
  import { BaseContext } from './base-context.js'
2
- import { LogLevel } from '@sentio/protos'
2
+ import { EventTrackingResult, LogLevel } from '@sentio/protos'
3
3
  import { NamedResultDescriptor } from './metadata.js'
4
4
  import { normalizeAttribute } from './normalization.js'
5
+ import { Event } from './event-tracker.js'
5
6
 
6
7
  export type Attributes = Record<string, any>
7
8
 
8
- export class Logger extends NamedResultDescriptor {
9
+ export class EventLogger extends NamedResultDescriptor {
9
10
  private readonly ctx: BaseContext
10
11
 
11
12
  constructor(ctx: BaseContext, name = '') {
@@ -14,7 +15,7 @@ export class Logger extends NamedResultDescriptor {
14
15
  }
15
16
 
16
17
  withName(name: string) {
17
- return new Logger(this.ctx, name)
18
+ return new EventLogger(this.ctx, name)
18
19
  }
19
20
 
20
21
  protected log(level: LogLevel, message: any, attributes: Attributes = {}) {
@@ -49,4 +50,19 @@ export class Logger extends NamedResultDescriptor {
49
50
  critical(msg: any, attributes: Attributes = {}) {
50
51
  this.log(LogLevel.CRITICAL, msg, attributes)
51
52
  }
53
+
54
+ emit(eventName: string, event: Event) {
55
+ const { distinctId, severity, message, ...payload } = event
56
+
57
+ const res: EventTrackingResult = {
58
+ metadata: this.ctx.getMetaData(eventName, {}),
59
+ severity: severity || LogLevel.INFO,
60
+ message: message || '',
61
+ distinctEntityId: distinctId || '',
62
+ attributes: payload,
63
+ runtimeInfo: undefined,
64
+ noMetric: true,
65
+ }
66
+ this.ctx._res.events.push(res)
67
+ }
52
68
  }
@@ -1,75 +1,15 @@
1
1
  import { BaseContext } from './base-context.js'
2
- import { EventTrackingResult } from '@sentio/protos'
3
- import { NamedResultDescriptor } from './metadata.js'
4
- import { MapStateStorage } from '@sentio/runtime'
5
- import { normalizeAttribute } from './normalization.js'
2
+ import { EventTrackingResult, LogLevel } from '@sentio/protos'
6
3
 
7
4
  export interface Event {
8
5
  // The unique identifier of main identity associate with an event
9
- // .e.g user id / toekn address / account address / contract address id
6
+ // .e.g user id / token address / account address / contract address id
10
7
  //
11
- distinctId: string
12
- [key: string]: any
13
- }
14
-
15
- export interface TrackerOptions {
16
- totalByDay?: boolean
17
- unique?: boolean
18
- distinctByDays?: number[]
19
- }
20
-
21
- export class EventTrackerState extends MapStateStorage<EventTracker> {
22
- static INSTANCE = new EventTrackerState()
23
- }
24
-
25
- // Track Event with an identity associate with it
26
- export class EventTracker extends NamedResultDescriptor {
27
- static DEFAULT_OPTIONS: TrackerOptions = {
28
- totalByDay: true,
29
- unique: true,
30
- }
31
-
32
- static register(eventName: string, options?: TrackerOptions) {
33
- const tracker = new EventTracker(eventName, { ...EventTracker.DEFAULT_OPTIONS, ...options })
34
- return EventTrackerState.INSTANCE.getOrSetValue(eventName, tracker)
35
- }
36
-
37
- options: TrackerOptions
38
- protected constructor(eventName: string, options: TrackerOptions) {
39
- super(eventName)
40
- this.options = options
41
- }
42
-
43
- trackEvent(ctx: BaseContext, event: Event) {
44
- const { distinctId, ...payload } = event
8
+ distinctId?: string
9
+ severity?: LogLevel
10
+ message?: string
45
11
 
46
- const res: EventTrackingResult = {
47
- metadata: ctx.getMetaData(this.name, {}),
48
- distinctEntityId: distinctId,
49
- attributes: normalizeAttribute(payload),
50
- runtimeInfo: undefined,
51
- noMetric: false,
52
- }
53
- ctx._res.events.push(res)
54
- }
55
- }
56
-
57
- export class AccountEventTracker extends EventTracker {
58
- static DEFAULT_OPTIONS: TrackerOptions = {
59
- totalByDay: true,
60
- unique: true,
61
- distinctByDays: [1, 7, 30],
62
- }
63
-
64
- static register(eventName?: string, options?: TrackerOptions) {
65
- if (eventName) {
66
- eventName = ['user', eventName].join('_')
67
- } else {
68
- eventName = 'user'
69
- }
70
- const tracker = new AccountEventTracker(eventName, { ...AccountEventTracker.DEFAULT_OPTIONS, ...options })
71
- return EventTrackerState.INSTANCE.getOrSetValue(eventName, tracker)
72
- }
12
+ [key: string]: any
73
13
  }
74
14
 
75
15
  export class BoundedEventTracker {
@@ -80,10 +20,13 @@ export class BoundedEventTracker {
80
20
  }
81
21
 
82
22
  track(eventName: string, event: Event) {
83
- const { distinctId, ...payload } = event
23
+ const { distinctId, severity, message, ...payload } = event
24
+
84
25
  const res: EventTrackingResult = {
85
26
  metadata: this.ctx.getMetaData(eventName, {}),
86
- distinctEntityId: distinctId,
27
+ severity: severity || LogLevel.INFO,
28
+ message: message || '',
29
+ distinctEntityId: distinctId || '',
87
30
  attributes: payload,
88
31
  runtimeInfo: undefined,
89
32
  noMetric: true,
package/src/core/index.ts CHANGED
@@ -2,7 +2,6 @@ export { BigDecimal, scaleDown } from './big-decimal.js'
2
2
  export { BaseContext } from './base-context.js'
3
3
  export { normalizeLabels } from './normalization.js'
4
4
  export { CounterBinding, Meter, type Labels, GaugeBinding, Counter, Gauge, MetricOptions } from './meter.js'
5
- export { EventTracker, AccountEventTracker } from './event-tracker.js'
6
5
  export { Exporter } from './exporter.js'
7
6
  export { type Numberish, toBigInteger, toMetricValue } from './numberish.js'
8
7
 
@@ -55,7 +55,7 @@ function normalizeObject(obj: any, length: number): any {
55
55
  ret = {}
56
56
  for (const [key, value] of Object.entries(obj)) {
57
57
  const normValue = normalizeObject(value, length)
58
- if (normValue) {
58
+ if (normValue != null) {
59
59
  ret[key] = normValue
60
60
  }
61
61
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAIvD,MAAM,OAAO,MAAO,SAAQ,qBAAqB;IAC9B,GAAG,CAAa;IAEjC,YAAY,GAAgB,EAAE,IAAI,GAAG,EAAE;QACrC,KAAK,CAAC,IAAI,CAAC,CAAA;QACX,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC;IAES,GAAG,CAAC,KAAe,EAAE,OAAY,EAAE,aAAyB,EAAE;QACtE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,YAAY,MAAM,CAAC,EAAE;YAC/D,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;SAClC;QAED,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAA;QAE3C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,mBAAmB;YACnB,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,KAAK;YACL,OAAO;YACP,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,SAAS;SACvB,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,GAAQ,EAAE,aAAyB,EAAE;QACxC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,CAAC,GAAQ,EAAE,aAAyB,EAAE;QACxC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAC7C,CAAC;IAED,KAAK,CAAC,GAAQ,EAAE,aAAyB,EAAE;QACzC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAC3C,CAAC;IAED,QAAQ,CAAC,GAAQ,EAAE,aAAyB,EAAE;QAC5C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,UAAU,CAAC,CAAA;IAC9C,CAAC;CACF","sourcesContent":["import { BaseContext } from './base-context.js'\nimport { LogLevel } from '@sentio/protos'\nimport { NamedResultDescriptor } from './metadata.js'\nimport { normalizeAttribute } from './normalization.js'\n\nexport type Attributes = Record<string, any>\n\nexport class Logger extends NamedResultDescriptor {\n private readonly ctx: BaseContext\n\n constructor(ctx: BaseContext, name = '') {\n super(name)\n this.ctx = ctx\n }\n\n withName(name: string) {\n return new Logger(this.ctx, name)\n }\n\n protected log(level: LogLevel, message: any, attributes: Attributes = {}) {\n if (typeof message !== 'string' && !(message instanceof String)) {\n message = JSON.stringify(message)\n }\n\n const norm = normalizeAttribute(attributes)\n\n this.ctx._res.logs.push({\n // name: this.name,\n metadata: this.ctx.getMetaData(this.name, {}), // GetRecordMetaData(this.ctx, this, {}),\n level,\n message,\n attributes2: norm,\n runtimeInfo: undefined,\n })\n }\n\n info(msg: any, attributes: Attributes = {}) {\n this.log(LogLevel.INFO, msg, attributes)\n }\n\n warn(msg: any, attributes: Attributes = {}) {\n this.log(LogLevel.WARNING, msg, attributes)\n }\n\n error(msg: any, attributes: Attributes = {}) {\n this.log(LogLevel.ERROR, msg, attributes)\n }\n\n critical(msg: any, attributes: Attributes = {}) {\n this.log(LogLevel.CRITICAL, msg, attributes)\n }\n}\n"]}