@subql/node-ethereum 6.2.1 → 6.2.2-0

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.
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ // Copyright 2020-2025 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
5
+ if (k2 === undefined) k2 = k;
6
+ var desc = Object.getOwnPropertyDescriptor(m, k);
7
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8
+ desc = { enumerable: true, get: function() { return m[k]; } };
9
+ }
10
+ Object.defineProperty(o, k2, desc);
11
+ }) : (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ o[k2] = m[k];
14
+ }));
15
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
16
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
17
+ }) : function(o, v) {
18
+ o["default"] = v;
19
+ });
20
+ var __importStar = (this && this.__importStar) || (function () {
21
+ var ownKeys = function(o) {
22
+ ownKeys = Object.getOwnPropertyNames || function (o) {
23
+ var ar = [];
24
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
25
+ return ar;
26
+ };
27
+ return ownKeys(o);
28
+ };
29
+ return function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ })();
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ const hash_1 = require("@ethersproject/hash");
39
+ const hashModule = __importStar(require("@ethersproject/hash"));
40
+ const string_1 = require("./string");
41
+ describe('String utilities', () => {
42
+ describe('eventToTopic', () => {
43
+ it('should return hex string as-is', () => {
44
+ const hexInput = '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef';
45
+ expect((0, string_1.eventToTopic)(hexInput)).toBe(hexInput);
46
+ });
47
+ it('should generate topic hash for standard event signature', () => {
48
+ const signature = 'Transfer(address,address,uint256)';
49
+ const expected = (0, hash_1.id)(signature);
50
+ expect((0, string_1.eventToTopic)(signature)).toBe(expected);
51
+ });
52
+ it('should generate topic hash for resolved signatures (enum as uint8)', () => {
53
+ // After project load-time resolution, enum types are already resolved to uint8
54
+ const resolvedSignature = 'DisputeOpen(uint256,address,address,uint8)';
55
+ const expected = (0, hash_1.id)(resolvedSignature);
56
+ expect((0, string_1.eventToTopic)(resolvedSignature)).toBe(expected);
57
+ });
58
+ it('should generate topic hash for resolved signatures (struct as tuple)', () => {
59
+ // After project load-time resolution, struct types are already resolved to tuples
60
+ const resolvedSignature = 'DataUpdated(address,(bytes32,bytes32))';
61
+ const expected = (0, hash_1.id)(resolvedSignature);
62
+ expect((0, string_1.eventToTopic)(resolvedSignature)).toBe(expected);
63
+ });
64
+ it('should cache results', () => {
65
+ // Use a unique signature to avoid cache pollution from other tests
66
+ const signature = 'UniqueTestEvent(bytes32,uint256,address)';
67
+ const idSpy = jest.spyOn(hashModule, 'id');
68
+ const firstResult = (0, string_1.eventToTopic)(signature);
69
+ const callCountAfterFirst = idSpy.mock.calls.length;
70
+ const secondResult = (0, string_1.eventToTopic)(signature);
71
+ const callCountAfterSecond = idSpy.mock.calls.length;
72
+ // Second call should not invoke id() again due to caching
73
+ expect(callCountAfterSecond).toBe(callCountAfterFirst);
74
+ expect(firstResult).toBe(secondResult);
75
+ idSpy.mockRestore();
76
+ });
77
+ });
78
+ describe('functionToSighash', () => {
79
+ it('should return hex string as-is', () => {
80
+ const hexInput = '0x12345678';
81
+ expect((0, string_1.functionToSighash)(hexInput)).toBe(hexInput);
82
+ });
83
+ it('should generate function sighash for standard function signature', () => {
84
+ const signature = 'transfer(address,uint256)';
85
+ const expected = '0xa9059cbb'; // Known sighash for transfer function
86
+ expect((0, string_1.functionToSighash)(signature)).toBe(expected);
87
+ });
88
+ it('should cache results', () => {
89
+ // Use a unique signature to avoid cache pollution from other tests
90
+ const signature = 'uniqueTestFunction(bytes32,uint256)';
91
+ const idSpy = jest.spyOn(hashModule, 'id');
92
+ const firstResult = (0, string_1.functionToSighash)(signature);
93
+ const callCountAfterFirst = idSpy.mock.calls.length;
94
+ const secondResult = (0, string_1.functionToSighash)(signature);
95
+ const callCountAfterSecond = idSpy.mock.calls.length;
96
+ // Second call should not invoke id() again due to caching
97
+ expect(callCountAfterSecond).toBe(callCountAfterFirst);
98
+ expect(firstResult).toBe(secondResult);
99
+ idSpy.mockRestore();
100
+ });
101
+ });
102
+ });
103
+ //# sourceMappingURL=string.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.spec.js","sourceRoot":"","sources":["../../src/utils/string.spec.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEnC,8CAAyC;AACzC,gEAAkD;AAClD,qCAA2D;AAE3D,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,QAAQ,GACZ,oEAAoE,CAAC;YACvE,MAAM,CAAC,IAAA,qBAAY,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,MAAM,SAAS,GAAG,mCAAmC,CAAC;YACtD,MAAM,QAAQ,GAAG,IAAA,SAAE,EAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,CAAC,IAAA,qBAAY,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;YAC5E,+EAA+E;YAC/E,MAAM,iBAAiB,GAAG,4CAA4C,CAAC;YACvE,MAAM,QAAQ,GAAG,IAAA,SAAE,EAAC,iBAAiB,CAAC,CAAC;YACvC,MAAM,CAAC,IAAA,qBAAY,EAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;YAC9E,kFAAkF;YAClF,MAAM,iBAAiB,GAAG,wCAAwC,CAAC;YACnE,MAAM,QAAQ,GAAG,IAAA,SAAE,EAAC,iBAAiB,CAAC,CAAC;YACvC,MAAM,CAAC,IAAA,qBAAY,EAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,mEAAmE;YACnE,MAAM,SAAS,GAAG,0CAA0C,CAAC;YAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAE3C,MAAM,WAAW,GAAG,IAAA,qBAAY,EAAC,SAAS,CAAC,CAAC;YAC5C,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAEpD,MAAM,YAAY,GAAG,IAAA,qBAAY,EAAC,SAAS,CAAC,CAAC;YAC7C,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAErD,0DAA0D;YAC1D,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACvD,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEvC,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,QAAQ,GAAG,YAAY,CAAC;YAC9B,MAAM,CAAC,IAAA,0BAAiB,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;YAC1E,MAAM,SAAS,GAAG,2BAA2B,CAAC;YAC9C,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,sCAAsC;YACrE,MAAM,CAAC,IAAA,0BAAiB,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;YAC9B,mEAAmE;YACnE,MAAM,SAAS,GAAG,qCAAqC,CAAC;YACxD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAE3C,MAAM,WAAW,GAAG,IAAA,0BAAiB,EAAC,SAAS,CAAC,CAAC;YACjD,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAEpD,MAAM,YAAY,GAAG,IAAA,0BAAiB,EAAC,SAAS,CAAC,CAAC;YAClD,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAErD,0DAA0D;YAC1D,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACvD,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAEvC,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["// Copyright 2020-2025 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { id } from '@ethersproject/hash';\nimport * as hashModule from '@ethersproject/hash';\nimport { eventToTopic, functionToSighash } from './string';\n\ndescribe('String utilities', () => {\n describe('eventToTopic', () => {\n it('should return hex string as-is', () => {\n const hexInput =\n '0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef';\n expect(eventToTopic(hexInput)).toBe(hexInput);\n });\n\n it('should generate topic hash for standard event signature', () => {\n const signature = 'Transfer(address,address,uint256)';\n const expected = id(signature);\n expect(eventToTopic(signature)).toBe(expected);\n });\n\n it('should generate topic hash for resolved signatures (enum as uint8)', () => {\n // After project load-time resolution, enum types are already resolved to uint8\n const resolvedSignature = 'DisputeOpen(uint256,address,address,uint8)';\n const expected = id(resolvedSignature);\n expect(eventToTopic(resolvedSignature)).toBe(expected);\n });\n\n it('should generate topic hash for resolved signatures (struct as tuple)', () => {\n // After project load-time resolution, struct types are already resolved to tuples\n const resolvedSignature = 'DataUpdated(address,(bytes32,bytes32))';\n const expected = id(resolvedSignature);\n expect(eventToTopic(resolvedSignature)).toBe(expected);\n });\n\n it('should cache results', () => {\n // Use a unique signature to avoid cache pollution from other tests\n const signature = 'UniqueTestEvent(bytes32,uint256,address)';\n const idSpy = jest.spyOn(hashModule, 'id');\n\n const firstResult = eventToTopic(signature);\n const callCountAfterFirst = idSpy.mock.calls.length;\n\n const secondResult = eventToTopic(signature);\n const callCountAfterSecond = idSpy.mock.calls.length;\n\n // Second call should not invoke id() again due to caching\n expect(callCountAfterSecond).toBe(callCountAfterFirst);\n expect(firstResult).toBe(secondResult);\n\n idSpy.mockRestore();\n });\n });\n\n describe('functionToSighash', () => {\n it('should return hex string as-is', () => {\n const hexInput = '0x12345678';\n expect(functionToSighash(hexInput)).toBe(hexInput);\n });\n\n it('should generate function sighash for standard function signature', () => {\n const signature = 'transfer(address,uint256)';\n const expected = '0xa9059cbb'; // Known sighash for transfer function\n expect(functionToSighash(signature)).toBe(expected);\n });\n\n it('should cache results', () => {\n // Use a unique signature to avoid cache pollution from other tests\n const signature = 'uniqueTestFunction(bytes32,uint256)';\n const idSpy = jest.spyOn(hashModule, 'id');\n\n const firstResult = functionToSighash(signature);\n const callCountAfterFirst = idSpy.mock.calls.length;\n\n const secondResult = functionToSighash(signature);\n const callCountAfterSecond = idSpy.mock.calls.length;\n\n // Second call should not invoke id() again due to caching\n expect(callCountAfterSecond).toBe(callCountAfterFirst);\n expect(firstResult).toBe(secondResult);\n\n idSpy.mockRestore();\n });\n });\n});\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subql/node-ethereum",
3
- "version": "6.2.1",
3
+ "version": "6.2.2-0",
4
4
  "description": "",
5
5
  "author": "Ian He",
6
6
  "license": "GPL-3.0",
@@ -69,5 +69,6 @@
69
69
  "README.md",
70
70
  "CHANGELOG.md",
71
71
  "LICENSE"
72
- ]
72
+ ],
73
+ "stableVersion": "6.2.1"
73
74
  }