rango-sdk-basic 0.1.9 → 0.1.10
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/lib/rango-sdk-basic.cjs.development.js +90 -127
- package/lib/rango-sdk-basic.cjs.development.js.map +1 -1
- package/lib/rango-sdk-basic.cjs.production.min.js +1 -1
- package/lib/rango-sdk-basic.cjs.production.min.js.map +1 -1
- package/lib/rango-sdk-basic.esm.js +90 -127
- package/lib/rango-sdk-basic.esm.js.map +1 -1
- package/lib/services/client.d.ts +3 -2
- package/lib/services/client.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
|
6
6
|
|
|
7
|
+
var uuid = _interopDefault(require('uuid-random'));
|
|
7
8
|
var axios = _interopDefault(require('axios'));
|
|
8
9
|
var ethRpcErrors = require('eth-rpc-errors');
|
|
9
10
|
|
|
@@ -353,66 +354,6 @@ function _extends() {
|
|
|
353
354
|
return _extends.apply(this, arguments);
|
|
354
355
|
}
|
|
355
356
|
|
|
356
|
-
// Unique ID creation requires a high quality random # generator. In the browser we therefore
|
|
357
|
-
// require the crypto API and do not support built-in fallback to lower quality random number
|
|
358
|
-
// generators (like Math.random()).
|
|
359
|
-
var getRandomValues;
|
|
360
|
-
var rnds8 = /*#__PURE__*/new Uint8Array(16);
|
|
361
|
-
function rng() {
|
|
362
|
-
// lazy load so that environments that need to polyfill have a chance to do so
|
|
363
|
-
if (!getRandomValues) {
|
|
364
|
-
// getRandomValues needs to be invoked in a context where "this" is a Crypto implementation.
|
|
365
|
-
getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
|
|
366
|
-
if (!getRandomValues) {
|
|
367
|
-
throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
return getRandomValues(rnds8);
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
/**
|
|
374
|
-
* Convert array of 16 byte values to UUID string format of the form:
|
|
375
|
-
* XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
|
|
376
|
-
*/
|
|
377
|
-
|
|
378
|
-
var byteToHex = [];
|
|
379
|
-
for (var i = 0; i < 256; ++i) {
|
|
380
|
-
byteToHex.push((i + 0x100).toString(16).slice(1));
|
|
381
|
-
}
|
|
382
|
-
function unsafeStringify(arr, offset) {
|
|
383
|
-
if (offset === void 0) {
|
|
384
|
-
offset = 0;
|
|
385
|
-
}
|
|
386
|
-
// Note: Be careful editing this code! It's been tuned for performance
|
|
387
|
-
// and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
|
|
388
|
-
return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
var randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && /*#__PURE__*/crypto.randomUUID.bind(crypto);
|
|
392
|
-
var _native = {
|
|
393
|
-
randomUUID: randomUUID
|
|
394
|
-
};
|
|
395
|
-
|
|
396
|
-
function v4(options, buf, offset) {
|
|
397
|
-
if (_native.randomUUID && !buf && !options) {
|
|
398
|
-
return _native.randomUUID();
|
|
399
|
-
}
|
|
400
|
-
options = options || {};
|
|
401
|
-
var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
|
|
402
|
-
|
|
403
|
-
rnds[6] = rnds[6] & 0x0f | 0x40;
|
|
404
|
-
rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
|
|
405
|
-
|
|
406
|
-
if (buf) {
|
|
407
|
-
offset = offset || 0;
|
|
408
|
-
for (var i = 0; i < 16; ++i) {
|
|
409
|
-
buf[offset + i] = rnds[i];
|
|
410
|
-
}
|
|
411
|
-
return buf;
|
|
412
|
-
}
|
|
413
|
-
return unsafeStringify(rnds);
|
|
414
|
-
}
|
|
415
|
-
|
|
416
357
|
var baseURL = typeof process !== 'undefined' && process.env.REACT_APP_RANGO_BASE_URL ? process.env.REACT_APP_RANGO_BASE_URL : 'https://api.rango.exchange';
|
|
417
358
|
var httpService = /*#__PURE__*/axios.create({
|
|
418
359
|
baseURL: baseURL
|
|
@@ -784,15 +725,15 @@ var RangoClient = /*#__PURE__*/function () {
|
|
|
784
725
|
if (deviceId) {
|
|
785
726
|
this.deviceId = deviceId;
|
|
786
727
|
} else {
|
|
787
|
-
var generatedId =
|
|
728
|
+
var generatedId = uuid();
|
|
788
729
|
localStorage.setItem('deviceId', generatedId);
|
|
789
730
|
this.deviceId = generatedId;
|
|
790
731
|
}
|
|
791
732
|
} else {
|
|
792
|
-
this.deviceId =
|
|
733
|
+
this.deviceId = uuid();
|
|
793
734
|
}
|
|
794
735
|
} catch (e) {
|
|
795
|
-
this.deviceId =
|
|
736
|
+
this.deviceId = uuid();
|
|
796
737
|
}
|
|
797
738
|
if (debug) {
|
|
798
739
|
httpService.interceptors.request.use(function (request) {
|
|
@@ -872,11 +813,33 @@ var RangoClient = /*#__PURE__*/function () {
|
|
|
872
813
|
}
|
|
873
814
|
return swappers;
|
|
874
815
|
}();
|
|
875
|
-
_proto.
|
|
876
|
-
var
|
|
877
|
-
var
|
|
816
|
+
_proto.messagingProtocols = /*#__PURE__*/function () {
|
|
817
|
+
var _messagingProtocols = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(options) {
|
|
818
|
+
var axiosResponse;
|
|
878
819
|
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
879
820
|
while (1) switch (_context4.prev = _context4.next) {
|
|
821
|
+
case 0:
|
|
822
|
+
_context4.next = 2;
|
|
823
|
+
return httpService.get("/basic/meta/messaging-protocols?apiKey=" + this.apiKey, _extends({}, options));
|
|
824
|
+
case 2:
|
|
825
|
+
axiosResponse = _context4.sent;
|
|
826
|
+
return _context4.abrupt("return", axiosResponse.data);
|
|
827
|
+
case 4:
|
|
828
|
+
case "end":
|
|
829
|
+
return _context4.stop();
|
|
830
|
+
}
|
|
831
|
+
}, _callee4, this);
|
|
832
|
+
}));
|
|
833
|
+
function messagingProtocols(_x4) {
|
|
834
|
+
return _messagingProtocols.apply(this, arguments);
|
|
835
|
+
}
|
|
836
|
+
return messagingProtocols;
|
|
837
|
+
}();
|
|
838
|
+
_proto.quote = /*#__PURE__*/function () {
|
|
839
|
+
var _quote = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(quoteRequest, options) {
|
|
840
|
+
var body, axiosResponse;
|
|
841
|
+
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
842
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
880
843
|
case 0:
|
|
881
844
|
body = _extends({}, quoteRequest, {
|
|
882
845
|
from: assetToString(quoteRequest.from),
|
|
@@ -884,7 +847,7 @@ var RangoClient = /*#__PURE__*/function () {
|
|
|
884
847
|
swappers: !!quoteRequest.swappers && quoteRequest.swappers.length > 0 ? quoteRequest.swappers.join(',') : undefined,
|
|
885
848
|
messagingProtocols: !!quoteRequest.messagingProtocols && quoteRequest.messagingProtocols.length > 0 ? quoteRequest.messagingProtocols.join(',') : undefined
|
|
886
849
|
});
|
|
887
|
-
|
|
850
|
+
_context5.next = 3;
|
|
888
851
|
return httpService.get("/basic/quote?apiKey=" + this.apiKey, _extends({
|
|
889
852
|
params: body,
|
|
890
853
|
headers: {
|
|
@@ -892,26 +855,26 @@ var RangoClient = /*#__PURE__*/function () {
|
|
|
892
855
|
}
|
|
893
856
|
}, options));
|
|
894
857
|
case 3:
|
|
895
|
-
axiosResponse =
|
|
896
|
-
return
|
|
858
|
+
axiosResponse = _context5.sent;
|
|
859
|
+
return _context5.abrupt("return", axiosResponse.data);
|
|
897
860
|
case 5:
|
|
898
861
|
case "end":
|
|
899
|
-
return
|
|
862
|
+
return _context5.stop();
|
|
900
863
|
}
|
|
901
|
-
},
|
|
864
|
+
}, _callee5, this);
|
|
902
865
|
}));
|
|
903
|
-
function quote(
|
|
866
|
+
function quote(_x5, _x6) {
|
|
904
867
|
return _quote.apply(this, arguments);
|
|
905
868
|
}
|
|
906
869
|
return quote;
|
|
907
870
|
}();
|
|
908
871
|
_proto.isApproved = /*#__PURE__*/function () {
|
|
909
|
-
var _isApproved = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
872
|
+
var _isApproved = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6(requestId, txId, options) {
|
|
910
873
|
var axiosResponse;
|
|
911
|
-
return _regeneratorRuntime().wrap(function
|
|
912
|
-
while (1) switch (
|
|
874
|
+
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
875
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
913
876
|
case 0:
|
|
914
|
-
|
|
877
|
+
_context6.next = 2;
|
|
915
878
|
return httpService.get("/basic/is-approved?apiKey=" + this.apiKey, _extends({
|
|
916
879
|
params: {
|
|
917
880
|
requestId: requestId,
|
|
@@ -922,26 +885,26 @@ var RangoClient = /*#__PURE__*/function () {
|
|
|
922
885
|
}
|
|
923
886
|
}, options));
|
|
924
887
|
case 2:
|
|
925
|
-
axiosResponse =
|
|
926
|
-
return
|
|
888
|
+
axiosResponse = _context6.sent;
|
|
889
|
+
return _context6.abrupt("return", axiosResponse.data);
|
|
927
890
|
case 4:
|
|
928
891
|
case "end":
|
|
929
|
-
return
|
|
892
|
+
return _context6.stop();
|
|
930
893
|
}
|
|
931
|
-
},
|
|
894
|
+
}, _callee6, this);
|
|
932
895
|
}));
|
|
933
|
-
function isApproved(
|
|
896
|
+
function isApproved(_x7, _x8, _x9) {
|
|
934
897
|
return _isApproved.apply(this, arguments);
|
|
935
898
|
}
|
|
936
899
|
return isApproved;
|
|
937
900
|
}();
|
|
938
901
|
_proto.status = /*#__PURE__*/function () {
|
|
939
|
-
var _status = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
902
|
+
var _status = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7(statusRequest, options) {
|
|
940
903
|
var axiosResponse;
|
|
941
|
-
return _regeneratorRuntime().wrap(function
|
|
942
|
-
while (1) switch (
|
|
904
|
+
return _regeneratorRuntime().wrap(function _callee7$(_context7) {
|
|
905
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
943
906
|
case 0:
|
|
944
|
-
|
|
907
|
+
_context7.next = 2;
|
|
945
908
|
return httpService.get("/basic/status?apiKey=" + this.apiKey, _extends({
|
|
946
909
|
params: statusRequest,
|
|
947
910
|
headers: {
|
|
@@ -949,24 +912,24 @@ var RangoClient = /*#__PURE__*/function () {
|
|
|
949
912
|
}
|
|
950
913
|
}, options));
|
|
951
914
|
case 2:
|
|
952
|
-
axiosResponse =
|
|
953
|
-
return
|
|
915
|
+
axiosResponse = _context7.sent;
|
|
916
|
+
return _context7.abrupt("return", axiosResponse.data);
|
|
954
917
|
case 4:
|
|
955
918
|
case "end":
|
|
956
|
-
return
|
|
919
|
+
return _context7.stop();
|
|
957
920
|
}
|
|
958
|
-
},
|
|
921
|
+
}, _callee7, this);
|
|
959
922
|
}));
|
|
960
|
-
function status(
|
|
923
|
+
function status(_x10, _x11) {
|
|
961
924
|
return _status.apply(this, arguments);
|
|
962
925
|
}
|
|
963
926
|
return status;
|
|
964
927
|
}();
|
|
965
928
|
_proto.swap = /*#__PURE__*/function () {
|
|
966
|
-
var _swap = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
929
|
+
var _swap = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8(swapRequest, options) {
|
|
967
930
|
var body, axiosResponse;
|
|
968
|
-
return _regeneratorRuntime().wrap(function
|
|
969
|
-
while (1) switch (
|
|
931
|
+
return _regeneratorRuntime().wrap(function _callee8$(_context8) {
|
|
932
|
+
while (1) switch (_context8.prev = _context8.next) {
|
|
970
933
|
case 0:
|
|
971
934
|
body = _extends({}, swapRequest, {
|
|
972
935
|
from: assetToString(swapRequest.from),
|
|
@@ -974,7 +937,7 @@ var RangoClient = /*#__PURE__*/function () {
|
|
|
974
937
|
swappers: !!swapRequest.swappers && swapRequest.swappers.length > 0 ? swapRequest.swappers.join(',') : undefined,
|
|
975
938
|
messagingProtocols: !!swapRequest.messagingProtocols && swapRequest.messagingProtocols.length > 0 ? swapRequest.messagingProtocols.join(',') : undefined
|
|
976
939
|
});
|
|
977
|
-
|
|
940
|
+
_context8.next = 3;
|
|
978
941
|
return httpService.get("/basic/swap?apiKey=" + this.apiKey, _extends({
|
|
979
942
|
params: body,
|
|
980
943
|
headers: {
|
|
@@ -982,25 +945,25 @@ var RangoClient = /*#__PURE__*/function () {
|
|
|
982
945
|
}
|
|
983
946
|
}, options));
|
|
984
947
|
case 3:
|
|
985
|
-
axiosResponse =
|
|
986
|
-
return
|
|
948
|
+
axiosResponse = _context8.sent;
|
|
949
|
+
return _context8.abrupt("return", axiosResponse.data);
|
|
987
950
|
case 5:
|
|
988
951
|
case "end":
|
|
989
|
-
return
|
|
952
|
+
return _context8.stop();
|
|
990
953
|
}
|
|
991
|
-
},
|
|
954
|
+
}, _callee8, this);
|
|
992
955
|
}));
|
|
993
|
-
function swap(
|
|
956
|
+
function swap(_x12, _x13) {
|
|
994
957
|
return _swap.apply(this, arguments);
|
|
995
958
|
}
|
|
996
959
|
return swap;
|
|
997
960
|
}();
|
|
998
961
|
_proto.reportFailure = /*#__PURE__*/function () {
|
|
999
|
-
var _reportFailure = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
1000
|
-
return _regeneratorRuntime().wrap(function
|
|
1001
|
-
while (1) switch (
|
|
962
|
+
var _reportFailure = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9(requestBody, options) {
|
|
963
|
+
return _regeneratorRuntime().wrap(function _callee9$(_context9) {
|
|
964
|
+
while (1) switch (_context9.prev = _context9.next) {
|
|
1002
965
|
case 0:
|
|
1003
|
-
|
|
966
|
+
_context9.next = 2;
|
|
1004
967
|
return httpService.post("/basic/report-tx?apiKey=" + this.apiKey, requestBody, _extends({
|
|
1005
968
|
headers: {
|
|
1006
969
|
'X-Rango-Id': this.deviceId
|
|
@@ -1008,22 +971,22 @@ var RangoClient = /*#__PURE__*/function () {
|
|
|
1008
971
|
}, options));
|
|
1009
972
|
case 2:
|
|
1010
973
|
case "end":
|
|
1011
|
-
return
|
|
974
|
+
return _context9.stop();
|
|
1012
975
|
}
|
|
1013
|
-
},
|
|
976
|
+
}, _callee9, this);
|
|
1014
977
|
}));
|
|
1015
|
-
function reportFailure(
|
|
978
|
+
function reportFailure(_x14, _x15) {
|
|
1016
979
|
return _reportFailure.apply(this, arguments);
|
|
1017
980
|
}
|
|
1018
981
|
return reportFailure;
|
|
1019
982
|
}();
|
|
1020
983
|
_proto.balance = /*#__PURE__*/function () {
|
|
1021
|
-
var _balance = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
984
|
+
var _balance = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(walletAddress, options) {
|
|
1022
985
|
var axiosResponse;
|
|
1023
|
-
return _regeneratorRuntime().wrap(function
|
|
1024
|
-
while (1) switch (
|
|
986
|
+
return _regeneratorRuntime().wrap(function _callee10$(_context10) {
|
|
987
|
+
while (1) switch (_context10.prev = _context10.next) {
|
|
1025
988
|
case 0:
|
|
1026
|
-
|
|
989
|
+
_context10.next = 2;
|
|
1027
990
|
return httpService.get("/basic/balance?apiKey=" + this.apiKey, _extends({
|
|
1028
991
|
params: walletAddress,
|
|
1029
992
|
headers: {
|
|
@@ -1031,36 +994,36 @@ var RangoClient = /*#__PURE__*/function () {
|
|
|
1031
994
|
}
|
|
1032
995
|
}, options));
|
|
1033
996
|
case 2:
|
|
1034
|
-
axiosResponse =
|
|
1035
|
-
return
|
|
997
|
+
axiosResponse = _context10.sent;
|
|
998
|
+
return _context10.abrupt("return", axiosResponse.data);
|
|
1036
999
|
case 4:
|
|
1037
1000
|
case "end":
|
|
1038
|
-
return
|
|
1001
|
+
return _context10.stop();
|
|
1039
1002
|
}
|
|
1040
|
-
},
|
|
1003
|
+
}, _callee10, this);
|
|
1041
1004
|
}));
|
|
1042
|
-
function balance(
|
|
1005
|
+
function balance(_x16, _x17) {
|
|
1043
1006
|
return _balance.apply(this, arguments);
|
|
1044
1007
|
}
|
|
1045
1008
|
return balance;
|
|
1046
1009
|
}();
|
|
1047
1010
|
_proto.executeEvmRoute = /*#__PURE__*/function () {
|
|
1048
|
-
var _executeEvmRoute2 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function
|
|
1011
|
+
var _executeEvmRoute2 = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11(
|
|
1049
1012
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1050
1013
|
signer, route) {
|
|
1051
1014
|
var prettifiedError, message;
|
|
1052
|
-
return _regeneratorRuntime().wrap(function
|
|
1053
|
-
while (1) switch (
|
|
1015
|
+
return _regeneratorRuntime().wrap(function _callee11$(_context11) {
|
|
1016
|
+
while (1) switch (_context11.prev = _context11.next) {
|
|
1054
1017
|
case 0:
|
|
1055
|
-
|
|
1056
|
-
|
|
1018
|
+
_context11.prev = 0;
|
|
1019
|
+
_context11.next = 3;
|
|
1057
1020
|
return executeEvmRoute(this, signer, route);
|
|
1058
1021
|
case 3:
|
|
1059
|
-
return
|
|
1022
|
+
return _context11.abrupt("return", _context11.sent);
|
|
1060
1023
|
case 6:
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
prettifiedError = prettifyError(
|
|
1024
|
+
_context11.prev = 6;
|
|
1025
|
+
_context11.t0 = _context11["catch"](0);
|
|
1026
|
+
prettifiedError = prettifyError(_context11.t0);
|
|
1064
1027
|
try {
|
|
1065
1028
|
message = (prettifiedError == null ? void 0 : prettifiedError.message) || 'Error executing the route';
|
|
1066
1029
|
this.reportFailure({
|
|
@@ -1076,11 +1039,11 @@ var RangoClient = /*#__PURE__*/function () {
|
|
|
1076
1039
|
throw prettifiedError;
|
|
1077
1040
|
case 11:
|
|
1078
1041
|
case "end":
|
|
1079
|
-
return
|
|
1042
|
+
return _context11.stop();
|
|
1080
1043
|
}
|
|
1081
|
-
},
|
|
1044
|
+
}, _callee11, this, [[0, 6]]);
|
|
1082
1045
|
}));
|
|
1083
|
-
function executeEvmRoute$1(
|
|
1046
|
+
function executeEvmRoute$1(_x18, _x19) {
|
|
1084
1047
|
return _executeEvmRoute2.apply(this, arguments);
|
|
1085
1048
|
}
|
|
1086
1049
|
return executeEvmRoute$1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rango-sdk-basic.cjs.development.js","sources":["../../../node_modules/uuid/dist/esm-browser/rng.js","../../../node_modules/uuid/dist/esm-browser/stringify.js","../../../node_modules/uuid/dist/esm-browser/native.js","../../../node_modules/uuid/dist/esm-browser/v4.js","../src/services/httpService.ts","../src/types/api/common.ts","../../../node_modules/rango-types/src/api/shared/type-gaurds.ts","../../../node_modules/rango-types/src/api/shared/routing.ts","../../../node_modules/rango-types/src/api/shared/transactions.ts","../src/types/utils/errors.ts","../src/utils/promise.ts","../src/services/executor.ts","../src/utils/errors.ts","../src/services/client.ts"],"sourcesContent":["// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","import axios from 'axios'\n\nconst baseURL =\n typeof process !== 'undefined' && process.env.REACT_APP_RANGO_BASE_URL\n ? process.env.REACT_APP_RANGO_BASE_URL\n : 'https://api.rango.exchange'\n\nexport const httpService = axios.create({\n baseURL,\n})\n","import { Asset } from 'rango-types/lib/api/basic'\nexport * from 'rango-types/lib/api/basic/common'\n\nexport function assetToString(asset: Asset): string {\n if (!!asset.address)\n return `${asset.blockchain}.${asset.symbol}--${asset.address}`\n else return `${asset.blockchain}.${asset.symbol}`\n}\n",null,null,null,"export const MetamaskErrorCodes = {\n rpc: {\n invalidInput: -32000,\n resourceNotFound: -32001,\n resourceUnavailable: -32002,\n transactionRejected: -32003,\n methodNotSupported: -32004,\n limitExceeded: -32005,\n parse: -32700,\n invalidRequest: -32600,\n methodNotFound: -32601,\n invalidParams: -32602,\n internal: -32603,\n },\n provider: {\n userRejectedRequest: 4001,\n unauthorized: 4100,\n unsupportedMethod: 4200,\n disconnected: 4900,\n chainDisconnected: 4901,\n },\n}\n","export function sleep(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n","import { Signer } from 'ethers'\nimport { RangoClient } from './client'\nimport { EvmTransaction } from '../types/api/txs'\nimport {\n StatusResponse,\n SwapResponse,\n TransactionStatus,\n TransactionType,\n} from '../types/api/transactions'\nimport { sleep } from '../utils/promise'\n\nexport function prepareEvmTransaction(\n evmTx: EvmTransaction,\n isApprove: boolean\n) {\n const gasPrice =\n !!evmTx.gasPrice && !evmTx.gasPrice.startsWith('0x')\n ? '0x' + parseInt(evmTx.gasPrice).toString(16)\n : null\n const manipulatedTx = {\n ...evmTx,\n gasPrice,\n }\n let tx = {}\n if (!!manipulatedTx.from) tx = { ...tx, from: manipulatedTx.from }\n if (isApprove) {\n if (!!manipulatedTx.approveTo) tx = { ...tx, to: manipulatedTx.approveTo }\n if (!!manipulatedTx.approveData)\n tx = { ...tx, data: manipulatedTx.approveData }\n } else {\n if (!!manipulatedTx.txTo) tx = { ...tx, to: manipulatedTx.txTo }\n if (!!manipulatedTx.txData) tx = { ...tx, data: manipulatedTx.txData }\n if (!!manipulatedTx.value) tx = { ...tx, value: manipulatedTx.value }\n if (!!manipulatedTx.gasLimit)\n tx = { ...tx, gasLimit: manipulatedTx.gasLimit }\n if (!!manipulatedTx.gasPrice)\n tx = { ...tx, gasPrice: manipulatedTx.gasPrice }\n }\n return tx\n}\n\nasync function checkApprovalSync(\n requestId: string,\n txId: string,\n rangoClient: RangoClient\n): Promise<boolean> {\n while (true) {\n try {\n const approvalResponse = await rangoClient.isApproved(requestId, txId)\n if (approvalResponse?.isApproved) return true\n if (\n !approvalResponse?.isApproved &&\n approvalResponse?.txStatus === TransactionStatus.FAILED\n )\n return false\n } catch (err) {\n console.log('ignorinig error', { err })\n }\n await sleep(3_000)\n }\n}\n\nexport const checkTransactionStatusSync = async (\n requestId: string,\n txId: string,\n rangoClient: RangoClient\n) => {\n let txStatus: StatusResponse | undefined\n while (true) {\n try {\n txStatus = await rangoClient.status({\n requestId,\n txId,\n })\n } catch (err) {\n console.log('ignorinig error', { err })\n }\n if (!!txStatus) {\n if (\n !!txStatus.status &&\n [TransactionStatus.FAILED, TransactionStatus.SUCCESS].includes(\n txStatus.status\n )\n ) {\n return txStatus\n }\n }\n await sleep(3_000)\n }\n}\n\nexport const executeEvmRoute = async (\n client: RangoClient,\n signer: Signer,\n route: SwapResponse\n): Promise<StatusResponse> => {\n const { tx, requestId, error, resultType } = route\n if (resultType != 'OK') throw new Error(resultType)\n if (!!error || !tx)\n throw new Error(error || 'Error creating the transaction.')\n if (tx?.type !== TransactionType.EVM)\n throw new Error('Non Evm transactions are not supported yet.')\n const evmTransaction = tx as EvmTransaction\n if (!evmTransaction) throw new Error('Transaction is null. Please try again!')\n const txChainId = parseInt(evmTransaction.blockChain.chainId || '-1')\n let signerChainId = await signer.getChainId()\n if (signerChainId !== txChainId) {\n throw new Error(\n `Signer chainId ${signerChainId} doesn't match required chainId ${txChainId}.`\n )\n }\n if (!!evmTransaction.approveTo && !!evmTransaction.approveData) {\n const approveTxData = prepareEvmTransaction(evmTransaction, true)\n const approveTx = await signer.sendTransaction(approveTxData)\n approveTx.wait()\n const isApproved = await checkApprovalSync(\n requestId,\n approveTx.hash,\n client\n )\n if (!isApproved) throw new Error('Error in approve transaction.')\n }\n signerChainId = await signer.getChainId()\n if (signerChainId !== txChainId) {\n throw new Error(\n `Signer chainId ${signerChainId} doesn't match required chainId ${txChainId}.`\n )\n }\n const mainTxData = prepareEvmTransaction(evmTransaction, false)\n const mainTx = await signer.sendTransaction(mainTxData)\n mainTx.wait()\n const status = await checkTransactionStatusSync(\n requestId,\n mainTx.hash,\n client\n )\n if (status.status !== TransactionStatus.SUCCESS)\n throw new Error(`Cross-chain swap failed. ${status.error || ''}`)\n return status\n}\n","import { getMessageFromCode } from 'eth-rpc-errors'\nimport { MetamaskErrorCodes } from '../types/utils/errors'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const prettifyError = (error: any) => {\n if (!error) return error\n if (error.code && (error.code === 'ACTION_REJECTED' || error.code === 4001))\n return new Error('Transaction Rejected')\n if (error && typeof error.code === 'number') {\n if (Object.values(MetamaskErrorCodes.provider).includes(error.code)) {\n return new Error(getMessageFromCode(error.code))\n }\n if (Object.values(MetamaskErrorCodes.rpc).includes(error.code)) {\n if (\n error.code === MetamaskErrorCodes.rpc.internal &&\n error.message?.includes('underpriced')\n )\n return new Error('Transaction underpriced')\n if (\n error.message?.includes('intrinsic gas too low') ||\n error.message?.includes('out of gas')\n )\n return new Error('This Gas limit is low.')\n return new Error(getMessageFromCode(error.code))\n }\n }\n if (error.message) return new Error(error.message)\n return error\n}\n","import { v4 } from 'uuid'\n\nimport { httpService } from './httpService'\nimport {\n MetaResponse,\n QuoteRequest,\n QuoteResponse,\n CheckApprovalResponse,\n StatusRequest,\n StatusResponse,\n SwapRequest,\n SwapResponse,\n ReportTransactionRequest,\n WalletDetailsResponse,\n assetToString,\n BlockchainMeta,\n SwapperMetaDto,\n RequestOptions,\n} from '../types'\nimport { Signer } from 'ethers'\nimport { executeEvmRoute as executeEvmRoute } from './executor'\nimport { prettifyError } from '../utils/errors'\n\ntype WalletAddress = { blockchain: string; address: string }\n\nexport class RangoClient {\n private readonly deviceId: string\n\n private readonly apiKey: string\n\n constructor(apiKey: string, debug = false) {\n this.apiKey = apiKey\n try {\n if (typeof window !== 'undefined') {\n const deviceId = localStorage.getItem('deviceId')\n if (deviceId) {\n this.deviceId = deviceId\n } else {\n const generatedId = v4()\n localStorage.setItem('deviceId', generatedId)\n this.deviceId = generatedId\n }\n } else {\n this.deviceId = v4()\n }\n } catch (e) {\n this.deviceId = v4()\n }\n if (debug) {\n httpService.interceptors.request.use((request) => {\n console.log('Starting Request', JSON.stringify(request, null, 2))\n return request\n })\n httpService.interceptors.response.use((response) => {\n console.log('Response:', JSON.stringify(response, null, 2))\n return response\n })\n }\n }\n\n public async meta(options?: RequestOptions): Promise<MetaResponse> {\n const axiosResponse = await httpService.get<MetaResponse>(\n `/basic/meta?apiKey=${this.apiKey}`,\n { ...options }\n )\n return axiosResponse.data\n }\n\n public async chains(options?: RequestOptions): Promise<BlockchainMeta[]> {\n const axiosResponse = await httpService.get<BlockchainMeta[]>(\n `/basic/meta/blockchains?apiKey=${this.apiKey}`,\n { ...options }\n )\n return axiosResponse.data\n }\n\n public async swappers(options?: RequestOptions): Promise<SwapperMetaDto[]> {\n const axiosResponse = await httpService.get<SwapperMetaDto[]>(\n `/basic/meta/swappers?apiKey=${this.apiKey}`,\n { ...options }\n )\n return axiosResponse.data\n }\n\n public async quote(\n quoteRequest: QuoteRequest,\n options?: RequestOptions\n ): Promise<QuoteResponse> {\n const body = {\n ...quoteRequest,\n from: assetToString(quoteRequest.from),\n to: assetToString(quoteRequest.to),\n swappers:\n !!quoteRequest.swappers && quoteRequest.swappers.length > 0\n ? quoteRequest.swappers.join(',')\n : undefined,\n messagingProtocols:\n !!quoteRequest.messagingProtocols &&\n quoteRequest.messagingProtocols.length > 0\n ? quoteRequest.messagingProtocols.join(',')\n : undefined,\n }\n const axiosResponse = await httpService.get<QuoteResponse>(\n `/basic/quote?apiKey=${this.apiKey}`,\n {\n params: body,\n headers: { 'X-Rango-Id': this.deviceId },\n ...options,\n }\n )\n return axiosResponse.data\n }\n\n public async isApproved(\n requestId: string,\n txId: string,\n options?: RequestOptions\n ): Promise<CheckApprovalResponse> {\n const axiosResponse = await httpService.get<CheckApprovalResponse>(\n `/basic/is-approved?apiKey=${this.apiKey}`,\n {\n params: { requestId, txId },\n headers: { 'X-Rango-Id': this.deviceId },\n ...options,\n }\n )\n return axiosResponse.data\n }\n\n public async status(\n statusRequest: StatusRequest,\n options?: RequestOptions\n ): Promise<StatusResponse> {\n const axiosResponse = await httpService.get<StatusResponse>(\n `/basic/status?apiKey=${this.apiKey}`,\n {\n params: statusRequest,\n headers: { 'X-Rango-Id': this.deviceId },\n ...options,\n }\n )\n return axiosResponse.data\n }\n\n public async swap(\n swapRequest: SwapRequest,\n options?: RequestOptions\n ): Promise<SwapResponse> {\n const body = {\n ...swapRequest,\n from: assetToString(swapRequest.from),\n to: assetToString(swapRequest.to),\n swappers:\n !!swapRequest.swappers && swapRequest.swappers.length > 0\n ? swapRequest.swappers.join(',')\n : undefined,\n messagingProtocols:\n !!swapRequest.messagingProtocols &&\n swapRequest.messagingProtocols.length > 0\n ? swapRequest.messagingProtocols.join(',')\n : undefined,\n }\n const axiosResponse = await httpService.get<SwapResponse>(\n `/basic/swap?apiKey=${this.apiKey}`,\n {\n params: body,\n headers: { 'X-Rango-Id': this.deviceId },\n ...options,\n }\n )\n return axiosResponse.data\n }\n\n public async reportFailure(\n requestBody: ReportTransactionRequest,\n options?: RequestOptions\n ): Promise<void> {\n await httpService.post(\n `/basic/report-tx?apiKey=${this.apiKey}`,\n requestBody,\n {\n headers: { 'X-Rango-Id': this.deviceId },\n ...options,\n }\n )\n }\n\n public async balance(\n walletAddress: WalletAddress,\n options?: RequestOptions\n ): Promise<WalletDetailsResponse> {\n const axiosResponse = await httpService.get<WalletDetailsResponse>(\n `/basic/balance?apiKey=${this.apiKey}`,\n {\n params: walletAddress,\n headers: { 'X-Rango-Id': this.deviceId },\n ...options,\n }\n )\n return axiosResponse.data\n }\n\n public async executeEvmRoute(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n signer: any,\n route: SwapResponse\n ): Promise<StatusResponse> {\n try {\n return await executeEvmRoute(this, signer as Signer, route)\n } catch (error) {\n const prettifiedError = prettifyError(error)\n try {\n const message = prettifiedError?.message || 'Error executing the route'\n this.reportFailure({\n requestId: route.requestId,\n eventType: 'TX_FAIL',\n reason: message,\n })\n } catch (err) {\n console.log({ err })\n }\n throw prettifiedError\n }\n }\n}\n"],"names":["getRandomValues","rnds8","Uint8Array","rng","crypto","bind","Error","byteToHex","i","push","toString","slice","unsafeStringify","arr","offset","toLowerCase","randomUUID","v4","options","buf","native","rnds","random","baseURL","process","env","REACT_APP_RANGO_BASE_URL","httpService","axios","create","assetToString","asset","address","blockchain","symbol","blockchainMeta","MetamaskErrorCodes","rpc","invalidInput","resourceNotFound","resourceUnavailable","transactionRejected","methodNotSupported","limitExceeded","parse","invalidRequest","methodNotFound","invalidParams","internal","provider","userRejectedRequest","unauthorized","unsupportedMethod","disconnected","chainDisconnected","sleep","ms","Promise","resolve","setTimeout","prepareEvmTransaction","evmTx","isApprove","gasPrice","startsWith","parseInt","manipulatedTx","tx","from","approveTo","to","approveData","data","txTo","txData","value","gasLimit","checkApprovalSync","requestId","txId","rangoClient","isApproved","approvalResponse","txStatus","TransactionStatus","FAILED","console","log","err","checkTransactionStatusSync","status","SUCCESS","includes","executeEvmRoute","client","signer","route","error","resultType","type","TransactionType","EVM","evmTransaction","txChainId","blockChain","chainId","getChainId","signerChainId","approveTxData","sendTransaction","approveTx","wait","hash","mainTxData","mainTx","prettifyError","code","Object","values","getMessageFromCode","message","RangoClient","apiKey","debug","window","deviceId","localStorage","getItem","generatedId","setItem","e","interceptors","request","use","JSON","stringify","response","meta","get","axiosResponse","chains","swappers","quote","quoteRequest","body","length","join","undefined","messagingProtocols","params","headers","statusRequest","swap","swapRequest","reportFailure","requestBody","post","balance","walletAddress","prettifiedError","eventType","reason"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rango-sdk-basic.cjs.development.js","sources":["../src/services/httpService.ts","../src/types/api/common.ts","../../../node_modules/rango-types/src/api/shared/type-gaurds.ts","../../../node_modules/rango-types/src/api/shared/routing.ts","../../../node_modules/rango-types/src/api/shared/transactions.ts","../src/types/utils/errors.ts","../src/utils/promise.ts","../src/services/executor.ts","../src/utils/errors.ts","../src/services/client.ts"],"sourcesContent":["import axios from 'axios'\n\nconst baseURL =\n typeof process !== 'undefined' && process.env.REACT_APP_RANGO_BASE_URL\n ? process.env.REACT_APP_RANGO_BASE_URL\n : 'https://api.rango.exchange'\n\nexport const httpService = axios.create({\n baseURL,\n})\n","import { Asset } from 'rango-types/lib/api/basic'\nexport * from 'rango-types/lib/api/basic/common'\n\nexport function assetToString(asset: Asset): string {\n if (!!asset.address)\n return `${asset.blockchain}.${asset.symbol}--${asset.address}`\n else return `${asset.blockchain}.${asset.symbol}`\n}\n",null,null,null,"export const MetamaskErrorCodes = {\n rpc: {\n invalidInput: -32000,\n resourceNotFound: -32001,\n resourceUnavailable: -32002,\n transactionRejected: -32003,\n methodNotSupported: -32004,\n limitExceeded: -32005,\n parse: -32700,\n invalidRequest: -32600,\n methodNotFound: -32601,\n invalidParams: -32602,\n internal: -32603,\n },\n provider: {\n userRejectedRequest: 4001,\n unauthorized: 4100,\n unsupportedMethod: 4200,\n disconnected: 4900,\n chainDisconnected: 4901,\n },\n}\n","export function sleep(ms: number) {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n","import { Signer } from 'ethers'\nimport { RangoClient } from './client'\nimport { EvmTransaction } from '../types/api/txs'\nimport {\n StatusResponse,\n SwapResponse,\n TransactionStatus,\n TransactionType,\n} from '../types/api/transactions'\nimport { sleep } from '../utils/promise'\n\nexport function prepareEvmTransaction(\n evmTx: EvmTransaction,\n isApprove: boolean\n) {\n const gasPrice =\n !!evmTx.gasPrice && !evmTx.gasPrice.startsWith('0x')\n ? '0x' + parseInt(evmTx.gasPrice).toString(16)\n : null\n const manipulatedTx = {\n ...evmTx,\n gasPrice,\n }\n let tx = {}\n if (!!manipulatedTx.from) tx = { ...tx, from: manipulatedTx.from }\n if (isApprove) {\n if (!!manipulatedTx.approveTo) tx = { ...tx, to: manipulatedTx.approveTo }\n if (!!manipulatedTx.approveData)\n tx = { ...tx, data: manipulatedTx.approveData }\n } else {\n if (!!manipulatedTx.txTo) tx = { ...tx, to: manipulatedTx.txTo }\n if (!!manipulatedTx.txData) tx = { ...tx, data: manipulatedTx.txData }\n if (!!manipulatedTx.value) tx = { ...tx, value: manipulatedTx.value }\n if (!!manipulatedTx.gasLimit)\n tx = { ...tx, gasLimit: manipulatedTx.gasLimit }\n if (!!manipulatedTx.gasPrice)\n tx = { ...tx, gasPrice: manipulatedTx.gasPrice }\n }\n return tx\n}\n\nasync function checkApprovalSync(\n requestId: string,\n txId: string,\n rangoClient: RangoClient\n): Promise<boolean> {\n while (true) {\n try {\n const approvalResponse = await rangoClient.isApproved(requestId, txId)\n if (approvalResponse?.isApproved) return true\n if (\n !approvalResponse?.isApproved &&\n approvalResponse?.txStatus === TransactionStatus.FAILED\n )\n return false\n } catch (err) {\n console.log('ignorinig error', { err })\n }\n await sleep(3_000)\n }\n}\n\nexport const checkTransactionStatusSync = async (\n requestId: string,\n txId: string,\n rangoClient: RangoClient\n) => {\n let txStatus: StatusResponse | undefined\n while (true) {\n try {\n txStatus = await rangoClient.status({\n requestId,\n txId,\n })\n } catch (err) {\n console.log('ignorinig error', { err })\n }\n if (!!txStatus) {\n if (\n !!txStatus.status &&\n [TransactionStatus.FAILED, TransactionStatus.SUCCESS].includes(\n txStatus.status\n )\n ) {\n return txStatus\n }\n }\n await sleep(3_000)\n }\n}\n\nexport const executeEvmRoute = async (\n client: RangoClient,\n signer: Signer,\n route: SwapResponse\n): Promise<StatusResponse> => {\n const { tx, requestId, error, resultType } = route\n if (resultType != 'OK') throw new Error(resultType)\n if (!!error || !tx)\n throw new Error(error || 'Error creating the transaction.')\n if (tx?.type !== TransactionType.EVM)\n throw new Error('Non Evm transactions are not supported yet.')\n const evmTransaction = tx as EvmTransaction\n if (!evmTransaction) throw new Error('Transaction is null. Please try again!')\n const txChainId = parseInt(evmTransaction.blockChain.chainId || '-1')\n let signerChainId = await signer.getChainId()\n if (signerChainId !== txChainId) {\n throw new Error(\n `Signer chainId ${signerChainId} doesn't match required chainId ${txChainId}.`\n )\n }\n if (!!evmTransaction.approveTo && !!evmTransaction.approveData) {\n const approveTxData = prepareEvmTransaction(evmTransaction, true)\n const approveTx = await signer.sendTransaction(approveTxData)\n approveTx.wait()\n const isApproved = await checkApprovalSync(\n requestId,\n approveTx.hash,\n client\n )\n if (!isApproved) throw new Error('Error in approve transaction.')\n }\n signerChainId = await signer.getChainId()\n if (signerChainId !== txChainId) {\n throw new Error(\n `Signer chainId ${signerChainId} doesn't match required chainId ${txChainId}.`\n )\n }\n const mainTxData = prepareEvmTransaction(evmTransaction, false)\n const mainTx = await signer.sendTransaction(mainTxData)\n mainTx.wait()\n const status = await checkTransactionStatusSync(\n requestId,\n mainTx.hash,\n client\n )\n if (status.status !== TransactionStatus.SUCCESS)\n throw new Error(`Cross-chain swap failed. ${status.error || ''}`)\n return status\n}\n","import { getMessageFromCode } from 'eth-rpc-errors'\nimport { MetamaskErrorCodes } from '../types/utils/errors'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const prettifyError = (error: any) => {\n if (!error) return error\n if (error.code && (error.code === 'ACTION_REJECTED' || error.code === 4001))\n return new Error('Transaction Rejected')\n if (error && typeof error.code === 'number') {\n if (Object.values(MetamaskErrorCodes.provider).includes(error.code)) {\n return new Error(getMessageFromCode(error.code))\n }\n if (Object.values(MetamaskErrorCodes.rpc).includes(error.code)) {\n if (\n error.code === MetamaskErrorCodes.rpc.internal &&\n error.message?.includes('underpriced')\n )\n return new Error('Transaction underpriced')\n if (\n error.message?.includes('intrinsic gas too low') ||\n error.message?.includes('out of gas')\n )\n return new Error('This Gas limit is low.')\n return new Error(getMessageFromCode(error.code))\n }\n }\n if (error.message) return new Error(error.message)\n return error\n}\n","import uuid from 'uuid-random'\n\nimport { httpService } from './httpService'\nimport {\n MetaResponse,\n QuoteRequest,\n QuoteResponse,\n CheckApprovalResponse,\n StatusRequest,\n StatusResponse,\n SwapRequest,\n SwapResponse,\n ReportTransactionRequest,\n WalletDetailsResponse,\n assetToString,\n BlockchainMeta,\n SwapperMeta,\n RequestOptions,\n MessagingProtocolsResponse,\n} from '../types'\nimport { Signer } from 'ethers'\nimport { executeEvmRoute as executeEvmRoute } from './executor'\nimport { prettifyError } from '../utils/errors'\n\ntype WalletAddress = { blockchain: string; address: string }\n\nexport class RangoClient {\n private readonly deviceId: string\n\n private readonly apiKey: string\n\n constructor(apiKey: string, debug = false) {\n this.apiKey = apiKey\n try {\n if (typeof window !== 'undefined') {\n const deviceId = localStorage.getItem('deviceId')\n if (deviceId) {\n this.deviceId = deviceId\n } else {\n const generatedId = uuid()\n localStorage.setItem('deviceId', generatedId)\n this.deviceId = generatedId\n }\n } else {\n this.deviceId = uuid()\n }\n } catch (e) {\n this.deviceId = uuid()\n }\n if (debug) {\n httpService.interceptors.request.use((request) => {\n console.log('Starting Request', JSON.stringify(request, null, 2))\n return request\n })\n httpService.interceptors.response.use((response) => {\n console.log('Response:', JSON.stringify(response, null, 2))\n return response\n })\n }\n }\n\n public async meta(options?: RequestOptions): Promise<MetaResponse> {\n const axiosResponse = await httpService.get<MetaResponse>(\n `/basic/meta?apiKey=${this.apiKey}`,\n { ...options }\n )\n return axiosResponse.data\n }\n\n public async chains(options?: RequestOptions): Promise<BlockchainMeta[]> {\n const axiosResponse = await httpService.get<BlockchainMeta[]>(\n `/basic/meta/blockchains?apiKey=${this.apiKey}`,\n { ...options }\n )\n return axiosResponse.data\n }\n\n public async swappers(options?: RequestOptions): Promise<SwapperMeta[]> {\n const axiosResponse = await httpService.get<SwapperMeta[]>(\n `/basic/meta/swappers?apiKey=${this.apiKey}`,\n { ...options }\n )\n return axiosResponse.data\n }\n\n public async messagingProtocols(\n options?: RequestOptions\n ): Promise<MessagingProtocolsResponse> {\n const axiosResponse = await httpService.get<MessagingProtocolsResponse>(\n `/basic/meta/messaging-protocols?apiKey=${this.apiKey}`,\n { ...options }\n )\n return axiosResponse.data\n }\n\n public async quote(\n quoteRequest: QuoteRequest,\n options?: RequestOptions\n ): Promise<QuoteResponse> {\n const body = {\n ...quoteRequest,\n from: assetToString(quoteRequest.from),\n to: assetToString(quoteRequest.to),\n swappers:\n !!quoteRequest.swappers && quoteRequest.swappers.length > 0\n ? quoteRequest.swappers.join(',')\n : undefined,\n messagingProtocols:\n !!quoteRequest.messagingProtocols &&\n quoteRequest.messagingProtocols.length > 0\n ? quoteRequest.messagingProtocols.join(',')\n : undefined,\n }\n const axiosResponse = await httpService.get<QuoteResponse>(\n `/basic/quote?apiKey=${this.apiKey}`,\n {\n params: body,\n headers: { 'X-Rango-Id': this.deviceId },\n ...options,\n }\n )\n return axiosResponse.data\n }\n\n public async isApproved(\n requestId: string,\n txId: string,\n options?: RequestOptions\n ): Promise<CheckApprovalResponse> {\n const axiosResponse = await httpService.get<CheckApprovalResponse>(\n `/basic/is-approved?apiKey=${this.apiKey}`,\n {\n params: { requestId, txId },\n headers: { 'X-Rango-Id': this.deviceId },\n ...options,\n }\n )\n return axiosResponse.data\n }\n\n public async status(\n statusRequest: StatusRequest,\n options?: RequestOptions\n ): Promise<StatusResponse> {\n const axiosResponse = await httpService.get<StatusResponse>(\n `/basic/status?apiKey=${this.apiKey}`,\n {\n params: statusRequest,\n headers: { 'X-Rango-Id': this.deviceId },\n ...options,\n }\n )\n return axiosResponse.data\n }\n\n public async swap(\n swapRequest: SwapRequest,\n options?: RequestOptions\n ): Promise<SwapResponse> {\n const body = {\n ...swapRequest,\n from: assetToString(swapRequest.from),\n to: assetToString(swapRequest.to),\n swappers:\n !!swapRequest.swappers && swapRequest.swappers.length > 0\n ? swapRequest.swappers.join(',')\n : undefined,\n messagingProtocols:\n !!swapRequest.messagingProtocols &&\n swapRequest.messagingProtocols.length > 0\n ? swapRequest.messagingProtocols.join(',')\n : undefined,\n }\n const axiosResponse = await httpService.get<SwapResponse>(\n `/basic/swap?apiKey=${this.apiKey}`,\n {\n params: body,\n headers: { 'X-Rango-Id': this.deviceId },\n ...options,\n }\n )\n return axiosResponse.data\n }\n\n public async reportFailure(\n requestBody: ReportTransactionRequest,\n options?: RequestOptions\n ): Promise<void> {\n await httpService.post(\n `/basic/report-tx?apiKey=${this.apiKey}`,\n requestBody,\n {\n headers: { 'X-Rango-Id': this.deviceId },\n ...options,\n }\n )\n }\n\n public async balance(\n walletAddress: WalletAddress,\n options?: RequestOptions\n ): Promise<WalletDetailsResponse> {\n const axiosResponse = await httpService.get<WalletDetailsResponse>(\n `/basic/balance?apiKey=${this.apiKey}`,\n {\n params: walletAddress,\n headers: { 'X-Rango-Id': this.deviceId },\n ...options,\n }\n )\n return axiosResponse.data\n }\n\n public async executeEvmRoute(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n signer: any,\n route: SwapResponse\n ): Promise<StatusResponse> {\n try {\n return await executeEvmRoute(this, signer as Signer, route)\n } catch (error) {\n const prettifiedError = prettifyError(error)\n try {\n const message = prettifiedError?.message || 'Error executing the route'\n this.reportFailure({\n requestId: route.requestId,\n eventType: 'TX_FAIL',\n reason: message,\n })\n } catch (err) {\n console.log({ err })\n }\n throw prettifiedError\n }\n }\n}\n"],"names":["baseURL","process","env","REACT_APP_RANGO_BASE_URL","httpService","axios","create","assetToString","asset","address","blockchain","symbol","blockchainMeta","MetamaskErrorCodes","rpc","invalidInput","resourceNotFound","resourceUnavailable","transactionRejected","methodNotSupported","limitExceeded","parse","invalidRequest","methodNotFound","invalidParams","internal","provider","userRejectedRequest","unauthorized","unsupportedMethod","disconnected","chainDisconnected","sleep","ms","Promise","resolve","setTimeout","prepareEvmTransaction","evmTx","isApprove","gasPrice","startsWith","parseInt","toString","manipulatedTx","tx","from","approveTo","to","approveData","data","txTo","txData","value","gasLimit","checkApprovalSync","requestId","txId","rangoClient","isApproved","approvalResponse","txStatus","TransactionStatus","FAILED","console","log","err","checkTransactionStatusSync","status","SUCCESS","includes","executeEvmRoute","client","signer","route","error","resultType","Error","type","TransactionType","EVM","evmTransaction","txChainId","blockChain","chainId","getChainId","signerChainId","approveTxData","sendTransaction","approveTx","wait","hash","mainTxData","mainTx","prettifyError","code","Object","values","getMessageFromCode","message","RangoClient","apiKey","debug","window","deviceId","localStorage","getItem","generatedId","uuid","setItem","e","interceptors","request","use","JSON","stringify","response","meta","options","get","axiosResponse","chains","swappers","messagingProtocols","quote","quoteRequest","body","length","join","undefined","params","headers","statusRequest","swap","swapRequest","reportFailure","requestBody","post","balance","walletAddress","prettifiedError","eventType","reason"],"mappings":"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"}
|