Skip to content

Commit 582b4da

Browse files
committed
chore: shim for loading wasm miniscript async
Ticket: BTC-0000
1 parent 8f1e2e3 commit 582b4da

File tree

39 files changed

+198
-92
lines changed

39 files changed

+198
-92
lines changed

modules/abstract-utxo/src/descriptor/NamedDescriptor.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as t from 'io-ts';
2-
import { Descriptor, DescriptorPkType } from '@bitgo/wasm-miniscript';
3-
import { BIP32Interface, networks } from '@bitgo/utxo-lib';
2+
import type { Descriptor, DescriptorPkType } from '@bitgo/wasm-miniscript';
3+
import { BIP32Interface, miniscript, networks } from '@bitgo/utxo-lib';
44
import { signMessage, verifyMessage } from '@bitgo/sdk-core';
55

66
export const NamedDescriptor = t.intersection(
@@ -30,20 +30,20 @@ export function createNamedDescriptorWithSignature(
3030
signingKey: BIP32Interface
3131
): NamedDescriptor {
3232
if (typeof descriptor === 'string') {
33-
descriptor = Descriptor.fromString(descriptor, 'derivable');
33+
descriptor = miniscript.Descriptor.fromString(descriptor, 'derivable');
3434
}
3535
const value = descriptor.toString();
3636
const signature = signMessage(value, signingKey, networks.bitcoin).toString('hex');
3737
return { name, value, signatures: [signature] };
3838
}
3939

4040
export function toNamedDescriptorNative(e: NamedDescriptor, pkType: DescriptorPkType): NamedDescriptorNative {
41-
return { ...e, value: Descriptor.fromString(e.value, pkType) };
41+
return { ...e, value: miniscript.Descriptor.fromString(e.value, pkType) };
4242
}
4343

4444
export function hasValidSignature(descriptor: string | Descriptor, key: BIP32Interface, signatures: string[]): boolean {
4545
if (typeof descriptor === 'string') {
46-
descriptor = Descriptor.fromString(descriptor, 'derivable');
46+
descriptor = miniscript.Descriptor.fromString(descriptor, 'derivable');
4747
}
4848

4949
const message = descriptor.toString();

modules/abstract-utxo/src/descriptor/assertDescriptorWalletAddress.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import assert from 'assert';
22

33
import * as utxolib from '@bitgo/utxo-lib';
4-
import { Descriptor } from '@bitgo/wasm-miniscript';
4+
import type { Descriptor } from '@bitgo/wasm-miniscript';
55
import { DescriptorMap } from '@bitgo/utxo-core/descriptor';
66

77
import { UtxoCoinSpecific, VerifyAddressOptions } from '../abstractUtxoCoin';

modules/abstract-utxo/src/descriptor/builder/builder.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { BIP32Interface } from '@bitgo/utxo-lib';
2-
import { Descriptor } from '@bitgo/wasm-miniscript';
1+
import { BIP32Interface, miniscript } from '@bitgo/utxo-lib';
2+
import type { Descriptor } from '@bitgo/wasm-miniscript';
33

44
type DescriptorWithKeys<TName extends string> = {
55
name: TName;
@@ -50,5 +50,5 @@ function getDescriptorString(builder: DescriptorBuilder): string {
5050
}
5151

5252
export function getDescriptorFromBuilder(builder: DescriptorBuilder): Descriptor {
53-
return Descriptor.fromString(getDescriptorString(builder), 'derivable');
53+
return miniscript.Descriptor.fromString(getDescriptorString(builder), 'derivable');
5454
}

modules/abstract-utxo/src/descriptor/builder/parse.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { BIP32Interface } from '@bitgo/utxo-lib';
22
import * as utxolib from '@bitgo/utxo-lib';
3-
import { Descriptor } from '@bitgo/wasm-miniscript';
3+
import type { Descriptor } from '@bitgo/wasm-miniscript';
44

55
import { DescriptorBuilder, getDescriptorFromBuilder } from './builder';
66

modules/abstract-utxo/src/descriptor/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
export { Miniscript, Descriptor } from '@bitgo/wasm-miniscript';
21
export { DescriptorMap } from '@bitgo/utxo-core/descriptor';
32
export { assertDescriptorWalletAddress } from './assertDescriptorWalletAddress';
43
export {

modules/abstract-utxo/test/transaction/descriptor/parse.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import assert from 'assert';
22

33
import * as utxolib from '@bitgo/utxo-lib';
4-
import { Descriptor } from '@bitgo/wasm-miniscript';
4+
import * as WasmMiniscript from '@bitgo/wasm-miniscript';
55
import {
66
getDefaultXPubs,
77
getDescriptor,
@@ -23,6 +23,8 @@ import { BaseOutput } from '../../../src';
2323

2424
import { getFixtureRoot } from './fixtures.utils';
2525

26+
utxolib.initializeMiniscript(WasmMiniscript);
27+
2628
const { assertEqualFixture } = getFixtureRoot(__dirname + '/fixtures');
2729

2830
type OutputWithValue<T = number | bigint | string> = {
@@ -58,7 +60,7 @@ describe('parse', function () {
5860
const descriptorOther = getDescriptor('Wsh2Of3', getDefaultXPubs('b'));
5961
const psbt = mockPsbtDefault({ descriptorSelf, descriptorOther });
6062

61-
function recipient(descriptor: Descriptor, index: number, value = 1000) {
63+
function recipient(descriptor: WasmMiniscript.Descriptor, index: number, value = 1000) {
6264
return { value, address: createAddressFromDescriptor(descriptor, index, utxolib.networks.bitcoin) };
6365
}
6466

modules/abstract-utxo/tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"module": "node16",
1010
"typeRoots": ["../../types", "./node_modules/@types", "../../node_modules/@types"]
1111
},
12-
"include": ["src/**/*", "test/**/*"],
12+
"include": ["src/**/*", "test/**/*", "../utxo-lib/src/shim"],
1313
"exclude": ["node_modules"],
1414
"references": [
1515
{

modules/bitgo/test/v2/unit/coins/utxo/descriptorAddress.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { BitGo } from '../../../../../src';
99

1010
export function getDescriptorAddress(d: string, index: number, network: utxolib.Network): string {
1111
const derivedScript = Buffer.from(
12-
utxod.Descriptor.fromString(d, 'derivable').atDerivationIndex(index).scriptPubkey()
12+
utxolib.miniscript.Descriptor.fromString(d, 'derivable').atDerivationIndex(index).scriptPubkey()
1313
);
1414
return utxolib.address.fromOutputScript(derivedScript, network);
1515
}
@@ -20,7 +20,7 @@ describe('descriptor wallets', function () {
2020
const xpubs = utxolib.testutil.getKeyTriple('setec astronomy').map((k) => k.neutered().toBase58());
2121

2222
function withChecksum(descriptor: string): string {
23-
return utxod.Descriptor.fromString(descriptor, 'derivable').toString();
23+
return utxolib.miniscript.Descriptor.fromString(descriptor, 'derivable').toString();
2424
}
2525

2626
function getNamedDescriptor2Of2(name: string, a: string, b: string): utxod.NamedDescriptor {

modules/utxo-bin/test/cmdPsbt.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ import * as fs from 'fs/promises';
33

44
import yargs from 'yargs';
55
import * as utxolib from '@bitgo/utxo-lib';
6-
import { Descriptor } from '@bitgo/wasm-miniscript';
6+
import * as WasmMiniscript from '@bitgo/wasm-miniscript';
77

88
import { cmdPsbt } from '../src/commands';
99
import { formatTreeNoColor, getFixtureString } from './fixtures';
1010
import { getKeyTriple } from './bip32.util';
1111
import { TxParser } from '../src/TxParser';
1212

13+
utxolib.initializeMiniscript(WasmMiniscript);
14+
1315
async function runPsbtCommand(args: string[]) {
1416
return cmdPsbt.builder(yargs([])).strict().exitProcess(false).parse(args);
1517
}
@@ -30,15 +32,15 @@ function multi(n: number, xpubs: string[], path: string) {
3032
return 'multi(' + n + ',' + xpubs.map((xpub) => xpub + path).join(',') + ')';
3133
}
3234

33-
function getAddressFromDescriptor(descriptor: Descriptor, network: utxolib.Network) {
35+
function getAddressFromDescriptor(descriptor: WasmMiniscript.Descriptor, network: utxolib.Network) {
3436
return utxolib.address.fromOutputScript(Buffer.from(descriptor.scriptPubkey()), network);
3537
}
3638

3739
describe('cmdPsbt commands', function () {
3840
const keys = getKeyTriple('cmdPsbt');
3941
const xpubs = keys.map((k) => k.neutered().toBase58());
4042
const descriptorString = `wsh(${multi(2, xpubs, '/*')})`;
41-
const descriptor = Descriptor.fromString(descriptorString, 'derivable');
43+
const descriptor = WasmMiniscript.Descriptor.fromString(descriptorString, 'derivable');
4244

4345
it('creates empty psbt', async function () {
4446
await fs.rm('/tmp/test.psbt', { force: true });
Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
1-
import { Descriptor } from '@bitgo/wasm-miniscript';
1+
import type { Descriptor } from '@bitgo/wasm-miniscript';
2+
import { miniscript } from '@bitgo/utxo-lib';
23

34
/** Map from descriptor name to descriptor */
45
export type DescriptorMap = Map<string, Descriptor>;
56

67
/** Convert an array of descriptor name-value pairs to a descriptor map */
78
export function toDescriptorMap(descriptors: { name: string; value: Descriptor | string }[]): DescriptorMap {
89
return new Map(
9-
descriptors.map((d) => [d.name, d.value instanceof Descriptor ? d.value : Descriptor.fromStringDetectType(d.value)])
10+
descriptors.map((d) => [
11+
d.name,
12+
d.value instanceof miniscript.Descriptor ? d.value : miniscript.Descriptor.fromStringDetectType(d.value),
13+
])
1014
);
1115
}

0 commit comments

Comments
 (0)