@sentio/sdk 2.10.0-rc.1 → 2.10.0-rc.3
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/core/normalization.d.ts +2 -0
- package/lib/core/normalization.js +6 -2
- package/lib/core/normalization.js.map +1 -1
- package/lib/core/numberish.test.js.map +1 -1
- package/lib/core/yaml-contract-config.d.ts +5 -0
- package/lib/core/yaml-contract-config.js +2 -0
- package/lib/core/yaml-contract-config.js.map +1 -0
- package/lib/eth/codegen/codegen.d.ts +2 -1
- package/lib/eth/codegen/codegen.js +4 -4
- package/lib/eth/codegen/codegen.js.map +1 -1
- package/lib/eth/codegen/ethers-sentio.d.ts +3 -2
- package/lib/eth/codegen/ethers-sentio.js +31 -6
- package/lib/eth/codegen/ethers-sentio.js.map +1 -1
- package/lib/eth/codegen/run.js +1 -1
- package/lib/eth/codegen/run.js.map +1 -1
- package/package.json +6 -5
- package/src/core/normalization.ts +7 -2
- package/src/core/yaml-contract-config.ts +5 -0
- package/src/eth/codegen/codegen.ts +9 -4
- package/src/eth/codegen/ethers-sentio.ts +40 -9
- package/src/eth/codegen/run.ts +1 -1
- package/src/eth/codegen/tsconfig.json +1 -1
@@ -1,4 +1,6 @@
|
|
1
1
|
import { Labels } from './meter.js';
|
2
|
+
export declare const SENTIO_BIGINT_STRING_SUFFIX = ":sto_bi";
|
3
|
+
export declare const SENTIO_BIGDECIMAL_STRING_SUFFIX = ":sto_bd";
|
2
4
|
export declare function normalizeKey(name: string): string;
|
3
5
|
export declare function normalizeLabels(labels: Labels): Labels;
|
4
6
|
export declare function normalizeAttribute(record: Record<string, any>): any;
|
@@ -1,4 +1,6 @@
|
|
1
1
|
import { BigDecimal } from './big-decimal.js';
|
2
|
+
export const SENTIO_BIGINT_STRING_SUFFIX = ':sto_bi';
|
3
|
+
export const SENTIO_BIGDECIMAL_STRING_SUFFIX = ':sto_bd';
|
2
4
|
function normalizeName(name) {
|
3
5
|
return name.slice(0, 128).replace(/[^_\-a-zA-Z0-9]/g, '_');
|
4
6
|
}
|
@@ -29,7 +31,8 @@ function normalizeObject(obj, length) {
|
|
29
31
|
case 'string':
|
30
32
|
return obj.slice(0, length);
|
31
33
|
case 'bigint':
|
32
|
-
return
|
34
|
+
return obj.toString() + SENTIO_BIGINT_STRING_SUFFIX;
|
35
|
+
// return Number(obj)
|
33
36
|
case 'number':
|
34
37
|
return obj;
|
35
38
|
case 'function':
|
@@ -54,7 +57,8 @@ function normalizeObject(obj, length) {
|
|
54
57
|
console.error("can't submit NaN or Infinity value, will store as 0");
|
55
58
|
return 0;
|
56
59
|
}
|
57
|
-
return obj.
|
60
|
+
return obj.toString() + SENTIO_BIGDECIMAL_STRING_SUFFIX;
|
61
|
+
// return obj.toNumber()
|
58
62
|
}
|
59
63
|
if (obj instanceof Promise) {
|
60
64
|
console.error('Cannot submit promise');
|
@@ -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,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE;QACtB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,8EAA8E,CAAC,CAAA;QACnG,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;KAC3B;IACD,OAAO,IAAI,CAAA;AACb,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,
|
1
|
+
{"version":3,"file":"normalization.js","sourceRoot":"","sources":["../../src/core/normalization.ts"],"names":[],"mappings":"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","sourcesContent":["import { Labels } from './meter.js'\nimport { BigDecimal } from './big-decimal.js'\n\nexport const SENTIO_BIGINT_STRING_SUFFIX = ':sto_bi'\nexport const SENTIO_BIGDECIMAL_STRING_SUFFIX = ':sto_bd'\n\nfunction normalizeName(name: string): string {\n return name.slice(0, 128).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 if (name.length > 1024) {\n console.warn(`${name} is exceed max length for value storage, will be truncate to 1024 characters`)\n return name.slice(0, 1024)\n }\n return name\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 obj.toString() + SENTIO_BIGINT_STRING_SUFFIX\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 console.warn('Array type inside log/event payload is not currently supported and will be ignored.')\n return null\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 if (obj.isNaN() || !obj.isFinite()) {\n console.error(\"can't submit NaN or Infinity value, will store as 0\")\n return 0\n }\n return obj.toString() + SENTIO_BIGDECIMAL_STRING_SUFFIX\n // return obj.toNumber()\n }\n if (obj instanceof Promise) {\n console.error('Cannot submit promise')\n return null\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"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"numberish.test.js","sourceRoot":"","sources":["../../src/core/numberish.test.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"numberish.test.js","sourceRoot":"","sources":["../../src/core/numberish.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from 'chai'\nimport { toBigInteger, toMetricValue } from './numberish.js'\nimport { webcrypto } from 'crypto'\nimport { performance } from 'perf_hooks'\nimport { BigInteger, Struct } from '@sentio/protos'\nimport { BigDecimal } from './big-decimal.js'\nimport { bytesToBigInt } from '../utils/conversion.js'\nimport { normalizeAttribute } from './normalization.js'\n\n// TODO add test for type conversion\ndescribe('Numberish tests', () => {\n const values: bigint[] = [0n, -0n, 3815372408723498172304781320847103784n, 2132n, -18708707n, 123n << 100n]\n\n test('big integer conversion correctness ', async () => {\n for (const v of values) {\n const b = toBigInteger(v)\n const hex1 = BigIntegerToHex(b)\n const hex2 = v.toString(16)\n expect(hex1).equals(hex2)\n }\n })\n\n test('random big integer conversion correctness ', async () => {\n for (let i = 0; i < 1000; i++) {\n const random = webcrypto.getRandomValues(new Uint8Array(256))\n const v = bytesToBigInt(random)\n const b = toBigInteger(v)\n\n expect(bytesToBigInt(b.data)).equals(v)\n }\n })\n\n test.skip('random big integer performance', async () => {\n jest.setTimeout(100000)\n jest.retryTimes(3)\n\n let timer1 = 0\n let timer2 = 0\n for (let i = 0; i < 1000; i++) {\n // Use higher value for local debugging\n const random = webcrypto.getRandomValues(new Uint8Array(256))\n const v = bytesToBigInt(random)\n\n let start = performance.now()\n toBigInteger(v)\n timer1 += performance.now() - start\n\n start = performance.now()\n v.toString(16)\n timer2 += performance.now() - start\n }\n\n console.log(timer1, timer2)\n expect(timer1).to.lessThan(timer2 * 3)\n })\n\n test('metric values', async () => {\n const longDec = '12.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002'\n expect(toMetricValue(new BigDecimal(longDec)).bigDecimal == longDec)\n\n const complexDec = '-7.350918e-428'\n expect(toMetricValue(new BigDecimal(complexDec)).bigDecimal == complexDec)\n\n expect(\n BigIntegerToBigInt(toMetricValue(new BigDecimal('100000')).bigInteger || BigInteger.fromPartial({})) === 100000n\n )\n })\n\n test('normalize attributes basic', async () => {\n const t1 = { a: 'a', n: 123, n2: 1233333333300000000000n, n3: BigDecimal(10.01), nested: { date: new Date() } }\n const r1 = normalizeAttribute(t1)\n expect(r1.n2).equals('1233333333300000000000:sto_bi')\n expect(r1.n3).equals('10.01:sto_bd')\n expect(typeof r1.nested.date).equals('string')\n\n const w1 = Struct.encode(Struct.wrap(r1))\n const s2 = Struct.decode(w1.finish())\n\n const t2 = { f: () => {} }\n const r2 = normalizeAttribute(t2)\n expect(r2.f).equals(undefined)\n\n const t3 = {\n token0Symbol: null,\n token1Symbol: 't2',\n }\n const r3 = normalizeAttribute(t3)\n const w3 = Struct.encode(Struct.wrap(r3))\n const s3 = Struct.decode(w3.finish())\n console.log(r3)\n })\n\n test('invalid value', async () => {\n const t1 = { a: BigDecimal(1).dividedBy(0) }\n const r1 = normalizeAttribute(t1)\n expect(r1.a).equals(0)\n })\n})\n\n// Performance very bad\nfunction BigIntegerToHex(b: BigInteger): string {\n let res = bytesToBigInt(b.data).toString(16)\n if (b.negative) {\n res = '-' + res\n }\n return res\n}\n\nfunction BigIntegerToBigInt(b: BigInteger): bigint {\n let res = bytesToBigInt(b.data)\n if (b.negative) {\n res = -res\n }\n return res\n}\n"]}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"yaml-contract-config.js","sourceRoot":"","sources":["../../src/core/yaml-contract-config.ts"],"names":[],"mappings":"","sourcesContent":["export interface YamlContractConfig {\n address: string\n chain: string\n name: string\n}\n"]}
|
@@ -1 +1,2 @@
|
|
1
|
-
|
1
|
+
import { YamlContractConfig } from '../../core/yaml-contract-config.js';
|
2
|
+
export declare function codegen(abisDir: string, outDir: string, contractsToGenExample?: YamlContractConfig[]): Promise<void>;
|
@@ -5,13 +5,13 @@ import EthersSentio from './ethers-sentio.js';
|
|
5
5
|
import * as prettier from 'prettier';
|
6
6
|
import path from 'path';
|
7
7
|
import mkdirp from 'mkdirp';
|
8
|
-
export async function codegen(abisDir, outDir,
|
8
|
+
export async function codegen(abisDir, outDir, contractsToGenExample = []) {
|
9
9
|
if (!fs.existsSync(abisDir)) {
|
10
10
|
return;
|
11
11
|
}
|
12
|
-
console.log('Generated', await codegenInternal(abisDir, outDir,
|
12
|
+
console.log('Generated', await codegenInternal(abisDir, outDir, contractsToGenExample), 'files');
|
13
13
|
}
|
14
|
-
async function codegenInternal(abisDir, outDir,
|
14
|
+
async function codegenInternal(abisDir, outDir, contractsToGenExample) {
|
15
15
|
let allFiles = fs.readdirSync(abisDir);
|
16
16
|
if (allFiles.length === 0) {
|
17
17
|
return 0;
|
@@ -34,7 +34,7 @@ async function codegenInternal(abisDir, outDir, genUsage) {
|
|
34
34
|
outDir: outInternal,
|
35
35
|
allFiles: allFiles,
|
36
36
|
filesToProcess: allFiles,
|
37
|
-
|
37
|
+
contractsToGenExample: contractsToGenExample,
|
38
38
|
};
|
39
39
|
const services = {
|
40
40
|
fs,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../../src/eth/codegen/codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AACnG,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,EAAE,aAAa,EAAY,MAAM,WAAW,CAAA;AACnD,OAAO,YAAoC,MAAM,oBAAoB,CAAA;AACrE,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAA;AACpC,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,MAAM,MAAM,QAAQ,CAAA;
|
1
|
+
{"version":3,"file":"codegen.js","sourceRoot":"","sources":["../../../src/eth/codegen/codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AACnG,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,EAAE,aAAa,EAAY,MAAM,WAAW,CAAA;AACnD,OAAO,YAAoC,MAAM,oBAAoB,CAAA;AACrE,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAA;AACpC,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,MAAM,MAAM,QAAQ,CAAA;AAG3B,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAe,EAAE,MAAc,EAAE,wBAA8C,EAAE;IAC7G,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QAC3B,OAAM;KACP;IACD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,qBAAqB,CAAC,EAAE,OAAO,CAAC,CAAA;AAClG,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,OAAe,EACf,MAAc,EACd,qBAA2C;IAE3C,IAAI,QAAQ,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACzB,OAAO,CAAC,CAAA;KACT;IACD,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA;IAExD,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IAClC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;QACzB,OAAO,CAAC,CAAA;KACT;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IACpD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE;QAC/B,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;KAC/C;IAED,mBAAmB;IACnB,MAAM,MAAM,GAAuB;QACjC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,KAAK,EAAE,aAAa;QACpB,QAAQ,EAAE,OAAO;QACjB,MAAM,EAAE,EAAE;QACV,MAAM,EAAE,WAAW;QACnB,QAAQ,EAAE,QAAQ;QAClB,cAAc,EAAE,QAAQ;QACxB,qBAAqB,EAAE,qBAAqB;KAC7C,CAAA;IACD,MAAM,QAAQ,GAAa;QACzB,EAAE;QACF,sBAAsB;QACtB,kCAAkC;QAClC,QAAQ;QACR,MAAM,EAAE,MAAM,CAAC,IAAI;KACpB,CAAA;IACD,IAAI,cAAc,GAAG,CAAC,CAAA;IAEtB,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAA;IAEvC,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,cAAc,CAAC,CAAA;IAE9E,cAAc,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;IAE3E,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE;QACjC,cAAc,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAA;KAClF;IAED,cAAc,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IAEpE,OAAO,cAAc,CAAA;AACvB,CAAC","sourcesContent":["import { loadFileDescriptions, processOutput, skipEmptyAbis } from 'typechain/dist/typechain/io.js'\nimport * as fs from 'fs'\nimport { DEFAULT_FLAGS, Services } from 'typechain'\nimport EthersSentio, { SentioEthersConfig } from './ethers-sentio.js'\nimport * as prettier from 'prettier'\nimport path from 'path'\nimport mkdirp from 'mkdirp'\nimport { YamlContractConfig } from '../../core/yaml-contract-config.js'\n\nexport async function codegen(abisDir: string, outDir: string, contractsToGenExample: YamlContractConfig[] = []) {\n if (!fs.existsSync(abisDir)) {\n return\n }\n console.log('Generated', await codegenInternal(abisDir, outDir, contractsToGenExample), 'files')\n}\n\nasync function codegenInternal(\n abisDir: string,\n outDir: string,\n contractsToGenExample: YamlContractConfig[]\n): Promise<number> {\n let allFiles = fs.readdirSync(abisDir)\n if (allFiles.length === 0) {\n return 0\n }\n allFiles = allFiles.map((f) => path.resolve(abisDir, f))\n\n allFiles = skipEmptyAbis(allFiles)\n if (allFiles.length === 0) {\n return 0\n }\n const outInternal = path.resolve(outDir, 'internal')\n if (!fs.existsSync(outInternal)) {\n fs.mkdirSync(outInternal, { recursive: true })\n }\n\n // skip empty paths\n const config: SentioEthersConfig = {\n cwd: process.cwd(),\n flags: DEFAULT_FLAGS,\n inputDir: abisDir,\n target: '',\n outDir: outInternal,\n allFiles: allFiles,\n filesToProcess: allFiles,\n contractsToGenExample: contractsToGenExample,\n }\n const services: Services = {\n fs,\n // @ts-ignore for test\n // prettier: { format: (s) => s },\n prettier,\n mkdirp: mkdirp.sync,\n }\n let filesGenerated = 0\n\n const target = new EthersSentio(config)\n\n const fileDescriptions = loadFileDescriptions(services, config.filesToProcess)\n\n filesGenerated += processOutput(services, config, await target.beforeRun())\n\n for (const fd of fileDescriptions) {\n filesGenerated += processOutput(services, config, await target.transformFile(fd))\n }\n\n filesGenerated += processOutput(services, config, target.afterRun())\n\n return filesGenerated\n}\n"]}
|
@@ -1,11 +1,12 @@
|
|
1
1
|
import Ethers from '@sentio/ethers-v6';
|
2
2
|
import { Config, FileDescription } from 'typechain';
|
3
|
+
import { YamlContractConfig } from '../../core/yaml-contract-config.js';
|
3
4
|
export interface SentioEthersConfig extends Config {
|
4
|
-
|
5
|
+
contractsToGenExample: YamlContractConfig[];
|
5
6
|
}
|
6
7
|
export default class EthersSentio extends Ethers.default {
|
7
8
|
constructor(config: SentioEthersConfig);
|
8
|
-
private
|
9
|
+
private processedABIs;
|
9
10
|
transformAbiOrFullJsonFile(file: FileDescription): FileDescription[] | void;
|
10
11
|
afterRun(): FileDescription[];
|
11
12
|
}
|
@@ -9,7 +9,7 @@ export default class EthersSentio extends Ethers.default {
|
|
9
9
|
}
|
10
10
|
super(config);
|
11
11
|
}
|
12
|
-
|
12
|
+
processedABIs = [];
|
13
13
|
// TODO(pc): also have to override transformBinFile, transformFile
|
14
14
|
transformAbiOrFullJsonFile(file) {
|
15
15
|
const abi = extractAbi(file.contents);
|
@@ -20,7 +20,7 @@ export default class EthersSentio extends Ethers.default {
|
|
20
20
|
const jsonPath = relative(this.cfg.inputDir, shortenFullJsonFilePath(file.path, this.cfg.allFiles));
|
21
21
|
const contract = parse(abi, jsonPath, documentation);
|
22
22
|
const files = super.transformAbiOrFullJsonFile(file);
|
23
|
-
this.
|
23
|
+
this.processedABIs.push(contract);
|
24
24
|
if (files !== undefined) {
|
25
25
|
// files.forEach(this.transformFilePath)
|
26
26
|
// for (const file of files) {
|
@@ -56,18 +56,43 @@ export default class EthersSentio extends Ethers.default {
|
|
56
56
|
}
|
57
57
|
}
|
58
58
|
let indexContent = '';
|
59
|
-
for (const contract of this.
|
60
|
-
|
61
|
-
indexContent +
|
62
|
-
`
|
59
|
+
for (const contract of this.processedABIs) {
|
60
|
+
const content = `
|
63
61
|
export * as ${contract.name.toLowerCase().replaceAll('-', '_')} from './${contract.name.toLowerCase()}.js'
|
64
62
|
export { ${contract.name}Processor, ${contract.name}ProcessorTemplate } from './${contract.name.toLowerCase()}.js'
|
65
63
|
`;
|
64
|
+
indexContent += content;
|
66
65
|
}
|
67
66
|
files.push({
|
68
67
|
path: join(dirname(files[0].path), '../index.ts'),
|
69
68
|
contents: indexContent,
|
70
69
|
});
|
70
|
+
const rootDir = join(dirname(files[0].path), '../../..');
|
71
|
+
const contractsToGenExample = this.cfg.contractsToGenExample;
|
72
|
+
if (contractsToGenExample.length > 0) {
|
73
|
+
const processors = this.processedABIs.map((abi) => `${abi.name}Processor`).join(',');
|
74
|
+
let exampleContent = `import { ${processors} } from './types/eth/index.js'`;
|
75
|
+
for (const contract of contractsToGenExample) {
|
76
|
+
const chainId = parseInt(contract.chain);
|
77
|
+
if (isNaN(chainId) || !isFinite(chainId)) {
|
78
|
+
continue;
|
79
|
+
}
|
80
|
+
const content = `
|
81
|
+
|
82
|
+
${contract.name}Processor.bind({ address: '${contract.address}', network: ${contract.chain} })
|
83
|
+
.onAllEvents((evt, ctx) => {
|
84
|
+
ctx.meter.Counter('event_count').add(1, { name: evt.name })
|
85
|
+
ctx.eventLogger.emit(evt.name, {
|
86
|
+
...evt.args.toObject(),
|
87
|
+
})
|
88
|
+
})`;
|
89
|
+
exampleContent += content;
|
90
|
+
}
|
91
|
+
files.push({
|
92
|
+
path: join(rootDir, 'processor.eth.example.ts'),
|
93
|
+
contents: exampleContent,
|
94
|
+
});
|
95
|
+
}
|
71
96
|
return files;
|
72
97
|
}
|
73
98
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ethers-sentio.js","sourceRoot":"","sources":["../../../src/eth/codegen/ethers-sentio.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAA;AACtC,OAAO,EAEL,UAAU,EACV,oBAAoB,EAEpB,KAAK,EACL,uBAAuB,GAExB,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;
|
1
|
+
{"version":3,"file":"ethers-sentio.js","sourceRoot":"","sources":["../../../src/eth/codegen/ethers-sentio.ts"],"names":[],"mappings":"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","sourcesContent":["import Ethers from '@sentio/ethers-v6'\nimport {\n Config,\n extractAbi,\n extractDocumentation,\n FileDescription,\n parse,\n shortenFullJsonFilePath,\n Contract,\n} from 'typechain'\nimport { dirname, join, relative } from 'path'\nimport { codeGenIndex, codeGenSentioFile, codeGenTestUtilsFile } from './file.js'\nimport { YamlContractConfig } from '../../core/yaml-contract-config.js'\n\nexport interface SentioEthersConfig extends Config {\n contractsToGenExample: YamlContractConfig[]\n}\n\nexport default class EthersSentio extends Ethers.default {\n constructor(config: SentioEthersConfig) {\n if (!config.outDir) {\n throw new Error('Out put path not specificed')\n }\n super(config)\n }\n\n private processedABIs: Contract[] = []\n\n // TODO(pc): also have to override transformBinFile, transformFile\n override transformAbiOrFullJsonFile(file: FileDescription): FileDescription[] | void {\n const abi = extractAbi(file.contents)\n if (abi.length === 0) {\n return\n }\n\n const documentation = extractDocumentation(file.contents)\n\n const jsonPath = relative(this.cfg.inputDir, shortenFullJsonFilePath(file.path, this.cfg.allFiles))\n const contract = parse(abi, jsonPath, documentation)\n const files = super.transformAbiOrFullJsonFile(file)\n this.processedABIs.push(contract)\n\n if (files !== undefined) {\n // files.forEach(this.transformFilePath)\n // for (const file of files) {\n // this.transformFilePath(file)\n // }\n\n return [\n ...files,\n {\n path: join(dirname(files[0].path), `${contract.name.toLowerCase()}-processor.ts`),\n contents: codeGenSentioFile(contract),\n },\n {\n path: join(dirname(files[0].path), '..', `${contract.name.toLowerCase()}.ts`),\n contents: codeGenIndex(contract),\n },\n {\n path: join(dirname(files[0].path), `${contract.name.toLowerCase()}-test-utils.ts`),\n contents: codeGenTestUtilsFile(contract),\n },\n ]\n }\n }\n\n override afterRun() {\n const files = super.afterRun()\n for (const [idx, file] of files.entries()) {\n if (file.path.endsWith('__factory.ts')) {\n file.contents = '// @ts-nocheck\\n' + file.contents\n } else if (file.path.endsWith('factories/index.ts')) {\n file.contents = file.contents.replaceAll(\"__factory'\", \"__factory.js'\")\n } else if (file.path.endsWith('_processor.ts')) {\n }\n }\n let indexContent = ''\n for (const contract of this.processedABIs) {\n const content = `\n export * as ${contract.name.toLowerCase().replaceAll('-', '_')} from './${contract.name.toLowerCase()}.js'\n export { ${contract.name}Processor, ${\n contract.name\n }ProcessorTemplate } from './${contract.name.toLowerCase()}.js'\n `\n indexContent += content\n }\n files.push({\n path: join(dirname(files[0].path), '../index.ts'),\n contents: indexContent,\n })\n\n const rootDir = join(dirname(files[0].path), '../../..')\n\n const contractsToGenExample = (this.cfg as SentioEthersConfig).contractsToGenExample\n if (contractsToGenExample.length > 0) {\n const processors = this.processedABIs.map((abi) => `${abi.name}Processor`).join(',')\n let exampleContent = `import { ${processors} } from './types/eth/index.js'`\n\n for (const contract of contractsToGenExample) {\n const chainId = parseInt(contract.chain)\n if (isNaN(chainId) || !isFinite(chainId)) {\n continue\n }\n\n const content = `\n\n${contract.name}Processor.bind({ address: '${contract.address}', network: ${contract.chain} })\n .onAllEvents((evt, ctx) => {\n ctx.meter.Counter('event_count').add(1, { name: evt.name })\n ctx.eventLogger.emit(evt.name, {\n ...evt.args.toObject(),\n })\n})`\n exampleContent += content\n }\n\n files.push({\n path: join(rootDir, 'processor.eth.example.ts'),\n contents: exampleContent,\n })\n }\n return files\n }\n}\n"]}
|
package/lib/eth/codegen/run.js
CHANGED
@@ -3,7 +3,7 @@ import { codegen } from './index.js';
|
|
3
3
|
if (process.argv.length > 3) {
|
4
4
|
const abisDir = process.argv[2];
|
5
5
|
const targetDir = process.argv[3];
|
6
|
-
await codegen(abisDir, targetDir,
|
6
|
+
await codegen(abisDir, targetDir, []);
|
7
7
|
}
|
8
8
|
else {
|
9
9
|
console.error('Not enough argument');
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/eth/codegen/run.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;IAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/eth/codegen/run.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;IAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;CACtC;KAAM;IACL,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;CAChB","sourcesContent":["#!/usr/bin/env node\n\nimport { codegen } from './index.js'\n\nif (process.argv.length > 3) {\n const abisDir = process.argv[2]\n const targetDir = process.argv[3]\n await codegen(abisDir, targetDir, [])\n} else {\n console.error('Not enough argument')\n process.exit(1)\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.10.0-rc.
|
4
|
+
"version": "2.10.0-rc.3",
|
5
5
|
"type": "module",
|
6
6
|
"scripts": {
|
7
7
|
"compile": "tsc && cp src/utils/*.csv lib/utils && cp src/tsup.config.ts lib",
|
@@ -23,8 +23,8 @@
|
|
23
23
|
"@project-serum/anchor": "^0.26.0",
|
24
24
|
"@sentio/bigdecimal": "^9.1.1-patch.3",
|
25
25
|
"@sentio/ethers-v6": "^1.0.25",
|
26
|
-
"@sentio/protos": "^2.10.0-rc.
|
27
|
-
"@sentio/runtime": "^2.10.0-rc.
|
26
|
+
"@sentio/protos": "^2.10.0-rc.3",
|
27
|
+
"@sentio/runtime": "^2.10.0-rc.3",
|
28
28
|
"@solana/web3.js": "^1.73.2",
|
29
29
|
"@types/prettier": "^2.7.2",
|
30
30
|
"aptos-sdk": "npm:aptos@^1.7.1",
|
@@ -37,7 +37,8 @@
|
|
37
37
|
"node-fetch": "^3.3.1",
|
38
38
|
"p-queue": "^7.3.4",
|
39
39
|
"prettier": "^2.8.4",
|
40
|
-
"typechain": "^8.0.0"
|
40
|
+
"typechain": "^8.0.0",
|
41
|
+
"yaml": "^2.2.1"
|
41
42
|
},
|
42
43
|
"devDependencies": {
|
43
44
|
"@certusone/wormhole-sdk": "^0.9.10",
|
@@ -80,5 +81,5 @@
|
|
80
81
|
"engines": {
|
81
82
|
"node": ">=16"
|
82
83
|
},
|
83
|
-
"gitHead": "
|
84
|
+
"gitHead": "9a4e23dc97f62e94916a97762492a78d05cbb0b8"
|
84
85
|
}
|
@@ -1,6 +1,9 @@
|
|
1
1
|
import { Labels } from './meter.js'
|
2
2
|
import { BigDecimal } from './big-decimal.js'
|
3
3
|
|
4
|
+
export const SENTIO_BIGINT_STRING_SUFFIX = ':sto_bi'
|
5
|
+
export const SENTIO_BIGDECIMAL_STRING_SUFFIX = ':sto_bd'
|
6
|
+
|
4
7
|
function normalizeName(name: string): string {
|
5
8
|
return name.slice(0, 128).replace(/[^_\-a-zA-Z0-9]/g, '_')
|
6
9
|
}
|
@@ -36,7 +39,8 @@ function normalizeObject(obj: any, length: number): any {
|
|
36
39
|
case 'string':
|
37
40
|
return obj.slice(0, length)
|
38
41
|
case 'bigint':
|
39
|
-
return
|
42
|
+
return obj.toString() + SENTIO_BIGINT_STRING_SUFFIX
|
43
|
+
// return Number(obj)
|
40
44
|
case 'number':
|
41
45
|
return obj
|
42
46
|
case 'function':
|
@@ -60,7 +64,8 @@ function normalizeObject(obj: any, length: number): any {
|
|
60
64
|
console.error("can't submit NaN or Infinity value, will store as 0")
|
61
65
|
return 0
|
62
66
|
}
|
63
|
-
return obj.
|
67
|
+
return obj.toString() + SENTIO_BIGDECIMAL_STRING_SUFFIX
|
68
|
+
// return obj.toNumber()
|
64
69
|
}
|
65
70
|
if (obj instanceof Promise) {
|
66
71
|
console.error('Cannot submit promise')
|
@@ -5,15 +5,20 @@ import EthersSentio, { SentioEthersConfig } from './ethers-sentio.js'
|
|
5
5
|
import * as prettier from 'prettier'
|
6
6
|
import path from 'path'
|
7
7
|
import mkdirp from 'mkdirp'
|
8
|
+
import { YamlContractConfig } from '../../core/yaml-contract-config.js'
|
8
9
|
|
9
|
-
export async function codegen(abisDir: string, outDir: string,
|
10
|
+
export async function codegen(abisDir: string, outDir: string, contractsToGenExample: YamlContractConfig[] = []) {
|
10
11
|
if (!fs.existsSync(abisDir)) {
|
11
12
|
return
|
12
13
|
}
|
13
|
-
console.log('Generated', await codegenInternal(abisDir, outDir,
|
14
|
+
console.log('Generated', await codegenInternal(abisDir, outDir, contractsToGenExample), 'files')
|
14
15
|
}
|
15
16
|
|
16
|
-
async function codegenInternal(
|
17
|
+
async function codegenInternal(
|
18
|
+
abisDir: string,
|
19
|
+
outDir: string,
|
20
|
+
contractsToGenExample: YamlContractConfig[]
|
21
|
+
): Promise<number> {
|
17
22
|
let allFiles = fs.readdirSync(abisDir)
|
18
23
|
if (allFiles.length === 0) {
|
19
24
|
return 0
|
@@ -38,7 +43,7 @@ async function codegenInternal(abisDir: string, outDir: string, genUsage: boolea
|
|
38
43
|
outDir: outInternal,
|
39
44
|
allFiles: allFiles,
|
40
45
|
filesToProcess: allFiles,
|
41
|
-
|
46
|
+
contractsToGenExample: contractsToGenExample,
|
42
47
|
}
|
43
48
|
const services: Services = {
|
44
49
|
fs,
|
@@ -10,9 +10,10 @@ import {
|
|
10
10
|
} from 'typechain'
|
11
11
|
import { dirname, join, relative } from 'path'
|
12
12
|
import { codeGenIndex, codeGenSentioFile, codeGenTestUtilsFile } from './file.js'
|
13
|
+
import { YamlContractConfig } from '../../core/yaml-contract-config.js'
|
13
14
|
|
14
15
|
export interface SentioEthersConfig extends Config {
|
15
|
-
|
16
|
+
contractsToGenExample: YamlContractConfig[]
|
16
17
|
}
|
17
18
|
|
18
19
|
export default class EthersSentio extends Ethers.default {
|
@@ -23,7 +24,7 @@ export default class EthersSentio extends Ethers.default {
|
|
23
24
|
super(config)
|
24
25
|
}
|
25
26
|
|
26
|
-
private
|
27
|
+
private processedABIs: Contract[] = []
|
27
28
|
|
28
29
|
// TODO(pc): also have to override transformBinFile, transformFile
|
29
30
|
override transformAbiOrFullJsonFile(file: FileDescription): FileDescription[] | void {
|
@@ -37,7 +38,7 @@ export default class EthersSentio extends Ethers.default {
|
|
37
38
|
const jsonPath = relative(this.cfg.inputDir, shortenFullJsonFilePath(file.path, this.cfg.allFiles))
|
38
39
|
const contract = parse(abi, jsonPath, documentation)
|
39
40
|
const files = super.transformAbiOrFullJsonFile(file)
|
40
|
-
this.
|
41
|
+
this.processedABIs.push(contract)
|
41
42
|
|
42
43
|
if (files !== undefined) {
|
43
44
|
// files.forEach(this.transformFilePath)
|
@@ -74,20 +75,50 @@ export default class EthersSentio extends Ethers.default {
|
|
74
75
|
}
|
75
76
|
}
|
76
77
|
let indexContent = ''
|
77
|
-
for (const contract of this.
|
78
|
-
|
79
|
-
indexContent +
|
80
|
-
`
|
78
|
+
for (const contract of this.processedABIs) {
|
79
|
+
const content = `
|
81
80
|
export * as ${contract.name.toLowerCase().replaceAll('-', '_')} from './${contract.name.toLowerCase()}.js'
|
82
81
|
export { ${contract.name}Processor, ${
|
83
|
-
|
84
|
-
|
82
|
+
contract.name
|
83
|
+
}ProcessorTemplate } from './${contract.name.toLowerCase()}.js'
|
85
84
|
`
|
85
|
+
indexContent += content
|
86
86
|
}
|
87
87
|
files.push({
|
88
88
|
path: join(dirname(files[0].path), '../index.ts'),
|
89
89
|
contents: indexContent,
|
90
90
|
})
|
91
|
+
|
92
|
+
const rootDir = join(dirname(files[0].path), '../../..')
|
93
|
+
|
94
|
+
const contractsToGenExample = (this.cfg as SentioEthersConfig).contractsToGenExample
|
95
|
+
if (contractsToGenExample.length > 0) {
|
96
|
+
const processors = this.processedABIs.map((abi) => `${abi.name}Processor`).join(',')
|
97
|
+
let exampleContent = `import { ${processors} } from './types/eth/index.js'`
|
98
|
+
|
99
|
+
for (const contract of contractsToGenExample) {
|
100
|
+
const chainId = parseInt(contract.chain)
|
101
|
+
if (isNaN(chainId) || !isFinite(chainId)) {
|
102
|
+
continue
|
103
|
+
}
|
104
|
+
|
105
|
+
const content = `
|
106
|
+
|
107
|
+
${contract.name}Processor.bind({ address: '${contract.address}', network: ${contract.chain} })
|
108
|
+
.onAllEvents((evt, ctx) => {
|
109
|
+
ctx.meter.Counter('event_count').add(1, { name: evt.name })
|
110
|
+
ctx.eventLogger.emit(evt.name, {
|
111
|
+
...evt.args.toObject(),
|
112
|
+
})
|
113
|
+
})`
|
114
|
+
exampleContent += content
|
115
|
+
}
|
116
|
+
|
117
|
+
files.push({
|
118
|
+
path: join(rootDir, 'processor.eth.example.ts'),
|
119
|
+
contents: exampleContent,
|
120
|
+
})
|
121
|
+
}
|
91
122
|
return files
|
92
123
|
}
|
93
124
|
}
|
package/src/eth/codegen/run.ts
CHANGED
@@ -5,7 +5,7 @@ import { codegen } from './index.js'
|
|
5
5
|
if (process.argv.length > 3) {
|
6
6
|
const abisDir = process.argv[2]
|
7
7
|
const targetDir = process.argv[3]
|
8
|
-
await codegen(abisDir, targetDir,
|
8
|
+
await codegen(abisDir, targetDir, [])
|
9
9
|
} else {
|
10
10
|
console.error('Not enough argument')
|
11
11
|
process.exit(1)
|