lightning 9.14.0 → 10.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.
Files changed (42) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/grpc/protos/lightning.proto +5 -0
  3. package/index.d.ts +0 -1
  4. package/index.js +0 -6
  5. package/lnd_methods/info/constants.json +1 -0
  6. package/package.json +6 -12
  7. package/lnd_gateway/bearer_token.js +0 -30
  8. package/lnd_gateway/decode_cbor_body.js +0 -30
  9. package/lnd_gateway/emit_event.js +0 -18
  10. package/lnd_gateway/emit_grpc_events.d.ts +0 -17
  11. package/lnd_gateway/emit_grpc_events.js +0 -50
  12. package/lnd_gateway/encode_response.js +0 -42
  13. package/lnd_gateway/execute_request.js +0 -74
  14. package/lnd_gateway/gateway_request.js +0 -143
  15. package/lnd_gateway/gateway_subscribe.js +0 -53
  16. package/lnd_gateway/grpc_response.js +0 -42
  17. package/lnd_gateway/grpc_router.d.ts +0 -13
  18. package/lnd_gateway/grpc_router.js +0 -45
  19. package/lnd_gateway/handle_errors.js +0 -37
  20. package/lnd_gateway/index.d.ts +0 -3
  21. package/lnd_gateway/index.js +0 -5
  22. package/lnd_gateway/lnd_gateway.d.ts +0 -37
  23. package/lnd_gateway/lnd_gateway.js +0 -118
  24. package/lnd_gateway/return_response.js +0 -38
  25. package/lnd_gateway/subscribe_to_response.js +0 -40
  26. package/lnd_gateway/ws_url.js +0 -34
  27. package/test/lnd_gateway/test_bearer_token.js +0 -31
  28. package/test/lnd_gateway/test_decode_cbor_body.js +0 -37
  29. package/test/lnd_gateway/test_emit_event.js +0 -51
  30. package/test/lnd_gateway/test_emit_grpc_events.js +0 -31
  31. package/test/lnd_gateway/test_encode_response.js +0 -37
  32. package/test/lnd_gateway/test_gateway_request.js +0 -139
  33. package/test/lnd_gateway/test_gateway_subscribe.js +0 -97
  34. package/test/lnd_gateway/test_grpc_response.js +0 -29
  35. package/test/lnd_gateway/test_grpc_router.js +0 -20
  36. package/test/lnd_gateway/test_handle_errors.js +0 -48
  37. package/test/lnd_gateway/test_lnd_gateway.js +0 -67
  38. package/test/lnd_gateway/test_return_response.js +0 -51
  39. package/test/lnd_gateway/test_ws_url.js +0 -32
  40. package/test/typescript/emit_grpc_events.test-d.ts +0 -12
  41. package/test/typescript/grpc_router.test-d.ts +0 -8
  42. package/test/typescript/lnd_gateway.test-d.ts +0 -36
@@ -1,97 +0,0 @@
1
- const EventEmitter = require('events');
2
- const {equal} = require('node:assert').strict;
3
- const {once} = require('events');
4
- const test = require('node:test');
5
-
6
- const {encode} = require('cbor');
7
-
8
- const all = promise => Promise.all(promise);
9
- const gatewaySubscribe = require('./../../lnd_gateway/gateway_subscribe');
10
-
11
- const tests = [
12
- {
13
- args: {
14
- bearer: 'bearer',
15
- call: {
16
- arguments: {},
17
- method: 'method',
18
- server: 'server',
19
- },
20
- url: 'http://url',
21
- },
22
- description: '',
23
- expected: {
24
- message: 'a4686d616361726f6f6e66626561726572666d6574686f64666d6574686f6466706172616d73f76673657276657266736572766572',
25
- url: 'ws://url/',
26
- },
27
- },
28
- ];
29
-
30
- tests.forEach(({args, description, expected}) => {
31
- return test(description, () => {
32
- return new Promise(async end => {
33
- const emitter = new EventEmitter();
34
-
35
- let message;
36
-
37
- function websocket(url) {
38
- equal(url, expected.url, 'Got expected url');
39
-
40
- emitter.close = () => {};
41
-
42
- emitter.send = n => {
43
- if (Buffer.from(n).toString('hex') !== expected.message) {
44
- throw new Error('GotUnexpectedMessageInWebSocket');
45
- }
46
-
47
- return end();
48
- };
49
-
50
- return emitter;
51
- }
52
-
53
- const eventEmitter = gatewaySubscribe({
54
- websocket,
55
- bearer: args.bearer,
56
- call: args.call,
57
- url: args.url,
58
- });
59
-
60
- emitter.emit('close');
61
-
62
- const [gotErr] = await all([
63
- new Promise((resolve, reject) => {
64
- eventEmitter.on('error', err => resolve(err));
65
- }),
66
- new Promise((resolve, reject) => {
67
- emitter.emit('error', new Error('Error'));
68
-
69
- return resolve();
70
- }),
71
- ]);
72
-
73
- equal(gotErr.toString(), 'Error: Error', 'Got error event');
74
-
75
- const [gotMessage] = await all([
76
- new Promise((resolve, reject) => {
77
- eventEmitter.on('event', data => resolve(data));
78
- }),
79
- new Promise((resolve, reject) => {
80
- emitter.emit('message', encode({event: 'event', data: 'data'}));
81
-
82
- return resolve();
83
- }),
84
- ]);
85
-
86
- equal(gotMessage, 'data', 'Got expected response');
87
-
88
- emitter.emit('open');
89
-
90
- emitter.emit('close');
91
-
92
- eventEmitter.cancel();
93
-
94
- return;
95
- });
96
- });
97
- });
@@ -1,29 +0,0 @@
1
- const test = require('node:test');
2
-
3
- const grpcResponse = require('./../../lnd_gateway/grpc_response');
4
-
5
- const tests = [
6
- {
7
- args: {credentials: {}},
8
- description: 'Middleware attempts unauthenticated request',
9
- expected: {},
10
- },
11
- {
12
- args: {credentials: {socket: 'socket'}, locals: {auth: {bearer: '00'}}},
13
- description: 'Middleware attempts authenticated socket request',
14
- expected: {},
15
- },
16
- ];
17
-
18
- tests.forEach(({args, description, expected}) => {
19
- return test(description, (t, end) => {
20
- const locals = args.locals || {};
21
- const {middleware} = grpcResponse(args);
22
-
23
- const res = {locals, send: () => {}, status: () => {}, type: () => {}};
24
-
25
- middleware({params: {}}, res);
26
-
27
- return end();
28
- });
29
- });
@@ -1,20 +0,0 @@
1
- const {equal} = require('node:assert').strict;
2
- const test = require('node:test');
3
-
4
- const {grpcRouter} = require('./../../');
5
-
6
- const tests = [
7
- {
8
- args: {},
9
- description: 'A gRPC gateway router is returned',
10
- expected: {type: 'function'},
11
- },
12
- ];
13
-
14
- tests.forEach(({args, description, expected}) => {
15
- return test(description, (t, end) => {
16
- equal(typeof grpcRouter({}), expected.type, 'Got expected result type');
17
-
18
- return end();
19
- });
20
- });
@@ -1,48 +0,0 @@
1
- const {equal} = require('node:assert').strict;
2
- const test = require('node:test');
3
-
4
- const handleErrors = require('./../../lnd_gateway/handle_errors');
5
-
6
- const tests = [
7
- {
8
- args: {res: {headersSent: true}},
9
- description: 'Headers already sent disables error handling',
10
- },
11
- {
12
- args: {err: [501]},
13
- description: 'Error code is returned',
14
- },
15
- {
16
- args: {err: []},
17
- description: 'Default error code is returned',
18
- },
19
- {
20
- args: {err: new Error('err')},
21
- description: 'Default error code is returned when the error is unknown',
22
- },
23
- ];
24
-
25
- tests.forEach(({args, description, expected}) => {
26
- return test(description, (t, end) => {
27
- const {middleware} = handleErrors({});
28
-
29
- const next = !!args.res && !!args.res.headersSent ? () => end() : null;
30
-
31
- const res = {headersSent: args.res && !!args.res.headersSent};
32
-
33
- if (!!args.err) {
34
- const [expectedCode] = Array.isArray(args.err) ? args.err : [500];
35
- let code;
36
-
37
- res.status = n => code = n;
38
-
39
- res.send = () => {
40
- equal(code, expectedCode || 500, 'Got expected code');
41
-
42
- return end();
43
- };
44
- }
45
-
46
- return middleware(args.err, {}, res, next);
47
- });
48
- });
@@ -1,67 +0,0 @@
1
- const {deepStrictEqual} = require('node:assert').strict;
2
- const test = require('node:test');
3
- const {throws} = require('node:assert').strict;
4
-
5
- const websocket = require('ws');
6
-
7
- const {lndGateway} = require('./../../');
8
-
9
- const tests = [
10
- {
11
- args: {},
12
- description: 'A request function is required',
13
- error: 'ExpectedRequestMethodForLndGateway',
14
- },
15
- {
16
- args: {request: () => {}},
17
- description: 'A url endpoint is required',
18
- error: 'ExpectedUrlForLndGateway',
19
- },
20
- {
21
- args: {request: () => {}, url: 'url'},
22
- description: 'A websocket constructor is required',
23
- error: 'ExpectedWebSocketConstructorForLndGateway',
24
- },
25
- {
26
- args: {websocket, request: (args, cbk) => cbk(args), url: 'url'},
27
- description: 'A LND gateway is returned',
28
- expected: {
29
- err: [
30
- 503,
31
- 'UnexpectedErrorFromLndGatewayServer',
32
- {
33
- err: {
34
- auth: {bearer: undefined},
35
- body: Buffer.from('a0', 'hex'),
36
- encoding: null,
37
- forever: true,
38
- headers: {'content-type': 'application/cbor'},
39
- method: 'POST',
40
- timeout: 25000,
41
- uri: 'url/unlocker/genSeed',
42
- },
43
- },
44
- ],
45
- },
46
- },
47
- ];
48
-
49
- tests.forEach(({args, description, error, expected}) => {
50
- return test(description, (t, end) => {
51
- if (!!error) {
52
- throws(() => lndGateway(args), new Error(error), 'Got expected error');
53
-
54
- return end();
55
- } else {
56
- const {lnd} = lndGateway(args);
57
-
58
- lnd.unlocker.genSeed({}, (err, res) => {
59
- const [code, message, details] = err;
60
-
61
- deepStrictEqual(err, expected.err, 'Got expected result');
62
-
63
- return end();
64
- });
65
- }
66
- });
67
- });
@@ -1,51 +0,0 @@
1
- const {equal} = require('node:assert').strict;
2
- const test = require('node:test');
3
-
4
- const returnResponse = require('./../../lnd_gateway/return_response');
5
-
6
- const tests = [
7
- {
8
- args: {err: true},
9
- description: 'An error is returned',
10
- expected: {code: 500},
11
- },
12
- {
13
- args: {response: {err: 'err', res: 'res'}},
14
- description: 'A response is returned',
15
- expected: {
16
- body: Buffer.from('a263657272636572726372657363726573', 'hex'),
17
- type: 'application/cbor',
18
- },
19
- },
20
- {
21
- args: {response: {err: 'err', res: Symbol('foo')}},
22
- description: 'Encoding errors return a server error',
23
- expected: {code: 500},
24
- },
25
- ];
26
-
27
- tests.forEach(({args, description, expected}) => {
28
- return test(description, (t, end) => {
29
- let code;
30
- let type;
31
-
32
- const res = {
33
- send: body => {
34
- if (!!expected.code) {
35
- equal(code, expected.code, 'Got expected code');
36
- } else {
37
- equal(type, expected.type, 'Got expected body type');
38
- equal(body.equals(expected.body), true, 'Got expected body data');
39
- }
40
-
41
- return end();
42
- },
43
- status: n => code = n,
44
- type: n => type = n,
45
- };
46
-
47
- returnResponse({res}).responder(args.err, args.response);
48
-
49
- return;
50
- });
51
- });
@@ -1,32 +0,0 @@
1
- const {equal} = require('node:assert').strict;
2
- const test = require('node:test');
3
-
4
- const wsUrl = require('./../../lnd_gateway/ws_url');
5
-
6
- const tests = [
7
- {
8
- args: {url: 'http://url'},
9
- description: 'A plaintext protocol URL is converted to plaintext ws URL',
10
- expected: {url: 'ws://url/'},
11
- },
12
- {
13
- args: {url: 'https://url'},
14
- description: 'An encrypted URL is converted to encrypted ws URL',
15
- expected: {url: 'wss://url/'},
16
- },
17
- {
18
- args: {url: 'ftp://url'},
19
- description: 'An unrecognized scheme is kept the same',
20
- expected: {url: 'ftp://url/'},
21
- },
22
- ];
23
-
24
- tests.forEach(({args, description, expected}) => {
25
- return test(description, (t, end) => {
26
- const {url} = wsUrl(args);
27
-
28
- equal(url, expected.url, 'Got expected websocket url');
29
-
30
- return end();
31
- });
32
- });
@@ -1,12 +0,0 @@
1
- import {expectType, expectError} from 'tsd';
2
- import WebSocket = require('ws');
3
- import {emitGrpcEvents} from '../../lnd_gateway';
4
-
5
- const ws = new WebSocket('address');
6
-
7
- expectError(emitGrpcEvents());
8
- expectError(emitGrpcEvents({}));
9
- expectType<void>(emitGrpcEvents({ws}));
10
- expectType<void>(emitGrpcEvents({cert: '00', ws}));
11
- expectType<void>(emitGrpcEvents({socket: 'socket', ws}));
12
- expectType<void>(emitGrpcEvents({cert: '00', socket: 'socket', ws}));
@@ -1,8 +0,0 @@
1
- import {expectType} from 'tsd';
2
- import {Router} from 'express';
3
- import {grpcRouter} from '../../lnd_gateway';
4
-
5
- expectType<Router>(grpcRouter({}));
6
- expectType<Router>(grpcRouter({cert: '00'}));
7
- expectType<Router>(grpcRouter({socket: 'socket'}));
8
- expectType<Router>(grpcRouter({cert: '00', socket: 'socket'}));
@@ -1,36 +0,0 @@
1
- import {expectType, expectError} from 'tsd';
2
- import request = require('request');
3
- import websocket = require('ws');
4
- import {UnauthenticatedLnd, AuthenticatedLnd} from '../../lnd_grpc';
5
- import {lndGateway} from '../../lnd_gateway';
6
-
7
- expectError(lndGateway());
8
- expectError(lndGateway({}));
9
- expectError(
10
- lndGateway({
11
- request,
12
- })
13
- );
14
- expectError(lndGateway({request, url: 'url'}));
15
- expectType<{lnd: UnauthenticatedLnd}>(
16
- lndGateway({request, url: 'url', websocket})
17
- );
18
- expectError<{lnd: AuthenticatedLnd}>(
19
- lndGateway({request, url: 'url', websocket})
20
- );
21
- expectType<{lnd: AuthenticatedLnd}>(
22
- lndGateway({
23
- request,
24
- url: 'url',
25
- websocket,
26
- macaroon: Buffer.alloc(1).toString('hex'),
27
- })
28
- );
29
- expectError<{lnd: UnauthenticatedLnd}>(
30
- lndGateway({
31
- request,
32
- url: 'url',
33
- websocket,
34
- macaroon: Buffer.alloc(1).toString('hex'),
35
- })
36
- );