@bitpay-labs/bitcore-wallet-service 11.8.0 → 11.8.2

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 (97) hide show
  1. package/package.json +6 -6
  2. package/src/bws.ts +2 -0
  3. package/src/externalservices/ramp.ts +0 -1
  4. package/src/lib/common/utils.ts +6 -0
  5. package/src/lib/expressapp.ts +63 -2378
  6. package/src/lib/logger.ts +5 -74
  7. package/src/lib/model/txproposal.ts +14 -10
  8. package/src/lib/routes/advertisements.ts +151 -0
  9. package/src/lib/routes/blockchain.ts +152 -0
  10. package/src/lib/routes/context.ts +149 -0
  11. package/src/lib/routes/maintenance.ts +111 -0
  12. package/src/lib/routes/moralis.ts +89 -0
  13. package/src/lib/routes/notifications.ts +135 -0
  14. package/src/lib/routes/services.ts +528 -0
  15. package/src/lib/routes/setup.ts +86 -0
  16. package/src/lib/routes/transactions.ts +196 -0
  17. package/src/lib/routes/walletdata.ts +167 -0
  18. package/src/lib/routes/wallets.ts +289 -0
  19. package/src/lib/server.ts +29 -4
  20. package/src/lib/storage.ts +3 -0
  21. package/test/integration/externalservices/ramp.test.ts +0 -4
  22. package/ts_build/package.json +5 -5
  23. package/ts_build/src/bws.js +3 -0
  24. package/ts_build/src/bws.js.map +1 -1
  25. package/ts_build/src/externalservices/ramp.d.ts.map +1 -1
  26. package/ts_build/src/externalservices/ramp.js +0 -2
  27. package/ts_build/src/externalservices/ramp.js.map +1 -1
  28. package/ts_build/src/lib/common/index.d.ts +1 -0
  29. package/ts_build/src/lib/common/index.d.ts.map +1 -1
  30. package/ts_build/src/lib/common/utils.d.ts +1 -0
  31. package/ts_build/src/lib/common/utils.d.ts.map +1 -1
  32. package/ts_build/src/lib/common/utils.js +6 -0
  33. package/ts_build/src/lib/common/utils.js.map +1 -1
  34. package/ts_build/src/lib/expressapp.d.ts.map +1 -1
  35. package/ts_build/src/lib/expressapp.js +64 -2224
  36. package/ts_build/src/lib/expressapp.js.map +1 -1
  37. package/ts_build/src/lib/logger.d.ts +5 -5
  38. package/ts_build/src/lib/logger.d.ts.map +1 -1
  39. package/ts_build/src/lib/logger.js +6 -91
  40. package/ts_build/src/lib/logger.js.map +1 -1
  41. package/ts_build/src/lib/model/txproposal.d.ts +1 -4
  42. package/ts_build/src/lib/model/txproposal.d.ts.map +1 -1
  43. package/ts_build/src/lib/model/txproposal.js +13 -9
  44. package/ts_build/src/lib/model/txproposal.js.map +1 -1
  45. package/ts_build/src/lib/routes/advertisements.d.ts +11 -0
  46. package/ts_build/src/lib/routes/advertisements.d.ts.map +1 -0
  47. package/ts_build/src/lib/routes/advertisements.js +119 -0
  48. package/ts_build/src/lib/routes/advertisements.js.map +1 -0
  49. package/ts_build/src/lib/routes/blockchain.d.ts +13 -0
  50. package/ts_build/src/lib/routes/blockchain.d.ts.map +1 -0
  51. package/ts_build/src/lib/routes/blockchain.js +159 -0
  52. package/ts_build/src/lib/routes/blockchain.js.map +1 -0
  53. package/ts_build/src/lib/routes/context.d.ts +12 -0
  54. package/ts_build/src/lib/routes/context.d.ts.map +1 -0
  55. package/ts_build/src/lib/routes/context.js +115 -0
  56. package/ts_build/src/lib/routes/context.js.map +1 -0
  57. package/ts_build/src/lib/routes/maintenance.d.ts +10 -0
  58. package/ts_build/src/lib/routes/maintenance.d.ts.map +1 -0
  59. package/ts_build/src/lib/routes/maintenance.js +131 -0
  60. package/ts_build/src/lib/routes/maintenance.js.map +1 -0
  61. package/ts_build/src/lib/routes/moralis.d.ts +9 -0
  62. package/ts_build/src/lib/routes/moralis.d.ts.map +1 -0
  63. package/ts_build/src/lib/routes/moralis.js +78 -0
  64. package/ts_build/src/lib/routes/moralis.js.map +1 -0
  65. package/ts_build/src/lib/routes/notifications.d.ts +10 -0
  66. package/ts_build/src/lib/routes/notifications.d.ts.map +1 -0
  67. package/ts_build/src/lib/routes/notifications.js +120 -0
  68. package/ts_build/src/lib/routes/notifications.js.map +1 -0
  69. package/ts_build/src/lib/routes/services.d.ts +11 -0
  70. package/ts_build/src/lib/routes/services.d.ts.map +1 -0
  71. package/ts_build/src/lib/routes/services.js +430 -0
  72. package/ts_build/src/lib/routes/services.js.map +1 -0
  73. package/ts_build/src/lib/routes/setup.d.ts +4 -0
  74. package/ts_build/src/lib/routes/setup.d.ts.map +1 -0
  75. package/ts_build/src/lib/routes/setup.js +79 -0
  76. package/ts_build/src/lib/routes/setup.js.map +1 -0
  77. package/ts_build/src/lib/routes/transactions.d.ts +9 -0
  78. package/ts_build/src/lib/routes/transactions.d.ts.map +1 -0
  79. package/ts_build/src/lib/routes/transactions.js +188 -0
  80. package/ts_build/src/lib/routes/transactions.js.map +1 -0
  81. package/ts_build/src/lib/routes/walletdata.d.ts +10 -0
  82. package/ts_build/src/lib/routes/walletdata.d.ts.map +1 -0
  83. package/ts_build/src/lib/routes/walletdata.js +186 -0
  84. package/ts_build/src/lib/routes/walletdata.js.map +1 -0
  85. package/ts_build/src/lib/routes/wallets.d.ts +13 -0
  86. package/ts_build/src/lib/routes/wallets.d.ts.map +1 -0
  87. package/ts_build/src/lib/routes/wallets.js +292 -0
  88. package/ts_build/src/lib/routes/wallets.js.map +1 -0
  89. package/ts_build/src/lib/server.d.ts +5 -3
  90. package/ts_build/src/lib/server.d.ts.map +1 -1
  91. package/ts_build/src/lib/server.js +19 -1
  92. package/ts_build/src/lib/server.js.map +1 -1
  93. package/ts_build/src/lib/storage.d.ts.map +1 -1
  94. package/ts_build/src/lib/storage.js +3 -0
  95. package/ts_build/src/lib/storage.js.map +1 -1
  96. package/ts_build/test/integration/externalservices/ramp.test.js +0 -4
  97. package/ts_build/test/integration/externalservices/ramp.test.js.map +1 -1
@@ -0,0 +1,89 @@
1
+ import cors from 'cors';
2
+ import express from 'express';
3
+ import config from '../../config';
4
+ import type * as Types from '../../types/expressapp';
5
+ import type { WalletService } from '../server';
6
+
7
+ interface RouteContext {
8
+ getServer: Types.GetServerFn;
9
+ returnError: Types.ReturnErrorFn;
10
+ }
11
+
12
+ type RouteHandler = (server: WalletService) => Promise<any>;
13
+
14
+ function getServerOrReturnError(req, res, context: RouteContext): WalletService | null {
15
+ try {
16
+ return context.getServer(req, res);
17
+ } catch (err) {
18
+ context.returnError(err, res, req);
19
+ return null;
20
+ }
21
+ }
22
+
23
+ function respondWithPublicServer(req, res, context: RouteContext, handler: RouteHandler) {
24
+ const server = getServerOrReturnError(req, res, context);
25
+ if (!server) return;
26
+
27
+ handler(server)
28
+ .then(response => {
29
+ res.json(response);
30
+ })
31
+ .catch(err => {
32
+ context.returnError(err ?? 'unknown', res, req);
33
+ });
34
+ }
35
+
36
+ export function registerMoralisRoutes(router: express.Router, context: RouteContext) {
37
+ const moralisCorsOptions = {
38
+ origin: (origin, cb) => {
39
+ const moralisWhiteList = config.moralis?.whitelist ?? [];
40
+ if (moralisWhiteList.indexOf(origin) !== -1) {
41
+ cb(null, true);
42
+ } else {
43
+ cb(new Error('Not allowed by CORS'));
44
+ }
45
+ }
46
+ };
47
+
48
+ router.post('/v1/moralis/getWalletTokenBalances', cors(moralisCorsOptions), (req, res) => {
49
+ respondWithPublicServer(req, res, context, server => {
50
+ return server.moralisGetWalletTokenBalances(req);
51
+ });
52
+ });
53
+
54
+ router.post('/v1/moralis/moralisGetTokenAllowance', cors(moralisCorsOptions), (req, res) => {
55
+ respondWithPublicServer(req, res, context, server => {
56
+ return server.moralisGetTokenAllowance(req);
57
+ });
58
+ });
59
+
60
+ router.post('/v1/moralis/moralisGetNativeBalance', cors(moralisCorsOptions), (req, res) => {
61
+ respondWithPublicServer(req, res, context, server => {
62
+ return server.moralisGetNativeBalance(req);
63
+ });
64
+ });
65
+
66
+ router.post('/v1/moralis/GetTokenPrice', cors(moralisCorsOptions), (req, res) => {
67
+ respondWithPublicServer(req, res, context, server => {
68
+ return server.moralisGetTokenPrice(req);
69
+ });
70
+ });
71
+
72
+ router.post('/v1/moralis/getMultipleERC20TokenPrices', cors(moralisCorsOptions), (req, res) => {
73
+ respondWithPublicServer(req, res, context, server => {
74
+ return server.moralisGetMultipleERC20TokenPrices(req);
75
+ });
76
+ });
77
+
78
+ router.post('/v1/moralis/getERC20TokenBalancesWithPricesByWallet', cors(moralisCorsOptions), (req, res) => {
79
+ respondWithPublicServer(req, res, context, server => {
80
+ return server.moralisGetERC20TokenBalancesWithPricesByWallet(req);
81
+ });
82
+ });
83
+
84
+ router.post('/v1/moralis/getSolWalletPortfolio', cors(moralisCorsOptions), (req, res) => {
85
+ respondWithPublicServer(req, res, context, server => {
86
+ return server.moralisGetSolWalletPortfolio(req);
87
+ });
88
+ });
89
+ }
@@ -0,0 +1,135 @@
1
+ import express from 'express';
2
+ import { Common } from '../common';
3
+ import type * as Types from '../../types/expressapp';
4
+
5
+ const { Defaults } = Common;
6
+
7
+ interface RouteContext {
8
+ getServerWithAuth: Types.GetServerWithAuthFn;
9
+ logDeprecated: Types.LogDeprecatedFn;
10
+ returnError: Types.ReturnErrorFn;
11
+ }
12
+
13
+ export function registerNotificationRoutes(router: express.Router, context: RouteContext) {
14
+ const { getServerWithAuth, logDeprecated, returnError } = context;
15
+
16
+ router.post('/v1/login/', (req, res) => {
17
+ getServerWithAuth(req, res, server => {
18
+ server.login({}, (err, session) => {
19
+ if (err) return returnError(err, res, req);
20
+ res.json(session);
21
+ });
22
+ });
23
+ });
24
+
25
+ router.post('/v1/logout/', (req, res) => {
26
+ getServerWithAuth(req, res, server => {
27
+ server.logout({}, err => {
28
+ if (err) return returnError(err, res, req);
29
+ res.end();
30
+ });
31
+ });
32
+ });
33
+
34
+ router.get('/v1/notifications/', (req, res) => {
35
+ getServerWithAuth(
36
+ req,
37
+ res,
38
+ {
39
+ allowSession: true
40
+ },
41
+ server => {
42
+ const timeSpan = req.query.timeSpan
43
+ ? Math.min(+req.query.timeSpan || 0, Defaults.MAX_NOTIFICATIONS_TIMESPAN)
44
+ : Defaults.NOTIFICATIONS_TIMESPAN;
45
+ const opts = {
46
+ minTs: +Date.now() - timeSpan * 1000,
47
+ notificationId: req.query.notificationId
48
+ };
49
+
50
+ server.getNotifications(opts, (err, notifications) => {
51
+ if (err) return returnError(err, res, req);
52
+ res.json(notifications);
53
+ });
54
+ }
55
+ );
56
+ });
57
+
58
+ router.post('/v1/pushnotifications/subscriptions/', (req, res) => {
59
+ getServerWithAuth(req, res, server => {
60
+ server.pushNotificationsSubscribe(req.body, (err, response) => {
61
+ if (err) return returnError(err, res, req);
62
+ res.json(response);
63
+ });
64
+ });
65
+ });
66
+
67
+ router.post('/v2/pushnotifications/subscriptions/', (req, res) => {
68
+ getServerWithAuth(req, res, server => {
69
+ server.pushNotificationsBrazeSubscribe(req.body, (err, response) => {
70
+ if (err) return returnError(err, res, req);
71
+ res.json(response);
72
+ });
73
+ });
74
+ });
75
+
76
+ router.delete('/v1/pushnotifications/subscriptions/', (req, res) => {
77
+ logDeprecated(req);
78
+ getServerWithAuth(req, res, server => {
79
+ server.pushNotificationsUnsubscribe(
80
+ {
81
+ token: 'dummy'
82
+ },
83
+ (err, response) => {
84
+ if (err) return returnError(err, res, req);
85
+ res.json(response);
86
+ }
87
+ );
88
+ });
89
+ });
90
+
91
+ router.delete('/v2/pushnotifications/subscriptions/:token', (req, res) => {
92
+ const opts = {
93
+ token: req.params['token']
94
+ };
95
+ getServerWithAuth(req, res, server => {
96
+ server.pushNotificationsUnsubscribe(opts, (err, response) => {
97
+ if (err) return returnError(err, res, req);
98
+ res.json(response);
99
+ });
100
+ });
101
+ });
102
+
103
+ router.delete('/v3/pushnotifications/subscriptions/:externalUserId', (req, res) => {
104
+ const opts = {
105
+ externalUserId: req.params['externalUserId']
106
+ };
107
+ getServerWithAuth(req, res, server => {
108
+ server.pushNotificationsBrazeUnsubscribe(opts, (err, response) => {
109
+ if (err) return returnError(err, res, req);
110
+ res.json(response);
111
+ });
112
+ });
113
+ });
114
+
115
+ router.post('/v1/txconfirmations/', (req, res) => {
116
+ getServerWithAuth(req, res, server => {
117
+ server.txConfirmationSubscribe(req.body, (err, response) => {
118
+ if (err) return returnError(err, res, req);
119
+ res.json(response);
120
+ });
121
+ });
122
+ });
123
+
124
+ router.delete('/v1/txconfirmations/:txid', (req, res) => {
125
+ const opts = {
126
+ txid: req.params['txid']
127
+ };
128
+ getServerWithAuth(req, res, server => {
129
+ server.txConfirmationUnsubscribe(opts, (err, response) => {
130
+ if (err) return returnError(err, res, req);
131
+ res.json(response);
132
+ });
133
+ });
134
+ });
135
+ }