@rosen-bridge/abstract-extractor 2.1.0 → 2.1.1

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 (127) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/package.json +14 -7
  3. package/.eslintignore +0 -1
  4. package/dist/lib/abstractExtractor.d.ts +0 -25
  5. package/dist/lib/abstractExtractor.d.ts.map +0 -1
  6. package/dist/lib/abstractExtractor.js +0 -3
  7. package/dist/lib/constants.d.ts +0 -4
  8. package/dist/lib/constants.d.ts.map +0 -1
  9. package/dist/lib/constants.js +0 -4
  10. package/dist/lib/ergo/AbstractErgoExtractor.d.ts +0 -80
  11. package/dist/lib/ergo/AbstractErgoExtractor.d.ts.map +0 -1
  12. package/dist/lib/ergo/AbstractErgoExtractor.js +0 -142
  13. package/dist/lib/ergo/AbstractErgoExtractorAction.d.ts +0 -92
  14. package/dist/lib/ergo/AbstractErgoExtractorAction.d.ts.map +0 -1
  15. package/dist/lib/ergo/AbstractErgoExtractorAction.js +0 -222
  16. package/dist/lib/ergo/AbstractErgoExtractorEntity.d.ts +0 -11
  17. package/dist/lib/ergo/AbstractErgoExtractorEntity.d.ts.map +0 -1
  18. package/dist/lib/ergo/AbstractErgoExtractorEntity.js +0 -57
  19. package/dist/lib/ergo/index.d.ts +0 -10
  20. package/dist/lib/ergo/index.d.ts.map +0 -1
  21. package/dist/lib/ergo/index.js +0 -10
  22. package/dist/lib/ergo/initializable/AbstractInitializable.d.ts +0 -48
  23. package/dist/lib/ergo/initializable/AbstractInitializable.d.ts.map +0 -1
  24. package/dist/lib/ergo/initializable/AbstractInitializable.js +0 -163
  25. package/dist/lib/ergo/initializable/AbstractInitializableAction.d.ts +0 -14
  26. package/dist/lib/ergo/initializable/AbstractInitializableAction.d.ts.map +0 -1
  27. package/dist/lib/ergo/initializable/AbstractInitializableAction.js +0 -16
  28. package/dist/lib/ergo/initializable/index.d.ts +0 -3
  29. package/dist/lib/ergo/initializable/index.d.ts.map +0 -1
  30. package/dist/lib/ergo/initializable/index.js +0 -3
  31. package/dist/lib/ergo/interfaces.d.ts +0 -47
  32. package/dist/lib/ergo/interfaces.d.ts.map +0 -1
  33. package/dist/lib/ergo/interfaces.js +0 -8
  34. package/dist/lib/ergo/network/AbstractNetwork.d.ts +0 -26
  35. package/dist/lib/ergo/network/AbstractNetwork.d.ts.map +0 -1
  36. package/dist/lib/ergo/network/AbstractNetwork.js +0 -3
  37. package/dist/lib/ergo/network/ExplorerNetwork.d.ts +0 -74
  38. package/dist/lib/ergo/network/ExplorerNetwork.d.ts.map +0 -1
  39. package/dist/lib/ergo/network/ExplorerNetwork.js +0 -185
  40. package/dist/lib/ergo/network/NodeNetwork.d.ts +0 -60
  41. package/dist/lib/ergo/network/NodeNetwork.d.ts.map +0 -1
  42. package/dist/lib/ergo/network/NodeNetwork.js +0 -131
  43. package/dist/lib/ergo/utils.d.ts +0 -8
  44. package/dist/lib/ergo/utils.d.ts.map +0 -1
  45. package/dist/lib/ergo/utils.js +0 -16
  46. package/dist/lib/index.d.ts +0 -4
  47. package/dist/lib/index.d.ts.map +0 -1
  48. package/dist/lib/index.js +0 -4
  49. package/dist/tests/AbstractErgoExtractor.mock.d.ts +0 -11
  50. package/dist/tests/AbstractErgoExtractor.mock.d.ts.map +0 -1
  51. package/dist/tests/AbstractErgoExtractor.mock.js +0 -11
  52. package/dist/tests/AbstractErgoExtractor.spec.d.ts +0 -2
  53. package/dist/tests/AbstractErgoExtractor.spec.d.ts.map +0 -1
  54. package/dist/tests/AbstractErgoExtractor.spec.js +0 -240
  55. package/dist/tests/AbstractErgoExtractorAction.mock.d.ts +0 -15
  56. package/dist/tests/AbstractErgoExtractorAction.mock.d.ts.map +0 -1
  57. package/dist/tests/AbstractErgoExtractorAction.mock.js +0 -27
  58. package/dist/tests/AbstractErgoExtractorAction.spec.d.ts +0 -2
  59. package/dist/tests/AbstractErgoExtractorAction.spec.d.ts.map +0 -1
  60. package/dist/tests/AbstractErgoExtractorAction.spec.js +0 -221
  61. package/dist/tests/initializable/AbstractInitializable.mock.d.ts +0 -61
  62. package/dist/tests/initializable/AbstractInitializable.mock.d.ts.map +0 -1
  63. package/dist/tests/initializable/AbstractInitializable.mock.js +0 -18
  64. package/dist/tests/initializable/AbstractInitializable.spec.d.ts +0 -2
  65. package/dist/tests/initializable/AbstractInitializable.spec.d.ts.map +0 -1
  66. package/dist/tests/initializable/AbstractInitializable.spec.js +0 -299
  67. package/dist/tests/initializable/AbstractInitializableAction.mock.d.ts +0 -15
  68. package/dist/tests/initializable/AbstractInitializableAction.mock.d.ts.map +0 -1
  69. package/dist/tests/initializable/AbstractInitializableAction.mock.js +0 -27
  70. package/dist/tests/initializable/AbstractInitializableAction.spec.d.ts +0 -2
  71. package/dist/tests/initializable/AbstractInitializableAction.spec.d.ts.map +0 -1
  72. package/dist/tests/initializable/AbstractInitializableAction.spec.js +0 -54
  73. package/dist/tests/initializable/testData.d.ts +0 -94
  74. package/dist/tests/initializable/testData.d.ts.map +0 -1
  75. package/dist/tests/initializable/testData.js +0 -235
  76. package/dist/tests/network/ExplorerNetwork.spec.d.ts +0 -2
  77. package/dist/tests/network/ExplorerNetwork.spec.d.ts.map +0 -1
  78. package/dist/tests/network/ExplorerNetwork.spec.js +0 -61
  79. package/dist/tests/network/NodeNetwork.spec.d.ts +0 -2
  80. package/dist/tests/network/NodeNetwork.spec.d.ts.map +0 -1
  81. package/dist/tests/network/NodeNetwork.spec.js +0 -48
  82. package/dist/tests/network/testData.d.ts +0 -752
  83. package/dist/tests/network/testData.d.ts.map +0 -1
  84. package/dist/tests/network/testData.js +0 -1401
  85. package/dist/tests/testData.d.ts +0 -32
  86. package/dist/tests/testData.d.ts.map +0 -1
  87. package/dist/tests/testData.js +0 -121
  88. package/dist/tests/testUtils.d.ts +0 -9
  89. package/dist/tests/testUtils.d.ts.map +0 -1
  90. package/dist/tests/testUtils.js +0 -31
  91. package/dist/tsconfig.tsbuildinfo +0 -1
  92. package/dist/vitest.config.d.ts +0 -3
  93. package/dist/vitest.config.d.ts.map +0 -1
  94. package/dist/vitest.config.js +0 -18
  95. package/lib/abstractExtractor.ts +0 -31
  96. package/lib/constants.ts +0 -3
  97. package/lib/ergo/AbstractErgoExtractor.ts +0 -227
  98. package/lib/ergo/AbstractErgoExtractorAction.ts +0 -319
  99. package/lib/ergo/AbstractErgoExtractorEntity.ts +0 -32
  100. package/lib/ergo/index.ts +0 -9
  101. package/lib/ergo/initializable/AbstractInitializable.ts +0 -228
  102. package/lib/ergo/initializable/AbstractInitializableAction.ts +0 -33
  103. package/lib/ergo/initializable/index.ts +0 -2
  104. package/lib/ergo/interfaces.ts +0 -51
  105. package/lib/ergo/network/AbstractNetwork.ts +0 -29
  106. package/lib/ergo/network/ExplorerNetwork.ts +0 -237
  107. package/lib/ergo/network/NodeNetwork.ts +0 -169
  108. package/lib/ergo/utils.ts +0 -15
  109. package/lib/index.ts +0 -3
  110. package/tests/AbstractErgoExtractor.mock.ts +0 -33
  111. package/tests/AbstractErgoExtractor.spec.ts +0 -284
  112. package/tests/AbstractErgoExtractorAction.mock.ts +0 -45
  113. package/tests/AbstractErgoExtractorAction.spec.ts +0 -268
  114. package/tests/initializable/AbstractInitializable.mock.ts +0 -44
  115. package/tests/initializable/AbstractInitializable.spec.ts +0 -386
  116. package/tests/initializable/AbstractInitializableAction.mock.ts +0 -45
  117. package/tests/initializable/AbstractInitializableAction.spec.ts +0 -64
  118. package/tests/initializable/testData.ts +0 -283
  119. package/tests/network/ExplorerNetwork.spec.ts +0 -73
  120. package/tests/network/NodeNetwork.spec.ts +0 -56
  121. package/tests/network/testData.ts +0 -1708
  122. package/tests/testData.ts +0 -140
  123. package/tests/testUtils.ts +0 -22
  124. package/tsconfig.build.json +0 -9
  125. package/tsconfig.build.tsbuildinfo +0 -1
  126. package/tsconfig.json +0 -9
  127. package/vitest.config.ts +0 -18
@@ -1,131 +0,0 @@
1
- import ergoNodeClientFactory from '@rosen-clients/ergo-node';
2
- import { AbstractNetwork } from './AbstractNetwork';
3
- export class NodeNetwork extends AbstractNetwork {
4
- api;
5
- constructor(url) {
6
- super();
7
- this.api = ergoNodeClientFactory(url);
8
- }
9
- /**
10
- * convert node api boxes to ErgoBox interface
11
- * @param box
12
- * @returns ErgoBox
13
- */
14
- convertBox = async (box) => {
15
- const tx = await await this.api.getTxById(box.transactionId);
16
- const spendInfo = box.spentTransactionId
17
- ? await this.getSpendingInfo(box.boxId, box.spentTransactionId)
18
- : undefined;
19
- return {
20
- transactionId: box.transactionId || '',
21
- index: box.index || 0,
22
- value: box.value || 0n,
23
- ergoTree: box.ergoTree || '',
24
- creationHeight: box.creationHeight || 0,
25
- inclusionHeight: tx.inclusionHeight,
26
- assets: box.assets || [],
27
- additionalRegisters: box.additionalRegisters,
28
- boxId: box.boxId || '',
29
- blockId: tx.blockId,
30
- spentBlockId: spendInfo?.hash,
31
- spentHeight: spendInfo?.height,
32
- spentTransactionId: box.spentTransactionId,
33
- spentIndex: spendInfo?.spendIndex,
34
- };
35
- };
36
- /**
37
- * convert Node transaction to extractor transaction type
38
- * @param tx
39
- */
40
- convertTransaction = (tx) => {
41
- return {
42
- id: tx.id || '',
43
- inclusionHeight: tx.inclusionHeight,
44
- blockId: tx.blockId,
45
- outputs: tx.outputs.map((output) => ({
46
- transactionId: output.transactionId || '',
47
- index: output.index || 0,
48
- value: output.value || 0n,
49
- ergoTree: output.ergoTree || '',
50
- creationHeight: output.creationHeight || 0,
51
- assets: output.assets || [],
52
- additionalRegisters: output.additionalRegisters,
53
- boxId: output.boxId || '',
54
- })),
55
- // TODO: Add input extension local/ergo/rosen-bridge/scanner/-/issues/156
56
- inputs: tx.inputs.map((input) => ({ boxId: input.boxId })) ?? [],
57
- dataInputs: tx.dataInputs,
58
- };
59
- };
60
- /**
61
- * return spending information of a specified box by having spendTxId
62
- * @param boxId
63
- * @param spendTxId
64
- */
65
- getSpendingInfo = async (boxId, spendTxId) => {
66
- const tx = await this.api.getTxById(spendTxId);
67
- const spendIndex = tx.inputs?.findIndex((box) => box.boxId == boxId);
68
- if (spendIndex == undefined)
69
- throw Error(`Impossible behavior, the box [${boxId}] should have been spent in tx [${spendTxId}]`);
70
- return {
71
- hash: tx.blockId,
72
- height: tx.inclusionHeight,
73
- spendIndex,
74
- };
75
- };
76
- /**
77
- * use node api to return related boxes by specified address
78
- * @param address
79
- * @param offset
80
- * @param limit
81
- * @returns related boxes
82
- */
83
- getBoxesByAddress = async (address, offset, limit) => {
84
- const boxes = await this.api.getBoxesByAddressUnspent(address, {
85
- offset: offset,
86
- limit: limit,
87
- sortDirection: 'desc',
88
- });
89
- if (!boxes)
90
- throw new Error('Ergo node BoxesByAddress api expected to have items');
91
- const ergoBoxes = await Promise.all(boxes.map(async (box) => await this.convertBox(box)));
92
- return { boxes: ergoBoxes, hasNextBatch: boxes.length > 0 };
93
- };
94
- /**
95
- * use node api to return related boxes by specified token id
96
- * @param tokenId
97
- * @param offset
98
- * @param limit
99
- * @returns related boxes
100
- */
101
- getBoxesByTokenId = async (tokenId, offset, limit) => {
102
- const boxes = await this.api.getBoxesByTokenId(tokenId, {
103
- offset: offset,
104
- limit: limit,
105
- });
106
- if (!boxes.items)
107
- throw new Error('Ergo node BoxesByTokenId api expected to have items');
108
- const ergoBoxes = await Promise.all(boxes.items.map(async (box) => await this.convertBox(box)));
109
- return { boxes: ergoBoxes, hasNextBatch: boxes.items.length > 0 };
110
- };
111
- /**
112
- * use node api to return related transactions of the specified address with limit offset
113
- * @param tokenId
114
- * @param offset
115
- * @param limit
116
- * @returns related transactions
117
- */
118
- getAddressTransactionsWithOffsetLimit = async (address, offset, limit) => {
119
- const txs = await this.api.getTxsByAddress(address, {
120
- offset,
121
- limit,
122
- });
123
- if (!txs.items)
124
- throw new Error('Explorer AddressTransactions api expected to have items');
125
- return {
126
- items: txs.items.map((tx) => this.convertTransaction(tx)),
127
- total: txs.total,
128
- };
129
- };
130
- }
131
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTm9kZU5ldHdvcmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZXJnby9uZXR3b3JrL05vZGVOZXR3b3JrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8scUJBR04sTUFBTSwwQkFBMEIsQ0FBQztBQUlsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEQsTUFBTSxPQUFPLFdBQVksU0FBUSxlQUFlO0lBQ3RDLEdBQUcsQ0FBQztJQUVaLFlBQVksR0FBVztRQUNyQixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxHQUFHLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxVQUFVLEdBQUcsS0FBSyxFQUFFLEdBQW1CLEVBQW9CLEVBQUU7UUFDbkUsTUFBTSxFQUFFLEdBQUcsTUFBTSxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxhQUFjLENBQUMsQ0FBQztRQUM5RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsa0JBQWtCO1lBQ3RDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQU0sRUFBRSxHQUFHLENBQUMsa0JBQWtCLENBQUM7WUFDaEUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztRQUNkLE9BQU87WUFDTCxhQUFhLEVBQUUsR0FBRyxDQUFDLGFBQWEsSUFBSSxFQUFFO1lBQ3RDLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxJQUFJLENBQUM7WUFDckIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUN0QixRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFO1lBQzVCLGNBQWMsRUFBRSxHQUFHLENBQUMsY0FBYyxJQUFJLENBQUM7WUFDdkMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxlQUFlO1lBQ25DLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUU7WUFDeEIsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLG1CQUFtQjtZQUM1QyxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ3RCLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTztZQUNuQixZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUk7WUFDN0IsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNO1lBQzlCLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxrQkFBa0I7WUFDMUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVO1NBQ2xDLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRjs7O09BR0c7SUFDSyxrQkFBa0IsR0FBRyxDQUMzQixFQUEwQixFQUNMLEVBQUU7UUFDdkIsT0FBTztZQUNMLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUU7WUFDZixlQUFlLEVBQUUsRUFBRSxDQUFDLGVBQWU7WUFDbkMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPO1lBQ25CLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbkMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxhQUFhLElBQUksRUFBRTtnQkFDekMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksQ0FBQztnQkFDeEIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDekIsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksRUFBRTtnQkFDL0IsY0FBYyxFQUFFLE1BQU0sQ0FBQyxjQUFjLElBQUksQ0FBQztnQkFDMUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRTtnQkFDM0IsbUJBQW1CLEVBQUUsTUFBTSxDQUFDLG1CQUFtQjtnQkFDL0MsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRTthQUMxQixDQUFDLENBQUM7WUFDSCx5RUFBeUU7WUFDekUsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRTtZQUNqRSxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVU7U0FDMUIsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGOzs7O09BSUc7SUFDSCxlQUFlLEdBQUcsS0FBSyxFQUNyQixLQUFhLEVBQ2IsU0FBaUIsRUFDNEIsRUFBRTtRQUMvQyxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDO1FBQ3JFLElBQUksVUFBVSxJQUFJLFNBQVM7WUFDekIsTUFBTSxLQUFLLENBQ1QsaUNBQWlDLEtBQUssbUNBQW1DLFNBQVMsR0FBRyxDQUN0RixDQUFDO1FBQ0osT0FBTztZQUNMLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTztZQUNoQixNQUFNLEVBQUUsRUFBRSxDQUFDLGVBQWU7WUFDMUIsVUFBVTtTQUNYLENBQUM7SUFDSixDQUFDLENBQUM7SUFFRjs7Ozs7O09BTUc7SUFDSCxpQkFBaUIsR0FBRyxLQUFLLEVBQ3ZCLE9BQWUsRUFDZixNQUFjLEVBQ2QsS0FBYSxFQUN5QyxFQUFFO1FBQ3hELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQyxPQUFPLEVBQUU7WUFDN0QsTUFBTSxFQUFFLE1BQU07WUFDZCxLQUFLLEVBQUUsS0FBSztZQUNaLGFBQWEsRUFBRSxNQUFNO1NBQ3RCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLO1lBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sU0FBUyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDakMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDckQsQ0FBQztRQUNGLE9BQU8sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQzlELENBQUMsQ0FBQztJQUVGOzs7Ozs7T0FNRztJQUNILGlCQUFpQixHQUFHLEtBQUssRUFDdkIsT0FBZSxFQUNmLE1BQWMsRUFDZCxLQUFhLEVBQ3lDLEVBQUU7UUFDeEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sRUFBRTtZQUN0RCxNQUFNLEVBQUUsTUFBTTtZQUNkLEtBQUssRUFBRSxLQUFLO1NBQ2IsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1FBQ3pFLE1BQU0sU0FBUyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDakMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzNELENBQUM7UUFDRixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDcEUsQ0FBQyxDQUFDO0lBRUY7Ozs7OztPQU1HO0lBQ0gscUNBQXFDLEdBQUcsS0FBSyxFQUMzQyxPQUFlLEVBQ2YsTUFBYyxFQUNkLEtBQWEsRUFDa0QsRUFBRTtRQUNqRSxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRTtZQUNsRCxNQUFNO1lBQ04sS0FBSztTQUNOLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQ2IseURBQXlELENBQzFELENBQUM7UUFDSixPQUFPO1lBQ0wsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekQsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFNO1NBQ2xCLENBQUM7SUFDSixDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBlcmdvTm9kZUNsaWVudEZhY3RvcnksIHtcbiAgSW5kZXhlZEVyZ29Cb3gsXG4gIEluZGV4ZWRFcmdvVHJhbnNhY3Rpb24sXG59IGZyb20gJ0Byb3Nlbi1jbGllbnRzL2VyZ28tbm9kZSc7XG5pbXBvcnQgeyBCbG9ja0luZm8gfSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXItaW50ZXJmYWNlcyc7XG5cbmltcG9ydCB7IEVyZ29Cb3gsIEV4dGVuZGVkVHJhbnNhY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFic3RyYWN0TmV0d29yayB9IGZyb20gJy4vQWJzdHJhY3ROZXR3b3JrJztcblxuZXhwb3J0IGNsYXNzIE5vZGVOZXR3b3JrIGV4dGVuZHMgQWJzdHJhY3ROZXR3b3JrIHtcbiAgcHJpdmF0ZSBhcGk7XG5cbiAgY29uc3RydWN0b3IodXJsOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuYXBpID0gZXJnb05vZGVDbGllbnRGYWN0b3J5KHVybCk7XG4gIH1cblxuICAvKipcbiAgICogY29udmVydCBub2RlIGFwaSBib3hlcyB0byBFcmdvQm94IGludGVyZmFjZVxuICAgKiBAcGFyYW0gYm94XG4gICAqIEByZXR1cm5zIEVyZ29Cb3hcbiAgICovXG4gIHByaXZhdGUgY29udmVydEJveCA9IGFzeW5jIChib3g6IEluZGV4ZWRFcmdvQm94KTogUHJvbWlzZTxFcmdvQm94PiA9PiB7XG4gICAgY29uc3QgdHggPSBhd2FpdCBhd2FpdCB0aGlzLmFwaS5nZXRUeEJ5SWQoYm94LnRyYW5zYWN0aW9uSWQhKTtcbiAgICBjb25zdCBzcGVuZEluZm8gPSBib3guc3BlbnRUcmFuc2FjdGlvbklkXG4gICAgICA/IGF3YWl0IHRoaXMuZ2V0U3BlbmRpbmdJbmZvKGJveC5ib3hJZCEsIGJveC5zcGVudFRyYW5zYWN0aW9uSWQpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4ge1xuICAgICAgdHJhbnNhY3Rpb25JZDogYm94LnRyYW5zYWN0aW9uSWQgfHwgJycsXG4gICAgICBpbmRleDogYm94LmluZGV4IHx8IDAsXG4gICAgICB2YWx1ZTogYm94LnZhbHVlIHx8IDBuLFxuICAgICAgZXJnb1RyZWU6IGJveC5lcmdvVHJlZSB8fCAnJyxcbiAgICAgIGNyZWF0aW9uSGVpZ2h0OiBib3guY3JlYXRpb25IZWlnaHQgfHwgMCxcbiAgICAgIGluY2x1c2lvbkhlaWdodDogdHguaW5jbHVzaW9uSGVpZ2h0LFxuICAgICAgYXNzZXRzOiBib3guYXNzZXRzIHx8IFtdLFxuICAgICAgYWRkaXRpb25hbFJlZ2lzdGVyczogYm94LmFkZGl0aW9uYWxSZWdpc3RlcnMsXG4gICAgICBib3hJZDogYm94LmJveElkIHx8ICcnLFxuICAgICAgYmxvY2tJZDogdHguYmxvY2tJZCxcbiAgICAgIHNwZW50QmxvY2tJZDogc3BlbmRJbmZvPy5oYXNoLFxuICAgICAgc3BlbnRIZWlnaHQ6IHNwZW5kSW5mbz8uaGVpZ2h0LFxuICAgICAgc3BlbnRUcmFuc2FjdGlvbklkOiBib3guc3BlbnRUcmFuc2FjdGlvbklkLFxuICAgICAgc3BlbnRJbmRleDogc3BlbmRJbmZvPy5zcGVuZEluZGV4LFxuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIGNvbnZlcnQgTm9kZSB0cmFuc2FjdGlvbiB0byBleHRyYWN0b3IgdHJhbnNhY3Rpb24gdHlwZVxuICAgKiBAcGFyYW0gdHhcbiAgICovXG4gIHByaXZhdGUgY29udmVydFRyYW5zYWN0aW9uID0gKFxuICAgIHR4OiBJbmRleGVkRXJnb1RyYW5zYWN0aW9uLFxuICApOiBFeHRlbmRlZFRyYW5zYWN0aW9uID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHR4LmlkIHx8ICcnLFxuICAgICAgaW5jbHVzaW9uSGVpZ2h0OiB0eC5pbmNsdXNpb25IZWlnaHQsXG4gICAgICBibG9ja0lkOiB0eC5ibG9ja0lkLFxuICAgICAgb3V0cHV0czogdHgub3V0cHV0cy5tYXAoKG91dHB1dCkgPT4gKHtcbiAgICAgICAgdHJhbnNhY3Rpb25JZDogb3V0cHV0LnRyYW5zYWN0aW9uSWQgfHwgJycsXG4gICAgICAgIGluZGV4OiBvdXRwdXQuaW5kZXggfHwgMCxcbiAgICAgICAgdmFsdWU6IG91dHB1dC52YWx1ZSB8fCAwbixcbiAgICAgICAgZXJnb1RyZWU6IG91dHB1dC5lcmdvVHJlZSB8fCAnJyxcbiAgICAgICAgY3JlYXRpb25IZWlnaHQ6IG91dHB1dC5jcmVhdGlvbkhlaWdodCB8fCAwLFxuICAgICAgICBhc3NldHM6IG91dHB1dC5hc3NldHMgfHwgW10sXG4gICAgICAgIGFkZGl0aW9uYWxSZWdpc3RlcnM6IG91dHB1dC5hZGRpdGlvbmFsUmVnaXN0ZXJzLFxuICAgICAgICBib3hJZDogb3V0cHV0LmJveElkIHx8ICcnLFxuICAgICAgfSkpLFxuICAgICAgLy8gVE9ETzogQWRkIGlucHV0IGV4dGVuc2lvbiBsb2NhbC9lcmdvL3Jvc2VuLWJyaWRnZS9zY2FubmVyLy0vaXNzdWVzLzE1NlxuICAgICAgaW5wdXRzOiB0eC5pbnB1dHMubWFwKChpbnB1dCkgPT4gKHsgYm94SWQ6IGlucHV0LmJveElkISB9KSkgPz8gW10sXG4gICAgICBkYXRhSW5wdXRzOiB0eC5kYXRhSW5wdXRzLFxuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIHJldHVybiBzcGVuZGluZyBpbmZvcm1hdGlvbiBvZiBhIHNwZWNpZmllZCBib3ggYnkgaGF2aW5nIHNwZW5kVHhJZFxuICAgKiBAcGFyYW0gYm94SWRcbiAgICogQHBhcmFtIHNwZW5kVHhJZFxuICAgKi9cbiAgZ2V0U3BlbmRpbmdJbmZvID0gYXN5bmMgKFxuICAgIGJveElkOiBzdHJpbmcsXG4gICAgc3BlbmRUeElkOiBzdHJpbmcsXG4gICk6IFByb21pc2U8QmxvY2tJbmZvICYgeyBzcGVuZEluZGV4OiBudW1iZXIgfT4gPT4ge1xuICAgIGNvbnN0IHR4ID0gYXdhaXQgdGhpcy5hcGkuZ2V0VHhCeUlkKHNwZW5kVHhJZCk7XG4gICAgY29uc3Qgc3BlbmRJbmRleCA9IHR4LmlucHV0cz8uZmluZEluZGV4KChib3gpID0+IGJveC5ib3hJZCA9PSBib3hJZCk7XG4gICAgaWYgKHNwZW5kSW5kZXggPT0gdW5kZWZpbmVkKVxuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgIGBJbXBvc3NpYmxlIGJlaGF2aW9yLCB0aGUgYm94IFske2JveElkfV0gc2hvdWxkIGhhdmUgYmVlbiBzcGVudCBpbiB0eCBbJHtzcGVuZFR4SWR9XWAsXG4gICAgICApO1xuICAgIHJldHVybiB7XG4gICAgICBoYXNoOiB0eC5ibG9ja0lkLFxuICAgICAgaGVpZ2h0OiB0eC5pbmNsdXNpb25IZWlnaHQsXG4gICAgICBzcGVuZEluZGV4LFxuICAgIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIHVzZSBub2RlIGFwaSB0byByZXR1cm4gcmVsYXRlZCBib3hlcyBieSBzcGVjaWZpZWQgYWRkcmVzc1xuICAgKiBAcGFyYW0gYWRkcmVzc1xuICAgKiBAcGFyYW0gb2Zmc2V0XG4gICAqIEBwYXJhbSBsaW1pdFxuICAgKiBAcmV0dXJucyByZWxhdGVkIGJveGVzXG4gICAqL1xuICBnZXRCb3hlc0J5QWRkcmVzcyA9IGFzeW5jIChcbiAgICBhZGRyZXNzOiBzdHJpbmcsXG4gICAgb2Zmc2V0OiBudW1iZXIsXG4gICAgbGltaXQ6IG51bWJlcixcbiAgKTogUHJvbWlzZTx7IGJveGVzOiBFcmdvQm94W107IGhhc05leHRCYXRjaDogYm9vbGVhbiB9PiA9PiB7XG4gICAgY29uc3QgYm94ZXMgPSBhd2FpdCB0aGlzLmFwaS5nZXRCb3hlc0J5QWRkcmVzc1Vuc3BlbnQoYWRkcmVzcywge1xuICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICBsaW1pdDogbGltaXQsXG4gICAgICBzb3J0RGlyZWN0aW9uOiAnZGVzYycsXG4gICAgfSk7XG4gICAgaWYgKCFib3hlcylcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXJnbyBub2RlIEJveGVzQnlBZGRyZXNzIGFwaSBleHBlY3RlZCB0byBoYXZlIGl0ZW1zJyk7XG4gICAgY29uc3QgZXJnb0JveGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBib3hlcy5tYXAoYXN5bmMgKGJveCkgPT4gYXdhaXQgdGhpcy5jb252ZXJ0Qm94KGJveCkpLFxuICAgICk7XG4gICAgcmV0dXJuIHsgYm94ZXM6IGVyZ29Cb3hlcywgaGFzTmV4dEJhdGNoOiBib3hlcy5sZW5ndGggPiAwIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIHVzZSBub2RlIGFwaSB0byByZXR1cm4gcmVsYXRlZCBib3hlcyBieSBzcGVjaWZpZWQgdG9rZW4gaWRcbiAgICogQHBhcmFtIHRva2VuSWRcbiAgICogQHBhcmFtIG9mZnNldFxuICAgKiBAcGFyYW0gbGltaXRcbiAgICogQHJldHVybnMgcmVsYXRlZCBib3hlc1xuICAgKi9cbiAgZ2V0Qm94ZXNCeVRva2VuSWQgPSBhc3luYyAoXG4gICAgdG9rZW5JZDogc3RyaW5nLFxuICAgIG9mZnNldDogbnVtYmVyLFxuICAgIGxpbWl0OiBudW1iZXIsXG4gICk6IFByb21pc2U8eyBib3hlczogRXJnb0JveFtdOyBoYXNOZXh0QmF0Y2g6IGJvb2xlYW4gfT4gPT4ge1xuICAgIGNvbnN0IGJveGVzID0gYXdhaXQgdGhpcy5hcGkuZ2V0Qm94ZXNCeVRva2VuSWQodG9rZW5JZCwge1xuICAgICAgb2Zmc2V0OiBvZmZzZXQsXG4gICAgICBsaW1pdDogbGltaXQsXG4gICAgfSk7XG4gICAgaWYgKCFib3hlcy5pdGVtcylcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXJnbyBub2RlIEJveGVzQnlUb2tlbklkIGFwaSBleHBlY3RlZCB0byBoYXZlIGl0ZW1zJyk7XG4gICAgY29uc3QgZXJnb0JveGVzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBib3hlcy5pdGVtcy5tYXAoYXN5bmMgKGJveCkgPT4gYXdhaXQgdGhpcy5jb252ZXJ0Qm94KGJveCkpLFxuICAgICk7XG4gICAgcmV0dXJuIHsgYm94ZXM6IGVyZ29Cb3hlcywgaGFzTmV4dEJhdGNoOiBib3hlcy5pdGVtcy5sZW5ndGggPiAwIH07XG4gIH07XG5cbiAgLyoqXG4gICAqIHVzZSBub2RlIGFwaSB0byByZXR1cm4gcmVsYXRlZCB0cmFuc2FjdGlvbnMgb2YgdGhlIHNwZWNpZmllZCBhZGRyZXNzIHdpdGggbGltaXQgb2Zmc2V0XG4gICAqIEBwYXJhbSB0b2tlbklkXG4gICAqIEBwYXJhbSBvZmZzZXRcbiAgICogQHBhcmFtIGxpbWl0XG4gICAqIEByZXR1cm5zIHJlbGF0ZWQgdHJhbnNhY3Rpb25zXG4gICAqL1xuICBnZXRBZGRyZXNzVHJhbnNhY3Rpb25zV2l0aE9mZnNldExpbWl0ID0gYXN5bmMgKFxuICAgIGFkZHJlc3M6IHN0cmluZyxcbiAgICBvZmZzZXQ6IG51bWJlcixcbiAgICBsaW1pdDogbnVtYmVyLFxuICApOiBQcm9taXNlPHsgaXRlbXM6IEFycmF5PEV4dGVuZGVkVHJhbnNhY3Rpb24+OyB0b3RhbDogbnVtYmVyIH0+ID0+IHtcbiAgICBjb25zdCB0eHMgPSBhd2FpdCB0aGlzLmFwaS5nZXRUeHNCeUFkZHJlc3MoYWRkcmVzcywge1xuICAgICAgb2Zmc2V0LFxuICAgICAgbGltaXQsXG4gICAgfSk7XG4gICAgaWYgKCF0eHMuaXRlbXMpXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdFeHBsb3JlciBBZGRyZXNzVHJhbnNhY3Rpb25zIGFwaSBleHBlY3RlZCB0byBoYXZlIGl0ZW1zJyxcbiAgICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGl0ZW1zOiB0eHMuaXRlbXMubWFwKCh0eCkgPT4gdGhpcy5jb252ZXJ0VHJhbnNhY3Rpb24odHgpKSxcbiAgICAgIHRvdGFsOiB0eHMudG90YWwhLFxuICAgIH07XG4gIH07XG59XG4iXX0=
@@ -1,8 +0,0 @@
1
- import { OutputBox } from '@rosen-bridge/scanner-interfaces';
2
- /**
3
- * Check box to have specified tokens
4
- * @param box
5
- * @return true if box has the required token and false otherwise
6
- */
7
- export declare const boxHasToken: (box: OutputBox, tokenIds: string[]) => boolean;
8
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../lib/ergo/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAE7D;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,KAAK,SAAS,EAAE,UAAU,MAAM,EAAE,YAM7D,CAAC"}
@@ -1,16 +0,0 @@
1
- import { intersection } from 'lodash-es';
2
- /**
3
- * Check box to have specified tokens
4
- * @param box
5
- * @return true if box has the required token and false otherwise
6
- */
7
- export const boxHasToken = (box, tokenIds) => {
8
- if (!box.assets)
9
- return false;
10
- const boxTokens = box.assets.map((token) => token.tokenId);
11
- const requiredTokens = intersection(tokenIds, boxTokens);
12
- if (requiredTokens.length == tokenIds.length)
13
- return true;
14
- return false;
15
- };
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvZXJnby91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR3pDOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFjLEVBQUUsUUFBa0IsRUFBRSxFQUFFO0lBQ2hFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBQzlCLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0QsTUFBTSxjQUFjLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN6RCxJQUFJLGNBQWMsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLE1BQU07UUFBRSxPQUFPLElBQUksQ0FBQztJQUMxRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGludGVyc2VjdGlvbiB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBPdXRwdXRCb3ggfSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXItaW50ZXJmYWNlcyc7XG5cbi8qKlxuICogQ2hlY2sgYm94IHRvIGhhdmUgc3BlY2lmaWVkIHRva2Vuc1xuICogQHBhcmFtIGJveFxuICogQHJldHVybiB0cnVlIGlmIGJveCBoYXMgdGhlIHJlcXVpcmVkIHRva2VuIGFuZCBmYWxzZSBvdGhlcndpc2VcbiAqL1xuZXhwb3J0IGNvbnN0IGJveEhhc1Rva2VuID0gKGJveDogT3V0cHV0Qm94LCB0b2tlbklkczogc3RyaW5nW10pID0+IHtcbiAgaWYgKCFib3guYXNzZXRzKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IGJveFRva2VucyA9IGJveC5hc3NldHMubWFwKCh0b2tlbikgPT4gdG9rZW4udG9rZW5JZCk7XG4gIGNvbnN0IHJlcXVpcmVkVG9rZW5zID0gaW50ZXJzZWN0aW9uKHRva2VuSWRzLCBib3hUb2tlbnMpO1xuICBpZiAocmVxdWlyZWRUb2tlbnMubGVuZ3RoID09IHRva2VuSWRzLmxlbmd0aCkgcmV0dXJuIHRydWU7XG4gIHJldHVybiBmYWxzZTtcbn07XG4iXX0=
@@ -1,4 +0,0 @@
1
- export * from './ergo';
2
- export * from './constants';
3
- export * from './abstractExtractor';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC"}
package/dist/lib/index.js DELETED
@@ -1,4 +0,0 @@
1
- export * from './ergo';
2
- export * from './constants';
3
- export * from './abstractExtractor';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZXJnbyc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2Fic3RyYWN0RXh0cmFjdG9yJztcbiJdfQ==
@@ -1,11 +0,0 @@
1
- import { V1 } from '@rosen-clients/ergo-explorer';
2
- import { BlockInfo, OutputBox } from '@rosen-bridge/scanner-interfaces';
3
- import { AbstractErgoExtractor, AbstractBoxData, AbstractErgoExtractorAction, AbstractErgoExtractorEntity } from '../lib';
4
- export declare class MockedErgoExtractor extends AbstractErgoExtractor<AbstractBoxData, AbstractErgoExtractorEntity> {
5
- actions: AbstractErgoExtractorAction<AbstractBoxData, AbstractErgoExtractorEntity>;
6
- getId: () => string;
7
- initializeBoxes: (initialBlock: BlockInfo) => Promise<void>;
8
- hasData: (box: V1.OutputInfo | OutputBox) => boolean;
9
- extractBoxData: (box: V1.OutputInfo | OutputBox) => AbstractBoxData | undefined;
10
- }
11
- //# sourceMappingURL=AbstractErgoExtractor.mock.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbstractErgoExtractor.mock.d.ts","sourceRoot":"","sources":["../../tests/AbstractErgoExtractor.mock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,8BAA8B,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAExE,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,2BAA2B,EAC3B,2BAA2B,EAC5B,MAAM,QAAQ,CAAC;AAEhB,qBAAa,mBAAoB,SAAQ,qBAAqB,CAC5D,eAAe,EACf,2BAA2B,CAC5B;IACC,OAAO,EAAE,2BAA2B,CAClC,eAAe,EACf,2BAA2B,CAC5B,CAAC;IAEF,KAAK,eAAgB;IAErB,eAAe,EAAE,CAAC,YAAY,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5D,OAAO,GACL,KAAK,EAAE,CAAC,UAAU,GAAG,SAAS,aACrB;IAEX,cAAc,GACZ,KAAK,EAAE,CAAC,UAAU,GAAG,SAAS,KAC7B,eAAe,GAAG,SAAS,CAE5B;CACH"}
@@ -1,11 +0,0 @@
1
- import { AbstractErgoExtractor, } from '../lib';
2
- export class MockedErgoExtractor extends AbstractErgoExtractor {
3
- actions;
4
- getId = () => 'Test';
5
- initializeBoxes;
6
- hasData = (box) => false;
7
- extractBoxData = (box) => {
8
- return undefined;
9
- };
10
- }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RFcmdvRXh0cmFjdG9yLm1vY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0cy9BYnN0cmFjdEVyZ29FeHRyYWN0b3IubW9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQ0wscUJBQXFCLEdBSXRCLE1BQU0sUUFBUSxDQUFDO0FBRWhCLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxxQkFHeEM7SUFDQyxPQUFPLENBR0w7SUFFRixLQUFLLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBRXJCLGVBQWUsQ0FBNkM7SUFFNUQsT0FBTyxHQUFHLENBQ1IsR0FBOEIsRUFDOUIsRUFBRSxDQUFDLEtBQUssQ0FBQztJQUVYLGNBQWMsR0FBRyxDQUNmLEdBQThCLEVBQ0QsRUFBRTtRQUMvQixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFYxIH0gZnJvbSAnQHJvc2VuLWNsaWVudHMvZXJnby1leHBsb3Jlcic7XG5pbXBvcnQgeyBCbG9ja0luZm8sIE91dHB1dEJveCB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lci1pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtcbiAgQWJzdHJhY3RFcmdvRXh0cmFjdG9yLFxuICBBYnN0cmFjdEJveERhdGEsXG4gIEFic3RyYWN0RXJnb0V4dHJhY3RvckFjdGlvbixcbiAgQWJzdHJhY3RFcmdvRXh0cmFjdG9yRW50aXR5LFxufSBmcm9tICcuLi9saWInO1xuXG5leHBvcnQgY2xhc3MgTW9ja2VkRXJnb0V4dHJhY3RvciBleHRlbmRzIEFic3RyYWN0RXJnb0V4dHJhY3RvcjxcbiAgQWJzdHJhY3RCb3hEYXRhLFxuICBBYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHlcbj4ge1xuICBhY3Rpb25zOiBBYnN0cmFjdEVyZ29FeHRyYWN0b3JBY3Rpb248XG4gICAgQWJzdHJhY3RCb3hEYXRhLFxuICAgIEFic3RyYWN0RXJnb0V4dHJhY3RvckVudGl0eVxuICA+O1xuXG4gIGdldElkID0gKCkgPT4gJ1Rlc3QnO1xuXG4gIGluaXRpYWxpemVCb3hlczogKGluaXRpYWxCbG9jazogQmxvY2tJbmZvKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIGhhc0RhdGEgPSAoXG4gICAgYm94OiBWMS5PdXRwdXRJbmZvIHwgT3V0cHV0Qm94LCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICApID0+IGZhbHNlO1xuXG4gIGV4dHJhY3RCb3hEYXRhID0gKFxuICAgIGJveDogVjEuT3V0cHV0SW5mbyB8IE91dHB1dEJveCwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgKTogQWJzdHJhY3RCb3hEYXRhIHwgdW5kZWZpbmVkID0+IHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9O1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=AbstractErgoExtractor.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbstractErgoExtractor.spec.d.ts","sourceRoot":"","sources":["../../tests/AbstractErgoExtractor.spec.ts"],"names":[],"mappings":""}
@@ -1,240 +0,0 @@
1
- import { CallbackType, } from '../lib';
2
- import { block, extractedData, tx } from './testData';
3
- import { MockedErgoExtractor } from './AbstractErgoExtractor.mock';
4
- describe('AbstractErgoExtractor', () => {
5
- describe('processTransactions', () => {
6
- /**
7
- * @target processTransactions should initialize extractor with specified id and insert status into db
8
- * @dependencies
9
- * @scenario
10
- * - mock extractor
11
- * - mock `hasData` to return true for one box
12
- * - spy `extractBoxData` and `storeBoxes`
13
- * - run test (call `processTransactions`)
14
- * @expected
15
- * - to call `extractBoxData` for the specific box and all input extensions
16
- * - to insert the extracted box to database
17
- * - to return true when total procedure is successful
18
- * - to trigger `INSERT` callbacks with correct data
19
- */
20
- it('should process boxes with data and insert data into database', async () => {
21
- const extractor = new MockedErgoExtractor();
22
- const triggerCallbacks = vitest.fn();
23
- extractor['triggerCallbacks'] = triggerCallbacks;
24
- extractor.hasData = (box) => {
25
- if (box.boxId == tx.outputs[0].boxId)
26
- return true;
27
- return false;
28
- };
29
- const extractSpy = vitest.fn().mockReturnValue(extractedData);
30
- extractor.extractBoxData = extractSpy;
31
- const storeSpy = vitest.fn().mockResolvedValue(true);
32
- const spendSpy = vitest.fn().mockResolvedValue([]);
33
- extractor['actions'] = {
34
- storeBoxes: storeSpy,
35
- spendBoxes: spendSpy,
36
- };
37
- const result = await extractor.processTransactions([tx], block);
38
- expect(extractSpy).toBeCalledTimes(1);
39
- expect(extractSpy).toBeCalledWith(tx.outputs[0], [tx.inputs[0].extension, {}], {});
40
- expect(storeSpy).toBeCalledWith([extractedData], block, 'Test');
41
- expect(result).toEqual(true);
42
- expect(triggerCallbacks).toBeCalledWith(CallbackType.Insert, [
43
- extractedData,
44
- ]);
45
- });
46
- /**
47
- * @target processTransactions should extract spending information of all input boxes
48
- * @dependencies
49
- * @scenario
50
- * - mock extractor (hasData returns false as default)
51
- * - spy `extractBoxData`, `storeBoxes` and `spendBoxes`
52
- * - run test (call `processTransactions`)
53
- * @expected
54
- * - not to call `extractBoxData` and `storeBoxes` when there is not any box with data
55
- * - to extractor spend info of input boxes and call `spendBoxes`
56
- * - to return true when total procedure is successful
57
- * - to trigger `SPEND` callbacks with correct data
58
- */
59
- it('should extract spending information of all input boxes', async () => {
60
- const extractor = new MockedErgoExtractor();
61
- const triggerCallbacks = vitest.fn();
62
- extractor['triggerCallbacks'] = triggerCallbacks;
63
- const extractSpy = vitest.fn();
64
- extractor.extractBoxData = extractSpy;
65
- const storeSpy = vitest.fn().mockResolvedValue(true);
66
- const spendSpy = vitest
67
- .fn()
68
- .mockResolvedValue([
69
- { boxId: tx.inputs[0].boxId },
70
- { boxId: tx.inputs[1].boxId },
71
- ]);
72
- extractor['actions'] = {
73
- storeBoxes: storeSpy,
74
- spendBoxes: spendSpy,
75
- };
76
- const result = await extractor.processTransactions([tx], block);
77
- expect(extractSpy).not.toBeCalled();
78
- expect(storeSpy).not.toBeCalled();
79
- expect(spendSpy).toBeCalledWith([
80
- { boxId: tx.inputs[0].boxId, txId: tx.id, index: 1 },
81
- { boxId: tx.inputs[1].boxId, txId: tx.id, index: 2 },
82
- ], block, 'Test');
83
- expect(result).toEqual(true);
84
- expect(triggerCallbacks).toBeCalledWith(CallbackType.Spend, [
85
- { boxId: tx.inputs[0].boxId },
86
- { boxId: tx.inputs[1].boxId },
87
- ]);
88
- });
89
- /**
90
- * @target processTransactions should return false if data insertion fails
91
- * @dependencies
92
- * @scenario
93
- * - mock extractor
94
- * - mock `hasData` to return true for one box
95
- * - spy `extractBoxData` and `storeBoxes`
96
- * - run test (call `processTransactions`)
97
- * @expected
98
- * - to return false when `insertBoxes` returns false
99
- * - not to call `spendBoxes` if data insertion fails
100
- */
101
- it('should return false if data insertion fails', async () => {
102
- const extractor = new MockedErgoExtractor();
103
- extractor.hasData = (box) => {
104
- if (box.boxId == tx.outputs[0].boxId)
105
- return true;
106
- return false;
107
- };
108
- const extractSpy = vitest.fn().mockReturnValue(extractedData);
109
- extractor.extractBoxData = extractSpy;
110
- const storeSpy = vitest.fn().mockResolvedValue(false);
111
- const spendSpy = vitest.fn();
112
- extractor['actions'] = {
113
- storeBoxes: storeSpy,
114
- spendBoxes: spendSpy,
115
- };
116
- const result = await extractor.processTransactions([tx], block);
117
- expect(result).toEqual(false);
118
- expect(spendSpy).not.toBeCalled();
119
- });
120
- });
121
- describe('forkBlock', () => {
122
- /**
123
- * @target forkBlock should remove all data extracted from the specified block
124
- * @dependencies
125
- * @scenario
126
- * - mock extractor
127
- * - spy `deleteBlockBoxes`
128
- * - run test (call `forkBlock`)
129
- * @expected
130
- * - to call `deleteBlockBoxes` for the specific box
131
- * - to trigger `DELETE` callbacks for the deleted box
132
- * - to trigger `UPDATE` callbacks for the spent box
133
- */
134
- it('should remove all data extracted from the specified block', async () => {
135
- const extractor = new MockedErgoExtractor();
136
- const removeSpy = vitest.fn().mockResolvedValue({
137
- deletedData: [{ boxId: 'box1' }],
138
- updatedData: [{ boxId: 'box2' }],
139
- });
140
- extractor['actions'] = {
141
- deleteBlockBoxes: removeSpy,
142
- };
143
- const triggerCallbackSpy = vitest.fn().mockClear();
144
- extractor['triggerCallbacks'] = triggerCallbackSpy;
145
- await extractor.forkBlock(block.hash);
146
- expect(removeSpy).toBeCalledWith(block.hash, 'Test');
147
- expect(triggerCallbackSpy).toBeCalledWith(CallbackType.Delete, [
148
- { boxId: 'box1' },
149
- ]);
150
- expect(triggerCallbackSpy).toBeCalledWith(CallbackType.Update, [
151
- { boxId: 'box2' },
152
- ]);
153
- });
154
- });
155
- describe('hook', () => {
156
- /**
157
- * @target hook should hook a new callback on insert with the new id
158
- * @dependencies
159
- * @scenario
160
- * - mock extractor
161
- * - mock a callback for insert
162
- * - run test (call `hook`)
163
- * @expected
164
- * - hook the callback with the specified id
165
- * - return true
166
- */
167
- it('should hook a new callback on insert with the new id', async () => {
168
- const extractor = new MockedErgoExtractor();
169
- const insertCallback = vitest.fn();
170
- const id = await extractor.hook(CallbackType.Insert, insertCallback);
171
- expect(extractor['callbacks'][CallbackType.Insert]).toEqual(new Map().set(id, insertCallback));
172
- });
173
- });
174
- describe('unhook', () => {
175
- /**
176
- * @target unhook should unhook the callback on insert with the specified id
177
- * @dependencies
178
- * @scenario
179
- * - mock extractor
180
- * - mock a callback for insert
181
- * - hook the callback
182
- * - run test (call `unhook`)
183
- * @expected
184
- * - unhook the callback with the specified id
185
- * - return true
186
- */
187
- it('should unhook the callback on insert with the specified id', async () => {
188
- const extractor = new MockedErgoExtractor();
189
- const insertCallback = vitest.fn();
190
- const id = await extractor.hook(CallbackType.Insert, insertCallback);
191
- const result = await extractor.unhook(CallbackType.Insert, id);
192
- expect(result).toBeTruthy();
193
- expect(extractor['callbacks'][CallbackType.Insert].get(id)).toEqual(undefined);
194
- });
195
- /**
196
- * @target unhook should not unhook callbacks with the same id on other types
197
- * @dependencies
198
- * @scenario
199
- * - mock extractor
200
- * - mock two callbacks for insert
201
- * - hook the first callback
202
- * - run test (call `unhook` with the same id for second callback)
203
- * @expected
204
- * - not to change hooked callbacks when the callback with the id
205
- * doesn't exists on the specified type
206
- * - return false
207
- */
208
- it('should not unhook callbacks with the same id on other types', async () => {
209
- const extractor = new MockedErgoExtractor();
210
- const insertCallback = vitest.fn();
211
- const id = await extractor.hook(CallbackType.Insert, insertCallback);
212
- const result = await extractor.unhook(CallbackType.Update, id);
213
- expect(result).toBeFalsy();
214
- expect(extractor['callbacks'][CallbackType.Insert].get(id)).toEqual(insertCallback);
215
- expect(extractor['callbacks'][CallbackType.Update].get(id)).toEqual(undefined);
216
- });
217
- });
218
- describe('triggerCallbacks', () => {
219
- /**
220
- * @target triggerCallbacks should trigger all callbacks hooked on a type
221
- * @dependencies
222
- * @scenario
223
- * - mock extractor
224
- * - mock a callback for insert
225
- * - hook the callback
226
- * - run test (call `triggerCallbacks` for insert type)
227
- * @expected
228
- * - trigger all callbacks with the specified id
229
- */
230
- it('should trigger all callbacks hooked on a type', async () => {
231
- const extractor = new MockedErgoExtractor();
232
- const insertCallback = vitest.fn();
233
- await extractor.hook(CallbackType.Insert, insertCallback);
234
- const insertedData = [{ boxId: 'boxId', serialized: 'serialized' }];
235
- await extractor['triggerCallbacks'](CallbackType.Insert, insertedData);
236
- expect(insertCallback).toBeCalledWith(insertedData);
237
- });
238
- });
239
- });
240
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RFcmdvRXh0cmFjdG9yLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0cy9BYnN0cmFjdEVyZ29FeHRyYWN0b3Iuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBR0wsWUFBWSxHQUViLE1BQU0sUUFBUSxDQUFDO0FBQ2hCLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEVBQUUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUVuRSxRQUFRLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxFQUFFO0lBQ3JDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLEVBQUU7UUFDbkM7Ozs7Ozs7Ozs7Ozs7V0FhRztRQUNILEVBQUUsQ0FBQyw4REFBOEQsRUFBRSxLQUFLLElBQUksRUFBRTtZQUM1RSxNQUFNLFNBQVMsR0FBRyxJQUFJLG1CQUFtQixFQUFFLENBQUM7WUFDNUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDckMsU0FBUyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsZ0JBQWdCLENBQUM7WUFDakQsU0FBUyxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQThCLEVBQUUsRUFBRTtnQkFDckQsSUFBSSxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSztvQkFBRSxPQUFPLElBQUksQ0FBQztnQkFDbEQsT0FBTyxLQUFLLENBQUM7WUFDZixDQUFDLENBQUM7WUFDRixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzlELFNBQVMsQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDO1lBQ3RDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxp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LENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUNqRSxTQUFTLENBQ1YsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxRQUFRLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO1FBQ2hDOzs7Ozs7Ozs7O1dBVUc7UUFDSCxFQUFFLENBQUMsK0NBQStDLEVBQUUsS0FBSyxJQUFJLEVBQUU7WUFDN0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1lBQzVDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNuQyxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztZQUMxRCxNQUFNLFlBQVksR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztZQUNwRSxNQUFNLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDdkUsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWMSB9IGZyb20gJ0Byb3Nlbi1jbGllbnRzL2VyZ28tZXhwbG9yZXInO1xuaW1wb3J0IHsgT3V0cHV0Qm94IH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyLWludGVyZmFjZXMnO1xuXG5pbXBvcnQge1xuICBBYnN0cmFjdEJveERhdGEsXG4gIEFic3RyYWN0RXJnb0V4dHJhY3RvckFjdGlvbixcbiAgQ2FsbGJhY2tUeXBlLFxuICBBYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHksXG59IGZyb20gJy4uL2xpYic7XG5pbXBvcnQgeyBibG9jaywgZXh0cmFjdGVkRGF0YSwgdHggfSBmcm9tICcuL3Rlc3REYXRhJztcbmltcG9ydCB7IE1vY2tlZEVyZ29FeHRyYWN0b3IgfSBmcm9tICcuL0Fic3RyYWN0RXJnb0V4dHJhY3Rvci5tb2NrJztcblxuZGVzY3JpYmUoJ0Fic3RyYWN0RXJnb0V4dHJhY3RvcicsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3Byb2Nlc3NUcmFuc2FjdGlvbnMnLCAoKSA9PiB7XG4gICAgLyoqXG4gICAgICogQHRhcmdldCBwcm9jZXNzVHJhbnNhY3Rpb25zIHNob3VsZCBpbml0aWFsaXplIGV4dHJhY3RvciB3aXRoIHNwZWNpZmllZCBpZCBhbmQgaW5zZXJ0IHN0YXR1cyBpbnRvIGRiXG4gICAgICogQGRlcGVuZGVuY2llc1xuICAgICAqIEBzY2VuYXJpb1xuICAgICAqIC0gbW9jayBleHRyYWN0b3JcbiAgICAgKiAtIG1vY2sgYGhhc0RhdGFgIHRvIHJldHVybiB0cnVlIGZvciBvbmUgYm94XG4gICAgICogLSBzcHkgYGV4dHJhY3RCb3hEYXRhYCBhbmQgYHN0b3JlQm94ZXNgXG4gICAgICogLSBydW4gdGVzdCAoY2FsbCBgcHJvY2Vzc1RyYW5zYWN0aW9uc2ApXG4gICAgICogQGV4cGVjdGVkXG4gICAgICogLSB0byBjYWxsIGBleHRyYWN0Qm94RGF0YWAgZm9yIHRoZSBzcGVjaWZpYyBib3ggYW5kIGFsbCBpbnB1dCBleHRlbnNpb25zXG4gICAgICogLSB0byBpbnNlcnQgdGhlIGV4dHJhY3RlZCBib3ggdG8gZGF0YWJhc2VcbiAgICAgKiAtIHRvIHJldHVybiB0cnVlIHdoZW4gdG90YWwgcHJvY2VkdXJlIGlzIHN1Y2Nlc3NmdWxcbiAgICAgKiAtIHRvIHRyaWdnZXIgYElOU0VSVGAgY2FsbGJhY2tzIHdpdGggY29ycmVjdCBkYXRhXG4gICAgICovXG4gICAgaXQoJ3Nob3VsZCBwcm9jZXNzIGJveGVzIHdpdGggZGF0YSBhbmQgaW5zZXJ0IGRhdGEgaW50byBkYXRhYmFzZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGV4dHJhY3RvciA9IG5ldyBNb2NrZWRFcmdvRXh0cmFjdG9yKCk7XG4gICAgICBjb25zdCB0cmlnZ2VyQ2FsbGJhY2tzID0gdml0ZXN0LmZuKCk7XG4gICAgICBleHRyYWN0b3JbJ3RyaWdnZXJDYWxsYmFja3MnXSA9IHRyaWdnZXJDYWxsYmFja3M7XG4gICAgICBleHRyYWN0b3IuaGFzRGF0YSA9IChib3g6IFYxLk91dHB1dEluZm8gfCBPdXRwdXRCb3gpID0+IHtcbiAgICAgICAgaWYgKGJveC5ib3hJZCA9PSB0eC5vdXRwdXRzWzBdLmJveElkKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfTtcbiAgICAgIGNvbnN0IGV4dHJhY3RTcHkgPSB2aXRlc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoZXh0cmFjdGVkRGF0YSk7XG4gICAgICBleHRyYWN0b3IuZXh0cmFjdEJveERhdGEgPSBleHRyYWN0U3B5O1xuICAgICAgY29uc3Qgc3RvcmVTcHkgPSB2aXRlc3QuZm4oKS5tb2NrUmVzb2x2ZWRWYWx1ZSh0cnVlKTtcbiAgICAgIGNvbnN0IHNwZW5kU3B5ID0gdml0ZXN0LmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoW10pO1xuICAgICAgZXh0cmFjdG9yWydhY3Rpb25zJ10gPSB7XG4gICAgICAgIHN0b3JlQm94ZXM6IHN0b3JlU3B5LFxuICAgICAgICBzcGVuZEJveGVzOiBzcGVuZFNweSxcbiAgICAgIH0gYXMgdW5rbm93biBhcyBBYnN0cmFjdEVyZ29FeHRyYWN0b3JBY3Rpb248XG4gICAgICAgIEFic3RyYWN0Qm94RGF0YSxcbiAgICAgICAgQWJzdHJhY3RFcmdvRXh0cmFjdG9yRW50aXR5XG4gICAgICA+O1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZXh0cmFjdG9yLnByb2Nlc3NUcmFuc2FjdGlvbnMoW3R4XSwgYmxvY2spO1xuXG4gICAgICBleHBlY3QoZXh0cmFjdFNweSkudG9CZUNhbGxlZFRpbWVzKDEpO1xuICAgICAgZXhwZWN0KGV4dHJhY3RTcHkpLnRvQmVDYWxsZWRXaXRoKFxuICAgICAgICB0eC5vdXRwdXRzWzBdLFxuICAgICAgICBbdHguaW5wdXRzWzBdLmV4dGVuc2lvbiwge31dLFxuICAgICAgICB7fSxcbiAgICAgICk7XG4gICAgICBleHBlY3Qoc3RvcmVTcHkpLnRvQmVDYWxsZWRXaXRoKFtleHRyYWN0ZWREYXRhXSwgYmxvY2ssICdUZXN0Jyk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHRydWUpO1xuICAgICAgZXhwZWN0KHRyaWdnZXJDYWxsYmFja3MpLnRvQmVDYWxsZWRXaXRoKENhbGxiYWNrVHlwZS5JbnNlcnQsIFtcbiAgICAgICAgZXh0cmFjdGVkRGF0YSxcbiAgICAgIF0pO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogQHRhcmdldCBwcm9jZXNzVHJhbnNhY3Rpb25zIHNob3VsZCBleHRyYWN0IHNwZW5kaW5nIGluZm9ybWF0aW9uIG9mIGFsbCBpbnB1dCBib3hlc1xuICAgICAqIEBkZXBlbmRlbmNpZXNcbiAgICAgKiBAc2NlbmFyaW9cbiAgICAgKiAtIG1vY2sgZXh0cmFjdG9yIChoYXNEYXRhIHJldHVybnMgZmFsc2UgYXMgZGVmYXVsdClcbiAgICAgKiAtIHNweSBgZXh0cmFjdEJveERhdGFgLCBgc3RvcmVCb3hlc2AgYW5kIGBzcGVuZEJveGVzYFxuICAgICAqIC0gcnVuIHRlc3QgKGNhbGwgYHByb2Nlc3NUcmFuc2FjdGlvbnNgKVxuICAgICAqIEBleHBlY3RlZFxuICAgICAqIC0gbm90IHRvIGNhbGwgYGV4dHJhY3RCb3hEYXRhYCBhbmQgYHN0b3JlQm94ZXNgIHdoZW4gdGhlcmUgaXMgbm90IGFueSBib3ggd2l0aCBkYXRhXG4gICAgICogLSB0byBleHRyYWN0b3Igc3BlbmQgaW5mbyBvZiBpbnB1dCBib3hlcyBhbmQgY2FsbCBgc3BlbmRCb3hlc2BcbiAgICAgKiAtIHRvIHJldHVybiB0cnVlIHdoZW4gdG90YWwgcHJvY2VkdXJlIGlzIHN1Y2Nlc3NmdWxcbiAgICAgKiAtIHRvIHRyaWdnZXIgYFNQRU5EYCBjYWxsYmFja3Mgd2l0aCBjb3JyZWN0IGRhdGFcbiAgICAgKi9cbiAgICBpdCgnc2hvdWxkIGV4dHJhY3Qgc3BlbmRpbmcgaW5mb3JtYXRpb24gb2YgYWxsIGlucHV0IGJveGVzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZXh0cmFjdG9yID0gbmV3IE1vY2tlZEVyZ29FeHRyYWN0b3IoKTtcbiAgICAgIGNvbnN0IHRyaWdnZXJDYWxsYmFja3MgPSB2aXRlc3QuZm4oKTtcbiAgICAgIGV4dHJhY3RvclsndHJpZ2dlckNhbGxiYWNrcyddID0gdHJpZ2dlckNhbGxiYWNrcztcbiAgICAgIGNvbnN0IGV4dHJhY3RTcHkgPSB2aXRlc3QuZm4oKTtcbiAgICAgIGV4dHJhY3Rvci5leHRyYWN0Qm94RGF0YSA9IGV4dHJhY3RTcHk7XG4gICAgICBjb25zdCBzdG9yZVNweSA9IHZpdGVzdC5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKHRydWUpO1xuICAgICAgY29uc3Qgc3BlbmRTcHkgPSB2aXRlc3RcbiAgICAgICAgLmZuKClcbiAgICAgICAgLm1vY2tSZXNvbHZlZFZhbHVlKFtcbiAgICAgICAgICB7IGJveElkOiB0eC5pbnB1dHNbMF0uYm94SWQgfSxcbiAgICAgICAgICB7IGJveElkOiB0eC5pbnB1dHNbMV0uYm94SWQgfSxcbiAgICAgICAgXSk7XG4gICAgICBleHRyYWN0b3JbJ2FjdGlvbnMnXSA9IHtcbiAgICAgICAgc3RvcmVCb3hlczogc3RvcmVTcHksXG4gICAgICAgIHNwZW5kQm94ZXM6IHNwZW5kU3B5LFxuICAgICAgfSBhcyB1bmtub3duIGFzIEFic3RyYWN0RXJnb0V4dHJhY3RvckFjdGlvbjxcbiAgICAgICAgQWJzdHJhY3RCb3hEYXRhLFxuICAgICAgICBBYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHlcbiAgICAgID47XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBleHRyYWN0b3IucHJvY2Vzc1RyYW5zYWN0aW9ucyhbdHhdLCBibG9jayk7XG5cbiAgICAgIGV4cGVjdChleHRyYWN0U3B5KS5ub3QudG9CZUNhbGxlZCgpO1xuICAgICAgZXhwZWN0KHN0b3JlU3B5KS5ub3QudG9CZUNhbGxlZCgpO1xuICAgICAgZXhwZWN0KHNwZW5kU3B5KS50b0JlQ2FsbGVkV2l0aChcbiAgICAgICAgW1xuICAgICAgICAgIHsgYm94SWQ6IHR4LmlucHV0c1swXS5ib3hJZCwgdHhJZDogdHguaWQsIGluZGV4OiAxIH0sXG4gICAgICAgICAgeyBib3hJZDogdHguaW5wdXRzWzFdLmJveElkLCB0eElkOiB0eC5pZCwgaW5kZXg6IDIgfSxcbiAgICAgICAgXSxcbiAgICAgICAgYmxvY2ssXG4gICAgICAgICdUZXN0JyxcbiAgICAgICk7XG4gICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKHRydWUpO1xuICAgICAgZXhwZWN0KHRyaWdnZXJDYWxsYmFja3MpLnRvQmVDYWxsZWRXaXRoKENhbGxiYWNrVHlwZS5TcGVuZCwgW1xuICAgICAgICB7IGJveElkOiB0eC5pbnB1dHNbMF0uYm94SWQgfSxcbiAgICAgICAgeyBib3hJZDogdHguaW5wdXRzWzFdLmJveElkIH0sXG4gICAgICBdKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIEB0YXJnZXQgcHJvY2Vzc1RyYW5zYWN0aW9ucyBzaG91bGQgcmV0dXJuIGZhbHNlIGlmIGRhdGEgaW5zZXJ0aW9uIGZhaWxzXG4gICAgICogQGRlcGVuZGVuY2llc1xuICAgICAqIEBzY2VuYXJpb1xuICAgICAqIC0gbW9jayBleHRyYWN0b3JcbiAgICAgKiAtIG1vY2sgYGhhc0RhdGFgIHRvIHJldHVybiB0cnVlIGZvciBvbmUgYm94XG4gICAgICogLSBzcHkgYGV4dHJhY3RCb3hEYXRhYCBhbmQgYHN0b3JlQm94ZXNgXG4gICAgICogLSBydW4gdGVzdCAoY2FsbCBgcHJvY2Vzc1RyYW5zYWN0aW9uc2ApXG4gICAgICogQGV4cGVjdGVkXG4gICAgICogLSB0byByZXR1cm4gZmFsc2Ugd2hlbiBgaW5zZXJ0Qm94ZXNgIHJldHVybnMgZmFsc2VcbiAgICAgKiAtIG5vdCB0byBjYWxsIGBzcGVuZEJveGVzYCBpZiBkYXRhIGluc2VydGlvbiBmYWlsc1xuICAgICAqL1xuICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGlmIGRhdGEgaW5zZXJ0aW9uIGZhaWxzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZXh0cmFjdG9yID0gbmV3IE1vY2tlZEVyZ29FeHRyYWN0b3IoKTtcbiAgICAgIGV4dHJhY3Rvci5oYXNEYXRhID0gKGJveDogVjEuT3V0cHV0SW5mbyB8IE91dHB1dEJveCkgPT4ge1xuICAgICAgICBpZiAoYm94LmJveElkID09IHR4Lm91dHB1dHNbMF0uYm94SWQpIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9O1xuICAgICAgY29uc3QgZXh0cmFjdFNweSA9IHZpdGVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShleHRyYWN0ZWREYXRhKTtcbiAgICAgIGV4dHJhY3Rvci5leHRyYWN0Qm94RGF0YSA9IGV4dHJhY3RTcHk7XG4gICAgICBjb25zdCBzdG9yZVNweSA9IHZpdGVzdC5mbigpLm1vY2tSZXNvbHZlZFZhbHVlKGZhbHNlKTtcbiAgICAgIGNvbnN0IHNwZW5kU3B5ID0gdml0ZXN0LmZuKCk7XG4gICAgICBleHRyYWN0b3JbJ2FjdGlvbnMnXSA9IHtcbiAgICAgICAgc3RvcmVCb3hlczogc3RvcmVTcHksXG4gICAgICAgIHNwZW5kQm94ZXM6IHNwZW5kU3B5LFxuICAgICAgfSBhcyB1bmtub3duIGFzIEFic3RyYWN0RXJnb0V4dHJhY3RvckFjdGlvbjxcbiAgICAgICAgQWJzdHJhY3RCb3hEYXRhLFxuICAgICAgICBBYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHlcbiAgICAgID47XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBleHRyYWN0b3IucHJvY2Vzc1RyYW5zYWN0aW9ucyhbdHhdLCBibG9jayk7XG5cbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZmFsc2UpO1xuICAgICAgZXhwZWN0KHNwZW5kU3B5KS5ub3QudG9CZUNhbGxlZCgpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnZm9ya0Jsb2NrJywgKCkgPT4ge1xuICAgIC8qKlxuICAgICAqIEB0YXJnZXQgZm9ya0Jsb2NrIHNob3VsZCByZW1vdmUgYWxsIGRhdGEgZXh0cmFjdGVkIGZyb20gdGhlIHNwZWNpZmllZCBibG9ja1xuICAgICAqIEBkZXBlbmRlbmNpZXNcbiAgICAgKiBAc2NlbmFyaW9cbiAgICAgKiAtIG1vY2sgZXh0cmFjdG9yXG4gICAgICogLSBzcHkgYGRlbGV0ZUJsb2NrQm94ZXNgXG4gICAgICogLSBydW4gdGVzdCAoY2FsbCBgZm9ya0Jsb2NrYClcbiAgICAgKiBAZXhwZWN0ZWRcbiAgICAgKiAtIHRvIGNhbGwgYGRlbGV0ZUJsb2NrQm94ZXNgIGZvciB0aGUgc3BlY2lmaWMgYm94XG4gICAgICogLSB0byB0cmlnZ2VyIGBERUxFVEVgIGNhbGxiYWNrcyBmb3IgdGhlIGRlbGV0ZWQgYm94XG4gICAgICogLSB0byB0cmlnZ2VyIGBVUERBVEVgIGNhbGxiYWNrcyBmb3IgdGhlIHNwZW50IGJveFxuICAgICAqL1xuICAgIGl0KCdzaG91bGQgcmVtb3ZlIGFsbCBkYXRhIGV4dHJhY3RlZCBmcm9tIHRoZSBzcGVjaWZpZWQgYmxvY2snLCBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBleHRyYWN0b3IgPSBuZXcgTW9ja2VkRXJnb0V4dHJhY3RvcigpO1xuICAgICAgY29uc3QgcmVtb3ZlU3B5ID0gdml0ZXN0LmZuKCkubW9ja1Jlc29sdmVkVmFsdWUoe1xuICAgICAgICBkZWxldGVkRGF0YTogW3sgYm94SWQ6ICdib3gxJyB9XSxcbiAgICAgICAgdXBkYXRlZERhdGE6IFt7IGJveElkOiAnYm94MicgfV0sXG4gICAgICB9KTtcbiAgICAgIGV4dHJhY3RvclsnYWN0aW9ucyddID0ge1xuICAgICAgICBkZWxldGVCbG9ja0JveGVzOiByZW1vdmVTcHksXG4gICAgICB9IGFzIHVua25vd24gYXMgQWJzdHJhY3RFcmdvRXh0cmFjdG9yQWN0aW9uPFxuICAgICAgICBBYnN0cmFjdEJveERhdGEsXG4gICAgICAgIEFic3RyYWN0RXJnb0V4dHJhY3RvckVudGl0eVxuICAgICAgPjtcbiAgICAgIGNvbnN0IHRyaWdnZXJDYWxsYmFja1NweSA9IHZpdGVzdC5mbigpLm1vY2tDbGVhcigpO1xuICAgICAgZXh0cmFjdG9yWyd0cmlnZ2VyQ2FsbGJhY2tzJ10gPSB0cmlnZ2VyQ2FsbGJhY2tTcHk7XG4gICAgICBhd2FpdCBleHRyYWN0b3IuZm9ya0Jsb2NrKGJsb2NrLmhhc2gpO1xuICAgICAgZXhwZWN0KHJlbW92ZVNweSkudG9CZUNhbGxlZFdpdGgoYmxvY2suaGFzaCwgJ1Rlc3QnKTtcbiAgICAgIGV4cGVjdCh0cmlnZ2VyQ2FsbGJhY2tTcHkpLnRvQmVDYWxsZWRXaXRoKENhbGxiYWNrVHlwZS5EZWxldGUsIFtcbiAgICAgICAgeyBib3hJZDogJ2JveDEnIH0sXG4gICAgICBdKTtcbiAgICAgIGV4cGVjdCh0cmlnZ2VyQ2FsbGJhY2tTcHkpLnRvQmVDYWxsZWRXaXRoKENhbGxiYWNrVHlwZS5VcGRhdGUsIFtcbiAgICAgICAgeyBib3hJZDogJ2JveDInIH0sXG4gICAgICBdKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2hvb2snLCAoKSA9PiB7XG4gICAgLyoqXG4gICAgICogQHRhcmdldCBob29rIHNob3VsZCBob29rIGEgbmV3IGNhbGxiYWNrIG9uIGluc2VydCB3aXRoIHRoZSBuZXcgaWRcbiAgICAgKiBAZGVwZW5kZW5jaWVzXG4gICAgICogQHNjZW5hcmlvXG4gICAgICogLSBtb2NrIGV4dHJhY3RvclxuICAgICAqIC0gbW9jayBhIGNhbGxiYWNrIGZvciBpbnNlcnRcbiAgICAgKiAtIHJ1biB0ZXN0IChjYWxsIGBob29rYClcbiAgICAgKiBAZXhwZWN0ZWRcbiAgICAgKiAtIGhvb2sgdGhlIGNhbGxiYWNrIHdpdGggdGhlIHNwZWNpZmllZCBpZFxuICAgICAqIC0gcmV0dXJuIHRydWVcbiAgICAgKi9cbiAgICBpdCgnc2hvdWxkIGhvb2sgYSBuZXcgY2FsbGJhY2sgb24gaW5zZXJ0IHdpdGggdGhlIG5ldyBpZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGV4dHJhY3RvciA9IG5ldyBNb2NrZWRFcmdvRXh0cmFjdG9yKCk7XG4gICAgICBjb25zdCBpbnNlcnRDYWxsYmFjayA9IHZpdGVzdC5mbigpO1xuICAgICAgY29uc3QgaWQgPSBhd2FpdCBleHRyYWN0b3IuaG9vayhDYWxsYmFja1R5cGUuSW5zZXJ0LCBpbnNlcnRDYWxsYmFjayk7XG4gICAgICBleHBlY3QoZXh0cmFjdG9yWydjYWxsYmFja3MnXVtDYWxsYmFja1R5cGUuSW5zZXJ0XSkudG9FcXVhbChcbiAgICAgICAgbmV3IE1hcCgpLnNldChpZCwgaW5zZXJ0Q2FsbGJhY2spLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3VuaG9vaycsICgpID0+IHtcbiAgICAvKipcbiAgICAgKiBAdGFyZ2V0IHVuaG9vayBzaG91bGQgdW5ob29rIHRoZSBjYWxsYmFjayBvbiBpbnNlcnQgd2l0aCB0aGUgc3BlY2lmaWVkIGlkXG4gICAgICogQGRlcGVuZGVuY2llc1xuICAgICAqIEBzY2VuYXJpb1xuICAgICAqIC0gbW9jayBleHRyYWN0b3JcbiAgICAgKiAtIG1vY2sgYSBjYWxsYmFjayBmb3IgaW5zZXJ0XG4gICAgICogLSBob29rIHRoZSBjYWxsYmFja1xuICAgICAqIC0gcnVuIHRlc3QgKGNhbGwgYHVuaG9va2ApXG4gICAgICogQGV4cGVjdGVkXG4gICAgICogLSB1bmhvb2sgdGhlIGNhbGxiYWNrIHdpdGggdGhlIHNwZWNpZmllZCBpZFxuICAgICAqIC0gcmV0dXJuIHRydWVcbiAgICAgKi9cbiAgICBpdCgnc2hvdWxkIHVuaG9vayB0aGUgY2FsbGJhY2sgb24gaW5zZXJ0IHdpdGggdGhlIHNwZWNpZmllZCBpZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGV4dHJhY3RvciA9IG5ldyBNb2NrZWRFcmdvRXh0cmFjdG9yKCk7XG4gICAgICBjb25zdCBpbnNlcnRDYWxsYmFjayA9IHZpdGVzdC5mbigpO1xuICAgICAgY29uc3QgaWQgPSBhd2FpdCBleHRyYWN0b3IuaG9vayhDYWxsYmFja1R5cGUuSW5zZXJ0LCBpbnNlcnRDYWxsYmFjayk7XG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBleHRyYWN0b3IudW5ob29rKENhbGxiYWNrVHlwZS5JbnNlcnQsIGlkKTtcbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmVUcnV0aHkoKTtcbiAgICAgIGV4cGVjdChleHRyYWN0b3JbJ2NhbGxiYWNrcyddW0NhbGxiYWNrVHlwZS5JbnNlcnRdLmdldChpZCkpLnRvRXF1YWwoXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBAdGFyZ2V0IHVuaG9vayBzaG91bGQgbm90IHVuaG9vayBjYWxsYmFja3Mgd2l0aCB0aGUgc2FtZSBpZCBvbiBvdGhlciB0eXBlc1xuICAgICAqIEBkZXBlbmRlbmNpZXNcbiAgICAgKiBAc2NlbmFyaW9cbiAgICAgKiAtIG1vY2sgZXh0cmFjdG9yXG4gICAgICogLSBtb2NrIHR3byBjYWxsYmFja3MgZm9yIGluc2VydFxuICAgICAqIC0gaG9vayB0aGUgZmlyc3QgY2FsbGJhY2tcbiAgICAgKiAtIHJ1biB0ZXN0IChjYWxsIGB1bmhvb2tgIHdpdGggdGhlIHNhbWUgaWQgZm9yIHNlY29uZCBjYWxsYmFjaylcbiAgICAgKiBAZXhwZWN0ZWRcbiAgICAgKiAtIG5vdCB0byBjaGFuZ2UgaG9va2VkIGNhbGxiYWNrcyB3aGVuIHRoZSBjYWxsYmFjayB3aXRoIHRoZSBpZFxuICAgICAqIGRvZXNuJ3QgZXhpc3RzIG9uIHRoZSBzcGVjaWZpZWQgdHlwZVxuICAgICAqIC0gcmV0dXJuIGZhbHNlXG4gICAgICovXG4gICAgaXQoJ3Nob3VsZCBub3QgdW5ob29rIGNhbGxiYWNrcyB3aXRoIHRoZSBzYW1lIGlkIG9uIG90aGVyIHR5cGVzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZXh0cmFjdG9yID0gbmV3IE1vY2tlZEVyZ29FeHRyYWN0b3IoKTtcbiAgICAgIGNvbnN0IGluc2VydENhbGxiYWNrID0gdml0ZXN0LmZuKCk7XG4gICAgICBjb25zdCBpZCA9IGF3YWl0IGV4dHJhY3Rvci5ob29rKENhbGxiYWNrVHlwZS5JbnNlcnQsIGluc2VydENhbGxiYWNrKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGV4dHJhY3Rvci51bmhvb2soQ2FsbGJhY2tUeXBlLlVwZGF0ZSwgaWQpO1xuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZUZhbHN5KCk7XG4gICAgICBleHBlY3QoZXh0cmFjdG9yWydjYWxsYmFja3MnXVtDYWxsYmFja1R5cGUuSW5zZXJ0XS5nZXQoaWQpKS50b0VxdWFsKFxuICAgICAgICBpbnNlcnRDYWxsYmFjayxcbiAgICAgICk7XG4gICAgICBleHBlY3QoZXh0cmFjdG9yWydjYWxsYmFja3MnXVtDYWxsYmFja1R5cGUuVXBkYXRlXS5nZXQoaWQpKS50b0VxdWFsKFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndHJpZ2dlckNhbGxiYWNrcycsICgpID0+IHtcbiAgICAvKipcbiAgICAgKiBAdGFyZ2V0IHRyaWdnZXJDYWxsYmFja3Mgc2hvdWxkIHRyaWdnZXIgYWxsIGNhbGxiYWNrcyBob29rZWQgb24gYSB0eXBlXG4gICAgICogQGRlcGVuZGVuY2llc1xuICAgICAqIEBzY2VuYXJpb1xuICAgICAqIC0gbW9jayBleHRyYWN0b3JcbiAgICAgKiAtIG1vY2sgYSBjYWxsYmFjayBmb3IgaW5zZXJ0XG4gICAgICogLSBob29rIHRoZSBjYWxsYmFja1xuICAgICAqIC0gcnVuIHRlc3QgKGNhbGwgYHRyaWdnZXJDYWxsYmFja3NgIGZvciBpbnNlcnQgdHlwZSlcbiAgICAgKiBAZXhwZWN0ZWRcbiAgICAgKiAtIHRyaWdnZXIgYWxsIGNhbGxiYWNrcyB3aXRoIHRoZSBzcGVjaWZpZWQgaWRcbiAgICAgKi9cbiAgICBpdCgnc2hvdWxkIHRyaWdnZXIgYWxsIGNhbGxiYWNrcyBob29rZWQgb24gYSB0eXBlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZXh0cmFjdG9yID0gbmV3IE1vY2tlZEVyZ29FeHRyYWN0b3IoKTtcbiAgICAgIGNvbnN0IGluc2VydENhbGxiYWNrID0gdml0ZXN0LmZuKCk7XG4gICAgICBhd2FpdCBleHRyYWN0b3IuaG9vayhDYWxsYmFja1R5cGUuSW5zZXJ0LCBpbnNlcnRDYWxsYmFjayk7XG4gICAgICBjb25zdCBpbnNlcnRlZERhdGEgPSBbeyBib3hJZDogJ2JveElkJywgc2VyaWFsaXplZDogJ3NlcmlhbGl6ZWQnIH1dO1xuICAgICAgYXdhaXQgZXh0cmFjdG9yWyd0cmlnZ2VyQ2FsbGJhY2tzJ10oQ2FsbGJhY2tUeXBlLkluc2VydCwgaW5zZXJ0ZWREYXRhKTtcbiAgICAgIGV4cGVjdChpbnNlcnRDYWxsYmFjaykudG9CZUNhbGxlZFdpdGgoaW5zZXJ0ZWREYXRhKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -1,15 +0,0 @@
1
- import { DataSource } from '@rosen-bridge/extended-typeorm';
2
- import { BlockInfo } from '@rosen-bridge/scanner-interfaces';
3
- import { AbstractErgoExtractorAction, AbstractErgoExtractorEntity, AbstractBoxData } from '../lib';
4
- export declare class TestErgoExtractorAction extends AbstractErgoExtractorAction<AbstractBoxData, AbstractErgoExtractorEntity> {
5
- constructor(dataSource: DataSource);
6
- /**
7
- * create the test database entity from data and block information
8
- */
9
- createEntity: (boxes: AbstractBoxData[], block: BlockInfo, extractor: string) => Omit<AbstractErgoExtractorEntity, "id">[];
10
- /**
11
- * convert the database entity back to raw data
12
- */
13
- convertEntityToData: (entities: AbstractErgoExtractorEntity[]) => AbstractBoxData[];
14
- }
15
- //# sourceMappingURL=AbstractErgoExtractorAction.mock.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbstractErgoExtractorAction.mock.d.ts","sourceRoot":"","sources":["../../tests/AbstractErgoExtractorAction.mock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAE7D,OAAO,EACL,2BAA2B,EAC3B,2BAA2B,EAC3B,eAAe,EAChB,MAAM,QAAQ,CAAC;AAGhB,qBAAa,uBAAwB,SAAQ,2BAA2B,CACtE,eAAe,EACf,2BAA2B,CAC5B;gBACa,UAAU,EAAE,UAAU;IAIlC;;OAEG;IACH,YAAY,GACV,OAAO,eAAe,EAAE,EACxB,OAAO,SAAS,EAChB,WAAW,MAAM,KAChB,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,EAAE,CAQ1C;IAEF;;OAEG;IACH,mBAAmB,GACjB,UAAU,2BAA2B,EAAE,KACtC,eAAe,EAAE,CAElB;CACH"}
@@ -1,27 +0,0 @@
1
- import { pick } from 'lodash-es';
2
- import { AbstractErgoExtractorAction, } from '../lib';
3
- import { TestEntity } from './testUtils';
4
- export class TestErgoExtractorAction extends AbstractErgoExtractorAction {
5
- constructor(dataSource) {
6
- super(dataSource, TestEntity);
7
- }
8
- /**
9
- * create the test database entity from data and block information
10
- */
11
- createEntity = (boxes, block, extractor) => {
12
- return boxes.map((box) => ({
13
- boxId: box.boxId,
14
- block: block.hash,
15
- height: block.height,
16
- serialized: box.serialized,
17
- extractor: extractor,
18
- }));
19
- };
20
- /**
21
- * convert the database entity back to raw data
22
- */
23
- convertEntityToData = (entities) => {
24
- return entities.map((data) => pick(data, ['boxId', 'serialized']));
25
- };
26
- }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RFcmdvRXh0cmFjdG9yQWN0aW9uLm1vY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0cy9BYnN0cmFjdEVyZ29FeHRyYWN0b3JBY3Rpb24ubW9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBR2pDLE9BQU8sRUFDTCwyQkFBMkIsR0FHNUIsTUFBTSxRQUFRLENBQUM7QUFDaEIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUV6QyxNQUFNLE9BQU8sdUJBQXdCLFNBQVEsMkJBRzVDO0lBQ0MsWUFBWSxVQUFzQjtRQUNoQyxLQUFLLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILFlBQVksR0FBRyxDQUNiLEtBQXdCLEVBQ3hCLEtBQWdCLEVBQ2hCLFNBQWlCLEVBQzBCLEVBQUU7UUFDN0MsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSztZQUNoQixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDakIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVTtZQUMxQixTQUFTLEVBQUUsU0FBUztTQUNyQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUMsQ0FBQztJQUVGOztPQUVHO0lBQ0gsbUJBQW1CLEdBQUcsQ0FDcEIsUUFBdUMsRUFDcEIsRUFBRTtRQUNyQixPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5pbXBvcnQgeyBwaWNrIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEJsb2NrSW5mbyB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lci1pbnRlcmZhY2VzJztcblxuaW1wb3J0IHtcbiAgQWJzdHJhY3RFcmdvRXh0cmFjdG9yQWN0aW9uLFxuICBBYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHksXG4gIEFic3RyYWN0Qm94RGF0YSxcbn0gZnJvbSAnLi4vbGliJztcbmltcG9ydCB7IFRlc3RFbnRpdHkgfSBmcm9tICcuL3Rlc3RVdGlscyc7XG5cbmV4cG9ydCBjbGFzcyBUZXN0RXJnb0V4dHJhY3RvckFjdGlvbiBleHRlbmRzIEFic3RyYWN0RXJnb0V4dHJhY3RvckFjdGlvbjxcbiAgQWJzdHJhY3RCb3hEYXRhLFxuICBBYnN0cmFjdEVyZ29FeHRyYWN0b3JFbnRpdHlcbj4ge1xuICBjb25zdHJ1Y3RvcihkYXRhU291cmNlOiBEYXRhU291cmNlKSB7XG4gICAgc3VwZXIoZGF0YVNvdXJjZSwgVGVzdEVudGl0eSk7XG4gIH1cblxuICAvKipcbiAgICogY3JlYXRlIHRoZSB0ZXN0IGRhdGFiYXNlIGVudGl0eSBmcm9tIGRhdGEgYW5kIGJsb2NrIGluZm9ybWF0aW9uXG4gICAqL1xuICBjcmVhdGVFbnRpdHkgPSAoXG4gICAgYm94ZXM6IEFic3RyYWN0Qm94RGF0YVtdLFxuICAgIGJsb2NrOiBCbG9ja0luZm8sXG4gICAgZXh0cmFjdG9yOiBzdHJpbmcsXG4gICk6IE9taXQ8QWJzdHJhY3RFcmdvRXh0cmFjdG9yRW50aXR5LCAnaWQnPltdID0+IHtcbiAgICByZXR1cm4gYm94ZXMubWFwKChib3gpID0+ICh7XG4gICAgICBib3hJZDogYm94LmJveElkLFxuICAgICAgYmxvY2s6IGJsb2NrLmhhc2gsXG4gICAgICBoZWlnaHQ6IGJsb2NrLmhlaWdodCxcbiAgICAgIHNlcmlhbGl6ZWQ6IGJveC5zZXJpYWxpemVkLFxuICAgICAgZXh0cmFjdG9yOiBleHRyYWN0b3IsXG4gICAgfSkpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBjb252ZXJ0IHRoZSBkYXRhYmFzZSBlbnRpdHkgYmFjayB0byByYXcgZGF0YVxuICAgKi9cbiAgY29udmVydEVudGl0eVRvRGF0YSA9IChcbiAgICBlbnRpdGllczogQWJzdHJhY3RFcmdvRXh0cmFjdG9yRW50aXR5W10sXG4gICk6IEFic3RyYWN0Qm94RGF0YVtdID0+IHtcbiAgICByZXR1cm4gZW50aXRpZXMubWFwKChkYXRhKSA9PiBwaWNrKGRhdGEsIFsnYm94SWQnLCAnc2VyaWFsaXplZCddKSk7XG4gIH07XG59XG4iXX0=
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=AbstractErgoExtractorAction.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbstractErgoExtractorAction.spec.d.ts","sourceRoot":"","sources":["../../tests/AbstractErgoExtractorAction.spec.ts"],"names":[],"mappings":""}