@bitpay-labs/bitcore-wallet-service 11.8.1 → 11.9.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/bws.example.config.js +4 -2
- package/package.json +4 -4
- package/src/bws.ts +2 -0
- package/src/config.ts +4 -2
- package/src/externalservices/moonpay.ts +85 -1
- package/src/lib/blockchainexplorers/v8.ts +1 -1
- package/src/lib/common/utils.ts +18 -5
- package/src/lib/expressapp.ts +63 -2378
- package/src/lib/model/txproposal.ts +14 -10
- package/src/lib/routes/advertisements.ts +151 -0
- package/src/lib/routes/blockchain.ts +151 -0
- package/src/lib/routes/context.ts +149 -0
- package/src/lib/routes/maintenance.ts +114 -0
- package/src/lib/routes/moralis.ts +89 -0
- package/src/lib/routes/notifications.ts +135 -0
- package/src/lib/routes/services.ts +540 -0
- package/src/lib/routes/setup.ts +86 -0
- package/src/lib/routes/transactions.ts +196 -0
- package/src/lib/routes/walletdata.ts +166 -0
- package/src/lib/routes/wallets.ts +288 -0
- package/src/lib/server.ts +24 -1
- package/src/lib/storage.ts +3 -0
- package/test/integration/externalservices/moonpay.test.ts +149 -0
- package/test/utils.test.ts +29 -0
- package/ts_build/package.json +4 -4
- package/ts_build/src/bws.js +3 -0
- package/ts_build/src/bws.js.map +1 -1
- package/ts_build/src/config.d.ts.map +1 -1
- package/ts_build/src/config.js.map +1 -1
- package/ts_build/src/externalservices/moonpay.d.ts +4 -0
- package/ts_build/src/externalservices/moonpay.d.ts.map +1 -1
- package/ts_build/src/externalservices/moonpay.js +68 -1
- package/ts_build/src/externalservices/moonpay.js.map +1 -1
- package/ts_build/src/lib/blockchainexplorers/v8.js +1 -1
- package/ts_build/src/lib/common/index.d.ts +1 -0
- package/ts_build/src/lib/common/index.d.ts.map +1 -1
- package/ts_build/src/lib/common/utils.d.ts +1 -0
- package/ts_build/src/lib/common/utils.d.ts.map +1 -1
- package/ts_build/src/lib/common/utils.js +20 -9
- package/ts_build/src/lib/common/utils.js.map +1 -1
- package/ts_build/src/lib/expressapp.d.ts.map +1 -1
- package/ts_build/src/lib/expressapp.js +64 -2224
- package/ts_build/src/lib/expressapp.js.map +1 -1
- package/ts_build/src/lib/model/txproposal.d.ts +1 -4
- package/ts_build/src/lib/model/txproposal.d.ts.map +1 -1
- package/ts_build/src/lib/model/txproposal.js +13 -9
- package/ts_build/src/lib/model/txproposal.js.map +1 -1
- package/ts_build/src/lib/routes/advertisements.d.ts +11 -0
- package/ts_build/src/lib/routes/advertisements.d.ts.map +1 -0
- package/ts_build/src/lib/routes/advertisements.js +119 -0
- package/ts_build/src/lib/routes/advertisements.js.map +1 -0
- package/ts_build/src/lib/routes/blockchain.d.ts +13 -0
- package/ts_build/src/lib/routes/blockchain.d.ts.map +1 -0
- package/ts_build/src/lib/routes/blockchain.js +125 -0
- package/ts_build/src/lib/routes/blockchain.js.map +1 -0
- package/ts_build/src/lib/routes/context.d.ts +12 -0
- package/ts_build/src/lib/routes/context.d.ts.map +1 -0
- package/ts_build/src/lib/routes/context.js +115 -0
- package/ts_build/src/lib/routes/context.js.map +1 -0
- package/ts_build/src/lib/routes/maintenance.d.ts +10 -0
- package/ts_build/src/lib/routes/maintenance.d.ts.map +1 -0
- package/ts_build/src/lib/routes/maintenance.js +101 -0
- package/ts_build/src/lib/routes/maintenance.js.map +1 -0
- package/ts_build/src/lib/routes/moralis.d.ts +9 -0
- package/ts_build/src/lib/routes/moralis.d.ts.map +1 -0
- package/ts_build/src/lib/routes/moralis.js +78 -0
- package/ts_build/src/lib/routes/moralis.js.map +1 -0
- package/ts_build/src/lib/routes/notifications.d.ts +10 -0
- package/ts_build/src/lib/routes/notifications.d.ts.map +1 -0
- package/ts_build/src/lib/routes/notifications.js +120 -0
- package/ts_build/src/lib/routes/notifications.js.map +1 -0
- package/ts_build/src/lib/routes/services.d.ts +11 -0
- package/ts_build/src/lib/routes/services.d.ts.map +1 -0
- package/ts_build/src/lib/routes/services.js +440 -0
- package/ts_build/src/lib/routes/services.js.map +1 -0
- package/ts_build/src/lib/routes/setup.d.ts +4 -0
- package/ts_build/src/lib/routes/setup.d.ts.map +1 -0
- package/ts_build/src/lib/routes/setup.js +79 -0
- package/ts_build/src/lib/routes/setup.js.map +1 -0
- package/ts_build/src/lib/routes/transactions.d.ts +9 -0
- package/ts_build/src/lib/routes/transactions.d.ts.map +1 -0
- package/ts_build/src/lib/routes/transactions.js +188 -0
- package/ts_build/src/lib/routes/transactions.js.map +1 -0
- package/ts_build/src/lib/routes/walletdata.d.ts +10 -0
- package/ts_build/src/lib/routes/walletdata.d.ts.map +1 -0
- package/ts_build/src/lib/routes/walletdata.js +152 -0
- package/ts_build/src/lib/routes/walletdata.js.map +1 -0
- package/ts_build/src/lib/routes/wallets.d.ts +13 -0
- package/ts_build/src/lib/routes/wallets.d.ts.map +1 -0
- package/ts_build/src/lib/routes/wallets.js +291 -0
- package/ts_build/src/lib/routes/wallets.js.map +1 -0
- package/ts_build/src/lib/server.d.ts.map +1 -1
- package/ts_build/src/lib/server.js +19 -1
- package/ts_build/src/lib/server.js.map +1 -1
- package/ts_build/src/lib/storage.d.ts.map +1 -1
- package/ts_build/src/lib/storage.js +3 -0
- package/ts_build/src/lib/storage.js.map +1 -1
- package/ts_build/test/integration/externalservices/moonpay.test.js +139 -0
- package/ts_build/test/integration/externalservices/moonpay.test.js.map +1 -1
- package/ts_build/test/utils.test.js +23 -0
- package/ts_build/test/utils.test.js.map +1 -1
package/bws.example.config.js
CHANGED
|
@@ -214,10 +214,11 @@ module.exports = {
|
|
|
214
214
|
// moonpay: {
|
|
215
215
|
// sandbox: {
|
|
216
216
|
// apiKey: 'moonpay_sandbox_api_key_here',
|
|
217
|
-
// api: 'https://api.moonpay.
|
|
217
|
+
// api: 'https://api.moonpay.dev',
|
|
218
218
|
// widgetApi: 'https://buy-sandbox.moonpay.com',
|
|
219
219
|
// sellWidgetApi: 'https://sell-sandbox.moonpay.com',
|
|
220
220
|
// secretKey: 'moonpay_sandbox_secret_key_here',
|
|
221
|
+
// secretKeyEmbedded: 'moonpay_sandbox_secret_key_embedded_here',
|
|
221
222
|
// },
|
|
222
223
|
// production: {
|
|
223
224
|
// apiKey: 'moonpay_production_api_key_here',
|
|
@@ -225,10 +226,11 @@ module.exports = {
|
|
|
225
226
|
// widgetApi: 'https://buy.moonpay.com',
|
|
226
227
|
// sellWidgetApi: 'https://sell.moonpay.com',
|
|
227
228
|
// secretKey: 'moonpay_production_secret_key_here',
|
|
229
|
+
// secretKeyEmbedded: 'moonpay_production_secret_key_embedded_here',
|
|
228
230
|
// },
|
|
229
231
|
// sandboxWeb: {
|
|
230
232
|
// apiKey: 'moonpay_sandbox_web_api_key_here',
|
|
231
|
-
// api: 'https://api.moonpay.
|
|
233
|
+
// api: 'https://api.moonpay.dev',
|
|
232
234
|
// widgetApi: 'https://buy-sandbox.moonpay.com',
|
|
233
235
|
// sellWidgetApi: 'https://sell-sandbox.moonpay.com',
|
|
234
236
|
// secretKey: 'moonpay_sandbox_web_secret_key_here',
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@bitpay-labs/bitcore-wallet-service",
|
|
3
3
|
"description": "A service for Mutisig HD Bitcoin Wallets",
|
|
4
4
|
"author": "BitPay Inc",
|
|
5
|
-
"version": "11.
|
|
5
|
+
"version": "11.9.0",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "ts_build/src/index.js",
|
|
8
8
|
"types": "./ts_build/src/index.d.ts",
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"@bitpay-labs/bitcore-logging": "^11.8.1",
|
|
47
|
-
"@bitpay-labs/bitcore-tss": "^11.
|
|
48
|
-
"@bitpay-labs/crypto-wallet-core": "^11.
|
|
47
|
+
"@bitpay-labs/bitcore-tss": "^11.9.0",
|
|
48
|
+
"@bitpay-labs/crypto-wallet-core": "^11.9.0",
|
|
49
49
|
"@sendgrid/mail": "6.5.4",
|
|
50
50
|
"abi-decoder": "2.4.0",
|
|
51
51
|
"async": "0.9.2",
|
|
@@ -126,5 +126,5 @@
|
|
|
126
126
|
"email": "kjoseph@bitpay.com"
|
|
127
127
|
}
|
|
128
128
|
],
|
|
129
|
-
"gitHead": "
|
|
129
|
+
"gitHead": "3491bf1216d3c6b103c591564726333d55ad8c6d"
|
|
130
130
|
}
|
package/src/bws.ts
CHANGED
package/src/config.ts
CHANGED
|
@@ -289,10 +289,11 @@ const Config = (): any => {
|
|
|
289
289
|
// moonpay: {
|
|
290
290
|
// sandbox: {
|
|
291
291
|
// apiKey: 'moonpay_sandbox_api_key_here',
|
|
292
|
-
// api: 'https://api.moonpay.
|
|
292
|
+
// api: 'https://api.moonpay.dev',
|
|
293
293
|
// widgetApi: 'https://buy-sandbox.moonpay.com',
|
|
294
294
|
// sellWidgetApi: 'https://sell-sandbox.moonpay.com',
|
|
295
295
|
// secretKey: 'moonpay_sandbox_secret_key_here',
|
|
296
|
+
// secretKeyEmbedded: 'moonpay_sandbox_secret_key_embedded_here',
|
|
296
297
|
// },
|
|
297
298
|
// production: {
|
|
298
299
|
// apiKey: 'moonpay_production_api_key_here',
|
|
@@ -300,10 +301,11 @@ const Config = (): any => {
|
|
|
300
301
|
// widgetApi: 'https://buy.moonpay.com',
|
|
301
302
|
// sellWidgetApi: 'https://sell.moonpay.com',
|
|
302
303
|
// secretKey: 'moonpay_production_secret_key_here',
|
|
304
|
+
// secretKeyEmbedded: 'moonpay_production_secret_key_embedded_here',
|
|
303
305
|
// },
|
|
304
306
|
// sandboxWeb: {
|
|
305
307
|
// apiKey: 'moonpay_sandbox_web_api_key_here',
|
|
306
|
-
// api: 'https://api.moonpay.
|
|
308
|
+
// api: 'https://api.moonpay.dev',
|
|
307
309
|
// widgetApi: 'https://buy-sandbox.moonpay.com',
|
|
308
310
|
// sellWidgetApi: 'https://sell-sandbox.moonpay.com',
|
|
309
311
|
// secretKey: 'moonpay_sandbox_web_secret_key_here',
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BitcoreLib as Bitcore } from '@bitpay-labs/crypto-wallet-core';
|
|
2
2
|
import * as request from 'request';
|
|
3
3
|
import config from '../config';
|
|
4
|
+
import { Utils } from '../lib/common/utils';
|
|
4
5
|
import { ClientError } from '../lib/errors/clienterror';
|
|
5
6
|
import { checkRequired } from '../lib/server';
|
|
6
7
|
|
|
@@ -25,12 +26,14 @@ export class MoonpayService {
|
|
|
25
26
|
SELL_WIDGET_API: string;
|
|
26
27
|
API_KEY: string;
|
|
27
28
|
SECRET_KEY: string;
|
|
29
|
+
SECRET_KEY_EMBEDDED: string | undefined;
|
|
28
30
|
} = {
|
|
29
31
|
API: config.moonpay[env].api,
|
|
30
32
|
WIDGET_API: config.moonpay[env].widgetApi,
|
|
31
33
|
SELL_WIDGET_API: config.moonpay[env].sellWidgetApi,
|
|
32
34
|
API_KEY: config.moonpay[env].apiKey,
|
|
33
|
-
SECRET_KEY: config.moonpay[env].secretKey
|
|
35
|
+
SECRET_KEY: config.moonpay[env].secretKey,
|
|
36
|
+
SECRET_KEY_EMBEDDED: config.moonpay[env].secretKeyEmbedded
|
|
34
37
|
};
|
|
35
38
|
|
|
36
39
|
return keys;
|
|
@@ -435,4 +438,85 @@ export class MoonpayService {
|
|
|
435
438
|
);
|
|
436
439
|
});
|
|
437
440
|
}
|
|
441
|
+
|
|
442
|
+
moonpayCreateSession(req): Promise<{ sessionToken: string }> {
|
|
443
|
+
return new Promise((resolve, reject) => {
|
|
444
|
+
const keys = this.moonpayGetKeys(req);
|
|
445
|
+
const API = keys.API;
|
|
446
|
+
const SECRET_KEY = keys.SECRET_KEY_EMBEDDED;
|
|
447
|
+
|
|
448
|
+
if (!checkRequired(req.body, ['externalCustomerId'])) {
|
|
449
|
+
return reject(new ClientError("Moonpay's request missing arguments"));
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
const deviceIp = Utils.getIpFromReq(req);
|
|
453
|
+
if (!deviceIp) {
|
|
454
|
+
return reject(new ClientError('Could not determine device IP address'));
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
const headers = {
|
|
458
|
+
'Content-Type': 'application/json',
|
|
459
|
+
Authorization: 'Api-Key ' + SECRET_KEY,
|
|
460
|
+
};
|
|
461
|
+
|
|
462
|
+
const body: any = {
|
|
463
|
+
externalCustomerId: req.body.externalCustomerId,
|
|
464
|
+
deviceIp
|
|
465
|
+
};
|
|
466
|
+
if (req.body.email) body.email = req.body.email;
|
|
467
|
+
if (req.body.phoneNumber) body.phoneNumber = req.body.phoneNumber;
|
|
468
|
+
|
|
469
|
+
const URL = API + '/platform/v1/session';
|
|
470
|
+
|
|
471
|
+
this.request.post(
|
|
472
|
+
URL,
|
|
473
|
+
{
|
|
474
|
+
headers,
|
|
475
|
+
body,
|
|
476
|
+
json: true
|
|
477
|
+
},
|
|
478
|
+
(err, data) => {
|
|
479
|
+
if (err) {
|
|
480
|
+
return reject(err.body ?? err);
|
|
481
|
+
} else {
|
|
482
|
+
return resolve(data.body ?? data);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
);
|
|
486
|
+
});
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
moonpayRevokeActiveSession(req): Promise<void> {
|
|
490
|
+
return new Promise((resolve, reject) => {
|
|
491
|
+
const keys = this.moonpayGetKeys(req);
|
|
492
|
+
const API = keys.API;
|
|
493
|
+
const SECRET_KEY = keys.SECRET_KEY_EMBEDDED;
|
|
494
|
+
|
|
495
|
+
if (!checkRequired(req.body, ['externalCustomerId'])) {
|
|
496
|
+
return reject(new ClientError("Moonpay's request missing arguments"));
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
const headers = {
|
|
500
|
+
Accept: 'application/json',
|
|
501
|
+
Authorization: 'Api-Key ' + SECRET_KEY
|
|
502
|
+
};
|
|
503
|
+
|
|
504
|
+
const URL = API + '/platform/v1/sessions?externalCustomerId=' + encodeURIComponent(req.body.externalCustomerId);
|
|
505
|
+
|
|
506
|
+
this.request.delete(
|
|
507
|
+
URL,
|
|
508
|
+
{
|
|
509
|
+
headers,
|
|
510
|
+
json: true
|
|
511
|
+
},
|
|
512
|
+
(err, data) => {
|
|
513
|
+
if (err) {
|
|
514
|
+
return reject(err.body ? err.body : err);
|
|
515
|
+
} else {
|
|
516
|
+
return resolve(data.body ? data.body : data);
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
);
|
|
520
|
+
});
|
|
521
|
+
}
|
|
438
522
|
}
|
|
@@ -695,7 +695,7 @@ export class V8 {
|
|
|
695
695
|
return cb(null, ret || Defaults.MIN_SOL_BALANCE);
|
|
696
696
|
} catch (err) {
|
|
697
697
|
logger.error('[v8.js] Error getting rentMinimum: %o', err);
|
|
698
|
-
return cb(null, Defaults.
|
|
698
|
+
return cb(null, Defaults.MIN_SOL_BALANCE);
|
|
699
699
|
}
|
|
700
700
|
})
|
|
701
701
|
.catch(cb);
|
package/src/lib/common/utils.ts
CHANGED
|
@@ -282,13 +282,20 @@ export const Utils = {
|
|
|
282
282
|
},
|
|
283
283
|
|
|
284
284
|
getIpFromReq(req): string {
|
|
285
|
+
let ip = '';
|
|
285
286
|
if (req.headers) {
|
|
286
|
-
if (req.headers['x-forwarded-for'])
|
|
287
|
-
|
|
287
|
+
if (req.headers['x-forwarded-for']) {
|
|
288
|
+
ip = req.headers['x-forwarded-for'].split(',')[0];
|
|
289
|
+
} else if (req.headers['x-real-ip']) {
|
|
290
|
+
ip = req.headers['x-real-ip'].split(',')[0];
|
|
291
|
+
}
|
|
288
292
|
}
|
|
289
|
-
if (req.ip)
|
|
290
|
-
if (
|
|
291
|
-
|
|
293
|
+
if (!ip && req.ip) ip = req.ip;
|
|
294
|
+
if (!ip && req.connection?.remoteAddress) ip = req.connection.remoteAddress;
|
|
295
|
+
|
|
296
|
+
if (ip && typeof ip === 'string') ip = ip.trim();
|
|
297
|
+
|
|
298
|
+
return ip;
|
|
292
299
|
},
|
|
293
300
|
|
|
294
301
|
checkValueInCollection(value, collection) {
|
|
@@ -365,6 +372,12 @@ export const Utils = {
|
|
|
365
372
|
return 'testnet';
|
|
366
373
|
},
|
|
367
374
|
|
|
375
|
+
getAddressNetworkForDbLookup(address, network) {
|
|
376
|
+
const generic = Utils.getGenericName(network);
|
|
377
|
+
if (generic === 'livenet') return address;
|
|
378
|
+
return `${address}:${generic}`;
|
|
379
|
+
},
|
|
380
|
+
|
|
368
381
|
castToBool(input: any) {
|
|
369
382
|
input = input?.toString();
|
|
370
383
|
if (input?.toLowerCase() === 'true' || input == '1') {
|