ln-service 53.23.0 → 54.0.0

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # Versions
2
2
 
3
+ ## 54.0.0
4
+
5
+ ### Breaking Changes
6
+
7
+ - Versions of Node.js before 14 are no longer supported
8
+
3
9
  ## 53.23.0
4
10
 
5
11
  - `getChainFeeEstimate`: Add support for specifying min `utxo_confirmations`
package/package.json CHANGED
@@ -11,10 +11,10 @@
11
11
  "cors": "2.8.5",
12
12
  "express": "4.18.1",
13
13
  "invoices": "2.2.0",
14
- "lightning": "5.21.0",
14
+ "lightning": "6.0.0",
15
15
  "macaroon": "3.0.4",
16
16
  "morgan": "1.10.0",
17
- "ws": "8.8.1"
17
+ "ws": "8.9.0"
18
18
  },
19
19
  "description": "Interaction helper for your Lightning Network daemon",
20
20
  "devDependencies": {
@@ -22,24 +22,24 @@
22
22
  "@alexbosworth/node-fetch": "2.6.2",
23
23
  "async": "3.2.4",
24
24
  "asyncjs-util": "1.2.10",
25
- "bip32": "3.0.1",
25
+ "bip32": "3.1.0",
26
26
  "bip66": "1.1.5",
27
27
  "bitcoinjs-lib": "6.0.2",
28
28
  "bn.js": "5.2.1",
29
29
  "bs58check": "2.1.2",
30
30
  "ecpair": "2.0.1",
31
- "ln-docker-daemons": "2.3.6",
31
+ "ln-docker-daemons": "3.0.0",
32
32
  "p2tr": "1.3.2",
33
33
  "portfinder": "1.0.32",
34
34
  "psbt": "2.7.1",
35
35
  "rimraf": "3.0.2",
36
36
  "secp256k1": "4.0.3",
37
37
  "tiny-secp256k1": "2.2.1",
38
- "uuid": "8.3.2",
38
+ "uuid": "9.0.0",
39
39
  "varuint-bitcoin": "1.1.2"
40
40
  },
41
41
  "engines": {
42
- "node": ">=12.20"
42
+ "node": ">=14"
43
43
  },
44
44
  "keywords": [
45
45
  "bitcoin",
@@ -71,5 +71,5 @@
71
71
  "integration-test-0.12.0": "DOCKER_LND_VERSION=v0.12.0-beta npm run test",
72
72
  "test": "echo $DOCKER_LND_VERSION && tap -j 2 --branches=1 --functions=1 --lines=1 --statements=1 -t 200 test/autopilotrpc-integration/*.js test/chainrpc-integration/*.js test/integration/*.js test/invoicesrpc-integration/*.js test/peersrpc-integration/*.js test/routerrpc-integration/*.js test/signerrpc-integration/*.js test/tower_clientrpc-integration/*.js test/tower_serverrpc-integration/*.js test/walletrpc-integration/*.js"
73
73
  },
74
- "version": "53.23.0"
74
+ "version": "54.0.0"
75
75
  }
@@ -10,6 +10,7 @@ const {delay} = require('./../macros');
10
10
  const {payViaPaymentRequest} = require('./../../');
11
11
  const {getChainTransactions} = require('./../../');
12
12
  const {getClosedChannels} = require('./../../');
13
+ const {getLockedUtxos} = require('./../../');
13
14
  const {getPendingChannels} = require('./../../');
14
15
  const {getSweepTransactions} = require('./../../');
15
16
  const {getUtxos} = require('./../../');
@@ -36,6 +37,15 @@ test(`Get closed channels`, async ({end, equal}) => {
36
37
 
37
38
  const {generate, lnd} = control;
38
39
 
40
+ try {
41
+ await getLockedUtxos({lnd});
42
+ } catch (err) {
43
+ // Skip test on LND 0.12 due to sweep timing
44
+ await kill({});
45
+
46
+ return end();
47
+ }
48
+
39
49
  const channelOpen = await setupChannel({
40
50
  generate,
41
51
  lnd,
@@ -1,32 +1,26 @@
1
- const {address} = require('bitcoinjs-lib');
1
+ const {spawnLightningCluster} = require('ln-docker-daemons');
2
2
  const {test} = require('@alexbosworth/tap');
3
3
 
4
- const {authenticatedLndGrpc} = require('./../../');
5
4
  const {createChainAddress} = require('./../../');
6
5
  const {grantAccess} = require('./../../');
7
6
  const {revokeAccess} = require('./../../');
8
- const {spawnLnd} = require('./../macros');
9
- const {waitForTermination} = require('./../macros');
10
7
 
8
+ const err = [503, 'UnexpectedErrorCreatingAddress'];
11
9
  const format = 'np2wpkh';
12
10
  const id = '1';
13
- const p2shAddressVersion = 196;
14
- const pkHashByteLength = 20;
15
- const regtestBech32AddressHrp = 'bcrt';
11
+ const permissions = ['address:read'];
16
12
 
17
13
  // Revoking access should result in access denied
18
14
  test(`Revoke access credentials`, async ({end, equal, rejects}) => {
19
- const spawned = await spawnLnd({});
20
-
21
- const {lnd, kill} = spawned;
15
+ const [{lnd, kill, rpc}] = (await spawnLightningCluster({})).nodes;
22
16
 
23
17
  await grantAccess({lnd, is_ok_to_create_chain_addresses: true});
24
18
 
25
19
  const makeChainAddresses = await grantAccess({
26
20
  id,
27
21
  lnd,
22
+ permissions,
28
23
  is_ok_to_create_chain_addresses: true,
29
- permissions: ['address:read'],
30
24
  });
31
25
 
32
26
  try {
@@ -36,27 +30,17 @@ test(`Revoke access credentials`, async ({end, equal, rejects}) => {
36
30
 
37
31
  // Avoid this test on LND 0.11.0 and below
38
32
  if (type === 'RevokeAccessMethodNotSupported') {
39
- kill();
40
-
41
- await waitForTermination({lnd});
33
+ await kill({});
42
34
 
43
35
  return end();
44
36
  }
45
37
  }
46
38
 
47
- const macLnd = authenticatedLndGrpc({
48
- cert: spawned.lnd_cert,
49
- macaroon: makeChainAddresses.macaroon,
50
- socket: spawned.lnd_socket,
51
- });
52
-
53
- const err = [503, 'UnexpectedErrorCreatingAddress'];
39
+ const macLnd = rpc({macaroon: makeChainAddresses.macaroon});
54
40
 
55
41
  await rejects(createChainAddress({format, lnd: macLnd.lnd}), err, 'Fails');
56
42
 
57
- kill();
58
-
59
- await waitForTermination({lnd});
43
+ await kill({});
60
44
 
61
45
  return end();
62
46
  });
@@ -2,16 +2,15 @@ const {createHash} = require('crypto');
2
2
  const {randomBytes} = require('crypto');
3
3
 
4
4
  const asyncRetry = require('async/retry');
5
+ const {setupChannel} = require('ln-docker-daemons');
5
6
  const {spawnLightningCluster} = require('ln-docker-daemons');
6
7
  const {test} = require('@alexbosworth/tap');
7
8
 
8
9
  const {cancelHodlInvoice} = require('./../../');
9
10
  const {createHodlInvoice} = require('./../../');
10
- const {delay} = require('./../macros');
11
11
  const {getInvoice} = require('./../../');
12
12
  const {getInvoices} = require('./../../');
13
13
  const {pay} = require('./../../');
14
- const {setupChannel} = require('./../macros');
15
14
  const {subscribeToInvoice} = require('./../../');
16
15
 
17
16
  const size = 2;
@@ -24,43 +23,47 @@ test(`Cancel back a hodl invoice`, async ({end, equal}) => {
24
23
 
25
24
  const [{generate, lnd}, target] = nodes;
26
25
 
27
- await setupChannel({generate, lnd, to: target});
26
+ try {
27
+ await setupChannel({generate, lnd, to: target});
28
28
 
29
- const id = createHash('sha256').update(randomBytes(32)).digest('hex');
29
+ const id = createHash('sha256').update(randomBytes(32)).digest('hex');
30
30
 
31
- const invoice = await createHodlInvoice({id, tokens, lnd: target.lnd});
31
+ const invoice = await createHodlInvoice({id, tokens, lnd: target.lnd});
32
32
 
33
- const sub = subscribeToInvoice({id, lnd: target.lnd});
33
+ const sub = subscribeToInvoice({id, lnd: target.lnd});
34
34
 
35
- sub.on('invoice_updated', async updated => {
36
- if (!updated.is_held) {
37
- return;
38
- }
35
+ sub.on('invoice_updated', async updated => {
36
+ if (!updated.is_held) {
37
+ return;
38
+ }
39
39
 
40
- const [created] = (await getInvoices({lnd: target.lnd})).invoices;
40
+ const [created] = (await getInvoices({lnd: target.lnd})).invoices;
41
41
 
42
- const invoice = await getInvoice({id, lnd: target.lnd});
42
+ const invoice = await getInvoice({id, lnd: target.lnd});
43
43
 
44
- equal(created.is_confirmed, false, 'invoices shows not yet been settled');
45
- equal(created.is_held, true, 'invoices shows HTLC locked in place');
46
- equal(invoice.is_confirmed, false, 'HTLC has not yet been settled');
47
- equal(invoice.is_held, true, 'HTLC is locked in place');
44
+ equal(created.is_confirmed, false, 'invoices shows not yet settled');
45
+ equal(created.is_held, true, 'invoices shows HTLC locked in place');
46
+ equal(invoice.is_confirmed, false, 'HTLC has not yet been settled');
47
+ equal(invoice.is_held, true, 'HTLC is locked in place');
48
48
 
49
- await cancelHodlInvoice({id, lnd: target.lnd});
50
- });
49
+ await cancelHodlInvoice({id, lnd: target.lnd});
50
+ });
51
51
 
52
- let cancelErr = [];
52
+ let cancelErr = [];
53
53
 
54
- try {
55
- await pay({lnd, request: invoice.request});
56
- } catch (err) {
57
- cancelErr = err;
58
- }
54
+ try {
55
+ await pay({lnd, request: invoice.request});
56
+ } catch (err) {
57
+ cancelErr = err;
58
+ }
59
59
 
60
- const [code, message] = cancelErr;
60
+ const [code, message] = cancelErr;
61
61
 
62
- equal(code, 503, 'Canceled back HODL HTLC results in unknown payment hash');
63
- equal(message, 'PaymentRejectedByDestination', 'Got back unknownhash error');
62
+ equal(code, 503, 'Canceled back HODL HTLC results in 404');
63
+ equal(message, 'PaymentRejectedByDestination', 'Got back 404 error');
64
+ } catch (err) {
65
+ equal(err, null, 'Expected no error');
66
+ }
64
67
 
65
68
  await kill({});
66
69
 
@@ -9,6 +9,7 @@ const {createInvoice} = require('./../../');
9
9
  const {delay} = require('./../macros');
10
10
  const {getChannels} = require('./../../');
11
11
  const {getHeight} = require('./../../');
12
+ const {getLockedUtxos} = require('./../../');
12
13
  const {getWalletInfo} = require('./../../');
13
14
  const {payViaPaymentRequest} = require('./../../');
14
15
  const {setupChannel} = require('./../macros');
@@ -26,6 +27,15 @@ test('Subscribe to forwards', async ({end, equal, rejects, strictSame}) => {
26
27
 
27
28
  const [{generate, lnd}, target, remote] = nodes;
28
29
 
30
+ try {
31
+ await getLockedUtxos({lnd});
32
+ } catch (err) {
33
+ // Skip test on LND 0.12 due to timeout timing
34
+ await kill({});
35
+
36
+ return end();
37
+ }
38
+
29
39
  try {
30
40
  const {features} = await getWalletInfo({lnd});
31
41
  const testSub = subscribeToForwards({lnd});