@rosen-bridge/address-codec 0.2.1 → 0.4.0-66382a71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -2
- package/dist/const.d.ts +1 -0
- package/dist/const.d.ts.map +1 -1
- package/dist/const.js +2 -1
- package/dist/decoder.d.ts +2 -5
- package/dist/decoder.d.ts.map +1 -1
- package/dist/decoder.js +3 -2
- package/dist/encoder.d.ts +1 -1
- package/dist/encoder.d.ts.map +1 -1
- package/dist/encoder.js +3 -2
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/lib/const.d.ts +1 -0
- package/dist/lib/const.d.ts.map +1 -1
- package/dist/lib/const.js +2 -1
- package/dist/lib/decoder.d.ts.map +1 -1
- package/dist/lib/decoder.js +3 -2
- package/dist/lib/encoder.d.ts.map +1 -1
- package/dist/lib/encoder.js +3 -2
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +2 -1
- package/dist/lib/validator.d.ts +7 -0
- package/dist/lib/validator.d.ts.map +1 -0
- package/dist/lib/validator.js +33 -0
- package/dist/tests/testData.d.ts +6 -0
- package/dist/tests/testData.d.ts.map +1 -1
- package/dist/tests/testData.js +7 -1
- package/dist/tests/validator.spec.d.ts +2 -0
- package/dist/tests/validator.spec.d.ts.map +1 -0
- package/dist/tests/validator.spec.js +158 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +3 -3
- package/dist/types.js +7 -11
- package/dist/validator.d.ts +7 -0
- package/dist/validator.d.ts.map +1 -0
- package/dist/validator.js +33 -0
- package/lib/const.ts +1 -0
- package/lib/decoder.ts +2 -0
- package/lib/encoder.ts +2 -0
- package/lib/index.ts +1 -0
- package/lib/validator.ts +38 -0
- package/package.json +4 -3
- package/tests/testData.ts +11 -0
- package/tests/validator.spec.ts +178 -0
- package/tsconfig.build.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
# @rosen-bridge/address-codec
|
|
2
2
|
|
|
3
|
+
## 0.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Add Binance
|
|
8
|
+
|
|
9
|
+
## 0.3.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- Add address verifier with respect to chain
|
|
14
|
+
|
|
3
15
|
## 0.2.1
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
|
6
18
|
|
|
7
|
-
-
|
|
19
|
+
- Reduce ergo wasm version due to nextjs bug
|
|
8
20
|
|
|
9
21
|
## 0.2.0
|
|
10
22
|
|
|
11
23
|
### Minor Changes
|
|
12
24
|
|
|
13
|
-
-
|
|
25
|
+
- Support for Ethereum's address encoding and decoding were added.
|
package/dist/const.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export declare const BITCOIN_CHAIN = "bitcoin";
|
|
|
2
2
|
export declare const CARDANO_CHAIN = "cardano";
|
|
3
3
|
export declare const ERGO_CHAIN = "ergo";
|
|
4
4
|
export declare const ETHEREUM_CHAIN = "ethereum";
|
|
5
|
+
export declare const BINANCE_CHAIN = "binance";
|
|
5
6
|
//# sourceMappingURL=const.d.ts.map
|
package/dist/const.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../lib/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,UAAU,SAAS,CAAC;AACjC,eAAO,MAAM,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../lib/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,UAAU,SAAS,CAAC;AACjC,eAAO,MAAM,cAAc,aAAa,CAAC;AACzC,eAAO,MAAM,aAAa,YAAY,CAAC"}
|
package/dist/const.js
CHANGED
|
@@ -2,4 +2,5 @@ export const BITCOIN_CHAIN = 'bitcoin';
|
|
|
2
2
|
export const CARDANO_CHAIN = 'cardano';
|
|
3
3
|
export const ERGO_CHAIN = 'ergo';
|
|
4
4
|
export const ETHEREUM_CHAIN = 'ethereum';
|
|
5
|
-
|
|
5
|
+
export const BINANCE_CHAIN = 'binance';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUM7QUFDakMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEJJVENPSU5fQ0hBSU4gPSAnYml0Y29pbic7XG5leHBvcnQgY29uc3QgQ0FSREFOT19DSEFJTiA9ICdjYXJkYW5vJztcbmV4cG9ydCBjb25zdCBFUkdPX0NIQUlOID0gJ2VyZ28nO1xuZXhwb3J0IGNvbnN0IEVUSEVSRVVNX0NIQUlOID0gJ2V0aGVyZXVtJztcbmV4cG9ydCBjb25zdCBCSU5BTkNFX0NIQUlOID0gJ2JpbmFuY2UnO1xuIl19
|
package/dist/decoder.d.ts
CHANGED
|
@@ -4,8 +4,5 @@
|
|
|
4
4
|
* @param chain
|
|
5
5
|
* @param encodedAddress
|
|
6
6
|
*/
|
|
7
|
-
export declare const decodeAddress: (
|
|
8
|
-
|
|
9
|
-
encodedAddress: string,
|
|
10
|
-
) => string;
|
|
11
|
-
//# sourceMappingURL=decoder.d.ts.map
|
|
7
|
+
export declare const decodeAddress: (chain: string, encodedAddress: string) => string;
|
|
8
|
+
//# sourceMappingURL=decoder.d.ts.map
|
package/dist/decoder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../lib/decoder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../lib/decoder.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,eAAO,MAAM,aAAa,UACjB,MAAM,kBACG,MAAM,KACrB,MAyBF,CAAC"}
|
package/dist/decoder.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BITCOIN_CHAIN, CARDANO_CHAIN, ERGO_CHAIN, ETHEREUM_CHAIN, } from './const';
|
|
1
|
+
import { BINANCE_CHAIN, BITCOIN_CHAIN, CARDANO_CHAIN, ERGO_CHAIN, ETHEREUM_CHAIN, } from './const';
|
|
2
2
|
import { UnsupportedAddressError, UnsupportedChainError } from './types';
|
|
3
3
|
import * as ergoLib from 'ergo-lib-wasm-nodejs';
|
|
4
4
|
import * as cardanoLib from '@emurgo/cardano-serialization-lib-nodejs';
|
|
@@ -19,6 +19,7 @@ export const decodeAddress = (chain, encodedAddress) => {
|
|
|
19
19
|
return cardanoLib.Address.from_bytes(Buffer.from(encodedAddress, 'hex')).to_bech32();
|
|
20
20
|
case BITCOIN_CHAIN:
|
|
21
21
|
return bitcoinLib.address.fromOutputScript(Buffer.from(encodedAddress, 'hex'));
|
|
22
|
+
case BINANCE_CHAIN:
|
|
22
23
|
case ETHEREUM_CHAIN:
|
|
23
24
|
if (encodedAddress.length != 40) {
|
|
24
25
|
throw new UnsupportedAddressError(chain, encodedAddress);
|
|
@@ -28,4 +29,4 @@ export const decodeAddress = (chain, encodedAddress) => {
|
|
|
28
29
|
throw new UnsupportedChainError(chain);
|
|
29
30
|
}
|
|
30
31
|
};
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9kZWNvZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGFBQWEsRUFDYixVQUFVLEVBQ1YsY0FBYyxHQUNmLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6RSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxVQUFVLE1BQU0sMENBQTBDLENBQUM7QUFDdkUsT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFFNUM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FDM0IsS0FBYSxFQUNiLGNBQXNCLEVBQ2QsRUFBRTtJQUNWLElBQUksY0FBYyxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsQ0FBQztRQUNoQyxNQUFNLElBQUksdUJBQXVCLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsS0FBSyxFQUFFLENBQUM7UUFDZCxLQUFLLFVBQVU7WUFDYixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FDbkMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3QyxLQUFLLGFBQWE7WUFDaEIsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FDbEMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQ25DLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDaEIsS0FBSyxhQUFhO1lBQ2hCLE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FDeEMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQ25DLENBQUM7UUFDSixLQUFLLGFBQWEsQ0FBQztRQUNuQixLQUFLLGNBQWM7WUFDakIsSUFBSSxjQUFjLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO2dCQUNoQyxNQUFNLElBQUksdUJBQXVCLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFDRCxPQUFPLElBQUksR0FBRyxjQUFjLENBQUM7UUFDL0I7WUFDRSxNQUFNLElBQUkscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0MsQ0FBQztBQUNILENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJJTkFOQ0VfQ0hBSU4sXG4gIEJJVENPSU5fQ0hBSU4sXG4gIENBUkRBTk9fQ0hBSU4sXG4gIEVSR09fQ0hBSU4sXG4gIEVUSEVSRVVNX0NIQUlOLFxufSBmcm9tICcuL2NvbnN0JztcbmltcG9ydCB7IFVuc3VwcG9ydGVkQWRkcmVzc0Vycm9yLCBVbnN1cHBvcnRlZENoYWluRXJyb3IgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCAqIGFzIGVyZ29MaWIgZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuaW1wb3J0ICogYXMgY2FyZGFub0xpYiBmcm9tICdAZW11cmdvL2NhcmRhbm8tc2VyaWFsaXphdGlvbi1saWItbm9kZWpzJztcbmltcG9ydCAqIGFzIGJpdGNvaW5MaWIgZnJvbSAnYml0Y29pbmpzLWxpYic7XG5cbi8qKlxuICogZGVjb2RlcyBhZGRyZXNzIG9mIGEgY2hhaW5cbiAqICB0aHJvd3MgZXJyb3IgaWYgZW5jb2RlZCBhZGRyZXNzIGxlbmd0aCBpcyBtb3JlIHRoYW4gNjAgYnl0ZXNcbiAqIEBwYXJhbSBjaGFpblxuICogQHBhcmFtIGVuY29kZWRBZGRyZXNzXG4gKi9cbmV4cG9ydCBjb25zdCBkZWNvZGVBZGRyZXNzID0gKFxuICBjaGFpbjogc3RyaW5nLFxuICBlbmNvZGVkQWRkcmVzczogc3RyaW5nXG4pOiBzdHJpbmcgPT4ge1xuICBpZiAoZW5jb2RlZEFkZHJlc3MubGVuZ3RoID4gNjAgKiAyKVxuICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEFkZHJlc3NFcnJvcihjaGFpbiwgZW5jb2RlZEFkZHJlc3MpO1xuICBzd2l0Y2ggKGNoYWluKSB7XG4gICAgY2FzZSBFUkdPX0NIQUlOOlxuICAgICAgcmV0dXJuIGVyZ29MaWIuQWRkcmVzcy5mcm9tX3B1YmxpY19rZXkoXG4gICAgICAgIEJ1ZmZlci5mcm9tKGVuY29kZWRBZGRyZXNzLCAnaGV4JylcbiAgICAgICkudG9fYmFzZTU4KGVyZ29MaWIuTmV0d29ya1ByZWZpeC5NYWlubmV0KTtcbiAgICBjYXNlIENBUkRBTk9fQ0hBSU46XG4gICAgICByZXR1cm4gY2FyZGFub0xpYi5BZGRyZXNzLmZyb21fYnl0ZXMoXG4gICAgICAgIEJ1ZmZlci5mcm9tKGVuY29kZWRBZGRyZXNzLCAnaGV4JylcbiAgICAgICkudG9fYmVjaDMyKCk7XG4gICAgY2FzZSBCSVRDT0lOX0NIQUlOOlxuICAgICAgcmV0dXJuIGJpdGNvaW5MaWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KFxuICAgICAgICBCdWZmZXIuZnJvbShlbmNvZGVkQWRkcmVzcywgJ2hleCcpXG4gICAgICApO1xuICAgIGNhc2UgQklOQU5DRV9DSEFJTjpcbiAgICBjYXNlIEVUSEVSRVVNX0NIQUlOOlxuICAgICAgaWYgKGVuY29kZWRBZGRyZXNzLmxlbmd0aCAhPSA0MCkge1xuICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRBZGRyZXNzRXJyb3IoY2hhaW4sIGVuY29kZWRBZGRyZXNzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAnMHgnICsgZW5jb2RlZEFkZHJlc3M7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZENoYWluRXJyb3IoY2hhaW4pO1xuICB9XG59O1xuIl19
|
package/dist/encoder.d.ts
CHANGED
package/dist/encoder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../lib/encoder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../lib/encoder.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,eAAO,MAAM,aAAa,UAAW,MAAM,WAAW,MAAM,KAAG,MA+B9D,CAAC"}
|
package/dist/encoder.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BITCOIN_CHAIN, CARDANO_CHAIN, ERGO_CHAIN, ETHEREUM_CHAIN, } from './const';
|
|
1
|
+
import { BINANCE_CHAIN, BITCOIN_CHAIN, CARDANO_CHAIN, ERGO_CHAIN, ETHEREUM_CHAIN, } from './const';
|
|
2
2
|
import { UnsupportedAddressError, UnsupportedChainError } from './types';
|
|
3
3
|
import * as ergoLib from 'ergo-lib-wasm-nodejs';
|
|
4
4
|
import * as cardanoLib from '@emurgo/cardano-serialization-lib-nodejs';
|
|
@@ -21,6 +21,7 @@ export const encodeAddress = (chain, address) => {
|
|
|
21
21
|
case BITCOIN_CHAIN:
|
|
22
22
|
encoded = Buffer.from(bitcoinLib.address.toOutputScript(address)).toString('hex');
|
|
23
23
|
break;
|
|
24
|
+
case BINANCE_CHAIN:
|
|
24
25
|
case ETHEREUM_CHAIN:
|
|
25
26
|
if (address.length != 42 || address.substring(0, 2) != '0x') {
|
|
26
27
|
throw new UnsupportedAddressError(chain, address);
|
|
@@ -34,4 +35,4 @@ export const encodeAddress = (chain, address) => {
|
|
|
34
35
|
throw new UnsupportedAddressError(chain, address);
|
|
35
36
|
return encoded;
|
|
36
37
|
};
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2xpYi9lbmNvZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGFBQWEsRUFDYixVQUFVLEVBQ1YsY0FBYyxHQUNmLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6RSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxVQUFVLE1BQU0sMENBQTBDLENBQUM7QUFDdkUsT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFFNUM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFhLEVBQUUsT0FBZSxFQUFVLEVBQUU7SUFDdEUsSUFBSSxPQUFlLENBQUM7SUFDcEIsUUFBUSxLQUFLLEVBQUUsQ0FBQztRQUNkLEtBQUssVUFBVTtZQUNiLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUNuQixPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FDckQsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEIsTUFBTTtRQUNSLEtBQUssYUFBYTtZQUNoQixPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDbkIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQ25ELENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xCLE1BQU07UUFDUixLQUFLLGFBQWE7WUFDaEIsT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ25CLFVBQVUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUMzQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQixNQUFNO1FBQ1IsS0FBSyxhQUFhLENBQUM7UUFDbkIsS0FBSyxjQUFjO1lBQ2pCLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQzVELE1BQU0sSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9CLE1BQU07UUFDUjtZQUNFLE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBQ0QsSUFBSSxPQUFPLENBQUMsTUFBTSxHQUFHLEVBQUUsR0FBRyxDQUFDO1FBQ3pCLE1BQU0sSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQklOQU5DRV9DSEFJTixcbiAgQklUQ09JTl9DSEFJTixcbiAgQ0FSREFOT19DSEFJTixcbiAgRVJHT19DSEFJTixcbiAgRVRIRVJFVU1fQ0hBSU4sXG59IGZyb20gJy4vY29uc3QnO1xuaW1wb3J0IHsgVW5zdXBwb3J0ZWRBZGRyZXNzRXJyb3IsIFVuc3VwcG9ydGVkQ2hhaW5FcnJvciB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0ICogYXMgZXJnb0xpYiBmcm9tICdlcmdvLWxpYi13YXNtLW5vZGVqcyc7XG5pbXBvcnQgKiBhcyBjYXJkYW5vTGliIGZyb20gJ0BlbXVyZ28vY2FyZGFuby1zZXJpYWxpemF0aW9uLWxpYi1ub2RlanMnO1xuaW1wb3J0ICogYXMgYml0Y29pbkxpYiBmcm9tICdiaXRjb2luanMtbGliJztcblxuLyoqXG4gKiBlbmNvZGVzIGFkZHJlc3Mgb2YgYSBjaGFpbiB0byBoZXggc3RyaW5nXG4gKiAgdGhyb3dzIGVycm9yIGlmIGVuY29kZWQgYWRkcmVzcyBsZW5ndGggaXMgbW9yZSB0aGFuIDYwIGJ5dGVzXG4gKiBAcGFyYW0gY2hhaW5cbiAqIEBwYXJhbSBhZGRyZXNzXG4gKi9cbmV4cG9ydCBjb25zdCBlbmNvZGVBZGRyZXNzID0gKGNoYWluOiBzdHJpbmcsIGFkZHJlc3M6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGxldCBlbmNvZGVkOiBzdHJpbmc7XG4gIHN3aXRjaCAoY2hhaW4pIHtcbiAgICBjYXNlIEVSR09fQ0hBSU46XG4gICAgICBlbmNvZGVkID0gQnVmZmVyLmZyb20oXG4gICAgICAgIGVyZ29MaWIuQWRkcmVzcy5mcm9tX2Jhc2U1OChhZGRyZXNzKS5jb250ZW50X2J5dGVzKClcbiAgICAgICkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBDQVJEQU5PX0NIQUlOOlxuICAgICAgZW5jb2RlZCA9IEJ1ZmZlci5mcm9tKFxuICAgICAgICBjYXJkYW5vTGliLkFkZHJlc3MuZnJvbV9iZWNoMzIoYWRkcmVzcykudG9fYnl0ZXMoKVxuICAgICAgKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEJJVENPSU5fQ0hBSU46XG4gICAgICBlbmNvZGVkID0gQnVmZmVyLmZyb20oXG4gICAgICAgIGJpdGNvaW5MaWIuYWRkcmVzcy50b091dHB1dFNjcmlwdChhZGRyZXNzKVxuICAgICAgKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEJJTkFOQ0VfQ0hBSU46XG4gICAgY2FzZSBFVEhFUkVVTV9DSEFJTjpcbiAgICAgIGlmIChhZGRyZXNzLmxlbmd0aCAhPSA0MiB8fCBhZGRyZXNzLnN1YnN0cmluZygwLCAyKSAhPSAnMHgnKSB7XG4gICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEFkZHJlc3NFcnJvcihjaGFpbiwgYWRkcmVzcyk7XG4gICAgICB9XG4gICAgICBlbmNvZGVkID0gYWRkcmVzcy5zdWJzdHJpbmcoMik7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkQ2hhaW5FcnJvcihjaGFpbik7XG4gIH1cbiAgaWYgKGVuY29kZWQubGVuZ3RoID4gNjAgKiAyKVxuICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEFkZHJlc3NFcnJvcihjaGFpbiwgYWRkcmVzcyk7XG4gIHJldHVybiBlbmNvZGVkO1xufTtcbiJdfQ==
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './encoder';
|
|
2
2
|
export * from './decoder';
|
|
3
3
|
export * from './types';
|
|
4
|
-
|
|
4
|
+
export * from './validator';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VuY29kZXInO1xuZXhwb3J0ICogZnJvbSAnLi9kZWNvZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi92YWxpZGF0b3InO1xuIl19
|
package/dist/lib/const.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export declare const BITCOIN_CHAIN = "bitcoin";
|
|
|
2
2
|
export declare const CARDANO_CHAIN = "cardano";
|
|
3
3
|
export declare const ERGO_CHAIN = "ergo";
|
|
4
4
|
export declare const ETHEREUM_CHAIN = "ethereum";
|
|
5
|
+
export declare const BINANCE_CHAIN = "binance";
|
|
5
6
|
//# sourceMappingURL=const.d.ts.map
|
package/dist/lib/const.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../lib/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,UAAU,SAAS,CAAC;AACjC,eAAO,MAAM,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../lib/const.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,UAAU,SAAS,CAAC;AACjC,eAAO,MAAM,cAAc,aAAa,CAAC;AACzC,eAAO,MAAM,aAAa,YAAY,CAAC"}
|
package/dist/lib/const.js
CHANGED
|
@@ -2,4 +2,5 @@ export const BITCOIN_CHAIN = 'bitcoin';
|
|
|
2
2
|
export const CARDANO_CHAIN = 'cardano';
|
|
3
3
|
export const ERGO_CHAIN = 'ergo';
|
|
4
4
|
export const ETHEREUM_CHAIN = 'ethereum';
|
|
5
|
-
|
|
5
|
+
export const BINANCE_CHAIN = 'binance';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvY29uc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDO0FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUM7QUFDakMsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQztBQUN6QyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEJJVENPSU5fQ0hBSU4gPSAnYml0Y29pbic7XG5leHBvcnQgY29uc3QgQ0FSREFOT19DSEFJTiA9ICdjYXJkYW5vJztcbmV4cG9ydCBjb25zdCBFUkdPX0NIQUlOID0gJ2VyZ28nO1xuZXhwb3J0IGNvbnN0IEVUSEVSRVVNX0NIQUlOID0gJ2V0aGVyZXVtJztcbmV4cG9ydCBjb25zdCBCSU5BTkNFX0NIQUlOID0gJ2JpbmFuY2UnO1xuIl19
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../lib/decoder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../lib/decoder.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,eAAO,MAAM,aAAa,UACjB,MAAM,kBACG,MAAM,KACrB,MAyBF,CAAC"}
|
package/dist/lib/decoder.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BITCOIN_CHAIN, CARDANO_CHAIN, ERGO_CHAIN, ETHEREUM_CHAIN, } from './const';
|
|
1
|
+
import { BINANCE_CHAIN, BITCOIN_CHAIN, CARDANO_CHAIN, ERGO_CHAIN, ETHEREUM_CHAIN, } from './const';
|
|
2
2
|
import { UnsupportedAddressError, UnsupportedChainError } from './types';
|
|
3
3
|
import * as ergoLib from 'ergo-lib-wasm-nodejs';
|
|
4
4
|
import * as cardanoLib from '@emurgo/cardano-serialization-lib-nodejs';
|
|
@@ -19,6 +19,7 @@ export const decodeAddress = (chain, encodedAddress) => {
|
|
|
19
19
|
return cardanoLib.Address.from_bytes(Buffer.from(encodedAddress, 'hex')).to_bech32();
|
|
20
20
|
case BITCOIN_CHAIN:
|
|
21
21
|
return bitcoinLib.address.fromOutputScript(Buffer.from(encodedAddress, 'hex'));
|
|
22
|
+
case BINANCE_CHAIN:
|
|
22
23
|
case ETHEREUM_CHAIN:
|
|
23
24
|
if (encodedAddress.length != 40) {
|
|
24
25
|
throw new UnsupportedAddressError(chain, encodedAddress);
|
|
@@ -28,4 +29,4 @@ export const decodeAddress = (chain, encodedAddress) => {
|
|
|
28
29
|
throw new UnsupportedChainError(chain);
|
|
29
30
|
}
|
|
30
31
|
};
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9kZWNvZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGFBQWEsRUFDYixVQUFVLEVBQ1YsY0FBYyxHQUNmLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6RSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxVQUFVLE1BQU0sMENBQTBDLENBQUM7QUFDdkUsT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFFNUM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FDM0IsS0FBYSxFQUNiLGNBQXNCLEVBQ2QsRUFBRTtJQUNWLElBQUksY0FBYyxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsQ0FBQztRQUNoQyxNQUFNLElBQUksdUJBQXVCLENBQUMsS0FBSyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzNELFFBQVEsS0FBSyxFQUFFO1FBQ2IsS0FBSyxVQUFVO1lBQ2IsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FDcEMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQ25DLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0MsS0FBSyxhQUFhO1lBQ2hCLE9BQU8sVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQ2xDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUNuQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2hCLEtBQUssYUFBYTtZQUNoQixPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQ3hDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUNuQyxDQUFDO1FBQ0osS0FBSyxhQUFhLENBQUM7UUFDbkIsS0FBSyxjQUFjO1lBQ2pCLElBQUksY0FBYyxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUU7Z0JBQy9CLE1BQU0sSUFBSSx1QkFBdUIsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7YUFDMUQ7WUFDRCxPQUFPLElBQUksR0FBRyxjQUFjLENBQUM7UUFDL0I7WUFDRSxNQUFNLElBQUkscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7S0FDMUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCSU5BTkNFX0NIQUlOLFxuICBCSVRDT0lOX0NIQUlOLFxuICBDQVJEQU5PX0NIQUlOLFxuICBFUkdPX0NIQUlOLFxuICBFVEhFUkVVTV9DSEFJTixcbn0gZnJvbSAnLi9jb25zdCc7XG5pbXBvcnQgeyBVbnN1cHBvcnRlZEFkZHJlc3NFcnJvciwgVW5zdXBwb3J0ZWRDaGFpbkVycm9yIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgKiBhcyBlcmdvTGliIGZyb20gJ2VyZ28tbGliLXdhc20tbm9kZWpzJztcbmltcG9ydCAqIGFzIGNhcmRhbm9MaWIgZnJvbSAnQGVtdXJnby9jYXJkYW5vLXNlcmlhbGl6YXRpb24tbGliLW5vZGVqcyc7XG5pbXBvcnQgKiBhcyBiaXRjb2luTGliIGZyb20gJ2JpdGNvaW5qcy1saWInO1xuXG4vKipcbiAqIGRlY29kZXMgYWRkcmVzcyBvZiBhIGNoYWluXG4gKiAgdGhyb3dzIGVycm9yIGlmIGVuY29kZWQgYWRkcmVzcyBsZW5ndGggaXMgbW9yZSB0aGFuIDYwIGJ5dGVzXG4gKiBAcGFyYW0gY2hhaW5cbiAqIEBwYXJhbSBlbmNvZGVkQWRkcmVzc1xuICovXG5leHBvcnQgY29uc3QgZGVjb2RlQWRkcmVzcyA9IChcbiAgY2hhaW46IHN0cmluZyxcbiAgZW5jb2RlZEFkZHJlc3M6IHN0cmluZ1xuKTogc3RyaW5nID0+IHtcbiAgaWYgKGVuY29kZWRBZGRyZXNzLmxlbmd0aCA+IDYwICogMilcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRBZGRyZXNzRXJyb3IoY2hhaW4sIGVuY29kZWRBZGRyZXNzKTtcbiAgc3dpdGNoIChjaGFpbikge1xuICAgIGNhc2UgRVJHT19DSEFJTjpcbiAgICAgIHJldHVybiBlcmdvTGliLkFkZHJlc3MuZnJvbV9wdWJsaWNfa2V5KFxuICAgICAgICBCdWZmZXIuZnJvbShlbmNvZGVkQWRkcmVzcywgJ2hleCcpXG4gICAgICApLnRvX2Jhc2U1OChlcmdvTGliLk5ldHdvcmtQcmVmaXguTWFpbm5ldCk7XG4gICAgY2FzZSBDQVJEQU5PX0NIQUlOOlxuICAgICAgcmV0dXJuIGNhcmRhbm9MaWIuQWRkcmVzcy5mcm9tX2J5dGVzKFxuICAgICAgICBCdWZmZXIuZnJvbShlbmNvZGVkQWRkcmVzcywgJ2hleCcpXG4gICAgICApLnRvX2JlY2gzMigpO1xuICAgIGNhc2UgQklUQ09JTl9DSEFJTjpcbiAgICAgIHJldHVybiBiaXRjb2luTGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChcbiAgICAgICAgQnVmZmVyLmZyb20oZW5jb2RlZEFkZHJlc3MsICdoZXgnKVxuICAgICAgKTtcbiAgICBjYXNlIEJJTkFOQ0VfQ0hBSU46XG4gICAgY2FzZSBFVEhFUkVVTV9DSEFJTjpcbiAgICAgIGlmIChlbmNvZGVkQWRkcmVzcy5sZW5ndGggIT0gNDApIHtcbiAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkQWRkcmVzc0Vycm9yKGNoYWluLCBlbmNvZGVkQWRkcmVzcyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gJzB4JyArIGVuY29kZWRBZGRyZXNzO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRDaGFpbkVycm9yKGNoYWluKTtcbiAgfVxufTtcbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../lib/encoder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../lib/encoder.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,eAAO,MAAM,aAAa,UAAW,MAAM,WAAW,MAAM,KAAG,MA+B9D,CAAC"}
|
package/dist/lib/encoder.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BITCOIN_CHAIN, CARDANO_CHAIN, ERGO_CHAIN, ETHEREUM_CHAIN, } from './const';
|
|
1
|
+
import { BINANCE_CHAIN, BITCOIN_CHAIN, CARDANO_CHAIN, ERGO_CHAIN, ETHEREUM_CHAIN, } from './const';
|
|
2
2
|
import { UnsupportedAddressError, UnsupportedChainError } from './types';
|
|
3
3
|
import * as ergoLib from 'ergo-lib-wasm-nodejs';
|
|
4
4
|
import * as cardanoLib from '@emurgo/cardano-serialization-lib-nodejs';
|
|
@@ -21,6 +21,7 @@ export const encodeAddress = (chain, address) => {
|
|
|
21
21
|
case BITCOIN_CHAIN:
|
|
22
22
|
encoded = Buffer.from(bitcoinLib.address.toOutputScript(address)).toString('hex');
|
|
23
23
|
break;
|
|
24
|
+
case BINANCE_CHAIN:
|
|
24
25
|
case ETHEREUM_CHAIN:
|
|
25
26
|
if (address.length != 42 || address.substring(0, 2) != '0x') {
|
|
26
27
|
throw new UnsupportedAddressError(chain, address);
|
|
@@ -34,4 +35,4 @@ export const encodeAddress = (chain, address) => {
|
|
|
34
35
|
throw new UnsupportedAddressError(chain, address);
|
|
35
36
|
return encoded;
|
|
36
37
|
};
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jb2Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9lbmNvZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxhQUFhLEVBQ2IsYUFBYSxFQUNiLGFBQWEsRUFDYixVQUFVLEVBQ1YsY0FBYyxHQUNmLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6RSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxVQUFVLE1BQU0sMENBQTBDLENBQUM7QUFDdkUsT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFFNUM7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFhLEVBQUUsT0FBZSxFQUFVLEVBQUU7SUFDdEUsSUFBSSxPQUFlLENBQUM7SUFDcEIsUUFBUSxLQUFLLEVBQUU7UUFDYixLQUFLLFVBQVU7WUFDYixPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FDbkIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQ3JELENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xCLE1BQU07UUFDUixLQUFLLGFBQWE7WUFDaEIsT0FBTyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQ25CLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUNuRCxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNsQixNQUFNO1FBQ1IsS0FBSyxhQUFhO1lBQ2hCLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUNuQixVQUFVLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FDM0MsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEIsTUFBTTtRQUNSLEtBQUssYUFBYSxDQUFDO1FBQ25CLEtBQUssY0FBYztZQUNqQixJQUFJLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRTtnQkFDM0QsTUFBTSxJQUFJLHVCQUF1QixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQzthQUNuRDtZQUNELE9BQU8sR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9CLE1BQU07UUFDUjtZQUNFLE1BQU0sSUFBSSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUMxQztJQUNELElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxFQUFFLEdBQUcsQ0FBQztRQUN6QixNQUFNLElBQUksdUJBQXVCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEJJTkFOQ0VfQ0hBSU4sXG4gIEJJVENPSU5fQ0hBSU4sXG4gIENBUkRBTk9fQ0hBSU4sXG4gIEVSR09fQ0hBSU4sXG4gIEVUSEVSRVVNX0NIQUlOLFxufSBmcm9tICcuL2NvbnN0JztcbmltcG9ydCB7IFVuc3VwcG9ydGVkQWRkcmVzc0Vycm9yLCBVbnN1cHBvcnRlZENoYWluRXJyb3IgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCAqIGFzIGVyZ29MaWIgZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuaW1wb3J0ICogYXMgY2FyZGFub0xpYiBmcm9tICdAZW11cmdvL2NhcmRhbm8tc2VyaWFsaXphdGlvbi1saWItbm9kZWpzJztcbmltcG9ydCAqIGFzIGJpdGNvaW5MaWIgZnJvbSAnYml0Y29pbmpzLWxpYic7XG5cbi8qKlxuICogZW5jb2RlcyBhZGRyZXNzIG9mIGEgY2hhaW4gdG8gaGV4IHN0cmluZ1xuICogIHRocm93cyBlcnJvciBpZiBlbmNvZGVkIGFkZHJlc3MgbGVuZ3RoIGlzIG1vcmUgdGhhbiA2MCBieXRlc1xuICogQHBhcmFtIGNoYWluXG4gKiBAcGFyYW0gYWRkcmVzc1xuICovXG5leHBvcnQgY29uc3QgZW5jb2RlQWRkcmVzcyA9IChjaGFpbjogc3RyaW5nLCBhZGRyZXNzOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBsZXQgZW5jb2RlZDogc3RyaW5nO1xuICBzd2l0Y2ggKGNoYWluKSB7XG4gICAgY2FzZSBFUkdPX0NIQUlOOlxuICAgICAgZW5jb2RlZCA9IEJ1ZmZlci5mcm9tKFxuICAgICAgICBlcmdvTGliLkFkZHJlc3MuZnJvbV9iYXNlNTgoYWRkcmVzcykuY29udGVudF9ieXRlcygpXG4gICAgICApLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgQ0FSREFOT19DSEFJTjpcbiAgICAgIGVuY29kZWQgPSBCdWZmZXIuZnJvbShcbiAgICAgICAgY2FyZGFub0xpYi5BZGRyZXNzLmZyb21fYmVjaDMyKGFkZHJlc3MpLnRvX2J5dGVzKClcbiAgICAgICkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBCSVRDT0lOX0NIQUlOOlxuICAgICAgZW5jb2RlZCA9IEJ1ZmZlci5mcm9tKFxuICAgICAgICBiaXRjb2luTGliLmFkZHJlc3MudG9PdXRwdXRTY3JpcHQoYWRkcmVzcylcbiAgICAgICkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBCSU5BTkNFX0NIQUlOOlxuICAgIGNhc2UgRVRIRVJFVU1fQ0hBSU46XG4gICAgICBpZiAoYWRkcmVzcy5sZW5ndGggIT0gNDIgfHwgYWRkcmVzcy5zdWJzdHJpbmcoMCwgMikgIT0gJzB4Jykge1xuICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRBZGRyZXNzRXJyb3IoY2hhaW4sIGFkZHJlc3MpO1xuICAgICAgfVxuICAgICAgZW5jb2RlZCA9IGFkZHJlc3Muc3Vic3RyaW5nKDIpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZENoYWluRXJyb3IoY2hhaW4pO1xuICB9XG4gIGlmIChlbmNvZGVkLmxlbmd0aCA+IDYwICogMilcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRBZGRyZXNzRXJyb3IoY2hhaW4sIGFkZHJlc3MpO1xuICByZXR1cm4gZW5jb2RlZDtcbn07XG4iXX0=
|
package/dist/lib/index.d.ts
CHANGED
package/dist/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
package/dist/lib/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export * from './encoder';
|
|
2
2
|
export * from './decoder';
|
|
3
3
|
export * from './types';
|
|
4
|
-
|
|
4
|
+
export * from './validator';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxXQUFXLENBQUM7QUFDMUIsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VuY29kZXInO1xuZXhwb3J0ICogZnJvbSAnLi9kZWNvZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi92YWxpZGF0b3InO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../lib/validator.ts"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,eAAO,MAAM,eAAe,UAAW,MAAM,WAAW,MAAM,KAAG,OAoBhE,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { BITCOIN_CHAIN, CARDANO_CHAIN, ERGO_CHAIN, ETHEREUM_CHAIN, } from './const';
|
|
2
|
+
import { UnsupportedAddressError, UnsupportedChainError } from './types';
|
|
3
|
+
import * as ergoLib from 'ergo-lib-wasm-nodejs';
|
|
4
|
+
import * as cardanoLib from '@emurgo/cardano-serialization-lib-nodejs';
|
|
5
|
+
import * as bitcoinLib from 'bitcoinjs-lib';
|
|
6
|
+
import * as ethereumLib from 'ethers';
|
|
7
|
+
/**
|
|
8
|
+
* validates address of a chain
|
|
9
|
+
* @param chain
|
|
10
|
+
* @param address
|
|
11
|
+
*/
|
|
12
|
+
export const validateAddress = (chain, address) => {
|
|
13
|
+
switch (chain) {
|
|
14
|
+
case ERGO_CHAIN:
|
|
15
|
+
ergoLib.Address.from_base58(address);
|
|
16
|
+
return true;
|
|
17
|
+
case CARDANO_CHAIN:
|
|
18
|
+
cardanoLib.Address.from_bech32(address);
|
|
19
|
+
return true;
|
|
20
|
+
case BITCOIN_CHAIN:
|
|
21
|
+
bitcoinLib.address.fromBech32(address);
|
|
22
|
+
if (address.slice(0, 4) != 'bc1q')
|
|
23
|
+
throw new UnsupportedAddressError(chain, address);
|
|
24
|
+
return true;
|
|
25
|
+
case ETHEREUM_CHAIN:
|
|
26
|
+
if (address.toLowerCase() != address || !ethereumLib.isAddress(address))
|
|
27
|
+
throw new UnsupportedAddressError(chain, address);
|
|
28
|
+
return true;
|
|
29
|
+
default:
|
|
30
|
+
throw new UnsupportedChainError(chain);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsYUFBYSxFQUNiLGFBQWEsRUFDYixVQUFVLEVBQ1YsY0FBYyxHQUNmLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6RSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxVQUFVLE1BQU0sMENBQTBDLENBQUM7QUFDdkUsT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxLQUFLLFdBQVcsTUFBTSxRQUFRLENBQUM7QUFFdEM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQWEsRUFBRSxPQUFlLEVBQVcsRUFBRTtJQUN6RSxRQUFRLEtBQUssRUFBRTtRQUNiLEtBQUssVUFBVTtZQUNiLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsS0FBSyxhQUFhO1lBQ2hCLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsS0FBSyxhQUFhO1lBQ2hCLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksTUFBTTtnQkFDL0IsTUFBTSxJQUFJLHVCQUF1QixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNwRCxPQUFPLElBQUksQ0FBQztRQUNkLEtBQUssY0FBYztZQUNqQixJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsSUFBSSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztnQkFDckUsTUFBTSxJQUFJLHVCQUF1QixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNwRCxPQUFPLElBQUksQ0FBQztRQUNkO1lBQ0UsTUFBTSxJQUFJLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzFDO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQklUQ09JTl9DSEFJTixcbiAgQ0FSREFOT19DSEFJTixcbiAgRVJHT19DSEFJTixcbiAgRVRIRVJFVU1fQ0hBSU4sXG59IGZyb20gJy4vY29uc3QnO1xuaW1wb3J0IHsgVW5zdXBwb3J0ZWRBZGRyZXNzRXJyb3IsIFVuc3VwcG9ydGVkQ2hhaW5FcnJvciB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0ICogYXMgZXJnb0xpYiBmcm9tICdlcmdvLWxpYi13YXNtLW5vZGVqcyc7XG5pbXBvcnQgKiBhcyBjYXJkYW5vTGliIGZyb20gJ0BlbXVyZ28vY2FyZGFuby1zZXJpYWxpemF0aW9uLWxpYi1ub2RlanMnO1xuaW1wb3J0ICogYXMgYml0Y29pbkxpYiBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCAqIGFzIGV0aGVyZXVtTGliIGZyb20gJ2V0aGVycyc7XG5cbi8qKlxuICogdmFsaWRhdGVzIGFkZHJlc3Mgb2YgYSBjaGFpblxuICogQHBhcmFtIGNoYWluXG4gKiBAcGFyYW0gYWRkcmVzc1xuICovXG5leHBvcnQgY29uc3QgdmFsaWRhdGVBZGRyZXNzID0gKGNoYWluOiBzdHJpbmcsIGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICBzd2l0Y2ggKGNoYWluKSB7XG4gICAgY2FzZSBFUkdPX0NIQUlOOlxuICAgICAgZXJnb0xpYi5BZGRyZXNzLmZyb21fYmFzZTU4KGFkZHJlc3MpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgY2FzZSBDQVJEQU5PX0NIQUlOOlxuICAgICAgY2FyZGFub0xpYi5BZGRyZXNzLmZyb21fYmVjaDMyKGFkZHJlc3MpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgY2FzZSBCSVRDT0lOX0NIQUlOOlxuICAgICAgYml0Y29pbkxpYi5hZGRyZXNzLmZyb21CZWNoMzIoYWRkcmVzcyk7XG4gICAgICBpZiAoYWRkcmVzcy5zbGljZSgwLCA0KSAhPSAnYmMxcScpXG4gICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEFkZHJlc3NFcnJvcihjaGFpbiwgYWRkcmVzcyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBjYXNlIEVUSEVSRVVNX0NIQUlOOlxuICAgICAgaWYgKGFkZHJlc3MudG9Mb3dlckNhc2UoKSAhPSBhZGRyZXNzIHx8ICFldGhlcmV1bUxpYi5pc0FkZHJlc3MoYWRkcmVzcykpXG4gICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEFkZHJlc3NFcnJvcihjaGFpbiwgYWRkcmVzcyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkQ2hhaW5FcnJvcihjaGFpbik7XG4gIH1cbn07XG4iXX0=
|
package/dist/tests/testData.d.ts
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
export declare const ergoAddress = "9iMjQx8PzwBKXRvsFUJFJAPoy31znfEeBUGz8DRkcnJX4rJYjVd";
|
|
2
2
|
export declare const encodedErgoAddress = "03f999da8e6e42660e4464d17d29e63bc006734a6710a24eb489b466323d3a9339";
|
|
3
|
+
export declare const invalidErgoAddress = "9iMjQx8PzwBKXRvsFUJFJAPoy31znfEeBUGz8DRkcnJX4rJYjVD";
|
|
3
4
|
export declare const cardanoAddress = "addr1qxxa3kfnnh40yqtepa5frt0tkw4a0rys7v33422lzt8glx43sqtd4vkhjzawajej8aujh27p5a54zx62xf3wvuplynqs3fsqet";
|
|
4
5
|
export declare const encodedCardanoAddress = "018dd8d9339deaf201790f6891adebb3abd78c90f3231aa95f12ce8f9ab18016dab2d790baeecb323f792babc1a769511b4a3262e6703f24c1";
|
|
6
|
+
export declare const invalidCardanoAddress = "addr1qxxa3kfnnh40yqtepa5frt0tkw4a0rys7v33422lzt8glx43sqtd4vkhjzawajej8aujh27p5a54zx62xf3wvuplynqs3fsqee";
|
|
5
7
|
export declare const bitcoinAddress = "bc1qkgp89fjerymm5ltg0hygnumr0m2qa7n22gyw6h";
|
|
8
|
+
export declare const invalidBitcoinAddress = "bc1qkgp89fjerymm5ltg0hygnumr0m2qa7n22gyw6";
|
|
9
|
+
export declare const tapRootBitcoinAddress = "bc1pxhtmm7mjrafdkw46wc7lmjn3gyrmdm4q0dnmw8j225gxtwtq7mwqd7e24v";
|
|
6
10
|
export declare const encodedBitcoinAddress = "0014b20272a6591937ba7d687dc889f3637ed40efa6a";
|
|
7
11
|
export declare const longErgoAddress = "nB3L2PD3LBtiNhDYK7XhZ8nVt6uekBXN7RcPUKgdKLXFcrJiSPxmQsUKuUkTRQ1hbvDrxEQAKYurGFbaGD1RPxU7XqQimD78j23HHMQKL1boUGsnNhCxaVNAYMcFbQNo355Af8cWkhAN6";
|
|
8
12
|
export declare const longEncodedAddress = "100304000e20a6ac381e6fa99929fd1477b3ba9499790a775e91d4c14c5aa86e9a118dfac8530400d801d601b2db6501fe730000ea02d1aedb63087201d901024d0e938c720201730198b2e4c672010510730200ade4c67201041ad901020ecdee7202";
|
|
9
13
|
export declare const ethereumAddress = "0xb416c8a6d7ec94706a9ae2c26c11d320519482b1";
|
|
10
14
|
export declare const encodedEthereumAddress = "b416c8a6d7ec94706a9ae2c26c11d320519482b1";
|
|
11
15
|
export declare const invalidEthereumAddressLength = "0xb416c8a7ec94706a9ae2c26c11d320519482b1";
|
|
16
|
+
export declare const invalidEthereumIcapAddress = "XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36";
|
|
17
|
+
export declare const invalidEthereumChecksumAddress = "0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97";
|
|
12
18
|
//# sourceMappingURL=testData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testData.d.ts","sourceRoot":"","sources":["../../tests/testData.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,wDAC+B,CAAC;AACxD,eAAO,MAAM,kBAAkB,uEACuC,CAAC;
|
|
1
|
+
{"version":3,"file":"testData.d.ts","sourceRoot":"","sources":["../../tests/testData.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,wDAC+B,CAAC;AACxD,eAAO,MAAM,kBAAkB,uEACuC,CAAC;AACvE,eAAO,MAAM,kBAAkB,wDACwB,CAAC;AAExD,eAAO,MAAM,cAAc,4GACgF,CAAC;AAC5G,eAAO,MAAM,qBAAqB,uHACoF,CAAC;AACvH,eAAO,MAAM,qBAAqB,4GACyE,CAAC;AAE5G,eAAO,MAAM,cAAc,+CAA+C,CAAC;AAC3E,eAAO,MAAM,qBAAqB,8CACW,CAAC;AAC9C,eAAO,MAAM,qBAAqB,mEACgC,CAAC;AACnE,eAAO,MAAM,qBAAqB,iDACc,CAAC;AAEjD,eAAO,MAAM,eAAe,kJACqH,CAAC;AAClJ,eAAO,MAAM,kBAAkB,2MAC2K,CAAC;AAE3M,eAAO,MAAM,eAAe,+CAA+C,CAAC;AAC5E,eAAO,MAAM,sBAAsB,6CACS,CAAC;AAE7C,eAAO,MAAM,4BAA4B,6CACG,CAAC;AAC7C,eAAO,MAAM,0BAA0B,wCAAwC,CAAC;AAChF,eAAO,MAAM,8BAA8B,+CACG,CAAC"}
|
package/dist/tests/testData.js
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
export const ergoAddress = '9iMjQx8PzwBKXRvsFUJFJAPoy31znfEeBUGz8DRkcnJX4rJYjVd';
|
|
2
2
|
export const encodedErgoAddress = '03f999da8e6e42660e4464d17d29e63bc006734a6710a24eb489b466323d3a9339';
|
|
3
|
+
export const invalidErgoAddress = '9iMjQx8PzwBKXRvsFUJFJAPoy31znfEeBUGz8DRkcnJX4rJYjVD';
|
|
3
4
|
export const cardanoAddress = 'addr1qxxa3kfnnh40yqtepa5frt0tkw4a0rys7v33422lzt8glx43sqtd4vkhjzawajej8aujh27p5a54zx62xf3wvuplynqs3fsqet';
|
|
4
5
|
export const encodedCardanoAddress = '018dd8d9339deaf201790f6891adebb3abd78c90f3231aa95f12ce8f9ab18016dab2d790baeecb323f792babc1a769511b4a3262e6703f24c1';
|
|
6
|
+
export const invalidCardanoAddress = 'addr1qxxa3kfnnh40yqtepa5frt0tkw4a0rys7v33422lzt8glx43sqtd4vkhjzawajej8aujh27p5a54zx62xf3wvuplynqs3fsqee';
|
|
5
7
|
export const bitcoinAddress = 'bc1qkgp89fjerymm5ltg0hygnumr0m2qa7n22gyw6h';
|
|
8
|
+
export const invalidBitcoinAddress = 'bc1qkgp89fjerymm5ltg0hygnumr0m2qa7n22gyw6';
|
|
9
|
+
export const tapRootBitcoinAddress = 'bc1pxhtmm7mjrafdkw46wc7lmjn3gyrmdm4q0dnmw8j225gxtwtq7mwqd7e24v';
|
|
6
10
|
export const encodedBitcoinAddress = '0014b20272a6591937ba7d687dc889f3637ed40efa6a';
|
|
7
11
|
export const longErgoAddress = 'nB3L2PD3LBtiNhDYK7XhZ8nVt6uekBXN7RcPUKgdKLXFcrJiSPxmQsUKuUkTRQ1hbvDrxEQAKYurGFbaGD1RPxU7XqQimD78j23HHMQKL1boUGsnNhCxaVNAYMcFbQNo355Af8cWkhAN6';
|
|
8
12
|
export const longEncodedAddress = '100304000e20a6ac381e6fa99929fd1477b3ba9499790a775e91d4c14c5aa86e9a118dfac8530400d801d601b2db6501fe730000ea02d1aedb63087201d901024d0e938c720201730198b2e4c672010510730200ade4c67201041ad901020ecdee7202';
|
|
9
13
|
export const ethereumAddress = '0xb416c8a6d7ec94706a9ae2c26c11d320519482b1';
|
|
10
14
|
export const encodedEthereumAddress = 'b416c8a6d7ec94706a9ae2c26c11d320519482b1';
|
|
11
15
|
export const invalidEthereumAddressLength = '0xb416c8a7ec94706a9ae2c26c11d320519482b1';
|
|
12
|
-
|
|
16
|
+
export const invalidEthereumIcapAddress = 'XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36';
|
|
17
|
+
export const invalidEthereumChecksumAddress = '0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97';
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdERhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0cy90ZXN0RGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQ3RCLHFEQUFxRCxDQUFDO0FBQ3hELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUM3QixvRUFBb0UsQ0FBQztBQUN2RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FDN0IscURBQXFELENBQUM7QUFFeEQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUN6Qix5R0FBeUcsQ0FBQztBQUM1RyxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FDaEMsb0hBQW9ILENBQUM7QUFDdkgsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQ2hDLHlHQUF5RyxDQUFDO0FBRTVHLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyw0Q0FBNEMsQ0FBQztBQUMzRSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FDaEMsMkNBQTJDLENBQUM7QUFDOUMsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQ2hDLGdFQUFnRSxDQUFDO0FBQ25FLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUNoQyw4Q0FBOEMsQ0FBQztBQUVqRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQzFCLCtJQUErSSxDQUFDO0FBQ2xKLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUM3Qix3TUFBd00sQ0FBQztBQUUzTSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsNENBQTRDLENBQUM7QUFDNUUsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQ2pDLDBDQUEwQyxDQUFDO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLDRCQUE0QixHQUN2QywwQ0FBMEMsQ0FBQztBQUM3QyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxxQ0FBcUMsQ0FBQztBQUNoRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FDekMsNENBQTRDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZXJnb0FkZHJlc3MgPVxuICAnOWlNalF4OFB6d0JLWFJ2c0ZVSkZKQVBveTMxem5mRWVCVUd6OERSa2NuSlg0ckpZalZkJztcbmV4cG9ydCBjb25zdCBlbmNvZGVkRXJnb0FkZHJlc3MgPVxuICAnMDNmOTk5ZGE4ZTZlNDI2NjBlNDQ2NGQxN2QyOWU2M2JjMDA2NzM0YTY3MTBhMjRlYjQ4OWI0NjYzMjNkM2E5MzM5JztcbmV4cG9ydCBjb25zdCBpbnZhbGlkRXJnb0FkZHJlc3MgPVxuICAnOWlNalF4OFB6d0JLWFJ2c0ZVSkZKQVBveTMxem5mRWVCVUd6OERSa2NuSlg0ckpZalZEJztcblxuZXhwb3J0IGNvbnN0IGNhcmRhbm9BZGRyZXNzID1cbiAgJ2FkZHIxcXh4YTNrZm5uaDQweXF0ZXBhNWZydDB0a3c0YTByeXM3djMzNDIybHp0OGdseDQzc3F0ZDR2a2hqemF3YWplajhhdWpoMjdwNWE1NHp4NjJ4ZjN3dnVwbHlucXMzZnNxZXQnO1xuZXhwb3J0IGNvbnN0IGVuY29kZWRDYXJkYW5vQWRkcmVzcyA9XG4gICcwMThkZDhkOTMzOWRlYWYyMDE3OTBmNjg5MWFkZWJiM2FiZDc4YzkwZjMyMzFhYTk1ZjEyY2U4ZjlhYjE4MDE2ZGFiMmQ3OTBiYWVlY2IzMjNmNzkyYmFiYzFhNzY5NTExYjRhMzI2MmU2NzAzZjI0YzEnO1xuZXhwb3J0IGNvbnN0IGludmFsaWRDYXJkYW5vQWRkcmVzcyA9XG4gICdhZGRyMXF4eGEza2Zubmg0MHlxdGVwYTVmcnQwdGt3NGEwcnlzN3YzMzQyMmx6dDhnbHg0M3NxdGQ0dmtoanphd2FqZWo4YXVqaDI3cDVhNTR6eDYyeGYzd3Z1cGx5bnFzM2ZzcWVlJztcblxuZXhwb3J0IGNvbnN0IGJpdGNvaW5BZGRyZXNzID0gJ2JjMXFrZ3A4OWZqZXJ5bW01bHRnMGh5Z251bXIwbTJxYTduMjJneXc2aCc7XG5leHBvcnQgY29uc3QgaW52YWxpZEJpdGNvaW5BZGRyZXNzID1cbiAgJ2JjMXFrZ3A4OWZqZXJ5bW01bHRnMGh5Z251bXIwbTJxYTduMjJneXc2JztcbmV4cG9ydCBjb25zdCB0YXBSb290Qml0Y29pbkFkZHJlc3MgPVxuICAnYmMxcHhodG1tN21qcmFmZGt3NDZ3YzdsbWpuM2d5cm1kbTRxMGRubXc4ajIyNWd4dHd0cTdtd3FkN2UyNHYnO1xuZXhwb3J0IGNvbnN0IGVuY29kZWRCaXRjb2luQWRkcmVzcyA9XG4gICcwMDE0YjIwMjcyYTY1OTE5MzdiYTdkNjg3ZGM4ODlmMzYzN2VkNDBlZmE2YSc7XG5cbmV4cG9ydCBjb25zdCBsb25nRXJnb0FkZHJlc3MgPVxuICAnbkIzTDJQRDNMQnRpTmhEWUs3WGhaOG5WdDZ1ZWtCWE43UmNQVUtnZEtMWEZjckppU1B4bVFzVUt1VWtUUlExaGJ2RHJ4RVFBS1l1ckdGYmFHRDFSUHhVN1hxUWltRDc4ajIzSEhNUUtMMWJvVUdzbk5oQ3hhVk5BWU1jRmJRTm8zNTVBZjhjV2toQU42JztcbmV4cG9ydCBjb25zdCBsb25nRW5jb2RlZEFkZHJlc3MgPVxuICAnMTAwMzA0MDAwZTIwYTZhYzM4MWU2ZmE5OTkyOWZkMTQ3N2IzYmE5NDk5NzkwYTc3NWU5MWQ0YzE0YzVhYTg2ZTlhMTE4ZGZhYzg1MzA0MDBkODAxZDYwMWIyZGI2NTAxZmU3MzAwMDBlYTAyZDFhZWRiNjMwODcyMDFkOTAxMDI0ZDBlOTM4YzcyMDIwMTczMDE5OGIyZTRjNjcyMDEwNTEwNzMwMjAwYWRlNGM2NzIwMTA0MWFkOTAxMDIwZWNkZWU3MjAyJztcblxuZXhwb3J0IGNvbnN0IGV0aGVyZXVtQWRkcmVzcyA9ICcweGI0MTZjOGE2ZDdlYzk0NzA2YTlhZTJjMjZjMTFkMzIwNTE5NDgyYjEnO1xuZXhwb3J0IGNvbnN0IGVuY29kZWRFdGhlcmV1bUFkZHJlc3MgPVxuICAnYjQxNmM4YTZkN2VjOTQ3MDZhOWFlMmMyNmMxMWQzMjA1MTk0ODJiMSc7XG5cbmV4cG9ydCBjb25zdCBpbnZhbGlkRXRoZXJldW1BZGRyZXNzTGVuZ3RoID1cbiAgJzB4YjQxNmM4YTdlYzk0NzA2YTlhZTJjMjZjMTFkMzIwNTE5NDgyYjEnO1xuZXhwb3J0IGNvbnN0IGludmFsaWRFdGhlcmV1bUljYXBBZGRyZXNzID0gJ1hFNjVHQjZMRE5YWU9GVFgwTlNWM0ZVV0tPV0lYQU1KSzM2JztcbmV4cG9ydCBjb25zdCBpbnZhbGlkRXRoZXJldW1DaGVja3N1bUFkZHJlc3MgPVxuICAnMHg0ODM4QjEwNkZDZTk2NDdCZGYxRTc4NzdCRjczY0U4QjBCQUQ1Zjk3JztcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.spec.d.ts","sourceRoot":"","sources":["../../tests/validator.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import * as testData from './testData';
|
|
2
|
+
import { UnsupportedAddressError, UnsupportedChainError, validateAddress, } from '../lib';
|
|
3
|
+
import { BITCOIN_CHAIN, CARDANO_CHAIN, ERGO_CHAIN, ETHEREUM_CHAIN, } from '../lib/const';
|
|
4
|
+
describe('validateAddress', () => {
|
|
5
|
+
/**
|
|
6
|
+
* @target `validateAddress` should validate Ergo address successfully
|
|
7
|
+
* @dependencies
|
|
8
|
+
* @scenario
|
|
9
|
+
* - run test
|
|
10
|
+
* @expected
|
|
11
|
+
* - to validate correct Ergo address
|
|
12
|
+
*/
|
|
13
|
+
it('should validate Ergo address successfully', () => {
|
|
14
|
+
const res = validateAddress(ERGO_CHAIN, testData.ergoAddress);
|
|
15
|
+
expect(res).toEqual(true);
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* @target `validateAddress` should throw error for wrong Ergo address
|
|
19
|
+
* @dependencies
|
|
20
|
+
* @scenario
|
|
21
|
+
* - run test
|
|
22
|
+
* @expected
|
|
23
|
+
* - to throw error for wrong Ergo address
|
|
24
|
+
*/
|
|
25
|
+
it('should throw error for wrong Ergo address', () => {
|
|
26
|
+
expect(() => {
|
|
27
|
+
validateAddress(ERGO_CHAIN, testData.invalidErgoAddress);
|
|
28
|
+
}).toThrow();
|
|
29
|
+
});
|
|
30
|
+
/**
|
|
31
|
+
* @target `validateAddress` should validate Cardano address successfully
|
|
32
|
+
* @dependencies
|
|
33
|
+
* @scenario
|
|
34
|
+
* - run test
|
|
35
|
+
* @expected
|
|
36
|
+
* - to validate correct Cardano address
|
|
37
|
+
*/
|
|
38
|
+
it('should validate Cardano address successfully', () => {
|
|
39
|
+
const res = validateAddress(CARDANO_CHAIN, testData.cardanoAddress);
|
|
40
|
+
expect(res).toEqual(true);
|
|
41
|
+
});
|
|
42
|
+
/**
|
|
43
|
+
* @target `validateAddress` should throw error for wrong Cardano address
|
|
44
|
+
* @dependencies
|
|
45
|
+
* @scenario
|
|
46
|
+
* - run test
|
|
47
|
+
* @expected
|
|
48
|
+
* - to throw error for wrong Cardano address
|
|
49
|
+
*/
|
|
50
|
+
it('should throw error for wrong Cardano address', () => {
|
|
51
|
+
expect(() => {
|
|
52
|
+
validateAddress(CARDANO_CHAIN, testData.invalidCardanoAddress);
|
|
53
|
+
}).toThrow();
|
|
54
|
+
});
|
|
55
|
+
/**
|
|
56
|
+
* @target `validateAddress` should validate Bitcoin address successfully
|
|
57
|
+
* @dependencies
|
|
58
|
+
* @scenario
|
|
59
|
+
* - run test
|
|
60
|
+
* @expected
|
|
61
|
+
* - to validate correct Bitcoin address
|
|
62
|
+
*/
|
|
63
|
+
it('should validate Bitcoin address successfully', () => {
|
|
64
|
+
const res = validateAddress(BITCOIN_CHAIN, testData.bitcoinAddress);
|
|
65
|
+
expect(res).toEqual(true);
|
|
66
|
+
});
|
|
67
|
+
/**
|
|
68
|
+
* @target `validateAddress` should throw error for Bitcoin taproot address
|
|
69
|
+
* @dependencies
|
|
70
|
+
* @scenario
|
|
71
|
+
* - run test
|
|
72
|
+
* @expected
|
|
73
|
+
* - to throw error for Bitcoin taproot address
|
|
74
|
+
*/
|
|
75
|
+
it('should throw error for Bitcoin taproot address', () => {
|
|
76
|
+
expect(() => {
|
|
77
|
+
validateAddress(BITCOIN_CHAIN, testData.tapRootBitcoinAddress);
|
|
78
|
+
}).toThrow(UnsupportedAddressError);
|
|
79
|
+
});
|
|
80
|
+
/**
|
|
81
|
+
* @target `validateAddress` should throw error for wrong Bitcoin address
|
|
82
|
+
* @dependencies
|
|
83
|
+
* @scenario
|
|
84
|
+
* - run test
|
|
85
|
+
* @expected
|
|
86
|
+
* - to throw error for wrong Bitcoin address
|
|
87
|
+
*/
|
|
88
|
+
it('should throw error for wrong Bitcoin address', () => {
|
|
89
|
+
expect(() => {
|
|
90
|
+
validateAddress(BITCOIN_CHAIN, testData.invalidBitcoinAddress);
|
|
91
|
+
}).toThrowError();
|
|
92
|
+
});
|
|
93
|
+
/**
|
|
94
|
+
* @target `validateAddress` should validate Ethereum address successfully
|
|
95
|
+
* @dependencies
|
|
96
|
+
* @scenario
|
|
97
|
+
* - run test
|
|
98
|
+
* @expected
|
|
99
|
+
* - to validate correct Ethereum address
|
|
100
|
+
*/
|
|
101
|
+
it('should validate Ethereum address successfully', () => {
|
|
102
|
+
const res = validateAddress(ETHEREUM_CHAIN, testData.ethereumAddress);
|
|
103
|
+
expect(res).toEqual(true);
|
|
104
|
+
});
|
|
105
|
+
/**
|
|
106
|
+
* @target `validateAddress` should throw error for ICAP Ethereum address
|
|
107
|
+
* @dependencies
|
|
108
|
+
* @scenario
|
|
109
|
+
* - run test
|
|
110
|
+
* @expected
|
|
111
|
+
* - to throw error for ICAP Ethereum address
|
|
112
|
+
*/
|
|
113
|
+
it('should throw error for ICAP Ethereum address', () => {
|
|
114
|
+
expect(() => {
|
|
115
|
+
validateAddress(ETHEREUM_CHAIN, testData.invalidEthereumIcapAddress);
|
|
116
|
+
}).toThrow(UnsupportedAddressError);
|
|
117
|
+
});
|
|
118
|
+
/**
|
|
119
|
+
* @target `validateAddress` should throw error for Ethereum address with checksum
|
|
120
|
+
* @dependencies
|
|
121
|
+
* @scenario
|
|
122
|
+
* - run test
|
|
123
|
+
* @expected
|
|
124
|
+
* - to throw error for Ethereum address with checksum
|
|
125
|
+
*/
|
|
126
|
+
it('should throw error for Ethereum address with checksum', () => {
|
|
127
|
+
expect(() => {
|
|
128
|
+
validateAddress(ETHEREUM_CHAIN, testData.invalidEthereumChecksumAddress);
|
|
129
|
+
}).toThrow(UnsupportedAddressError);
|
|
130
|
+
});
|
|
131
|
+
/**
|
|
132
|
+
* @target `validateAddress` should throw error for wrong Ethereum address
|
|
133
|
+
* @dependencies
|
|
134
|
+
* @scenario
|
|
135
|
+
* - run test
|
|
136
|
+
* @expected
|
|
137
|
+
* - to throw error for wrong Ethereum address
|
|
138
|
+
*/
|
|
139
|
+
it('should throw error for wrong Ethereum address', () => {
|
|
140
|
+
expect(() => {
|
|
141
|
+
validateAddress(ETHEREUM_CHAIN, testData.invalidEthereumAddressLength);
|
|
142
|
+
}).toThrow(UnsupportedAddressError);
|
|
143
|
+
});
|
|
144
|
+
/**
|
|
145
|
+
* @target `validateAddress` should throw error when chain is not supported
|
|
146
|
+
* @dependencies
|
|
147
|
+
* @scenario
|
|
148
|
+
* - run test
|
|
149
|
+
* @expected
|
|
150
|
+
* - it should throw UnsupportedChain error
|
|
151
|
+
*/
|
|
152
|
+
it('should throw error when chain is not supported', () => {
|
|
153
|
+
expect(() => {
|
|
154
|
+
validateAddress('unsupported-chain', '0011223344');
|
|
155
|
+
}).toThrow(UnsupportedChainError);
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90ZXN0cy92YWxpZGF0b3Iuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssUUFBUSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixlQUFlLEdBQ2hCLE1BQU0sUUFBUSxDQUFDO0FBQ2hCLE9BQU8sRUFDTCxhQUFhLEVBQ2IsYUFBYSxFQUNiLFVBQVUsRUFDVixjQUFjLEdBQ2YsTUFBTSxjQUFjLENBQUM7QUFFdEIsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEdBQUcsRUFBRTtJQUMvQjs7Ozs7OztPQU9HO0lBQ0gsRUFBRSxDQUFDLDJDQUEyQyxFQUFFLEdBQUcsRUFBRTtRQUNuRCxNQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM5RCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0lBRUg7Ozs7Ozs7T0FPRztJQUNILEVBQUUsQ0FBQywyQ0FBMkMsRUFBRSxHQUFHLEVBQUU7UUFDbkQsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLGVBQWUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztJQUVIOzs7Ozs7O09BT0c7SUFDSCxFQUFFLENBQUMsOENBQThDLEVBQUUsR0FBRyxFQUFFO1FBQ3RELE1BQU0sR0FBRyxHQUFHLGVBQWUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7SUFFSDs7Ozs7OztPQU9HO0lBQ0gsRUFBRSxDQUFDLDhDQUE4QyxFQUFFLEdBQUcsRUFBRTtRQUN0RCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsZUFBZSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNqRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0lBRUg7Ozs7Ozs7T0FPRztJQUNILEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7UUFDdEQsTUFBTSxHQUFHLEdBQUcsZUFBZSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDcEUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1QixDQUFDLENBQUMsQ0FBQztJQUVIOzs7Ozs7O09BT0c7SUFDSCxFQUFFLENBQUMsZ0RBQWdELEVBQUUsR0FBRyxFQUFFO1FBQ3hELE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixlQUFlLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2pFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBRUg7Ozs7Ozs7T0FPRztJQUNILEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7UUFDdEQsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLGVBQWUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEIsQ0FBQyxDQUFDLENBQUM7SUFFSDs7Ozs7OztPQU9HO0lBQ0gsRUFBRSxDQUFDLCtDQUErQyxFQUFFLEdBQUcsRUFBRTtRQUN2RCxNQUFNLEdBQUcsR0FBRyxlQUFlLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN0RSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUMsQ0FBQyxDQUFDO0lBRUg7Ozs7Ozs7T0FPRztJQUNILEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRSxHQUFHLEVBQUU7UUFDdEQsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLGVBQWUsQ0FBQyxjQUFjLEVBQUUsUUFBUSxDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDdkUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDdEMsQ0FBQyxDQUFDLENBQUM7SUFFSDs7Ozs7OztPQU9HO0lBQ0gsRUFBRSxDQUFDLHVEQUF1RCxFQUFFLEdBQUcsRUFBRTtRQUMvRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsZUFBZSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUMzRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN0QyxDQUFDLENBQUMsQ0FBQztJQUVIOzs7Ozs7O09BT0c7SUFDSCxFQUFFLENBQUMsK0NBQStDLEVBQUUsR0FBRyxFQUFFO1FBQ3ZELE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixlQUFlLENBQUMsY0FBYyxFQUFFLFFBQVEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1FBQ3pFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBRUg7Ozs7Ozs7T0FPRztJQUNILEVBQUUsQ0FBQyxnREFBZ0QsRUFBRSxHQUFHLEVBQUU7UUFDeEQsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLGVBQWUsQ0FBQyxtQkFBbUIsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdGVzdERhdGEgZnJvbSAnLi90ZXN0RGF0YSc7XG5pbXBvcnQge1xuICBVbnN1cHBvcnRlZEFkZHJlc3NFcnJvcixcbiAgVW5zdXBwb3J0ZWRDaGFpbkVycm9yLFxuICB2YWxpZGF0ZUFkZHJlc3MsXG59IGZyb20gJy4uL2xpYic7XG5pbXBvcnQge1xuICBCSVRDT0lOX0NIQUlOLFxuICBDQVJEQU5PX0NIQUlOLFxuICBFUkdPX0NIQUlOLFxuICBFVEhFUkVVTV9DSEFJTixcbn0gZnJvbSAnLi4vbGliL2NvbnN0JztcblxuZGVzY3JpYmUoJ3ZhbGlkYXRlQWRkcmVzcycsICgpID0+IHtcbiAgLyoqXG4gICAqIEB0YXJnZXQgYHZhbGlkYXRlQWRkcmVzc2Agc2hvdWxkIHZhbGlkYXRlIEVyZ28gYWRkcmVzcyBzdWNjZXNzZnVsbHlcbiAgICogQGRlcGVuZGVuY2llc1xuICAgKiBAc2NlbmFyaW9cbiAgICogLSBydW4gdGVzdFxuICAgKiBAZXhwZWN0ZWRcbiAgICogLSB0byB2YWxpZGF0ZSBjb3JyZWN0IEVyZ28gYWRkcmVzc1xuICAgKi9cbiAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBFcmdvIGFkZHJlc3Mgc3VjY2Vzc2Z1bGx5JywgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IHZhbGlkYXRlQWRkcmVzcyhFUkdPX0NIQUlOLCB0ZXN0RGF0YS5lcmdvQWRkcmVzcyk7XG4gICAgZXhwZWN0KHJlcykudG9FcXVhbCh0cnVlKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEB0YXJnZXQgYHZhbGlkYXRlQWRkcmVzc2Agc2hvdWxkIHRocm93IGVycm9yIGZvciB3cm9uZyBFcmdvIGFkZHJlc3NcbiAgICogQGRlcGVuZGVuY2llc1xuICAgKiBAc2NlbmFyaW9cbiAgICogLSBydW4gdGVzdFxuICAgKiBAZXhwZWN0ZWRcbiAgICogLSB0byB0aHJvdyBlcnJvciBmb3Igd3JvbmcgRXJnbyBhZGRyZXNzXG4gICAqL1xuICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciB3cm9uZyBFcmdvIGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIHZhbGlkYXRlQWRkcmVzcyhFUkdPX0NIQUlOLCB0ZXN0RGF0YS5pbnZhbGlkRXJnb0FkZHJlc3MpO1xuICAgIH0pLnRvVGhyb3coKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEB0YXJnZXQgYHZhbGlkYXRlQWRkcmVzc2Agc2hvdWxkIHZhbGlkYXRlIENhcmRhbm8gYWRkcmVzcyBzdWNjZXNzZnVsbHlcbiAgICogQGRlcGVuZGVuY2llc1xuICAgKiBAc2NlbmFyaW9cbiAgICogLSBydW4gdGVzdFxuICAgKiBAZXhwZWN0ZWRcbiAgICogLSB0byB2YWxpZGF0ZSBjb3JyZWN0IENhcmRhbm8gYWRkcmVzc1xuICAgKi9cbiAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBDYXJkYW5vIGFkZHJlc3Mgc3VjY2Vzc2Z1bGx5JywgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IHZhbGlkYXRlQWRkcmVzcyhDQVJEQU5PX0NIQUlOLCB0ZXN0RGF0YS5jYXJkYW5vQWRkcmVzcyk7XG4gICAgZXhwZWN0KHJlcykudG9FcXVhbCh0cnVlKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEB0YXJnZXQgYHZhbGlkYXRlQWRkcmVzc2Agc2hvdWxkIHRocm93IGVycm9yIGZvciB3cm9uZyBDYXJkYW5vIGFkZHJlc3NcbiAgICogQGRlcGVuZGVuY2llc1xuICAgKiBAc2NlbmFyaW9cbiAgICogLSBydW4gdGVzdFxuICAgKiBAZXhwZWN0ZWRcbiAgICogLSB0byB0aHJvdyBlcnJvciBmb3Igd3JvbmcgQ2FyZGFubyBhZGRyZXNzXG4gICAqL1xuICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciB3cm9uZyBDYXJkYW5vIGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIHZhbGlkYXRlQWRkcmVzcyhDQVJEQU5PX0NIQUlOLCB0ZXN0RGF0YS5pbnZhbGlkQ2FyZGFub0FkZHJlc3MpO1xuICAgIH0pLnRvVGhyb3coKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEB0YXJnZXQgYHZhbGlkYXRlQWRkcmVzc2Agc2hvdWxkIHZhbGlkYXRlIEJpdGNvaW4gYWRkcmVzcyBzdWNjZXNzZnVsbHlcbiAgICogQGRlcGVuZGVuY2llc1xuICAgKiBAc2NlbmFyaW9cbiAgICogLSBydW4gdGVzdFxuICAgKiBAZXhwZWN0ZWRcbiAgICogLSB0byB2YWxpZGF0ZSBjb3JyZWN0IEJpdGNvaW4gYWRkcmVzc1xuICAgKi9cbiAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBCaXRjb2luIGFkZHJlc3Mgc3VjY2Vzc2Z1bGx5JywgKCkgPT4ge1xuICAgIGNvbnN0IHJlcyA9IHZhbGlkYXRlQWRkcmVzcyhCSVRDT0lOX0NIQUlOLCB0ZXN0RGF0YS5iaXRjb2luQWRkcmVzcyk7XG4gICAgZXhwZWN0KHJlcykudG9FcXVhbCh0cnVlKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEB0YXJnZXQgYHZhbGlkYXRlQWRkcmVzc2Agc2hvdWxkIHRocm93IGVycm9yIGZvciBCaXRjb2luIHRhcHJvb3QgYWRkcmVzc1xuICAgKiBAZGVwZW5kZW5jaWVzXG4gICAqIEBzY2VuYXJpb1xuICAgKiAtIHJ1biB0ZXN0XG4gICAqIEBleHBlY3RlZFxuICAgKiAtIHRvIHRocm93IGVycm9yIGZvciBCaXRjb2luIHRhcHJvb3QgYWRkcmVzc1xuICAgKi9cbiAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3IgQml0Y29pbiB0YXByb290IGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIHZhbGlkYXRlQWRkcmVzcyhCSVRDT0lOX0NIQUlOLCB0ZXN0RGF0YS50YXBSb290Qml0Y29pbkFkZHJlc3MpO1xuICAgIH0pLnRvVGhyb3coVW5zdXBwb3J0ZWRBZGRyZXNzRXJyb3IpO1xuICB9KTtcblxuICAvKipcbiAgICogQHRhcmdldCBgdmFsaWRhdGVBZGRyZXNzYCBzaG91bGQgdGhyb3cgZXJyb3IgZm9yIHdyb25nIEJpdGNvaW4gYWRkcmVzc1xuICAgKiBAZGVwZW5kZW5jaWVzXG4gICAqIEBzY2VuYXJpb1xuICAgKiAtIHJ1biB0ZXN0XG4gICAqIEBleHBlY3RlZFxuICAgKiAtIHRvIHRocm93IGVycm9yIGZvciB3cm9uZyBCaXRjb2luIGFkZHJlc3NcbiAgICovXG4gIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgZm9yIHdyb25nIEJpdGNvaW4gYWRkcmVzcycsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgdmFsaWRhdGVBZGRyZXNzKEJJVENPSU5fQ0hBSU4sIHRlc3REYXRhLmludmFsaWRCaXRjb2luQWRkcmVzcyk7XG4gICAgfSkudG9UaHJvd0Vycm9yKCk7XG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAdGFyZ2V0IGB2YWxpZGF0ZUFkZHJlc3NgIHNob3VsZCB2YWxpZGF0ZSBFdGhlcmV1bSBhZGRyZXNzIHN1Y2Nlc3NmdWxseVxuICAgKiBAZGVwZW5kZW5jaWVzXG4gICAqIEBzY2VuYXJpb1xuICAgKiAtIHJ1biB0ZXN0XG4gICAqIEBleHBlY3RlZFxuICAgKiAtIHRvIHZhbGlkYXRlIGNvcnJlY3QgRXRoZXJldW0gYWRkcmVzc1xuICAgKi9cbiAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBFdGhlcmV1bSBhZGRyZXNzIHN1Y2Nlc3NmdWxseScsICgpID0+IHtcbiAgICBjb25zdCByZXMgPSB2YWxpZGF0ZUFkZHJlc3MoRVRIRVJFVU1fQ0hBSU4sIHRlc3REYXRhLmV0aGVyZXVtQWRkcmVzcyk7XG4gICAgZXhwZWN0KHJlcykudG9FcXVhbCh0cnVlKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEB0YXJnZXQgYHZhbGlkYXRlQWRkcmVzc2Agc2hvdWxkIHRocm93IGVycm9yIGZvciBJQ0FQIEV0aGVyZXVtIGFkZHJlc3NcbiAgICogQGRlcGVuZGVuY2llc1xuICAgKiBAc2NlbmFyaW9cbiAgICogLSBydW4gdGVzdFxuICAgKiBAZXhwZWN0ZWRcbiAgICogLSB0byB0aHJvdyBlcnJvciBmb3IgSUNBUCBFdGhlcmV1bSBhZGRyZXNzXG4gICAqL1xuICBpdCgnc2hvdWxkIHRocm93IGVycm9yIGZvciBJQ0FQIEV0aGVyZXVtIGFkZHJlc3MnLCAoKSA9PiB7XG4gICAgZXhwZWN0KCgpID0+IHtcbiAgICAgIHZhbGlkYXRlQWRkcmVzcyhFVEhFUkVVTV9DSEFJTiwgdGVzdERhdGEuaW52YWxpZEV0aGVyZXVtSWNhcEFkZHJlc3MpO1xuICAgIH0pLnRvVGhyb3coVW5zdXBwb3J0ZWRBZGRyZXNzRXJyb3IpO1xuICB9KTtcblxuICAvKipcbiAgICogQHRhcmdldCBgdmFsaWRhdGVBZGRyZXNzYCBzaG91bGQgdGhyb3cgZXJyb3IgZm9yIEV0aGVyZXVtIGFkZHJlc3Mgd2l0aCBjaGVja3N1bVxuICAgKiBAZGVwZW5kZW5jaWVzXG4gICAqIEBzY2VuYXJpb1xuICAgKiAtIHJ1biB0ZXN0XG4gICAqIEBleHBlY3RlZFxuICAgKiAtIHRvIHRocm93IGVycm9yIGZvciBFdGhlcmV1bSBhZGRyZXNzIHdpdGggY2hlY2tzdW1cbiAgICovXG4gIGl0KCdzaG91bGQgdGhyb3cgZXJyb3IgZm9yIEV0aGVyZXVtIGFkZHJlc3Mgd2l0aCBjaGVja3N1bScsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgdmFsaWRhdGVBZGRyZXNzKEVUSEVSRVVNX0NIQUlOLCB0ZXN0RGF0YS5pbnZhbGlkRXRoZXJldW1DaGVja3N1bUFkZHJlc3MpO1xuICAgIH0pLnRvVGhyb3coVW5zdXBwb3J0ZWRBZGRyZXNzRXJyb3IpO1xuICB9KTtcblxuICAvKipcbiAgICogQHRhcmdldCBgdmFsaWRhdGVBZGRyZXNzYCBzaG91bGQgdGhyb3cgZXJyb3IgZm9yIHdyb25nIEV0aGVyZXVtIGFkZHJlc3NcbiAgICogQGRlcGVuZGVuY2llc1xuICAgKiBAc2NlbmFyaW9cbiAgICogLSBydW4gdGVzdFxuICAgKiBAZXhwZWN0ZWRcbiAgICogLSB0byB0aHJvdyBlcnJvciBmb3Igd3JvbmcgRXRoZXJldW0gYWRkcmVzc1xuICAgKi9cbiAgaXQoJ3Nob3VsZCB0aHJvdyBlcnJvciBmb3Igd3JvbmcgRXRoZXJldW0gYWRkcmVzcycsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgdmFsaWRhdGVBZGRyZXNzKEVUSEVSRVVNX0NIQUlOLCB0ZXN0RGF0YS5pbnZhbGlkRXRoZXJldW1BZGRyZXNzTGVuZ3RoKTtcbiAgICB9KS50b1Rocm93KFVuc3VwcG9ydGVkQWRkcmVzc0Vycm9yKTtcbiAgfSk7XG5cbiAgLyoqXG4gICAqIEB0YXJnZXQgYHZhbGlkYXRlQWRkcmVzc2Agc2hvdWxkIHRocm93IGVycm9yIHdoZW4gY2hhaW4gaXMgbm90IHN1cHBvcnRlZFxuICAgKiBAZGVwZW5kZW5jaWVzXG4gICAqIEBzY2VuYXJpb1xuICAgKiAtIHJ1biB0ZXN0XG4gICAqIEBleHBlY3RlZFxuICAgKiAtIGl0IHNob3VsZCB0aHJvdyBVbnN1cHBvcnRlZENoYWluIGVycm9yXG4gICAqL1xuICBpdCgnc2hvdWxkIHRocm93IGVycm9yIHdoZW4gY2hhaW4gaXMgbm90IHN1cHBvcnRlZCcsICgpID0+IHtcbiAgICBleHBlY3QoKCkgPT4ge1xuICAgICAgdmFsaWRhdGVBZGRyZXNzKCd1bnN1cHBvcnRlZC1jaGFpbicsICcwMDExMjIzMzQ0Jyk7XG4gICAgfSkudG9UaHJvdyhVbnN1cHBvcnRlZENoYWluRXJyb3IpO1xuICB9KTtcbn0pO1xuIl19
|