@sentio/sdk 1.12.4 → 1.12.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/meter.d.ts CHANGED
@@ -1,6 +1,9 @@
1
1
  import { BaseContext } from './context';
2
2
  import { Numberish } from './numberish';
3
3
  export declare function normalizeName(name: string): string;
4
+ export declare function normalizeKey(name: string): string;
5
+ export declare function normalizeValue(name: string): string;
6
+ export declare function normalizeLabels(labels: Labels): Labels;
4
7
  export declare type Labels = {
5
8
  [key: string]: string;
6
9
  };
package/lib/meter.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Meter = exports.Gauge = exports.Counter = exports.normalizeName = void 0;
6
+ exports.Meter = exports.Gauge = exports.Counter = exports.normalizeLabels = exports.normalizeValue = exports.normalizeKey = exports.normalizeName = void 0;
7
7
  const context_1 = require("./context");
8
8
  const numberish_1 = require("./numberish");
9
9
  const long_1 = __importDefault(require("long"));
@@ -12,6 +12,25 @@ function normalizeName(name) {
12
12
  return name.slice(0, 100).replace(regex, '_');
13
13
  }
14
14
  exports.normalizeName = normalizeName;
15
+ function normalizeKey(name) {
16
+ if (name === 'labels') {
17
+ return 'labels_';
18
+ }
19
+ return normalizeName(name);
20
+ }
21
+ exports.normalizeKey = normalizeKey;
22
+ function normalizeValue(name) {
23
+ return name.slice(0, 100);
24
+ }
25
+ exports.normalizeValue = normalizeValue;
26
+ function normalizeLabels(labels) {
27
+ const normLabels = {};
28
+ for (const key in labels) {
29
+ normLabels[normalizeKey(key)] = normalizeValue(labels[key]);
30
+ }
31
+ return normLabels;
32
+ }
33
+ exports.normalizeLabels = normalizeLabels;
15
34
  function GetRecordMetaData(ctx, name, labels) {
16
35
  name = normalizeName(name);
17
36
  if (ctx instanceof context_1.Context) {
@@ -23,7 +42,7 @@ function GetRecordMetaData(ctx, name, labels) {
23
42
  logIndex: ctx.log.logIndex,
24
43
  chainId: ctx.chainId.toString(),
25
44
  name: name,
26
- labels: labels,
45
+ labels: normalizeLabels(labels),
27
46
  };
28
47
  }
29
48
  if (ctx.block) {
@@ -34,7 +53,7 @@ function GetRecordMetaData(ctx, name, labels) {
34
53
  logIndex: -1,
35
54
  chainId: ctx.chainId.toString(),
36
55
  name: name,
37
- labels: labels,
56
+ labels: normalizeLabels(labels),
38
57
  };
39
58
  }
40
59
  if (ctx.trace) {
@@ -45,7 +64,7 @@ function GetRecordMetaData(ctx, name, labels) {
45
64
  logIndex: -1,
46
65
  chainId: ctx.chainId.toString(),
47
66
  name: name,
48
- labels: labels,
67
+ labels: normalizeLabels(labels),
49
68
  };
50
69
  }
51
70
  }
@@ -57,7 +76,7 @@ function GetRecordMetaData(ctx, name, labels) {
57
76
  logIndex: 0,
58
77
  chainId: 'SOL_mainnet',
59
78
  name: name,
60
- labels: labels,
79
+ labels: normalizeLabels(labels),
61
80
  };
62
81
  }
63
82
  else if (ctx instanceof context_1.SuiContext) {
@@ -68,7 +87,7 @@ function GetRecordMetaData(ctx, name, labels) {
68
87
  logIndex: 0,
69
88
  chainId: 'SUI_devnet',
70
89
  name: name,
71
- labels: labels,
90
+ labels: normalizeLabels(labels),
72
91
  };
73
92
  }
74
93
  throw new Error("This can't happen");
package/lib/meter.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"meter.js","sourceRoot":"","sources":["../src/meter.ts"],"names":[],"mappings":"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","sourcesContent":["import { RecordMetaData } from './gen/processor/protos/processor'\nimport { BaseContext, Context, SolanaContext, SuiContext } from './context'\nimport { toMetricValue, Numberish } from './numberish'\nimport Long from 'long'\n\nexport function normalizeName(name: string) {\n const regex = new RegExp('![_.a-zA-Z0-9]')\n return name.slice(0, 100).replace(regex, '_')\n}\n\nfunction GetRecordMetaData(ctx: BaseContext, name: string, labels: Labels): RecordMetaData {\n name = normalizeName(name)\n\n if (ctx instanceof Context) {\n if (ctx.log) {\n return {\n contractAddress: ctx.contract.rawContract.address,\n blockNumber: Long.fromNumber(ctx.log.blockNumber, true), // TODO need number type to be long\n transactionIndex: ctx.log.transactionIndex,\n logIndex: ctx.log.logIndex,\n chainId: ctx.chainId.toString(),\n name: name,\n labels: labels,\n }\n }\n if (ctx.block) {\n return {\n contractAddress: ctx.contract.rawContract.address,\n blockNumber: Long.fromNumber(ctx.block.number, true),\n transactionIndex: -1,\n logIndex: -1,\n chainId: ctx.chainId.toString(),\n name: name,\n labels: labels,\n }\n }\n if (ctx.trace) {\n return {\n contractAddress: ctx.contract.rawContract.address,\n blockNumber: Long.fromNumber(ctx.trace.blockNumber, true),\n transactionIndex: ctx.trace.transactionPosition, // TODO make sure if this is the right value to set\n logIndex: -1,\n chainId: ctx.chainId.toString(),\n name: name,\n labels: labels,\n }\n }\n } else if (ctx instanceof SolanaContext) {\n return {\n contractAddress: ctx.address,\n blockNumber: Long.ZERO, // TODO need number type to be long\n transactionIndex: 0,\n logIndex: 0,\n chainId: 'SOL_mainnet', // TODO set in context\n name: name,\n labels: labels,\n }\n } else if (ctx instanceof SuiContext) {\n return {\n contractAddress: ctx.address,\n blockNumber: Long.ZERO, // TODO need number type to be long\n transactionIndex: 0,\n logIndex: 0,\n chainId: 'SUI_devnet', // TODO set in context\n name: name,\n labels: labels,\n }\n }\n throw new Error(\"This can't happen\")\n}\n\nexport type Labels = { [key: string]: string }\n\nexport class Counter {\n private readonly ctx: BaseContext\n private readonly name: string\n\n constructor(name: string, ctx: BaseContext) {\n this.name = name\n this.ctx = ctx\n }\n\n add(value: Numberish, labels: Labels = {}) {\n this.record(value, labels, true)\n }\n\n sub(value: Numberish, labels: Labels = {}) {\n this.record(value, labels, false)\n }\n\n private record(value: Numberish, labels: Labels, add: boolean) {\n this.ctx.counters.push({\n metadata: GetRecordMetaData(this.ctx, this.name, labels),\n metricValue: toMetricValue(value),\n add: add,\n runtimeInfo: undefined,\n })\n }\n}\n\nexport class Gauge {\n private readonly name: string\n private readonly ctx: BaseContext\n\n constructor(name: string, ctx: BaseContext) {\n this.name = name\n this.ctx = ctx\n }\n\n record(value: Numberish, labels: Labels = {}) {\n this.ctx.gauges.push({\n metadata: GetRecordMetaData(this.ctx, this.name, labels),\n metricValue: toMetricValue(value),\n runtimeInfo: undefined,\n })\n }\n}\n\nexport class Meter {\n private readonly ctx: BaseContext\n\n // TODO is map necessary since we are sending request remotely?\n // counterMap = new Map<string, Counter>()\n // gaugeMap = new Map<string, Gauge>()\n\n constructor(ctx: BaseContext) {\n this.ctx = ctx\n }\n\n Counter(name: string): Counter {\n // let counter = this.counterMap.get(name)\n\n // if (!counter) {\n // counter = new Counter(name, this.ctx)\n // }\n // return counter\n\n return new Counter(name, this.ctx)\n }\n\n Gauge(name: string): Gauge {\n // let gauge = this.gaugeMap.get(name)\n //\n // if (!gauge) {\n // gauge = new Gauge(name, this.ctx)\n // }\n // return gauge\n return new Gauge(name, this.ctx)\n }\n}\n"]}
1
+ {"version":3,"file":"meter.js","sourceRoot":"","sources":["../src/meter.ts"],"names":[],"mappings":"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","sourcesContent":["import { RecordMetaData } from './gen/processor/protos/processor'\nimport { BaseContext, Context, SolanaContext, SuiContext } from './context'\nimport { toMetricValue, Numberish } from './numberish'\nimport Long from 'long'\n\nexport function normalizeName(name: string): string {\n const regex = new RegExp('![_.a-zA-Z0-9]')\n return name.slice(0, 100).replace(regex, '_')\n}\n\nexport function normalizeKey(name: string): string {\n if (name === 'labels') {\n return 'labels_'\n }\n return normalizeName(name)\n}\n\nexport function 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 GetRecordMetaData(ctx: BaseContext, name: string, labels: Labels): RecordMetaData {\n name = normalizeName(name)\n\n if (ctx instanceof Context) {\n if (ctx.log) {\n return {\n contractAddress: ctx.contract.rawContract.address,\n blockNumber: Long.fromNumber(ctx.log.blockNumber, true), // TODO need number type to be long\n transactionIndex: ctx.log.transactionIndex,\n logIndex: ctx.log.logIndex,\n chainId: ctx.chainId.toString(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n if (ctx.block) {\n return {\n contractAddress: ctx.contract.rawContract.address,\n blockNumber: Long.fromNumber(ctx.block.number, true),\n transactionIndex: -1,\n logIndex: -1,\n chainId: ctx.chainId.toString(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n if (ctx.trace) {\n return {\n contractAddress: ctx.contract.rawContract.address,\n blockNumber: Long.fromNumber(ctx.trace.blockNumber, true),\n transactionIndex: ctx.trace.transactionPosition, // TODO make sure if this is the right value to set\n logIndex: -1,\n chainId: ctx.chainId.toString(),\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n } else if (ctx instanceof SolanaContext) {\n return {\n contractAddress: ctx.address,\n blockNumber: Long.ZERO, // TODO need number type to be long\n transactionIndex: 0,\n logIndex: 0,\n chainId: 'SOL_mainnet', // TODO set in context\n name: name,\n labels: normalizeLabels(labels),\n }\n } else if (ctx instanceof SuiContext) {\n return {\n contractAddress: ctx.address,\n blockNumber: Long.ZERO, // TODO need number type to be long\n transactionIndex: 0,\n logIndex: 0,\n chainId: 'SUI_devnet', // TODO set in context\n name: name,\n labels: normalizeLabels(labels),\n }\n }\n throw new Error(\"This can't happen\")\n}\n\nexport type Labels = { [key: string]: string }\n\nexport class Counter {\n private readonly ctx: BaseContext\n private readonly name: string\n\n constructor(name: string, ctx: BaseContext) {\n this.name = name\n this.ctx = ctx\n }\n\n add(value: Numberish, labels: Labels = {}) {\n this.record(value, labels, true)\n }\n\n sub(value: Numberish, labels: Labels = {}) {\n this.record(value, labels, false)\n }\n\n private record(value: Numberish, labels: Labels, add: boolean) {\n this.ctx.counters.push({\n metadata: GetRecordMetaData(this.ctx, this.name, labels),\n metricValue: toMetricValue(value),\n add: add,\n runtimeInfo: undefined,\n })\n }\n}\n\nexport class Gauge {\n private readonly name: string\n private readonly ctx: BaseContext\n\n constructor(name: string, ctx: BaseContext) {\n this.name = name\n this.ctx = ctx\n }\n\n record(value: Numberish, labels: Labels = {}) {\n this.ctx.gauges.push({\n metadata: GetRecordMetaData(this.ctx, this.name, labels),\n metricValue: toMetricValue(value),\n runtimeInfo: undefined,\n })\n }\n}\n\nexport class Meter {\n private readonly ctx: BaseContext\n\n // TODO is map necessary since we are sending request remotely?\n // counterMap = new Map<string, Counter>()\n // gaugeMap = new Map<string, Gauge>()\n\n constructor(ctx: BaseContext) {\n this.ctx = ctx\n }\n\n Counter(name: string): Counter {\n // let counter = this.counterMap.get(name)\n\n // if (!counter) {\n // counter = new Counter(name, this.ctx)\n // }\n // return counter\n\n return new Counter(name, this.ctx)\n }\n\n Gauge(name: string): Gauge {\n // let gauge = this.gaugeMap.get(name)\n //\n // if (!gauge) {\n // gauge = new Gauge(name, this.ctx)\n // }\n // return gauge\n return new Gauge(name, this.ctx)\n }\n}\n"]}
package/lib/meter.test.js CHANGED
@@ -12,5 +12,10 @@ describe('meter tests', () => {
12
12
  (0, chai_1.expect)((0, meter_1.normalizeName)('*&~') === '___');
13
13
  (0, chai_1.expect)((0, meter_1.normalizeName)('x'.repeat(200)).length === 100);
14
14
  });
15
+ test('test labels', async () => {
16
+ const labels = { labels: '0' };
17
+ const updated = (0, meter_1.normalizeLabels)(labels);
18
+ (0, chai_1.expect)(updated['labels_']).to.eq('0');
19
+ });
15
20
  });
16
21
  //# sourceMappingURL=meter.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"meter.test.js","sourceRoot":"","sources":["../src/meter.test.ts"],"names":[],"mappings":";;AAAA,+BAA6B;AAC7B,mCAAuC;AAEvC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAA;QACtC,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,OAAO,CAAC,KAAK,OAAO,CAAC,CAAA;QAC1C,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAA;QAE9C,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,UAAU,CAAC,KAAK,KAAK,CAAC,CAAA;QAC3C,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAA;QAC9C,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAA;QAEtC,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { expect } from 'chai'\nimport { normalizeName } from './meter'\n\ndescribe('meter tests', () => {\n test('test normalization ', async () => {\n expect(normalizeName('abc') === 'abc')\n expect(normalizeName('a-b-c') === 'a-b-c')\n expect(normalizeName('_a-B-1.') === '_a-B-1.')\n\n expect(normalizeName('a/b\\\\c\\n') === 'abc')\n expect(normalizeName('abc abc') === 'abc_abc')\n expect(normalizeName('*&~') === '___')\n\n expect(normalizeName('x'.repeat(200)).length === 100)\n })\n})\n"]}
1
+ {"version":3,"file":"meter.test.js","sourceRoot":"","sources":["../src/meter.test.ts"],"names":[],"mappings":";;AAAA,+BAA6B;AAC7B,mCAAwD;AAExD,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACrC,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAA;QACtC,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,OAAO,CAAC,KAAK,OAAO,CAAC,CAAA;QAC1C,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAA;QAE9C,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,UAAU,CAAC,KAAK,KAAK,CAAC,CAAA;QAC3C,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,SAAS,CAAC,KAAK,SAAS,CAAC,CAAA;QAC9C,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAA;QAEtC,IAAA,aAAM,EAAC,IAAA,qBAAa,EAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;QAC9B,MAAM,OAAO,GAAG,IAAA,uBAAe,EAAC,MAAM,CAAC,CAAA;QAEvC,IAAA,aAAM,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { expect } from 'chai'\nimport { normalizeLabels, normalizeName } from './meter'\n\ndescribe('meter tests', () => {\n test('test normalization ', async () => {\n expect(normalizeName('abc') === 'abc')\n expect(normalizeName('a-b-c') === 'a-b-c')\n expect(normalizeName('_a-B-1.') === '_a-B-1.')\n\n expect(normalizeName('a/b\\\\c\\n') === 'abc')\n expect(normalizeName('abc abc') === 'abc_abc')\n expect(normalizeName('*&~') === '___')\n\n expect(normalizeName('x'.repeat(200)).length === 100)\n })\n\n test('test labels', async () => {\n const labels = { labels: '0' }\n const updated = normalizeLabels(labels)\n\n expect(updated['labels_']).to.eq('0')\n })\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": "1.12.4",
4
+ "version": "1.12.5",
5
5
  "scripts": {
6
6
  "compile_target": "yarn tsc -b src/target-ethers-sentio/tsconfig.json",
7
7
  "compile": "tsc -p . && cp src/cli/webpack.config.js lib/cli",
package/src/meter.test.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { expect } from 'chai'
2
- import { normalizeName } from './meter'
2
+ import { normalizeLabels, normalizeName } from './meter'
3
3
 
4
4
  describe('meter tests', () => {
5
5
  test('test normalization ', async () => {
@@ -13,4 +13,11 @@ describe('meter tests', () => {
13
13
 
14
14
  expect(normalizeName('x'.repeat(200)).length === 100)
15
15
  })
16
+
17
+ test('test labels', async () => {
18
+ const labels = { labels: '0' }
19
+ const updated = normalizeLabels(labels)
20
+
21
+ expect(updated['labels_']).to.eq('0')
22
+ })
16
23
  })
package/src/meter.ts CHANGED
@@ -3,11 +3,30 @@ import { BaseContext, Context, SolanaContext, SuiContext } from './context'
3
3
  import { toMetricValue, Numberish } from './numberish'
4
4
  import Long from 'long'
5
5
 
6
- export function normalizeName(name: string) {
6
+ export function normalizeName(name: string): string {
7
7
  const regex = new RegExp('![_.a-zA-Z0-9]')
8
8
  return name.slice(0, 100).replace(regex, '_')
9
9
  }
10
10
 
11
+ export function normalizeKey(name: string): string {
12
+ if (name === 'labels') {
13
+ return 'labels_'
14
+ }
15
+ return normalizeName(name)
16
+ }
17
+
18
+ export function normalizeValue(name: string): string {
19
+ return name.slice(0, 100)
20
+ }
21
+
22
+ export function normalizeLabels(labels: Labels): Labels {
23
+ const normLabels: Labels = {}
24
+ for (const key in labels) {
25
+ normLabels[normalizeKey(key)] = normalizeValue(labels[key])
26
+ }
27
+ return normLabels
28
+ }
29
+
11
30
  function GetRecordMetaData(ctx: BaseContext, name: string, labels: Labels): RecordMetaData {
12
31
  name = normalizeName(name)
13
32
 
@@ -20,7 +39,7 @@ function GetRecordMetaData(ctx: BaseContext, name: string, labels: Labels): Reco
20
39
  logIndex: ctx.log.logIndex,
21
40
  chainId: ctx.chainId.toString(),
22
41
  name: name,
23
- labels: labels,
42
+ labels: normalizeLabels(labels),
24
43
  }
25
44
  }
26
45
  if (ctx.block) {
@@ -31,7 +50,7 @@ function GetRecordMetaData(ctx: BaseContext, name: string, labels: Labels): Reco
31
50
  logIndex: -1,
32
51
  chainId: ctx.chainId.toString(),
33
52
  name: name,
34
- labels: labels,
53
+ labels: normalizeLabels(labels),
35
54
  }
36
55
  }
37
56
  if (ctx.trace) {
@@ -42,7 +61,7 @@ function GetRecordMetaData(ctx: BaseContext, name: string, labels: Labels): Reco
42
61
  logIndex: -1,
43
62
  chainId: ctx.chainId.toString(),
44
63
  name: name,
45
- labels: labels,
64
+ labels: normalizeLabels(labels),
46
65
  }
47
66
  }
48
67
  } else if (ctx instanceof SolanaContext) {
@@ -53,7 +72,7 @@ function GetRecordMetaData(ctx: BaseContext, name: string, labels: Labels): Reco
53
72
  logIndex: 0,
54
73
  chainId: 'SOL_mainnet', // TODO set in context
55
74
  name: name,
56
- labels: labels,
75
+ labels: normalizeLabels(labels),
57
76
  }
58
77
  } else if (ctx instanceof SuiContext) {
59
78
  return {
@@ -63,7 +82,7 @@ function GetRecordMetaData(ctx: BaseContext, name: string, labels: Labels): Reco
63
82
  logIndex: 0,
64
83
  chainId: 'SUI_devnet', // TODO set in context
65
84
  name: name,
66
- labels: labels,
85
+ labels: normalizeLabels(labels),
67
86
  }
68
87
  }
69
88
  throw new Error("This can't happen")