@rosen-bridge/raw-data-provider 0.1.0-0022763f

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 (87) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +24 -0
  3. package/dist/abstractRawDataProvider.d.ts +40 -0
  4. package/dist/abstractRawDataProvider.d.ts.map +1 -0
  5. package/dist/abstractRawDataProvider.js +89 -0
  6. package/dist/actions/index.d.ts +2 -0
  7. package/dist/actions/index.d.ts.map +1 -0
  8. package/dist/actions/index.js +2 -0
  9. package/dist/actions/rawDataProviderStateEntityAction.d.ts +42 -0
  10. package/dist/actions/rawDataProviderStateEntityAction.d.ts.map +1 -0
  11. package/dist/actions/rawDataProviderStateEntityAction.js +65 -0
  12. package/dist/constants.d.ts +2 -0
  13. package/dist/constants.d.ts.map +1 -0
  14. package/dist/constants.js +2 -0
  15. package/dist/entities/index.d.ts +2 -0
  16. package/dist/entities/index.d.ts.map +1 -0
  17. package/dist/entities/index.js +2 -0
  18. package/dist/entities/rawDataProviderStateEntity.d.ts +6 -0
  19. package/dist/entities/rawDataProviderStateEntity.d.ts.map +1 -0
  20. package/dist/entities/rawDataProviderStateEntity.js +32 -0
  21. package/dist/index.d.ts +5 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +5 -0
  24. package/dist/migrations/index.d.ts +7 -0
  25. package/dist/migrations/index.d.ts.map +1 -0
  26. package/dist/migrations/index.js +7 -0
  27. package/dist/migrations/postgres/1762178180934-migration.d.ts +7 -0
  28. package/dist/migrations/postgres/1762178180934-migration.d.ts.map +1 -0
  29. package/dist/migrations/postgres/1762178180934-migration.js +18 -0
  30. package/dist/migrations/postgres/index.d.ts +2 -0
  31. package/dist/migrations/postgres/index.d.ts.map +1 -0
  32. package/dist/migrations/postgres/index.js +2 -0
  33. package/dist/migrations/sqlite/1762178166781-migration.d.ts +7 -0
  34. package/dist/migrations/sqlite/1762178166781-migration.d.ts.map +1 -0
  35. package/dist/migrations/sqlite/1762178166781-migration.js +18 -0
  36. package/dist/migrations/sqlite/index.d.ts +2 -0
  37. package/dist/migrations/sqlite/index.d.ts.map +1 -0
  38. package/dist/migrations/sqlite/index.js +2 -0
  39. package/dist/providers/bitcoin/bitcoinEsploraRawDataProvider.d.ts +20 -0
  40. package/dist/providers/bitcoin/bitcoinEsploraRawDataProvider.d.ts.map +1 -0
  41. package/dist/providers/bitcoin/bitcoinEsploraRawDataProvider.js +38 -0
  42. package/dist/providers/bitcoin/bitcoinRpcRawDataProvider.d.ts +21 -0
  43. package/dist/providers/bitcoin/bitcoinRpcRawDataProvider.d.ts.map +1 -0
  44. package/dist/providers/bitcoin/bitcoinRpcRawDataProvider.js +49 -0
  45. package/dist/providers/bitcoin/index.d.ts +2 -0
  46. package/dist/providers/bitcoin/index.d.ts.map +1 -0
  47. package/dist/providers/bitcoin/index.js +2 -0
  48. package/dist/providers/bitcoinRunes/bitcoinRunesRpcRawDataProvider.d.ts +21 -0
  49. package/dist/providers/bitcoinRunes/bitcoinRunesRpcRawDataProvider.d.ts.map +1 -0
  50. package/dist/providers/bitcoinRunes/bitcoinRunesRpcRawDataProvider.js +49 -0
  51. package/dist/providers/bitcoinRunes/index.d.ts +2 -0
  52. package/dist/providers/bitcoinRunes/index.d.ts.map +1 -0
  53. package/dist/providers/bitcoinRunes/index.js +2 -0
  54. package/dist/providers/cardano/cardanoKoiosRawDataProvider.d.ts +108 -0
  55. package/dist/providers/cardano/cardanoKoiosRawDataProvider.d.ts.map +1 -0
  56. package/dist/providers/cardano/cardanoKoiosRawDataProvider.js +44 -0
  57. package/dist/providers/cardano/index.d.ts +2 -0
  58. package/dist/providers/cardano/index.d.ts.map +1 -0
  59. package/dist/providers/cardano/index.js +2 -0
  60. package/dist/providers/doge/dogeRpcRawDataProvider.d.ts +21 -0
  61. package/dist/providers/doge/dogeRpcRawDataProvider.d.ts.map +1 -0
  62. package/dist/providers/doge/dogeRpcRawDataProvider.js +49 -0
  63. package/dist/providers/doge/index.d.ts +2 -0
  64. package/dist/providers/doge/index.d.ts.map +1 -0
  65. package/dist/providers/doge/index.js +2 -0
  66. package/dist/providers/ergo/ergoExplorerRawDataProvider.d.ts +95 -0
  67. package/dist/providers/ergo/ergoExplorerRawDataProvider.d.ts.map +1 -0
  68. package/dist/providers/ergo/ergoExplorerRawDataProvider.js +44 -0
  69. package/dist/providers/ergo/ergoNodeRawDataProvider.d.ts +148 -0
  70. package/dist/providers/ergo/ergoNodeRawDataProvider.d.ts.map +1 -0
  71. package/dist/providers/ergo/ergoNodeRawDataProvider.js +47 -0
  72. package/dist/providers/ergo/index.d.ts +3 -0
  73. package/dist/providers/ergo/index.d.ts.map +1 -0
  74. package/dist/providers/ergo/index.js +3 -0
  75. package/dist/providers/evm/evmRawDataProvider.d.ts +23 -0
  76. package/dist/providers/evm/evmRawDataProvider.d.ts.map +1 -0
  77. package/dist/providers/evm/evmRawDataProvider.js +54 -0
  78. package/dist/providers/evm/index.d.ts +2 -0
  79. package/dist/providers/evm/index.d.ts.map +1 -0
  80. package/dist/providers/evm/index.js +2 -0
  81. package/dist/providers/index.d.ts +7 -0
  82. package/dist/providers/index.d.ts.map +1 -0
  83. package/dist/providers/index.js +7 -0
  84. package/dist/types.d.ts +11 -0
  85. package/dist/types.d.ts.map +1 -0
  86. package/dist/types.js +2 -0
  87. package/package.json +57 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ # @rosen-bridge/raw-data-provider
2
+
3
+ ## 0.1.0-0022763f
4
+
5
+ ### Minor Changes
6
+
7
+ - Initialized raw-data-provider package
package/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # @rosen-bridge/raw-data-provider
2
+
3
+ ## Table of contents
4
+
5
+ - [Introduction](#introduction)
6
+ - [Installation](#installation)
7
+
8
+ ## Introduction
9
+
10
+ This package populates missing rawData values for extractors records stored in the database.
11
+
12
+ ## Installation
13
+
14
+ npm:
15
+
16
+ ```sh
17
+ npm i @rosen-bridge/raw-data-provider
18
+ ```
19
+
20
+ yarn:
21
+
22
+ ```sh
23
+ yarn add @rosen-bridge/raw-data-provider
24
+ ```
@@ -0,0 +1,40 @@
1
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
+ import { ObservationEntity } from '@rosen-bridge/abstract-observation-extractor';
3
+ import { DataSource } from '@rosen-bridge/extended-typeorm';
4
+ import { RawDataProviderStateEntityAction } from './actions/rawDataProviderStateEntityAction';
5
+ import { RawDataProviderStateEntity } from './entities';
6
+ export declare abstract class AbstractRawDataProvider {
7
+ protected chain: string;
8
+ protected dataSource: DataSource;
9
+ protected logger: AbstractLogger;
10
+ protected action: RawDataProviderStateEntityAction;
11
+ constructor(chain: string, dataSource: DataSource, logger?: AbstractLogger);
12
+ /**
13
+ * Retrieves the current RawDataProviderStateEntity for the configured chain.
14
+ *
15
+ * @returns The existing or newly created RawDataProviderStateEntity
16
+ */
17
+ protected fetchOrCreateStateForChain: () => Promise<RawDataProviderStateEntity>;
18
+ /**
19
+ * Iterates through observations of the current chain and fills their rawData field.
20
+ * Updates the syncedHeight after each processed observation until the chain is fully synced.
21
+ *
22
+ * @returns void
23
+ */
24
+ fillRawData: () => Promise<void>;
25
+ /**
26
+ * Process observation and write rawData
27
+ *
28
+ * @param observation
29
+ * @return {boolean} determining result of process done successfully or no
30
+ */
31
+ protected abstract processObservation: (observation: ObservationEntity) => Promise<boolean>;
32
+ /**
33
+ * Fills the raw data field for all ObservationEntity records of the current chain of input RawDataProviderStateEntity
34
+ *
35
+ * @param state
36
+ * @returns
37
+ */
38
+ protected fillObservationsRawData: (state: RawDataProviderStateEntity) => Promise<RawDataProviderStateEntity>;
39
+ }
40
+ //# sourceMappingURL=abstractRawDataProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abstractRawDataProvider.d.ts","sourceRoot":"","sources":["../lib/abstractRawDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,4CAA4C,CAAC;AAC9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAExD,8BAAsB,uBAAuB;IAIzC,SAAS,CAAC,KAAK,EAAE,MAAM;IACvB,SAAS,CAAC,UAAU,EAAE,UAAU;IAChC,SAAS,CAAC,MAAM,EAAE,cAAc;IALlC,SAAS,CAAC,MAAM,EAAE,gCAAgC,CAAC;gBAGvC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,UAAU,EACtB,MAAM,GAAE,cAAkC;IAKtD;;;;OAIG;IACH,SAAS,CAAC,0BAA0B,QACxB,OAAO,CAAC,0BAA0B,CAAC,CAuB3C;IAEJ;;;;;OAKG;IACH,WAAW,QAAa,OAAO,CAAC,IAAI,CAAC,CAwBnC;IAEF;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CACrC,WAAW,EAAE,iBAAiB,KAC3B,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtB;;;;;OAKG;IACH,SAAS,CAAC,uBAAuB,GAC/B,OAAO,0BAA0B,KAChC,OAAO,CAAC,0BAA0B,CAAC,CAgCpC;CACH"}
@@ -0,0 +1,89 @@
1
+ import { DummyLogger } from '@rosen-bridge/abstract-logger';
2
+ import { RawDataProviderStateEntityAction } from './actions/rawDataProviderStateEntityAction';
3
+ export class AbstractRawDataProvider {
4
+ chain;
5
+ dataSource;
6
+ logger;
7
+ action;
8
+ constructor(chain, dataSource, logger = new DummyLogger()) {
9
+ this.chain = chain;
10
+ this.dataSource = dataSource;
11
+ this.logger = logger;
12
+ this.action = new RawDataProviderStateEntityAction(dataSource, logger);
13
+ }
14
+ /**
15
+ * Retrieves the current RawDataProviderStateEntity for the configured chain.
16
+ *
17
+ * @returns The existing or newly created RawDataProviderStateEntity
18
+ */
19
+ fetchOrCreateStateForChain = async () => {
20
+ let state = await this.action.fetchByChain(this.chain);
21
+ if (!state) {
22
+ const latestChainObservation = await this.action.fetchLatestObservationByChain(this.chain);
23
+ let lastHeight = 0;
24
+ if (!latestChainObservation) {
25
+ this.logger.warn(`Not find any ObservationEntity for the ${this.chain} chain`);
26
+ }
27
+ else {
28
+ lastHeight = latestChainObservation.height;
29
+ }
30
+ state = await this.action.store({
31
+ chain: this.chain,
32
+ lastHeight: lastHeight,
33
+ syncedHeight: 0,
34
+ });
35
+ this.logger.debug(`Created RawDataProviderStateEntity on [${this.chain}] chain at height ${lastHeight}`);
36
+ }
37
+ return state;
38
+ };
39
+ /**
40
+ * Iterates through observations of the current chain and fills their rawData field.
41
+ * Updates the syncedHeight after each processed observation until the chain is fully synced.
42
+ *
43
+ * @returns void
44
+ */
45
+ fillRawData = async () => {
46
+ this.logger.info(`RawDataProvider Starting raw-data filling for [${this.chain}] chain`);
47
+ let state = await this.fetchOrCreateStateForChain();
48
+ while (state.syncedHeight < state.lastHeight) {
49
+ this.logger.debug(`RawDataProvider Fetching observations for [${this.chain}] chain from height > ${state.syncedHeight}`);
50
+ try {
51
+ const result = await this.fillObservationsRawData(state);
52
+ state = result;
53
+ }
54
+ catch (err) {
55
+ this.logger.error(`RawDataProvider Error: ${err}`);
56
+ if (err instanceof Error && err.stack)
57
+ this.logger.error(err.stack);
58
+ break;
59
+ }
60
+ }
61
+ this.logger.info(`RawDataProvider Finished filling raw-data for [${this.chain}] chain`);
62
+ };
63
+ /**
64
+ * Fills the raw data field for all ObservationEntity records of the current chain of input RawDataProviderStateEntity
65
+ *
66
+ * @param state
67
+ * @returns
68
+ */
69
+ fillObservationsRawData = async (state) => {
70
+ const observations = await this.action.fetchChainObservations(this.chain, state.syncedHeight);
71
+ if (observations.length === 0)
72
+ throw new Error(`ImpossibleBehavior: No more observations found for [${this.chain}] chain`);
73
+ for (const observation of observations) {
74
+ this.logger.debug(`RawDataProvider Updating rawData for observation at height ${observation.height} for [${this.chain}] chain`);
75
+ const isSuccess = await this.processObservation(observation);
76
+ if (isSuccess) {
77
+ this.logger.debug(`RawDataProvider successfully processed observation at height ${observation.height} for [${this.chain}] chain`);
78
+ }
79
+ else {
80
+ throw new Error(`RawDataProvider failed to process observation at height ${observation.height} for [${this.chain}] chain`);
81
+ }
82
+ state.syncedHeight = observation.height;
83
+ await this.action.store(state);
84
+ this.logger.debug(`RawDataProvider syncedHeight updated to ${observation.height} for [${this.chain}] chain`);
85
+ }
86
+ return state;
87
+ };
88
+ }
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RSYXdEYXRhUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvYWJzdHJhY3RSYXdEYXRhUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFrQixXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUk1RSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUc5RixNQUFNLE9BQWdCLHVCQUF1QjtJQUkvQjtJQUNBO0lBQ0E7SUFMRixNQUFNLENBQW1DO0lBRW5ELFlBQ1ksS0FBYSxFQUNiLFVBQXNCLEVBQ3RCLFNBQXlCLElBQUksV0FBVyxFQUFFO1FBRjFDLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQW9DO1FBRXBELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxnQ0FBZ0MsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVEOzs7O09BSUc7SUFDTywwQkFBMEIsR0FDbEMsS0FBSyxJQUF5QyxFQUFFO1FBQzlDLElBQUksS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sc0JBQXNCLEdBQzFCLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDZCwwQ0FBMEMsSUFBSSxDQUFDLEtBQUssUUFBUSxDQUM3RCxDQUFDO1lBQ0osQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFVBQVUsR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQUM7WUFDN0MsQ0FBQztZQUNELEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2dCQUM5QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLFVBQVUsRUFBRSxVQUFVO2dCQUN0QixZQUFZLEVBQUUsQ0FBQzthQUNoQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiwwQ0FBMEMsSUFBSSxDQUFDLEtBQUsscUJBQXFCLFVBQVUsRUFBRSxDQUN0RixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDO0lBRUo7Ozs7O09BS0c7SUFDSCxXQUFXLEdBQUcsS0FBSyxJQUFtQixFQUFFO1FBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLGtEQUFrRCxJQUFJLENBQUMsS0FBSyxTQUFTLENBQ3RFLENBQUM7UUFFRixJQUFJLEtBQUssR0FDUCxNQUFNLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQzFDLE9BQU8sS0FBSyxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YsOENBQThDLElBQUksQ0FBQyxLQUFLLHlCQUF5QixLQUFLLENBQUMsWUFBWSxFQUFFLENBQ3RHLENBQUM7WUFDRixJQUFJLENBQUM7Z0JBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pELEtBQUssR0FBRyxNQUFNLENBQUM7WUFDakIsQ0FBQztZQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ2IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQ25ELElBQUksR0FBRyxZQUFZLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSztvQkFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3BFLE1BQU07WUFDUixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLGtEQUFrRCxJQUFJLENBQUMsS0FBSyxTQUFTLENBQ3RFLENBQUM7SUFDSixDQUFDLENBQUM7SUFZRjs7Ozs7T0FLRztJQUNPLHVCQUF1QixHQUFHLEtBQUssRUFDdkMsS0FBaUMsRUFDSSxFQUFFO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsQ0FDM0QsSUFBSSxDQUFDLEtBQUssRUFDVixLQUFLLENBQUMsWUFBWSxDQUNuQixDQUFDO1FBRUYsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FDYix1REFBdUQsSUFBSSxDQUFDLEtBQUssU0FBUyxDQUMzRSxDQUFDO1FBRUosS0FBSyxNQUFNLFdBQVcsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiw4REFBOEQsV0FBVyxDQUFDLE1BQU0sU0FBUyxJQUFJLENBQUMsS0FBSyxTQUFTLENBQzdHLENBQUM7WUFDRixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUM3RCxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLGdFQUFnRSxXQUFXLENBQUMsTUFBTSxTQUFTLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FDL0csQ0FBQztZQUNKLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxXQUFXLENBQUMsTUFBTSxTQUFTLElBQUksQ0FBQyxLQUFLLFNBQVMsQ0FDMUcsQ0FBQztZQUNKLENBQUM7WUFDRCxLQUFLLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7WUFDeEMsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiwyQ0FBMkMsV0FBVyxDQUFDLE1BQU0sU0FBUyxJQUFJLENBQUMsS0FBSyxTQUFTLENBQzFGLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IE9ic2VydmF0aW9uRW50aXR5IH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1vYnNlcnZhdGlvbi1leHRyYWN0b3InO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5cbmltcG9ydCB7IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5QWN0aW9uIH0gZnJvbSAnLi9hY3Rpb25zL3Jhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5QWN0aW9uJztcbmltcG9ydCB7IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5IH0gZnJvbSAnLi9lbnRpdGllcyc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFJhd0RhdGFQcm92aWRlciB7XG4gIHByb3RlY3RlZCBhY3Rpb246IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5QWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBjaGFpbjogc3RyaW5nLFxuICAgIHByb3RlY3RlZCBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIHByb3RlY3RlZCBsb2dnZXI6IEFic3RyYWN0TG9nZ2VyID0gbmV3IER1bW15TG9nZ2VyKCksXG4gICkge1xuICAgIHRoaXMuYWN0aW9uID0gbmV3IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5QWN0aW9uKGRhdGFTb3VyY2UsIGxvZ2dlcik7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBjdXJyZW50IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5IGZvciB0aGUgY29uZmlndXJlZCBjaGFpbi5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGV4aXN0aW5nIG9yIG5ld2x5IGNyZWF0ZWQgUmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHlcbiAgICovXG4gIHByb3RlY3RlZCBmZXRjaE9yQ3JlYXRlU3RhdGVGb3JDaGFpbiA9XG4gICAgYXN5bmMgKCk6IFByb21pc2U8UmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHk+ID0+IHtcbiAgICAgIGxldCBzdGF0ZSA9IGF3YWl0IHRoaXMuYWN0aW9uLmZldGNoQnlDaGFpbih0aGlzLmNoYWluKTtcbiAgICAgIGlmICghc3RhdGUpIHtcbiAgICAgICAgY29uc3QgbGF0ZXN0Q2hhaW5PYnNlcnZhdGlvbiA9XG4gICAgICAgICAgYXdhaXQgdGhpcy5hY3Rpb24uZmV0Y2hMYXRlc3RPYnNlcnZhdGlvbkJ5Q2hhaW4odGhpcy5jaGFpbik7XG4gICAgICAgIGxldCBsYXN0SGVpZ2h0ID0gMDtcbiAgICAgICAgaWYgKCFsYXRlc3RDaGFpbk9ic2VydmF0aW9uKSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgICAgIGBOb3QgZmluZCBhbnkgT2JzZXJ2YXRpb25FbnRpdHkgZm9yIHRoZSAke3RoaXMuY2hhaW59IGNoYWluYCxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxhc3RIZWlnaHQgPSBsYXRlc3RDaGFpbk9ic2VydmF0aW9uLmhlaWdodDtcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZSA9IGF3YWl0IHRoaXMuYWN0aW9uLnN0b3JlKHtcbiAgICAgICAgICBjaGFpbjogdGhpcy5jaGFpbixcbiAgICAgICAgICBsYXN0SGVpZ2h0OiBsYXN0SGVpZ2h0LFxuICAgICAgICAgIHN5bmNlZEhlaWdodDogMCxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGBDcmVhdGVkIFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5IG9uIFske3RoaXMuY2hhaW59XSBjaGFpbiBhdCBoZWlnaHQgJHtsYXN0SGVpZ2h0fWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfTtcblxuICAvKipcbiAgICogSXRlcmF0ZXMgdGhyb3VnaCBvYnNlcnZhdGlvbnMgb2YgdGhlIGN1cnJlbnQgY2hhaW4gYW5kIGZpbGxzIHRoZWlyIHJhd0RhdGEgZmllbGQuXG4gICAqIFVwZGF0ZXMgdGhlIHN5bmNlZEhlaWdodCBhZnRlciBlYWNoIHByb2Nlc3NlZCBvYnNlcnZhdGlvbiB1bnRpbCB0aGUgY2hhaW4gaXMgZnVsbHkgc3luY2VkLlxuICAgKlxuICAgKiBAcmV0dXJucyB2b2lkXG4gICAqL1xuICBmaWxsUmF3RGF0YSA9IGFzeW5jICgpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgYFJhd0RhdGFQcm92aWRlciBTdGFydGluZyByYXctZGF0YSBmaWxsaW5nIGZvciBbJHt0aGlzLmNoYWlufV0gY2hhaW5gLFxuICAgICk7XG5cbiAgICBsZXQgc3RhdGU6IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5ID1cbiAgICAgIGF3YWl0IHRoaXMuZmV0Y2hPckNyZWF0ZVN0YXRlRm9yQ2hhaW4oKTtcbiAgICB3aGlsZSAoc3RhdGUuc3luY2VkSGVpZ2h0IDwgc3RhdGUubGFzdEhlaWdodCkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgIGBSYXdEYXRhUHJvdmlkZXIgRmV0Y2hpbmcgb2JzZXJ2YXRpb25zIGZvciBbJHt0aGlzLmNoYWlufV0gY2hhaW4gZnJvbSBoZWlnaHQgPiAke3N0YXRlLnN5bmNlZEhlaWdodH1gLFxuICAgICAgKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZmlsbE9ic2VydmF0aW9uc1Jhd0RhdGEoc3RhdGUpO1xuICAgICAgICBzdGF0ZSA9IHJlc3VsdDtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihgUmF3RGF0YVByb3ZpZGVyIEVycm9yOiAke2Vycn1gKTtcbiAgICAgICAgaWYgKGVyciBpbnN0YW5jZW9mIEVycm9yICYmIGVyci5zdGFjaykgdGhpcy5sb2dnZXIuZXJyb3IoZXJyLnN0YWNrKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXIuaW5mbyhcbiAgICAgIGBSYXdEYXRhUHJvdmlkZXIgRmluaXNoZWQgZmlsbGluZyByYXctZGF0YSBmb3IgWyR7dGhpcy5jaGFpbn1dIGNoYWluYCxcbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBQcm9jZXNzIG9ic2VydmF0aW9uIGFuZCB3cml0ZSByYXdEYXRhXG4gICAqXG4gICAqIEBwYXJhbSBvYnNlcnZhdGlvblxuICAgKiBAcmV0dXJuIHtib29sZWFufSBkZXRlcm1pbmluZyByZXN1bHQgb2YgcHJvY2VzcyBkb25lIHN1Y2Nlc3NmdWxseSBvciBub1xuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHByb2Nlc3NPYnNlcnZhdGlvbjogKFxuICAgIG9ic2VydmF0aW9uOiBPYnNlcnZhdGlvbkVudGl0eSxcbiAgKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBGaWxscyB0aGUgcmF3IGRhdGEgZmllbGQgZm9yIGFsbCBPYnNlcnZhdGlvbkVudGl0eSByZWNvcmRzIG9mIHRoZSBjdXJyZW50IGNoYWluIG9mIGlucHV0IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5XG4gICAqXG4gICAqIEBwYXJhbSBzdGF0ZVxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgcHJvdGVjdGVkIGZpbGxPYnNlcnZhdGlvbnNSYXdEYXRhID0gYXN5bmMgKFxuICAgIHN0YXRlOiBSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eSxcbiAgKTogUHJvbWlzZTxSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eT4gPT4ge1xuICAgIGNvbnN0IG9ic2VydmF0aW9ucyA9IGF3YWl0IHRoaXMuYWN0aW9uLmZldGNoQ2hhaW5PYnNlcnZhdGlvbnMoXG4gICAgICB0aGlzLmNoYWluLFxuICAgICAgc3RhdGUuc3luY2VkSGVpZ2h0LFxuICAgICk7XG5cbiAgICBpZiAob2JzZXJ2YXRpb25zLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEltcG9zc2libGVCZWhhdmlvcjogTm8gbW9yZSBvYnNlcnZhdGlvbnMgZm91bmQgZm9yIFske3RoaXMuY2hhaW59XSBjaGFpbmAsXG4gICAgICApO1xuXG4gICAgZm9yIChjb25zdCBvYnNlcnZhdGlvbiBvZiBvYnNlcnZhdGlvbnMpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgUmF3RGF0YVByb3ZpZGVyIFVwZGF0aW5nIHJhd0RhdGEgZm9yIG9ic2VydmF0aW9uIGF0IGhlaWdodCAke29ic2VydmF0aW9uLmhlaWdodH0gZm9yIFske3RoaXMuY2hhaW59XSBjaGFpbmAsXG4gICAgICApO1xuICAgICAgY29uc3QgaXNTdWNjZXNzID0gYXdhaXQgdGhpcy5wcm9jZXNzT2JzZXJ2YXRpb24ob2JzZXJ2YXRpb24pO1xuICAgICAgaWYgKGlzU3VjY2Vzcykge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICBgUmF3RGF0YVByb3ZpZGVyIHN1Y2Nlc3NmdWxseSBwcm9jZXNzZWQgb2JzZXJ2YXRpb24gYXQgaGVpZ2h0ICR7b2JzZXJ2YXRpb24uaGVpZ2h0fSBmb3IgWyR7dGhpcy5jaGFpbn1dIGNoYWluYCxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgUmF3RGF0YVByb3ZpZGVyIGZhaWxlZCB0byBwcm9jZXNzIG9ic2VydmF0aW9uIGF0IGhlaWdodCAke29ic2VydmF0aW9uLmhlaWdodH0gZm9yIFske3RoaXMuY2hhaW59XSBjaGFpbmAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBzdGF0ZS5zeW5jZWRIZWlnaHQgPSBvYnNlcnZhdGlvbi5oZWlnaHQ7XG4gICAgICBhd2FpdCB0aGlzLmFjdGlvbi5zdG9yZShzdGF0ZSk7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgYFJhd0RhdGFQcm92aWRlciBzeW5jZWRIZWlnaHQgdXBkYXRlZCB0byAke29ic2VydmF0aW9uLmhlaWdodH0gZm9yIFske3RoaXMuY2hhaW59XSBjaGFpbmAsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export { RawDataProviderStateEntityAction } from './rawDataProviderStateEntityAction';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { RawDataProviderStateEntityAction } from './rawDataProviderStateEntityAction';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvYWN0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5QWN0aW9uIH0gZnJvbSAnLi9yYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eUFjdGlvbic7XG4iXX0=
@@ -0,0 +1,42 @@
1
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
+ import { ObservationEntity } from '@rosen-bridge/abstract-observation-extractor';
3
+ import { DataSource, Repository } from '@rosen-bridge/extended-typeorm';
4
+ import { RawDataProviderStateEntity } from '../entities';
5
+ export declare class RawDataProviderStateEntityAction {
6
+ protected dataSource: DataSource;
7
+ protected logger: AbstractLogger;
8
+ protected readonly repository: Repository<RawDataProviderStateEntity>;
9
+ protected readonly observationRepository: Repository<ObservationEntity>;
10
+ constructor(dataSource: DataSource, logger?: AbstractLogger);
11
+ /**
12
+ * Stores one RawDataProviderStateEntity in the database
13
+ *
14
+ * @param rawDataProviderEntities
15
+ * @returns {RawDataProviderStateEntity} saved instance
16
+ */
17
+ store: (rawDataProviderEntity: RawDataProviderStateEntity) => Promise<RawDataProviderStateEntity>;
18
+ /**
19
+ * Retrieves the RawDataProviderStateEntity of specific chain
20
+ *
21
+ * @param chain
22
+ * @returns {RawDataProviderStateEntity | null} Chain-related state, or null if not found
23
+ */
24
+ fetchByChain: (chain: string) => Promise<RawDataProviderStateEntity | null>;
25
+ /**
26
+ * Retrieves the latest ObservationEntity for the specified chain
27
+ *
28
+ * @param chain
29
+ * @returns {ObservationEntity | null} Latest related observation, or null if not found
30
+ */
31
+ fetchLatestObservationByChain: (chain: string) => Promise<ObservationEntity | null>;
32
+ /**
33
+ * Fetches a batch of ObservationEntity records for the given chain
34
+ *
35
+ * @param chain
36
+ * @param offsetHeight
37
+ * @param length
38
+ * @returns {ObservationEntity[]} Chain-related observations
39
+ */
40
+ fetchChainObservations: (chain: string, offsetHeight: number, length?: number) => Promise<ObservationEntity[]>;
41
+ }
42
+ //# sourceMappingURL=rawDataProviderStateEntityAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rawDataProviderStateEntityAction.d.ts","sourceRoot":"","sources":["../../lib/actions/rawDataProviderStateEntityAction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EACL,UAAU,EAEV,UAAU,EACX,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzD,qBAAa,gCAAgC;IAKzC,SAAS,CAAC,UAAU,EAAE,UAAU;IAChC,SAAS,CAAC,MAAM,EAAE,cAAc;IALlC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,0BAA0B,CAAC,CAAC;IACtE,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;gBAG5D,UAAU,EAAE,UAAU,EACtB,MAAM,GAAE,cAAkC;IAMtD;;;;;OAKG;IACH,KAAK,GACH,uBAAuB,0BAA0B,KAChD,OAAO,CAAC,0BAA0B,CAAC,CAMpC;IAEF;;;;;OAKG;IACH,YAAY,GACV,OAAO,MAAM,KACZ,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAE3C;IAEF;;;;;OAKG;IACH,6BAA6B,GAC3B,OAAO,MAAM,KACZ,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAKlC;IAEF;;;;;;;OAOG;IACH,sBAAsB,GACpB,OAAO,MAAM,EACb,cAAc,MAAM,EACpB,SAAQ,MAA+B,KACtC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAM7B;CACH"}
@@ -0,0 +1,65 @@
1
+ import { DummyLogger } from '@rosen-bridge/abstract-logger';
2
+ import { ObservationEntity } from '@rosen-bridge/abstract-observation-extractor';
3
+ import { MoreThan, } from '@rosen-bridge/extended-typeorm';
4
+ import { OBSERVATION_BATCH_SIZE } from '../constants';
5
+ import { RawDataProviderStateEntity } from '../entities';
6
+ export class RawDataProviderStateEntityAction {
7
+ dataSource;
8
+ logger;
9
+ repository;
10
+ observationRepository;
11
+ constructor(dataSource, logger = new DummyLogger()) {
12
+ this.dataSource = dataSource;
13
+ this.logger = logger;
14
+ this.repository = dataSource.getRepository(RawDataProviderStateEntity);
15
+ this.observationRepository = dataSource.getRepository(ObservationEntity);
16
+ }
17
+ /**
18
+ * Stores one RawDataProviderStateEntity in the database
19
+ *
20
+ * @param rawDataProviderEntities
21
+ * @returns {RawDataProviderStateEntity} saved instance
22
+ */
23
+ store = async (rawDataProviderEntity) => {
24
+ const state = await this.repository.save(rawDataProviderEntity);
25
+ this.logger.debug(`raw-data for chain state [${JSON.stringify(rawDataProviderEntity)}] stored in database`);
26
+ return state;
27
+ };
28
+ /**
29
+ * Retrieves the RawDataProviderStateEntity of specific chain
30
+ *
31
+ * @param chain
32
+ * @returns {RawDataProviderStateEntity | null} Chain-related state, or null if not found
33
+ */
34
+ fetchByChain = async (chain) => {
35
+ return await this.repository.findOne({ where: { chain: chain } });
36
+ };
37
+ /**
38
+ * Retrieves the latest ObservationEntity for the specified chain
39
+ *
40
+ * @param chain
41
+ * @returns {ObservationEntity | null} Latest related observation, or null if not found
42
+ */
43
+ fetchLatestObservationByChain = async (chain) => {
44
+ return await this.observationRepository.findOne({
45
+ where: { fromChain: chain, rawData: '' },
46
+ order: { height: 'DESC' },
47
+ });
48
+ };
49
+ /**
50
+ * Fetches a batch of ObservationEntity records for the given chain
51
+ *
52
+ * @param chain
53
+ * @param offsetHeight
54
+ * @param length
55
+ * @returns {ObservationEntity[]} Chain-related observations
56
+ */
57
+ fetchChainObservations = async (chain, offsetHeight, length = OBSERVATION_BATCH_SIZE) => {
58
+ return await this.observationRepository.find({
59
+ where: { fromChain: chain, height: MoreThan(offsetHeight) },
60
+ order: { height: 'ASC' },
61
+ take: length,
62
+ });
63
+ };
64
+ }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHlBY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvYWN0aW9ucy9yYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eUFjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ2pGLE9BQU8sRUFFTCxRQUFRLEdBRVQsTUFBTSxnQ0FBZ0MsQ0FBQztBQUV4QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpELE1BQU0sT0FBTyxnQ0FBZ0M7SUFLL0I7SUFDQTtJQUxPLFVBQVUsQ0FBeUM7SUFDbkQscUJBQXFCLENBQWdDO0lBRXhFLFlBQ1ksVUFBc0IsRUFDdEIsU0FBeUIsSUFBSSxXQUFXLEVBQUU7UUFEMUMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFvQztRQUVwRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxhQUFhLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUN2RSxJQUFJLENBQUMscUJBQXFCLEdBQUcsVUFBVSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssR0FBRyxLQUFLLEVBQ1gscUJBQWlELEVBQ1osRUFBRTtRQUN2QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YsNkJBQTZCLElBQUksQ0FBQyxTQUFTLENBQUMscUJBQXFCLENBQUMsc0JBQXNCLENBQ3pGLENBQUM7UUFDRixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztJQUVGOzs7OztPQUtHO0lBQ0gsWUFBWSxHQUFHLEtBQUssRUFDbEIsS0FBYSxFQUMrQixFQUFFO1FBQzlDLE9BQU8sTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDcEUsQ0FBQyxDQUFDO0lBRUY7Ozs7O09BS0c7SUFDSCw2QkFBNkIsR0FBRyxLQUFLLEVBQ25DLEtBQWEsRUFDc0IsRUFBRTtRQUNyQyxPQUFPLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztZQUM5QyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7WUFDeEMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7SUFFRjs7Ozs7OztPQU9HO0lBQ0gsc0JBQXNCLEdBQUcsS0FBSyxFQUM1QixLQUFhLEVBQ2IsWUFBb0IsRUFDcEIsU0FBaUIsc0JBQXNCLEVBQ1QsRUFBRTtRQUNoQyxPQUFPLE1BQU0sSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQztZQUMzQyxLQUFLLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDM0QsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUN4QixJQUFJLEVBQUUsTUFBTTtTQUNiLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztDQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIsIER1bW15TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgT2JzZXJ2YXRpb25FbnRpdHkgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LW9ic2VydmF0aW9uLWV4dHJhY3Rvcic7XG5pbXBvcnQge1xuICBEYXRhU291cmNlLFxuICBNb3JlVGhhbixcbiAgUmVwb3NpdG9yeSxcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9leHRlbmRlZC10eXBlb3JtJztcblxuaW1wb3J0IHsgT0JTRVJWQVRJT05fQkFUQ0hfU0laRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eSB9IGZyb20gJy4uL2VudGl0aWVzJztcblxuZXhwb3J0IGNsYXNzIFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5QWN0aW9uIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlcG9zaXRvcnk6IFJlcG9zaXRvcnk8UmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHk+O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgb2JzZXJ2YXRpb25SZXBvc2l0b3J5OiBSZXBvc2l0b3J5PE9ic2VydmF0aW9uRW50aXR5PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICBwcm90ZWN0ZWQgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlciA9IG5ldyBEdW1teUxvZ2dlcigpLFxuICApIHtcbiAgICB0aGlzLnJlcG9zaXRvcnkgPSBkYXRhU291cmNlLmdldFJlcG9zaXRvcnkoUmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHkpO1xuICAgIHRoaXMub2JzZXJ2YXRpb25SZXBvc2l0b3J5ID0gZGF0YVNvdXJjZS5nZXRSZXBvc2l0b3J5KE9ic2VydmF0aW9uRW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9yZXMgb25lIFJhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5IGluIHRoZSBkYXRhYmFzZVxuICAgKlxuICAgKiBAcGFyYW0gcmF3RGF0YVByb3ZpZGVyRW50aXRpZXNcbiAgICogQHJldHVybnMge1Jhd0RhdGFQcm92aWRlclN0YXRlRW50aXR5fSBzYXZlZCBpbnN0YW5jZVxuICAgKi9cbiAgc3RvcmUgPSBhc3luYyAoXG4gICAgcmF3RGF0YVByb3ZpZGVyRW50aXR5OiBSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eSxcbiAgKTogUHJvbWlzZTxSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eT4gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gYXdhaXQgdGhpcy5yZXBvc2l0b3J5LnNhdmUocmF3RGF0YVByb3ZpZGVyRW50aXR5KTtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgIGByYXctZGF0YSBmb3IgY2hhaW4gc3RhdGUgWyR7SlNPTi5zdHJpbmdpZnkocmF3RGF0YVByb3ZpZGVyRW50aXR5KX1dIHN0b3JlZCBpbiBkYXRhYmFzZWAsXG4gICAgKTtcbiAgICByZXR1cm4gc3RhdGU7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB0aGUgUmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHkgb2Ygc3BlY2lmaWMgY2hhaW5cbiAgICpcbiAgICogQHBhcmFtIGNoYWluXG4gICAqIEByZXR1cm5zIHtSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eSB8IG51bGx9IENoYWluLXJlbGF0ZWQgc3RhdGUsIG9yIG51bGwgaWYgbm90IGZvdW5kXG4gICAqL1xuICBmZXRjaEJ5Q2hhaW4gPSBhc3luYyAoXG4gICAgY2hhaW46IHN0cmluZyxcbiAgKTogUHJvbWlzZTxSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eSB8IG51bGw+ID0+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXBvc2l0b3J5LmZpbmRPbmUoeyB3aGVyZTogeyBjaGFpbjogY2hhaW4gfSB9KTtcbiAgfTtcblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBsYXRlc3QgT2JzZXJ2YXRpb25FbnRpdHkgZm9yIHRoZSBzcGVjaWZpZWQgY2hhaW5cbiAgICpcbiAgICogQHBhcmFtIGNoYWluXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhdGlvbkVudGl0eSB8IG51bGx9IExhdGVzdCByZWxhdGVkIG9ic2VydmF0aW9uLCBvciBudWxsIGlmIG5vdCBmb3VuZFxuICAgKi9cbiAgZmV0Y2hMYXRlc3RPYnNlcnZhdGlvbkJ5Q2hhaW4gPSBhc3luYyAoXG4gICAgY2hhaW46IHN0cmluZyxcbiAgKTogUHJvbWlzZTxPYnNlcnZhdGlvbkVudGl0eSB8IG51bGw+ID0+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5vYnNlcnZhdGlvblJlcG9zaXRvcnkuZmluZE9uZSh7XG4gICAgICB3aGVyZTogeyBmcm9tQ2hhaW46IGNoYWluLCByYXdEYXRhOiAnJyB9LFxuICAgICAgb3JkZXI6IHsgaGVpZ2h0OiAnREVTQycgfSxcbiAgICB9KTtcbiAgfTtcblxuICAvKipcbiAgICogRmV0Y2hlcyBhIGJhdGNoIG9mIE9ic2VydmF0aW9uRW50aXR5IHJlY29yZHMgZm9yIHRoZSBnaXZlbiBjaGFpblxuICAgKlxuICAgKiBAcGFyYW0gY2hhaW5cbiAgICogQHBhcmFtIG9mZnNldEhlaWdodFxuICAgKiBAcGFyYW0gbGVuZ3RoXG4gICAqIEByZXR1cm5zIHtPYnNlcnZhdGlvbkVudGl0eVtdfSBDaGFpbi1yZWxhdGVkIG9ic2VydmF0aW9uc1xuICAgKi9cbiAgZmV0Y2hDaGFpbk9ic2VydmF0aW9ucyA9IGFzeW5jIChcbiAgICBjaGFpbjogc3RyaW5nLFxuICAgIG9mZnNldEhlaWdodDogbnVtYmVyLFxuICAgIGxlbmd0aDogbnVtYmVyID0gT0JTRVJWQVRJT05fQkFUQ0hfU0laRSxcbiAgKTogUHJvbWlzZTxPYnNlcnZhdGlvbkVudGl0eVtdPiA9PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMub2JzZXJ2YXRpb25SZXBvc2l0b3J5LmZpbmQoe1xuICAgICAgd2hlcmU6IHsgZnJvbUNoYWluOiBjaGFpbiwgaGVpZ2h0OiBNb3JlVGhhbihvZmZzZXRIZWlnaHQpIH0sXG4gICAgICBvcmRlcjogeyBoZWlnaHQ6ICdBU0MnIH0sXG4gICAgICB0YWtlOiBsZW5ndGgsXG4gICAgfSk7XG4gIH07XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export declare const OBSERVATION_BATCH_SIZE = 10;
2
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,KAAK,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const OBSERVATION_BATCH_SIZE = 10;
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgT0JTRVJWQVRJT05fQkFUQ0hfU0laRSA9IDEwO1xuIl19
@@ -0,0 +1,2 @@
1
+ export { RawDataProviderStateEntity } from './rawDataProviderStateEntity';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/entities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { RawDataProviderStateEntity } from './rawDataProviderStateEntity';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvZW50aXRpZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eSB9IGZyb20gJy4vcmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHknO1xuIl19
@@ -0,0 +1,6 @@
1
+ export declare class RawDataProviderStateEntity {
2
+ chain: string;
3
+ lastHeight: number;
4
+ syncedHeight: number;
5
+ }
6
+ //# sourceMappingURL=rawDataProviderStateEntity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rawDataProviderStateEntity.d.ts","sourceRoot":"","sources":["../../lib/entities/rawDataProviderStateEntity.ts"],"names":[],"mappings":"AAEA,qBACa,0BAA0B;IAErC,KAAK,EAAE,MAAM,CAAC;IAGd,UAAU,EAAE,MAAM,CAAC;IAGnB,YAAY,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,32 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { Entity, Column, PrimaryColumn } from '@rosen-bridge/extended-typeorm';
11
+ let RawDataProviderStateEntity = class RawDataProviderStateEntity {
12
+ chain;
13
+ lastHeight;
14
+ syncedHeight;
15
+ };
16
+ __decorate([
17
+ PrimaryColumn({ type: 'varchar' }),
18
+ __metadata("design:type", String)
19
+ ], RawDataProviderStateEntity.prototype, "chain", void 0);
20
+ __decorate([
21
+ Column({ type: 'integer' }),
22
+ __metadata("design:type", Number)
23
+ ], RawDataProviderStateEntity.prototype, "lastHeight", void 0);
24
+ __decorate([
25
+ Column({ type: 'integer' }),
26
+ __metadata("design:type", Number)
27
+ ], RawDataProviderStateEntity.prototype, "syncedHeight", void 0);
28
+ RawDataProviderStateEntity = __decorate([
29
+ Entity('raw_data_provider_state_entity')
30
+ ], RawDataProviderStateEntity);
31
+ export { RawDataProviderStateEntity };
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvZW50aXRpZXMvcmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHeEUsSUFBTSwwQkFBMEIsR0FBaEMsTUFBTSwwQkFBMEI7SUFFckMsS0FBSyxDQUFTO0lBR2QsVUFBVSxDQUFTO0lBR25CLFlBQVksQ0FBUztDQUN0QixDQUFBO0FBUEM7SUFEQyxhQUFhLENBQUMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLENBQUM7O3lEQUNyQjtBQUdkO0lBREMsTUFBTSxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxDQUFDOzs4REFDVDtBQUduQjtJQURDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQzs7Z0VBQ1A7QUFSViwwQkFBMEI7SUFEdEMsTUFBTSxDQUFDLGdDQUFnQyxDQUFDO0dBQzVCLDBCQUEwQixDQVN0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eSwgQ29sdW1uLCBQcmltYXJ5Q29sdW1uIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9leHRlbmRlZC10eXBlb3JtJztcblxuQEVudGl0eSgncmF3X2RhdGFfcHJvdmlkZXJfc3RhdGVfZW50aXR5JylcbmV4cG9ydCBjbGFzcyBSYXdEYXRhUHJvdmlkZXJTdGF0ZUVudGl0eSB7XG4gIEBQcmltYXJ5Q29sdW1uKHsgdHlwZTogJ3ZhcmNoYXInIH0pXG4gIGNoYWluOiBzdHJpbmc7XG5cbiAgQENvbHVtbih7IHR5cGU6ICdpbnRlZ2VyJyB9KVxuICBsYXN0SGVpZ2h0OiBudW1iZXI7XG5cbiAgQENvbHVtbih7IHR5cGU6ICdpbnRlZ2VyJyB9KVxuICBzeW5jZWRIZWlnaHQ6IG51bWJlcjtcbn1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ export { AbstractRawDataProvider } from './abstractRawDataProvider';
2
+ export { RawDataProviderStateEntity } from './entities';
3
+ export { migrations } from './migrations';
4
+ export * from './providers';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,cAAc,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ export { AbstractRawDataProvider } from './abstractRawDataProvider';
2
+ export { RawDataProviderStateEntity } from './entities';
3
+ export { migrations } from './migrations';
4
+ export * from './providers';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDMUMsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBBYnN0cmFjdFJhd0RhdGFQcm92aWRlciB9IGZyb20gJy4vYWJzdHJhY3RSYXdEYXRhUHJvdmlkZXInO1xuZXhwb3J0IHsgUmF3RGF0YVByb3ZpZGVyU3RhdGVFbnRpdHkgfSBmcm9tICcuL2VudGl0aWVzJztcbmV4cG9ydCB7IG1pZ3JhdGlvbnMgfSBmcm9tICcuL21pZ3JhdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9wcm92aWRlcnMnO1xuIl19
@@ -0,0 +1,7 @@
1
+ import { Migration1762178180934 } from './postgres';
2
+ import { Migration1762178166781 } from './sqlite';
3
+ export declare const migrations: {
4
+ postgres: (typeof Migration1762178180934)[];
5
+ sqlite: (typeof Migration1762178166781)[];
6
+ };
7
+ //# 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,YAAY,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAElD,eAAO,MAAM,UAAU;;;CAGtB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { Migration1762178180934 } from './postgres';
2
+ import { Migration1762178166781 } from './sqlite';
3
+ export const migrations = {
4
+ postgres: [Migration1762178180934],
5
+ sqlite: [Migration1762178166781],
6
+ };
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvbWlncmF0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWxELE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixRQUFRLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztJQUNsQyxNQUFNLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztDQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWlncmF0aW9uMTc2MjE3ODE4MDkzNCB9IGZyb20gJy4vcG9zdGdyZXMnO1xuaW1wb3J0IHsgTWlncmF0aW9uMTc2MjE3ODE2Njc4MSB9IGZyb20gJy4vc3FsaXRlJztcblxuZXhwb3J0IGNvbnN0IG1pZ3JhdGlvbnMgPSB7XG4gIHBvc3RncmVzOiBbTWlncmF0aW9uMTc2MjE3ODE4MDkzNF0sXG4gIHNxbGl0ZTogW01pZ3JhdGlvbjE3NjIxNzgxNjY3ODFdLFxufTtcbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { MigrationInterface, QueryRunner } from '@rosen-bridge/extended-typeorm';
2
+ export declare class Migration1762178180934 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1762178180934-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1762178180934-migration.d.ts","sourceRoot":"","sources":["../../../lib/migrations/postgres/1762178180934-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;IAU3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
@@ -0,0 +1,18 @@
1
+ export class Migration1762178180934 {
2
+ name = 'Migration1762178180934';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`
5
+ CREATE TABLE "raw_data_provider_state_entity" (
6
+ "chain" varchar PRIMARY KEY NOT NULL,
7
+ "lastHeight" integer NOT NULL,
8
+ "syncedHeight" integer NOT NULL
9
+ )
10
+ `);
11
+ }
12
+ async down(queryRunner) {
13
+ await queryRunner.query(`
14
+ DROP TABLE "raw_data_provider_state_entity"
15
+ `);
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc2MjE3ODE4MDkzNC1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWlncmF0aW9ucy9wb3N0Z3Jlcy8xNzYyMTc4MTgwOTM0LW1pZ3JhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLElBQUksR0FBRyx3QkFBd0IsQ0FBQztJQUV6QixLQUFLLENBQUMsRUFBRSxDQUFDLFdBQXdCO1FBQ3RDLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7Ozs7O1NBTW5CLENBQUMsQ0FBQztJQUNULENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQXdCO1FBQ3hDLE1BQU0sV0FBVyxDQUFDLEtBQUssQ0FBQzs7U0FFbkIsQ0FBQyxDQUFDO0lBQ1QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTWlncmF0aW9uSW50ZXJmYWNlLFxuICBRdWVyeVJ1bm5lcixcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9leHRlbmRlZC10eXBlb3JtJztcblxuZXhwb3J0IGNsYXNzIE1pZ3JhdGlvbjE3NjIxNzgxODA5MzQgaW1wbGVtZW50cyBNaWdyYXRpb25JbnRlcmZhY2Uge1xuICBuYW1lID0gJ01pZ3JhdGlvbjE3NjIxNzgxODA5MzQnO1xuXG4gIHB1YmxpYyBhc3luYyB1cChxdWVyeVJ1bm5lcjogUXVlcnlSdW5uZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBDUkVBVEUgVEFCTEUgXCJyYXdfZGF0YV9wcm92aWRlcl9zdGF0ZV9lbnRpdHlcIiAoXG4gICAgICAgICAgICAgICAgXCJjaGFpblwiIHZhcmNoYXIgUFJJTUFSWSBLRVkgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJsYXN0SGVpZ2h0XCIgaW50ZWdlciBOT1QgTlVMTCxcbiAgICAgICAgICAgICAgICBcInN5bmNlZEhlaWdodFwiIGludGVnZXIgTk9UIE5VTExcbiAgICAgICAgICAgIClcbiAgICAgICAgYCk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZG93bihxdWVyeVJ1bm5lcjogUXVlcnlSdW5uZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShgXG4gICAgICAgICAgICBEUk9QIFRBQkxFIFwicmF3X2RhdGFfcHJvdmlkZXJfc3RhdGVfZW50aXR5XCJcbiAgICAgICAgYCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export { Migration1762178180934 } from './1762178180934-migration';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/migrations/postgres/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Migration1762178180934 } from './1762178180934-migration';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWlncmF0aW9ucy9wb3N0Z3Jlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IE1pZ3JhdGlvbjE3NjIxNzgxODA5MzQgfSBmcm9tICcuLzE3NjIxNzgxODA5MzQtbWlncmF0aW9uJztcbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { MigrationInterface, QueryRunner } from '@rosen-bridge/extended-typeorm';
2
+ export declare class Migration1762178166781 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1762178166781-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1762178166781-migration.d.ts","sourceRoot":"","sources":["../../../lib/migrations/sqlite/1762178166781-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;IAU3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CAK3D"}
@@ -0,0 +1,18 @@
1
+ export class Migration1762178166781 {
2
+ name = 'Migration1762178166781';
3
+ async up(queryRunner) {
4
+ await queryRunner.query(`
5
+ CREATE TABLE "raw_data_provider_state_entity" (
6
+ "chain" varchar PRIMARY KEY NOT NULL,
7
+ "lastHeight" integer NOT NULL,
8
+ "syncedHeight" integer NOT NULL
9
+ )
10
+ `);
11
+ }
12
+ async down(queryRunner) {
13
+ await queryRunner.query(`
14
+ DROP TABLE "raw_data_provider_state_entity"
15
+ `);
16
+ }
17
+ }
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMTc2MjE3ODE2Njc4MS1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWlncmF0aW9ucy9zcWxpdGUvMTc2MjE3ODE2Njc4MS1taWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxJQUFJLEdBQUcsd0JBQXdCLENBQUM7SUFFekIsS0FBSyxDQUFDLEVBQUUsQ0FBQyxXQUF3QjtRQUN0QyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7Ozs7OztTQU1uQixDQUFDLENBQUM7SUFDVCxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxXQUF3QjtRQUN4QyxNQUFNLFdBQVcsQ0FBQyxLQUFLLENBQUM7O1NBRW5CLENBQUMsQ0FBQztJQUNULENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE1pZ3JhdGlvbkludGVyZmFjZSxcbiAgUXVlcnlSdW5uZXIsXG59IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5cbmV4cG9ydCBjbGFzcyBNaWdyYXRpb24xNzYyMTc4MTY2NzgxIGltcGxlbWVudHMgTWlncmF0aW9uSW50ZXJmYWNlIHtcbiAgbmFtZSA9ICdNaWdyYXRpb24xNzYyMTc4MTY2NzgxJztcblxuICBwdWJsaWMgYXN5bmMgdXAocXVlcnlSdW5uZXI6IFF1ZXJ5UnVubmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgQ1JFQVRFIFRBQkxFIFwicmF3X2RhdGFfcHJvdmlkZXJfc3RhdGVfZW50aXR5XCIgKFxuICAgICAgICAgICAgICAgIFwiY2hhaW5cIiB2YXJjaGFyIFBSSU1BUlkgS0VZIE5PVCBOVUxMLFxuICAgICAgICAgICAgICAgIFwibGFzdEhlaWdodFwiIGludGVnZXIgTk9UIE5VTEwsXG4gICAgICAgICAgICAgICAgXCJzeW5jZWRIZWlnaHRcIiBpbnRlZ2VyIE5PVCBOVUxMXG4gICAgICAgICAgICApXG4gICAgICAgIGApO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGRvd24ocXVlcnlSdW5uZXI6IFF1ZXJ5UnVubmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYFxuICAgICAgICAgICAgRFJPUCBUQUJMRSBcInJhd19kYXRhX3Byb3ZpZGVyX3N0YXRlX2VudGl0eVwiXG4gICAgICAgIGApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export { Migration1762178166781 } from './1762178166781-migration';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/migrations/sqlite/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Migration1762178166781 } from './1762178166781-migration';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvbWlncmF0aW9ucy9zcWxpdGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkJBQTJCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBNaWdyYXRpb24xNzYyMTc4MTY2NzgxIH0gZnJvbSAnLi8xNzYyMTc4MTY2NzgxLW1pZ3JhdGlvbic7XG4iXX0=
@@ -0,0 +1,20 @@
1
+ import { AbstractLogger } from '@rosen-bridge/abstract-logger';
2
+ import { ObservationEntity } from '@rosen-bridge/abstract-observation-extractor';
3
+ import { BitcoinEsploraObservationExtractor } from '@rosen-bridge/bitcoin-observation-extractor';
4
+ import { DataSource } from '@rosen-bridge/extended-typeorm';
5
+ import { AbstractRawDataProvider } from '../../abstractRawDataProvider';
6
+ export declare class BitcoinEsploraRawDataProvider extends AbstractRawDataProvider {
7
+ protected dataSource: DataSource;
8
+ protected extractor: BitcoinEsploraObservationExtractor;
9
+ protected logger: AbstractLogger;
10
+ protected client: import("@rosen-clients/rate-limited-axios").Axios;
11
+ constructor(dataSource: DataSource, extractor: BitcoinEsploraObservationExtractor, esploraBaseUrl: string, logger: AbstractLogger);
12
+ /**
13
+ * Process observation and write rawData
14
+ *
15
+ * @param observation
16
+ * @return {boolean} determining result of process done successfully or no
17
+ */
18
+ protected processObservation: (observation: ObservationEntity) => Promise<boolean>;
19
+ }
20
+ //# sourceMappingURL=bitcoinEsploraRawDataProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bitcoinEsploraRawDataProvider.d.ts","sourceRoot":"","sources":["../../../lib/providers/bitcoin/bitcoinEsploraRawDataProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,kCAAkC,EAAE,MAAM,6CAA6C,CAAC;AACjG,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAI5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAExE,qBAAa,6BAA8B,SAAQ,uBAAuB;IAItE,SAAS,CAAC,UAAU,EAAE,UAAU;IAChC,SAAS,CAAC,SAAS,EAAE,kCAAkC;IAEvD,SAAS,CAAC,MAAM,EAAE,cAAc;IANlC,SAAS,CAAC,MAAM,oDAAC;gBAGL,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,kCAAkC,EACvD,cAAc,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc;IAMlC;;;;;OAKG;IACH,SAAS,CAAC,kBAAkB,GAAU,aAAa,iBAAiB,sBAgBlE;CACH"}
@@ -0,0 +1,38 @@
1
+ import axios from '@rosen-clients/rate-limited-axios';
2
+ import { AbstractRawDataProvider } from '../../abstractRawDataProvider';
3
+ export class BitcoinEsploraRawDataProvider extends AbstractRawDataProvider {
4
+ dataSource;
5
+ extractor;
6
+ logger;
7
+ client;
8
+ constructor(dataSource, extractor, esploraBaseUrl, logger) {
9
+ super('bitcoin', dataSource, logger);
10
+ this.dataSource = dataSource;
11
+ this.extractor = extractor;
12
+ this.logger = logger;
13
+ this.client = axios.create({ baseURL: esploraBaseUrl });
14
+ }
15
+ /**
16
+ * Process observation and write rawData
17
+ *
18
+ * @param observation
19
+ * @return {boolean} determining result of process done successfully or no
20
+ */
21
+ processObservation = async (observation) => {
22
+ try {
23
+ const block = { height: observation.height, hash: observation.block };
24
+ const tx = await this.client.post(`/tx/${observation.sourceTxId}`, {
25
+ method: 'getrawtransaction',
26
+ id: 0,
27
+ params: [observation.sourceTxId, true],
28
+ });
29
+ this.extractor.processTransactions([tx.data], block);
30
+ }
31
+ catch (err) {
32
+ this.logger.error(`Processing of observation for bitcoin-esplora failed: ${err}`);
33
+ return false;
34
+ }
35
+ return true;
36
+ };
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYml0Y29pbkVzcGxvcmFSYXdEYXRhUHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvcHJvdmlkZXJzL2JpdGNvaW4vYml0Y29pbkVzcGxvcmFSYXdEYXRhUHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxLQUFLLE1BQU0sbUNBQW1DLENBQUM7QUFFdEQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFeEUsTUFBTSxPQUFPLDZCQUE4QixTQUFRLHVCQUF1QjtJQUk1RDtJQUNBO0lBRUE7SUFORixNQUFNLENBQUM7SUFFakIsWUFDWSxVQUFzQixFQUN0QixTQUE2QyxFQUN2RCxjQUFzQixFQUNaLE1BQXNCO1FBRWhDLEtBQUssQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBTDNCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsY0FBUyxHQUFULFNBQVMsQ0FBb0M7UUFFN0MsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFHaEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sa0JBQWtCLEdBQUcsS0FBSyxFQUFFLFdBQThCLEVBQUUsRUFBRTtRQUN0RSxJQUFJLENBQUM7WUFDSCxNQUFNLEtBQUssR0FBRyxFQUFFLE1BQU0sRUFBRSxXQUFXLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLFdBQVcsQ0FBQyxVQUFVLEVBQUUsRUFBRTtnQkFDakUsTUFBTSxFQUFFLG1CQUFtQjtnQkFDM0IsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsTUFBTSxFQUFFLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7YUFDdkMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFjLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLHlEQUF5RCxHQUFHLEVBQUUsQ0FDL0QsQ0FBQztZQUNGLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdExvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IE9ic2VydmF0aW9uRW50aXR5IH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1vYnNlcnZhdGlvbi1leHRyYWN0b3InO1xuaW1wb3J0IHsgQml0Y29pbkVzcGxvcmFPYnNlcnZhdGlvbkV4dHJhY3RvciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYml0Y29pbi1vYnNlcnZhdGlvbi1leHRyYWN0b3InO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5pbXBvcnQgeyBCbG9jayB9IGZyb20gJ0Byb3Nlbi1icmlkZ2Uvc2Nhbm5lci1pbnRlcmZhY2VzJztcbmltcG9ydCBheGlvcyBmcm9tICdAcm9zZW4tY2xpZW50cy9yYXRlLWxpbWl0ZWQtYXhpb3MnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdFJhd0RhdGFQcm92aWRlciB9IGZyb20gJy4uLy4uL2Fic3RyYWN0UmF3RGF0YVByb3ZpZGVyJztcblxuZXhwb3J0IGNsYXNzIEJpdGNvaW5Fc3Bsb3JhUmF3RGF0YVByb3ZpZGVyIGV4dGVuZHMgQWJzdHJhY3RSYXdEYXRhUHJvdmlkZXIge1xuICBwcm90ZWN0ZWQgY2xpZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICAgIHByb3RlY3RlZCBleHRyYWN0b3I6IEJpdGNvaW5Fc3Bsb3JhT2JzZXJ2YXRpb25FeHRyYWN0b3IsXG4gICAgZXNwbG9yYUJhc2VVcmw6IHN0cmluZyxcbiAgICBwcm90ZWN0ZWQgbG9nZ2VyOiBBYnN0cmFjdExvZ2dlcixcbiAgKSB7XG4gICAgc3VwZXIoJ2JpdGNvaW4nLCBkYXRhU291cmNlLCBsb2dnZXIpO1xuICAgIHRoaXMuY2xpZW50ID0gYXhpb3MuY3JlYXRlKHsgYmFzZVVSTDogZXNwbG9yYUJhc2VVcmwgfSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBvYnNlcnZhdGlvbiBhbmQgd3JpdGUgcmF3RGF0YVxuICAgKlxuICAgKiBAcGFyYW0gb2JzZXJ2YXRpb25cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gZGV0ZXJtaW5pbmcgcmVzdWx0IG9mIHByb2Nlc3MgZG9uZSBzdWNjZXNzZnVsbHkgb3Igbm9cbiAgICovXG4gIHByb3RlY3RlZCBwcm9jZXNzT2JzZXJ2YXRpb24gPSBhc3luYyAob2JzZXJ2YXRpb246IE9ic2VydmF0aW9uRW50aXR5KSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGJsb2NrID0geyBoZWlnaHQ6IG9ic2VydmF0aW9uLmhlaWdodCwgaGFzaDogb2JzZXJ2YXRpb24uYmxvY2sgfTtcbiAgICAgIGNvbnN0IHR4ID0gYXdhaXQgdGhpcy5jbGllbnQucG9zdChgL3R4LyR7b2JzZXJ2YXRpb24uc291cmNlVHhJZH1gLCB7XG4gICAgICAgIG1ldGhvZDogJ2dldHJhd3RyYW5zYWN0aW9uJyxcbiAgICAgICAgaWQ6IDAsXG4gICAgICAgIHBhcmFtczogW29ic2VydmF0aW9uLnNvdXJjZVR4SWQsIHRydWVdLFxuICAgICAgfSk7XG4gICAgICB0aGlzLmV4dHJhY3Rvci5wcm9jZXNzVHJhbnNhY3Rpb25zKFt0eC5kYXRhXSwgYmxvY2sgYXMgQmxvY2spO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgIGBQcm9jZXNzaW5nIG9mIG9ic2VydmF0aW9uIGZvciBiaXRjb2luLWVzcGxvcmEgZmFpbGVkOiAke2Vycn1gLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG59XG4iXX0=