@sentio/sdk 1.27.2 → 1.27.4
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/aptos/types.js +4 -3
- package/lib/aptos/types.js.map +1 -1
- package/lib/{tests/aptos.test.d.ts → aptos/types.test.d.ts} +0 -0
- package/lib/aptos/types.test.js.map +1 -0
- package/lib/aptos/utils.d.ts +2 -1
- package/lib/aptos/utils.js +9 -1
- package/lib/aptos/utils.js.map +1 -1
- package/lib/aptos-codegen/codegen.js +1 -7
- package/lib/aptos-codegen/codegen.js.map +1 -1
- package/lib/processor-runner.js +2 -2
- package/lib/processor-runner.js.map +1 -1
- package/package.json +4 -4
- package/src/aptos/types.ts +5 -4
- package/src/aptos/utils.ts +9 -1
- package/src/aptos-codegen/codegen.ts +2 -9
- package/src/processor-runner.ts +2 -2
- package/lib/core/generic-processor.test.js +0 -58
- package/lib/core/meter.test.js +0 -21
- package/lib/core/numberish.test.js +0 -70
- package/lib/tests/aptos.test.js +0 -304
- package/lib/tests/aptos.test.js.map +0 -1
- package/lib/tests/codegen.test.d.ts +0 -1
- package/lib/tests/codegen.test.js +0 -49
- package/lib/tests/codegen.test.js.map +0 -1
- package/lib/tests/erc20-template.test.d.ts +0 -1
- package/lib/tests/erc20-template.test.js +0 -56
- package/lib/tests/erc20-template.test.js.map +0 -1
- package/lib/tests/erc20.d.ts +0 -1
- package/lib/tests/erc20.js +0 -54
- package/lib/tests/erc20.js.map +0 -1
- package/lib/tests/erc20.test.d.ts +0 -1
- package/lib/tests/erc20.test.js +0 -94
- package/lib/tests/erc20.test.js.map +0 -1
- package/lib/tests/error-capture.test.d.ts +0 -1
- package/lib/tests/error-capture.test.js +0 -76
- package/lib/tests/error-capture.test.js.map +0 -1
- package/lib/tests/logger.test.d.ts +0 -1
- package/lib/tests/logger.test.js +0 -40
- package/lib/tests/logger.test.js.map +0 -1
- package/lib/tests/solana.test.d.ts +0 -1
- package/lib/tests/solana.test.js +0 -77
- package/lib/tests/solana.test.js.map +0 -1
- package/lib/tests/souffl3.d.ts +0 -1
- package/lib/tests/souffl3.js +0 -46
- package/lib/tests/souffl3.js.map +0 -1
- package/lib/tests/sui.test.d.ts +0 -1
- package/lib/tests/sui.test.js +0 -193
- package/lib/tests/sui.test.js.map +0 -1
- package/lib/tests/types/aptos/soffl3.d.ts +0 -786
- package/lib/tests/types/aptos/soffl3.js +0 -559
- package/lib/tests/types/aptos/soffl3.js.map +0 -1
- package/lib/tests/types/aptos/souffle.d.ts +0 -348
- package/lib/tests/types/aptos/souffle.js +0 -303
- package/lib/tests/types/aptos/souffle.js.map +0 -1
- package/lib/tests/types/solana/basic_1.d.ts +0 -26
- package/lib/tests/types/solana/basic_1.js +0 -66
- package/lib/tests/types/solana/basic_1.js.map +0 -1
- package/lib/tests/types/solana/basic_1_processor.d.ts +0 -13
- package/lib/tests/types/solana/basic_1_processor.js +0 -41
- package/lib/tests/types/solana/basic_1_processor.js.map +0 -1
- package/lib/tests/wormhole-token-bridge.d.ts +0 -1
- package/lib/tests/wormhole-token-bridge.js +0 -22
- package/lib/tests/wormhole-token-bridge.js.map +0 -1
- package/lib/utils/dex-price.test.js +0 -22
- package/lib/utils/erc20.test.js +0 -23
- package/src/aptos-codegen/typegen.test.ts +0 -44
- package/src/core/generic-processor.test.ts +0 -69
- package/src/core/meter.test.ts +0 -23
- package/src/core/numberish.test.ts +0 -82
- package/src/tests/abis/aptos/soffl3.json +0 -1411
- package/src/tests/abis/aptos/souffle.json +0 -389
- package/src/tests/abis/evm/CommitmentPool.json +0 -1034
- package/src/tests/abis/evm/Seaport.json +0 -2595
- package/src/tests/abis/evm/anyswapRouter.json +0 -490
- package/src/tests/abis/solana/basic_1.json +0 -62
- package/src/tests/aptos.test.ts +0 -324
- package/src/tests/codegen.test.ts +0 -29
- package/src/tests/erc20-template.test.ts +0 -60
- package/src/tests/erc20.test.ts +0 -115
- package/src/tests/erc20.ts +0 -60
- package/src/tests/error-capture.test.ts +0 -82
- package/src/tests/logger.test.ts +0 -46
- package/src/tests/solana.test.ts +0 -79
- package/src/tests/souffl3.ts +0 -52
- package/src/tests/sui.test.ts +0 -197
- package/src/tests/types/aptos/soffl3.ts +0 -1377
- package/src/tests/types/aptos/souffle.ts +0 -698
- package/src/tests/types/solana/basic_1.ts +0 -62
- package/src/tests/types/solana/basic_1_processor.ts +0 -41
- package/src/tests/wormhole-token-bridge.ts +0 -21
- package/src/types/global.d.ts +0 -5
- package/src/utils/dex-price.test.ts +0 -25
- package/src/utils/erc20.test.ts +0 -26
- package/templates/aptos/.gitignore +0 -107
- package/templates/aptos/src/processor.test.ts +0 -14
- package/templates/evm/.gitignore +0 -107
- package/templates/evm/src/processor.test.ts +0 -29
- package/templates/raw/.gitignore +0 -107
- package/templates/raw/src/processor.test.ts +0 -14
package/lib/tests/aptos.test.js
DELETED
@@ -1,304 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
const chai_1 = require("chai");
|
4
|
-
const util_1 = require("util");
|
5
|
-
const __1 = require("..");
|
6
|
-
const testing_1 = require("../testing");
|
7
|
-
describe('Test Aptos Example', () => {
|
8
|
-
const service = new testing_1.TestProcessorServer(() => {
|
9
|
-
require('./souffl3');
|
10
|
-
});
|
11
|
-
beforeAll(async () => {
|
12
|
-
await service.start({ templateInstances: [] });
|
13
|
-
});
|
14
|
-
test('check configuration ', async () => {
|
15
|
-
const config = await service.getConfig({});
|
16
|
-
(0, chai_1.expect)(config.contractConfigs).length(4);
|
17
|
-
});
|
18
|
-
test('Check souffl3 transaction dispatch', async () => {
|
19
|
-
const request = {
|
20
|
-
bindings: [
|
21
|
-
{
|
22
|
-
data: {
|
23
|
-
raw: new util_1.TextEncoder().encode(JSON.stringify(testData)),
|
24
|
-
},
|
25
|
-
handlerId: 1,
|
26
|
-
handlerType: __1.HandlerType.APT_CALL,
|
27
|
-
},
|
28
|
-
],
|
29
|
-
};
|
30
|
-
const res = await service.processBindings(request);
|
31
|
-
(0, chai_1.expect)(res.result?.counters).length(1);
|
32
|
-
(0, chai_1.expect)(res.result?.gauges).length(0);
|
33
|
-
(0, chai_1.expect)(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(18483034);
|
34
|
-
});
|
35
|
-
test('Check souffl3 function call dispatch', async () => {
|
36
|
-
const request = {
|
37
|
-
bindings: [
|
38
|
-
{
|
39
|
-
data: {
|
40
|
-
raw: new util_1.TextEncoder().encode(JSON.stringify(testData)),
|
41
|
-
},
|
42
|
-
handlerId: 0,
|
43
|
-
handlerType: __1.HandlerType.APT_CALL,
|
44
|
-
},
|
45
|
-
],
|
46
|
-
};
|
47
|
-
const res = await service.processBindings(request);
|
48
|
-
(0, chai_1.expect)(res.result?.counters).length(2);
|
49
|
-
(0, chai_1.expect)(res.result?.gauges).length(0);
|
50
|
-
(0, chai_1.expect)(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(18483034);
|
51
|
-
});
|
52
|
-
test('Check souffl3 event dispatch', async () => {
|
53
|
-
const request = {
|
54
|
-
bindings: [
|
55
|
-
{
|
56
|
-
data: {
|
57
|
-
raw: new util_1.TextEncoder().encode(JSON.stringify({
|
58
|
-
...testData,
|
59
|
-
events: [testData.events[testData.events.length - 1]],
|
60
|
-
})),
|
61
|
-
},
|
62
|
-
handlerId: 0,
|
63
|
-
handlerType: __1.HandlerType.APT_EVENT,
|
64
|
-
},
|
65
|
-
],
|
66
|
-
};
|
67
|
-
const res = await service.processBindings(request);
|
68
|
-
(0, chai_1.expect)(res.result?.counters).length(1);
|
69
|
-
(0, chai_1.expect)(res.result?.gauges).length(0);
|
70
|
-
(0, chai_1.expect)(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(18483034);
|
71
|
-
(0, chai_1.expect)(res.result?.events).length(1);
|
72
|
-
});
|
73
|
-
test('Check token deposit event dispatch', async () => {
|
74
|
-
const request = {
|
75
|
-
bindings: [
|
76
|
-
{
|
77
|
-
data: {
|
78
|
-
raw: new util_1.TextEncoder().encode(JSON.stringify({
|
79
|
-
...testData,
|
80
|
-
events: [tokenTestData],
|
81
|
-
})),
|
82
|
-
},
|
83
|
-
handlerId: 2,
|
84
|
-
handlerType: __1.HandlerType.APT_EVENT,
|
85
|
-
},
|
86
|
-
],
|
87
|
-
};
|
88
|
-
const res = await service.processBindings(request);
|
89
|
-
(0, chai_1.expect)((0, testing_1.firstCounterValue)(res.result, 'deposit')).equal(1n);
|
90
|
-
(0, chai_1.expect)((0, testing_1.firstGaugeValue)(res.result, 'version')).equal(0n);
|
91
|
-
});
|
92
|
-
test('Check create poposal event dispatch', async () => {
|
93
|
-
const request = {
|
94
|
-
bindings: [
|
95
|
-
{
|
96
|
-
data: {
|
97
|
-
raw: new util_1.TextEncoder().encode(JSON.stringify({ ...testData, events: [createProposalData] })),
|
98
|
-
},
|
99
|
-
handlerId: 3,
|
100
|
-
handlerType: __1.HandlerType.APT_EVENT,
|
101
|
-
},
|
102
|
-
],
|
103
|
-
};
|
104
|
-
const res = await service.processBindings(request);
|
105
|
-
(0, chai_1.expect)((0, testing_1.firstGaugeValue)(res.result, 'size')).equal(2n);
|
106
|
-
});
|
107
|
-
test('check on timer', async () => {
|
108
|
-
const request = {
|
109
|
-
bindings: [
|
110
|
-
{
|
111
|
-
data: {
|
112
|
-
raw: new util_1.TextEncoder().encode(JSON.stringify({
|
113
|
-
version: '12345',
|
114
|
-
resources: [
|
115
|
-
{
|
116
|
-
type: '0x1::coin::SupplyConfig',
|
117
|
-
data: {
|
118
|
-
allow_upgrades: false,
|
119
|
-
},
|
120
|
-
},
|
121
|
-
],
|
122
|
-
})),
|
123
|
-
},
|
124
|
-
handlerId: 0,
|
125
|
-
handlerType: __1.HandlerType.APT_RESOURCE,
|
126
|
-
},
|
127
|
-
],
|
128
|
-
};
|
129
|
-
const res = await service.processBindings(request);
|
130
|
-
(0, chai_1.expect)((0, testing_1.firstCounterValue)(res.result, 'onTimer')).equal(1n);
|
131
|
-
});
|
132
|
-
});
|
133
|
-
const testData = {
|
134
|
-
version: '18483034',
|
135
|
-
hash: '0xbf4df6f390546a793ba9b7caff120002b3257986dbea9c697fd64acf7dfeb052',
|
136
|
-
state_change_hash: '0x6063039cca5a1eb33d3986d3665fc783238579961eaa4746c41e25fa4f72aac6',
|
137
|
-
event_root_hash: '0x425e39bcf994672108f83c34f637e84166af7ecedcbe26aed0dff0d62da8055d',
|
138
|
-
state_checkpoint_hash: null,
|
139
|
-
gas_used: '854',
|
140
|
-
success: true,
|
141
|
-
vm_status: 'Executed successfully',
|
142
|
-
accumulator_root_hash: '0x47aa479d9e15993ea2abe04043c89186fb5da0b5eb8b5c6d18bd55d5f0c2c877',
|
143
|
-
changes: [],
|
144
|
-
sender: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',
|
145
|
-
sequence_number: '30',
|
146
|
-
max_gas_amount: '20000',
|
147
|
-
gas_unit_price: '1',
|
148
|
-
expiration_timestamp_secs: '1663144544',
|
149
|
-
payload: {
|
150
|
-
function: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807::SouffleChefCampaign::pull_token_v2',
|
151
|
-
type_arguments: ['0x1::aptos_coin::AptosCoin'],
|
152
|
-
arguments: [
|
153
|
-
'0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',
|
154
|
-
'0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',
|
155
|
-
'Souffl3 BlueBerry',
|
156
|
-
'1',
|
157
|
-
],
|
158
|
-
type: 'entry_function_payload',
|
159
|
-
},
|
160
|
-
signature: {
|
161
|
-
public_key: '0x6c3f579afbf8a728827385039f7604ec1d06e5c802d8f9689ee8ec9d349fedc5',
|
162
|
-
signature: '0xd2db95052e774f095d924030a50c29325a17e8d69d35c748f45bb0e22eb7d3b9e47545c98bd7130fd3ef46cbedc30c9aaeaf39c2d922ee8e7d578c0b1e76f30b',
|
163
|
-
type: 'ed25519_signature',
|
164
|
-
},
|
165
|
-
events: [
|
166
|
-
{
|
167
|
-
guid: {
|
168
|
-
creation_number: '3',
|
169
|
-
account_address: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',
|
170
|
-
},
|
171
|
-
sequence_number: '10',
|
172
|
-
type: '0x1::coin::WithdrawEvent',
|
173
|
-
data: {
|
174
|
-
amount: '1',
|
175
|
-
},
|
176
|
-
},
|
177
|
-
{
|
178
|
-
version: '18483034',
|
179
|
-
guid: {
|
180
|
-
creation_number: '2',
|
181
|
-
account_address: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',
|
182
|
-
},
|
183
|
-
sequence_number: '11',
|
184
|
-
type: '0x1::coin::DepositEvent',
|
185
|
-
data: {
|
186
|
-
amount: '1',
|
187
|
-
},
|
188
|
-
},
|
189
|
-
{
|
190
|
-
guid: {
|
191
|
-
creation_number: '9',
|
192
|
-
account_address: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',
|
193
|
-
},
|
194
|
-
sequence_number: '9',
|
195
|
-
type: '0x3::token::CreateTokenDataEvent',
|
196
|
-
data: {
|
197
|
-
description: 'Souffl3 offers a one-stop marketplace for the launch, listing, and trading of NFT assets on APTOS.\nWebsite:https://souffl3.com/\nEveryone can win through our Bake Off campaign on the Aptos Testnet, rewards including Souffl3 Genesis NFT and whitelists of other collab projects, everyone is welcome to participate!',
|
198
|
-
id: {
|
199
|
-
collection: 'Souffl3 BlueBerry',
|
200
|
-
creator: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',
|
201
|
-
name: 'Souffl3 BlueBerry #2',
|
202
|
-
},
|
203
|
-
maximum: '999999999999',
|
204
|
-
mutability_config: {
|
205
|
-
description: true,
|
206
|
-
maximum: true,
|
207
|
-
properties: true,
|
208
|
-
royalty: true,
|
209
|
-
uri: true,
|
210
|
-
},
|
211
|
-
name: 'Souffl3 BlueBerry #2',
|
212
|
-
property_keys: ['author', 'point'],
|
213
|
-
property_types: ['string', 'integer'],
|
214
|
-
property_values: ['0x33454e4a4f59204c616273', '0x30'],
|
215
|
-
royalty_payee_address: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',
|
216
|
-
royalty_points_denominator: '100',
|
217
|
-
royalty_points_numerator: '20',
|
218
|
-
uri: 'https://y3x4txhvirx5zl57efzbl6dg7psaier5q35hhwuqwzjwuahrycya.arweave.net/xu_J3PVEb9yvvyFyFfhm--QEEj2G-nPakLZTagDxwLA',
|
219
|
-
},
|
220
|
-
},
|
221
|
-
{
|
222
|
-
guid: {
|
223
|
-
creation_number: '2',
|
224
|
-
account_address: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',
|
225
|
-
},
|
226
|
-
sequence_number: '27',
|
227
|
-
type: '0x3::token::DepositEvent',
|
228
|
-
data: {
|
229
|
-
amount: '1',
|
230
|
-
id: {
|
231
|
-
property_version: '0',
|
232
|
-
token_data_id: {
|
233
|
-
collection: 'Souffl3 BlueBerry',
|
234
|
-
creator: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',
|
235
|
-
name: 'Souffl3 BlueBerry #2',
|
236
|
-
},
|
237
|
-
},
|
238
|
-
},
|
239
|
-
},
|
240
|
-
{
|
241
|
-
version: '18483034',
|
242
|
-
guid: {
|
243
|
-
creation_number: '7',
|
244
|
-
account_address: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',
|
245
|
-
},
|
246
|
-
sequence_number: '980533',
|
247
|
-
type: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807::SouffleChefCampaign::PullTokenEvent<0x1::aptos_coin::AptosCoin>',
|
248
|
-
data: {
|
249
|
-
receiver: '0x3a80be5daa84f2da7e07b3ec9234da48a5647f757187879c97a1fa03f31f1195',
|
250
|
-
},
|
251
|
-
},
|
252
|
-
],
|
253
|
-
timestamp: '1663143945131218',
|
254
|
-
type: 'user_transaction',
|
255
|
-
};
|
256
|
-
const tokenTestData = {
|
257
|
-
guid: {
|
258
|
-
creation_number: '4',
|
259
|
-
account_address: '0x89bc80de59187f707a59ae7a4121718dafe3e6068e0509104ef7e41a56bc97db',
|
260
|
-
},
|
261
|
-
sequence_number: '10',
|
262
|
-
type: '0x3::token::DepositEvent',
|
263
|
-
data: {
|
264
|
-
amount: '1',
|
265
|
-
id: {
|
266
|
-
property_version: '0',
|
267
|
-
token_data_id: {
|
268
|
-
collection: 'Topaz Troopers',
|
269
|
-
creator: '0x9125e4054d884fdc7296b66e12c0d63a7baa0d88c77e8e784987c0a967c670ac',
|
270
|
-
name: 'Topaz Trooper #11293',
|
271
|
-
},
|
272
|
-
},
|
273
|
-
},
|
274
|
-
};
|
275
|
-
const createProposalData = {
|
276
|
-
guid: {
|
277
|
-
creation_number: '5',
|
278
|
-
account_address: '0x1',
|
279
|
-
},
|
280
|
-
sequence_number: '3',
|
281
|
-
type: '0x1::voting::CreateProposalEvent',
|
282
|
-
data: {
|
283
|
-
early_resolution_vote_threshold: {
|
284
|
-
vec: ['9272156337856446330'],
|
285
|
-
},
|
286
|
-
execution_hash: '0x31549239ce8abdc1e9c259178614c3d44d015bd6d48635ddcfbfa4a77e7222b0',
|
287
|
-
expiration_secs: '1665463839',
|
288
|
-
metadata: {
|
289
|
-
data: [
|
290
|
-
{
|
291
|
-
key: 'metadata_hash',
|
292
|
-
value: '0x61633230656566373063616466363939663530353564323463356363353931396463306330656562643463303662653332346336323030313561633361653066',
|
293
|
-
},
|
294
|
-
{
|
295
|
-
key: 'metadata_location',
|
296
|
-
value: '0x68747470733a2f2f676973742e67697468756275736572636f6e74656e742e636f6d2f6d6f76656b6576696e2f30353766623134356234303836366566663863323263393166623964613931392f7261772f626162383566306637343334663030386138373831656563376663616464316163356135353438312f6769737466696c65312e747874',
|
297
|
-
},
|
298
|
-
],
|
299
|
-
},
|
300
|
-
min_vote_threshold: '100000000000000',
|
301
|
-
proposal_id: '3',
|
302
|
-
},
|
303
|
-
};
|
304
|
-
//# sourceMappingURL=aptos.test.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"aptos.test.js","sourceRoot":"","sources":["../../src/tests/aptos.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect } from 'chai'\nimport { TextEncoder } from 'util'\nimport { HandlerType, ProcessBindingsRequest } from '..'\n\nimport { firstCounterValue, firstGaugeValue, TestProcessorServer } from '../testing'\n\ndescribe('Test Aptos Example', () => {\n const service = new TestProcessorServer(() => {\n require('./souffl3')\n })\n\n beforeAll(async () => {\n await service.start({ templateInstances: [] })\n })\n\n test('check configuration ', async () => {\n const config = await service.getConfig({})\n expect(config.contractConfigs).length(4)\n })\n\n test('Check souffl3 transaction dispatch', async () => {\n const request: ProcessBindingsRequest = {\n bindings: [\n {\n data: {\n raw: new TextEncoder().encode(JSON.stringify(testData)),\n },\n handlerId: 1,\n handlerType: HandlerType.APT_CALL,\n },\n ],\n }\n const res = await service.processBindings(request)\n expect(res.result?.counters).length(1)\n expect(res.result?.gauges).length(0)\n expect(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(18483034)\n })\n\n test('Check souffl3 function call dispatch', async () => {\n const request: ProcessBindingsRequest = {\n bindings: [\n {\n data: {\n raw: new TextEncoder().encode(JSON.stringify(testData)),\n },\n handlerId: 0,\n handlerType: HandlerType.APT_CALL,\n },\n ],\n }\n const res = await service.processBindings(request)\n expect(res.result?.counters).length(2)\n expect(res.result?.gauges).length(0)\n expect(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(18483034)\n })\n\n test('Check souffl3 event dispatch', async () => {\n const request: ProcessBindingsRequest = {\n bindings: [\n {\n data: {\n raw: new TextEncoder().encode(\n JSON.stringify({\n ...testData,\n events: [testData.events[testData.events.length - 1]],\n })\n ),\n },\n handlerId: 0,\n handlerType: HandlerType.APT_EVENT,\n },\n ],\n }\n const res = await service.processBindings(request)\n expect(res.result?.counters).length(1)\n expect(res.result?.gauges).length(0)\n expect(res.result?.counters[0].metadata?.blockNumber.toInt()).equal(18483034)\n expect(res.result?.events).length(1)\n })\n\n test('Check token deposit event dispatch', async () => {\n const request: ProcessBindingsRequest = {\n bindings: [\n {\n data: {\n raw: new TextEncoder().encode(\n JSON.stringify({\n ...testData,\n events: [tokenTestData],\n })\n ),\n },\n handlerId: 2,\n handlerType: HandlerType.APT_EVENT,\n },\n ],\n }\n const res = await service.processBindings(request)\n expect(firstCounterValue(res.result, 'deposit')).equal(1n)\n expect(firstGaugeValue(res.result, 'version')).equal(0n)\n })\n\n test('Check create poposal event dispatch', async () => {\n const request: ProcessBindingsRequest = {\n bindings: [\n {\n data: {\n raw: new TextEncoder().encode(JSON.stringify({ ...testData, events: [createProposalData] })),\n },\n handlerId: 3,\n handlerType: HandlerType.APT_EVENT,\n },\n ],\n }\n const res = await service.processBindings(request)\n expect(firstGaugeValue(res.result, 'size')).equal(2n)\n })\n\n test('check on timer', async () => {\n const request: ProcessBindingsRequest = {\n bindings: [\n {\n data: {\n raw: new TextEncoder().encode(\n JSON.stringify({\n version: '12345',\n resources: [\n {\n type: '0x1::coin::SupplyConfig',\n data: {\n allow_upgrades: false,\n },\n },\n ],\n })\n ),\n },\n handlerId: 0,\n handlerType: HandlerType.APT_RESOURCE,\n },\n ],\n }\n const res = await service.processBindings(request)\n expect(firstCounterValue(res.result, 'onTimer')).equal(1n)\n })\n})\n\nconst testData = {\n version: '18483034',\n hash: '0xbf4df6f390546a793ba9b7caff120002b3257986dbea9c697fd64acf7dfeb052',\n state_change_hash: '0x6063039cca5a1eb33d3986d3665fc783238579961eaa4746c41e25fa4f72aac6',\n event_root_hash: '0x425e39bcf994672108f83c34f637e84166af7ecedcbe26aed0dff0d62da8055d',\n state_checkpoint_hash: null,\n gas_used: '854',\n success: true,\n vm_status: 'Executed successfully',\n accumulator_root_hash: '0x47aa479d9e15993ea2abe04043c89186fb5da0b5eb8b5c6d18bd55d5f0c2c877',\n changes: [],\n sender: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n sequence_number: '30',\n max_gas_amount: '20000',\n gas_unit_price: '1',\n expiration_timestamp_secs: '1663144544',\n payload: {\n function: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807::SouffleChefCampaign::pull_token_v2',\n type_arguments: ['0x1::aptos_coin::AptosCoin'],\n arguments: [\n '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n 'Souffl3 BlueBerry',\n '1',\n ],\n type: 'entry_function_payload',\n },\n signature: {\n public_key: '0x6c3f579afbf8a728827385039f7604ec1d06e5c802d8f9689ee8ec9d349fedc5',\n signature:\n '0xd2db95052e774f095d924030a50c29325a17e8d69d35c748f45bb0e22eb7d3b9e47545c98bd7130fd3ef46cbedc30c9aaeaf39c2d922ee8e7d578c0b1e76f30b',\n type: 'ed25519_signature',\n },\n events: [\n {\n guid: {\n creation_number: '3',\n account_address: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n },\n sequence_number: '10',\n type: '0x1::coin::WithdrawEvent',\n data: {\n amount: '1',\n },\n },\n {\n version: '18483034',\n guid: {\n creation_number: '2',\n account_address: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n },\n sequence_number: '11',\n type: '0x1::coin::DepositEvent',\n data: {\n amount: '1',\n },\n },\n {\n guid: {\n creation_number: '9',\n account_address: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',\n },\n sequence_number: '9',\n type: '0x3::token::CreateTokenDataEvent',\n data: {\n description:\n 'Souffl3 offers a one-stop marketplace for the launch, listing, and trading of NFT assets on APTOS.\\nWebsite:https://souffl3.com/\\nEveryone can win through our Bake Off campaign on the Aptos Testnet, rewards including Souffl3 Genesis NFT and whitelists of other collab projects, everyone is welcome to participate!',\n id: {\n collection: 'Souffl3 BlueBerry',\n creator: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',\n name: 'Souffl3 BlueBerry #2',\n },\n maximum: '999999999999',\n mutability_config: {\n description: true,\n maximum: true,\n properties: true,\n royalty: true,\n uri: true,\n },\n name: 'Souffl3 BlueBerry #2',\n property_keys: ['author', 'point'],\n property_types: ['string', 'integer'],\n property_values: ['0x33454e4a4f59204c616273', '0x30'],\n royalty_payee_address: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807',\n royalty_points_denominator: '100',\n royalty_points_numerator: '20',\n uri: 'https://y3x4txhvirx5zl57efzbl6dg7psaier5q35hhwuqwzjwuahrycya.arweave.net/xu_J3PVEb9yvvyFyFfhm--QEEj2G-nPakLZTagDxwLA',\n },\n },\n {\n guid: {\n creation_number: '2',\n account_address: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',\n },\n sequence_number: '27',\n type: '0x3::token::DepositEvent',\n data: {\n amount: '1',\n id: {\n property_version: '0',\n token_data_id: {\n collection: 'Souffl3 BlueBerry',\n creator: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',\n name: 'Souffl3 BlueBerry #2',\n },\n },\n },\n },\n {\n version: '18483034',\n guid: {\n creation_number: '7',\n account_address: '0x21d5fe032affa1c8b10d343e9ad5a5618bc13baf5ed4a674fafaa12c54f416cc',\n },\n sequence_number: '980533',\n type: '0x4188c8694687e844677c2aa87171019e23d61cac60de5082a278a8aa47e9d807::SouffleChefCampaign::PullTokenEvent<0x1::aptos_coin::AptosCoin>',\n data: {\n receiver: '0x3a80be5daa84f2da7e07b3ec9234da48a5647f757187879c97a1fa03f31f1195',\n },\n },\n ],\n timestamp: '1663143945131218',\n type: 'user_transaction',\n}\n\nconst tokenTestData = {\n guid: {\n creation_number: '4',\n account_address: '0x89bc80de59187f707a59ae7a4121718dafe3e6068e0509104ef7e41a56bc97db',\n },\n sequence_number: '10',\n type: '0x3::token::DepositEvent',\n data: {\n amount: '1',\n id: {\n property_version: '0',\n token_data_id: {\n collection: 'Topaz Troopers',\n creator: '0x9125e4054d884fdc7296b66e12c0d63a7baa0d88c77e8e784987c0a967c670ac',\n name: 'Topaz Trooper #11293',\n },\n },\n },\n}\n\nconst createProposalData = {\n guid: {\n creation_number: '5',\n account_address: '0x1',\n },\n sequence_number: '3',\n type: '0x1::voting::CreateProposalEvent',\n data: {\n early_resolution_vote_threshold: {\n vec: ['9272156337856446330'],\n },\n execution_hash: '0x31549239ce8abdc1e9c259178614c3d44d015bd6d48635ddcfbfa4a77e7222b0',\n expiration_secs: '1665463839',\n metadata: {\n data: [\n {\n key: 'metadata_hash',\n value:\n '0x61633230656566373063616466363939663530353564323463356363353931396463306330656562643463303662653332346336323030313561633361653066',\n },\n {\n key: 'metadata_location',\n value:\n '0x68747470733a2f2f676973742e67697468756275736572636f6e74656e742e636f6d2f6d6f76656b6576696e2f30353766623134356234303836366566663863323263393166623964613931392f7261772f626162383566306637343334663030386138373831656563376663616464316163356135353438312f6769737466696c65312e747874',\n },\n ],\n },\n min_vote_threshold: '100000000000000',\n proposal_id: '3',\n },\n}\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|
@@ -1,49 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
-
if (k2 === undefined) k2 = k;
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
-
}
|
8
|
-
Object.defineProperty(o, k2, desc);
|
9
|
-
}) : (function(o, m, k, k2) {
|
10
|
-
if (k2 === undefined) k2 = k;
|
11
|
-
o[k2] = m[k];
|
12
|
-
}));
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
-
}) : function(o, v) {
|
16
|
-
o["default"] = v;
|
17
|
-
});
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
-
if (mod && mod.__esModule) return mod;
|
20
|
-
var result = {};
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
-
__setModuleDefault(result, mod);
|
23
|
-
return result;
|
24
|
-
};
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
27
|
-
};
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
29
|
-
const build_1 = require("../cli/build");
|
30
|
-
const path_1 = __importDefault(require("path"));
|
31
|
-
const fs = __importStar(require("fs"));
|
32
|
-
const os_1 = __importDefault(require("os"));
|
33
|
-
describe('Test EVM codegen', () => {
|
34
|
-
const codeGenFolder = fs.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'codegen_test'));
|
35
|
-
jest.setTimeout(20000);
|
36
|
-
// TODO make sure code could be compile
|
37
|
-
test('code gen for evm', async () => {
|
38
|
-
console.log('source code generated to ' + codeGenFolder);
|
39
|
-
await (0, build_1.codeGenEthersProcessor)(path_1.default.join(__dirname, 'abis/evm'), 'lib/target-ethers-sentio', `${codeGenFolder}/internal`);
|
40
|
-
expect(fs.existsSync(codeGenFolder)).toEqual(true);
|
41
|
-
expect(fs.readdirSync(codeGenFolder).length).toEqual(4);
|
42
|
-
});
|
43
|
-
// afterAll(() => {
|
44
|
-
// if (fs.existsSync(codeGenFolder)) {
|
45
|
-
// fs.rmSync(codeGenFolder, { recursive: true, force: true })
|
46
|
-
// }
|
47
|
-
// })
|
48
|
-
});
|
49
|
-
//# sourceMappingURL=codegen.test.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"codegen.test.js","sourceRoot":"","sources":["../../src/tests/codegen.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wCAAqD;AACrD,gDAAuB;AACvB,uCAAwB;AACxB,4CAAmB;AAEnB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,aAAa,GAAG,EAAE,CAAC,WAAW,CAAC,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAA;IAE5E,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IAEtB,uCAAuC;IACvC,IAAI,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAClC,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,aAAa,CAAC,CAAA;QAExD,MAAM,IAAA,8BAAsB,EAC1B,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,EAChC,0BAA0B,EAC1B,GAAG,aAAa,WAAW,CAC5B,CAAA;QACD,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QAClD,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACzD,CAAC,CAAC,CAAA;IAEF,mBAAmB;IACnB,wCAAwC;IACxC,iEAAiE;IACjE,MAAM;IACN,KAAK;AACP,CAAC,CAAC,CAAA","sourcesContent":["import { codeGenEthersProcessor } from '../cli/build'\nimport path from 'path'\nimport * as fs from 'fs'\nimport os from 'os'\n\ndescribe('Test EVM codegen', () => {\n const codeGenFolder = fs.mkdtempSync(path.join(os.tmpdir(), 'codegen_test'))\n\n jest.setTimeout(20000)\n\n // TODO make sure code could be compile\n test('code gen for evm', async () => {\n console.log('source code generated to ' + codeGenFolder)\n\n await codeGenEthersProcessor(\n path.join(__dirname, 'abis/evm'),\n 'lib/target-ethers-sentio',\n `${codeGenFolder}/internal`\n )\n expect(fs.existsSync(codeGenFolder)).toEqual(true)\n expect(fs.readdirSync(codeGenFolder).length).toEqual(4)\n })\n\n // afterAll(() => {\n // if (fs.existsSync(codeGenFolder)) {\n // fs.rmSync(codeGenFolder, { recursive: true, force: true })\n // }\n // })\n})\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|
@@ -1,56 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
|
-
};
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
const chai_1 = require("chai");
|
7
|
-
const long_1 = __importDefault(require("long"));
|
8
|
-
const testing_1 = require("../testing");
|
9
|
-
const erc20_processor_1 = require("../builtin/internal/erc20_processor");
|
10
|
-
describe('Test Template', () => {
|
11
|
-
const service = new testing_1.TestProcessorServer(() => {
|
12
|
-
const filter = erc20_processor_1.ERC20Processor.filters.Transfer('0x0000000000000000000000000000000000000000', '0xb329e39ebefd16f40d38f07643652ce17ca5bac1');
|
13
|
-
const processorTemplate = new erc20_processor_1.ERC20ProcessorTemplate().onEventTransfer(async function (event, ctx) {
|
14
|
-
console.log('');
|
15
|
-
});
|
16
|
-
erc20_processor_1.ERC20Processor.bind({
|
17
|
-
address: '0x1e4ede388cbc9f4b5c79681b7f94d36a11abebc9',
|
18
|
-
network: 1,
|
19
|
-
name: 'x2y2',
|
20
|
-
startBlock: 14201940,
|
21
|
-
}).onEventTransfer(async function (event, ctx) {
|
22
|
-
processorTemplate.bind({
|
23
|
-
address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
24
|
-
network: 3,
|
25
|
-
name: 'dynamic',
|
26
|
-
});
|
27
|
-
// template.bind('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 3, 'dynamic')
|
28
|
-
ctx.meter.Counter('c1').add(1);
|
29
|
-
}, filter);
|
30
|
-
});
|
31
|
-
beforeAll(async () => {
|
32
|
-
const request = {
|
33
|
-
templateInstances: [
|
34
|
-
{
|
35
|
-
contract: {
|
36
|
-
address: 'dynamic2',
|
37
|
-
name: 'dynamic2',
|
38
|
-
chainId: '1',
|
39
|
-
abi: '',
|
40
|
-
},
|
41
|
-
startBlock: long_1.default.ZERO,
|
42
|
-
endBlock: long_1.default.ZERO,
|
43
|
-
templateId: 0,
|
44
|
-
},
|
45
|
-
],
|
46
|
-
};
|
47
|
-
await service.start(request);
|
48
|
-
});
|
49
|
-
test('Check template instantiate', async () => {
|
50
|
-
const config = await service.getConfig({});
|
51
|
-
(0, chai_1.expect)(config.contractConfigs).length(2);
|
52
|
-
(0, chai_1.expect)(config.contractConfigs?.[1].contract?.name).equals('dynamic2');
|
53
|
-
(0, chai_1.expect)(config.templateInstances).length(1);
|
54
|
-
});
|
55
|
-
});
|
56
|
-
//# sourceMappingURL=erc20-template.test.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"erc20-template.test.js","sourceRoot":"","sources":["../../src/tests/erc20-template.test.ts"],"names":[],"mappings":";;;;;AAAA,+BAA6B;AAG7B,gDAAuB;AACvB,wCAAgD;AAChD,yEAA4F;AAE5F,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,OAAO,GAAG,IAAI,6BAAmB,CAAC,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,gCAAc,CAAC,OAAO,CAAC,QAAQ,CAC5C,4CAA4C,EAC5C,4CAA4C,CAC7C,CAAA;QAED,MAAM,iBAAiB,GAAG,IAAI,wCAAsB,EAAE,CAAC,eAAe,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;YAC/F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;QAEF,gCAAc,CAAC,IAAI,CAAC;YAClB,OAAO,EAAE,4CAA4C;YACrD,OAAO,EAAE,CAAC;YACV,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC,eAAe,CAAC,KAAK,WAAW,KAAK,EAAE,GAAG;YAC3C,iBAAiB,CAAC,IAAI,CAAC;gBACrB,OAAO,EAAE,4CAA4C;gBACrD,OAAO,EAAE,CAAC;gBACV,IAAI,EAAE,SAAS;aAChB,CAAC,CAAA;YACF,4EAA4E;YAC5E,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC,EAAE,MAAM,CAAC,CAAA;IACZ,CAAC,CAAC,CAAA;IAEF,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,OAAO,GAAiB;YAC5B,iBAAiB,EAAE;gBACjB;oBACE,QAAQ,EAAE;wBACR,OAAO,EAAE,UAAU;wBACnB,IAAI,EAAE,UAAU;wBAChB,OAAO,EAAE,GAAG;wBACZ,GAAG,EAAE,EAAE;qBACR;oBACD,UAAU,EAAE,cAAI,CAAC,IAAI;oBACrB,QAAQ,EAAE,cAAI,CAAC,IAAI;oBACnB,UAAU,EAAE,CAAC;iBACd;aACF;SACF,CAAA;QACD,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACxC,IAAA,aAAM,EAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QACrE,IAAA,aAAM,EAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA","sourcesContent":["import { expect } from 'chai'\n\nimport { StartRequest } from '..'\nimport Long from 'long'\nimport { TestProcessorServer } from '../testing'\nimport { ERC20Processor, ERC20ProcessorTemplate } from '../builtin/internal/erc20_processor'\n\ndescribe('Test Template', () => {\n const service = new TestProcessorServer(() => {\n const filter = ERC20Processor.filters.Transfer(\n '0x0000000000000000000000000000000000000000',\n '0xb329e39ebefd16f40d38f07643652ce17ca5bac1'\n )\n\n const processorTemplate = new ERC20ProcessorTemplate().onEventTransfer(async function (event, ctx) {\n console.log('')\n })\n\n ERC20Processor.bind({\n address: '0x1e4ede388cbc9f4b5c79681b7f94d36a11abebc9',\n network: 1,\n name: 'x2y2',\n startBlock: 14201940,\n }).onEventTransfer(async function (event, ctx) {\n processorTemplate.bind({\n address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n network: 3,\n name: 'dynamic',\n })\n // template.bind('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 3, 'dynamic')\n ctx.meter.Counter('c1').add(1)\n }, filter)\n })\n\n beforeAll(async () => {\n const request: StartRequest = {\n templateInstances: [\n {\n contract: {\n address: 'dynamic2',\n name: 'dynamic2',\n chainId: '1',\n abi: '',\n },\n startBlock: Long.ZERO,\n endBlock: Long.ZERO,\n templateId: 0,\n },\n ],\n }\n await service.start(request)\n })\n\n test('Check template instantiate', async () => {\n const config = await service.getConfig({})\n expect(config.contractConfigs).length(2)\n expect(config.contractConfigs?.[1].contract?.name).equals('dynamic2')\n expect(config.templateInstances).length(1)\n })\n})\n"]}
|
package/lib/tests/erc20.d.ts
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
export declare const filter: import("../builtin/erc20").TransferEventFilter;
|
package/lib/tests/erc20.js
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.filter = void 0;
|
4
|
-
const erc20_1 = require("../builtin/erc20");
|
5
|
-
const event_tracker_1 = require("../core/event-tracker");
|
6
|
-
const exporter_1 = require("../core/exporter");
|
7
|
-
exports.filter = erc20_1.ERC20Processor.filters.Transfer('0x0000000000000000000000000000000000000000', '0xb329e39ebefd16f40d38f07643652ce17ca5bac1');
|
8
|
-
const tracker = event_tracker_1.EventTracker.register('sdf');
|
9
|
-
const exporter = exporter_1.Exporter.register('transfer', 'xxx');
|
10
|
-
const processorTemplate = new erc20_1.ERC20ProcessorTemplate().onEventTransfer(async function (event, ctx) {
|
11
|
-
console.log('');
|
12
|
-
});
|
13
|
-
erc20_1.ERC20Processor.bind({
|
14
|
-
address: '0x1e4ede388cbc9f4b5c79681b7f94d36a11abebc9',
|
15
|
-
// network: 1,
|
16
|
-
name: 'x2y2',
|
17
|
-
startBlock: 14201940,
|
18
|
-
})
|
19
|
-
.onEventTransfer(async function (event, ctx) {
|
20
|
-
processorTemplate.bind({ address: '0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9', network: 3, name: 'dynamic' });
|
21
|
-
// template.bind('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 3, 'dynamic')
|
22
|
-
ctx.meter.Counter('c1').add(1);
|
23
|
-
}, exports.filter)
|
24
|
-
.onBlock(async function (block, ctx) {
|
25
|
-
ctx.meter.Gauge('g1').record(10, { k: 'v' });
|
26
|
-
})
|
27
|
-
.onCallApprove(function (call, ctx) {
|
28
|
-
ctx.meter.Counter('added').add(call.args.amount, { spender: call.args.spender });
|
29
|
-
});
|
30
|
-
erc20_1.ERC20Processor.bind({ address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', network: 56, name: 'usdc' })
|
31
|
-
.onEventTransfer(async function (event, ctx) {
|
32
|
-
ctx.meter.Counter('c2').add(2);
|
33
|
-
tracker.trackEvent(ctx, { distinctId: event.args.from });
|
34
|
-
exporter.emit(ctx, event);
|
35
|
-
}, exports.filter)
|
36
|
-
.onBlock(async function (block, ctx) {
|
37
|
-
ctx.meter.Gauge('g2').record(20, { k: 'v' });
|
38
|
-
});
|
39
|
-
// .onEventApproval(async function (event, ctx) {
|
40
|
-
// BigNumber.from(10 ** 18)
|
41
|
-
// // console.log(n)
|
42
|
-
// })
|
43
|
-
erc20_1.ERC20Processor.bind({ address: 'xxxx', network: 56 });
|
44
|
-
erc20_1.ERC20Processor.bind({ address: 'yyyy', network: 1 });
|
45
|
-
erc20_1.ERC20Processor.bind({ address: 'yyyy', network: 1 });
|
46
|
-
erc20_1.ERC20Processor.bind({ address: 'yyyy', network: 1, startBlock: 21, name: 'ytoken' });
|
47
|
-
// const template = Erc20Processor.template
|
48
|
-
// .onTransfer(async function (event, ctx) {
|
49
|
-
// ctx.meter.Counter('c2').add(2)
|
50
|
-
// }, filter)
|
51
|
-
// .onBlock(async function (block, ctx) {
|
52
|
-
// ctx.meter.Gauge('h1').record(20, { k: 'v' })
|
53
|
-
// })
|
54
|
-
//# sourceMappingURL=erc20.js.map
|
package/lib/tests/erc20.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"erc20.js","sourceRoot":"","sources":["../../src/tests/erc20.ts"],"names":[],"mappings":"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","sourcesContent":["import { ERC20Processor, ERC20ProcessorTemplate } from '../builtin/erc20'\nimport { EventTracker } from '../core/event-tracker'\nimport { Exporter } from '../core/exporter'\n\nexport const filter = ERC20Processor.filters.Transfer(\n '0x0000000000000000000000000000000000000000',\n '0xb329e39ebefd16f40d38f07643652ce17ca5bac1'\n)\n\nconst tracker = EventTracker.register('sdf')\nconst exporter = Exporter.register('transfer', 'xxx')\n\nconst processorTemplate = new ERC20ProcessorTemplate().onEventTransfer(async function (event, ctx) {\n console.log('')\n})\n\nERC20Processor.bind({\n address: '0x1e4ede388cbc9f4b5c79681b7f94d36a11abebc9',\n // network: 1,\n name: 'x2y2',\n startBlock: 14201940,\n})\n .onEventTransfer(async function (event, ctx) {\n processorTemplate.bind({ address: '0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9', network: 3, name: 'dynamic' })\n // template.bind('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 3, 'dynamic')\n ctx.meter.Counter('c1').add(1)\n }, filter)\n .onBlock(async function (block, ctx) {\n ctx.meter.Gauge('g1').record(10, { k: 'v' })\n })\n .onCallApprove(function (call, ctx) {\n ctx.meter.Counter('added').add(call.args.amount, { spender: call.args.spender })\n })\n\nERC20Processor.bind({ address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', network: 56, name: 'usdc' })\n .onEventTransfer(async function (event, ctx) {\n ctx.meter.Counter('c2').add(2)\n tracker.trackEvent(ctx, { distinctId: event.args.from })\n exporter.emit(ctx, event)\n }, filter)\n .onBlock(async function (block, ctx) {\n ctx.meter.Gauge('g2').record(20, { k: 'v' })\n })\n// .onEventApproval(async function (event, ctx) {\n// BigNumber.from(10 ** 18)\n// // console.log(n)\n// })\nERC20Processor.bind({ address: 'xxxx', network: 56 })\n\nERC20Processor.bind({ address: 'yyyy', network: 1 })\nERC20Processor.bind({ address: 'yyyy', network: 1 })\nERC20Processor.bind({ address: 'yyyy', network: 1, startBlock: 21, name: 'ytoken' })\n\n// const template = Erc20Processor.template\n// .onTransfer(async function (event, ctx) {\n// ctx.meter.Counter('c2').add(2)\n// }, filter)\n// .onBlock(async function (block, ctx) {\n// ctx.meter.Gauge('h1').record(20, { k: 'v' })\n// })\n"]}
|
@@ -1 +0,0 @@
|
|
1
|
-
export {};
|
package/lib/tests/erc20.test.js
DELETED
@@ -1,94 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
// TODO move out of this package
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
4
|
-
const chai_1 = require("chai");
|
5
|
-
const __1 = require("..");
|
6
|
-
const testing_1 = require("../testing");
|
7
|
-
const ethers_1 = require("ethers");
|
8
|
-
const test_utils_1 = require("../builtin/erc20/test-utils");
|
9
|
-
describe('Test Basic Examples', () => {
|
10
|
-
const service = new testing_1.TestProcessorServer(() => require('./erc20'));
|
11
|
-
beforeAll(async () => {
|
12
|
-
await service.start();
|
13
|
-
});
|
14
|
-
test('check configuration', async () => {
|
15
|
-
const config = await service.getConfig({});
|
16
|
-
(0, chai_1.expect)(config.contractConfigs).length(5);
|
17
|
-
(0, chai_1.expect)(config.contractConfigs?.[2].contract?.name).equals('ERC20');
|
18
|
-
(0, chai_1.expect)(config.contractConfigs?.[3].contract?.name).equals('ERC20');
|
19
|
-
(0, chai_1.expect)(config.contractConfigs?.[4].contract?.name).equals('ytoken');
|
20
|
-
});
|
21
|
-
test('Check block dispatch', async () => {
|
22
|
-
const res = (await service.testBlock(blockData)).result;
|
23
|
-
(0, chai_1.expect)(res?.counters).length(0);
|
24
|
-
(0, chai_1.expect)(res?.gauges).length(1);
|
25
|
-
(0, chai_1.expect)((0, testing_1.firstGaugeValue)(res, 'g1')).equals(10n);
|
26
|
-
(0, chai_1.expect)(res?.gauges[0].metadata?.contractName).equals('x2y2');
|
27
|
-
const gauge = res?.gauges?.[0];
|
28
|
-
(0, chai_1.expect)(gauge?.metadata?.blockNumber?.toString()).equals('14373295');
|
29
|
-
(0, chai_1.expect)(gauge?.runtimeInfo?.from).equals(__1.HandlerType.BLOCK);
|
30
|
-
const res2 = (await service.testBlock(blockData, 56)).result;
|
31
|
-
(0, chai_1.expect)(res2?.counters).length(0);
|
32
|
-
(0, chai_1.expect)(res2?.gauges).length(1);
|
33
|
-
(0, chai_1.expect)((0, testing_1.firstGaugeValue)(res2, 'g2')).equals(20n);
|
34
|
-
});
|
35
|
-
test('Check log dispatch', async () => {
|
36
|
-
const logData = (0, test_utils_1.mockTransferLog)('0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9', {
|
37
|
-
from: '0x0000000000000000000000000000000000000000',
|
38
|
-
to: '0xB329e39Ebefd16f40d38f07643652cE17Ca5Bac1',
|
39
|
-
value: ethers_1.BigNumber.from('0x9a71db64810aaa0000'),
|
40
|
-
});
|
41
|
-
let res = await service.testLog(logData);
|
42
|
-
const counters = res.result?.counters;
|
43
|
-
(0, chai_1.expect)(counters).length(1);
|
44
|
-
(0, chai_1.expect)((0, testing_1.firstCounterValue)(res.result, 'c1')).equals(1n);
|
45
|
-
(0, chai_1.expect)(counters?.[0].metadata?.chainId).equals('1');
|
46
|
-
(0, chai_1.expect)(counters?.[0].runtimeInfo?.from).equals(__1.HandlerType.ETH_LOG);
|
47
|
-
(0, chai_1.expect)(res.configUpdated).equals(true);
|
48
|
-
const logData2 = Object.assign({}, logData);
|
49
|
-
logData2.address = '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48';
|
50
|
-
res = await service.testLog(logData2, 56);
|
51
|
-
(0, chai_1.expect)((0, testing_1.firstCounterValue)(res.result, 'c2')).equals(2n);
|
52
|
-
(0, chai_1.expect)(res.result?.counters[0].metadata?.chainId).equals('56');
|
53
|
-
(0, chai_1.expect)(res.result?.gauges).length(0);
|
54
|
-
const config = await service.getConfig({});
|
55
|
-
(0, chai_1.expect)(config.contractConfigs).length(6); //config increased
|
56
|
-
(0, chai_1.expect)(config.contractConfigs?.[5].contract?.name).equals('dynamic');
|
57
|
-
// repeat trigger won't bind again
|
58
|
-
await service.testLogs([logData]);
|
59
|
-
const config2 = await service.getConfig({});
|
60
|
-
(0, chai_1.expect)(config).deep.equals(config2);
|
61
|
-
});
|
62
|
-
const blockData = {
|
63
|
-
hash: '0x2b9b7cce1f17f3b7e1f3c2472cc806a07bee3f0baca07d021350950d81d73a42',
|
64
|
-
number: 14373295,
|
65
|
-
timestamp: 1647106437,
|
66
|
-
extraData: '0xe4b883e5bda9e7a59ee4bb99e9b1bc493421',
|
67
|
-
};
|
68
|
-
test('Check trace dispatch', async () => {
|
69
|
-
const res = (await service.testTrace(traceData)).result;
|
70
|
-
(0, chai_1.expect)(res?.counters).length(1);
|
71
|
-
});
|
72
|
-
const traceData = {
|
73
|
-
action: {
|
74
|
-
from: '0x80009ff8154bd5653c6dda2fa5f5053e5a5c1a91',
|
75
|
-
callType: 'call',
|
76
|
-
gas: 0xbb0a,
|
77
|
-
input: '0x095ea7b30000000000000000000000003eabf546fff0a41edaaf5b667333a846285713180000000000000000000000000000000000000000000000000000002a03956d85',
|
78
|
-
to: '0x1E4EDE388cbc9F4b5c79681B7f94d36a11ABEBC9',
|
79
|
-
value: 0x0,
|
80
|
-
},
|
81
|
-
blockHash: '0xb1fe1fefca4063ab9cc06a10356a6dd397b8c3dd38e21470e107a711ad559c13',
|
82
|
-
blockNumber: 15548801,
|
83
|
-
result: {
|
84
|
-
gasUsed: 0x95df,
|
85
|
-
output: '0x0000000000000000000000000000000000000000000000000000000000000001',
|
86
|
-
},
|
87
|
-
subtraces: 1,
|
88
|
-
traceAddress: [],
|
89
|
-
transactionHash: '0xc05c37b34e13380d0b7e0475b27a0c77fda826f82c603f9c45922e952d63b7a5',
|
90
|
-
transactionPosition: 69,
|
91
|
-
type: 'call',
|
92
|
-
};
|
93
|
-
});
|
94
|
-
//# sourceMappingURL=erc20.test.js.map
|