@ledgerhq/domain-service 1.0.0 → 1.0.1-next.1
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/resolvers/index.d.ts.map +1 -1
- package/lib/resolvers/index.js +33 -8
- package/lib/resolvers/index.js.map +1 -1
- package/lib/types.d.ts +9 -0
- package/lib/types.d.ts.map +1 -1
- package/lib/utils/index.d.ts +5 -0
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/index.js +21 -1
- package/lib/utils/index.js.map +1 -1
- package/lib-es/resolvers/index.d.ts.map +1 -1
- package/lib-es/resolvers/index.js +10 -8
- package/lib-es/resolvers/index.js.map +1 -1
- package/lib-es/types.d.ts +9 -0
- package/lib-es/types.d.ts.map +1 -1
- package/lib-es/utils/index.d.ts +5 -0
- package/lib-es/utils/index.d.ts.map +1 -1
- package/lib-es/utils/index.js +19 -0
- package/lib-es/utils/index.js.map +1 -1
- package/package.json +3 -3
- package/src/resolvers/index.ts +12 -11
- package/src/types.ts +12 -0
- package/src/utils/index.ts +27 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolvers/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolvers/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAQxE;;;;;GAKG;AACH,eAAO,MAAM,aAAa,WAChB,MAAM,iBACC,mBAAmB,KACjC,QAAQ,uBAAuB,EAAE,CAwDnC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,YAChB,MAAM,iBACA,mBAAmB,KACjC,QAAQ,uBAAuB,EAAE,CAwDnC,CAAC"}
|
package/lib/resolvers/index.js
CHANGED
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
26
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
27
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -40,13 +63,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
40
63
|
};
|
|
41
64
|
exports.__esModule = true;
|
|
42
65
|
exports.resolveAddress = exports.resolveDomain = void 0;
|
|
43
|
-
var axios_1 =
|
|
66
|
+
var axios_1 = __importStar(require("axios"));
|
|
44
67
|
var eip55_1 = __importDefault(require("eip55"));
|
|
45
68
|
var logs_1 = require("@ledgerhq/logs");
|
|
69
|
+
var utils_1 = require("../utils");
|
|
46
70
|
var registries_1 = require("../registries");
|
|
47
|
-
if (typeof Promise.allSettled === "undefined") {
|
|
48
|
-
throw new Error("This lib requires Promise.allSettled in order to work. Please polyfill this method if needed.");
|
|
49
|
-
}
|
|
50
71
|
/**
|
|
51
72
|
* Get an array of addresses for a domain
|
|
52
73
|
*
|
|
@@ -74,7 +95,7 @@ var resolveDomain = function (domain, registryName) { return __awaiter(void 0, v
|
|
|
74
95
|
}); })()];
|
|
75
96
|
case 1:
|
|
76
97
|
registries = _a.sent();
|
|
77
|
-
responses =
|
|
98
|
+
responses = (0, utils_1.allSettled)(registries.map(function (registry) {
|
|
78
99
|
return axios_1["default"].request({
|
|
79
100
|
method: "GET",
|
|
80
101
|
url: registry.resolvers.forward.replace("{name}", domain)
|
|
@@ -82,9 +103,11 @@ var resolveDomain = function (domain, registryName) { return __awaiter(void 0, v
|
|
|
82
103
|
}));
|
|
83
104
|
return [2 /*return*/, responses.then(function (promises) {
|
|
84
105
|
return promises.reduce(function (result, promise, index) {
|
|
106
|
+
var _a;
|
|
85
107
|
if (promise.status !== "fulfilled") {
|
|
86
108
|
// ignore 404 error
|
|
87
|
-
if (promise.reason
|
|
109
|
+
if (promise.reason instanceof axios_1.AxiosError &&
|
|
110
|
+
((_a = promise.reason.response) === null || _a === void 0 ? void 0 : _a.status) !== 404) {
|
|
88
111
|
(0, logs_1.log)("domain-service", "failed to resolve a domain", {
|
|
89
112
|
domain: domain,
|
|
90
113
|
error: promise.reason
|
|
@@ -150,7 +173,7 @@ var resolveAddress = function (address, registryName) { return __awaiter(void 0,
|
|
|
150
173
|
return address;
|
|
151
174
|
}
|
|
152
175
|
})();
|
|
153
|
-
responses =
|
|
176
|
+
responses = (0, utils_1.allSettled)(registries.map(function (registry) {
|
|
154
177
|
return axios_1["default"].request({
|
|
155
178
|
method: "GET",
|
|
156
179
|
url: registry.resolvers.reverse.replace("{address}", address)
|
|
@@ -158,9 +181,11 @@ var resolveAddress = function (address, registryName) { return __awaiter(void 0,
|
|
|
158
181
|
}));
|
|
159
182
|
return [2 /*return*/, responses.then(function (promises) {
|
|
160
183
|
return promises.reduce(function (result, promise, index) {
|
|
184
|
+
var _a;
|
|
161
185
|
if (promise.status !== "fulfilled") {
|
|
162
186
|
// ignore 404 error
|
|
163
|
-
if (promise.reason
|
|
187
|
+
if (promise.reason instanceof axios_1.AxiosError &&
|
|
188
|
+
((_a = promise.reason.response) === null || _a === void 0 ? void 0 : _a.status) !== 404) {
|
|
164
189
|
(0, logs_1.log)("domain-service", "failed to resolve a address", {
|
|
165
190
|
address: address,
|
|
166
191
|
error: promise.reason
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolvers/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolvers/index.ts"],"names":[],"mappings":"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"}
|
package/lib/types.d.ts
CHANGED
|
@@ -16,5 +16,14 @@ export type Registry = {
|
|
|
16
16
|
};
|
|
17
17
|
coinTypes: CoinType[];
|
|
18
18
|
};
|
|
19
|
+
interface PromiseResolution<T> {
|
|
20
|
+
status: "fulfilled";
|
|
21
|
+
value: T;
|
|
22
|
+
}
|
|
23
|
+
interface PromiseRejection<E> {
|
|
24
|
+
status: "rejected";
|
|
25
|
+
reason: E;
|
|
26
|
+
}
|
|
27
|
+
export type PromiseResult<T, E = unknown> = PromiseResolution<T> | PromiseRejection<E>;
|
|
19
28
|
export { SupportedRegistries, DomainServiceResolution };
|
|
20
29
|
//# sourceMappingURL=types.d.ts.map
|
package/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB,CAAC;AAEF,UAAU,iBAAiB,CAAC,CAAC;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,CAAC,CAAC;CACV;AACD,UAAU,gBAAgB,CAAC,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,CAAC,CAAC;CACX;AACD,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,IACpC,iBAAiB,CAAC,CAAC,CAAC,GACpB,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,CAAC"}
|
package/lib/utils/index.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import { PromiseResult } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Needed polyfill for Promise.allSettled as it doesn't exist on RN.
|
|
4
|
+
*/
|
|
5
|
+
export declare const allSettled: <T>(promises: Promise<T>[]) => Promise<PromiseResult<T, unknown>[]>;
|
|
1
6
|
/**
|
|
2
7
|
* Helper to know in advance if a domain is compatible with the nano
|
|
3
8
|
*
|
package/lib/utils/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,cAAc,WAAY,MAAM,GAAG,SAAS,KAAG,OAW3D,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,UAAU,qEAoBtB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,WAAY,MAAM,GAAG,SAAS,KAAG,OAW3D,CAAC"}
|
package/lib/utils/index.js
CHANGED
|
@@ -1,6 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
exports.__esModule = true;
|
|
3
|
-
exports.validateDomain = void 0;
|
|
3
|
+
exports.validateDomain = exports.allSettled = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Needed polyfill for Promise.allSettled as it doesn't exist on RN.
|
|
6
|
+
*/
|
|
7
|
+
var allSettled = function (promises) {
|
|
8
|
+
return Promise.all(promises.map(function (p) {
|
|
9
|
+
return p
|
|
10
|
+
.then(function (value) {
|
|
11
|
+
return {
|
|
12
|
+
status: "fulfilled",
|
|
13
|
+
value: value
|
|
14
|
+
};
|
|
15
|
+
})["catch"](function (reason) {
|
|
16
|
+
return {
|
|
17
|
+
status: "rejected",
|
|
18
|
+
reason: reason
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
}));
|
|
22
|
+
};
|
|
23
|
+
exports.allSettled = allSettled;
|
|
4
24
|
/**
|
|
5
25
|
* Helper to know in advance if a domain is compatible with the nano
|
|
6
26
|
*
|
package/lib/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACI,IAAM,UAAU,GAAG,UACxB,QAAsB;IAEtB,OAAO,OAAO,CAAC,GAAG,CAChB,QAAQ,CAAC,GAAG,CAAC,UAAC,CAAC;QACb,OAAO,CAAC;aACL,IAAI,CAAC,UAAC,KAAK;YACV,OAAO;gBACL,MAAM,EAAE,WAAoB;gBAC5B,KAAK,OAAA;aACN,CAAC;QACJ,CAAC,CAAC,CACD,OAAK,CAAA,CAAC,UAAC,MAAe;YACrB,OAAO;gBACL,MAAM,EAAE,UAAmB;gBAC3B,MAAM,QAAA;aACP,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AApBW,QAAA,UAAU,cAoBrB;AAEF;;;;;GAKG;AACI,IAAM,cAAc,GAAG,UAAC,MAA0B;IACvD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,OAAO,KAAK,CAAC;KACd;IAED,IAAM,aAAa,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;IACvE,4DAA4D;IAC5D,4CAA4C;IAC5C,IAAM,sBAAsB,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEzE,OAAO,aAAa,IAAI,sBAAsB,CAAC;AACjD,CAAC,CAAC;AAXW,QAAA,cAAc,kBAWzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolvers/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolvers/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAQxE;;;;;GAKG;AACH,eAAO,MAAM,aAAa,WAChB,MAAM,iBACC,mBAAmB,KACjC,QAAQ,uBAAuB,EAAE,CAwDnC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,YAChB,MAAM,iBACA,mBAAmB,KACjC,QAAQ,uBAAuB,EAAE,CAwDnC,CAAC"}
|
|
@@ -34,13 +34,11 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
34
34
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
|
-
import axios from "axios";
|
|
37
|
+
import axios, { AxiosError } from "axios";
|
|
38
38
|
import eip55 from "eip55";
|
|
39
39
|
import { log } from "@ledgerhq/logs";
|
|
40
|
+
import { allSettled } from "../utils";
|
|
40
41
|
import { getRegistries, getRegistriesForAddress, getRegistriesForDomain, } from "../registries";
|
|
41
|
-
if (typeof Promise.allSettled === "undefined") {
|
|
42
|
-
throw new Error("This lib requires Promise.allSettled in order to work. Please polyfill this method if needed.");
|
|
43
|
-
}
|
|
44
42
|
/**
|
|
45
43
|
* Get an array of addresses for a domain
|
|
46
44
|
*
|
|
@@ -68,7 +66,7 @@ export var resolveDomain = function (domain, registryName) { return __awaiter(vo
|
|
|
68
66
|
}); })()];
|
|
69
67
|
case 1:
|
|
70
68
|
registries = _a.sent();
|
|
71
|
-
responses =
|
|
69
|
+
responses = allSettled(registries.map(function (registry) {
|
|
72
70
|
return axios.request({
|
|
73
71
|
method: "GET",
|
|
74
72
|
url: registry.resolvers.forward.replace("{name}", domain)
|
|
@@ -76,9 +74,11 @@ export var resolveDomain = function (domain, registryName) { return __awaiter(vo
|
|
|
76
74
|
}));
|
|
77
75
|
return [2 /*return*/, responses.then(function (promises) {
|
|
78
76
|
return promises.reduce(function (result, promise, index) {
|
|
77
|
+
var _a;
|
|
79
78
|
if (promise.status !== "fulfilled") {
|
|
80
79
|
// ignore 404 error
|
|
81
|
-
if (promise.reason
|
|
80
|
+
if (promise.reason instanceof AxiosError &&
|
|
81
|
+
((_a = promise.reason.response) === null || _a === void 0 ? void 0 : _a.status) !== 404) {
|
|
82
82
|
log("domain-service", "failed to resolve a domain", {
|
|
83
83
|
domain: domain,
|
|
84
84
|
error: promise.reason
|
|
@@ -143,7 +143,7 @@ export var resolveAddress = function (address, registryName) { return __awaiter(
|
|
|
143
143
|
return address;
|
|
144
144
|
}
|
|
145
145
|
})();
|
|
146
|
-
responses =
|
|
146
|
+
responses = allSettled(registries.map(function (registry) {
|
|
147
147
|
return axios.request({
|
|
148
148
|
method: "GET",
|
|
149
149
|
url: registry.resolvers.reverse.replace("{address}", address)
|
|
@@ -151,9 +151,11 @@ export var resolveAddress = function (address, registryName) { return __awaiter(
|
|
|
151
151
|
}));
|
|
152
152
|
return [2 /*return*/, responses.then(function (promises) {
|
|
153
153
|
return promises.reduce(function (result, promise, index) {
|
|
154
|
+
var _a;
|
|
154
155
|
if (promise.status !== "fulfilled") {
|
|
155
156
|
// ignore 404 error
|
|
156
|
-
if (promise.reason
|
|
157
|
+
if (promise.reason instanceof AxiosError &&
|
|
158
|
+
((_a = promise.reason.response) === null || _a === void 0 ? void 0 : _a.status) !== 404) {
|
|
157
159
|
log("domain-service", "failed to resolve a address", {
|
|
158
160
|
address: address,
|
|
159
161
|
error: promise.reason
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolvers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resolvers/index.ts"],"names":[],"mappings":"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"}
|
package/lib-es/types.d.ts
CHANGED
|
@@ -16,5 +16,14 @@ export type Registry = {
|
|
|
16
16
|
};
|
|
17
17
|
coinTypes: CoinType[];
|
|
18
18
|
};
|
|
19
|
+
interface PromiseResolution<T> {
|
|
20
|
+
status: "fulfilled";
|
|
21
|
+
value: T;
|
|
22
|
+
}
|
|
23
|
+
interface PromiseRejection<E> {
|
|
24
|
+
status: "rejected";
|
|
25
|
+
reason: E;
|
|
26
|
+
}
|
|
27
|
+
export type PromiseResult<T, E = unknown> = PromiseResolution<T> | PromiseRejection<E>;
|
|
19
28
|
export { SupportedRegistries, DomainServiceResolution };
|
|
20
29
|
//# sourceMappingURL=types.d.ts.map
|
package/lib-es/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,mBAAmB,CAAC;IAC1B,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,QAAQ,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB,CAAC;AAEF,UAAU,iBAAiB,CAAC,CAAC;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,CAAC,CAAC;CACV;AACD,UAAU,gBAAgB,CAAC,CAAC;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,CAAC,CAAC;CACX;AACD,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,IACpC,iBAAiB,CAAC,CAAC,CAAC,GACpB,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,CAAC"}
|
package/lib-es/utils/index.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import { PromiseResult } from "../types";
|
|
2
|
+
/**
|
|
3
|
+
* Needed polyfill for Promise.allSettled as it doesn't exist on RN.
|
|
4
|
+
*/
|
|
5
|
+
export declare const allSettled: <T>(promises: Promise<T>[]) => Promise<PromiseResult<T, unknown>[]>;
|
|
1
6
|
/**
|
|
2
7
|
* Helper to know in advance if a domain is compatible with the nano
|
|
3
8
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,cAAc,WAAY,MAAM,GAAG,SAAS,KAAG,OAW3D,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;GAEG;AACH,eAAO,MAAM,UAAU,qEAoBtB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,WAAY,MAAM,GAAG,SAAS,KAAG,OAW3D,CAAC"}
|
package/lib-es/utils/index.js
CHANGED
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Needed polyfill for Promise.allSettled as it doesn't exist on RN.
|
|
3
|
+
*/
|
|
4
|
+
export var allSettled = function (promises) {
|
|
5
|
+
return Promise.all(promises.map(function (p) {
|
|
6
|
+
return p
|
|
7
|
+
.then(function (value) {
|
|
8
|
+
return {
|
|
9
|
+
status: "fulfilled",
|
|
10
|
+
value: value
|
|
11
|
+
};
|
|
12
|
+
})["catch"](function (reason) {
|
|
13
|
+
return {
|
|
14
|
+
status: "rejected",
|
|
15
|
+
reason: reason
|
|
16
|
+
};
|
|
17
|
+
});
|
|
18
|
+
}));
|
|
19
|
+
};
|
|
1
20
|
/**
|
|
2
21
|
* Helper to know in advance if a domain is compatible with the nano
|
|
3
22
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,IAAM,UAAU,GAAG,UACxB,QAAsB;IAEtB,OAAO,OAAO,CAAC,GAAG,CAChB,QAAQ,CAAC,GAAG,CAAC,UAAC,CAAC;QACb,OAAO,CAAC;aACL,IAAI,CAAC,UAAC,KAAK;YACV,OAAO;gBACL,MAAM,EAAE,WAAoB;gBAC5B,KAAK,OAAA;aACN,CAAC;QACJ,CAAC,CAAC,CACD,OAAK,CAAA,CAAC,UAAC,MAAe;YACrB,OAAO;gBACL,MAAM,EAAE,UAAmB;gBAC3B,MAAM,QAAA;aACP,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,IAAM,cAAc,GAAG,UAAC,MAA0B;IACvD,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;QAC9B,OAAO,KAAK,CAAC;KACd;IAED,IAAM,aAAa,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;IACvE,4DAA4D;IAC5D,4CAA4C;IAC5C,IAAM,sBAAsB,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEzE,OAAO,aAAa,IAAI,sBAAsB,CAAC;AACjD,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ledgerhq/domain-service",
|
|
3
3
|
"description": "Ledger service responsible for domain handling",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.1-next.1",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -58,10 +58,10 @@
|
|
|
58
58
|
"eip55": "^2.1.0",
|
|
59
59
|
"react": "^17.0.2",
|
|
60
60
|
"react-dom": "^17.0.2",
|
|
61
|
-
"@ledgerhq/cryptoassets": "^9.
|
|
61
|
+
"@ledgerhq/cryptoassets": "^9.4.0-next.0",
|
|
62
62
|
"@ledgerhq/errors": "^6.12.4",
|
|
63
63
|
"@ledgerhq/logs": "^6.10.1",
|
|
64
|
-
"@ledgerhq/types-live": "^6.32.0"
|
|
64
|
+
"@ledgerhq/types-live": "^6.32.1-next.0"
|
|
65
65
|
},
|
|
66
66
|
"devDependencies": {
|
|
67
67
|
"@testing-library/jest-dom": "^5.16.5",
|
package/src/resolvers/index.ts
CHANGED
|
@@ -1,19 +1,14 @@
|
|
|
1
|
-
import axios from "axios";
|
|
1
|
+
import axios, { AxiosError } from "axios";
|
|
2
2
|
import eip55 from "eip55";
|
|
3
3
|
import { log } from "@ledgerhq/logs";
|
|
4
4
|
import { DomainServiceResolution, SupportedRegistries } from "../types";
|
|
5
|
+
import { allSettled } from "../utils";
|
|
5
6
|
import {
|
|
6
7
|
getRegistries,
|
|
7
8
|
getRegistriesForAddress,
|
|
8
9
|
getRegistriesForDomain,
|
|
9
10
|
} from "../registries";
|
|
10
11
|
|
|
11
|
-
if (typeof Promise.allSettled === "undefined") {
|
|
12
|
-
throw new Error(
|
|
13
|
-
"This lib requires Promise.allSettled in order to work. Please polyfill this method if needed."
|
|
14
|
-
);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
12
|
/**
|
|
18
13
|
* Get an array of addresses for a domain
|
|
19
14
|
*
|
|
@@ -35,7 +30,7 @@ export const resolveDomain = async (
|
|
|
35
30
|
return getRegistriesForDomain(domain);
|
|
36
31
|
})();
|
|
37
32
|
|
|
38
|
-
const responses =
|
|
33
|
+
const responses = allSettled(
|
|
39
34
|
registries.map((registry) =>
|
|
40
35
|
axios.request<string>({
|
|
41
36
|
method: "GET",
|
|
@@ -48,7 +43,10 @@ export const resolveDomain = async (
|
|
|
48
43
|
promises.reduce((result, promise, index) => {
|
|
49
44
|
if (promise.status !== "fulfilled") {
|
|
50
45
|
// ignore 404 error
|
|
51
|
-
if (
|
|
46
|
+
if (
|
|
47
|
+
promise.reason instanceof AxiosError &&
|
|
48
|
+
promise.reason.response?.status !== 404
|
|
49
|
+
) {
|
|
52
50
|
log("domain-service", "failed to resolve a domain", {
|
|
53
51
|
domain,
|
|
54
52
|
error: promise.reason,
|
|
@@ -107,7 +105,7 @@ export const resolveAddress = async (
|
|
|
107
105
|
}
|
|
108
106
|
})();
|
|
109
107
|
|
|
110
|
-
const responses =
|
|
108
|
+
const responses = allSettled(
|
|
111
109
|
registries.map((registry) =>
|
|
112
110
|
axios.request<string>({
|
|
113
111
|
method: "GET",
|
|
@@ -120,7 +118,10 @@ export const resolveAddress = async (
|
|
|
120
118
|
promises.reduce((result, promise, index) => {
|
|
121
119
|
if (promise.status !== "fulfilled") {
|
|
122
120
|
// ignore 404 error
|
|
123
|
-
if (
|
|
121
|
+
if (
|
|
122
|
+
promise.reason instanceof AxiosError &&
|
|
123
|
+
promise.reason.response?.status !== 404
|
|
124
|
+
) {
|
|
124
125
|
log("domain-service", "failed to resolve a address", {
|
|
125
126
|
address,
|
|
126
127
|
error: promise.reason,
|
package/src/types.ts
CHANGED
|
@@ -21,4 +21,16 @@ export type Registry = {
|
|
|
21
21
|
coinTypes: CoinType[];
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
+
interface PromiseResolution<T> {
|
|
25
|
+
status: "fulfilled";
|
|
26
|
+
value: T;
|
|
27
|
+
}
|
|
28
|
+
interface PromiseRejection<E> {
|
|
29
|
+
status: "rejected";
|
|
30
|
+
reason: E;
|
|
31
|
+
}
|
|
32
|
+
export type PromiseResult<T, E = unknown> =
|
|
33
|
+
| PromiseResolution<T>
|
|
34
|
+
| PromiseRejection<E>;
|
|
35
|
+
|
|
24
36
|
export { SupportedRegistries, DomainServiceResolution };
|
package/src/utils/index.ts
CHANGED
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
import { PromiseResult } from "../types";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Needed polyfill for Promise.allSettled as it doesn't exist on RN.
|
|
5
|
+
*/
|
|
6
|
+
export const allSettled = <T>(
|
|
7
|
+
promises: Promise<T>[]
|
|
8
|
+
): Promise<PromiseResult<T>[]> => {
|
|
9
|
+
return Promise.all(
|
|
10
|
+
promises.map((p) => {
|
|
11
|
+
return p
|
|
12
|
+
.then((value) => {
|
|
13
|
+
return {
|
|
14
|
+
status: "fulfilled" as const,
|
|
15
|
+
value,
|
|
16
|
+
};
|
|
17
|
+
})
|
|
18
|
+
.catch((reason: unknown) => {
|
|
19
|
+
return {
|
|
20
|
+
status: "rejected" as const,
|
|
21
|
+
reason,
|
|
22
|
+
};
|
|
23
|
+
});
|
|
24
|
+
})
|
|
25
|
+
);
|
|
26
|
+
};
|
|
27
|
+
|
|
1
28
|
/**
|
|
2
29
|
* Helper to know in advance if a domain is compatible with the nano
|
|
3
30
|
*
|