@rosen-bridge/address-codec 0.4.1 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -2
- package/dist/const.d.ts +12 -0
- package/dist/const.d.ts.map +1 -1
- package/dist/const.js +14 -1
- package/dist/decoder.d.ts.map +1 -1
- package/dist/decoder.js +4 -2
- package/dist/encoder.d.ts.map +1 -1
- package/dist/encoder.js +7 -2
- package/dist/lib/const.d.ts +12 -0
- package/dist/lib/const.d.ts.map +1 -1
- package/dist/lib/const.js +14 -1
- package/dist/lib/decoder.d.ts.map +1 -1
- package/dist/lib/decoder.js +4 -2
- package/dist/lib/encoder.d.ts.map +1 -1
- package/dist/lib/encoder.js +7 -2
- package/dist/lib/validator.d.ts.map +1 -1
- package/dist/lib/validator.js +11 -2
- package/dist/tests/decoder.spec.js +15 -2
- package/dist/tests/encoder.spec.js +15 -2
- package/dist/tests/testData.d.ts +3 -0
- package/dist/tests/testData.d.ts.map +1 -1
- package/dist/tests/testData.js +4 -1
- package/dist/tests/validator.spec.js +27 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/validator.d.ts.map +1 -1
- package/dist/validator.js +11 -2
- package/dist/vitest.config.js +5 -5
- package/lib/const.ts +14 -0
- package/lib/decoder.ts +8 -0
- package/lib/encoder.ts +7 -0
- package/lib/validator.ts +11 -0
- package/package.json +4 -4
- package/tests/decoder.spec.ts +15 -0
- package/tests/encoder.spec.ts +15 -0
- package/tests/testData.ts +5 -0
- package/tests/validator.spec.ts +28 -0
- package/tsconfig.build.tsbuildinfo +1 -1
- package/vitest.config.ts +4 -4
package/dist/validator.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../lib/validator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../lib/validator.ts"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,eAAO,MAAM,eAAe,UAAW,MAAM,WAAW,MAAM,KAAG,OA4BhE,CAAC"}
|
package/dist/validator.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, DOGE_CHAIN, DOGE_NETWORK, 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';
|
|
@@ -22,12 +22,21 @@ export const validateAddress = (chain, address) => {
|
|
|
22
22
|
if (address.slice(0, 4) != 'bc1q')
|
|
23
23
|
throw new UnsupportedAddressError(chain, address);
|
|
24
24
|
return true;
|
|
25
|
+
case BINANCE_CHAIN:
|
|
25
26
|
case ETHEREUM_CHAIN:
|
|
26
27
|
if (address.toLowerCase() != address || !ethereumLib.isAddress(address))
|
|
27
28
|
throw new UnsupportedAddressError(chain, address);
|
|
28
29
|
return true;
|
|
30
|
+
case DOGE_CHAIN:
|
|
31
|
+
try {
|
|
32
|
+
bitcoinLib.address.toOutputScript(address, DOGE_NETWORK);
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
throw new UnsupportedAddressError(chain, address);
|
|
36
|
+
}
|
|
37
|
+
return true;
|
|
29
38
|
default:
|
|
30
39
|
throw new UnsupportedChainError(chain);
|
|
31
40
|
}
|
|
32
41
|
};
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vbGliL3ZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsYUFBYSxFQUNiLGFBQWEsRUFDYixhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsY0FBYyxHQUNmLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUN6RSxPQUFPLEtBQUssT0FBTyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sS0FBSyxVQUFVLE1BQU0sMENBQTBDLENBQUM7QUFDdkUsT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxLQUFLLFdBQVcsTUFBTSxRQUFRLENBQUM7QUFFdEM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLEtBQWEsRUFBRSxPQUFlLEVBQVcsRUFBRTtJQUN6RSxRQUFRLEtBQUssRUFBRSxDQUFDO1FBQ2QsS0FBSyxVQUFVO1lBQ2IsT0FBTyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDckMsT0FBTyxJQUFJLENBQUM7UUFDZCxLQUFLLGFBQWE7WUFDaEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEMsT0FBTyxJQUFJLENBQUM7UUFDZCxLQUFLLGFBQWE7WUFDaEIsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdkMsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxNQUFNO2dCQUMvQixNQUFNLElBQUksdUJBQXVCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELE9BQU8sSUFBSSxDQUFDO1FBQ2QsS0FBSyxhQUFhLENBQUM7UUFDbkIsS0FBSyxjQUFjO1lBQ2pCLElBQUksT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO2dCQUNyRSxNQUFNLElBQUksdUJBQXVCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELE9BQU8sSUFBSSxDQUFDO1FBQ2QsS0FBSyxVQUFVO1lBQ2IsSUFBSSxDQUFDO2dCQUNILFVBQVUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztZQUMzRCxDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxNQUFNLElBQUksdUJBQXVCLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3BELENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkO1lBQ0UsTUFBTSxJQUFJLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7QUFDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBCSU5BTkNFX0NIQUlOLFxuICBCSVRDT0lOX0NIQUlOLFxuICBDQVJEQU5PX0NIQUlOLFxuICBET0dFX0NIQUlOLFxuICBET0dFX05FVFdPUkssXG4gIEVSR09fQ0hBSU4sXG4gIEVUSEVSRVVNX0NIQUlOLFxufSBmcm9tICcuL2NvbnN0JztcbmltcG9ydCB7IFVuc3VwcG9ydGVkQWRkcmVzc0Vycm9yLCBVbnN1cHBvcnRlZENoYWluRXJyb3IgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCAqIGFzIGVyZ29MaWIgZnJvbSAnZXJnby1saWItd2FzbS1ub2RlanMnO1xuaW1wb3J0ICogYXMgY2FyZGFub0xpYiBmcm9tICdAZW11cmdvL2NhcmRhbm8tc2VyaWFsaXphdGlvbi1saWItbm9kZWpzJztcbmltcG9ydCAqIGFzIGJpdGNvaW5MaWIgZnJvbSAnYml0Y29pbmpzLWxpYic7XG5pbXBvcnQgKiBhcyBldGhlcmV1bUxpYiBmcm9tICdldGhlcnMnO1xuXG4vKipcbiAqIHZhbGlkYXRlcyBhZGRyZXNzIG9mIGEgY2hhaW5cbiAqIEBwYXJhbSBjaGFpblxuICogQHBhcmFtIGFkZHJlc3NcbiAqL1xuZXhwb3J0IGNvbnN0IHZhbGlkYXRlQWRkcmVzcyA9IChjaGFpbjogc3RyaW5nLCBhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgc3dpdGNoIChjaGFpbikge1xuICAgIGNhc2UgRVJHT19DSEFJTjpcbiAgICAgIGVyZ29MaWIuQWRkcmVzcy5mcm9tX2Jhc2U1OChhZGRyZXNzKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGNhc2UgQ0FSREFOT19DSEFJTjpcbiAgICAgIGNhcmRhbm9MaWIuQWRkcmVzcy5mcm9tX2JlY2gzMihhZGRyZXNzKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGNhc2UgQklUQ09JTl9DSEFJTjpcbiAgICAgIGJpdGNvaW5MaWIuYWRkcmVzcy5mcm9tQmVjaDMyKGFkZHJlc3MpO1xuICAgICAgaWYgKGFkZHJlc3Muc2xpY2UoMCwgNCkgIT0gJ2JjMXEnKVxuICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRBZGRyZXNzRXJyb3IoY2hhaW4sIGFkZHJlc3MpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgY2FzZSBCSU5BTkNFX0NIQUlOOlxuICAgIGNhc2UgRVRIRVJFVU1fQ0hBSU46XG4gICAgICBpZiAoYWRkcmVzcy50b0xvd2VyQ2FzZSgpICE9IGFkZHJlc3MgfHwgIWV0aGVyZXVtTGliLmlzQWRkcmVzcyhhZGRyZXNzKSlcbiAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkQWRkcmVzc0Vycm9yKGNoYWluLCBhZGRyZXNzKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGNhc2UgRE9HRV9DSEFJTjpcbiAgICAgIHRyeSB7XG4gICAgICAgIGJpdGNvaW5MaWIuYWRkcmVzcy50b091dHB1dFNjcmlwdChhZGRyZXNzLCBET0dFX05FVFdPUkspO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRBZGRyZXNzRXJyb3IoY2hhaW4sIGFkZHJlc3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZENoYWluRXJyb3IoY2hhaW4pO1xuICB9XG59O1xuIl19
|
package/dist/vitest.config.js
CHANGED
|
@@ -4,15 +4,15 @@ export default defineConfig({
|
|
|
4
4
|
globals: true,
|
|
5
5
|
coverage: {
|
|
6
6
|
all: true,
|
|
7
|
+
reporter: ['cobertura', 'lcov', 'text', 'text-summary'],
|
|
7
8
|
provider: 'istanbul',
|
|
8
|
-
|
|
9
|
+
include: ['src'],
|
|
9
10
|
},
|
|
10
|
-
passWithNoTests: true,
|
|
11
11
|
poolOptions: {
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
forks: {
|
|
13
|
+
singleFork: true,
|
|
14
14
|
},
|
|
15
15
|
},
|
|
16
16
|
},
|
|
17
17
|
});
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidml0ZXN0LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3ZpdGVzdC5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU3QyxlQUFlLFlBQVksQ0FBQztJQUMxQixJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsSUFBSTtRQUNiLFFBQVEsRUFBRTtZQUNSLEdBQUcsRUFBRSxJQUFJO1lBQ1QsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDO1lBQ3ZELFFBQVEsRUFBRSxVQUFVO1lBQ3BCLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztTQUNqQjtRQUNELFdBQVcsRUFBRTtZQUNYLEtBQUssRUFBRTtnQkFDTCxVQUFVLEVBQUUsSUFBSTthQUNqQjtTQUNGO0tBQ0Y7Q0FDRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkZWZpbmVDb25maWcgfSBmcm9tICd2aXRlc3QvY29uZmlnJztcblxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29uZmlnKHtcbiAgdGVzdDoge1xuICAgIGdsb2JhbHM6IHRydWUsXG4gICAgY292ZXJhZ2U6IHtcbiAgICAgIGFsbDogdHJ1ZSxcbiAgICAgIHJlcG9ydGVyOiBbJ2NvYmVydHVyYScsICdsY292JywgJ3RleHQnLCAndGV4dC1zdW1tYXJ5J10sXG4gICAgICBwcm92aWRlcjogJ2lzdGFuYnVsJyxcbiAgICAgIGluY2x1ZGU6IFsnc3JjJ10sXG4gICAgfSxcbiAgICBwb29sT3B0aW9uczoge1xuICAgICAgZm9ya3M6IHtcbiAgICAgICAgc2luZ2xlRm9yazogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbn0pO1xuIl19
|
package/lib/const.ts
CHANGED
|
@@ -3,3 +3,17 @@ 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
|
+
export const DOGE_CHAIN = 'doge';
|
|
7
|
+
|
|
8
|
+
export const DOGE_NETWORK = {
|
|
9
|
+
// Doge network parameters
|
|
10
|
+
messagePrefix: '\x19Dogecoin Signed Message:\n',
|
|
11
|
+
bech32: 'dc',
|
|
12
|
+
bip32: {
|
|
13
|
+
public: 0x02facafd,
|
|
14
|
+
private: 0x02fac398,
|
|
15
|
+
},
|
|
16
|
+
pubKeyHash: 0x1e,
|
|
17
|
+
scriptHash: 0x16,
|
|
18
|
+
wif: 0x9e,
|
|
19
|
+
};
|
package/lib/decoder.ts
CHANGED
|
@@ -2,6 +2,8 @@ import {
|
|
|
2
2
|
BINANCE_CHAIN,
|
|
3
3
|
BITCOIN_CHAIN,
|
|
4
4
|
CARDANO_CHAIN,
|
|
5
|
+
DOGE_CHAIN,
|
|
6
|
+
DOGE_NETWORK,
|
|
5
7
|
ERGO_CHAIN,
|
|
6
8
|
ETHEREUM_CHAIN,
|
|
7
9
|
} from './const';
|
|
@@ -40,7 +42,13 @@ export const decodeAddress = (
|
|
|
40
42
|
if (encodedAddress.length != 40) {
|
|
41
43
|
throw new UnsupportedAddressError(chain, encodedAddress);
|
|
42
44
|
}
|
|
45
|
+
|
|
43
46
|
return '0x' + encodedAddress;
|
|
47
|
+
case DOGE_CHAIN:
|
|
48
|
+
return bitcoinLib.address.fromOutputScript(
|
|
49
|
+
Buffer.from(encodedAddress, 'hex'),
|
|
50
|
+
DOGE_NETWORK
|
|
51
|
+
);
|
|
44
52
|
default:
|
|
45
53
|
throw new UnsupportedChainError(chain);
|
|
46
54
|
}
|
package/lib/encoder.ts
CHANGED
|
@@ -2,6 +2,8 @@ import {
|
|
|
2
2
|
BINANCE_CHAIN,
|
|
3
3
|
BITCOIN_CHAIN,
|
|
4
4
|
CARDANO_CHAIN,
|
|
5
|
+
DOGE_CHAIN,
|
|
6
|
+
DOGE_NETWORK,
|
|
5
7
|
ERGO_CHAIN,
|
|
6
8
|
ETHEREUM_CHAIN,
|
|
7
9
|
} from './const';
|
|
@@ -41,6 +43,11 @@ export const encodeAddress = (chain: string, address: string): string => {
|
|
|
41
43
|
}
|
|
42
44
|
encoded = address.substring(2);
|
|
43
45
|
break;
|
|
46
|
+
case DOGE_CHAIN:
|
|
47
|
+
encoded = bitcoinLib.address
|
|
48
|
+
.toOutputScript(address, DOGE_NETWORK)
|
|
49
|
+
.toString('hex');
|
|
50
|
+
break;
|
|
44
51
|
default:
|
|
45
52
|
throw new UnsupportedChainError(chain);
|
|
46
53
|
}
|
package/lib/validator.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
+
BINANCE_CHAIN,
|
|
2
3
|
BITCOIN_CHAIN,
|
|
3
4
|
CARDANO_CHAIN,
|
|
5
|
+
DOGE_CHAIN,
|
|
6
|
+
DOGE_NETWORK,
|
|
4
7
|
ERGO_CHAIN,
|
|
5
8
|
ETHEREUM_CHAIN,
|
|
6
9
|
} from './const';
|
|
@@ -28,10 +31,18 @@ export const validateAddress = (chain: string, address: string): boolean => {
|
|
|
28
31
|
if (address.slice(0, 4) != 'bc1q')
|
|
29
32
|
throw new UnsupportedAddressError(chain, address);
|
|
30
33
|
return true;
|
|
34
|
+
case BINANCE_CHAIN:
|
|
31
35
|
case ETHEREUM_CHAIN:
|
|
32
36
|
if (address.toLowerCase() != address || !ethereumLib.isAddress(address))
|
|
33
37
|
throw new UnsupportedAddressError(chain, address);
|
|
34
38
|
return true;
|
|
39
|
+
case DOGE_CHAIN:
|
|
40
|
+
try {
|
|
41
|
+
bitcoinLib.address.toOutputScript(address, DOGE_NETWORK);
|
|
42
|
+
} catch (e) {
|
|
43
|
+
throw new UnsupportedAddressError(chain, address);
|
|
44
|
+
}
|
|
45
|
+
return true;
|
|
35
46
|
default:
|
|
36
47
|
throw new UnsupportedChainError(chain);
|
|
37
48
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rosen-bridge/address-codec",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "A Typescript package for encoding and decoding of addresses in Rosen bridge supported chains",
|
|
5
5
|
"repository": "https://github.com/rosen-bridge/utils",
|
|
6
6
|
"license": "GPL-3.0",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"types": "dist/index.d.ts",
|
|
11
11
|
"scripts": {
|
|
12
12
|
"build": "tsc --build tsconfig.build.json",
|
|
13
|
-
"coverage": "npm run test -- --coverage",
|
|
13
|
+
"coverage": "npm run test -- --run --coverage",
|
|
14
14
|
"lint": "eslint --fix . && npm run prettify",
|
|
15
15
|
"prettify": "prettier --write . --ignore-path ./.gitignore",
|
|
16
16
|
"release": "npm run test -- --run && npm run build && npm publish --access public",
|
|
@@ -21,13 +21,13 @@
|
|
|
21
21
|
"@types/node": "^20.11.9",
|
|
22
22
|
"@typescript-eslint/eslint-plugin": "^6.19.1",
|
|
23
23
|
"@typescript-eslint/parser": "^6.19.1",
|
|
24
|
-
"@vitest/coverage-istanbul": "^
|
|
24
|
+
"@vitest/coverage-istanbul": "^2.0.5",
|
|
25
25
|
"eslint": "^8.56.0",
|
|
26
26
|
"eslint-config-prettier": "^9.1.0",
|
|
27
27
|
"extensionless": "^1.9.6",
|
|
28
28
|
"prettier": "^3.2.4",
|
|
29
29
|
"typescript": "^5.3.3",
|
|
30
|
-
"vitest": "^
|
|
30
|
+
"vitest": "^2.0.5"
|
|
31
31
|
},
|
|
32
32
|
"engines": {
|
|
33
33
|
"node": ">=20.11.0"
|
package/tests/decoder.spec.ts
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
BITCOIN_CHAIN,
|
|
9
9
|
CARDANO_CHAIN,
|
|
10
|
+
DOGE_CHAIN,
|
|
10
11
|
ERGO_CHAIN,
|
|
11
12
|
ETHEREUM_CHAIN,
|
|
12
13
|
} from '../lib/const';
|
|
@@ -95,4 +96,18 @@ describe('decodeAddress', () => {
|
|
|
95
96
|
decodeAddress('unsupported-chain', '0011223344');
|
|
96
97
|
}).toThrow(UnsupportedChainError);
|
|
97
98
|
});
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @target `decodeAddress` should decode Doge address successfully
|
|
102
|
+
* @dependencies
|
|
103
|
+
* @scenario
|
|
104
|
+
* - run test
|
|
105
|
+
* - check returned value
|
|
106
|
+
* @expected
|
|
107
|
+
* - it should be address in hex format
|
|
108
|
+
*/
|
|
109
|
+
it('should decode Doge address successfully', () => {
|
|
110
|
+
const res = decodeAddress(DOGE_CHAIN, testData.encodedDogeAddress);
|
|
111
|
+
expect(res).toEqual(testData.dogeAddress);
|
|
112
|
+
});
|
|
98
113
|
});
|
package/tests/encoder.spec.ts
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
BITCOIN_CHAIN,
|
|
9
9
|
CARDANO_CHAIN,
|
|
10
|
+
DOGE_CHAIN,
|
|
10
11
|
ERGO_CHAIN,
|
|
11
12
|
ETHEREUM_CHAIN,
|
|
12
13
|
} from '../lib/const';
|
|
@@ -110,4 +111,18 @@ describe('encodeAddress', () => {
|
|
|
110
111
|
encodeAddress('unsupported-chain', 'address');
|
|
111
112
|
}).toThrow(UnsupportedChainError);
|
|
112
113
|
});
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* @target `encodeAddress` should encode Doge address successfully
|
|
117
|
+
* @dependencies
|
|
118
|
+
* @scenario
|
|
119
|
+
* - run test
|
|
120
|
+
* - check returned value
|
|
121
|
+
* @expected
|
|
122
|
+
* - it should be output script of given address in hex
|
|
123
|
+
*/
|
|
124
|
+
it('should encode Doge address successfully', () => {
|
|
125
|
+
const res = encodeAddress(DOGE_CHAIN, testData.dogeAddress);
|
|
126
|
+
expect(res).toEqual(testData.encodedDogeAddress);
|
|
127
|
+
});
|
|
113
128
|
});
|
package/tests/testData.ts
CHANGED
|
@@ -34,3 +34,8 @@ export const invalidEthereumAddressLength =
|
|
|
34
34
|
export const invalidEthereumIcapAddress = 'XE65GB6LDNXYOFTX0NSV3FUWKOWIXAMJK36';
|
|
35
35
|
export const invalidEthereumChecksumAddress =
|
|
36
36
|
'0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97';
|
|
37
|
+
|
|
38
|
+
export const dogeAddress = 'A69cznKpaYVWjzU3sNFZnGhbpSmUVFzvHB';
|
|
39
|
+
export const invalidDogeAddress = 'bc1qkgp89fjerymm5ltg0hygnumr0m2qa7n22gyw6h';
|
|
40
|
+
export const encodedDogeAddress =
|
|
41
|
+
'a914966ba9f4755996c3d51025d53044b415121bc10287';
|
package/tests/validator.spec.ts
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
import {
|
|
8
8
|
BITCOIN_CHAIN,
|
|
9
9
|
CARDANO_CHAIN,
|
|
10
|
+
DOGE_CHAIN,
|
|
10
11
|
ERGO_CHAIN,
|
|
11
12
|
ETHEREUM_CHAIN,
|
|
12
13
|
} from '../lib/const';
|
|
@@ -175,4 +176,31 @@ describe('validateAddress', () => {
|
|
|
175
176
|
validateAddress('unsupported-chain', '0011223344');
|
|
176
177
|
}).toThrow(UnsupportedChainError);
|
|
177
178
|
});
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* @target `validateAddress` should validate Doge address successfully
|
|
182
|
+
* @dependencies
|
|
183
|
+
* @scenario
|
|
184
|
+
* - run test
|
|
185
|
+
* @expected
|
|
186
|
+
* - to validate correct Doge address
|
|
187
|
+
*/
|
|
188
|
+
it('should validate Doge address successfully', () => {
|
|
189
|
+
const res = validateAddress(DOGE_CHAIN, testData.dogeAddress);
|
|
190
|
+
expect(res).toEqual(true);
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
/**
|
|
194
|
+
* @target `validateAddress` should throw error for wrong Doge address
|
|
195
|
+
* @dependencies
|
|
196
|
+
* @scenario
|
|
197
|
+
* - run test
|
|
198
|
+
* @expected
|
|
199
|
+
* - to throw error for wrong Doge address
|
|
200
|
+
*/
|
|
201
|
+
it('should throw error for wrong Doge address', () => {
|
|
202
|
+
expect(() => {
|
|
203
|
+
validateAddress(DOGE_CHAIN, testData.invalidDogeAddress);
|
|
204
|
+
}).toThrow(UnsupportedAddressError);
|
|
205
|
+
});
|
|
178
206
|
});
|