@my-packages-changeit/evm-address-tx-extractor 3.0.2

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.
Files changed (34) hide show
  1. package/CHANGELOG.md +311 -0
  2. package/README.md +24 -0
  3. package/dist/actions/db.d.ts +43 -0
  4. package/dist/actions/db.d.ts.map +1 -0
  5. package/dist/actions/db.js +87 -0
  6. package/dist/entities/addressTxsEntity.d.ts +11 -0
  7. package/dist/entities/addressTxsEntity.d.ts.map +1 -0
  8. package/dist/entities/addressTxsEntity.js +57 -0
  9. package/dist/extractors/evmTxExtractor.d.ts +55 -0
  10. package/dist/extractors/evmTxExtractor.d.ts.map +1 -0
  11. package/dist/extractors/evmTxExtractor.js +131 -0
  12. package/dist/index.d.ts +6 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +6 -0
  15. package/dist/interfaces/types.d.ts +12 -0
  16. package/dist/interfaces/types.d.ts.map +1 -0
  17. package/dist/interfaces/types.js +6 -0
  18. package/dist/migrations/index.d.ts +8 -0
  19. package/dist/migrations/index.d.ts.map +1 -0
  20. package/dist/migrations/index.js +9 -0
  21. package/dist/migrations/postgres/1713694851290-migration.d.ts +7 -0
  22. package/dist/migrations/postgres/1713694851290-migration.d.ts.map +1 -0
  23. package/dist/migrations/postgres/1713694851290-migration.js +23 -0
  24. package/dist/migrations/postgres/1722346608595-migration.d.ts +7 -0
  25. package/dist/migrations/postgres/1722346608595-migration.d.ts.map +1 -0
  26. package/dist/migrations/postgres/1722346608595-migration.js +15 -0
  27. package/dist/migrations/sqlite/1713694799333-migration.d.ts +7 -0
  28. package/dist/migrations/sqlite/1713694799333-migration.d.ts.map +1 -0
  29. package/dist/migrations/sqlite/1713694799333-migration.js +22 -0
  30. package/dist/migrations/sqlite/1722346500068-migration.d.ts +7 -0
  31. package/dist/migrations/sqlite/1722346500068-migration.d.ts.map +1 -0
  32. package/dist/migrations/sqlite/1722346500068-migration.js +85 -0
  33. package/dist/tsconfig.tsbuildinfo +1 -0
  34. package/package.json +42 -0
@@ -0,0 +1,131 @@
1
+ import { isCallException, JsonRpcProvider, Transaction, } from 'ethers';
2
+ import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
3
+ import { DummyLogger } from '@rosen-bridge/abstract-logger';
4
+ import { TxAction } from '../actions/db';
5
+ import { EvmTxStatus } from '../interfaces/types';
6
+ export class EvmTxExtractor extends AbstractExtractor {
7
+ logger;
8
+ action;
9
+ id;
10
+ address;
11
+ provider;
12
+ checkNonceAtToHeight;
13
+ /**
14
+ * address should be lower case (without checksum)
15
+ */
16
+ constructor(dataSource, id, address, rpcUrl, authToken, checkNonceAtToHeight = false, logger = new DummyLogger()) {
17
+ super();
18
+ this.id = id;
19
+ this.address = address;
20
+ this.logger = logger;
21
+ this.action = new TxAction(dataSource, this.logger.child('TxAction'));
22
+ this.provider = authToken
23
+ ? new JsonRpcProvider(`${rpcUrl}/${authToken}`)
24
+ : new JsonRpcProvider(rpcUrl);
25
+ this.checkNonceAtToHeight = checkNonceAtToHeight;
26
+ }
27
+ /**
28
+ * get Id for current extractor
29
+ */
30
+ getId = () => this.id;
31
+ /**
32
+ * gets block id and transactions corresponding to the block and saves all transaction ids in database
33
+ * @param txs
34
+ * @param block
35
+ */
36
+ processTransactions = async (txs, block) => {
37
+ const extractedTxs = [];
38
+ for (const tx of txs) {
39
+ if (tx.from === null) {
40
+ throw Error('ImpossibleBehavior: RPC transactions must have `from`.');
41
+ }
42
+ if (tx.hash === null) {
43
+ throw Error('ImpossibleBehavior: RPC transactions must have `hash`.');
44
+ }
45
+ if (tx.from.toLowerCase() === this.address) {
46
+ let status;
47
+ try {
48
+ const result = await tx.wait(0);
49
+ if (result)
50
+ status = EvmTxStatus.succeed;
51
+ else
52
+ throw Error(`ImpossibleBehavior: Evm Tx [${tx.hash}] is included in block [${block.hash}] but waiting resulted is null or undefined`);
53
+ }
54
+ catch (e) {
55
+ if (isCallException(e))
56
+ status = EvmTxStatus.failed;
57
+ else
58
+ throw e;
59
+ }
60
+ extractedTxs.push({
61
+ unsignedHash: Transaction.from(tx).unsignedHash,
62
+ signedHash: tx.hash,
63
+ nonce: tx.nonce,
64
+ address: tx.from.toLowerCase(),
65
+ status: status,
66
+ });
67
+ }
68
+ }
69
+ if (extractedTxs.length > 0)
70
+ await this.action.storeTxs(extractedTxs, block, this.getId());
71
+ return true;
72
+ };
73
+ /**
74
+ * fork one block and remove all stored txId for this block
75
+ * @param hash: block hash
76
+ */
77
+ forkBlock = async (hash) => {
78
+ await this.action.deleteBlockTxs(hash, this.getId());
79
+ };
80
+ /**
81
+ * Initializes the database with older boxes related to the address
82
+ */
83
+ initializeData = async () => {
84
+ return;
85
+ };
86
+ /**
87
+ * Builds a query that returns used blocks by selecting the `block` column from the `evmAddressTxEntity` repository,
88
+ * filtered by the provided `extractorId`
89
+ *
90
+ * @returns A query builder selecting used blocks
91
+ */
92
+ createUsedBlocksQuery = () => this.action.createUsedBlocksQuery(this.getId());
93
+ /**
94
+ * checks if nonce changes within the specified height range
95
+ *
96
+ * @param fromHeight - Start height of the range being evaluated.
97
+ * @param toHeight - End height of the range being evaluated.
98
+ * @returns `true` if the range may contain relevant transactions,
99
+ * `false` if it is guaranteed to be empty.
100
+ */
101
+ hasEventInHeightRange = async (fromHeight, toHeight) => {
102
+ const lastDbNonce = await this.action.getNonceUpToHeight(this.getId(), this.address, fromHeight);
103
+ let networkNonce;
104
+ if (this.checkNonceAtToHeight) {
105
+ try {
106
+ networkNonce = await this.provider.getTransactionCount(this.address, toHeight);
107
+ this.logger.debug(`Nonce at height [${toHeight}] is [${networkNonce}]`);
108
+ }
109
+ catch (error) {
110
+ this.logger.debug(`Failed to fetch nonce at height [${toHeight}], falling back to latest nonce: ${error}`);
111
+ networkNonce = await this.provider.getTransactionCount(this.address);
112
+ }
113
+ }
114
+ else {
115
+ networkNonce = await this.provider.getTransactionCount(this.address);
116
+ }
117
+ this.logger.debug(`Checking range [${fromHeight}, ${toHeight}] with db nonce [${lastDbNonce}] and using network nonce [${networkNonce}]`);
118
+ const nextExpectedNonce = lastDbNonce + 1;
119
+ if (networkNonce < nextExpectedNonce) {
120
+ throw new Error(`ImpossibleBehavior: Next network nonce [${networkNonce}] is less than the expected nonce [${nextExpectedNonce}]`);
121
+ }
122
+ if (networkNonce === nextExpectedNonce) {
123
+ this.logger.debug(`No related transaction is expected to be found in block range [${fromHeight}, ${toHeight}]`);
124
+ return false;
125
+ }
126
+ const possibleTxCount = networkNonce - nextExpectedNonce;
127
+ this.logger.debug(`It's possible to have [${possibleTxCount}] related transaction(s) in block range [${fromHeight}, ${toHeight}]`);
128
+ return true;
129
+ };
130
+ }
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZtVHhFeHRyYWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvZXh0cmFjdG9ycy9ldm1UeEV4dHJhY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsZUFBZSxFQUNmLGVBQWUsRUFDZixXQUFXLEdBRVosTUFBTSxRQUFRLENBQUM7QUFFaEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUk1RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxXQUFXLEVBQWUsTUFBTSxxQkFBcUIsQ0FBQztBQUUvRCxNQUFNLE9BQU8sY0FBZSxTQUFRLGlCQUduQztJQUNVLE1BQU0sQ0FBaUI7SUFDdkIsTUFBTSxDQUFXO0lBQ1QsRUFBRSxDQUFTO0lBQ1gsT0FBTyxDQUFTO0lBQ2hCLFFBQVEsQ0FBa0I7SUFDMUIsb0JBQW9CLENBQVU7SUFFL0M7O09BRUc7SUFDSCxZQUNFLFVBQXNCLEVBQ3RCLEVBQVUsRUFDVixPQUFlLEVBQ2YsTUFBYyxFQUNkLFNBQWtCLEVBQ2xCLG9CQUFvQixHQUFHLEtBQUssRUFDNUIsU0FBeUIsSUFBSSxXQUFXLEVBQUU7UUFFMUMsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxRQUFRLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTO1lBQ3ZCLENBQUMsQ0FBQyxJQUFJLGVBQWUs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SixDQUFDO1FBQ0QsSUFBSSxZQUFZLEtBQUssaUJBQWlCLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixrRUFBa0UsVUFBVSxLQUFLLFFBQVEsR0FBRyxDQUM3RixDQUFDO1lBQ0YsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsTUFBTSxlQUFlLEdBQUcsWUFBWSxHQUFHLGlCQUFpQixDQUFDO1FBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLDBCQUEwQixlQUFlLDRDQUE0QyxVQUFVLEtBQUssUUFBUSxHQUFHLENBQ2hILENBQUM7UUFDRixPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgaXNDYWxsRXhjZXB0aW9uLFxuICBKc29uUnBjUHJvdmlkZXIsXG4gIFRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvblJlc3BvbnNlLFxufSBmcm9tICdldGhlcnMnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdEV4dHJhY3RvciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtZXh0cmFjdG9yJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IERhdGFTb3VyY2UsIFNlbGVjdFF1ZXJ5QnVpbGRlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5pbXBvcnQgeyBCbG9ja0luZm8gfSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXItaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7IFR4QWN0aW9uIH0gZnJvbSAnLi4vYWN0aW9ucy9kYic7XG5pbXBvcnQgeyBBZGRyZXNzVHhzRW50aXR5IH0gZnJvbSAnLi4vZW50aXRpZXMvYWRkcmVzc1R4c0VudGl0eSc7XG5pbXBvcnQgeyBFdm1UeFN0YXR1cywgRXh0cmFjdGVkVHggfSBmcm9tICcuLi9pbnRlcmZhY2VzL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIEV2bVR4RXh0cmFjdG9yIGV4dGVuZHMgQWJzdHJhY3RFeHRyYWN0b3I8XG4gIFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIEFkZHJlc3NUeHNFbnRpdHlcbj4ge1xuICByZWFkb25seSBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyO1xuICByZWFkb25seSBhY3Rpb246IFR4QWN0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgYWRkcmVzczogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVyOiBKc29uUnBjUHJvdmlkZXI7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hlY2tOb25jZUF0VG9IZWlnaHQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFkZHJlc3Mgc2hvdWxkIGJlIGxvd2VyIGNhc2UgKHdpdGhvdXQgY2hlY2tzdW0pXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYWRkcmVzczogc3RyaW5nLFxuICAgIHJwY1VybDogc3RyaW5nLFxuICAgIGF1dGhUb2tlbj86IHN0cmluZyxcbiAgICBjaGVja05vbmNlQXRUb0hlaWdodCA9IGZhbHNlLFxuICAgIGxvZ2dlcjogQWJzdHJhY3RMb2dnZXIgPSBuZXcgRHVtbXlMb2dnZXIoKSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5hZGRyZXNzID0gYWRkcmVzcztcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlcjtcbiAgICB0aGlzLmFjdGlvbiA9IG5ldyBUeEFjdGlvbihkYXRhU291cmNlLCB0aGlzLmxvZ2dlci5jaGlsZCgnVHhBY3Rpb24nKSk7XG4gICAgdGhpcy5wcm92aWRlciA9IGF1dGhUb2tlblxuICAgICAgPyBuZXcgSnNvblJwY1Byb3ZpZGVyKGAke3JwY1VybH0vJHthdXRoVG9rZW59YClcbiAgICAgIDogbmV3IEpzb25ScGNQcm92aWRlcihycGNVcmwpO1xuICAgIHRoaXMuY2hlY2tOb25jZUF0VG9IZWlnaHQgPSBjaGVja05vbmNlQXRUb0hlaWdodDtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgSWQgZm9yIGN1cnJlbnQgZXh0cmFjdG9yXG4gICAqL1xuICBnZXRJZCA9ICgpID0+IHRoaXMuaWQ7XG5cbiAgLyoqXG4gICAqIGdldHMgYmxvY2sgaWQgYW5kIHRyYW5zYWN0aW9ucyBjb3JyZXNwb25kaW5nIHRvIHRoZSBibG9jayBhbmQgc2F2ZXMgYWxsIHRyYW5zYWN0aW9uIGlkcyBpbiBkYXRhYmFzZVxuICAgKiBAcGFyYW0gdHhzXG4gICAqIEBwYXJhbSBibG9ja1xuICAgKi9cbiAgcHJvY2Vzc1RyYW5zYWN0aW9ucyA9IGFzeW5jIChcbiAgICB0eHM6IEFycmF5PFRyYW5zYWN0aW9uUmVzcG9uc2U+LFxuICAgIGJsb2NrOiBCbG9ja0luZm8sXG4gICk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICAgIGNvbnN0IGV4dHJhY3RlZFR4czogQXJyYXk8RXh0cmFjdGVkVHg+ID0gW107XG4gICAgZm9yIChjb25zdCB0eCBvZiB0eHMpIHtcbiAgICAgIGlmICh0eC5mcm9tID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IEVycm9yKCdJbXBvc3NpYmxlQmVoYXZpb3I6IFJQQyB0cmFuc2FjdGlvbnMgbXVzdCBoYXZlIGBmcm9tYC4nKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eC5oYXNoID09PSBudWxsKSB7XG4gICAgICAgIHRocm93IEVycm9yKCdJbXBvc3NpYmxlQmVoYXZpb3I6IFJQQyB0cmFuc2FjdGlvbnMgbXVzdCBoYXZlIGBoYXNoYC4nKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eC5mcm9tLnRvTG93ZXJDYXNlKCkgPT09IHRoaXMuYWRkcmVzcykge1xuICAgICAgICBsZXQgc3RhdHVzOiBFdm1UeFN0YXR1cztcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0eC53YWl0KDApO1xuICAgICAgICAgIGlmIChyZXN1bHQpIHN0YXR1cyA9IEV2bVR4U3RhdHVzLnN1Y2NlZWQ7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICAgICAgIGBJbXBvc3NpYmxlQmVoYXZpb3I6IEV2bSBUeCBbJHt0eC5oYXNofV0gaXMgaW5jbHVkZWQgaW4gYmxvY2sgWyR7YmxvY2suaGFzaH1dIGJ1dCB3YWl0aW5nIHJlc3VsdGVkIGlzIG51bGwgb3IgdW5kZWZpbmVkYCxcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoaXNDYWxsRXhjZXB0aW9uKGUpKSBzdGF0dXMgPSBFdm1UeFN0YXR1cy5mYWlsZWQ7XG4gICAgICAgICAgZWxzZSB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICAgIGV4dHJhY3RlZFR4cy5wdXNoKHtcbiAgICAgICAgICB1bnNpZ25lZEhhc2g6IFRyYW5zYWN0aW9uLmZyb20odHgpLnVuc2lnbmVkSGFzaCxcbiAgICAgICAgICBzaWduZWRIYXNoOiB0eC5oYXNoLFxuICAgICAgICAgIG5vbmNlOiB0eC5ub25jZSxcbiAgICAgICAgICBhZGRyZXNzOiB0eC5mcm9tLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgc3RhdHVzOiBzdGF0dXMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXh0cmFjdGVkVHhzLmxlbmd0aCA+IDApXG4gICAgICBhd2FpdCB0aGlzLmFjdGlvbi5zdG9yZVR4cyhleHRyYWN0ZWRUeHMsIGJsb2NrLCB0aGlzLmdldElkKCkpO1xuICAgIHJldHVybiB0cnVlO1xuICB9O1xuXG4gIC8qKlxuICAgKiBmb3JrIG9uZSBibG9jayBhbmQgcmVtb3ZlIGFsbCBzdG9yZWQgdHhJZCBmb3IgdGhpcyBibG9ja1xuICAgKiBAcGFyYW0gaGFzaDogYmxvY2sgaGFzaFxuICAgKi9cbiAgZm9ya0Jsb2NrID0gYXN5bmMgKGhhc2g6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGF3YWl0IHRoaXMuYWN0aW9uLmRlbGV0ZUJsb2NrVHhzKGhhc2gsIHRoaXMuZ2V0SWQoKSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBkYXRhYmFzZSB3aXRoIG9sZGVyIGJveGVzIHJlbGF0ZWQgdG8gdGhlIGFkZHJlc3NcbiAgICovXG4gIGluaXRpYWxpemVEYXRhID0gYXN5bmMgKCkgPT4ge1xuICAgIHJldHVybjtcbiAgfTtcblxuICAvKipcbiAgICogQnVpbGRzIGEgcXVlcnkgdGhhdCByZXR1cm5zIHVzZWQgYmxvY2tzIGJ5IHNlbGVjdGluZyB0aGUgYGJsb2NrYCBjb2x1bW4gZnJvbSB0aGUgYGV2bUFkZHJlc3NUeEVudGl0eWAgcmVwb3NpdG9yeSxcbiAgICogZmlsdGVyZWQgYnkgdGhlIHByb3ZpZGVkIGBleHRyYWN0b3JJZGBcbiAgICpcbiAgICogQHJldHVybnMgQSBxdWVyeSBidWlsZGVyIHNlbGVjdGluZyB1c2VkIGJsb2Nrc1xuICAgKi9cbiAgY3JlYXRlVXNlZEJsb2Nrc1F1ZXJ5ID0gKCk6IFNlbGVjdFF1ZXJ5QnVpbGRlcjxBZGRyZXNzVHhzRW50aXR5PiA9PlxuICAgIHRoaXMuYWN0aW9uLmNyZWF0ZVVzZWRCbG9ja3NRdWVyeSh0aGlzLmdldElkKCkpO1xuXG4gIC8qKlxuICAgKiBjaGVja3MgaWYgbm9uY2UgY2hhbmdlcyB3aXRoaW4gdGhlIHNwZWNpZmllZCBoZWlnaHQgcmFuZ2VcbiAgICpcbiAgICogQHBhcmFtIGZyb21IZWlnaHQgLSBTdGFydCBoZWlnaHQgb2YgdGhlIHJhbmdlIGJlaW5nIGV2YWx1YXRlZC5cbiAgICogQHBhcmFtIHRvSGVpZ2h0IC0gRW5kIGhlaWdodCBvZiB0aGUgcmFuZ2UgYmVpbmcgZXZhbHVhdGVkLlxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHJhbmdlIG1heSBjb250YWluIHJlbGV2YW50IHRyYW5zYWN0aW9ucyxcbiAgICogYGZhbHNlYCBpZiBpdCBpcyBndWFyYW50ZWVkIHRvIGJlIGVtcHR5LlxuICAgKi9cbiAgaGFzRXZlbnRJbkhlaWdodFJhbmdlID0gYXN5bmMgKFxuICAgIGZyb21IZWlnaHQ6IG51bWJlcixcbiAgICB0b0hlaWdodDogbnVtYmVyLFxuICApOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBjb25zdCBsYXN0RGJOb25jZSA9IGF3YWl0IHRoaXMuYWN0aW9uLmdldE5vbmNlVXBUb0hlaWdodChcbiAgICAgIHRoaXMuZ2V0SWQoKSxcbiAgICAgIHRoaXMuYWRkcmVzcyxcbiAgICAgIGZyb21IZWlnaHQsXG4gICAgKTtcblxuICAgIGxldCBuZXR3b3JrTm9uY2U6IG51bWJlcjtcbiAgICBpZiAodGhpcy5jaGVja05vbmNlQXRUb0hlaWdodCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV0d29ya05vbmNlID0gYXdhaXQgdGhpcy5wcm92aWRlci5nZXRUcmFuc2FjdGlvbkNvdW50KFxuICAgICAgICAgIHRoaXMuYWRkcmVzcyxcbiAgICAgICAgICB0b0hlaWdodCxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgTm9uY2UgYXQgaGVpZ2h0IFske3RvSGVpZ2h0fV0gaXMgWyR7bmV0d29ya05vbmNlfV1gKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGBGYWlsZWQgdG8gZmV0Y2ggbm9uY2UgYXQgaGVpZ2h0IFske3RvSGVpZ2h0fV0sIGZhbGxpbmcgYmFjayB0byBsYXRlc3Qgbm9uY2U6ICR7ZXJyb3J9YCxcbiAgICAgICAgKTtcbiAgICAgICAgbmV0d29ya05vbmNlID0gYXdhaXQgdGhpcy5wcm92aWRlci5nZXRUcmFuc2FjdGlvbkNvdW50KHRoaXMuYWRkcmVzcyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ldHdvcmtOb25jZSA9IGF3YWl0IHRoaXMucHJvdmlkZXIuZ2V0VHJhbnNhY3Rpb25Db3VudCh0aGlzLmFkZHJlc3MpO1xuICAgIH1cblxuICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgYENoZWNraW5nIHJhbmdlIFske2Zyb21IZWlnaHR9LCAke3RvSGVpZ2h0fV0gd2l0aCBkYiBub25jZSBbJHtsYXN0RGJOb25jZX1dIGFuZCB1c2luZyBuZXR3b3JrIG5vbmNlIFske25ldHdvcmtOb25jZX1dYCxcbiAgICApO1xuXG4gICAgY29uc3QgbmV4dEV4cGVjdGVkTm9uY2UgPSBsYXN0RGJOb25jZSArIDE7XG5cbiAgICBpZiAobmV0d29ya05vbmNlIDwgbmV4dEV4cGVjdGVkTm9uY2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEltcG9zc2libGVCZWhhdmlvcjogTmV4dCBuZXR3b3JrIG5vbmNlIFske25ldHdvcmtOb25jZX1dIGlzIGxlc3MgdGhhbiB0aGUgZXhwZWN0ZWQgbm9uY2UgWyR7bmV4dEV4cGVjdGVkTm9uY2V9XWAsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAobmV0d29ya05vbmNlID09PSBuZXh0RXhwZWN0ZWROb25jZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBObyByZWxhdGVkIHRyYW5zYWN0aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGZvdW5kIGluIGJsb2NrIHJhbmdlIFske2Zyb21IZWlnaHR9LCAke3RvSGVpZ2h0fV1gLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgcG9zc2libGVUeENvdW50ID0gbmV0d29ya05vbmNlIC0gbmV4dEV4cGVjdGVkTm9uY2U7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICBgSXQncyBwb3NzaWJsZSB0byBoYXZlIFske3Bvc3NpYmxlVHhDb3VudH1dIHJlbGF0ZWQgdHJhbnNhY3Rpb24ocykgaW4gYmxvY2sgcmFuZ2UgWyR7ZnJvbUhlaWdodH0sICR7dG9IZWlnaHR9XWAsXG4gICAgKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export * from './interfaces/types';
2
+ export * from './extractors/evmTxExtractor';
3
+ export * from './entities/addressTxsEntity';
4
+ export * from './actions/db';
5
+ export { default as migrations } from './migrations';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export * from './interfaces/types';
2
+ export * from './extractors/evmTxExtractor';
3
+ export * from './entities/addressTxsEntity';
4
+ export * from './actions/db';
5
+ export { default as migrations } from './migrations';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxjQUFjLENBQUM7QUFDN0IsT0FBTyxFQUFFLE9BQU8sSUFBSSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMvdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9leHRyYWN0b3JzL2V2bVR4RXh0cmFjdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vZW50aXRpZXMvYWRkcmVzc1R4c0VudGl0eSc7XG5leHBvcnQgKiBmcm9tICcuL2FjdGlvbnMvZGInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtaWdyYXRpb25zIH0gZnJvbSAnLi9taWdyYXRpb25zJztcbiJdfQ==
@@ -0,0 +1,12 @@
1
+ export interface ExtractedTx {
2
+ unsignedHash: string;
3
+ signedHash: string;
4
+ nonce: number;
5
+ address: string;
6
+ status: EvmTxStatus;
7
+ }
8
+ export declare enum EvmTxStatus {
9
+ failed = "failed",
10
+ succeed = "succeed"
11
+ }
12
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../lib/interfaces/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB"}
@@ -0,0 +1,6 @@
1
+ export var EvmTxStatus;
2
+ (function (EvmTxStatus) {
3
+ EvmTxStatus["failed"] = "failed";
4
+ EvmTxStatus["succeed"] = "succeed";
5
+ })(EvmTxStatus || (EvmTxStatus = {}));
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvaW50ZXJmYWNlcy90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxNQUFNLENBQU4sSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGdDQUFpQixDQUFBO0lBQ2pCLGtDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxXQUFXLEtBQVgsV0FBVyxRQUd0QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRXh0cmFjdGVkVHgge1xuICB1bnNpZ25lZEhhc2g6IHN0cmluZztcbiAgc2lnbmVkSGFzaDogc3RyaW5nO1xuICBub25jZTogbnVtYmVyO1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIHN0YXR1czogRXZtVHhTdGF0dXM7XG59XG5cbmV4cG9ydCBlbnVtIEV2bVR4U3RhdHVzIHtcbiAgZmFpbGVkID0gJ2ZhaWxlZCcsXG4gIHN1Y2NlZWQgPSAnc3VjY2VlZCcsXG59XG4iXX0=
@@ -0,0 +1,8 @@
1
+ import { Migration1713694851290 } from './postgres/1713694851290-migration';
2
+ import { Migration1713694799333 } from './sqlite/1713694799333-migration';
3
+ declare const _default: {
4
+ sqlite: (typeof Migration1713694799333)[];
5
+ postgres: (typeof Migration1713694851290)[];
6
+ };
7
+ export default _default;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;;;;;AAG1E,wBAGE"}
@@ -0,0 +1,9 @@
1
+ import { Migration1713694851290 } from './postgres/1713694851290-migration';
2
+ import { Migration1722346608595 } from './postgres/1722346608595-migration';
3
+ import { Migration1713694799333 } from './sqlite/1713694799333-migration';
4
+ import { Migration1722346500068 } from './sqlite/1722346500068-migration';
5
+ export default {
6
+ sqlite: [Migration1713694799333, Migration1722346500068],
7
+ postgres: [Migration1713694851290, Migration1722346608595],
8
+ };
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvbWlncmF0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxRSxlQUFlO0lBQ2IsTUFBTSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsc0JBQXNCLENBQUM7SUFDeEQsUUFBUSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsc0JBQXNCLENBQUM7Q0FDM0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pZ3JhdGlvbjE3MTM2OTQ4NTEyOTAgfSBmcm9tICcuL3Bvc3RncmVzLzE3MTM2OTQ4NTEyOTAtbWlncmF0aW9uJztcbmltcG9ydCB7IE1pZ3JhdGlvbjE3MjIzNDY2MDg1OTUgfSBmcm9tICcuL3Bvc3RncmVzLzE3MjIzNDY2MDg1OTUtbWlncmF0aW9uJztcbmltcG9ydCB7IE1pZ3JhdGlvbjE3MTM2OTQ3OTkzMzMgfSBmcm9tICcuL3NxbGl0ZS8xNzEzNjk0Nzk5MzMzLW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBNaWdyYXRpb24xNzIyMzQ2NTAwMDY4IH0gZnJvbSAnLi9zcWxpdGUvMTcyMjM0NjUwMDA2OC1taWdyYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHNxbGl0ZTogW01pZ3JhdGlvbjE3MTM2OTQ3OTkzMzMsIE1pZ3JhdGlvbjE3MjIzNDY1MDAwNjhdLFxuICBwb3N0Z3JlczogW01pZ3JhdGlvbjE3MTM2OTQ4NTEyOTAsIE1pZ3JhdGlvbjE3MjIzNDY2MDg1OTVdLFxufTtcbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { MigrationInterface, QueryRunner } from '@rosen-bridge/extended-typeorm';
2
+ export declare class Migration1713694851290 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1713694851290-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1713694851290-migration.d.ts","sourceRoot":"","sources":["../../../lib/migrations/postgres/1713694851290-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,WAAW,EACZ,MAAM,gCAAgC,CAAC;AAExC,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,IAAI,SAA4B;IAEnB,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAe3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
@@ -0,0 +1,23 @@
1
+ export class Migration1713694851290 {
2
+ name = 'Migration1713694851290';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`
5
+ CREATE TABLE "address_txs_entity" (
6
+ "id" SERIAL NOT NULL,
7
+ "unsignedHash" character varying NOT NULL,
8
+ "signedHash" character varying NOT NULL,
9
+ "nonce" integer NOT NULL,
10
+ "address" character varying NOT NULL,
11
+ "blockId" character varying NOT NULL,
12
+ "extractor" character varying NOT NULL,
13
+ CONSTRAINT "PK_3d12ab238cb8eed0354cec04ea4" PRIMARY KEY ("id")
14
+ )
15
+ `);
16
+ }
17
+ async down(queryRunner) {
18
+ await queryRunner.query(`
19
+ DROP TABLE "address_txs_entity"
20
+ `);
21
+ }
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcxMzY5NDg1MTI5MC1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWlncmF0aW9ucy9wb3N0Z3Jlcy8xNzEzNjk0ODUxMjkwLW1pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLElBQUksR0FBRyx3QkFBd0IsQ0FBQztJQUV6QixLQUFLLENBQUMsRUFBRSxDQUFDLFdBQXdCO1FBQ3RDLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7Ozs7Ozs7Ozs7U0FXbkIsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBd0I7UUFDeEMsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOztTQUVuQixDQUFDLENBQUM7SUFDVCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBNaWdyYXRpb25JbnRlcmZhY2UsXG4gIFF1ZXJ5UnVubmVyLFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuXG5leHBvcnQgY2xhc3MgTWlncmF0aW9uMTcxMzY5NDg1MTI5MCBpbXBsZW1lbnRzIE1pZ3JhdGlvbkludGVyZmFjZSB7XG4gIG5hbWUgPSAnTWlncmF0aW9uMTcxMzY5NDg1MTI5MCc7XG5cbiAgcHVibGljIGFzeW5jIHVwKHF1ZXJ5UnVubmVyOiBRdWVyeVJ1bm5lcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSBcImFkZHJlc3NfdHhzX2VudGl0eVwiIChcbiAgICAgICAgICAgICAgICBcImlkXCIgU0VSSUFMIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwidW5zaWduZWRIYXNoXCIgY2hhcmFjdGVyIHZhcnlpbmcgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJzaWduZWRIYXNoXCIgY2hhcmFjdGVyIHZhcnlpbmcgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJub25jZVwiIGludGVnZXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJhZGRyZXNzXCIgY2hhcmFjdGVyIHZhcnlpbmcgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJibG9ja0lkXCIgY2hhcmFjdGVyIHZhcnlpbmcgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJleHRyYWN0b3JcIiBjaGFyYWN0ZXIgdmFyeWluZyBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBDT05TVFJBSU5UIFwiUEtfM2QxMmFiMjM4Y2I4ZWVkMDM1NGNlYzA0ZWE0XCIgUFJJTUFSWSBLRVkgKFwiaWRcIilcbiAgICAgICAgICAgIClcbiAgICAgICAgYCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZG93bihxdWVyeVJ1bm5lcjogUXVlcnlSdW5uZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBEUk9QIFRBQkxFIFwiYWRkcmVzc190eHNfZW50aXR5XCJcbiAgICAgICAgYCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { MigrationInterface, QueryRunner } from '@rosen-bridge/extended-typeorm';
2
+ export declare class Migration1722346608595 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1722346608595-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1722346608595-migration.d.ts","sourceRoot":"","sources":["../../../lib/migrations/postgres/1722346608595-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,WAAW,EACZ,MAAM,gCAAgC,CAAC;AAExC,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,IAAI,SAA4B;IAEnB,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
@@ -0,0 +1,15 @@
1
+ export class Migration1722346608595 {
2
+ name = 'Migration1722346608595';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`
5
+ ALTER TABLE "address_txs_entity"
6
+ ADD "status" character varying NOT NULL
7
+ `);
8
+ }
9
+ async down(queryRunner) {
10
+ await queryRunner.query(`
11
+ ALTER TABLE "address_txs_entity" DROP COLUMN "status"
12
+ `);
13
+ }
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcyMjM0NjYwODU5NS1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWlncmF0aW9ucy9wb3N0Z3Jlcy8xNzIyMzQ2NjA4NTk1LW1pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLElBQUksR0FBRyx3QkFBd0IsQ0FBQztJQUV6QixLQUFLLENBQUMsRUFBRSxDQUFDLFdBQXdCO1FBQ3RDLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7O09BR3JCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQXdCO1FBQ3hDLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7T0FFckIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTWlncmF0aW9uSW50ZXJmYWNlLFxuICBRdWVyeVJ1bm5lcixcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9leHRlbmRlZC10eXBlb3JtJztcblxuZXhwb3J0IGNsYXNzIE1pZ3JhdGlvbjE3MjIzNDY2MDg1OTUgaW1wbGVtZW50cyBNaWdyYXRpb25JbnRlcmZhY2Uge1xuICBuYW1lID0gJ01pZ3JhdGlvbjE3MjIzNDY2MDg1OTUnO1xuXG4gIHB1YmxpYyBhc3luYyB1cChxdWVyeVJ1bm5lcjogUXVlcnlSdW5uZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgQUxURVIgVEFCTEUgXCJhZGRyZXNzX3R4c19lbnRpdHlcIlxuICAgICAgICAgIEFERCBcInN0YXR1c1wiIGNoYXJhY3RlciB2YXJ5aW5nIE5PVCBOVUxMXG4gICAgICBgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkb3duKHF1ZXJ5UnVubmVyOiBRdWVyeVJ1bm5lcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICBBTFRFUiBUQUJMRSBcImFkZHJlc3NfdHhzX2VudGl0eVwiIERST1AgQ09MVU1OIFwic3RhdHVzXCJcbiAgICAgIGApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ import { MigrationInterface, QueryRunner } from '@rosen-bridge/extended-typeorm';
2
+ export declare class Migration1713694799333 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1713694799333-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1713694799333-migration.d.ts","sourceRoot":"","sources":["../../../lib/migrations/sqlite/1713694799333-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,WAAW,EACZ,MAAM,gCAAgC,CAAC;AAExC,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,IAAI,SAA4B;IAEnB,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAc3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
@@ -0,0 +1,22 @@
1
+ export class Migration1713694799333 {
2
+ name = 'Migration1713694799333';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`
5
+ CREATE TABLE "address_txs_entity" (
6
+ "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
7
+ "unsignedHash" varchar NOT NULL,
8
+ "signedHash" varchar NOT NULL,
9
+ "nonce" integer NOT NULL,
10
+ "address" varchar NOT NULL,
11
+ "blockId" varchar NOT NULL,
12
+ "extractor" varchar NOT NULL
13
+ )
14
+ `);
15
+ }
16
+ async down(queryRunner) {
17
+ await queryRunner.query(`
18
+ DROP TABLE "address_txs_entity"
19
+ `);
20
+ }
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcxMzY5NDc5OTMzMy1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWlncmF0aW9ucy9zcWxpdGUvMTcxMzY5NDc5OTMzMy1taWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxJQUFJLEdBQUcsd0JBQXdCLENBQUM7SUFFekIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUF3QjtRQUN0QyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7Ozs7Ozs7Ozs7U0FVbkIsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBd0I7UUFDeEMsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOztTQUVuQixDQUFDLENBQUM7SUFDVCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBNaWdyYXRpb25JbnRlcmZhY2UsXG4gIFF1ZXJ5UnVubmVyLFxufSBmcm9tICdAcm9zZW4tYnJpZGdlL2V4dGVuZGVkLXR5cGVvcm0nO1xuXG5leHBvcnQgY2xhc3MgTWlncmF0aW9uMTcxMzY5NDc5OTMzMyBpbXBsZW1lbnRzIE1pZ3JhdGlvbkludGVyZmFjZSB7XG4gIG5hbWUgPSAnTWlncmF0aW9uMTcxMzY5NDc5OTMzMyc7XG5cbiAgcHVibGljIGFzeW5jIHVwKHF1ZXJ5UnVubmVyOiBRdWVyeVJ1bm5lcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIENSRUFURSBUQUJMRSBcImFkZHJlc3NfdHhzX2VudGl0eVwiIChcbiAgICAgICAgICAgICAgICBcImlkXCIgaW50ZWdlciBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5UIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwidW5zaWduZWRIYXNoXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInNpZ25lZEhhc2hcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwibm9uY2VcIiBpbnRlZ2VyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYWRkcmVzc1wiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJibG9ja0lkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImV4dHJhY3RvclwiIHZhcmNoYXIgTk9UIE5VTExcbiAgICAgICAgICAgIClcbiAgICAgICAgYCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZG93bihxdWVyeVJ1bm5lcjogUXVlcnlSdW5uZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBEUk9QIFRBQkxFIFwiYWRkcmVzc190eHNfZW50aXR5XCJcbiAgICAgICAgYCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { MigrationInterface, QueryRunner } from '@rosen-bridge/extended-typeorm';
2
+ export declare class Migration1722346500068 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1722346500068-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1722346500068-migration.d.ts","sourceRoot":"","sources":["../../../lib/migrations/sqlite/1722346500068-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,WAAW,EACZ,MAAM,gCAAgC,CAAC;AAExC,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D,IAAI,SAA4B;IAEnB,EAAE,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAuC3D"}
@@ -0,0 +1,85 @@
1
+ export class Migration1722346500068 {
2
+ name = 'Migration1722346500068';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`
5
+ CREATE TABLE "temporary_address_txs_entity" (
6
+ "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
7
+ "unsignedHash" varchar NOT NULL,
8
+ "signedHash" varchar NOT NULL,
9
+ "nonce" integer NOT NULL,
10
+ "address" varchar NOT NULL,
11
+ "blockId" varchar NOT NULL,
12
+ "extractor" varchar NOT NULL,
13
+ "status" varchar NOT NULL
14
+ )
15
+ `);
16
+ await queryRunner.query(`
17
+ INSERT INTO "temporary_address_txs_entity"(
18
+ "id",
19
+ "unsignedHash",
20
+ "signedHash",
21
+ "nonce",
22
+ "address",
23
+ "blockId",
24
+ "extractor",
25
+ "status"
26
+ )
27
+ SELECT "id",
28
+ "unsignedHash",
29
+ "signedHash",
30
+ "nonce",
31
+ "address",
32
+ "blockId",
33
+ "extractor",
34
+ 'succeed'
35
+ FROM "address_txs_entity"
36
+ `);
37
+ await queryRunner.query(`
38
+ DROP TABLE "address_txs_entity"
39
+ `);
40
+ await queryRunner.query(`
41
+ ALTER TABLE "temporary_address_txs_entity"
42
+ RENAME TO "address_txs_entity"
43
+ `);
44
+ }
45
+ async down(queryRunner) {
46
+ await queryRunner.query(`
47
+ ALTER TABLE "address_txs_entity"
48
+ RENAME TO "temporary_address_txs_entity"
49
+ `);
50
+ await queryRunner.query(`
51
+ CREATE TABLE "address_txs_entity" (
52
+ "id" integer PRIMARY KEY AUTOINCREMENT NOT NULL,
53
+ "unsignedHash" varchar NOT NULL,
54
+ "signedHash" varchar NOT NULL,
55
+ "nonce" integer NOT NULL,
56
+ "address" varchar NOT NULL,
57
+ "blockId" varchar NOT NULL,
58
+ "extractor" varchar NOT NULL
59
+ )
60
+ `);
61
+ await queryRunner.query(`
62
+ INSERT INTO "address_txs_entity"(
63
+ "id",
64
+ "unsignedHash",
65
+ "signedHash",
66
+ "nonce",
67
+ "address",
68
+ "blockId",
69
+ "extractor"
70
+ )
71
+ SELECT "id",
72
+ "unsignedHash",
73
+ "signedHash",
74
+ "nonce",
75
+ "address",
76
+ "blockId",
77
+ "extractor"
78
+ FROM "temporary_address_txs_entity"
79
+ `);
80
+ await queryRunner.query(`
81
+ DROP TABLE "temporary_address_txs_entity"
82
+ `);
83
+ }
84
+ }
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTcyMjM0NjUwMDA2OC1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWlncmF0aW9ucy9zcWxpdGUvMTcyMjM0NjUwMDA2OC1taWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxJQUFJLEdBQUcsd0JBQXdCLENBQUM7SUFFekIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUF3QjtRQUN0QyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7Ozs7Ozs7Ozs7O1NBV25CLENBQUMsQ0FBQztRQUNQLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0FvQm5CLENBQUMsQ0FBQztRQUNQLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7U0FFbkIsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOzs7U0FHbkIsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBd0I7UUFDeEMsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOzs7U0FHbkIsQ0FBQyxDQUFDO1FBQ1AsTUFBTSxXQUFXLENBQUMsS0FBSyxDQUFDOzs7Ozs7Ozs7O1NBVW5CLENBQUMsQ0FBQztRQUNQLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1NBa0JuQixDQUFDLENBQUM7UUFDUCxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7O1NBRW5CLENBQUMsQ0FBQztJQUNULENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE1pZ3JhdGlvbkludGVyZmFjZSxcbiAgUXVlcnlSdW5uZXIsXG59IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5cbmV4cG9ydCBjbGFzcyBNaWdyYXRpb24xNzIyMzQ2NTAwMDY4IGltcGxlbWVudHMgTWlncmF0aW9uSW50ZXJmYWNlIHtcbiAgbmFtZSA9ICdNaWdyYXRpb24xNzIyMzQ2NTAwMDY4JztcblxuICBwdWJsaWMgYXN5bmMgdXAocXVlcnlSdW5uZXI6IFF1ZXJ5UnVubmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgQ1JFQVRFIFRBQkxFIFwidGVtcG9yYXJ5X2FkZHJlc3NfdHhzX2VudGl0eVwiIChcbiAgICAgICAgICAgICAgICBcImlkXCIgaW50ZWdlciBQUklNQVJZIEtFWSBBVVRPSU5DUkVNRU5UIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwidW5zaWduZWRIYXNoXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInNpZ25lZEhhc2hcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwibm9uY2VcIiBpbnRlZ2VyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiYWRkcmVzc1wiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJibG9ja0lkXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImV4dHJhY3RvclwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJzdGF0dXNcIiB2YXJjaGFyIE5PVCBOVUxMXG4gICAgICAgICAgICApXG4gICAgICAgIGApO1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIElOU0VSVCBJTlRPIFwidGVtcG9yYXJ5X2FkZHJlc3NfdHhzX2VudGl0eVwiKFxuICAgICAgICAgICAgICAgICAgICBcImlkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidW5zaWduZWRIYXNoXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic2lnbmVkSGFzaFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5vbmNlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYWRkcmVzc1wiLFxuICAgICAgICAgICAgICAgICAgICBcImJsb2NrSWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJleHRyYWN0b3JcIixcbiAgICAgICAgICAgICAgICAgICAgXCJzdGF0dXNcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIFNFTEVDVCBcImlkXCIsXG4gICAgICAgICAgICAgICAgXCJ1bnNpZ25lZEhhc2hcIixcbiAgICAgICAgICAgICAgICBcInNpZ25lZEhhc2hcIixcbiAgICAgICAgICAgICAgICBcIm5vbmNlXCIsXG4gICAgICAgICAgICAgICAgXCJhZGRyZXNzXCIsXG4gICAgICAgICAgICAgICAgXCJibG9ja0lkXCIsXG4gICAgICAgICAgICAgICAgXCJleHRyYWN0b3JcIixcbiAgICAgICAgICAgICAgICAnc3VjY2VlZCdcbiAgICAgICAgICAgIEZST00gXCJhZGRyZXNzX3R4c19lbnRpdHlcIlxuICAgICAgICBgKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBEUk9QIFRBQkxFIFwiYWRkcmVzc190eHNfZW50aXR5XCJcbiAgICAgICAgYCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgQUxURVIgVEFCTEUgXCJ0ZW1wb3JhcnlfYWRkcmVzc190eHNfZW50aXR5XCJcbiAgICAgICAgICAgICAgICBSRU5BTUUgVE8gXCJhZGRyZXNzX3R4c19lbnRpdHlcIlxuICAgICAgICBgKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkb3duKHF1ZXJ5UnVubmVyOiBRdWVyeVJ1bm5lcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnF1ZXJ5KGBcbiAgICAgICAgICAgIEFMVEVSIFRBQkxFIFwiYWRkcmVzc190eHNfZW50aXR5XCJcbiAgICAgICAgICAgICAgICBSRU5BTUUgVE8gXCJ0ZW1wb3JhcnlfYWRkcmVzc190eHNfZW50aXR5XCJcbiAgICAgICAgYCk7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgQ1JFQVRFIFRBQkxFIFwiYWRkcmVzc190eHNfZW50aXR5XCIgKFxuICAgICAgICAgICAgICAgIFwiaWRcIiBpbnRlZ2VyIFBSSU1BUlkgS0VZIEFVVE9JTkNSRU1FTlQgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJ1bnNpZ25lZEhhc2hcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwic2lnbmVkSGFzaFwiIHZhcmNoYXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJub25jZVwiIGludGVnZXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJhZGRyZXNzXCIgdmFyY2hhciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcImJsb2NrSWRcIiB2YXJjaGFyIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwiZXh0cmFjdG9yXCIgdmFyY2hhciBOT1QgTlVMTFxuICAgICAgICAgICAgKVxuICAgICAgICBgKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBJTlNFUlQgSU5UTyBcImFkZHJlc3NfdHhzX2VudGl0eVwiKFxuICAgICAgICAgICAgICAgICAgICBcImlkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidW5zaWduZWRIYXNoXCIsXG4gICAgICAgICAgICAgICAgICAgIFwic2lnbmVkSGFzaFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5vbmNlXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiYWRkcmVzc1wiLFxuICAgICAgICAgICAgICAgICAgICBcImJsb2NrSWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJleHRyYWN0b3JcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIFNFTEVDVCBcImlkXCIsXG4gICAgICAgICAgICAgICAgXCJ1bnNpZ25lZEhhc2hcIixcbiAgICAgICAgICAgICAgICBcInNpZ25lZEhhc2hcIixcbiAgICAgICAgICAgICAgICBcIm5vbmNlXCIsXG4gICAgICAgICAgICAgICAgXCJhZGRyZXNzXCIsXG4gICAgICAgICAgICAgICAgXCJibG9ja0lkXCIsXG4gICAgICAgICAgICAgICAgXCJleHRyYWN0b3JcIlxuICAgICAgICAgICAgRlJPTSBcInRlbXBvcmFyeV9hZGRyZXNzX3R4c19lbnRpdHlcIlxuICAgICAgICBgKTtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBEUk9QIFRBQkxFIFwidGVtcG9yYXJ5X2FkZHJlc3NfdHhzX2VudGl0eVwiXG4gICAgICAgIGApO1xuICB9XG59XG4iXX0=