@rosen-bridge/tx-pot 1.0.3 → 2.0.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/CHANGELOG.md +27 -0
- package/README.md +8 -8
- package/dist/db/entities/transactionEntity.d.ts +15 -0
- package/dist/db/entities/{TransactionEntity.d.ts.map → transactionEntity.d.ts.map} +1 -1
- package/dist/db/entities/transactionEntity.js +81 -0
- package/dist/db/migrations/index.d.ts +3 -3
- package/dist/db/migrations/index.js +3 -3
- package/dist/db/migrations/postgres/1706350644686-migration.d.ts +4 -4
- package/dist/db/migrations/postgres/1706350644686-migration.d.ts.map +1 -1
- package/dist/db/migrations/postgres/1706350644686-migration.js +8 -8
- package/dist/db/migrations/sqlite/1706007154531-migration.d.ts +4 -4
- package/dist/db/migrations/sqlite/1706007154531-migration.d.ts.map +1 -1
- package/dist/db/migrations/sqlite/1706007154531-migration.js +8 -8
- package/dist/index.d.ts +4 -4
- package/dist/index.js +4 -4
- package/dist/network/abstractPotChainManager.d.ts +36 -0
- package/dist/network/{AbstractPotChainManager.d.ts.map → abstractPotChainManager.d.ts.map} +1 -1
- package/dist/network/{AbstractPotChainManager.js → abstractPotChainManager.js} +3 -2
- package/dist/transaction/txPot.d.ts +212 -0
- package/dist/transaction/txPot.d.ts.map +1 -0
- package/dist/transaction/{TxPot.js → txPot.js} +2 -2
- package/dist/transaction/types.d.ts +21 -24
- package/dist/transaction/types.d.ts.map +1 -1
- package/dist/transaction/types.js +13 -13
- package/dist/transaction/utils.d.ts +2 -4
- package/dist/transaction/utils.d.ts.map +1 -1
- package/dist/transaction/utils.js +48 -43
- package/package.json +25 -21
- package/.eslintignore +0 -1
- package/dist/db/entities/TransactionEntity.d.ts +0 -15
- package/dist/db/entities/TransactionEntity.js +0 -125
- package/dist/network/AbstractPotChainManager.d.ts +0 -39
- package/dist/transaction/TxPot.d.ts +0 -284
- package/dist/transaction/TxPot.d.ts.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/lib/db/entities/TransactionEntity.ts +0 -44
- package/lib/db/migrations/index.ts +0 -7
- package/lib/db/migrations/postgres/1706350644686-migration.ts +0 -31
- package/lib/db/migrations/sqlite/1706007154531-migration.ts +0 -31
- package/lib/index.ts +0 -5
- package/lib/network/AbstractPotChainManager.ts +0 -44
- package/lib/transaction/TxPot.ts +0 -728
- package/lib/transaction/types.ts +0 -46
- package/lib/transaction/utils.ts +0 -59
- package/tests/.gitkeep +0 -0
- package/tests/db/dataSource.mock.ts +0 -18
- package/tests/network/TestPotChainManager.ts +0 -23
- package/tests/transaction/TestTxPot.ts +0 -32
- package/tests/transaction/TxPot.spec.ts +0 -1881
- package/tests/transaction/testData.ts +0 -84
- package/tsconfig.build.json +0 -8
- package/tsconfig.build.tsbuildinfo +0 -1
- package/tsconfig.json +0 -9
- package/vitest.config.ts +0 -13
package/lib/transaction/types.ts
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
import { TransactionEntity } from '../db/entities/TransactionEntity';
|
|
2
|
-
|
|
3
|
-
export type ChainRequiredConfirmations = Record<string, number>; // tx type => required number
|
|
4
|
-
export type RequiredConfirmations = Record<string, ChainRequiredConfirmations>;
|
|
5
|
-
|
|
6
|
-
export type ValidatorFunction = (tx: TransactionEntity) => Promise<boolean>;
|
|
7
|
-
export type CallbackFunction = (
|
|
8
|
-
tx: TransactionEntity,
|
|
9
|
-
newStatus: TransactionStatus
|
|
10
|
-
) => Promise<void>;
|
|
11
|
-
|
|
12
|
-
export enum TransactionStatus {
|
|
13
|
-
APPROVED = 'approved',
|
|
14
|
-
IN_SIGN = 'in-sign',
|
|
15
|
-
SIGN_FAILED = 'sign-failed',
|
|
16
|
-
SIGNED = 'signed',
|
|
17
|
-
SENT = 'sent',
|
|
18
|
-
INVALID = 'invalid',
|
|
19
|
-
COMPLETED = 'completed',
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export enum SigningStatus {
|
|
23
|
-
Signed,
|
|
24
|
-
UnSigned,
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export type FieldValue<T> = T | Array<T>;
|
|
28
|
-
export interface FieldOption<T> {
|
|
29
|
-
not: boolean;
|
|
30
|
-
value: FieldValue<T>;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export interface TxOptions {
|
|
34
|
-
txId?: FieldValue<string>;
|
|
35
|
-
chain?: string;
|
|
36
|
-
txType?: string;
|
|
37
|
-
status?: FieldOption<TransactionStatus>;
|
|
38
|
-
failedInSign?: boolean;
|
|
39
|
-
extra?: FieldValue<string | null>;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export class UnregisteredChain extends Error {
|
|
43
|
-
constructor(msg: string) {
|
|
44
|
-
super('UnregisteredChain: ' + msg);
|
|
45
|
-
}
|
|
46
|
-
}
|
package/lib/transaction/utils.ts
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { In, Not } from 'typeorm';
|
|
2
|
-
import { TxOptions } from './types';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* converts options for fetching txs to typeorm clause
|
|
6
|
-
* @param options
|
|
7
|
-
* @returns
|
|
8
|
-
*/
|
|
9
|
-
export const txOptionToClause = (options: TxOptions) => {
|
|
10
|
-
const clause: Record<string, any> = {};
|
|
11
|
-
|
|
12
|
-
// add txId clause
|
|
13
|
-
if (typeof options.txId === 'string') {
|
|
14
|
-
clause.txId = options.txId;
|
|
15
|
-
} else if (Array.isArray(options.txId)) {
|
|
16
|
-
clause.txId = In(options.txId);
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// add chain clause
|
|
20
|
-
if (typeof options.chain === 'string') {
|
|
21
|
-
clause.chain = options.chain;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// add txType clause
|
|
25
|
-
if (typeof options.txType === 'string') {
|
|
26
|
-
clause.txType = options.txType;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// add status clause
|
|
30
|
-
if (options.status) {
|
|
31
|
-
if (typeof options.status.value === 'string') {
|
|
32
|
-
if (options.status.not) {
|
|
33
|
-
clause.status = Not(options.status.value);
|
|
34
|
-
} else {
|
|
35
|
-
clause.status = options.status.value;
|
|
36
|
-
}
|
|
37
|
-
} else if (Array.isArray(options.status.value)) {
|
|
38
|
-
if (options.status.not) {
|
|
39
|
-
clause.status = Not(In(options.status.value));
|
|
40
|
-
} else {
|
|
41
|
-
clause.status = In(options.status.value);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// add failedInSign clause
|
|
47
|
-
if (typeof options.failedInSign === 'boolean') {
|
|
48
|
-
clause.failedInSign = options.failedInSign;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// add extra clause
|
|
52
|
-
if (typeof options.extra === 'string') {
|
|
53
|
-
clause.extra = options.extra;
|
|
54
|
-
} else if (Array.isArray(options.extra)) {
|
|
55
|
-
clause.extra = In(options.extra);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return clause;
|
|
59
|
-
};
|
package/tests/.gitkeep
DELETED
|
File without changes
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { DataSource } from 'typeorm';
|
|
2
|
-
import { TransactionEntity, migrations } from '../../lib';
|
|
3
|
-
|
|
4
|
-
export const mockDataSource = async () => {
|
|
5
|
-
const testDataSource = new DataSource({
|
|
6
|
-
type: 'sqlite',
|
|
7
|
-
database: ':memory:',
|
|
8
|
-
entities: [TransactionEntity],
|
|
9
|
-
migrations: [...migrations.sqlite],
|
|
10
|
-
synchronize: false,
|
|
11
|
-
logging: false,
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
await testDataSource.initialize();
|
|
15
|
-
await testDataSource.runMigrations();
|
|
16
|
-
|
|
17
|
-
return testDataSource;
|
|
18
|
-
};
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { AbstractPotChainManager, SigningStatus } from '../../lib';
|
|
2
|
-
|
|
3
|
-
export class TestPotChainManager implements AbstractPotChainManager {
|
|
4
|
-
notImplemented = () => {
|
|
5
|
-
throw Error('Not implemented');
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
getHeight: () => Promise<number> = this.notImplemented;
|
|
9
|
-
|
|
10
|
-
getTxRequiredConfirmation: (txType: string) => number = this.notImplemented;
|
|
11
|
-
|
|
12
|
-
getTxConfirmation: (txId: string) => Promise<number> = this.notImplemented;
|
|
13
|
-
|
|
14
|
-
isTxValid: (
|
|
15
|
-
serializedTx: string,
|
|
16
|
-
signingStatus: SigningStatus
|
|
17
|
-
) => Promise<boolean> = this.notImplemented;
|
|
18
|
-
|
|
19
|
-
submitTransaction: (serializedTx: string) => Promise<void> =
|
|
20
|
-
this.notImplemented;
|
|
21
|
-
|
|
22
|
-
isTxInMempool: (txId: string) => Promise<boolean> = this.notImplemented;
|
|
23
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { DataSource } from 'typeorm';
|
|
2
|
-
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
3
|
-
import { TransactionEntity, TransactionStatus, TxPot } from '../../lib';
|
|
4
|
-
|
|
5
|
-
export class TestTxPot extends TxPot {
|
|
6
|
-
protected static instance: TestTxPot;
|
|
7
|
-
|
|
8
|
-
public static setup = (
|
|
9
|
-
dataSource: DataSource,
|
|
10
|
-
logger?: AbstractLogger
|
|
11
|
-
): TestTxPot => {
|
|
12
|
-
TestTxPot.instance = new TestTxPot(dataSource, logger);
|
|
13
|
-
return TestTxPot.instance;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
callSetTransactionAsInvalid = async (tx: TransactionEntity): Promise<void> =>
|
|
17
|
-
this.setTransactionAsInvalid(tx);
|
|
18
|
-
|
|
19
|
-
callValidateTx = async (tx: TransactionEntity): Promise<boolean> =>
|
|
20
|
-
this.validateTx(tx);
|
|
21
|
-
|
|
22
|
-
callSetTxStatus = async (
|
|
23
|
-
tx: TransactionEntity,
|
|
24
|
-
status: TransactionStatus
|
|
25
|
-
): Promise<void> => this.setTxStatus(tx, status);
|
|
26
|
-
|
|
27
|
-
callProcessSignedTx = async (tx: TransactionEntity): Promise<void> =>
|
|
28
|
-
this.processSignedTx(tx);
|
|
29
|
-
|
|
30
|
-
callProcessesSentTx = async (tx: TransactionEntity): Promise<void> =>
|
|
31
|
-
this.processesSentTx(tx);
|
|
32
|
-
}
|