@subsquid/solana-normalization 0.0.8 → 0.1.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.
package/lib/mapping.js CHANGED
@@ -7,7 +7,9 @@ exports.mapRpcBlock = mapRpcBlock;
7
7
  const util_internal_1 = require("@subsquid/util-internal");
8
8
  const assert_1 = __importDefault(require("assert"));
9
9
  const log_parser_1 = require("./log-parser");
10
- function mapRpcBlock(src) {
10
+ const transaction_context_1 = require("./transaction-context");
11
+ const instruction_parser_1 = require("./instruction-parser");
12
+ function mapRpcBlock(src, journal) {
11
13
  let header = {
12
14
  hash: src.hash,
13
15
  height: src.height,
@@ -16,21 +18,7 @@ function mapRpcBlock(src) {
16
18
  parentHash: src.block.previousBlockhash,
17
19
  timestamp: src.block.blockTime ?? 0
18
20
  };
19
- let instructions = [];
20
- let logs = [];
21
- let balances = [];
22
- let tokenBalances = [];
23
- let transactions = src.block.transactions
24
- ?.map((tx, i) => {
25
- try {
26
- return mapRpcTransaction(i, tx, instructions, logs, balances, tokenBalances);
27
- }
28
- catch (err) {
29
- throw (0, util_internal_1.addErrorContext)(err, {
30
- blockTransaction: tx.transaction.signatures[0]
31
- });
32
- }
33
- }) ?? [];
21
+ let items = new ItemMapping(journal, src.block);
34
22
  let rewards = src.block.rewards?.map(s => {
35
23
  let reward = {
36
24
  pubkey: s.pubkey,
@@ -47,16 +35,84 @@ function mapRpcBlock(src) {
47
35
  });
48
36
  return {
49
37
  header,
50
- transactions,
51
- instructions,
52
- logs,
53
- balances,
54
- tokenBalances,
38
+ transactions: items.transactions,
39
+ instructions: items.instructions,
40
+ logs: items.logs,
41
+ balances: items.balances,
42
+ tokenBalances: items.tokenBalances,
55
43
  rewards: rewards || []
56
44
  };
57
45
  }
58
- function mapRpcTransaction(transactionIndex, src, instructions, logs, balances, tokenBalances) {
59
- let tx = {
46
+ class ItemMapping {
47
+ constructor(journal, block) {
48
+ this.journal = journal;
49
+ this.transactions = [];
50
+ this.instructions = [];
51
+ this.logs = [];
52
+ this.balances = [];
53
+ this.tokenBalances = [];
54
+ let transactions = block.transactions ?? [];
55
+ for (let i = 0; i < transactions.length; i++) {
56
+ let tx = transactions[i];
57
+ let txIndex = tx._index ?? i;
58
+ try {
59
+ this.processTransaction(txIndex, tx);
60
+ }
61
+ catch (err) {
62
+ throw (0, util_internal_1.addErrorContext)(err, {
63
+ transactionHash: tx.transaction.signatures[0]
64
+ });
65
+ }
66
+ }
67
+ }
68
+ processTransaction(transactionIndex, src) {
69
+ let mapped = mapTransaction(transactionIndex, src);
70
+ let ctx = new transaction_context_1.TransactionContext(transactionIndex, src, this.journal);
71
+ let messages = new instruction_parser_1.MessageStream(src.meta.logMessages ?? []);
72
+ let insCheckPoint = this.instructions.length;
73
+ let logCheckPoint = this.logs.length;
74
+ try {
75
+ this.traverseInstructions(ctx, messages);
76
+ mapped.hasDroppedLogMessages = messages.truncated;
77
+ if (!messages.ended) {
78
+ let err = new instruction_parser_1.ParsingError('not all log messages where consumed');
79
+ err.logMessageIndex = messages.position;
80
+ throw err;
81
+ }
82
+ }
83
+ catch (err) {
84
+ if (err instanceof instruction_parser_1.ParsingError) {
85
+ // report parsing problem
86
+ let { msg, ...props } = err;
87
+ ctx.error(props, msg);
88
+ // reparse without log messages
89
+ mapped.hasDroppedLogMessages = true;
90
+ // restore state before failed traversal
91
+ this.instructions = this.instructions.slice(0, insCheckPoint);
92
+ this.logs = this.logs.slice(0, logCheckPoint);
93
+ // traverse again with dummy truncated MessageStream
94
+ this.traverseInstructions(ctx, new instruction_parser_1.MessageStream([new log_parser_1.LogTruncatedMessage().toString()]));
95
+ }
96
+ else {
97
+ throw err;
98
+ }
99
+ }
100
+ this.transactions.push(mapped);
101
+ this.balances.push(...mapBalances(ctx));
102
+ this.tokenBalances.push(...mapTokenBalances(ctx));
103
+ }
104
+ traverseInstructions(ctx, messages) {
105
+ for (let i = 0; i < ctx.tx.transaction.message.instructions.length; i++) {
106
+ let ins = ctx.tx.transaction.message.instructions[i];
107
+ let inner = ctx.tx.meta.innerInstructions?.flatMap(pack => {
108
+ return pack.index === i ? pack.instructions : [];
109
+ });
110
+ new instruction_parser_1.InstructionTreeTraversal(ctx, messages, i, ins, inner ?? [], this.instructions, this.logs);
111
+ }
112
+ }
113
+ }
114
+ function mapTransaction(transactionIndex, src) {
115
+ return {
60
116
  transactionIndex,
61
117
  version: src.version,
62
118
  accountKeys: src.transaction.message.accountKeys,
@@ -72,278 +128,11 @@ function mapRpcTransaction(transactionIndex, src, instructions, logs, balances,
72
128
  loadedAddresses: src.meta.loadedAddresses ?? { readonly: [], writable: [] },
73
129
  hasDroppedLogMessages: false
74
130
  };
75
- let accounts;
76
- if (tx.version === 'legacy') {
77
- accounts = tx.accountKeys;
78
- }
79
- else {
80
- (0, assert_1.default)(src.meta?.loadedAddresses);
81
- accounts = tx.accountKeys.concat(src.meta.loadedAddresses.writable, src.meta.loadedAddresses.readonly);
82
- }
83
- let getAccount = (index) => {
84
- (0, assert_1.default)(index < accounts.length);
85
- return accounts[index];
86
- };
87
- new InstructionParser(getAccount, tx, src, src.meta.logMessages?.map(log_parser_1.parseLogMessage), instructions, logs).parse();
88
- balances.push(...mapBalances(getAccount, transactionIndex, src));
89
- tokenBalances.push(...mapTokenBalances(getAccount, transactionIndex, src));
90
- return tx;
91
- }
92
- const PROGRAMS_MISSING_INVOKE_LOG = new Set([
93
- 'AddressLookupTab1e1111111111111111111111111',
94
- 'BPFLoader1111111111111111111111111111111111',
95
- 'BPFLoader2111111111111111111111111111111111',
96
- 'BPFLoaderUpgradeab1e11111111111111111111111',
97
- 'Ed25519SigVerify111111111111111111111111111',
98
- 'KeccakSecp256k11111111111111111111111111111',
99
- 'NativeLoader1111111111111111111111111111111',
100
- 'ZkTokenProof1111111111111111111111111111111',
101
- 'Secp256r1SigVerify1111111111111111111111111',
102
- '1111111PXvn95h8m6x4oGorNVerA2F4FFRpp7feiK',
103
- '11111112cMQwSC9qirWGjZM6gLGwW69X22mqwLLGP',
104
- ]);
105
- class InstructionParser {
106
- constructor(getAccount, tx, src, messages, instructions, logs) {
107
- this.getAccount = getAccount;
108
- this.tx = tx;
109
- this.src = src;
110
- this.instructions = instructions;
111
- this.logs = logs;
112
- this.pos = 0;
113
- this.messagePos = 0;
114
- this.messagesTruncated = false;
115
- this.lastAddress = [];
116
- if (messages == null) {
117
- this.messages = [];
118
- this.messagesTruncated = true;
119
- }
120
- else {
121
- this.messages = messages;
122
- }
123
- let err = this.src.meta.err;
124
- if (isIntructionError(err)) {
125
- let pos = err.InstructionError[0];
126
- (0, assert_1.default)(typeof pos == 'number');
127
- (0, assert_1.default)(0 <= pos && pos < this.src.transaction.message.instructions.length);
128
- this.errorPos = pos;
129
- }
130
- }
131
- parse() {
132
- while (this.pos < this.src.transaction.message.instructions.length) {
133
- let instruction = this.src.transaction.message.instructions[this.pos];
134
- let inner = this.src.meta.innerInstructions
135
- ?.filter(i => i.index === this.pos)
136
- .flatMap(i => i.instructions) ?? [];
137
- if (this.errorPos == null || this.errorPos >= this.pos) {
138
- let instructions = [instruction].concat(inner);
139
- let end = this.traverse(instructions, 0, 1);
140
- (0, assert_1.default)(end == instructions.length);
141
- }
142
- else {
143
- this.assert(inner.length == 0, false, 0, 'seemingly non-executed instruction has inner instructions');
144
- this.push(1, instruction);
145
- }
146
- this.pos += 1;
147
- }
148
- this.tx.hasDroppedLogMessages = this.tx.hasDroppedLogMessages || this.messagesTruncated;
149
- }
150
- traverse(instructions, pos, stackHeight) {
151
- this.assert(pos < instructions.length, true, 0, 'unexpected and of inner instructions');
152
- let instruction = instructions[pos];
153
- this.assert(instruction.stackHeight == null || instruction.stackHeight == stackHeight, false, pos, 'instruction has unexpected stack height');
154
- let msg;
155
- if (this.messagePos < this.messages.length) {
156
- msg = this.messages[this.messagePos];
157
- }
158
- if (msg?.kind == 'truncate') {
159
- this.messagePos += 1;
160
- this.messagesTruncated = true;
161
- }
162
- if (this.messagesTruncated) {
163
- this.push(stackHeight, instruction);
164
- return this.logLessTraversal(stackHeight, instructions, pos + 1);
165
- }
166
- let programId = this.getAccount(instruction.programIdIndex);
167
- if (msg?.kind === 'invoke' && msg.programId === programId) {
168
- this.assert(msg.stackHeight == stackHeight, true, pos, 'invoke message has unexpected stack height');
169
- this.messagePos += 1;
170
- return this.invokeInstruction(stackHeight, instructions, pos);
171
- }
172
- if (PROGRAMS_MISSING_INVOKE_LOG.has(programId)) {
173
- let dropped = this.dropInvokeLessInstructionMessages(pos);
174
- let ins = this.push(stackHeight, instruction);
175
- ins.hasDroppedLogMessages = ins.hasDroppedLogMessages || dropped;
176
- this.tx.hasDroppedLogMessages = this.tx.hasDroppedLogMessages || dropped;
177
- return this.invokeLessTraversal(dropped, stackHeight, instructions, pos + 1);
178
- }
179
- // FIXME: add an option to ignore this
180
- throw this.error(true, pos, 'missing invoke message');
181
- }
182
- dropInvokeLessInstructionMessages(pos) {
183
- let initialPos = this.messagePos;
184
- while (this.messagePos < this.messages.length && !this.messagesTruncated) {
185
- let msg = this.messages[this.messagePos];
186
- switch (msg.kind) {
187
- case 'log':
188
- case 'data':
189
- case 'cu':
190
- case 'other':
191
- this.messagePos += 1;
192
- break;
193
- case 'truncate':
194
- this.messagePos += 1;
195
- this.messagesTruncated = true;
196
- return true;
197
- case 'invoke':
198
- return this.messagePos - initialPos > 0;
199
- case 'invoke-result':
200
- throw this.error(true, pos, `invoke result message does not match any invoke`);
201
- default:
202
- throw (0, util_internal_1.unexpectedCase)();
203
- }
204
- }
205
- return false;
206
- }
207
- invokeInstruction(stackHeight, instructions, instructionPos) {
208
- let ins = this.push(stackHeight, instructions[instructionPos]);
209
- let pos = instructionPos + 1;
210
- while (true) {
211
- let token = this.takeInstructionMessages(ins, instructionPos);
212
- switch (token.kind) {
213
- case 'invoke':
214
- pos = this.traverse(instructions, pos, stackHeight + 1);
215
- break;
216
- case 'invoke-result':
217
- if (token.programId != ins.programId) {
218
- throw this.error(true, instructionPos, `invoke result message and instruction program ids don't match`);
219
- }
220
- if (token.error) {
221
- ins.error = token.error;
222
- }
223
- pos = this.invokeLessTraversal(true, stackHeight, instructions, pos);
224
- this.messagePos += 1;
225
- return pos;
226
- case 'truncate':
227
- ins.hasDroppedLogMessages = true;
228
- return this.logLessTraversal(stackHeight, instructions, pos);
229
- default:
230
- throw (0, util_internal_1.unexpectedCase)();
231
- }
232
- }
233
- }
234
- takeInstructionMessages(ins, pos) {
235
- if (this.messagesTruncated)
236
- return new log_parser_1.LogTruncatedMessage();
237
- while (this.messagePos < this.messages.length) {
238
- let msg = this.messages[this.messagePos];
239
- switch (msg.kind) {
240
- case 'log':
241
- case 'data':
242
- case 'other':
243
- this.logs.push({
244
- transactionIndex: ins.transactionIndex,
245
- logIndex: this.messagePos,
246
- instructionAddress: ins.instructionAddress,
247
- programId: ins.programId,
248
- kind: msg.kind,
249
- message: msg.message
250
- });
251
- break;
252
- case 'cu':
253
- if (ins.programId != msg.programId) {
254
- throw this.error(true, pos, 'unexpected programId in compute unit message');
255
- }
256
- ins.computeUnitsConsumed = msg.consumed;
257
- break;
258
- case 'invoke':
259
- case 'invoke-result':
260
- return msg;
261
- case 'truncate':
262
- this.messagesTruncated = true;
263
- this.messagePos += 1;
264
- return msg;
265
- default:
266
- throw (0, util_internal_1.unexpectedCase)();
267
- }
268
- this.messagePos += 1;
269
- }
270
- throw this.error(false, pos, 'unexpected end of log messages');
271
- }
272
- invokeLessTraversal(messagesDropped, parentStackHeight, instructions, pos) {
273
- return this.logLessTraversal(parentStackHeight, instructions, pos, (ins, pos) => {
274
- ins.hasDroppedLogMessages = ins.hasDroppedLogMessages || messagesDropped;
275
- if (PROGRAMS_MISSING_INVOKE_LOG.has(ins.programId)) {
276
- }
277
- else if (isIntructionError(this.tx.err) && this.tx.err.InstructionError[1] === 'CallDepth') {
278
- }
279
- else {
280
- throw this.error(false, pos, 'invoke message is missing');
281
- }
282
- });
283
- }
284
- logLessTraversal(parentStackHeight, instructions, pos, cb) {
285
- while (pos < instructions.length) {
286
- let instruction = instructions[pos];
287
- let stackHeight = instruction.stackHeight ?? 2;
288
- if (stackHeight > parentStackHeight) {
289
- let ins = this.push(stackHeight, instruction);
290
- cb?.(ins, pos);
291
- pos += 1;
292
- }
293
- else {
294
- return pos;
295
- }
296
- }
297
- return pos;
298
- }
299
- push(stackHeight, src) {
300
- (0, assert_1.default)(stackHeight > 0);
301
- if (src.stackHeight != null) {
302
- (0, assert_1.default)(stackHeight === src.stackHeight);
303
- }
304
- let address = this.lastAddress.slice();
305
- while (address.length > stackHeight) {
306
- address.pop();
307
- }
308
- if (address.length === stackHeight) {
309
- address[stackHeight - 1] += 1;
310
- }
311
- else {
312
- (0, assert_1.default)(address.length + 1 == stackHeight);
313
- address[stackHeight - 1] = 0;
314
- }
315
- let i = {
316
- transactionIndex: this.tx.transactionIndex,
317
- instructionAddress: address,
318
- programId: this.getAccount(src.programIdIndex),
319
- accounts: src.accounts.map(a => this.getAccount(a)),
320
- data: src.data,
321
- isCommitted: !this.tx.err,
322
- hasDroppedLogMessages: this.messagesTruncated
323
- };
324
- this.instructions.push(i);
325
- this.lastAddress = address;
326
- return i;
327
- }
328
- assert(ok, withMessagePos, innerPos, msg) {
329
- if (!ok)
330
- throw this.error(withMessagePos, innerPos, msg);
331
- }
332
- error(withMessagePos, innerPos, msg) {
333
- let loc = `stopped at instruction ${this.pos}`;
334
- if (innerPos > 0) {
335
- loc += `, inner instruction ${innerPos - 1})`;
336
- }
337
- if (withMessagePos && this.messagePos < this.messages.length) {
338
- loc += ` and log message ${this.messagePos}`;
339
- }
340
- return new Error(`Failed to process transaction ${this.tx.signatures[0]}: ${loc}: ${msg}`);
341
- }
342
131
  }
343
- function mapBalances(getAccount, transactionIndex, tx) {
132
+ function mapBalances(ctx) {
344
133
  let balances = [];
345
- let pre = tx.meta.preBalances;
346
- let post = tx.meta.postBalances;
134
+ let pre = ctx.tx.meta.preBalances;
135
+ let post = ctx.tx.meta.postBalances;
347
136
  (0, assert_1.default)(pre.length == post.length);
348
137
  for (let i = 0; i < pre.length; i++) {
349
138
  if (pre[i] === post[i]) {
@@ -351,8 +140,8 @@ function mapBalances(getAccount, transactionIndex, tx) {
351
140
  }
352
141
  else {
353
142
  balances.push({
354
- transactionIndex,
355
- account: getAccount(i),
143
+ transactionIndex: ctx.transactionIndex,
144
+ account: ctx.getAccount(i),
356
145
  pre: BigInt(pre[i]),
357
146
  post: BigInt(post[i])
358
147
  });
@@ -367,15 +156,15 @@ function mapBalances(getAccount, transactionIndex, tx) {
367
156
  });
368
157
  return balances;
369
158
  }
370
- function mapTokenBalances(getAccount, transactionIndex, tx) {
159
+ function mapTokenBalances(ctx) {
371
160
  let balances = [];
372
- let preBalances = new Map(tx.meta.preTokenBalances?.map(b => [getAccount(b.accountIndex), b]));
373
- let postBalances = new Map(tx.meta.postTokenBalances?.map(b => [getAccount(b.accountIndex), b]));
161
+ let preBalances = new Map(ctx.tx.meta.preTokenBalances?.map(b => [ctx.getAccount(b.accountIndex), b]));
162
+ let postBalances = new Map(ctx.tx.meta.postTokenBalances?.map(b => [ctx.getAccount(b.accountIndex), b]));
374
163
  for (let [account, post] of postBalances.entries()) {
375
164
  let pre = preBalances.get(account);
376
165
  if (pre) {
377
166
  balances.push({
378
- transactionIndex,
167
+ transactionIndex: ctx.transactionIndex,
379
168
  account,
380
169
  preProgramId: pre.programId ?? undefined,
381
170
  preMint: pre.mint,
@@ -391,7 +180,7 @@ function mapTokenBalances(getAccount, transactionIndex, tx) {
391
180
  }
392
181
  else {
393
182
  balances.push({
394
- transactionIndex,
183
+ transactionIndex: ctx.transactionIndex,
395
184
  account,
396
185
  postProgramId: post.programId ?? undefined,
397
186
  postMint: post.mint,
@@ -405,7 +194,7 @@ function mapTokenBalances(getAccount, transactionIndex, tx) {
405
194
  if (postBalances.has(account))
406
195
  continue;
407
196
  balances.push({
408
- transactionIndex,
197
+ transactionIndex: ctx.transactionIndex,
409
198
  account,
410
199
  preProgramId: pre.programId ?? undefined,
411
200
  preMint: pre.mint,
@@ -423,7 +212,4 @@ function mapTokenBalances(getAccount, transactionIndex, tx) {
423
212
  });
424
213
  return balances;
425
214
  }
426
- function isIntructionError(err) {
427
- return typeof err == 'object' && err != null && 'InstructionError' in err;
428
- }
429
215
  //# sourceMappingURL=mapping.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import * as rpc from '@subsquid/solana-rpc-data';
2
+ import { Base58Bytes } from '@subsquid/solana-rpc-data';
3
+ export interface Journal {
4
+ warn(props: any, msg: string): void;
5
+ error(props: any, msg: string): void;
6
+ }
7
+ export declare class TransactionContext {
8
+ readonly transactionIndex: number;
9
+ readonly tx: rpc.Transaction;
10
+ private journal;
11
+ readonly erroredInstruction: number;
12
+ readonly couldFailBeforeInvokeMessage: boolean;
13
+ private accounts;
14
+ constructor(transactionIndex: number, tx: rpc.Transaction, journal: Journal);
15
+ get isCommitted(): boolean;
16
+ get transactionHash(): string;
17
+ getAccount(index: number): Base58Bytes;
18
+ warn(props: any, msg: string): void;
19
+ error(props: any, msg: string): void;
20
+ }
21
+ //# sourceMappingURL=transaction-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-context.d.ts","sourceRoot":"","sources":["../src/transaction-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,2BAA2B,CAAA;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAA;AAGrD,MAAM,WAAW,OAAO;IACpB,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CACvC;AAED,qBAAa,kBAAkB;aAOP,gBAAgB,EAAE,MAAM;aACxB,EAAE,EAAE,GAAG,CAAC,WAAW;IACnC,OAAO,CAAC,OAAO;IARnB,SAAgB,kBAAkB,EAAE,MAAM,CAAA;IAC1C,SAAgB,4BAA4B,EAAE,OAAO,CAAA;IAErD,OAAO,CAAC,QAAQ,CAAe;gBAGX,gBAAgB,EAAE,MAAM,EACxB,EAAE,EAAE,GAAG,CAAC,WAAW,EAC3B,OAAO,EAAE,OAAO;IA0C5B,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW;IAKtC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAWnC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;CAUvC"}
@@ -0,0 +1,81 @@
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
+ exports.TransactionContext = void 0;
7
+ const assert_1 = __importDefault(require("assert"));
8
+ class TransactionContext {
9
+ constructor(transactionIndex, tx, journal) {
10
+ this.transactionIndex = transactionIndex;
11
+ this.tx = tx;
12
+ this.journal = journal;
13
+ if (tx.version == 'legacy') {
14
+ this.accounts = tx.transaction.message.accountKeys;
15
+ }
16
+ else {
17
+ this.accounts = tx.transaction.message.accountKeys.concat(tx.meta.loadedAddresses?.writable ?? [], tx.meta.loadedAddresses?.readonly ?? []);
18
+ }
19
+ let err = this.tx.meta.err;
20
+ if (isInstructionError(err)) {
21
+ let pos = err.InstructionError[0];
22
+ let type = err.InstructionError[1];
23
+ if (Number.isSafeInteger(pos)) {
24
+ this.erroredInstruction = pos;
25
+ }
26
+ else {
27
+ this.erroredInstruction = tx.transaction.message.instructions.length;
28
+ this.warn({ transactionError: err }, 'got InstructionError of unrecognized shape');
29
+ }
30
+ switch (type) {
31
+ case 'AccountNotExecutable':
32
+ case 'CallDepth':
33
+ case 'MissingAccount':
34
+ case 'NotEnoughAccountKeys':
35
+ case 'ReentrancyNotAllowed':
36
+ case 'UnsupportedProgramId':
37
+ this.couldFailBeforeInvokeMessage = true;
38
+ break;
39
+ default:
40
+ this.couldFailBeforeInvokeMessage = false;
41
+ }
42
+ }
43
+ else if (err != null && !this.tx.meta.logMessages?.length && !this.tx.meta.innerInstructions?.length) {
44
+ this.erroredInstruction = -1;
45
+ this.couldFailBeforeInvokeMessage = false;
46
+ }
47
+ else {
48
+ this.erroredInstruction = tx.transaction.message.instructions.length;
49
+ this.couldFailBeforeInvokeMessage = false;
50
+ }
51
+ }
52
+ get isCommitted() {
53
+ return this.tx.meta.err == null;
54
+ }
55
+ get transactionHash() {
56
+ return this.tx.transaction.signatures[0];
57
+ }
58
+ getAccount(index) {
59
+ (0, assert_1.default)(index < this.accounts.length);
60
+ return this.accounts[index];
61
+ }
62
+ warn(props, msg) {
63
+ this.journal.warn({
64
+ transactionHash: this.transactionHash,
65
+ transactionIndex: this.transactionIndex,
66
+ ...props,
67
+ }, msg);
68
+ }
69
+ error(props, msg) {
70
+ this.journal.error({
71
+ transactionHash: this.transactionHash,
72
+ transactionIndex: this.transactionIndex,
73
+ ...props,
74
+ }, msg);
75
+ }
76
+ }
77
+ exports.TransactionContext = TransactionContext;
78
+ function isInstructionError(err) {
79
+ return typeof err == 'object' && err != null && 'InstructionError' in err;
80
+ }
81
+ //# sourceMappingURL=transaction-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-context.js","sourceRoot":"","sources":["../src/transaction-context.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subsquid/solana-normalization",
3
- "version": "0.0.8",
3
+ "version": "0.1.0",
4
4
  "description": "Solana data model",
5
5
  "license": "GPL-3.0-or-later",
6
6
  "repository": "git@github.com:subsquid/squid.git",
@@ -13,7 +13,7 @@
13
13
  ],
14
14
  "main": "lib/index.js",
15
15
  "dependencies": {
16
- "@subsquid/solana-rpc-data": "^0.1.0",
16
+ "@subsquid/solana-rpc-data": "^0.2.0",
17
17
  "@subsquid/util-internal": "^3.2.0",
18
18
  "@subsquid/util-internal-validation": "^0.7.0"
19
19
  },