@sentio/sdk 2.31.0-rc.1 → 2.31.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.
@@ -1,5 +1,5 @@
1
1
  import { BaseContext } from './base-context.js';
2
- import { CoinID, EventLogConfig, EventLogConfig_BasicFieldType, LogLevel } from '@sentio/protos';
2
+ import { CoinID, EventLogConfig, EventLogConfig_BasicFieldType, EventLogConfig_Field, LogLevel } from '@sentio/protos';
3
3
  import { MapStateStorage } from '@sentio/runtime';
4
4
  export interface Attribute<T> {
5
5
  [key: string]: Exclude<T | number | bigint | string | boolean | LogLevel | Attribute<T> | undefined, Promise<any>>;
@@ -17,9 +17,16 @@ export declare class EventLoggerBinding {
17
17
  constructor(ctx: BaseContext);
18
18
  emit<T>(eventName: string, event: Event<T>): void;
19
19
  }
20
+ export type BasicFieldType = EventLogConfig_BasicFieldType;
21
+ export declare const BasicFieldType: typeof EventLogConfig_BasicFieldType;
22
+ export type FieldType = CoinID | BasicFieldType | Fields;
23
+ export type Fields = {
24
+ [key: string]: FieldType;
25
+ };
20
26
  export interface EventLogOptions {
21
- fields: Record<string, CoinID | EventLogConfig_BasicFieldType>;
27
+ fields: Fields;
22
28
  }
29
+ export declare function fieldsToProtos(fields: Fields): EventLogConfig_Field[];
23
30
  export declare class EventLogger {
24
31
  private readonly eventName;
25
32
  config: EventLogConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"event-logger.d.ts","sourceRoot":"","sources":["../../src/core/event-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,6BAA6B,EAAuB,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAErH,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;CACnH;AAED,MAAM,WAAW,KAAK,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAI5C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,gBAAiB,SAAQ,eAAe,CAAC,WAAW,CAAC;IAChE,MAAM,CAAC,QAAQ,mBAAyB;CACzC;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;gBAErB,GAAG,EAAE,WAAW;IAI5B,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;CAG3C;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,6BAA6B,CAAC,CAAA;CAC/D;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,MAAM,EAAE,cAAc,CAAA;IAEtB,OAAO;IAKP,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,WAAW;IAqB1E,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;CAG1C"}
1
+ {"version":3,"file":"event-logger.d.ts","sourceRoot":"","sources":["../../src/core/event-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EACL,MAAM,EACN,cAAc,EACd,6BAA6B,EAC7B,oBAAoB,EAGpB,QAAQ,EACT,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;CACnH;AAED,MAAM,WAAW,KAAK,CAAC,CAAC,CAAE,SAAQ,SAAS,CAAC,CAAC,CAAC;IAI5C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,gBAAiB,SAAQ,eAAe,CAAC,WAAW,CAAC;IAChE,MAAM,CAAC,QAAQ,mBAAyB;CACzC;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;gBAErB,GAAG,EAAE,WAAW;IAI5B,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;CAG3C;AAED,MAAM,MAAM,cAAc,GAAG,6BAA6B,CAAA;AAC1D,eAAO,MAAM,cAAc,sCAAgC,CAAA;AAE3D,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,cAAc,GAAG,MAAM,CAAA;AAExD,MAAM,MAAM,MAAM,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAA;AAEjD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;CACf;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,oBAAoB,EAAE,CA0BrE;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,MAAM,EAAE,cAAc,CAAA;IAEtB,OAAO;IAKP,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,WAAW;IAa1E,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;CAG1C"}
@@ -1,4 +1,4 @@
1
- import { EventLogConfig, LogLevel } from '@sentio/protos';
1
+ import { EventLogConfig, EventLogConfig_BasicFieldType, EventLogConfig_StructFieldType, LogLevel } from '@sentio/protos';
2
2
  import { normalizeAttribute } from './normalization.js';
3
3
  import { MapStateStorage } from '@sentio/runtime';
4
4
  export class EventLoggerState extends MapStateStorage {
@@ -13,6 +13,35 @@ export class EventLoggerBinding {
13
13
  emit(this.ctx, eventName, event);
14
14
  }
15
15
  }
16
+ export const BasicFieldType = EventLogConfig_BasicFieldType;
17
+ export function fieldsToProtos(fields) {
18
+ const fieldsProto = [];
19
+ for (const [key, value] of Object.entries(fields)) {
20
+ let basicType;
21
+ let coinType;
22
+ let structType;
23
+ if (typeof value === 'number') {
24
+ basicType = value;
25
+ }
26
+ else {
27
+ if (value.address || value.symbol) {
28
+ coinType = value;
29
+ }
30
+ else {
31
+ structType = EventLogConfig_StructFieldType.create({
32
+ fields: fieldsToProtos(value)
33
+ });
34
+ }
35
+ }
36
+ fieldsProto.push({
37
+ name: key,
38
+ basicType,
39
+ coinType,
40
+ structType
41
+ });
42
+ }
43
+ return fieldsProto;
44
+ }
16
45
  export class EventLogger {
17
46
  eventName;
18
47
  config;
@@ -21,20 +50,10 @@ export class EventLogger {
21
50
  this.config = EventLogConfig.fromPartial(config || {});
22
51
  }
23
52
  static register(eventName, options) {
24
- const config = EventLogConfig.create();
25
- for (const [key, value] of Object.entries(options?.fields || {})) {
26
- let basicType;
27
- let coinType;
28
- if (typeof value === 'number') {
29
- basicType = value;
30
- }
31
- else {
32
- coinType = value;
33
- }
34
- config.fields.push({
35
- name: key,
36
- basicType,
37
- coinType
53
+ let config;
54
+ if (options?.fields) {
55
+ config = EventLogConfig.create({
56
+ fields: fieldsToProtos(options.fields)
38
57
  });
39
58
  }
40
59
  const logger = new EventLogger(eventName, config);
@@ -1 +1 @@
1
- {"version":3,"file":"event-logger.js","sourceRoot":"","sources":["../../src/core/event-logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,cAAc,EAAsD,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACrH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAejD,MAAM,OAAO,gBAAiB,SAAQ,eAA4B;IAChE,MAAM,CAAC,QAAQ,GAAG,IAAI,gBAAgB,EAAE,CAAA;;AAG1C,MAAM,OAAO,kBAAkB;IACZ,GAAG,CAAa;IAEjC,YAAY,GAAgB;QAC1B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,IAAI,CAAI,SAAiB,EAAE,KAAe;QACxC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;IAClC,CAAC;CACF;AAMD,MAAM,OAAO,WAAW;IACL,SAAS,CAAQ;IAClC,MAAM,CAAgB;IAEtB,YAAoB,SAAiB,EAAE,MAAuB;QAC5D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC,CAAA;IACxD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,SAAiB,EAAE,OAAyB;QAC1D,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,EAAE,CAAA;QACtC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,CAAC,EAAE;YAChE,IAAI,SAAoD,CAAA;YACxD,IAAI,QAA4B,CAAA;YAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC7B,SAAS,GAAG,KAAK,CAAA;aAClB;iBAAM;gBACL,QAAQ,GAAG,KAAK,CAAA;aACjB;YACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,GAAG;gBACT,SAAS;gBACT,QAAQ;aACT,CAAC,CAAA;SACH;QAED,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACjD,OAAO,gBAAgB,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IACnE,CAAC;IAED,IAAI,CAAI,GAAgB,EAAE,KAAe;QACvC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAClC,CAAC;CACF;AAED,SAAS,IAAI,CAAI,GAAgB,EAAE,SAAiB,EAAE,KAAe;IACnE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,CAAA;IAE3D,MAAM,GAAG,GAAwB;QAC/B,QAAQ,EAAE,GAAG,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC;QACxC,QAAQ,EAAE,QAAQ,IAAI,QAAQ,CAAC,IAAI;QACnC,OAAO,EAAE,OAAO,IAAI,EAAE;QACtB,gBAAgB,EAAE,UAAU,IAAI,EAAE;QAClC,UAAU,EAAE,kBAAkB,CAAC,OAAO,CAAC;QACvC,WAAW,EAAE,SAAS;QACtB,QAAQ,EAAE,IAAI;KACf,CAAA;IACD,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAC/B,CAAC"}
1
+ {"version":3,"file":"event-logger.js","sourceRoot":"","sources":["../../src/core/event-logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=event-logger.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-logger.test.d.ts","sourceRoot":"","sources":["../../src/core/event-logger.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-logger.test.js","sourceRoot":"","sources":["../../src/core/event-logger.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAU,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAE1E,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;QAC5B,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,cAAc,CAAC,MAAM;YAC5B,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,IAAI,EAAE,cAAc,CAAC,IAAI;SAC1B,CAAA;QAED,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;QAC1C,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;YAC1B;gBACE,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,cAAc,CAAC,MAAM;aACjC;YACD;gBACE,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,cAAc,CAAC,MAAM;aACjC;YACD;gBACE,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,cAAc,CAAC,IAAI;aAC/B;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,GAAG;YACb,KAAK,EAAE,cAAc,CAAC,MAAM;YAC5B,EAAE,EAAE;gBACF,GAAG,EAAE,cAAc,CAAC,IAAI;aACzB;SACF,CAAA;QAED,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;QAC1C,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;YAC1B;gBACE,IAAI,EAAE,OAAO;gBACb,SAAS,EAAE,cAAc,CAAC,MAAM;aACjC;YACD;gBACE,IAAI,EAAE,IAAI;gBACV,UAAU,EAAE;oBACV,MAAM,EAAE;wBACN;4BACE,IAAI,EAAE,KAAK;4BACX,SAAS,EAAE,cAAc,CAAC,IAAI;yBAC/B;qBACF;iBACF;aACF;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,MAAM,GAAW;YACrB,IAAI,EAAE;gBACJ,MAAM,EAAE,MAAM;aACf;SACF,CAAA;QACD,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAA;QAC1C,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;YAC1B;gBACE,IAAI,EAAE,MAAM;gBACZ,QAAQ,EAAE;oBACR,MAAM,EAAE,MAAM;iBACf;aACF;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sentio/sdk",
3
- "version": "2.31.0-rc.1",
3
+ "version": "2.31.0-rc.2",
4
4
  "license": "Apache-2.0",
5
5
  "type": "module",
6
6
  "exports": {
@@ -73,8 +73,8 @@
73
73
  "typedoc": "^0.25.0",
74
74
  "utility-types": "^3.10.0",
75
75
  "yaml": "^2.2.1",
76
- "@sentio/protos": "2.31.0-rc.1",
77
- "@sentio/runtime": "^2.31.0-rc.1"
76
+ "@sentio/protos": "2.31.0-rc.2",
77
+ "@sentio/runtime": "^2.31.0-rc.2"
78
78
  },
79
79
  "peerDependencies": {
80
80
  "tsup": "npm:@sentio/tsup@^6.7.2"
@@ -1,5 +1,13 @@
1
1
  import { BaseContext } from './base-context.js'
2
- import { CoinID, EventLogConfig, EventLogConfig_BasicFieldType, EventTrackingResult, LogLevel } from '@sentio/protos'
2
+ import {
3
+ CoinID,
4
+ EventLogConfig,
5
+ EventLogConfig_BasicFieldType,
6
+ EventLogConfig_Field,
7
+ EventLogConfig_StructFieldType,
8
+ EventTrackingResult,
9
+ LogLevel
10
+ } from '@sentio/protos'
3
11
  import { normalizeAttribute } from './normalization.js'
4
12
  import { MapStateStorage } from '@sentio/runtime'
5
13
 
@@ -32,8 +40,43 @@ export class EventLoggerBinding {
32
40
  }
33
41
  }
34
42
 
43
+ export type BasicFieldType = EventLogConfig_BasicFieldType
44
+ export const BasicFieldType = EventLogConfig_BasicFieldType
45
+
46
+ export type FieldType = CoinID | BasicFieldType | Fields
47
+
48
+ export type Fields = { [key: string]: FieldType }
49
+
35
50
  export interface EventLogOptions {
36
- fields: Record<string, CoinID | EventLogConfig_BasicFieldType>
51
+ fields: Fields
52
+ }
53
+
54
+ export function fieldsToProtos(fields: Fields): EventLogConfig_Field[] {
55
+ const fieldsProto: EventLogConfig_Field[] = []
56
+ for (const [key, value] of Object.entries(fields)) {
57
+ let basicType: BasicFieldType | undefined
58
+ let coinType: CoinID | undefined
59
+ let structType: EventLogConfig_StructFieldType | undefined
60
+
61
+ if (typeof value === 'number') {
62
+ basicType = value
63
+ } else {
64
+ if (value.address || value.symbol) {
65
+ coinType = value
66
+ } else {
67
+ structType = EventLogConfig_StructFieldType.create({
68
+ fields: fieldsToProtos(value as Fields)
69
+ })
70
+ }
71
+ }
72
+ fieldsProto.push({
73
+ name: key,
74
+ basicType,
75
+ coinType,
76
+ structType
77
+ })
78
+ }
79
+ return fieldsProto
37
80
  }
38
81
 
39
82
  export class EventLogger {
@@ -46,19 +89,11 @@ export class EventLogger {
46
89
  }
47
90
 
48
91
  static register(eventName: string, options?: EventLogOptions): EventLogger {
49
- const config = EventLogConfig.create()
50
- for (const [key, value] of Object.entries(options?.fields || {})) {
51
- let basicType: EventLogConfig_BasicFieldType | undefined
52
- let coinType: CoinID | undefined
53
- if (typeof value === 'number') {
54
- basicType = value
55
- } else {
56
- coinType = value
57
- }
58
- config.fields.push({
59
- name: key,
60
- basicType,
61
- coinType
92
+ let config: EventLogConfig | undefined
93
+
94
+ if (options?.fields) {
95
+ config = EventLogConfig.create({
96
+ fields: fieldsToProtos(options.fields)
62
97
  })
63
98
  }
64
99