@rosen-bridge/rosen-extractor 6.3.0 → 6.3.1-4dda6b53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/getRosenData/abstract/AbstractRosenDataExtractor.d.ts +14 -20
- package/dist/lib/getRosenData/abstract/types.d.ts +13 -13
- package/dist/lib/getRosenData/bitcoin/BitcoinEsploraRosenExtractor.d.ts +15 -24
- package/dist/lib/getRosenData/bitcoin/BitcoinRosenExtractor.d.ts +15 -22
- package/dist/lib/getRosenData/bitcoin/BitcoinRpcRosenExtractor.d.ts +15 -22
- package/dist/lib/getRosenData/bitcoin/types.d.ts +66 -66
- package/dist/lib/getRosenData/bitcoin/utils.d.ts +1 -1
- package/dist/lib/getRosenData/cardano/CardanoBlockFrostRosenExtractor.d.ts +13 -16
- package/dist/lib/getRosenData/cardano/CardanoGraphQLRosenExtractor.d.ts +13 -16
- package/dist/lib/getRosenData/cardano/CardanoKoiosRosenExtractor.d.ts +15 -17
- package/dist/lib/getRosenData/cardano/CardanoKoiosRosenExtractor.d.ts.map +1 -1
- package/dist/lib/getRosenData/cardano/CardanoKoiosRosenExtractor.js +25 -19
- package/dist/lib/getRosenData/cardano/CardanoOgmiosRosenExtractor.d.ts +13 -16
- package/dist/lib/getRosenData/cardano/CardanoRosenExtractor.d.ts +13 -16
- package/dist/lib/getRosenData/cardano/types.d.ts +99 -115
- package/dist/lib/getRosenData/cardano/types.d.ts.map +1 -1
- package/dist/lib/getRosenData/cardano/types.js +1 -1
- package/dist/lib/getRosenData/cardano/utils.d.ts +15 -10
- package/dist/lib/getRosenData/cardano/utils.d.ts.map +1 -1
- package/dist/lib/getRosenData/cardano/utils.js +93 -1
- package/dist/lib/getRosenData/doge/DogeEsploraRosenExtractor.d.ts +22 -0
- package/dist/lib/getRosenData/doge/DogeEsploraRosenExtractor.d.ts.map +1 -0
- package/dist/lib/getRosenData/doge/DogeEsploraRosenExtractor.js +104 -0
- package/dist/lib/getRosenData/doge/DogeRosenExtractor.d.ts +22 -0
- package/dist/lib/getRosenData/doge/DogeRosenExtractor.d.ts.map +1 -0
- package/dist/lib/getRosenData/doge/DogeRosenExtractor.js +112 -0
- package/dist/lib/getRosenData/doge/DogeRpcRosenExtractor.d.ts +22 -0
- package/dist/lib/getRosenData/doge/DogeRpcRosenExtractor.d.ts.map +1 -0
- package/dist/lib/getRosenData/doge/DogeRpcRosenExtractor.js +105 -0
- package/dist/lib/getRosenData/doge/types.d.ts +89 -0
- package/dist/lib/getRosenData/doge/types.d.ts.map +1 -0
- package/dist/lib/getRosenData/doge/types.js +2 -0
- package/dist/lib/getRosenData/doge/utils.d.ts +13 -0
- package/dist/lib/getRosenData/doge/utils.d.ts.map +1 -0
- package/dist/lib/getRosenData/doge/utils.js +58 -0
- package/dist/lib/getRosenData/ergo/ErgoNodeRosenExtractor.d.ts +15 -22
- package/dist/lib/getRosenData/ergo/ErgoRosenExtractor.d.ts +9 -13
- package/dist/lib/getRosenData/ergo/types.d.ts +24 -24
- package/dist/lib/getRosenData/evm/EvmEthersRosenExtractor.d.ts +9 -15
- package/dist/lib/getRosenData/evm/EvmRosenExtractor.d.ts +9 -15
- package/dist/lib/getRosenData/evm/EvmRpcRosenExtractor.d.ts +19 -25
- package/dist/lib/getRosenData/evm/utils.d.ts +5 -5
- package/dist/lib/index.d.ts +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -2
- package/dist/lib/getRosenData/Utils.d.ts +0 -59
- package/dist/lib/getRosenData/Utils.d.ts.map +0 -1
- package/dist/lib/getRosenData/Utils.js +0 -96
|
@@ -2,20 +2,17 @@ import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
|
|
|
2
2
|
import { RosenData, TokenTransformation } from '../abstract/types';
|
|
3
3
|
import { CardanoBoxCandidate } from './types';
|
|
4
4
|
export declare class CardanoRosenExtractor extends AbstractRosenDataExtractor<string> {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
box: CardanoBoxCandidate,
|
|
18
|
-
toChain: string
|
|
19
|
-
) => TokenTransformation | undefined;
|
|
5
|
+
readonly chain = "cardano";
|
|
6
|
+
/**
|
|
7
|
+
* extracts RosenData from given lock transaction in CardanoTx format
|
|
8
|
+
* @param serializedTransaction stringified transaction in CardanoTx format
|
|
9
|
+
*/
|
|
10
|
+
extractRawData: (serializedTransaction: string) => RosenData | undefined;
|
|
11
|
+
/**
|
|
12
|
+
* extracts and builds token transformation from CardanoBoxCandidate and tokenMap
|
|
13
|
+
* @param box transaction output in CardanoBoxCandidate format
|
|
14
|
+
* @param toChain event target chain
|
|
15
|
+
*/
|
|
16
|
+
getAssetTransformation: (box: CardanoBoxCandidate, toChain: string) => TokenTransformation | undefined;
|
|
20
17
|
}
|
|
21
|
-
//# sourceMappingURL=CardanoRosenExtractor.d.ts.map
|
|
18
|
+
//# sourceMappingURL=CardanoRosenExtractor.d.ts.map
|
|
@@ -1,146 +1,130 @@
|
|
|
1
1
|
import { components } from '@blockfrost/openapi';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import { TransactionJSON } from '@emurgo/cardano-serialization-lib-nodejs';
|
|
3
|
+
interface KoiosCborTx {
|
|
4
|
+
tx_hash: string;
|
|
5
|
+
block_hash: string;
|
|
6
|
+
block_height: number;
|
|
7
|
+
epoch_no: number;
|
|
8
|
+
absolute_slot: number;
|
|
9
|
+
tx_timestamp: number;
|
|
10
|
+
cbor: string;
|
|
5
11
|
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
12
|
+
type KoiosTransaction = KoiosCborTx & TransactionJSON;
|
|
13
|
+
export type Metadatum = Int | CString | Bytes | List | Map;
|
|
14
|
+
export interface Int {
|
|
15
|
+
int: bigint;
|
|
10
16
|
}
|
|
11
|
-
interface
|
|
12
|
-
|
|
13
|
-
stake_addr?: string | null;
|
|
14
|
-
tx_hash: string;
|
|
15
|
-
tx_index: number;
|
|
16
|
-
value: string;
|
|
17
|
-
asset_list: Array<Asset>;
|
|
17
|
+
export interface CString {
|
|
18
|
+
string: string;
|
|
18
19
|
}
|
|
19
|
-
interface
|
|
20
|
-
|
|
20
|
+
export interface Bytes {
|
|
21
|
+
bytes: string;
|
|
21
22
|
}
|
|
22
|
-
interface
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
export interface List {
|
|
24
|
+
list: Metadatum[];
|
|
25
|
+
}
|
|
26
|
+
export interface Map {
|
|
27
|
+
map: MetadatumMap[];
|
|
28
|
+
}
|
|
29
|
+
export interface MetadatumMap {
|
|
30
|
+
k: Metadatum;
|
|
31
|
+
v: Metadatum;
|
|
28
32
|
}
|
|
29
33
|
interface CardanoRosenData {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
34
|
+
toChain: string;
|
|
35
|
+
toAddress: string;
|
|
36
|
+
bridgeFee: string;
|
|
37
|
+
networkFee: string;
|
|
38
|
+
fromAddress: string;
|
|
35
39
|
}
|
|
36
40
|
interface CardanoMetadataRosenData {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
to: string;
|
|
42
|
+
networkFee: string;
|
|
43
|
+
bridgeFee: string;
|
|
44
|
+
toAddress: string;
|
|
45
|
+
fromAddress: string[];
|
|
42
46
|
}
|
|
43
47
|
type ListObject = Array<MetadataObject>;
|
|
44
48
|
type NativeValue = string | undefined;
|
|
45
49
|
interface JsonObject {
|
|
46
|
-
|
|
50
|
+
[key: string]: MetadataObject;
|
|
47
51
|
}
|
|
48
52
|
type MetadataObject = JsonObject | ListObject | NativeValue;
|
|
49
53
|
interface CardanoAsset {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
54
|
+
policy_id: string;
|
|
55
|
+
asset_name: string;
|
|
56
|
+
quantity: string;
|
|
53
57
|
}
|
|
54
58
|
interface CardanoUtxo {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
txId: string;
|
|
60
|
+
index: number;
|
|
61
|
+
value: bigint;
|
|
62
|
+
assets: Array<CardanoAsset>;
|
|
59
63
|
}
|
|
60
64
|
interface CardanoBoxCandidate {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
65
|
+
address: string;
|
|
66
|
+
value: bigint;
|
|
67
|
+
assets: Array<CardanoAsset>;
|
|
64
68
|
}
|
|
65
69
|
type CardanoMetadata = Record<string, string | Record<string, any>>;
|
|
66
70
|
interface CardanoTx {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
id: string;
|
|
72
|
+
inputs: CardanoUtxo[];
|
|
73
|
+
outputs: CardanoBoxCandidate[];
|
|
74
|
+
fee: bigint;
|
|
75
|
+
metadata?: CardanoMetadata;
|
|
72
76
|
}
|
|
73
77
|
interface BlockFrostTransaction {
|
|
74
|
-
|
|
75
|
-
|
|
78
|
+
utxos: components['schemas']['tx_content_utxo'];
|
|
79
|
+
metadata: components['schemas']['tx_content_metadata'];
|
|
76
80
|
}
|
|
77
|
-
type BlockFrostOutputBox =
|
|
78
|
-
components['schemas']['tx_content_utxo']['outputs'][0];
|
|
81
|
+
type BlockFrostOutputBox = components['schemas']['tx_content_utxo']['outputs'][0];
|
|
79
82
|
type GraphQLBlockTxsQuery = {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
83
|
+
__typename?: 'Query';
|
|
84
|
+
blocks: Array<{
|
|
85
|
+
__typename?: 'Block';
|
|
86
|
+
transactions: Array<{
|
|
87
|
+
__typename?: 'Transaction';
|
|
88
|
+
hash: any;
|
|
89
|
+
fee: any;
|
|
90
|
+
inputs: Array<{
|
|
91
|
+
__typename?: 'TransactionInput';
|
|
92
|
+
sourceTxIndex: number;
|
|
93
|
+
sourceTxHash: any;
|
|
94
|
+
value: any;
|
|
95
|
+
tokens: Array<{
|
|
96
|
+
__typename?: 'Token';
|
|
97
|
+
quantity: string;
|
|
98
|
+
asset: {
|
|
99
|
+
__typename?: 'Asset';
|
|
100
|
+
assetName?: any | null;
|
|
101
|
+
policyId: any;
|
|
102
|
+
};
|
|
103
|
+
} | null>;
|
|
104
|
+
}>;
|
|
105
|
+
outputs: Array<{
|
|
106
|
+
__typename?: 'TransactionOutput';
|
|
107
|
+
address: string;
|
|
108
|
+
value: any;
|
|
109
|
+
tokens: Array<{
|
|
110
|
+
__typename?: 'Token';
|
|
111
|
+
quantity: string;
|
|
112
|
+
asset: {
|
|
113
|
+
__typename?: 'Asset';
|
|
114
|
+
assetName?: any | null;
|
|
115
|
+
policyId: any;
|
|
116
|
+
};
|
|
117
|
+
}>;
|
|
118
|
+
} | null>;
|
|
119
|
+
metadata?: Array<{
|
|
120
|
+
__typename?: 'TransactionMetadata';
|
|
121
|
+
key: string;
|
|
122
|
+
value: any;
|
|
123
|
+
} | null> | null;
|
|
100
124
|
} | null>;
|
|
101
|
-
}>;
|
|
102
|
-
outputs: Array<{
|
|
103
|
-
__typename?: 'TransactionOutput';
|
|
104
|
-
address: string;
|
|
105
|
-
value: any;
|
|
106
|
-
tokens: Array<{
|
|
107
|
-
__typename?: 'Token';
|
|
108
|
-
quantity: string;
|
|
109
|
-
asset: {
|
|
110
|
-
__typename?: 'Asset';
|
|
111
|
-
assetName?: any | null;
|
|
112
|
-
policyId: any;
|
|
113
|
-
};
|
|
114
|
-
}>;
|
|
115
|
-
} | null>;
|
|
116
|
-
metadata?: Array<{
|
|
117
|
-
__typename?: 'TransactionMetadata';
|
|
118
|
-
key: string;
|
|
119
|
-
value: any;
|
|
120
|
-
} | null> | null;
|
|
121
125
|
} | null>;
|
|
122
|
-
} | null>;
|
|
123
126
|
};
|
|
124
|
-
type GraphQLTransaction = NonNullable<
|
|
125
|
-
NonNullable<GraphQLBlockTxsQuery['blocks'][0]>['transactions'][0]
|
|
126
|
-
>;
|
|
127
|
+
type GraphQLTransaction = NonNullable<NonNullable<GraphQLBlockTxsQuery['blocks'][0]>['transactions'][0]>;
|
|
127
128
|
type GraphQLTxOutput = NonNullable<GraphQLTransaction['outputs'][0]>;
|
|
128
|
-
export {
|
|
129
|
-
|
|
130
|
-
KoiosTransaction,
|
|
131
|
-
CardanoRosenData,
|
|
132
|
-
CardanoMetadataRosenData,
|
|
133
|
-
Metadata,
|
|
134
|
-
MetadataObject,
|
|
135
|
-
JsonObject,
|
|
136
|
-
ListObject,
|
|
137
|
-
NativeValue,
|
|
138
|
-
CardanoMetadata,
|
|
139
|
-
CardanoTx,
|
|
140
|
-
CardanoBoxCandidate,
|
|
141
|
-
BlockFrostTransaction,
|
|
142
|
-
BlockFrostOutputBox,
|
|
143
|
-
GraphQLTransaction,
|
|
144
|
-
GraphQLTxOutput,
|
|
145
|
-
};
|
|
146
|
-
//# sourceMappingURL=types.d.ts.map
|
|
129
|
+
export { KoiosTransaction, CardanoRosenData, CardanoMetadataRosenData, MetadataObject, JsonObject, ListObject, NativeValue, CardanoMetadata, CardanoTx, CardanoBoxCandidate, BlockFrostTransaction, BlockFrostOutputBox, GraphQLTransaction, GraphQLTxOutput, };
|
|
130
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/cardano/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/cardano/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2NhcmRhbm8vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBvbmVudHMgfSBmcm9tICdAYmxvY2tmcm9zdC9vcGVuYXBpJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uSlNPTiB9IGZyb20gJ0BlbXVyZ28vY2FyZGFuby1zZXJpYWxpemF0aW9uLWxpYi1ub2RlanMnO1xuXG5pbnRlcmZhY2UgS29pb3NDYm9yVHgge1xuICB0eF9oYXNoOiBzdHJpbmc7XG4gIGJsb2NrX2hhc2g6IHN0cmluZztcbiAgYmxvY2tfaGVpZ2h0OiBudW1iZXI7XG4gIGVwb2NoX25vOiBudW1iZXI7XG4gIGFic29sdXRlX3Nsb3Q6IG51bWJlcjtcbiAgdHhfdGltZXN0YW1wOiBudW1iZXI7XG4gIGNib3I6IHN0cmluZztcbn1cblxudHlwZSBLb2lvc1RyYW5zYWN0aW9uID0gS29pb3NDYm9yVHggJiBUcmFuc2FjdGlvbkpTT047XG5cbmV4cG9ydCB0eXBlIE1ldGFkYXR1bSA9IEludCB8IENTdHJpbmcgfCBCeXRlcyB8IExpc3QgfCBNYXA7XG5leHBvcnQgaW50ZXJmYWNlIEludCB7XG4gIGludDogYmlnaW50O1xufVxuZXhwb3J0IGludGVyZmFjZSBDU3RyaW5nIHtcbiAgc3RyaW5nOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEJ5dGVzIHtcbiAgYnl0ZXM6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdCB7XG4gIGxpc3Q6IE1ldGFkYXR1bVtdO1xufVxuZXhwb3J0IGludGVyZmFjZSBNYXAge1xuICBtYXA6IE1ldGFkYXR1bU1hcFtdO1xufVxuZXhwb3J0IGludGVyZmFjZSBNZXRhZGF0dW1NYXAge1xuICBrOiBNZXRhZGF0dW07XG4gIHY6IE1ldGFkYXR1bTtcbn1cblxuaW50ZXJmYWNlIENhcmRhbm9Sb3NlbkRhdGEge1xuICB0b0NoYWluOiBzdHJpbmc7XG4gIHRvQWRkcmVzczogc3RyaW5nO1xuICBicmlkZ2VGZWU6IHN0cmluZztcbiAgbmV0d29ya0ZlZTogc3RyaW5nO1xuICBmcm9tQWRkcmVzczogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ2FyZGFub01ldGFkYXRhUm9zZW5EYXRhIHtcbiAgdG86IHN0cmluZztcbiAgbmV0d29ya0ZlZTogc3RyaW5nO1xuICBicmlkZ2VGZWU6IHN0cmluZztcbiAgdG9BZGRyZXNzOiBzdHJpbmc7XG4gIGZyb21BZGRyZXNzOiBzdHJpbmdbXTtcbn1cblxudHlwZSBMaXN0T2JqZWN0ID0gQXJyYXk8TWV0YWRhdGFPYmplY3Q+O1xudHlwZSBOYXRpdmVWYWx1ZSA9IHN0cmluZyB8IHVuZGVmaW5lZDtcbmludGVyZmFjZSBKc29uT2JqZWN0IHtcbiAgW2tleTogc3RyaW5nXTogTWV0YWRhdGFPYmplY3Q7XG59XG50eXBlIE1ldGFkYXRhT2JqZWN0ID0gSnNvbk9iamVjdCB8IExpc3RPYmplY3QgfCBOYXRpdmVWYWx1ZTtcblxuaW50ZXJmYWNlIENhcmRhbm9Bc3NldCB7XG4gIHBvbGljeV9pZDogc3RyaW5nO1xuICBhc3NldF9uYW1lOiBzdHJpbmc7XG4gIHF1YW50aXR5OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDYXJkYW5vVXR4byB7XG4gIHR4SWQ6IHN0cmluZztcbiAgaW5kZXg6IG51bWJlcjtcbiAgdmFsdWU6IGJpZ2ludDtcbiAgYXNzZXRzOiBBcnJheTxDYXJkYW5vQXNzZXQ+O1xufVxuXG5pbnRlcmZhY2UgQ2FyZGFub0JveENhbmRpZGF0ZSB7XG4gIGFkZHJlc3M6IHN0cmluZztcbiAgdmFsdWU6IGJpZ2ludDtcbiAgYXNzZXRzOiBBcnJheTxDYXJkYW5vQXNzZXQ+O1xufVxuXG50eXBlIENhcmRhbm9NZXRhZGF0YSA9IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIGFueT4+O1xuXG5pbnRlcmZhY2UgQ2FyZGFub1R4IHtcbiAgaWQ6IHN0cmluZztcbiAgaW5wdXRzOiBDYXJkYW5vVXR4b1tdO1xuICBvdXRwdXRzOiBDYXJkYW5vQm94Q2FuZGlkYXRlW107XG4gIGZlZTogYmlnaW50O1xuICBtZXRhZGF0YT86IENhcmRhbm9NZXRhZGF0YTtcbn1cblxuaW50ZXJmYWNlIEJsb2NrRnJvc3RUcmFuc2FjdGlvbiB7XG4gIHV0eG9zOiBjb21wb25lbnRzWydzY2hlbWFzJ11bJ3R4X2NvbnRlbnRfdXR4byddO1xuICBtZXRhZGF0YTogY29tcG9uZW50c1snc2NoZW1hcyddWyd0eF9jb250ZW50X21ldGFkYXRhJ107XG59XG5cbnR5cGUgQmxvY2tGcm9zdE91dHB1dEJveCA9XG4gIGNvbXBvbmVudHNbJ3NjaGVtYXMnXVsndHhfY29udGVudF91dHhvJ11bJ291dHB1dHMnXVswXTtcblxudHlwZSBHcmFwaFFMQmxvY2tUeHNRdWVyeSA9IHtcbiAgX190eXBlbmFtZT86ICdRdWVyeSc7XG4gIGJsb2NrczogQXJyYXk8e1xuICAgIF9fdHlwZW5hbWU/OiAnQmxvY2snO1xuICAgIHRyYW5zYWN0aW9uczogQXJyYXk8e1xuICAgICAgX190eXBlbmFtZT86ICdUcmFuc2FjdGlvbic7XG4gICAgICBoYXNoOiBhbnk7XG4gICAgICBmZWU6IGFueTtcbiAgICAgIGlucHV0czogQXJyYXk8e1xuICAgICAgICBfX3R5cGVuYW1lPzogJ1RyYW5zYWN0aW9uSW5wdXQnO1xuICAgICAgICBzb3VyY2VUeEluZGV4OiBudW1iZXI7XG4gICAgICAgIHNvdXJjZVR4SGFzaDogYW55O1xuICAgICAgICB2YWx1ZTogYW55O1xuICAgICAgICB0b2tlbnM6IEFycmF5PHtcbiAgICAgICAgICBfX3R5cGVuYW1lPzogJ1Rva2VuJztcbiAgICAgICAgICBxdWFudGl0eTogc3RyaW5nO1xuICAgICAgICAgIGFzc2V0OiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lPzogJ0Fzc2V0JztcbiAgICAgICAgICAgIGFzc2V0TmFtZT86IGFueSB8IG51bGw7XG4gICAgICAgICAgICBwb2xpY3lJZDogYW55O1xuICAgICAgICAgIH07XG4gICAgICAgIH0gfCBudWxsPjtcbiAgICAgIH0+O1xuICAgICAgb3V0cHV0czogQXJyYXk8e1xuICAgICAgICBfX3R5cGVuYW1lPzogJ1RyYW5zYWN0aW9uT3V0cHV0JztcbiAgICAgICAgYWRkcmVzczogc3RyaW5nO1xuICAgICAgICB2YWx1ZTogYW55O1xuICAgICAgICB0b2tlbnM6IEFycmF5PHtcbiAgICAgICAgICBfX3R5cGVuYW1lPzogJ1Rva2VuJztcbiAgICAgICAgICBxdWFudGl0eTogc3RyaW5nO1xuICAgICAgICAgIGFzc2V0OiB7XG4gICAgICAgICAgICBfX3R5cGVuYW1lPzogJ0Fzc2V0JztcbiAgICAgICAgICAgIGFzc2V0TmFtZT86IGFueSB8IG51bGw7XG4gICAgICAgICAgICBwb2xpY3lJZDogYW55O1xuICAgICAgICAgIH07XG4gICAgICAgIH0+O1xuICAgICAgfSB8IG51bGw+O1xuICAgICAgbWV0YWRhdGE/OiBBcnJheTx7XG4gICAgICAgIF9fdHlwZW5hbWU/OiAnVHJhbnNhY3Rpb25NZXRhZGF0YSc7XG4gICAgICAgIGtleTogc3RyaW5nO1xuICAgICAgICB2YWx1ZTogYW55O1xuICAgICAgfSB8IG51bGw+IHwgbnVsbDtcbiAgICB9IHwgbnVsbD47XG4gIH0gfCBudWxsPjtcbn07XG50eXBlIEdyYXBoUUxUcmFuc2FjdGlvbiA9IE5vbk51bGxhYmxlPFxuICBOb25OdWxsYWJsZTxHcmFwaFFMQmxvY2tUeHNRdWVyeVsnYmxvY2tzJ11bMF0+Wyd0cmFuc2FjdGlvbnMnXVswXVxuPjtcbnR5cGUgR3JhcGhRTFR4T3V0cHV0ID0gTm9uTnVsbGFibGU8R3JhcGhRTFRyYW5zYWN0aW9uWydvdXRwdXRzJ11bMF0+O1xuXG5leHBvcnQge1xuICBLb2lvc1RyYW5zYWN0aW9uLFxuICBDYXJkYW5vUm9zZW5EYXRhLFxuICBDYXJkYW5vTWV0YWRhdGFSb3NlbkRhdGEsXG4gIE1ldGFkYXRhT2JqZWN0LFxuICBKc29uT2JqZWN0LFxuICBMaXN0T2JqZWN0LFxuICBOYXRpdmVWYWx1ZSxcbiAgQ2FyZGFub01ldGFkYXRhLFxuICBDYXJkYW5vVHgsXG4gIENhcmRhbm9Cb3hDYW5kaWRhdGUsXG4gIEJsb2NrRnJvc3RUcmFuc2FjdGlvbixcbiAgQmxvY2tGcm9zdE91dHB1dEJveCxcbiAgR3JhcGhRTFRyYW5zYWN0aW9uLFxuICBHcmFwaFFMVHhPdXRwdXQsXG59O1xuIl19
|
|
@@ -1,15 +1,20 @@
|
|
|
1
|
+
import { MetadataObject, Metadatum } from './types';
|
|
1
2
|
/**
|
|
2
3
|
* Parse and validate Rosen data encoded in transaction metadata
|
|
3
4
|
* @param data
|
|
4
5
|
* @returns Rosen data or undefined if metadata is invalid
|
|
5
6
|
*/
|
|
6
|
-
export declare const parseRosenData: (data: any) =>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
7
|
+
export declare const parseRosenData: (data: any) => {
|
|
8
|
+
toChain: any;
|
|
9
|
+
toAddress: any;
|
|
10
|
+
bridgeFee: any;
|
|
11
|
+
networkFee: any;
|
|
12
|
+
fromAddress: any;
|
|
13
|
+
} | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* extracts dictionary from Metadatum object
|
|
16
|
+
* @param val
|
|
17
|
+
* @returns : dictionary value or undefined if parameter is not a dict
|
|
18
|
+
*/
|
|
19
|
+
export declare const getDictValue: (val: Metadatum) => MetadataObject;
|
|
20
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/cardano/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/cardano/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAML,cAAc,EACd,SAAS,EAEV,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,eAAO,MAAM,cAAc,SAAU,GAAG;;;;;;aAoBvC,CAAC;AAwDF;;;;GAIG;AACH,eAAO,MAAM,YAAY,QAAS,SAAS,KAAG,cAoB7C,CAAC"}
|
|
@@ -23,4 +23,96 @@ export const parseRosenData = (data) => {
|
|
|
23
23
|
}
|
|
24
24
|
return undefined;
|
|
25
25
|
};
|
|
26
|
-
|
|
26
|
+
/**
|
|
27
|
+
* extracts int value from Metadatum object
|
|
28
|
+
* @param val
|
|
29
|
+
* @returns : int value or undefined if parameter is not an int
|
|
30
|
+
*/
|
|
31
|
+
const getIntValue = (val) => {
|
|
32
|
+
return Object.prototype.hasOwnProperty.call(val, 'int')
|
|
33
|
+
? val.int.toString()
|
|
34
|
+
: undefined;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* extracts string value from Metadatum object
|
|
38
|
+
* @param val
|
|
39
|
+
* @returns : string value or undefined if parameter is not a string
|
|
40
|
+
*/
|
|
41
|
+
const getStringValue = (val) => {
|
|
42
|
+
return Object.prototype.hasOwnProperty.call(val, 'string')
|
|
43
|
+
? val.string
|
|
44
|
+
: undefined;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* extracts list value from Metadatum object
|
|
48
|
+
* @param val
|
|
49
|
+
* @returns : list value or undefined if parameter is not a list
|
|
50
|
+
*/
|
|
51
|
+
const getListValue = (val) => {
|
|
52
|
+
if (Object.prototype.hasOwnProperty.call(val, 'list')) {
|
|
53
|
+
const list = val.list;
|
|
54
|
+
const res = [];
|
|
55
|
+
list.forEach((item) => {
|
|
56
|
+
const val = ObjectToJson(item);
|
|
57
|
+
if (val) {
|
|
58
|
+
res.push(val);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return res;
|
|
62
|
+
}
|
|
63
|
+
return undefined;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* extracts one of int or string from Metadatum object
|
|
67
|
+
* @param val
|
|
68
|
+
* @returns : native value or undefined if parameter is not a string or int
|
|
69
|
+
*/
|
|
70
|
+
const getNativeValue = (val) => {
|
|
71
|
+
const intVal = getIntValue(val);
|
|
72
|
+
if (intVal)
|
|
73
|
+
return intVal;
|
|
74
|
+
const stringVal = getStringValue(val);
|
|
75
|
+
if (stringVal)
|
|
76
|
+
return stringVal;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* extracts dictionary from Metadatum object
|
|
80
|
+
* @param val
|
|
81
|
+
* @returns : dictionary value or undefined if parameter is not a dict
|
|
82
|
+
*/
|
|
83
|
+
export const getDictValue = (val) => {
|
|
84
|
+
if (Object.prototype.hasOwnProperty.call(val, 'map')) {
|
|
85
|
+
const list = val.map;
|
|
86
|
+
const res = {};
|
|
87
|
+
list.forEach((item) => {
|
|
88
|
+
const key = getNativeValue(item.k);
|
|
89
|
+
if (key) {
|
|
90
|
+
res[key] = ObjectToJson(item.v);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
return res;
|
|
94
|
+
}
|
|
95
|
+
else if (Object.prototype.hasOwnProperty.call(val, 'list')) {
|
|
96
|
+
const list = val.list;
|
|
97
|
+
const res = [];
|
|
98
|
+
list.map((item) => {
|
|
99
|
+
res.push(getDictValue(item));
|
|
100
|
+
});
|
|
101
|
+
return res;
|
|
102
|
+
}
|
|
103
|
+
return getNativeValue(val);
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Convert a Metadatum to a json
|
|
107
|
+
* @param val
|
|
108
|
+
*/
|
|
109
|
+
const ObjectToJson = (val) => {
|
|
110
|
+
const nativeValue = getNativeValue(val);
|
|
111
|
+
if (nativeValue)
|
|
112
|
+
return nativeValue;
|
|
113
|
+
const listValue = getListValue(val);
|
|
114
|
+
if (listValue)
|
|
115
|
+
return listValue;
|
|
116
|
+
return getDictValue(val);
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2NhcmRhbm8vdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBWTdEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFTLEVBQUUsRUFBRTtJQUMxQyxJQUNFLElBQUk7UUFDSixhQUFhLENBQUMsSUFBSSxDQUFDO1FBQ25CLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2pCLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3pCLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3hCLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxFQUNoQztRQUNBLE9BQU87WUFDTCxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDaEIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztTQUN2QyxDQUFDO0tBQ0g7SUFDRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDLENBQUM7QUFFRjs7OztHQUlHO0FBQ0gsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFjLEVBQUUsRUFBRTtJQUNyQyxPQUFPLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDO1FBQ3JELENB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RTtJQUN0QyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsSUFBSSxXQUFXO1FBQUUsT0FBTyxXQUFXLENBQUM7SUFDcEMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLElBQUksU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBQ2hDLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzQXJyYXksIGlzU3RyaW5nLCBpc1BsYWluT2JqZWN0IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7XG4gIEludCxcbiAgSnNvbk9iamVjdCxcbiAgTGlzdCxcbiAgTGlzdE9iamVjdCxcbiAgTWFwLFxuICBNZXRhZGF0YU9iamVjdCxcbiAgTWV0YWRhdHVtLFxuICBDU3RyaW5nLFxufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBQYXJzZSBhbmQgdmFsaWRhdGUgUm9zZW4gZGF0YSBlbmNvZGVkIGluIHRyYW5zYWN0aW9uIG1ldGFkYXRhXG4gKiBAcGFyYW0gZGF0YVxuICogQHJldHVybnMgUm9zZW4gZGF0YSBvciB1bmRlZmluZWQgaWYgbWV0YWRhdGEgaXMgaW52YWxpZFxuICovXG5leHBvcnQgY29uc3QgcGFyc2VSb3NlbkRhdGEgPSAoZGF0YTogYW55KSA9PiB7XG4gIGlmIChcbiAgICBkYXRhICYmXG4gICAgaXNQbGFpbk9iamVjdChkYXRhKSAmJlxuICAgIGlzU3RyaW5nKGRhdGEudG8pICYmXG4gICAgaXNTdHJpbmcoZGF0YS5uZXR3b3JrRmVlKSAmJlxuICAgIGlzU3RyaW5nKGRhdGEuYnJpZGdlRmVlKSAmJlxuICAgIGlzU3RyaW5nKGRhdGEudG9BZGRyZXNzKSAmJlxuICAgIGlzQXJyYXkoZGF0YS5mcm9tQWRkcmVzcykgJiZcbiAgICBkYXRhLmZyb21BZGRyZXNzLmV2ZXJ5KGlzU3RyaW5nKVxuICApIHtcbiAgICByZXR1cm4ge1xuICAgICAgdG9DaGFpbjogZGF0YS50byxcbiAgICAgIHRvQWRkcmVzczogZGF0YS50b0FkZHJlc3MsXG4gICAgICBicmlkZ2VGZWU6IGRhdGEuYnJpZGdlRmVlLFxuICAgICAgbmV0d29ya0ZlZTogZGF0YS5uZXR3b3JrRmVlLFxuICAgICAgZnJvbUFkZHJlc3M6IGRhdGEuZnJvbUFkZHJlc3Muam9pbignJyksXG4gICAgfTtcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBleHRyYWN0cyBpbnQgdmFsdWUgZnJvbSBNZXRhZGF0dW0gb2JqZWN0XG4gKiBAcGFyYW0gdmFsXG4gKiBAcmV0dXJucyA6IGludCB2YWx1ZSBvciB1bmRlZmluZWQgaWYgcGFyYW1ldGVyIGlzIG5vdCBhbiBpbnRcbiAqL1xuY29uc3QgZ2V0SW50VmFsdWUgPSAodmFsOiBNZXRhZGF0dW0pID0+IHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWwsICdpbnQnKVxuICAgID8gKHZhbCBhcyBJbnQpLmludC50b1N0cmluZygpXG4gICAgOiB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIGV4dHJhY3RzIHN0cmluZyB2YWx1ZSBmcm9tIE1ldGFkYXR1bSBvYmplY3RcbiAqIEBwYXJhbSB2YWxcbiAqIEByZXR1cm5zIDogc3RyaW5nIHZhbHVlIG9yIHVuZGVmaW5lZCBpZiBwYXJhbWV0ZXIgaXMgbm90IGEgc3RyaW5nXG4gKi9cbmNvbnN0IGdldFN0cmluZ1ZhbHVlID0gKHZhbDogTWV0YWRhdHVtKSA9PiB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodmFsLCAnc3RyaW5nJylcbiAgICA/ICh2YWwgYXMgQ1N0cmluZykuc3RyaW5nXG4gICAgOiB1bmRlZmluZWQ7XG59O1xuXG4vKipcbiAqIGV4dHJhY3RzIGxpc3QgdmFsdWUgZnJvbSBNZXRhZGF0dW0gb2JqZWN0XG4gKiBAcGFyYW0gdmFsXG4gKiBAcmV0dXJucyA6IGxpc3QgdmFsdWUgb3IgdW5kZWZpbmVkIGlmIHBhcmFtZXRlciBpcyBub3QgYSBsaXN0XG4gKi9cbmNvbnN0IGdldExpc3RWYWx1ZSA9ICh2YWw6IE1ldGFkYXR1bSk6IExpc3RPYmplY3QgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbCwgJ2xpc3QnKSkge1xuICAgIGNvbnN0IGxpc3QgPSAodmFsIGFzIExpc3QpLmxpc3Q7XG4gICAgY29uc3QgcmVzOiBMaXN0T2JqZWN0ID0gW107XG4gICAgbGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCB2YWwgPSBPYmplY3RUb0pzb24oaXRlbSk7XG4gICAgICBpZiAodmFsKSB7XG4gICAgICAgIHJlcy5wdXNoKHZhbCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkO1xufTtcblxuLyoqXG4gKiBleHRyYWN0cyBvbmUgb2YgaW50IG9yIHN0cmluZyBmcm9tIE1ldGFkYXR1bSBvYmplY3RcbiAqIEBwYXJhbSB2YWxcbiAqIEByZXR1cm5zIDogbmF0aXZlIHZhbHVlIG9yIHVuZGVmaW5lZCBpZiBwYXJhbWV0ZXIgaXMgbm90IGEgc3RyaW5nIG9yIGludFxuICovXG5jb25zdCBnZXROYXRpdmVWYWx1ZSA9ICh2YWw6IE1ldGFkYXR1bSkgPT4ge1xuICBjb25zdCBpbnRWYWwgPSBnZXRJbnRWYWx1ZSh2YWwpO1xuICBpZiAoaW50VmFsKSByZXR1cm4gaW50VmFsO1xuICBjb25zdCBzdHJpbmdWYWwgPSBnZXRTdHJpbmdWYWx1ZSh2YWwpO1xuICBpZiAoc3RyaW5nVmFsKSByZXR1cm4gc3RyaW5nVmFsO1xufTtcblxuLyoqXG4gKiBleHRyYWN0cyBkaWN0aW9uYXJ5IGZyb20gTWV0YWRhdHVtIG9iamVjdFxuICogQHBhcmFtIHZhbFxuICogQHJldHVybnMgOiBkaWN0aW9uYXJ5IHZhbHVlIG9yIHVuZGVmaW5lZCBpZiBwYXJhbWV0ZXIgaXMgbm90IGEgZGljdFxuICovXG5leHBvcnQgY29uc3QgZ2V0RGljdFZhbHVlID0gKHZhbDogTWV0YWRhdHVtKTogTWV0YWRhdGFPYmplY3QgPT4ge1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbCwgJ21hcCcpKSB7XG4gICAgY29uc3QgbGlzdCA9ICh2YWwgYXMgTWFwKS5tYXA7XG4gICAgY29uc3QgcmVzOiBKc29uT2JqZWN0ID0ge307XG4gICAgbGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCBrZXkgPSBnZXROYXRpdmVWYWx1ZShpdGVtLmspO1xuICAgICAgaWYgKGtleSkge1xuICAgICAgICByZXNba2V5XSA9IE9iamVjdFRvSnNvbihpdGVtLnYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH0gZWxzZSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbCwgJ2xpc3QnKSkge1xuICAgIGNvbnN0IGxpc3QgPSAodmFsIGFzIExpc3QpLmxpc3Q7XG4gICAgY29uc3QgcmVzOiBMaXN0T2JqZWN0ID0gW107XG4gICAgbGlzdC5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIHJlcy5wdXNoKGdldERpY3RWYWx1ZShpdGVtKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICByZXR1cm4gZ2V0TmF0aXZlVmFsdWUodmFsKTtcbn07XG5cbi8qKlxuICogQ29udmVydCBhIE1ldGFkYXR1bSB0byBhIGpzb25cbiAqIEBwYXJhbSB2YWxcbiAqL1xuY29uc3QgT2JqZWN0VG9Kc29uID0gKHZhbDogTWV0YWRhdHVtKSA9PiB7XG4gIGNvbnN0IG5hdGl2ZVZhbHVlID0gZ2V0TmF0aXZlVmFsdWUodmFsKTtcbiAgaWYgKG5hdGl2ZVZhbHVlKSByZXR1cm4gbmF0aXZlVmFsdWU7XG4gIGNvbnN0IGxpc3RWYWx1ZSA9IGdldExpc3RWYWx1ZSh2YWwpO1xuICBpZiAobGlzdFZhbHVlKSByZXR1cm4gbGlzdFZhbHVlO1xuICByZXR1cm4gZ2V0RGljdFZhbHVlKHZhbCk7XG59O1xuIl19
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { RosenData, TokenTransformation } from '../abstract/types';
|
|
2
|
+
import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
|
|
3
|
+
import { DogeEsploraTransaction, EsploraTxOutput } from './types';
|
|
4
|
+
import { TokenMap } from '@rosen-bridge/tokens';
|
|
5
|
+
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
6
|
+
export declare class DogeEsploraRosenExtractor extends AbstractRosenDataExtractor<DogeEsploraTransaction> {
|
|
7
|
+
readonly chain = "doge";
|
|
8
|
+
protected lockScriptPubKey: string;
|
|
9
|
+
constructor(lockAddress: string, tokens: TokenMap, logger?: AbstractLogger);
|
|
10
|
+
/**
|
|
11
|
+
* extracts RosenData from given lock transaction in Esplora format
|
|
12
|
+
* @param transaction the lock transaction in Esplora format
|
|
13
|
+
*/
|
|
14
|
+
extractRawData: (transaction: DogeEsploraTransaction) => RosenData | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* extracts and builds token transformation from UTXO and tokenMap
|
|
17
|
+
* @param box transaction output
|
|
18
|
+
* @param toChain event target chain
|
|
19
|
+
*/
|
|
20
|
+
getAssetTransformation: (box: EsploraTxOutput, toChain: string) => TokenTransformation | undefined;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=DogeEsploraRosenExtractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DogeEsploraRosenExtractor.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/doge/DogeEsploraRosenExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,0BAA0B,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,qBAAa,yBAA0B,SAAQ,0BAA0B,CAAC,sBAAsB,CAAC;IAC/F,QAAQ,CAAC,KAAK,UAAc;IAC5B,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;gBAEvB,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,cAAc;IAK1E;;;OAGG;IACH,cAAc,gBACC,sBAAsB,KAClC,SAAS,GAAG,SAAS,CA6EtB;IAEF;;;;OAIG;IACH,sBAAsB,QACf,eAAe,WACX,MAAM,KACd,mBAAmB,GAAG,SAAS,CAehC;CACH"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
|
|
2
|
+
import { DOGE_CHAIN, DOGE_NATIVE_TOKEN } from '../const';
|
|
3
|
+
import { parseRosenData, addressToOutputScript } from './utils';
|
|
4
|
+
export class DogeEsploraRosenExtractor extends AbstractRosenDataExtractor {
|
|
5
|
+
chain = DOGE_CHAIN;
|
|
6
|
+
lockScriptPubKey;
|
|
7
|
+
constructor(lockAddress, tokens, logger) {
|
|
8
|
+
super(lockAddress, tokens, logger);
|
|
9
|
+
this.lockScriptPubKey = addressToOutputScript(lockAddress);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* extracts RosenData from given lock transaction in Esplora format
|
|
13
|
+
* @param transaction the lock transaction in Esplora format
|
|
14
|
+
*/
|
|
15
|
+
extractRawData = (transaction) => {
|
|
16
|
+
const baseError = `No rosen data found for tx [${transaction.txid}]`;
|
|
17
|
+
try {
|
|
18
|
+
const outputs = transaction.vout;
|
|
19
|
+
if (outputs.length < 2) {
|
|
20
|
+
this.logger.debug(baseError + `: Insufficient number of boxes`);
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
let validData = false; // an OP_RETURN box with valid data is found
|
|
24
|
+
let validLock = false; // a lock box is found with available asset transformation
|
|
25
|
+
// parse rosen data from OP_RETURN box
|
|
26
|
+
let opReturnData;
|
|
27
|
+
for (let i = 0; i < outputs.length; i++) {
|
|
28
|
+
const output = outputs[i];
|
|
29
|
+
if (output.scriptpubkey.slice(0, 2) !== '6a')
|
|
30
|
+
continue; // not an OP_RETURN utxo
|
|
31
|
+
try {
|
|
32
|
+
opReturnData = parseRosenData(output.scriptpubkey);
|
|
33
|
+
validData = true;
|
|
34
|
+
break;
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
this.logger.debug(`Failed to extract data from OP_RETURN box [${transaction.txid}.${i}]: ${e}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (!validData || !opReturnData) {
|
|
41
|
+
this.logger.debug(baseError + `: No OP_RETURN box with valid data is found`);
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
// find target chain token id
|
|
45
|
+
let assetTransformation;
|
|
46
|
+
for (let i = 0; i < outputs.length; i++) {
|
|
47
|
+
const output = outputs[i];
|
|
48
|
+
if (output.scriptpubkey !== this.lockScriptPubKey)
|
|
49
|
+
continue; // utxo address is not lock address
|
|
50
|
+
assetTransformation = this.getAssetTransformation(output, opReturnData.toChain);
|
|
51
|
+
if (assetTransformation) {
|
|
52
|
+
validLock = true;
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (!validLock || !assetTransformation) {
|
|
57
|
+
this.logger.debug(baseError + `: Failed to find rosen asset transformation`);
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
const fromAddress = `box:${transaction.vin[0].txid}.${transaction.vin[0].vout}`;
|
|
61
|
+
return {
|
|
62
|
+
toChain: opReturnData.toChain,
|
|
63
|
+
toAddress: opReturnData.toAddress,
|
|
64
|
+
bridgeFee: opReturnData.bridgeFee,
|
|
65
|
+
networkFee: opReturnData.networkFee,
|
|
66
|
+
fromAddress: fromAddress,
|
|
67
|
+
sourceChainTokenId: assetTransformation.from,
|
|
68
|
+
amount: assetTransformation.amount,
|
|
69
|
+
targetChainTokenId: assetTransformation.to,
|
|
70
|
+
sourceTxId: transaction.txid,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
catch (e) {
|
|
74
|
+
this.logger.debug(`An error occurred while getting Doge rosen data from Esplora: ${e}`);
|
|
75
|
+
if (e instanceof Error && e.stack) {
|
|
76
|
+
this.logger.debug(e.stack);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return undefined;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* extracts and builds token transformation from UTXO and tokenMap
|
|
83
|
+
* @param box transaction output
|
|
84
|
+
* @param toChain event target chain
|
|
85
|
+
*/
|
|
86
|
+
getAssetTransformation = (box, toChain) => {
|
|
87
|
+
// try to build transformation using locked DOGE
|
|
88
|
+
const wrappedDoge = this.tokens.search(DOGE_CHAIN, {
|
|
89
|
+
tokenId: DOGE_NATIVE_TOKEN,
|
|
90
|
+
});
|
|
91
|
+
if (wrappedDoge.length > 0 && Object.hasOwn(wrappedDoge[0], toChain)) {
|
|
92
|
+
const dogeAmount = box.value;
|
|
93
|
+
return {
|
|
94
|
+
from: DOGE_NATIVE_TOKEN,
|
|
95
|
+
to: this.tokens.getID(wrappedDoge[0], toChain),
|
|
96
|
+
amount: dogeAmount.toString(),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG9nZUVzcGxvcmFSb3NlbkV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9nZXRSb3NlbkRhdGEvZG9nZS9Eb2dlRXNwbG9yYVJvc2VuRXh0cmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sMEJBQTBCLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUl6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRWhFLE1BQU0sT0FBTyx5QkFBMEIsU0FBUSwwQkFBa0Q7SUFDdEYsS0FBSyxHQUFHLFVBQVUsQ0FBQztJQUNsQixnQkFBZ0IsQ0FBUztJQUVuQyxZQUFZLFdBQW1CLEVBQUUsTUFBZ0IsRUFBRSxNQUF1QjtRQUN4RSxLQUFLLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVEOzs7T0FHRztJQUNILGNBQWMsR0FBRyxDQUNmLFdBQW1DLEVBQ1osRUFBRTtRQUN6QixNQUFNLFNBQVMsR0FBRywrQkFBK0IsV0FBVyxDQUFDLElBQUksR0FBRyxDQUFDO1FBQ3JFLElBQUk7WUFDRixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDO1lBQ2pDLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxnQ0FBZ0MsQ0FBQyxDQUFDO2dCQUNoRSxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUVELElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxDQUFDLDRDQUE0QztZQUNuRSxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUMsQ0FBQywwREFBMEQ7WUFFakYsc0NBQXNDO1lBQ3RDLElBQUksWUFBc0MsQ0FBQztZQUMzQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdkMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJO29CQUFFLFNBQVMsQ0FBQyx3QkFBd0I7Z0JBRWhGLElBQUk7b0JBQ0YsWUFBWSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ25ELFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQ2pCLE1BQU07aUJBQ1A7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YsOENBQThDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUM3RSxDQUFDO2lCQUNIO2FBQ0Y7WUFDRCxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUMvQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZixTQUFTLEdBQUcsNkNBQTZDLENBQzFELENBQUM7Z0JBQ0YsT0FBTyxTQUFTLENBQUM7YUFDbEI7WUFFRCw2QkFBNkI7WUFDN0IsSUFBSSxtQkFBb0QsQ0FBQztZQUN6RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDdkMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixJQUFJLE1BQU0sQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLGdCQUFnQjtvQkFBRSxTQUFTLENBQUMsbUNBQW1DO2dCQUNoRyxtQkFBbUIsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQy9DLE1BQU0sRUFDTixZQUFZLENBQUMsT0FBTyxDQUNyQixDQUFDO2dCQUNGLElBQUksbUJBQW1CLEVBQUU7b0JBQ3ZCLFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQ2pCLE1BQU07aUJBQ1A7YUFDRjtZQUNELElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YsU0FBUyxHQUFHLDZDQUE2QyxDQUMxRCxDQUFDO2dCQUNGLE9BQU8sU0FBUyxDQUFDO2FBQ2xCO1lBRUQsTUFBTSxXQUFXLEdBQUcsT0FBTyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hGLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLFlBQVksQ0FBQyxPQUFPO2dCQUM3QixTQUFTLEVBQUUsWUFBWSxDQUFDLFNBQVM7Z0JBQ2pDLFNBQVMsRUFBRSxZQUFZLENBQUMsU0FBUztnQkFDakMsVUFBVSxFQUFFLFlBQVksQ0FBQyxVQUFVO2dCQUNuQyxXQUFXLEVBQUUsV0FBVztnQkFDeEIsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsSUFBSTtnQkFDNUMsTUFBTSxFQUFFLG1CQUFtQixDQUFDLE1BQU07Z0JBQ2xDLGtCQUFrQixFQUFFLG1CQUFtQixDQUFDLEVBQUU7Z0JBQzFDLFVBQVUsRUFBRSxXQUFXLENBQUMsSUFBSTthQUM3QixDQUFDO1NBQ0g7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLGlFQUFpRSxDQUFDLEVBQUUsQ0FDckUsQ0FBQztZQUNGLElBQUksQ0FBQyxZQUFZLEtBQUssSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDNUI7U0FDRjtRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUMsQ0FBQztJQUVGOzs7O09BSUc7SUFDSCxzQkFBc0IsR0FBRyxDQUN2QixHQUFvQixFQUNwQixPQUFlLEVBQ2tCLEVBQUU7UUFDbkMsZ0RBQWdEO1FBQ2hELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUNqRCxPQUFPLEVBQUUsaUJBQWlCO1NBQzNCLENBQUMsQ0FBQztRQUNILElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUU7WUFDcEUsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUM3QixPQUFPO2dCQUNMLElBQUksRUFBRSxpQkFBaUI7Z0JBQ3ZCLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDO2dCQUM5QyxNQUFNLEVBQUUsVUFBVSxDQUFDLFFBQVEsRUFBRTthQUM5QixDQUFDO1NBQ0g7YUFBTTtZQUNMLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQyxDQUFDO0NBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3NlbkRhdGEsIFRva2VuVHJhbnNmb3JtYXRpb24gfSBmcm9tICcuLi9hYnN0cmFjdC90eXBlcyc7XG5pbXBvcnQgQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3IgZnJvbSAnLi4vYWJzdHJhY3QvQWJzdHJhY3RSb3NlbkRhdGFFeHRyYWN0b3InO1xuaW1wb3J0IHsgRE9HRV9DSEFJTiwgRE9HRV9OQVRJVkVfVE9LRU4gfSBmcm9tICcuLi9jb25zdCc7XG5pbXBvcnQgeyBEb2dlRXNwbG9yYVRyYW5zYWN0aW9uLCBFc3Bsb3JhVHhPdXRwdXQsIE9wUmV0dXJuRGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgVG9rZW5NYXAgfSBmcm9tICdAcm9zZW4tYnJpZGdlL3Rva2Vucyc7XG5pbXBvcnQgeyBBYnN0cmFjdExvZ2dlciB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWJzdHJhY3QtbG9nZ2VyJztcbmltcG9ydCB7IHBhcnNlUm9zZW5EYXRhLCBhZGRyZXNzVG9PdXRwdXRTY3JpcHQgfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIERvZ2VFc3Bsb3JhUm9zZW5FeHRyYWN0b3IgZXh0ZW5kcyBBYnN0cmFjdFJvc2VuRGF0YUV4dHJhY3RvcjxEb2dlRXNwbG9yYVRyYW5zYWN0aW9uPiB7XG4gIHJlYWRvbmx5IGNoYWluID0gRE9HRV9DSEFJTjtcbiAgcHJvdGVjdGVkIGxvY2tTY3JpcHRQdWJLZXk6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihsb2NrQWRkcmVzczogc3RyaW5nLCB0b2tlbnM6IFRva2VuTWFwLCBsb2dnZXI/OiBBYnN0cmFjdExvZ2dlcikge1xuICAgIHN1cGVyKGxvY2tBZGRyZXNzLCB0b2tlbnMsIGxvZ2dlcik7XG4gICAgdGhpcy5sb2NrU2NyaXB0UHViS2V5ID0gYWRkcmVzc1RvT3V0cHV0U2NyaXB0KGxvY2tBZGRyZXNzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBleHRyYWN0cyBSb3NlbkRhdGEgZnJvbSBnaXZlbiBsb2NrIHRyYW5zYWN0aW9uIGluIEVzcGxvcmEgZm9ybWF0XG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvbiB0aGUgbG9jayB0cmFuc2FjdGlvbiBpbiBFc3Bsb3JhIGZvcm1hdFxuICAgKi9cbiAgZXh0cmFjdFJhd0RhdGEgPSAoXG4gICAgdHJhbnNhY3Rpb246IERvZ2VFc3Bsb3JhVHJhbnNhY3Rpb25cbiAgKTogUm9zZW5EYXRhIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBiYXNlRXJyb3IgPSBgTm8gcm9zZW4gZGF0YSBmb3VuZCBmb3IgdHggWyR7dHJhbnNhY3Rpb24udHhpZH1dYDtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3V0cHV0cyA9IHRyYW5zYWN0aW9uLnZvdXQ7XG4gICAgICBpZiAob3V0cHV0cy5sZW5ndGggPCAyKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKGJhc2VFcnJvciArIGA6IEluc3VmZmljaWVudCBudW1iZXIgb2YgYm94ZXNgKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgbGV0IHZhbGlkRGF0YSA9IGZhbHNlOyAvLyBhbiBPUF9SRVRVUk4gYm94IHdpdGggdmFsaWQgZGF0YSBpcyBmb3VuZFxuICAgICAgbGV0IHZhbGlkTG9jayA9IGZhbHNlOyAvLyBhIGxvY2sgYm94IGlzIGZvdW5kIHdpdGggYXZhaWxhYmxlIGFzc2V0IHRyYW5zZm9ybWF0aW9uXG5cbiAgICAgIC8vIHBhcnNlIHJvc2VuIGRhdGEgZnJvbSBPUF9SRVRVUk4gYm94XG4gICAgICBsZXQgb3BSZXR1cm5EYXRhOiBPcFJldHVybkRhdGEgfCB1bmRlZmluZWQ7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG91dHB1dHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gb3V0cHV0c1tpXTtcbiAgICAgICAgaWYgKG91dHB1dC5zY3JpcHRwdWJrZXkuc2xpY2UoMCwgMikgIT09ICc2YScpIGNvbnRpbnVlOyAvLyBub3QgYW4gT1BfUkVUVVJOIHV0eG9cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIG9wUmV0dXJuRGF0YSA9IHBhcnNlUm9zZW5EYXRhKG91dHB1dC5zY3JpcHRwdWJrZXkpO1xuICAgICAgICAgIHZhbGlkRGF0YSA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhcbiAgICAgICAgICAgIGBGYWlsZWQgdG8gZXh0cmFjdCBkYXRhIGZyb20gT1BfUkVUVVJOIGJveCBbJHt0cmFuc2FjdGlvbi50eGlkfS4ke2l9XTogJHtlfWBcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXZhbGlkRGF0YSB8fCAhb3BSZXR1cm5EYXRhKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAgIGJhc2VFcnJvciArIGA6IE5vIE9QX1JFVFVSTiBib3ggd2l0aCB2YWxpZCBkYXRhIGlzIGZvdW5kYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICAvLyBmaW5kIHRhcmdldCBjaGFpbiB0b2tlbiBpZFxuICAgICAgbGV0IGFzc2V0VHJhbnNmb3JtYXRpb246IFRva2VuVHJhbnNmb3JtYXRpb24gfCB1bmRlZmluZWQ7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG91dHB1dHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3Qgb3V0cHV0ID0gb3V0cHV0c1tpXTtcbiAgICAgICAgaWYgKG91dHB1dC5zY3JpcHRwdWJrZXkgIT09IHRoaXMubG9ja1NjcmlwdFB1YktleSkgY29udGludWU7IC8vIHV0eG8gYWRkcmVzcyBpcyBub3QgbG9jayBhZGRyZXNzXG4gICAgICAgIGFzc2V0VHJhbnNmb3JtYXRpb24gPSB0aGlzLmdldEFzc2V0VHJhbnNmb3JtYXRpb24oXG4gICAgICAgICAgb3V0cHV0LFxuICAgICAgICAgIG9wUmV0dXJuRGF0YS50b0NoYWluXG4gICAgICAgICk7XG4gICAgICAgIGlmIChhc3NldFRyYW5zZm9ybWF0aW9uKSB7XG4gICAgICAgICAgdmFsaWRMb2NrID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKCF2YWxpZExvY2sgfHwgIWFzc2V0VHJhbnNmb3JtYXRpb24pIHtcbiAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoXG4gICAgICAgICAgYmFzZUVycm9yICsgYDogRmFpbGVkIHRvIGZpbmQgcm9zZW4gYXNzZXQgdHJhbnNmb3JtYXRpb25gXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZyb21BZGRyZXNzID0gYGJveDoke3RyYW5zYWN0aW9uLnZpblswXS50eGlkfS4ke3RyYW5zYWN0aW9uLnZpblswXS52b3V0fWA7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0b0NoYWluOiBvcFJldHVybkRhdGEudG9DaGFpbixcbiAgICAgICAgdG9BZGRyZXNzOiBvcFJldHVybkRhdGEudG9BZGRyZXNzLFxuICAgICAgICBicmlkZ2VGZWU6IG9wUmV0dXJuRGF0YS5icmlkZ2VGZWUsXG4gICAgICAgIG5ldHdvcmtGZWU6IG9wUmV0dXJuRGF0YS5uZXR3b3JrRmVlLFxuICAgICAgICBmcm9tQWRkcmVzczogZnJvbUFkZHJlc3MsXG4gICAgICAgIHNvdXJjZUNoYWluVG9rZW5JZDogYXNzZXRUcmFuc2Zvcm1hdGlvbi5mcm9tLFxuICAgICAgICBhbW91bnQ6IGFzc2V0VHJhbnNmb3JtYXRpb24uYW1vdW50LFxuICAgICAgICB0YXJnZXRDaGFpblRva2VuSWQ6IGFzc2V0VHJhbnNmb3JtYXRpb24udG8sXG4gICAgICAgIHNvdXJjZVR4SWQ6IHRyYW5zYWN0aW9uLnR4aWQsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICBgQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZ2V0dGluZyBEb2dlIHJvc2VuIGRhdGEgZnJvbSBFc3Bsb3JhOiAke2V9YFxuICAgICAgKTtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IgJiYgZS5zdGFjaykge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhlLnN0YWNrKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfTtcblxuICAvKipcbiAgICogZXh0cmFjdHMgYW5kIGJ1aWxkcyB0b2tlbiB0cmFuc2Zvcm1hdGlvbiBmcm9tIFVUWE8gYW5kIHRva2VuTWFwXG4gICAqIEBwYXJhbSBib3ggdHJhbnNhY3Rpb24gb3V0cHV0XG4gICAqIEBwYXJhbSB0b0NoYWluIGV2ZW50IHRhcmdldCBjaGFpblxuICAgKi9cbiAgZ2V0QXNzZXRUcmFuc2Zvcm1hdGlvbiA9IChcbiAgICBib3g6IEVzcGxvcmFUeE91dHB1dCxcbiAgICB0b0NoYWluOiBzdHJpbmdcbiAgKTogVG9rZW5UcmFuc2Zvcm1hdGlvbiB8IHVuZGVmaW5lZCA9PiB7XG4gICAgLy8gdHJ5IHRvIGJ1aWxkIHRyYW5zZm9ybWF0aW9uIHVzaW5nIGxvY2tlZCBET0dFXG4gICAgY29uc3Qgd3JhcHBlZERvZ2UgPSB0aGlzLnRva2Vucy5zZWFyY2goRE9HRV9DSEFJTiwge1xuICAgICAgdG9rZW5JZDogRE9HRV9OQVRJVkVfVE9LRU4sXG4gICAgfSk7XG4gICAgaWYgKHdyYXBwZWREb2dlLmxlbmd0aCA+IDAgJiYgT2JqZWN0Lmhhc093bih3cmFwcGVkRG9nZVswXSwgdG9DaGFpbikpIHtcbiAgICAgIGNvbnN0IGRvZ2VBbW91bnQgPSBib3gudmFsdWU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBmcm9tOiBET0dFX05BVElWRV9UT0tFTixcbiAgICAgICAgdG86IHRoaXMudG9rZW5zLmdldElEKHdyYXBwZWREb2dlWzBdLCB0b0NoYWluKSxcbiAgICAgICAgYW1vdW50OiBkb2dlQW1vdW50LnRvU3RyaW5nKCksXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
|