paid-services 3.9.1 → 3.10.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,10 @@
1
1
  # Versions
2
2
 
3
+ ## Version 3.10.0
4
+
5
+ - `createAnchoredTrade`: Add method to create an anchored open trade
6
+ - `getAnchoredTrade`: Add method to get an anchored open trade
7
+
3
8
  ## Version 3.9.1
4
9
 
5
10
  - `decodeTrade`: Add method to decode a trade-secret
package/index.js CHANGED
@@ -1,7 +1,9 @@
1
1
  const {changeChannelCapacity} = require('./capacity');
2
2
  const {confirmServiceUse} = require('./client');
3
+ const {createAnchoredTrade} = require('./trades');
3
4
  const {decodeTrade} = require('./trades');
4
5
  const {encodeTrade} = require('./trades');
6
+ const {getAnchoredTrade} = require('./trades');
5
7
  const {getServiceSchema} = require('./client');
6
8
  const {getServicesList} = require('./client');
7
9
  const {makePeerRequest} = require('./p2p');
@@ -17,8 +19,10 @@ const serviceIds = schema.types;
17
19
  module.exports = {
18
20
  changeChannelCapacity,
19
21
  confirmServiceUse,
22
+ createAnchoredTrade,
20
23
  decodeTrade,
21
24
  encodeTrade,
25
+ getAnchoredTrade,
22
26
  getServiceSchema,
23
27
  getServicesList,
24
28
  makePeerRequest,
package/package.json CHANGED
@@ -12,8 +12,8 @@
12
12
  "bolt01": "1.2.3",
13
13
  "bolt07": "1.8.0",
14
14
  "invoices": "2.0.3",
15
- "ln-service": "53.4.2",
16
- "ln-sync": "3.6.1"
15
+ "ln-service": "53.5.0",
16
+ "ln-sync": "3.7.0"
17
17
  },
18
18
  "description": "Lightning Paid Services library",
19
19
  "devDependencies": {
@@ -40,5 +40,5 @@
40
40
  "integration-tests": "tap -j 2 --branches=1 --functions=1 --lines=1 --statements=1 -t 180 test/integration/*.js",
41
41
  "test": "tap --branches=1 --functions=1 --lines=1 --statements=1 -t 60 test/actions/*.js test/capacity/*.js test/client/*.js test/config/*.js test/p2p/*.js test/records/*.js test/respond/*.js test/server/*.js test/server/*.js test/services/*.js test/trades/*.js"
42
42
  },
43
- "version": "3.9.1"
43
+ "version": "3.10.0"
44
44
  }
@@ -0,0 +1,86 @@
1
+ const asyncAuto = require('async/auto');
2
+ const {createInvoice} = require('ln-service');
3
+ const {returnResult} = require('asyncjs-util');
4
+
5
+ const encodeAnchoredTrade = require('./encode_anchored_trade');
6
+
7
+ const maxDescriptionLength = 100;
8
+ const maxSecretLength = 100;
9
+
10
+ /** Create an anchored trade
11
+
12
+ {
13
+ description: <Trade Description String>
14
+ expires_at: <Trade Expires at ISO 8601 Date String>
15
+ lnd: <Authenticated LND API Object>
16
+ secret: <Trade Secret String>
17
+ tokens: <Trade Price Tokens Number>
18
+ }
19
+
20
+ @returns via cbk or Promise
21
+ {
22
+ id: <Anchored Trade Id Hex String>
23
+ }
24
+ */
25
+ module.exports = (args, cbk) => {
26
+ return new Promise((resolve, reject) => {
27
+ return asyncAuto({
28
+ // Check arguments
29
+ validate: cbk => {
30
+ if (args.description === undefined) {
31
+ return cbk([400, 'ExpectedTradeDescriptionToCreateAnchoredTrade']);
32
+ }
33
+
34
+ if (args.description.length > maxDescriptionLength) {
35
+ return cbk([400, 'ExpectedShorterTradeDescriptionToCreateTrade']);
36
+ }
37
+
38
+ if (!args.expires_at) {
39
+ return cbk([400, 'ExpectedTradeExpirationDateToCreateTrade']);
40
+ }
41
+
42
+ if (args.expires_at < new Date().toISOString()) {
43
+ return cbk([400, 'ExpectedLaterExpiresAtDateToCreateTrade']);
44
+ }
45
+
46
+ if (!args.lnd) {
47
+ return cbk([400, 'ExpectedAuthenticatedLndToCreateAnchoredTrade']);
48
+ }
49
+
50
+ if (!args.secret) {
51
+ return cbk([400, 'ExpectedTradeSecretToCreateAnchoredTrade']);
52
+ }
53
+
54
+ if (args.secret.length > maxSecretLength) {
55
+ return cbk([400, 'ExpectedShorterTradeSecretToCreateAnchoredTrade']);
56
+ }
57
+
58
+ if (!args.tokens) {
59
+ return cbk([400, 'ExpectedTokensPriceToCreateAnchoredTrade']);
60
+ }
61
+
62
+ return cbk();
63
+ },
64
+
65
+ // Create the trade
66
+ create: ['validate', ({}, cbk) => {
67
+ const {encoded} = encodeAnchoredTrade({
68
+ description: args.description,
69
+ secret: args.secret,
70
+ });
71
+
72
+ return createInvoice({
73
+ description: encoded,
74
+ expires_at: args.expires_at,
75
+ lnd: args.lnd,
76
+ tokens: args.tokens,
77
+ },
78
+ cbk);
79
+ }],
80
+
81
+ // Final trade
82
+ trade: ['create', ({create}, cbk) => cbk(null, {id: create.id})],
83
+ },
84
+ returnResult({reject, resolve, of: 'trade'}, cbk));
85
+ });
86
+ };
@@ -1,11 +1,10 @@
1
1
  const asyncAuto = require('async/auto');
2
- const {createInvoice} = require('ln-service');
3
2
  const {getChannels} = require('ln-service');
4
3
  const {getNetwork} = require('ln-sync');
5
4
  const {getWalletInfo} = require('ln-service');
6
5
  const {returnResult} = require('asyncjs-util');
7
6
 
8
- const encodeAnchoredTrade = require('./encode_anchored_trade');
7
+ const createAnchoredTrade = require('./create_anchored_trade');
9
8
  const finalizeTradeSecret = require('./finalize_trade_secret');
10
9
  const serviceOpenTrade = require('./service_open_trade');
11
10
 
@@ -204,15 +203,11 @@ module.exports = ({ask, lnd, logger}, cbk) => {
204
203
  return cbk();
205
204
  }
206
205
 
207
- const {encoded} = encodeAnchoredTrade({
208
- description: askForDescription.description,
209
- secret: askForSecret.secret,
210
- });
211
-
212
- return createInvoice({
206
+ return createAnchoredTrade({
213
207
  lnd,
214
- description: encoded,
208
+ description: askForDescription.description,
215
209
  expires_at: futureDate(daysAsMs(askForExpiration.days)),
210
+ secret: askForSecret.secret,
216
211
  tokens: asNumber(askForPrice.tokens),
217
212
  },
218
213
  cbk);
@@ -0,0 +1,72 @@
1
+ const asyncAuto = require('async/auto');
2
+ const asyncReflect = require('async/reflect');
3
+ const {getInvoice} = require('ln-service');
4
+ const {returnResult} = require('asyncjs-util');
5
+
6
+ const decodeAnchoredTrade = require('./decode_anchored_trade');
7
+
8
+ /** Get anchored trade
9
+
10
+ {
11
+ id: <Trade Id Hex String>
12
+ lnd: <Authenticated LND API Object>
13
+ }
14
+
15
+ @returns via cbk or Promise
16
+ {
17
+ [trade]: {
18
+ description: <Trade Description String>
19
+ expires_at: <Trade Expires at ISO 8601 Date String>
20
+ secret: <Trade Secret String>
21
+ tokens: <Trade Price Tokens Number>
22
+ }
23
+ }
24
+ */
25
+ module.exports = ({id, lnd}, cbk) => {
26
+ return new Promise((resolve, reject) => {
27
+ return asyncAuto({
28
+ // Check arguments
29
+ validate: cbk => {
30
+ if (!id) {
31
+ return cbk([400, 'ExpectedIdToGetAnchoredTrade']);
32
+ }
33
+
34
+ if (!lnd) {
35
+ return cbk([400, 'ExpectedLndToGetAnchoredTrade']);
36
+ }
37
+
38
+ return cbk();
39
+ },
40
+
41
+ // Get invoice
42
+ getInvoice: ['validate', asyncReflect(({}, cbk) => {
43
+ return getInvoice({id, lnd}, cbk);
44
+ })],
45
+
46
+ // Decode trade details
47
+ decode: ['getInvoice', ({getInvoice}, cbk) => {
48
+ if (!getInvoice.value) {
49
+ return cbk(null, {});
50
+ }
51
+
52
+ const encoded = getInvoice.value.description;
53
+
54
+ const {trade} = decodeAnchoredTrade({encoded});
55
+
56
+ if (!trade) {
57
+ return cbk([400, 'ExpectedAnchoredTradeData']);
58
+ }
59
+
60
+ return cbk(null, {
61
+ trade: {
62
+ description: trade.description,
63
+ expires_at: getInvoice.value.expires_at,
64
+ secret: trade.secret,
65
+ tokens: getInvoice.value.tokens,
66
+ },
67
+ });
68
+ }],
69
+ },
70
+ returnResult({reject, resolve, of: 'decode'}, cbk));
71
+ });
72
+ };
package/trades/index.js CHANGED
@@ -1,11 +1,15 @@
1
+ const createAnchoredTrade = require('./create_anchored_trade');
1
2
  const decodeTrade = require('./decode_trade');
2
3
  const encodeTrade = require('./encode_trade');
4
+ const getAnchoredTrade = require('./get_anchored_trade');
3
5
  const manageTrades = require('./manage_trades');
4
6
  const serviceAnchoredTrades = require('./service_anchored_trades');
5
7
 
6
8
  module.exports = {
9
+ createAnchoredTrade,
7
10
  decodeTrade,
8
11
  encodeTrade,
12
+ getAnchoredTrade,
9
13
  manageTrades,
10
14
  serviceAnchoredTrades,
11
15
  };