@rosen-bridge/watcher-data-extractor 13.0.8 → 14.0.0-d7a97532

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.
@@ -1,134 +1,26 @@
1
- import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
1
+ import { AbstractErgoBoxExtractor, InitializeOptions } from '@rosen-bridge/abstract-extractor';
2
2
  import { AbstractLogger } from '@rosen-bridge/abstract-logger';
3
- import { DataSource, SelectQueryBuilder } from '@rosen-bridge/extended-typeorm';
4
- import { BlockInfo, Transaction } from '@rosen-bridge/scanner-interfaces';
5
- import { V1 } from '@rosen-clients/ergo-explorer';
3
+ import { DataSource } from '@rosen-bridge/extended-typeorm';
4
+ import { OutputBox } from '@rosen-bridge/scanner-interfaces';
6
5
  import PermitAction from '../actions/permitAction';
7
6
  import PermitEntity from '../entities/permitEntity';
8
7
  import { ExtractedPermit } from '../interfaces/extractedPermit';
9
- declare class PermitExtractor extends AbstractExtractor<Transaction, PermitEntity> {
10
- readonly logger: AbstractLogger;
11
- id: string;
12
- private readonly dataSource;
8
+ declare class PermitExtractor extends AbstractErgoBoxExtractor<ExtractedPermit, PermitEntity> {
9
+ private readonly id;
13
10
  readonly actions: PermitAction;
14
11
  private readonly permitErgoTree;
15
12
  private readonly RWT;
16
- readonly explorerApi: {
17
- v0: {
18
- getApiV0AddressesP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v0/types").GetApiV0AddressesP1Params) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").AddressInfo>;
19
- getApiV0AddressesP1Transactions: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v0/types").GetApiV0AddressesP1TransactionsParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").ItemsTransactionInfo>;
20
- getApiV0AddressesAssetholdersP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v0/types").GetApiV0AddressesAssetholdersP1Params) => Promise<string[]>;
21
- getApiV0AddressesBalances: (params?: import("@rosen-clients/ergo-explorer/dist/v0/types").GetApiV0AddressesBalancesParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").ItemsBalanceInfo>;
22
- getApiV0AssetsIssuingboxes: (params?: import("@rosen-clients/ergo-explorer/dist/v0/types").GetApiV0AssetsIssuingboxesParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").ItemsOutputInfo>;
23
- getApiV0AssetsP1Issuingbox: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").OutputInfo[]>;
24
- getApiV0Blocks: (params?: import("@rosen-clients/ergo-explorer/dist/v0/types").GetApiV0BlocksParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").ItemsBlockInfo>;
25
- getApiV0BlocksP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").BlockSummary>;
26
- getApiV0BlocksAtP1: (p1: number) => Promise<string[]>;
27
- getApiV0DexTokensP1Unspentsellorders: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v0/types").GetApiV0DexTokensP1UnspentsellordersParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").DexSellOrderInfo[]>;
28
- getApiV0DexTokensP1Unspentbuyorders: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v0/types").GetApiV0DexTokensP1UnspentbuyordersParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").DexBuyOrderInfo[]>;
29
- getApiV0TransactionsP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").TransactionSummary>;
30
- getApiV0TransactionsUnconfirmedP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").UTransactionSummary>;
31
- getApiV0TransactionsUnconfirmedByaddressP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v0/types").GetApiV0TransactionsUnconfirmedByaddressP1Params) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").ItemsUTransactionInfo>;
32
- getApiV0TransactionsUnconfirmed: (params?: import("@rosen-clients/ergo-explorer/dist/v0/types").GetApiV0TransactionsUnconfirmedParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").ItemsUTransactionInfo>;
33
- getApiV0TransactionsSinceP1: (p1: number, params?: import("@rosen-clients/ergo-explorer/dist/v0/types").GetApiV0TransactionsSinceP1Params) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").TransactionInfo[]>;
34
- postApiV0TransactionsSend: (postApiV0TransactionsSendBody: import("@rosen-clients/ergo-explorer/dist/v0/types").PostApiV0TransactionsSendBody) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").TxIdResponse>;
35
- getApiV0TransactionsBoxesP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").OutputInfo>;
36
- getApiV0TransactionsBoxesByergotreeP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").OutputInfo[]>;
37
- getApiV0TransactionsBoxesByergotreeUnspentP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").OutputInfo[]>;
38
- getApiV0TransactionsBoxesByaddressP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").OutputInfo[]>;
39
- getApiV0TransactionsBoxesByaddressUnspentP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").OutputInfo[]>;
40
- getApiV0Info: () => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").BlockChainInfo>;
41
- getApiV0InfoSupply: () => Promise<string>;
42
- getApiV0Stats: () => Promise<import("@rosen-clients/ergo-explorer/dist/v0/types").StatsSummary>;
43
- getApiV0DocsOpenapi: () => Promise<string>;
44
- };
45
- v1: {
46
- getApiV1TransactionsP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").TransactionInfo>;
47
- getApiV1TransactionsByinputsscripttemplatehashP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1TransactionsByinputsscripttemplatehashP1Params) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsTransactionInfo>;
48
- getApiV1TransactionsByglobalindexStream: (params: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1TransactionsByglobalindexStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ListTransactionInfo>;
49
- getApiV1BoxesUnspentBylastepochsStream: (params: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BoxesUnspentBylastepochsStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ListOutputInfo>;
50
- getApiV1BoxesUnspentByglobalindexStream: (params: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BoxesUnspentByglobalindexStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ListOutputInfo>;
51
- getApiV1BoxesUnspentStream: (params: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BoxesUnspentStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ListOutputInfo>;
52
- getApiV1BoxesByergotreetemplatehashP1Stream: (p1: string, params: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BoxesByergotreetemplatehashP1StreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ListOutputInfo>;
53
- getApiV1BoxesUnspentByergotreetemplatehashP1Stream: (p1: string, params: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BoxesUnspentByergotreetemplatehashP1StreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ListOutputInfo>;
54
- getApiV1BoxesUnspentBytokenidP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BoxesUnspentBytokenidP1Params) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsOutputInfo>;
55
- getApiV1BoxesBytokenidP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BoxesBytokenidP1Params) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsOutputInfo>;
56
- getApiV1BoxesP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").OutputInfo>;
57
- getApiV1BoxesByergotreeP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BoxesByergotreeP1Params) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsOutputInfo>;
58
- getApiV1BoxesByergotreetemplatehashP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BoxesByergotreetemplatehashP1Params) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsOutputInfo>;
59
- getApiV1BoxesUnspentByergotreeP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BoxesUnspentByergotreeP1Params) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsOutputInfo>;
60
- getApiV1BoxesUnspentByergotreetemplatehashP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BoxesUnspentByergotreetemplatehashP1Params) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsOutputInfo>;
61
- getApiV1BoxesByaddressP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BoxesByaddressP1Params) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsOutputInfo>;
62
- getApiV1BoxesUnspentUnconfirmedByaddressP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BoxesUnspentUnconfirmedByaddressP1Params) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").MOutputInfo[]>;
63
- getApiV1BoxesUnspentByaddressP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BoxesUnspentByaddressP1Params) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsOutputInfo>;
64
- getApiV1BoxesByglobalindexStream: (params: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BoxesByglobalindexStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ListOutputInfo>;
65
- postApiV1BoxesUnspentSearchUnion: (boxAssetsQuery: import("@rosen-clients/ergo-explorer/dist/v1/types").BoxAssetsQuery, params?: import("@rosen-clients/ergo-explorer/dist/v1/types").PostApiV1BoxesUnspentSearchUnionParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsOutputInfo>;
66
- postApiV1BoxesUnspentSearch: (boxQuery: import("@rosen-clients/ergo-explorer/dist/v1/types").BoxQuery, params?: import("@rosen-clients/ergo-explorer/dist/v1/types").PostApiV1BoxesUnspentSearchParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsOutputInfo>;
67
- postApiV1BoxesSearch: (boxQuery: import("@rosen-clients/ergo-explorer/dist/v1/types").BoxQuery, params?: import("@rosen-clients/ergo-explorer/dist/v1/types").PostApiV1BoxesSearchParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsOutputInfo>;
68
- getApiV1Tokens: (params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1TokensParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsTokenInfo>;
69
- getApiV1TokensSearch: (params: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1TokensSearchParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsTokenInfo>;
70
- getApiV1TokensBysymbolP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").TokenInfo[]>;
71
- getApiV1TokensP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").TokenInfo>;
72
- getApiV1Assets: (params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1AssetsParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsTokenInfo>;
73
- getApiV1AssetsSearchBytokenid: (params: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1AssetsSearchBytokenidParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsAssetInfo>;
74
- getApiV1EpochsParams: () => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").EpochInfo>;
75
- getApiV1AddressesP1Transactions: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1AddressesP1TransactionsParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsTransactionInfo>;
76
- getApiV1AddressesP1BalanceConfirmed: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1AddressesP1BalanceConfirmedParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").Balance>;
77
- getApiV1AddressesP1BalanceTotal: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").TotalBalance>;
78
- getApiV1Blocks: (params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BlocksParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsBlockInfo>;
79
- getApiV1BlocksP1: (p1: string) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").BlockSummary>;
80
- getApiV1BlocksHeaders: (params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BlocksHeadersParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsBlockHeader>;
81
- getApiV1BlocksByglobalindexStream: (params: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BlocksByglobalindexStreamParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ListBlockInfo>;
82
- getApiV1BlocksStreamSummary: (params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1BlocksStreamSummaryParams) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ListBlockSummaryV1>;
83
- postApiV1MempoolTransactionsSubmit: (postApiV1MempoolTransactionsSubmitBody: import("@rosen-clients/ergo-explorer/dist/v1/types").PostApiV1MempoolTransactionsSubmitBody) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").TxIdResponse>;
84
- getApiV1MempoolTransactionsByaddressP1: (p1: string, params?: import("@rosen-clients/ergo-explorer/dist/v1/types").GetApiV1MempoolTransactionsByaddressP1Params) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ItemsUTransactionInfo>;
85
- getApiV1MempoolBoxesUnspent: () => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ListOutputInfo>;
86
- getApiV1Info: () => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").NetworkState>;
87
- getApiV1Networkstate: () => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").NetworkState>;
88
- getApiV1Networkstats: () => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").NetworkStats>;
89
- postApiV1ErgotreeConvert: (ergoTreeConversionRequest: import("@rosen-clients/ergo-explorer/dist/v1/types").ErgoTreeConversionRequest) => Promise<import("@rosen-clients/ergo-explorer/dist/v1/types").ErgoTreeHuman>;
90
- };
91
- };
92
- constructor(id: string, dataSource: DataSource, address: string, RWT: string, explorerUrl: string, logger?: AbstractLogger);
93
- getId: () => string;
94
- /**
95
- * gets block id and transactions corresponding to the block and saves if they are valid rosen
96
- * transactions and in case of success return true and in case of failure returns false
97
- * @param block
98
- * @param txs
99
- */
100
- processTransactions: (txs: Array<Transaction>, block: BlockInfo) => Promise<boolean>;
101
- forkBlock: (hash: string) => Promise<void>;
102
- /**
103
- * Initializes the database with older permits related to the address
104
- */
105
- initializeData: (initialBlock: BlockInfo) => Promise<void>;
106
- /**
107
- * Validate all remaining permits in the database
108
- * update the correct ones and remove the invalid ones
109
- * @param unchangedStoredBoxIds
110
- * @param initialHeight
111
- */
112
- validateOldStoredPermits: (unchangedStoredBoxIds: Array<string>, initialHeight: number) => Promise<void>;
113
- /**
114
- * Return extracted permit from a box
115
- * @param boxId
116
- */
117
- getPermitWithBoxId: (boxId: string) => Promise<ExtractedPermit | undefined>;
13
+ constructor(id: string, dataSource: DataSource, address: string, RWT: string, initializeOptions: InitializeOptions, logger?: AbstractLogger);
118
14
  /**
119
- * Return all unspent permits
120
- * @param initialHeight
121
- * @returns
15
+ * get Id for current extractor
122
16
  */
123
- getAllUnspentPermits: (initialHeight: number) => Promise<Array<ExtractedPermit>>;
17
+ getId: () => string;
124
18
  /**
125
- * Returns block information of tx
126
- * @param txId
19
+ * check proper data format in the box
20
+ * @param box
21
+ * @return true if the box has the required data and false otherwise
127
22
  */
128
- getTxBlock: (txId: string) => Promise<{
129
- id: string;
130
- height: number;
131
- }>;
23
+ hasBoxData: (box: OutputBox) => boolean;
132
24
  /**
133
25
  * Extract permit data from json boxes
134
26
  * and filter to fit in a specified height range
@@ -137,14 +29,7 @@ declare class PermitExtractor extends AbstractExtractor<Transaction, PermitEntit
137
29
  * @param heightDifference
138
30
  * @returns extracted permit
139
31
  */
140
- extractPermitData: (boxes: Array<V1.OutputInfo>) => Promise<ExtractedPermit[]>;
141
- /**
142
- * Builds a query that returns used blocks by selecting the `block` column from the `PermitEntity` repository,
143
- * filtered by the provided `extractorId`
144
- *
145
- * @returns A query builder selecting used blocks
146
- */
147
- createUsedBlocksQuery: () => SelectQueryBuilder<PermitEntity>;
32
+ extractBoxData: (box: OutputBox) => ExtractedPermit | undefined;
148
33
  }
149
34
  export default PermitExtractor;
150
35
  //# sourceMappingURL=permitExtractor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"permitExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/permitExtractor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAkC,EAAE,EAAE,EAAE,MAAM,8BAA8B,CAAC;AAE7E,OAAO,YAAY,MAAM,yBAAyB,CAAC;AAEnD,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,cAAM,eAAgB,SAAQ,iBAAiB,CAAC,WAAW,EAAE,YAAY,CAAC;IACxE,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,QAAQ,CAAC,WAAW;;oDAtBqB,CAAC;gEAIJ,CAAC;gEAEmB,CAAC;8CAG5B,CAAC;+CAGF,CAAA;;mCAMO,CAAC;;;qEAepC,CAAF;oEAMI,CAAC;;;2EAY0C,CAAC;oDAO/B,CAAC;4DAKL,CAAC;;;;;;;;;;;;;;iFAiCJ,CADL;;;;;;;gEA4CyB,CAAC;yDAIzB,CAAH;;0DAI+D,CAAC;sEAIL,CAAC;iEAMvD,CAAC;6EAGiD,CAAC;yDAOrD,CAAC;2EAM6B,CAAC;gEAI7B,CAAR;;0IAmBA,CAJC;yHAQqB,CAAC;kHAInB,CAAA;mCASY,CAAC;;;;mCAYO,CAAC;;;gEASL,CAAC;oEAUgB,CAAC;;mCAUD,CAAC;;0CAOD,CAAC;;gDAQ9B,CAAN;;uEAUM,CAAL;;;;;;;MAjQkB;gBAGnB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,cAAc;IAiBzB,KAAK,eAAiB;IAEtB;;;;;OAKG;IACH,mBAAmB,GACjB,KAAK,KAAK,CAAC,WAAW,CAAC,EACvB,OAAO,SAAS,KACf,OAAO,CAAC,OAAO,CAAC,CAoEjB;IAEF,SAAS,GAAU,MAAM,MAAM,mBAE7B;IAEF;;OAEG;IACH,cAAc,GAAU,cAAc,SAAS,mBA0B7C;IAEF;;;;;OAKG;IACH,wBAAwB,GACtB,uBAAuB,KAAK,CAAC,MAAM,CAAC,EACpC,eAAe,MAAM,mBAmBrB;IAEF;;;OAGG;IACH,kBAAkB,GAChB,OAAO,MAAM,KACZ,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAQrC;IAEF;;;;OAIG;IACH,oBAAoB,GAClB,eAAe,MAAM,KACpB,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAuBhC;IAEF;;;OAGG;IACH,UAAU,GAAU,MAAM,MAAM;;;OAM9B;IAEF;;;;;;;OAOG;IACH,iBAAiB,GAAU,OAAO,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,gCA4BpD;IAEF;;;;;OAKG;IACH,qBAAqB,QAAO,kBAAkB,CAAC,YAAY,CAAC,CACT;CACpD;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"permitExtractor.d.ts","sourceRoot":"","sources":["../../lib/extractor/permitExtractor.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAe,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAC;AAE7D,OAAO,YAAY,MAAM,yBAAyB,CAAC;AACnD,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,cAAM,eAAgB,SAAQ,wBAAwB,CACpD,eAAe,EACf,YAAY,CACb;IACC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAC5B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;gBAG3B,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,CAAC,EAAE,cAAc;IAezB;;OAEG;IACH,KAAK,eAAsB;IAE3B;;;;OAIG;IACH,UAAU,GAAI,KAAK,SAAS,KAAG,OAAO,CAYpC;IAEF;;;;;;;OAOG;IACH,cAAc,GAAI,KAAK,SAAS,KAAG,eAAe,GAAG,SAAS,CAc5D;CACH;AAED,eAAe,eAAe,CAAC"}
@@ -1,192 +1,43 @@
1
1
  import { Buffer } from 'buffer';
2
2
  import * as wasm from 'ergo-lib-wasm-nodejs';
3
- import * as ergoLib from 'ergo-lib-wasm-nodejs';
4
- import { difference } from 'lodash-es';
5
- import { AbstractExtractor } from '@rosen-bridge/abstract-extractor';
3
+ import { AbstractErgoBoxExtractor, } from '@rosen-bridge/abstract-extractor';
6
4
  import { DummyLogger } from '@rosen-bridge/abstract-logger';
7
- import ergoExplorerClientFactory from '@rosen-clients/ergo-explorer';
8
5
  import PermitAction from '../actions/permitAction';
9
- import { DefaultApiLimit } from '../constants';
10
6
  import { JsonBI } from '../utils';
11
- class PermitExtractor extends AbstractExtractor {
12
- logger;
7
+ class PermitExtractor extends AbstractErgoBoxExtractor {
13
8
  id;
14
- dataSource;
15
9
  actions;
16
10
  permitErgoTree;
17
11
  RWT;
18
- explorerApi;
19
- constructor(id, dataSource, address, RWT, explorerUrl, logger) {
20
- super();
12
+ constructor(id, dataSource, address, RWT, initializeOptions, logger) {
13
+ super(initializeOptions, logger);
21
14
  this.id = id;
22
- this.dataSource = dataSource;
23
15
  this.permitErgoTree = wasm.Address.from_base58(address)
24
16
  .to_ergo_tree()
25
17
  .to_base16_bytes();
26
18
  this.RWT = RWT;
27
19
  this.logger = logger ? logger : new DummyLogger();
28
20
  this.actions = new PermitAction(dataSource, this.logger.child('PermitAction'));
29
- this.explorerApi = ergoExplorerClientFactory(explorerUrl);
30
21
  }
31
- getId = () => this.id;
32
22
  /**
33
- * gets block id and transactions corresponding to the block and saves if they are valid rosen
34
- * transactions and in case of success return true and in case of failure returns false
35
- * @param block
36
- * @param txs
23
+ * get Id for current extractor
37
24
  */
38
- processTransactions = (txs, block) => {
39
- return new Promise((resolve, reject) => {
40
- try {
41
- const boxes = [];
42
- const spendIds = [];
43
- txs.forEach((transaction) => {
44
- for (const output of transaction.outputs) {
45
- try {
46
- if (output.additionalRegisters &&
47
- output.additionalRegisters.R4 &&
48
- output.assets &&
49
- output.assets.length > 0 &&
50
- output.assets[0].tokenId === this.RWT &&
51
- output.ergoTree === this.permitErgoTree) {
52
- const boxOutput = wasm.ErgoBox.from_json(JsonBI.stringify(output));
53
- const r4 = boxOutput.register_value(wasm.NonMandatoryRegisterId.R4);
54
- if (r4) {
55
- const R4Serialized = r4.to_byte_array();
56
- if (R4Serialized.length >= 1) {
57
- boxes.push({
58
- boxId: output.boxId,
59
- boxSerialized: Buffer.from(boxOutput.sigma_serialize_bytes()).toString('base64'),
60
- WID: Buffer.from(R4Serialized).toString('hex'),
61
- txId: output.transactionId,
62
- });
63
- }
64
- }
65
- }
66
- }
67
- catch {
68
- // empty
69
- }
70
- }
71
- // process inputs
72
- for (const input of transaction.inputs) {
73
- spendIds.push(input.boxId);
74
- }
75
- });
76
- this.actions
77
- .storePermits(boxes, block, this.getId())
78
- .then(() => {
79
- this.actions
80
- .spendPermits(spendIds, block, this.getId())
81
- .then(() => {
82
- resolve(true);
83
- });
84
- })
85
- .catch((e) => {
86
- this.logger.error(`Error in storing permits of the block ${block}: ${e}`);
87
- reject(e);
88
- });
89
- }
90
- catch (e) {
91
- this.logger.error(`block ${block} doesn't save in the database with error: ${e}`);
92
- reject(e);
93
- }
94
- });
95
- };
96
- forkBlock = async (hash) => {
97
- await this.actions.deleteBlock(hash, this.getId());
98
- };
25
+ getId = () => `${this.id}`;
99
26
  /**
100
- * Initializes the database with older permits related to the address
27
+ * check proper data format in the box
28
+ * @param box
29
+ * @return true if the box has the required data and false otherwise
101
30
  */
102
- initializeData = async (initialBlock) => {
103
- let allStoredBoxIds = await this.actions.getAllPermitBoxIds(this.getId());
104
- // Extract unspent permits
105
- const unspentPermits = await this.getAllUnspentPermits(initialBlock.height);
106
- const unspentBoxIds = unspentPermits.map((box) => box.boxId);
107
- // Storing extracted permits
108
- for (const permit of unspentPermits) {
109
- if (allStoredBoxIds.includes(permit.boxId)) {
110
- await this.actions.updatePermit(permit, this.getId());
111
- this.logger.info(`Updated the existing unspent permit with boxId, [${permit.boxId}]`);
112
- this.logger.debug(`Updated permit [${JSON.stringify(permit)}]`);
113
- }
114
- else {
115
- await this.actions.insertPermit(permit, this.getId());
116
- this.logger.info(`Inserted new unspent permit with boxId, [${permit.boxId}]`);
117
- this.logger.debug(`Inserted permit [${JSON.stringify(permit)}]`);
118
- }
31
+ hasBoxData = (box) => {
32
+ if (box.additionalRegisters &&
33
+ box.additionalRegisters.R4 &&
34
+ box.assets &&
35
+ box.assets.length > 0 &&
36
+ box.assets[0].tokenId === this.RWT &&
37
+ box.ergoTree === this.permitErgoTree) {
38
+ return false;
119
39
  }
120
- // Remove updated permits from existing permits in database
121
- allStoredBoxIds = difference(allStoredBoxIds, unspentBoxIds);
122
- // Validating remained permits
123
- // TODO: Fix validation process
124
- // await this.validateOldStoredPermits(allStoredBoxIds, initialHeight);
125
- };
126
- /**
127
- * Validate all remaining permits in the database
128
- * update the correct ones and remove the invalid ones
129
- * @param unchangedStoredBoxIds
130
- * @param initialHeight
131
- */
132
- validateOldStoredPermits = async (unchangedStoredBoxIds, initialHeight) => {
133
- for (const boxId of unchangedStoredBoxIds) {
134
- const permit = await this.getPermitWithBoxId(boxId);
135
- if (permit && permit.spendBlock && permit.spendHeight) {
136
- if (permit.spendHeight < initialHeight)
137
- await this.actions.updateSpendBlock(boxId, this.getId(), permit.spendBlock, permit.spendHeight);
138
- }
139
- else {
140
- await this.actions.removePermit(boxId, this.getId());
141
- this.logger.info(`Removed invalid box [${boxId}] in initialization validation`);
142
- }
143
- }
144
- };
145
- /**
146
- * Return extracted permit from a box
147
- * @param boxId
148
- */
149
- getPermitWithBoxId = async (boxId) => {
150
- try {
151
- const box = await this.explorerApi.v1.getApiV1BoxesP1(boxId);
152
- return (await this.extractPermitData([box]))[0];
153
- }
154
- catch {
155
- this.logger.warn(`Permit with boxId ${boxId} does not exist`);
156
- return undefined;
157
- }
158
- };
159
- /**
160
- * Return all unspent permits
161
- * @param initialHeight
162
- * @returns
163
- */
164
- getAllUnspentPermits = async (initialHeight) => {
165
- let extractedBoxes = [];
166
- let offset = 0, total = DefaultApiLimit;
167
- while (offset < total) {
168
- const boxes = await this.explorerApi.v1.getApiV1BoxesUnspentByergotreeP1(this.permitErgoTree, { offset: offset, limit: DefaultApiLimit });
169
- if (!boxes.items) {
170
- this.logger.warn('Explorer api output items should not be undefined.');
171
- throw new Error('Incorrect explorer api output');
172
- }
173
- const filteredBoxes = await this.extractPermitData(boxes.items.filter((box) => box.creationHeight && box.creationHeight < initialHeight));
174
- extractedBoxes = [...extractedBoxes, ...filteredBoxes];
175
- total = boxes.total;
176
- offset += DefaultApiLimit;
177
- }
178
- return extractedBoxes;
179
- };
180
- /**
181
- * Returns block information of tx
182
- * @param txId
183
- */
184
- getTxBlock = async (txId) => {
185
- const tx = await this.explorerApi.v1.getApiV1TransactionsP1(txId);
186
- return {
187
- id: tx.blockId,
188
- height: tx.inclusionHeight,
189
- };
40
+ return true;
190
41
  };
191
42
  /**
192
43
  * Extract permit data from json boxes
@@ -196,40 +47,19 @@ class PermitExtractor extends AbstractExtractor {
196
47
  * @param heightDifference
197
48
  * @returns extracted permit
198
49
  */
199
- extractPermitData = async (boxes) => {
200
- const extractedBoxes = [];
201
- for (const boxJson of boxes) {
202
- const box = ergoLib.ErgoBox.from_json(JsonBI.stringify(boxJson));
203
- const r4 = box.register_value(4);
204
- if (r4) {
205
- const R4Serialized = r4.to_byte_array();
206
- let spendBlock, spendHeight;
207
- if (boxJson.spentTransactionId) {
208
- const block = await this.getTxBlock(boxJson.spentTransactionId);
209
- spendBlock = block.id;
210
- spendHeight = block.height;
211
- }
212
- extractedBoxes.push({
213
- boxId: box.box_id().to_str(),
214
- boxSerialized: Buffer.from(box.sigma_serialize_bytes()).toString('base64'),
215
- block: boxJson.blockId,
216
- height: boxJson.settlementHeight,
217
- WID: Buffer.from(R4Serialized).toString('hex'),
218
- txId: box.tx_id().to_str(),
219
- spendBlock: spendBlock,
220
- spendHeight: spendHeight,
221
- });
222
- }
223
- }
224
- return extractedBoxes;
50
+ extractBoxData = (box) => {
51
+ const ergoBox = wasm.ErgoBox.from_json(JsonBI.stringify(box));
52
+ const r4 = ergoBox
53
+ .register_value(wasm.NonMandatoryRegisterId.R4)
54
+ ?.to_byte_array();
55
+ const wid = Buffer.from(r4).toString('hex');
56
+ return {
57
+ identifier: ergoBox.box_id().to_str(),
58
+ serialized: Buffer.from(ergoBox.sigma_serialize_bytes()).toString('base64'),
59
+ txId: box.transactionId,
60
+ WID: wid,
61
+ };
225
62
  };
226
- /**
227
- * Builds a query that returns used blocks by selecting the `block` column from the `PermitEntity` repository,
228
- * filtered by the provided `extractorId`
229
- *
230
- * @returns A query builder selecting used blocks
231
- */
232
- createUsedBlocksQuery = () => this.actions.createUsedBlocksQuery(this.getId());
233
63
  }
234
64
  export default PermitExtractor;
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWl0RXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2V4dHJhY3Rvci9wZXJtaXRFeHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEtBQUssSUFBSSxNQUFNLHNCQUFzQixDQUFDO0FBQzdDLE9BQU8sS0FBSyxPQUFPLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV2QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNyRSxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRzVFLE9BQU8seUJBQWlDLE1BQU0sOEJBQThCLENBQUM7QUFFN0UsT0FBTyxZQUFZLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUcvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWxDLE1BQU0sZUFBZ0IsU0FBUSxpQkFBNEM7SUFDL0QsTUFBTSxDQUFpQjtJQUNoQyxFQUFFLENBQVM7SUFDTSxVQUFVLENBQWE7SUFDL0IsT0FBTyxDQUFlO0lBQ2QsY0FBYyxDQUFTO0lBQ3ZCLEdBQUcsQ0FBUztJQUNwQixXQUFXLENBQUM7SUFFckIsWUFDRSxFQUFVLEVBQ1YsVUFBc0IsRUFDdEIsT0FBZSxFQUNmLEdBQVcsRUFDWCxXQUFtQixFQUNuQixNQUF1QjtRQUV2QixLQUFLLEVBQUUsQ0FBQztRQUNSLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7YUFD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QUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixFQUFFLENBQUMsQ0FBQyxRQUFRLENBQzlELFFBQVEsQ0FDVDtvQkFDRCxLQUFLLEVBQUUsT0FBTyxDQUFDLE9BQU87b0JBQ3RCLE1BQU0sRUFBRSxPQUFPLENBQUMsZ0JBQWdCO29CQUNoQyxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO29CQUM5QyxJQUFJLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLE1BQU0sRUFBRTtvQkFDMUIsVUFBVSxFQUFFLFVBQVU7b0JBQ3RCLFdBQVcsRUFBRSxXQUFXO2lCQUN6QixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sY0FBYyxDQUFDO0lBQ3hCLENBQUMsQ0FBQztJQUVGOzs7OztPQUtHO0lBQ0gscUJBQXFCLEdBQUcsR0FBcUMsRUFBRSxDQUM3RCxJQUFJLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0NBQ3BEO0FBRUQsZUFBZSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0ICogYXMgd2FzbSBmcm9tICdlcmdvLWxpYi13YXNtLW5vZGVqcyc7XG5pbXBvcnQgKiBhcyBlcmdvTGliIGZyb20gJ2VyZ28tbGliLXdhc20tbm9kZWpzJztcbmltcG9ydCB7IGRpZmZlcmVuY2UgfSBmcm9tICdsb2Rhc2gtZXMnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdEV4dHJhY3RvciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtZXh0cmFjdG9yJztcbmltcG9ydCB7IEFic3RyYWN0TG9nZ2VyLCBEdW1teUxvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IERhdGFTb3VyY2UsIFNlbGVjdFF1ZXJ5QnVpbGRlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5pbXBvcnQgeyBCbG9ja0luZm8sIFRyYW5zYWN0aW9uIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9zY2FubmVyLWludGVyZmFjZXMnO1xuaW1wb3J0IGVyZ29FeHBsb3JlckNsaWVudEZhY3RvcnksIHsgVjEgfSBmcm9tICdAcm9zZW4tY2xpZW50cy9lcmdvLWV4cGxvcmVyJztcblxuaW1wb3J0IFBlcm1pdEFjdGlvbiBmcm9tICcuLi9hY3Rpb25zL3Blcm1pdEFjdGlvbic7XG5pbXBvcnQgeyBEZWZhdWx0QXBpTGltaXQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IFBlcm1pdEVudGl0eSBmcm9tICcuLi9lbnRpdGllcy9wZXJtaXRFbnRpdHknO1xuaW1wb3J0IHsgRXh0cmFjdGVkUGVybWl0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRyYWN0ZWRQZXJtaXQnO1xuaW1wb3J0IHsgSnNvbkJJIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jbGFzcyBQZXJtaXRFeHRyYWN0b3IgZXh0ZW5kcyBBYnN0cmFjdEV4dHJhY3RvcjxUcmFuc2FjdGlvbiwgUGVybWl0RW50aXR5PiB7XG4gIHJlYWRvbmx5IGxvZ2dlcjogQWJzdHJhY3RMb2dnZXI7XG4gIGlkOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF0YVNvdXJjZTogRGF0YVNvdXJjZTtcbiAgcmVhZG9ubHkgYWN0aW9uczogUGVybWl0QWN0aW9uO1xuICBwcml2YXRlIHJlYWRvbmx5IHBlcm1pdEVyZ29UcmVlOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgUldUOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGV4cGxvcmVyQXBpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICBhZGRyZXNzOiBzdHJpbmcsXG4gICAgUldUOiBzdHJpbmcsXG4gICAgZXhwbG9yZXJVcmw6IHN0cmluZyxcbiAgICBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlcixcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmlkID0gaWQ7XG4gICAgdGhpcy5kYXRhU291cmNlID0gZGF0YVNvdXJjZTtcbiAgICB0aGlzLnBlcm1pdEVyZ29UcmVlID0gd2FzbS5BZGRyZXNzLmZyb21fYmFzZTU4KGFkZHJlc3MpXG4gICAgICAudG9fZXJnb190cmVlKClcbiAgICAgIC50b19iYXNlMTZfYnl0ZXMoKTtcbiAgICB0aGlzLlJXVCA9IFJXVDtcbiAgICB0aGlzLmxvZ2dlciA9IGxvZ2dlciA/IGxvZ2dlciA6IG5ldyBEdW1teUxvZ2dlcigpO1xuICAgIHRoaXMuYWN0aW9ucyA9IG5ldyBQZXJtaXRBY3Rpb24oXG4gICAgICBkYXRhU291cmNlLFxuICAgICAgdGhpcy5sb2dnZXIuY2hpbGQoJ1Blcm1pdEFjdGlvbicpLFxuICAgICk7XG4gICAgdGhpcy5leHBsb3JlckFwaSA9IGVyZ29FeHBsb3JlckNsaWVudEZhY3RvcnkoZXhwbG9yZXJVcmwpO1xuICB9XG5cbiAgZ2V0SWQgPSAoKSA9PiB0aGlzLmlkO1xuXG4gIC8qKlxuICAgKiBnZXRzIGJsb2NrIGlkIGFuZCB0cmFuc2FjdGlvbnMgY29ycmVzcG9uZGluZyB0byB0aGUgYmxvY2sgYW5kIHNhdmVzIGlmIHRoZXkgYXJlIHZhbGlkIHJvc2VuXG4gICAqICB0cmFuc2FjdGlvbnMgYW5kIGluIGNhc2Ugb2Ygc3VjY2VzcyByZXR1cm4gdHJ1ZSBhbmQgaW4gY2FzZSBvZiBmYWlsdXJlIHJldHVybnMgZmFsc2VcbiAgICogQHBhcmFtIGJsb2NrXG4gICAqIEBwYXJhbSB0eHNcbiAgICovXG4gIHByb2Nlc3NUcmFuc2FjdGlvbnMgPSAoXG4gICAgdHhzOiBBcnJheTxUcmFuc2FjdGlvbj4sXG4gICAgYmxvY2s6IEJsb2NrSW5mbyxcbiAgKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGJveGVzOiBBcnJheTxFeHRyYWN0ZWRQZXJtaXQ+ID0gW107XG4gICAgICAgIGNvbnN0IHNwZW5kSWRzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgICAgIHR4cy5mb3JFYWNoKCh0cmFuc2FjdGlvbikgPT4ge1xuICAgICAgICAgIGZvciAoY29uc3Qgb3V0cHV0IG9mIHRyYW5zYWN0aW9uLm91dHB1dHMpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBvdXRwdXQuYWRkaXRpb25hbFJlZ2lzdGVycyAmJlxuICAgICAgICAgICAgICAgIG91dHB1dC5hZGRpdGlvbmFsUmVnaXN0ZXJzLlI0ICYmXG4gICAgICAgICAgICAgICAgb3V0cHV0LmFzc2V0cyAmJlxuICAgICAgICAgICAgICAgIG91dHB1dC5hc3NldHMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgICAgICAgIG91dHB1dC5hc3NldHNbMF0udG9rZW5JZCA9PT0gdGhpcy5SV1QgJiZcbiAgICAgICAgICAgICAgICBvdXRwdXQuZXJnb1RyZWUgPT09IHRoaXMucGVybWl0RXJnb1RyZWVcbiAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYm94T3V0cHV0ID0gd2FzbS5FcmdvQm94LmZyb21fanNvbihcbiAgICAgICAgICAgICAgICAgIEpzb25CSS5zdHJpbmdpZnkob3V0cHV0KSxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnN0IHI0ID0gYm94T3V0cHV0LnJlZ2lzdGVyX3ZhbHVlKFxuICAgICAgICAgICAgICAgICAgd2FzbS5Ob25NYW5kYXRvcnlSZWdpc3RlcklkLlI0LFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKHI0KSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBSNFNlcmlhbGl6ZWQgPSByNC50b19ieXRlX2FycmF5KCk7XG4gICAgICAgICAgICAgICAgICBpZiAoUjRTZXJpYWxpemVkLmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIGJveGVzLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgIGJveElkOiBvdXRwdXQuYm94SWQsXG4gICAgICAgICAgICAgICAgICAgICAgYm94U2VyaWFsaXplZDogQnVmZmVyLmZyb20oXG4gICAgICAgICAgICAgICAgICAgICAgICBib3hPdXRwdXQuc2lnbWFfc2VyaWFsaXplX2J5dGVzKCksXG4gICAgICAgICAgICAgICAgICAgICAgKS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICAgICAgICAgICAgICAgICAgV0lEOiBCdWZmZXIuZnJvbShSNFNlcmlhbGl6ZWQpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgICAgICAgICAgICAgICB0eElkOiBvdXRwdXQudHJhbnNhY3Rpb25JZCxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgLy8gZW1wdHlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gcHJvY2VzcyBpbnB1dHNcbiAgICAgICAgICBmb3IgKGNvbnN0IGlucHV0IG9mIHRyYW5zYWN0aW9uLmlucHV0cykge1xuICAgICAgICAgICAgc3BlbmRJZHMucHVzaChpbnB1dC5ib3hJZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmFjdGlvbnNcbiAgICAgICAgICAuc3RvcmVQZXJtaXRzKGJveGVzLCBibG9jaywgdGhpcy5nZXRJZCgpKVxuICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uc1xuICAgICAgICAgICAgICAuc3BlbmRQZXJtaXRzKHNwZW5kSWRzLCBibG9jaywgdGhpcy5nZXRJZCgpKVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICAgICAgICBgRXJyb3IgaW4gc3RvcmluZyBwZXJtaXRzIG9mIHRoZSBibG9jayAke2Jsb2NrfTogJHtlfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgICBgYmxvY2sgJHtibG9ja30gZG9lc24ndCBzYXZlIGluIHRoZSBkYXRhYmFzZSB3aXRoIGVycm9yOiAke2V9YCxcbiAgICAgICAgKTtcbiAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIGZvcmtCbG9jayA9IGFzeW5jIChoYXNoOiBzdHJpbmcpID0+IHtcbiAgICBhd2FpdCB0aGlzLmFjdGlvbnMuZGVsZXRlQmxvY2soaGFzaCwgdGhpcy5nZXRJZCgpKTtcbiAgfTtcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGRhdGFiYXNlIHdpdGggb2xkZXIgcGVybWl0cyByZWxhdGVkIHRvIHRoZSBhZGRyZXNzXG4gICAqL1xuICBpbml0aWFsaXplRGF0YSA9IGFzeW5jIChpbml0aWFsQmxvY2s6IEJsb2NrSW5mbykgPT4ge1xuICAgIGxldCBhbGxTdG9yZWRCb3hJZHMgPSBhd2FpdCB0aGlzLmFjdGlvbnMuZ2V0QWxsUGVybWl0Qm94SWRzKHRoaXMuZ2V0SWQoKSk7XG4gICAgLy8gRXh0cmFjdCB1bnNwZW50IHBlcm1pdHNcbiAgICBjb25zdCB1bnNwZW50UGVybWl0cyA9IGF3YWl0IHRoaXMuZ2V0QWxsVW5zcGVudFBlcm1pdHMoaW5pdGlhbEJsb2NrLmhlaWdodCk7XG4gICAgY29uc3QgdW5zcGVudEJveElkcyA9IHVuc3BlbnRQZXJtaXRzLm1hcCgoYm94KSA9PiBib3guYm94SWQpO1xuICAgIC8vIFN0b3JpbmcgZXh0cmFjdGVkIHBlcm1pdHNcbiAgICBmb3IgKGNvbnN0IHBlcm1pdCBvZiB1bnNwZW50UGVybWl0cykge1xuICAgICAgaWYgKGFsbFN0b3JlZEJveElkcy5pbmNsdWRlcyhwZXJtaXQuYm94SWQpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWN0aW9ucy51cGRhdGVQZXJtaXQocGVybWl0LCB0aGlzLmdldElkKCkpO1xuICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgIGBVcGRhdGVkIHRoZSBleGlzdGluZyB1bnNwZW50IHBlcm1pdCB3aXRoIGJveElkLCBbJHtwZXJtaXQuYm94SWR9XWAsXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGBVcGRhdGVkIHBlcm1pdCBbJHtKU09OLnN0cmluZ2lmeShwZXJtaXQpfV1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5pbnNlcnRQZXJtaXQocGVybWl0LCB0aGlzLmdldElkKCkpO1xuICAgICAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgICAgIGBJbnNlcnRlZCBuZXcgdW5zcGVudCBwZXJtaXQgd2l0aCBib3hJZCwgWyR7cGVybWl0LmJveElkfV1gLFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgSW5zZXJ0ZWQgcGVybWl0IFske0pTT04uc3RyaW5naWZ5KHBlcm1pdCl9XWApO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBSZW1vdmUgdXBkYXRlZCBwZXJtaXRzIGZyb20gZXhpc3RpbmcgcGVybWl0cyBpbiBkYXRhYmFzZVxuICAgIGFsbFN0b3JlZEJveElkcyA9IGRpZmZlcmVuY2UoYWxsU3RvcmVkQm94SWRzLCB1bnNwZW50Qm94SWRzKTtcbiAgICAvLyBWYWxpZGF0aW5nIHJlbWFpbmVkIHBlcm1pdHNcbiAgICAvLyBUT0RPOiBGaXggdmFsaWRhdGlvbiBwcm9jZXNzXG4gICAgLy8gYXdhaXQgdGhpcy52YWxpZGF0ZU9sZFN0b3JlZFBlcm1pdHMoYWxsU3RvcmVkQm94SWRzLCBpbml0aWFsSGVpZ2h0KTtcbiAgfTtcblxuICAvKipcbiAgICogVmFsaWRhdGUgYWxsIHJlbWFpbmluZyBwZXJtaXRzIGluIHRoZSBkYXRhYmFzZVxuICAgKiB1cGRhdGUgdGhlIGNvcnJlY3Qgb25lcyBhbmQgcmVtb3ZlIHRoZSBpbnZhbGlkIG9uZXNcbiAgICogQHBhcmFtIHVuY2hhbmdlZFN0b3JlZEJveElkc1xuICAgKiBAcGFyYW0gaW5pdGlhbEhlaWdodFxuICAgKi9cbiAgdmFsaWRhdGVPbGRTdG9yZWRQZXJtaXRzID0gYXN5bmMgKFxuICAgIHVuY2hhbmdlZFN0b3JlZEJveElkczogQXJyYXk8c3RyaW5nPixcbiAgICBpbml0aWFsSGVpZ2h0OiBudW1iZXIsXG4gICkgPT4ge1xuICAgIGZvciAoY29uc3QgYm94SWQgb2YgdW5jaGFuZ2VkU3RvcmVkQm94SWRzKSB7XG4gICAgICBjb25zdCBwZXJtaXQgPSBhd2FpdCB0aGlzLmdldFBlcm1pdFdpdGhCb3hJZChib3hJZCk7XG4gICAgICBpZiAocGVybWl0ICYmIHBlcm1pdC5zcGVuZEJsb2NrICYmIHBlcm1pdC5zcGVuZEhlaWdodCkge1xuICAgICAgICBpZiAocGVybWl0LnNwZW5kSGVpZ2h0IDwgaW5pdGlhbEhlaWdodClcbiAgICAgICAgICBhd2FpdCB0aGlzLmFjdGlvbnMudXBkYXRlU3BlbmRCbG9jayhcbiAgICAgICAgICAgIGJveElkLFxuICAgICAgICAgICAgdGhpcy5nZXRJZCgpLFxuICAgICAgICAgICAgcGVybWl0LnNwZW5kQmxvY2ssXG4gICAgICAgICAgICBwZXJtaXQuc3BlbmRIZWlnaHQsXG4gICAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWN0aW9ucy5yZW1vdmVQZXJtaXQoYm94SWQsIHRoaXMuZ2V0SWQoKSk7XG4gICAgICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICAgICAgYFJlbW92ZWQgaW52YWxpZCBib3ggWyR7Ym94SWR9XSBpbiBpbml0aWFsaXphdGlvbiB2YWxpZGF0aW9uYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybiBleHRyYWN0ZWQgcGVybWl0IGZyb20gYSBib3hcbiAgICogQHBhcmFtIGJveElkXG4gICAqL1xuICBnZXRQZXJtaXRXaXRoQm94SWQgPSBhc3luYyAoXG4gICAgYm94SWQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxFeHRyYWN0ZWRQZXJtaXQgfCB1bmRlZmluZWQ+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgYm94ID0gYXdhaXQgdGhpcy5leHBsb3JlckFwaS52MS5nZXRBcGlWMUJveGVzUDEoYm94SWQpO1xuICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLmV4dHJhY3RQZXJtaXREYXRhKFtib3hdKSlbMF07XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKGBQZXJtaXQgd2l0aCBib3hJZCAke2JveElkfSBkb2VzIG5vdCBleGlzdGApO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybiBhbGwgdW5zcGVudCBwZXJtaXRzXG4gICAqIEBwYXJhbSBpbml0aWFsSGVpZ2h0XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBnZXRBbGxVbnNwZW50UGVybWl0cyA9IGFzeW5jIChcbiAgICBpbml0aWFsSGVpZ2h0OiBudW1iZXIsXG4gICk6IFByb21pc2U8QXJyYXk8RXh0cmFjdGVkUGVybWl0Pj4gPT4ge1xuICAgIGxldCBleHRyYWN0ZWRCb3hlczogQXJyYXk8RXh0cmFjdGVkUGVybWl0PiA9IFtdO1xuICAgIGxldCBvZmZzZXQgPSAwLFxuICAgICAgdG90YWwgPSBEZWZhdWx0QXBpTGltaXQ7XG4gICAgd2hpbGUgKG9mZnNldCA8IHRvdGFsKSB7XG4gICAgICBjb25zdCBib3hlcyA9IGF3YWl0IHRoaXMuZXhwbG9yZXJBcGkudjEuZ2V0QXBpVjFCb3hlc1Vuc3BlbnRCeWVyZ290cmVlUDEoXG4gICAgICAgIHRoaXMucGVybWl0RXJnb1RyZWUsXG4gICAgICAgIHsgb2Zmc2V0OiBvZmZzZXQsIGxpbWl0OiBEZWZhdWx0QXBpTGltaXQgfSxcbiAgICAgICk7XG4gICAgICBpZiAoIWJveGVzLml0ZW1zKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ0V4cGxvcmVyIGFwaSBvdXRwdXQgaXRlbXMgc2hvdWxkIG5vdCBiZSB1bmRlZmluZWQuJyk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW5jb3JyZWN0IGV4cGxvcmVyIGFwaSBvdXRwdXQnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpbHRlcmVkQm94ZXMgPSBhd2FpdCB0aGlzLmV4dHJhY3RQZXJtaXREYXRhKFxuICAgICAgICBib3hlcy5pdGVtcy5maWx0ZXIoXG4gICAgICAgICAgKGJveCkgPT4gYm94LmNyZWF0aW9uSGVpZ2h0ICYmIGJveC5jcmVhdGlvbkhlaWdodCA8IGluaXRpYWxIZWlnaHQsXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgZXh0cmFjdGVkQm94ZXMgPSBbLi4uZXh0cmFjdGVkQm94ZXMsIC4uLmZpbHRlcmVkQm94ZXNdO1xuICAgICAgdG90YWwgPSBib3hlcy50b3RhbDtcbiAgICAgIG9mZnNldCArPSBEZWZhdWx0QXBpTGltaXQ7XG4gICAgfVxuICAgIHJldHVybiBleHRyYWN0ZWRCb3hlcztcbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyBibG9jayBpbmZvcm1hdGlvbiBvZiB0eFxuICAgKiBAcGFyYW0gdHhJZFxuICAgKi9cbiAgZ2V0VHhCbG9jayA9IGFzeW5jICh0eElkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCB0eCA9IGF3YWl0IHRoaXMuZXhwbG9yZXJBcGkudjEuZ2V0QXBpVjFUcmFuc2FjdGlvbnNQMSh0eElkKTtcbiAgICByZXR1cm4ge1xuICAgICAgaWQ6IHR4LmJsb2NrSWQsXG4gICAgICBoZWlnaHQ6IHR4LmluY2x1c2lvbkhlaWdodCxcbiAgICB9O1xuICB9O1xuXG4gIC8qKlxuICAgKiBFeHRyYWN0IHBlcm1pdCBkYXRhIGZyb20ganNvbiBib3hlc1xuICAgKiBhbmQgZmlsdGVyIHRvIGZpdCBpbiBhIHNwZWNpZmllZCBoZWlnaHQgcmFuZ2VcbiAgICogQHBhcmFtIGJveGVzXG4gICAqIEBwYXJhbSB0b0hlaWdodFxuICAgKiBAcGFyYW0gaGVpZ2h0RGlmZmVyZW5jZVxuICAgKiBAcmV0dXJucyBleHRyYWN0ZWQgcGVybWl0XG4gICAqL1xuICBleHRyYWN0UGVybWl0RGF0YSA9IGFzeW5jIChib3hlczogQXJyYXk8VjEuT3V0cHV0SW5mbz4pID0+IHtcbiAgICBjb25zdCBleHRyYWN0ZWRCb3hlczogQXJyYXk8RXh0cmFjdGVkUGVybWl0PiA9IFtdO1xuICAgIGZvciAoY29uc3QgYm94SnNvbiBvZiBib3hlcykge1xuICAgICAgY29uc3QgYm94ID0gZXJnb0xpYi5FcmdvQm94LmZyb21fanNvbihKc29uQkkuc3RyaW5naWZ5KGJveEpzb24pKTtcbiAgICAgIGNvbnN0IHI0ID0gYm94LnJlZ2lzdGVyX3ZhbHVlKDQpO1xuICAgICAgaWYgKHI0KSB7XG4gICAgICAgIGNvbnN0IFI0U2VyaWFsaXplZCA9IHI0LnRvX2J5dGVfYXJyYXkoKTtcbiAgICAgICAgbGV0IHNwZW5kQmxvY2ssIHNwZW5kSGVpZ2h0O1xuICAgICAgICBpZiAoYm94SnNvbi5zcGVudFRyYW5zYWN0aW9uSWQpIHtcbiAgICAgICAgICBjb25zdCBibG9jayA9IGF3YWl0IHRoaXMuZ2V0VHhCbG9jayhib3hKc29uLnNwZW50VHJhbnNhY3Rpb25JZCk7XG4gICAgICAgICAgc3BlbmRCbG9jayA9IGJsb2NrLmlkO1xuICAgICAgICAgIHNwZW5kSGVpZ2h0ID0gYmxvY2suaGVpZ2h0O1xuICAgICAgICB9XG4gICAgICAgIGV4dHJhY3RlZEJveGVzLnB1c2goe1xuICAgICAgICAgIGJveElkOiBib3guYm94X2lkKCkudG9fc3RyKCksXG4gICAgICAgICAgYm94U2VyaWFsaXplZDogQnVmZmVyLmZyb20oYm94LnNpZ21hX3NlcmlhbGl6ZV9ieXRlcygpKS50b1N0cmluZyhcbiAgICAgICAgICAgICdiYXNlNjQnLFxuICAgICAgICAgICksXG4gICAgICAgICAgYmxvY2s6IGJveEpzb24uYmxvY2tJZCxcbiAgICAgICAgICBoZWlnaHQ6IGJveEpzb24uc2V0dGxlbWVudEhlaWdodCxcbiAgICAgICAgICBXSUQ6IEJ1ZmZlci5mcm9tKFI0U2VyaWFsaXplZCkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICAgIHR4SWQ6IGJveC50eF9pZCgpLnRvX3N0cigpLFxuICAgICAgICAgIHNwZW5kQmxvY2s6IHNwZW5kQmxvY2ssXG4gICAgICAgICAgc3BlbmRIZWlnaHQ6IHNwZW5kSGVpZ2h0LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGV4dHJhY3RlZEJveGVzO1xuICB9O1xuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSBxdWVyeSB0aGF0IHJldHVybnMgdXNlZCBibG9ja3MgYnkgc2VsZWN0aW5nIHRoZSBgYmxvY2tgIGNvbHVtbiBmcm9tIHRoZSBgUGVybWl0RW50aXR5YCByZXBvc2l0b3J5LFxuICAgKiBmaWx0ZXJlZCBieSB0aGUgcHJvdmlkZWQgYGV4dHJhY3RvcklkYFxuICAgKlxuICAgKiBAcmV0dXJucyBBIHF1ZXJ5IGJ1aWxkZXIgc2VsZWN0aW5nIHVzZWQgYmxvY2tzXG4gICAqL1xuICBjcmVhdGVVc2VkQmxvY2tzUXVlcnkgPSAoKTogU2VsZWN0UXVlcnlCdWlsZGVyPFBlcm1pdEVudGl0eT4gPT5cbiAgICB0aGlzLmFjdGlvbnMuY3JlYXRlVXNlZEJsb2Nrc1F1ZXJ5KHRoaXMuZ2V0SWQoKSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBlcm1pdEV4dHJhY3RvcjtcbiJdfQ==
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWl0RXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2V4dHJhY3Rvci9wZXJtaXRFeHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEtBQUssSUFBSSxNQUFNLHNCQUFzQixDQUFDO0FBRTdDLE9BQU8sRUFDTCx3QkFBd0IsR0FFekIsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxQyxPQUFPLEVBQWtCLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBSTVFLE9BQU8sWUFBWSxNQUFNLHlCQUF5QixDQUFDO0FBR25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbEMsTUFBTSxlQUFnQixTQUFRLHdCQUc3QjtJQUNrQixFQUFFLENBQVM7SUFDbkIsT0FBTyxDQUFlO0lBQ2QsY0FBYyxDQUFTO0lBQ3ZCLEdBQUcsQ0FBUztJQUU3QixZQUNFLEVBQVUsRUFDVixVQUFzQixFQUN0QixPQUFlLEVBQ2YsR0FBVyxFQUNYLGlCQUFvQyxFQUNwQyxNQUF1QjtRQUV2QixLQUFLLENBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQzthQUNwRCxZQUFZLEVBQUU7YUFDZCxlQUFlLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksV0FBVyxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLFlBQVksQ0FDN0IsVUFBVSxFQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUNsQyxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBRTNCOzs7O09BSUc7SUFDSCxVQUFVLEdBQUcsQ0FBQyxHQUFjLEVBQVcsRUFBRTtRQUN2QyxJQUNFLEdBQUcsQ0FBQyxtQkFBbUI7WUFDdkIsR0FBRyxDQUFDLG1CQUFtQixDQUFDLEVBQUU7WUFDMUIsR0FBRyxDQUFDLE1BQU07WUFDVixHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQ3JCLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLElBQUksQ0FBQyxHQUFHO1lBQ2xDLEdBQUcsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLGNBQWMsRUFDcEMsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDO0lBRUY7Ozs7Ozs7T0FPRztJQUNILGNBQWMsR0FBRyxDQUFDLEdBQWMsRUFBK0IsRUFBRTtRQUMvRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDOUQsTUFBTSxFQUFFLEdBQUcsT0FBTzthQUNmLGNBQWMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDO1lBQy9DLEVBQUUsYUFBYSxFQUFFLENBQUM7UUFDcEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsT0FBTztZQUNMLFVBQVUsRUFBRSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFO1lBQ3JDLFVBQVUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUMvRCxRQUFRLENBQ1Q7WUFDRCxJQUFJLEVBQUUsR0FBRyxDQUFDLGFBQWE7WUFDdkIsR0FBRyxFQUFFLEdBQUc7U0FDVCxDQUFDO0lBQ0osQ0FBQyxDQUFDO0NBQ0g7QUFFRCxlQUFlLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgKiBhcyB3YXNtIGZyb20gJ2VyZ28tbGliLXdhc20tbm9kZWpzJztcblxuaW1wb3J0IHtcbiAgQWJzdHJhY3RFcmdvQm94RXh0cmFjdG9yLFxuICBJbml0aWFsaXplT3B0aW9ucyxcbn0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1leHRyYWN0b3InO1xuaW1wb3J0IHsgQWJzdHJhY3RMb2dnZXIsIER1bW15TG9nZ2VyIH0gZnJvbSAnQHJvc2VuLWJyaWRnZS9hYnN0cmFjdC1sb2dnZXInO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvZXh0ZW5kZWQtdHlwZW9ybSc7XG5pbXBvcnQgeyBPdXRwdXRCb3ggfSBmcm9tICdAcm9zZW4tYnJpZGdlL3NjYW5uZXItaW50ZXJmYWNlcyc7XG5cbmltcG9ydCBQZXJtaXRBY3Rpb24gZnJvbSAnLi4vYWN0aW9ucy9wZXJtaXRBY3Rpb24nO1xuaW1wb3J0IFBlcm1pdEVudGl0eSBmcm9tICcuLi9lbnRpdGllcy9wZXJtaXRFbnRpdHknO1xuaW1wb3J0IHsgRXh0cmFjdGVkUGVybWl0IH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9leHRyYWN0ZWRQZXJtaXQnO1xuaW1wb3J0IHsgSnNvbkJJIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG5jbGFzcyBQZXJtaXRFeHRyYWN0b3IgZXh0ZW5kcyBBYnN0cmFjdEVyZ29Cb3hFeHRyYWN0b3I8XG4gIEV4dHJhY3RlZFBlcm1pdCxcbiAgUGVybWl0RW50aXR5XG4+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBhY3Rpb25zOiBQZXJtaXRBY3Rpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgcGVybWl0RXJnb1RyZWU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBSV1Q6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpZDogc3RyaW5nLFxuICAgIGRhdGFTb3VyY2U6IERhdGFTb3VyY2UsXG4gICAgYWRkcmVzczogc3RyaW5nLFxuICAgIFJXVDogc3RyaW5nLFxuICAgIGluaXRpYWxpemVPcHRpb25zOiBJbml0aWFsaXplT3B0aW9ucyxcbiAgICBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlcixcbiAgKSB7XG4gICAgc3VwZXIoaW5pdGlhbGl6ZU9wdGlvbnMsIGxvZ2dlcik7XG4gICAgdGhpcy5pZCA9IGlkO1xuICAgIHRoaXMucGVybWl0RXJnb1RyZWUgPSB3YXNtLkFkZHJlc3MuZnJvbV9iYXNlNTgoYWRkcmVzcylcbiAgICAgIC50b19lcmdvX3RyZWUoKVxuICAgICAgLnRvX2Jhc2UxNl9ieXRlcygpO1xuICAgIHRoaXMuUldUID0gUldUO1xuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyID8gbG9nZ2VyIDogbmV3IER1bW15TG9nZ2VyKCk7XG4gICAgdGhpcy5hY3Rpb25zID0gbmV3IFBlcm1pdEFjdGlvbihcbiAgICAgIGRhdGFTb3VyY2UsXG4gICAgICB0aGlzLmxvZ2dlci5jaGlsZCgnUGVybWl0QWN0aW9uJyksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgSWQgZm9yIGN1cnJlbnQgZXh0cmFjdG9yXG4gICAqL1xuICBnZXRJZCA9ICgpID0+IGAke3RoaXMuaWR9YDtcblxuICAvKipcbiAgICogY2hlY2sgcHJvcGVyIGRhdGEgZm9ybWF0IGluIHRoZSBib3hcbiAgICogQHBhcmFtIGJveFxuICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGJveCBoYXMgdGhlIHJlcXVpcmVkIGRhdGEgYW5kIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgaGFzQm94RGF0YSA9IChib3g6IE91dHB1dEJveCk6IGJvb2xlYW4gPT4ge1xuICAgIGlmIChcbiAgICAgIGJveC5hZGRpdGlvbmFsUmVnaXN0ZXJzICYmXG4gICAgICBib3guYWRkaXRpb25hbFJlZ2lzdGVycy5SNCAmJlxuICAgICAgYm94LmFzc2V0cyAmJlxuICAgICAgYm94LmFzc2V0cy5sZW5ndGggPiAwICYmXG4gICAgICBib3guYXNzZXRzWzBdLnRva2VuSWQgPT09IHRoaXMuUldUICYmXG4gICAgICBib3guZXJnb1RyZWUgPT09IHRoaXMucGVybWl0RXJnb1RyZWVcbiAgICApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgcGVybWl0IGRhdGEgZnJvbSBqc29uIGJveGVzXG4gICAqIGFuZCBmaWx0ZXIgdG8gZml0IGluIGEgc3BlY2lmaWVkIGhlaWdodCByYW5nZVxuICAgKiBAcGFyYW0gYm94ZXNcbiAgICogQHBhcmFtIHRvSGVpZ2h0XG4gICAqIEBwYXJhbSBoZWlnaHREaWZmZXJlbmNlXG4gICAqIEByZXR1cm5zIGV4dHJhY3RlZCBwZXJtaXRcbiAgICovXG4gIGV4dHJhY3RCb3hEYXRhID0gKGJveDogT3V0cHV0Qm94KTogRXh0cmFjdGVkUGVybWl0IHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBlcmdvQm94ID0gd2FzbS5FcmdvQm94LmZyb21fanNvbihKc29uQkkuc3RyaW5naWZ5KGJveCkpO1xuICAgIGNvbnN0IHI0ID0gZXJnb0JveFxuICAgICAgLnJlZ2lzdGVyX3ZhbHVlKHdhc20uTm9uTWFuZGF0b3J5UmVnaXN0ZXJJZC5SNClcbiAgICAgID8udG9fYnl0ZV9hcnJheSgpO1xuICAgIGNvbnN0IHdpZCA9IEJ1ZmZlci5mcm9tKHI0ISkudG9TdHJpbmcoJ2hleCcpO1xuICAgIHJldHVybiB7XG4gICAgICBpZGVudGlmaWVyOiBlcmdvQm94LmJveF9pZCgpLnRvX3N0cigpLFxuICAgICAgc2VyaWFsaXplZDogQnVmZmVyLmZyb20oZXJnb0JveC5zaWdtYV9zZXJpYWxpemVfYnl0ZXMoKSkudG9TdHJpbmcoXG4gICAgICAgICdiYXNlNjQnLFxuICAgICAgKSxcbiAgICAgIHR4SWQ6IGJveC50cmFuc2FjdGlvbklkLFxuICAgICAgV0lEOiB3aWQsXG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgUGVybWl0RXh0cmFjdG9yO1xuIl19
@@ -1,12 +1,9 @@
1
- interface ExtractedPermit {
2
- boxId: string;
3
- boxSerialized: string;
1
+ import { AbstractEntityData } from '@rosen-bridge/abstract-extractor';
2
+ interface ExtractedPermit extends AbstractEntityData {
4
3
  WID: string;
5
4
  txId: string;
6
- block?: string;
7
- height?: number;
8
- spendBlock?: string;
9
- spendHeight?: number;
5
+ spendBlock?: string | null;
6
+ spendHeight?: number | null;
10
7
  }
11
8
  export { ExtractedPermit };
12
9
  //# sourceMappingURL=extractedPermit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extractedPermit.d.ts","sourceRoot":"","sources":["../../lib/interfaces/extractedPermit.ts"],"names":[],"mappings":"AAAA,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"extractedPermit.d.ts","sourceRoot":"","sources":["../../lib/interfaces/extractedPermit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAEtE,UAAU,eAAgB,SAAQ,kBAAkB;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdGVkUGVybWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2ludGVyZmFjZXMvZXh0cmFjdGVkUGVybWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbnRlcmZhY2UgRXh0cmFjdGVkUGVybWl0IHtcbiAgYm94SWQ6IHN0cmluZztcbiAgYm94U2VyaWFsaXplZDogc3RyaW5nO1xuICBXSUQ6IHN0cmluZztcbiAgdHhJZDogc3RyaW5nO1xuICBibG9jaz86IHN0cmluZztcbiAgaGVpZ2h0PzogbnVtYmVyO1xuICBzcGVuZEJsb2NrPzogc3RyaW5nO1xuICBzcGVuZEhlaWdodD86IG51bWJlcjtcbn1cblxuZXhwb3J0IHsgRXh0cmFjdGVkUGVybWl0IH07XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdGVkUGVybWl0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL2ludGVyZmFjZXMvZXh0cmFjdGVkUGVybWl0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdEVudGl0eURhdGEgfSBmcm9tICdAcm9zZW4tYnJpZGdlL2Fic3RyYWN0LWV4dHJhY3Rvcic7XG5cbmludGVyZmFjZSBFeHRyYWN0ZWRQZXJtaXQgZXh0ZW5kcyBBYnN0cmFjdEVudGl0eURhdGEge1xuICBXSUQ6IHN0cmluZztcbiAgdHhJZDogc3RyaW5nO1xuICBzcGVuZEJsb2NrPzogc3RyaW5nIHwgbnVsbDtcbiAgc3BlbmRIZWlnaHQ/OiBudW1iZXIgfCBudWxsO1xufVxuXG5leHBvcnQgeyBFeHRyYWN0ZWRQZXJtaXQgfTtcbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAS5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAW1E,eAAO,MAAM,UAAU;;;CAwBtB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/migrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAU5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAY1E,eAAO,MAAM,UAAU;;;CA0BtB,CAAC"}
@@ -7,6 +7,7 @@ import { Migration1737785036299 } from './postgres/1737785036299-migration';
7
7
  import { migration1746354253000 } from './postgres/1746354253000-migration';
8
8
  import { Migration1758958886549 } from './postgres/1758958886549-migration';
9
9
  import { Migration1766843825000 } from './postgres/1766843825000-migration';
10
+ import { Migration1782948062354 } from './postgres/1782948062354-migration';
10
11
  import { migration1688555766601 } from './sqlite/1688555766601-migration';
11
12
  import { migration1689175103163 } from './sqlite/1689175103163-migration';
12
13
  import { migration1699872205117 } from './sqlite/1699872205117-migration';
@@ -17,6 +18,7 @@ import { migration1746354254000 } from './sqlite/1746354254000-migration';
17
18
  import { migration1761774736153 } from './sqlite/1761774736153-migration';
18
19
  import { Migration1762768664031 } from './sqlite/1762768664031-migration';
19
20
  import { Migration1766843824000 } from './sqlite/1766843824000-migration';
21
+ import { Migration1782948174639 } from './sqlite/1782948174639-migration';
20
22
  export const migrations = {
21
23
  sqlite: [
22
24
  migration1688555766601,
@@ -29,6 +31,7 @@ export const migrations = {
29
31
  migration1761774736153,
30
32
  Migration1762768664031,
31
33
  Migration1766843824000,
34
+ Migration1782948174639,
32
35
  ],
33
36
  postgres: [
34
37
  migration1688554842087,
@@ -40,6 +43,7 @@ export const migrations = {
40
43
  migration1746354253000,
41
44
  Migration1758958886549,
42
45
  Migration1766843825000,
46
+ Migration1782948062354,
43
47
  ],
44
48
  };
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvbWlncmF0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxRSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsTUFBTSxFQUFFO1FBQ04sc0JBQXNCO1FBQ3RCLHNCQUFzQjtRQUN0QixzQkFBc0I7UUFDdEIsc0JBQXNCO1FBQ3RCLHNCQUFzQjtRQUN0QixzQkFBc0I7UUFDdEIsc0JBQXNCO1FBQ3RCLHNCQUFzQjtRQUN0QixzQkFBc0I7UUFDdEIsc0JBQXNCO0tBQ3ZCO0lBQ0QsUUFBUSxFQUFFO1FBQ1Isc0JBQXNCO1FBQ3RCLHNCQUFzQjtRQUN0QixzQkFBc0I7UUFDdEIsc0JBQXNCO1FBQ3RCLHNCQUFzQjtRQUN0QixzQkFBc0I7UUFDdEIsc0JBQXNCO1FBQ3RCLHNCQUFzQjtRQUN0QixzQkFBc0I7S0FDdkI7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWlncmF0aW9uMTY4ODU1NDg0MjA4NyB9IGZyb20gJy4vcG9zdGdyZXMvMTY4ODU1NDg0MjA4Ny1taWdyYXRpb24nO1xuaW1wb3J0IHsgbWlncmF0aW9uMTY4OTE3NTk3NDI1NyB9IGZyb20gJy4vcG9zdGdyZXMvMTY4OTE3NTk3NDI1Ny1taWdyYXRpb24nO1xuaW1wb3J0IHsgbWlncmF0aW9uMTY5OTg3NDQ0NzkyOCB9IGZyb20gJy4vcG9zdGdyZXMvMTY5OTg3NDQ0NzkyOC1taWdyYXRpb24nO1xuaW1wb3J0IHsgbWlncmF0aW9uMTcwNjYxMDc3MzMxNSB9IGZyb20gJy4vcG9zdGdyZXMvMTcwNjYxMDc3MzMxNS1taWdyYXRpb24nO1xuaW1wb3J0IHsgTWlncmF0aW9uMTcwOTM4ODQ4MjI3NSB9IGZyb20gJy4vcG9zdGdyZXMvMTcwOTM4ODQ4MjI3NS1taWdyYXRpb24nO1xuaW1wb3J0IHsgTWlncmF0aW9uMTczNzc4NTAzNjI5OSB9IGZyb20gJy4vcG9zdGdyZXMvMTczNzc4NTAzNjI5OS1taWdyYXRpb24nO1xuaW1wb3J0IHsgbWlncmF0aW9uMTc0NjM1NDI1MzAwMCB9IGZyb20gJy4vcG9zdGdyZXMvMTc0NjM1NDI1MzAwMC1taWdyYXRpb24nO1xuaW1wb3J0IHsgTWlncmF0aW9uMTc1ODk1ODg4NjU0OSB9IGZyb20gJy4vcG9zdGdyZXMvMTc1ODk1ODg4NjU0OS1taWdyYXRpb24nO1xuaW1wb3J0IHsgTWlncmF0aW9uMTc2Njg0MzgyNTAwMCB9IGZyb20gJy4vcG9zdGdyZXMvMTc2Njg0MzgyNTAwMC1taWdyYXRpb24nO1xuaW1wb3J0IHsgbWlncmF0aW9uMTY4ODU1NTc2NjYwMSB9IGZyb20gJy4vc3FsaXRlLzE2ODg1NTU3NjY2MDEtbWlncmF0aW9uJztcbmltcG9ydCB7IG1pZ3JhdGlvbjE2ODkxNzUxMDMxNjMgfSBmcm9tICcuL3NxbGl0ZS8xNjg5MTc1MTAzMTYzLW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBtaWdyYXRpb24xNjk5ODcyMjA1MTE3IH0gZnJvbSAnLi9zcWxpdGUvMTY5OTg3MjIwNTExNy1taWdyYXRpb24nO1xuaW1wb3J0IHsgbWlncmF0aW9uMTcwNjYxMDc3MzE3NiB9IGZyb20gJy4vc3FsaXRlLzE3MDY2MTA3NzMxNzYtbWlncmF0aW9uJztcbmltcG9ydCB7IE1pZ3JhdGlvbjE3MDkzODgxMzQ5NzUgfSBmcm9tICcuL3NxbGl0ZS8xNzA5Mzg4MTM0OTc1LW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBNaWdyYXRpb24xNzM3NTQ3NzQzMTc3IH0gZnJvbSAnLi9zcWxpdGUvMTczNzU0Nzc0MzE3Ny1taWdyYXRpb24nO1xuaW1wb3J0IHsgbWlncmF0aW9uMTc0NjM1NDI1NDAwMCB9IGZyb20gJy4vc3FsaXRlLzE3NDYzNTQyNTQwMDAtbWlncmF0aW9uJztcbmltcG9ydCB7IG1pZ3JhdGlvbjE3NjE3NzQ3MzYxNTMgfSBmcm9tICcuL3NxbGl0ZS8xNzYxNzc0NzM2MTUzLW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBNaWdyYXRpb24xNzYyNzY4NjY0MDMxIH0gZnJvbSAnLi9zcWxpdGUvMTc2Mjc2ODY2NDAzMS1taWdyYXRpb24nO1xuaW1wb3J0IHsgTWlncmF0aW9uMTc2Njg0MzgyNDAwMCB9IGZyb20gJy4vc3FsaXRlLzE3NjY4NDM4MjQwMDAtbWlncmF0aW9uJztcblxuZXhwb3J0IGNvbnN0IG1pZ3JhdGlvbnMgPSB7XG4gIHNxbGl0ZTogW1xuICAgIG1pZ3JhdGlvbjE2ODg1NTU3NjY2MDEsXG4gICAgbWlncmF0aW9uMTY4OTE3NTEwMzE2MyxcbiAgICBtaWdyYXRpb24xNjk5ODcyMjA1MTE3LFxuICAgIG1pZ3JhdGlvbjE3MDY2MTA3NzMxNzYsXG4gICAgTWlncmF0aW9uMTcwOTM4ODEzNDk3NSxcbiAgICBNaWdyYXRpb24xNzM3NTQ3NzQzMTc3LFxuICAgIG1pZ3JhdGlvbjE3NDYzNTQyNTQwMDAsXG4gICAgbWlncmF0aW9uMTc2MTc3NDczNjE1MyxcbiAgICBNaWdyYXRpb24xNzYyNzY4NjY0MDMxLFxuICAgIE1pZ3JhdGlvbjE3NjY4NDM4MjQwMDAsXG4gIF0sXG4gIHBvc3RncmVzOiBbXG4gICAgbWlncmF0aW9uMTY4ODU1NDg0MjA4NyxcbiAgICBtaWdyYXRpb24xNjg5MTc1OTc0MjU3LFxuICAgIG1pZ3JhdGlvbjE2OTk4NzQ0NDc5MjgsXG4gICAgbWlncmF0aW9uMTcwNjYxMDc3MzMxNSxcbiAgICBNaWdyYXRpb24xNzA5Mzg4NDgyMjc1LFxuICAgIE1pZ3JhdGlvbjE3Mzc3ODUwMzYyOTksXG4gICAgbWlncmF0aW9uMTc0NjM1NDI1MzAwMCxcbiAgICBNaWdyYXRpb24xNzU4OTU4ODg2NTQ5LFxuICAgIE1pZ3JhdGlvbjE3NjY4NDM4MjUwMDAsXG4gIF0sXG59O1xuIl19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvbWlncmF0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUUxRSxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsTUFBTSxFQUFFO1FBQ04sc0JBQXNCO1FBQ3RCLHNCQUFzQjtRQUN0QixzQkFBc0I7UUFDdEIsc0JBQXNCO1FBQ3RCLHNCQUFzQjtRQUN0QixzQkFBc0I7UUFDdEIsc0JBQXNCO1FBQ3RCLHNCQUFzQjtRQUN0QixzQkFBc0I7UUFDdEIsc0JBQXNCO1FBQ3RCLHNCQUFzQjtLQUN2QjtJQUNELFFBQVEsRUFBRTtRQUNSLHNCQUFzQjtRQUN0QixzQkFBc0I7UUFDdEIsc0JBQXNCO1FBQ3RCLHNCQUFzQjtRQUN0QixzQkFBc0I7UUFDdEIsc0JBQXNCO1FBQ3RCLHNCQUFzQjtRQUN0QixzQkFBc0I7UUFDdEIsc0JBQXNCO1FBQ3RCLHNCQUFzQjtLQUN2QjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtaWdyYXRpb24xNjg4NTU0ODQyMDg3IH0gZnJvbSAnLi9wb3N0Z3Jlcy8xNjg4NTU0ODQyMDg3LW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBtaWdyYXRpb24xNjg5MTc1OTc0MjU3IH0gZnJvbSAnLi9wb3N0Z3Jlcy8xNjg5MTc1OTc0MjU3LW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBtaWdyYXRpb24xNjk5ODc0NDQ3OTI4IH0gZnJvbSAnLi9wb3N0Z3Jlcy8xNjk5ODc0NDQ3OTI4LW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBtaWdyYXRpb24xNzA2NjEwNzczMzE1IH0gZnJvbSAnLi9wb3N0Z3Jlcy8xNzA2NjEwNzczMzE1LW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBNaWdyYXRpb24xNzA5Mzg4NDgyMjc1IH0gZnJvbSAnLi9wb3N0Z3Jlcy8xNzA5Mzg4NDgyMjc1LW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBNaWdyYXRpb24xNzM3Nzg1MDM2Mjk5IH0gZnJvbSAnLi9wb3N0Z3Jlcy8xNzM3Nzg1MDM2Mjk5LW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBtaWdyYXRpb24xNzQ2MzU0MjUzMDAwIH0gZnJvbSAnLi9wb3N0Z3Jlcy8xNzQ2MzU0MjUzMDAwLW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBNaWdyYXRpb24xNzU4OTU4ODg2NTQ5IH0gZnJvbSAnLi9wb3N0Z3Jlcy8xNzU4OTU4ODg2NTQ5LW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBNaWdyYXRpb24xNzY2ODQzODI1MDAwIH0gZnJvbSAnLi9wb3N0Z3Jlcy8xNzY2ODQzODI1MDAwLW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBNaWdyYXRpb24xNzgyOTQ4MDYyMzU0IH0gZnJvbSAnLi9wb3N0Z3Jlcy8xNzgyOTQ4MDYyMzU0LW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBtaWdyYXRpb24xNjg4NTU1NzY2NjAxIH0gZnJvbSAnLi9zcWxpdGUvMTY4ODU1NTc2NjYwMS1taWdyYXRpb24nO1xuaW1wb3J0IHsgbWlncmF0aW9uMTY4OTE3NTEwMzE2MyB9IGZyb20gJy4vc3FsaXRlLzE2ODkxNzUxMDMxNjMtbWlncmF0aW9uJztcbmltcG9ydCB7IG1pZ3JhdGlvbjE2OTk4NzIyMDUxMTcgfSBmcm9tICcuL3NxbGl0ZS8xNjk5ODcyMjA1MTE3LW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBtaWdyYXRpb24xNzA2NjEwNzczMTc2IH0gZnJvbSAnLi9zcWxpdGUvMTcwNjYxMDc3MzE3Ni1taWdyYXRpb24nO1xuaW1wb3J0IHsgTWlncmF0aW9uMTcwOTM4ODEzNDk3NSB9IGZyb20gJy4vc3FsaXRlLzE3MDkzODgxMzQ5NzUtbWlncmF0aW9uJztcbmltcG9ydCB7IE1pZ3JhdGlvbjE3Mzc1NDc3NDMxNzcgfSBmcm9tICcuL3NxbGl0ZS8xNzM3NTQ3NzQzMTc3LW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBtaWdyYXRpb24xNzQ2MzU0MjU0MDAwIH0gZnJvbSAnLi9zcWxpdGUvMTc0NjM1NDI1NDAwMC1taWdyYXRpb24nO1xuaW1wb3J0IHsgbWlncmF0aW9uMTc2MTc3NDczNjE1MyB9IGZyb20gJy4vc3FsaXRlLzE3NjE3NzQ3MzYxNTMtbWlncmF0aW9uJztcbmltcG9ydCB7IE1pZ3JhdGlvbjE3NjI3Njg2NjQwMzEgfSBmcm9tICcuL3NxbGl0ZS8xNzYyNzY4NjY0MDMxLW1pZ3JhdGlvbic7XG5pbXBvcnQgeyBNaWdyYXRpb24xNzY2ODQzODI0MDAwIH0gZnJvbSAnLi9zcWxpdGUvMTc2Njg0MzgyNDAwMC1taWdyYXRpb24nO1xuaW1wb3J0IHsgTWlncmF0aW9uMTc4Mjk0ODE3NDYzOSB9IGZyb20gJy4vc3FsaXRlLzE3ODI5NDgxNzQ2MzktbWlncmF0aW9uJztcblxuZXhwb3J0IGNvbnN0IG1pZ3JhdGlvbnMgPSB7XG4gIHNxbGl0ZTogW1xuICAgIG1pZ3JhdGlvbjE2ODg1NTU3NjY2MDEsXG4gICAgbWlncmF0aW9uMTY4OTE3NTEwMzE2MyxcbiAgICBtaWdyYXRpb24xNjk5ODcyMjA1MTE3LFxuICAgIG1pZ3JhdGlvbjE3MDY2MTA3NzMxNzYsXG4gICAgTWlncmF0aW9uMTcwOTM4ODEzNDk3NSxcbiAgICBNaWdyYXRpb24xNzM3NTQ3NzQzMTc3LFxuICAgIG1pZ3JhdGlvbjE3NDYzNTQyNTQwMDAsXG4gICAgbWlncmF0aW9uMTc2MTc3NDczNjE1MyxcbiAgICBNaWdyYXRpb24xNzYyNzY4NjY0MDMxLFxuICAgIE1pZ3JhdGlvbjE3NjY4NDM4MjQwMDAsXG4gICAgTWlncmF0aW9uMTc4Mjk0ODE3NDYzOSxcbiAgXSxcbiAgcG9zdGdyZXM6IFtcbiAgICBtaWdyYXRpb24xNjg4NTU0ODQyMDg3LFxuICAgIG1pZ3JhdGlvbjE2ODkxNzU5NzQyNTcsXG4gICAgbWlncmF0aW9uMTY5OTg3NDQ0NzkyOCxcbiAgICBtaWdyYXRpb24xNzA2NjEwNzczMzE1LFxuICAgIE1pZ3JhdGlvbjE3MDkzODg0ODIyNzUsXG4gICAgTWlncmF0aW9uMTczNzc4NTAzNjI5OSxcbiAgICBtaWdyYXRpb24xNzQ2MzU0MjUzMDAwLFxuICAgIE1pZ3JhdGlvbjE3NTg5NTg4ODY1NDksXG4gICAgTWlncmF0aW9uMTc2Njg0MzgyNTAwMCxcbiAgICBNaWdyYXRpb24xNzgyOTQ4MDYyMzU0LFxuICBdLFxufTtcbiJdfQ==
@@ -0,0 +1,7 @@
1
+ import { MigrationInterface, QueryRunner } from '@rosen-bridge/extended-typeorm';
2
+ export declare class Migration1782948062354 implements MigrationInterface {
3
+ name: string;
4
+ up(queryRunner: QueryRunner): Promise<void>;
5
+ down(queryRunner: QueryRunner): Promise<void>;
6
+ }
7
+ //# sourceMappingURL=1782948062354-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"1782948062354-migration.d.ts","sourceRoot":"","sources":["../../../lib/migrations/postgres/1782948062354-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;IAoB3C,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CA2B3D"}