easy-currencies 2.1.0 → 2.2.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/dist/converter.js +52 -12
- package/dist/parts/chainer.d.ts +8 -0
- package/dist/parts/chainer.js +2 -1
- package/dist/parts/client.js +15 -5
- package/dist/parts/providers.d.ts +2 -1
- package/dist/parts/providers.js +78 -26
- package/dist/parts/requester.d.ts +16 -7
- package/dist/parts/requester.js +73 -33
- package/dist/parts/utils.d.ts +4 -4
- package/dist/parts/utils.js +1 -1
- package/package.json +7 -3
package/dist/converter.js
CHANGED
|
@@ -34,10 +34,26 @@ exports.RATES_BASE = Symbol.for("easy-currencies.ratesBase");
|
|
|
34
34
|
* `CURRENCY_CODE`, so this can never collide with a rate.
|
|
35
35
|
*/
|
|
36
36
|
exports.RATES_BASE_KEY = "__base";
|
|
37
|
+
/**
|
|
38
|
+
* An untrusted value as something with readable properties, or undefined.
|
|
39
|
+
*
|
|
40
|
+
* Vendor bodies and caller-supplied rate tables arrive as `unknown`. Reading a
|
|
41
|
+
* property off one without narrowing first is how a malformed 200 used to
|
|
42
|
+
* become a TypeError instead of a fallback.
|
|
43
|
+
*/
|
|
44
|
+
function asRecord(value) {
|
|
45
|
+
return typeof value === "object" && value !== null
|
|
46
|
+
? value
|
|
47
|
+
: undefined;
|
|
48
|
+
}
|
|
37
49
|
/** The base a table was fetched for, or undefined for one built by hand. */
|
|
38
50
|
function baseOf(rates) {
|
|
39
51
|
var _a;
|
|
40
|
-
const
|
|
52
|
+
const record = asRecord(rates);
|
|
53
|
+
if (!record) {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
const marked = (_a = record[exports.RATES_BASE]) !== null && _a !== void 0 ? _a : record[exports.RATES_BASE_KEY];
|
|
41
57
|
return typeof marked === "string" ? marked : undefined;
|
|
42
58
|
}
|
|
43
59
|
/** A rejection that is not contract-shaped is a bug, not a provider failure, and must not trigger fallback. */
|
|
@@ -155,23 +171,27 @@ function hasUsableRate(rates) {
|
|
|
155
171
|
* an unexpected shape, says nothing about the providers behind it.
|
|
156
172
|
*/
|
|
157
173
|
function readRates(provider, data, from) {
|
|
174
|
+
var _a;
|
|
158
175
|
// Some vendors truncate an unrecognised code to a valid prefix and answer for
|
|
159
176
|
// that instead: exchangerate-api turns "CNYqqqwwC" into "CNY".
|
|
160
|
-
const
|
|
177
|
+
const body = asRecord(data);
|
|
178
|
+
const echoed = (_a = body === null || body === void 0 ? void 0 : body.base) !== null && _a !== void 0 ? _a : body === null || body === void 0 ? void 0 : body.source;
|
|
161
179
|
if (typeof echoed === "string" && echoed.toLowerCase() !== from.toLowerCase()) {
|
|
162
180
|
return [
|
|
163
181
|
new Error(`Provider answered for base '${echoed}', not the requested '${from}'.`),
|
|
164
182
|
{}
|
|
165
183
|
];
|
|
166
184
|
}
|
|
167
|
-
let
|
|
185
|
+
let handled;
|
|
168
186
|
try {
|
|
169
|
-
|
|
187
|
+
const handler = provider.handler;
|
|
188
|
+
handled = handler(data);
|
|
170
189
|
}
|
|
171
190
|
catch (e) {
|
|
172
191
|
return [asError(e), {}];
|
|
173
192
|
}
|
|
174
|
-
|
|
193
|
+
const rates = asRecord(handled);
|
|
194
|
+
if (!rates) {
|
|
175
195
|
return [new Error("Provider returned no usable rates."), {}];
|
|
176
196
|
}
|
|
177
197
|
// Three of the built-in handlers return {} by design when the body is not the
|
|
@@ -184,6 +204,9 @@ function readRates(provider, data, from) {
|
|
|
184
204
|
// Stamp a copy, not the handler's own object. A handler may return a frozen
|
|
185
205
|
// table, where writing throws, or a memoised one, where a later fetch for a
|
|
186
206
|
// different base rewrites the marker under a caller still holding it.
|
|
207
|
+
// The cast is the one place the base marker is smuggled into a table typed
|
|
208
|
+
// as currency-to-number. RATES_BASE_KEY cannot be a currency code, so no
|
|
209
|
+
// caller reading a rate can collide with it.
|
|
187
210
|
const marked = Object.assign(Object.assign({}, rates), { [exports.RATES_BASE_KEY]: from });
|
|
188
211
|
Object.defineProperty(marked, exports.RATES_BASE, {
|
|
189
212
|
value: from,
|
|
@@ -292,7 +315,14 @@ class Converter {
|
|
|
292
315
|
* @throws {Error} - if the amount is not finite, or a currency is missing
|
|
293
316
|
* @returns {Promise<number>} - converted amount
|
|
294
317
|
*/
|
|
295
|
-
this.convert = (amount_1, from_1, to_1, ...args_1) => __awaiter(this, [amount_1, from_1, to_1, ...args_1], void 0, function* (amount, from, to,
|
|
318
|
+
this.convert = (amount_1, from_1, to_1, ...args_1) => __awaiter(this, [amount_1, from_1, to_1, ...args_1], void 0, function* (amount, from, to,
|
|
319
|
+
// Public signature, and `any` is load-bearing here rather than laziness.
|
|
320
|
+
// Rates may legitimately arrive with string values, which FloatRates and
|
|
321
|
+
// AlphaVantage really send, and a caller's own interface has no index
|
|
322
|
+
// signature so it would not satisfy Record<string, unknown>. Narrowing
|
|
323
|
+
// happens immediately below instead.
|
|
324
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
325
|
+
rates = undefined) {
|
|
296
326
|
// Validating before anything is requested: an unset amount used to come
|
|
297
327
|
// back as NaN, and an unset currency reached the vendor as "undefined".
|
|
298
328
|
requireAmount(amount);
|
|
@@ -331,19 +361,27 @@ class Converter {
|
|
|
331
361
|
* @throws {Error} - if the amount, the currency, the rates or the rate is invalid
|
|
332
362
|
* @returns {number} - converted amount
|
|
333
363
|
*/
|
|
334
|
-
this.convertRate = (amount, to,
|
|
364
|
+
this.convertRate = (amount, to,
|
|
365
|
+
// Public signature, and `any` is load-bearing here rather than laziness.
|
|
366
|
+
// Rates may legitimately arrive with string values, which FloatRates and
|
|
367
|
+
// AlphaVantage really send, and a caller's own interface has no index
|
|
368
|
+
// signature so it would not satisfy Record<string, unknown>. Narrowing
|
|
369
|
+
// happens immediately below instead.
|
|
370
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
371
|
+
rates = undefined) => {
|
|
335
372
|
var _a;
|
|
336
373
|
requireAmount(amount);
|
|
337
374
|
requireCurrency(to, "to");
|
|
338
|
-
// Array.isArray as well as the
|
|
375
|
+
// Array.isArray as well as the record check: an array IS an object, and
|
|
339
376
|
// Object.keys([0.9]) is ["0"], so a table read from an array offered
|
|
340
377
|
// index-keyed currencies rather than being rejected.
|
|
341
|
-
|
|
378
|
+
const table = Array.isArray(rates) ? undefined : asRecord(rates);
|
|
379
|
+
if (!table) {
|
|
342
380
|
throw new Error(`Rates must be an object mapping currency to rate, received ${describeRate(rates)}.`);
|
|
343
381
|
}
|
|
344
382
|
// The base marker rides along as an ordinary key; it is not a rate, so it
|
|
345
383
|
// is neither a lookup candidate nor part of the "N rates available" count.
|
|
346
|
-
const keys = Object.keys(
|
|
384
|
+
const keys = Object.keys(table).filter((key) => key !== exports.RATES_BASE_KEY);
|
|
347
385
|
// Exact match wins, so a response carrying both "EUR" and "eur" does not
|
|
348
386
|
// resolve differently depending on JSON key order.
|
|
349
387
|
const rateKey = (_a = keys.find((key) => key === to)) !== null && _a !== void 0 ? _a : keys.find((key) => asciiLower(key) === asciiLower(to));
|
|
@@ -352,7 +390,7 @@ class Converter {
|
|
|
352
390
|
// The full table is ~4KB in production.
|
|
353
391
|
throw new Error(`No '${to}' present in rates (${keys.length} rate${keys.length === 1 ? "" : "s"} available).`);
|
|
354
392
|
}
|
|
355
|
-
const raw =
|
|
393
|
+
const raw = table[rateKey];
|
|
356
394
|
const numericRate = asRate(raw);
|
|
357
395
|
if (!Number.isFinite(numericRate) || numericRate <= 0) {
|
|
358
396
|
throw new Error(`Invalid rate value for '${to}': expected a finite number greater than zero, received ${describeRate(raw)}.`);
|
|
@@ -410,6 +448,8 @@ class Converter {
|
|
|
410
448
|
this.report(lastError);
|
|
411
449
|
continue;
|
|
412
450
|
}
|
|
451
|
+
// The rejection is a FetchRatesError, not an Error, so name both sides
|
|
452
|
+
// rather than casting the pair to any and losing the shape entirely.
|
|
413
453
|
const [err, data] = yield (0, utils_1._to)((0, requester_1.fetchRates)(client, provider, { FROM: from, TO: to, multiple: multiple }, Object.assign(Object.assign({}, retry), { deadline })));
|
|
414
454
|
if (!err) {
|
|
415
455
|
// A provider answering wrongly, or a handler throwing on a shape it did
|
|
@@ -456,4 +496,4 @@ class Converter {
|
|
|
456
496
|
}
|
|
457
497
|
}
|
|
458
498
|
exports.Converter = Converter;
|
|
459
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxpREFBMkU7QUFFM0UsMkNBQXdDO0FBQ3hDLDJDQUFxRDtBQUE1QyxrR0FBQSxPQUFPLE9BQVc7QUFDM0IseUNBQW9DO0FBYXBDOzs7Ozs7R0FNRztBQUNVLFFBQUEsVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUVsRTs7Ozs7Ozs7O0dBU0c7QUFDVSxRQUFBLGNBQWMsR0FBRyxRQUFRLENBQUM7QUFFdkMsNEVBQTRFO0FBQzVFLFNBQVMsTUFBTSxDQUFDLEtBQVU7O0lBQ3hCLE1BQU0sTUFBTSxHQUFHLE1BQUEsS0FBSyxDQUFDLGtCQUFVLENBQUMsbUNBQUksS0FBSyxDQUFDLHNCQUFjLENBQUMsQ0FBQztJQUMxRCxPQUFPLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDekQsQ0FBQztBQVlELCtHQUErRztBQUMvRyxTQUFTLGlCQUFpQixDQUFDLEtBQWM7SUFDdkMsT0FBTyxDQUNMLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFDekIsS0FBSyxLQUFLLElBQUk7UUFDZCxPQUFRLEtBQXlCLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FDeEQsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxPQUFPLENBQUMsS0FBYztJQUM3QixJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUUsQ0FBQztRQUMzQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FDWCxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxLQUFLO1FBQ1AsQ0FBQyxDQUFDLHlCQUF5QixNQUFNLENB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
|
|
499
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnZlcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxpREFBMkU7QUFFM0UsMkNBQXdDO0FBQ3hDLDJDQUFxRDtBQUE1QyxrR0FBQSxPQUFPLE9BQVc7QUFDM0IseUNBQW9DO0FBYXBDOzs7Ozs7R0FNRztBQUNVLFFBQUEsVUFBVSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztBQUVsRTs7Ozs7Ozs7O0dBU0c7QUFDVSxRQUFBLGNBQWMsR0FBRyxRQUFRLENBQUM7QUFFdkM7Ozs7OztHQU1HO0FBQ0gsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSTtRQUNoRCxDQUFDLENBQUUsS0FBaUM7UUFDcEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNoQixDQUFDO0FBRUQsNEVBQTRFO0FBQzVFLFNBQVMsTUFBTSxDQUFDLEtBQWM7O0lBQzVCLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQ1YsTUFBQyxNQUEyQyxDQUFDLGtCQUFVLENBQUMsbUNBQ3hELE1BQU0sQ0FBQyxzQkFBYyxDQUFDLENBQUM7SUFDekIsT0FBTyxPQUFPLE1BQU0sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3pELENBQUM7QUFZRCwrR0FBK0c7QUFDL0csU0FBUyxpQkFBaUIsQ0FBQyxLQUFjO0lBQ3ZDLE9BQU8sQ0FDTCxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQ3pCLEtBQUssS0FBSyxJQUFJO1FBQ2QsT0FBUSxLQUF5QixDQUFDLE9B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
|
package/dist/parts/chainer.d.ts
CHANGED
|
@@ -8,6 +8,14 @@ export interface chainableConverter {
|
|
|
8
8
|
from: (from: string) => chainableConverter;
|
|
9
9
|
to: (to: string) => Promise<number>;
|
|
10
10
|
fetch: () => Promise<chainableConverter>;
|
|
11
|
+
/**
|
|
12
|
+
* The fetched rate table.
|
|
13
|
+
*
|
|
14
|
+
* This type is optimistic: the value is undefined until `fetch()` has
|
|
15
|
+
* resolved. Saying so would break any consumer reading `convert.rates`
|
|
16
|
+
* without a guard, so the honest `rateObject | undefined` waits for the next
|
|
17
|
+
* major rather than arriving in a minor.
|
|
18
|
+
*/
|
|
11
19
|
rates: rateObject;
|
|
12
20
|
amount: (val: number) => chainableConverter;
|
|
13
21
|
}
|
package/dist/parts/chainer.js
CHANGED
|
@@ -39,6 +39,7 @@ function Chainer(amount = undefined) {
|
|
|
39
39
|
to: _to,
|
|
40
40
|
fetch: _fetch,
|
|
41
41
|
get rates() {
|
|
42
|
+
// Cast, not a lie the compiler made: see the note on the interface.
|
|
42
43
|
return _currentRates;
|
|
43
44
|
},
|
|
44
45
|
amount: _amount
|
|
@@ -99,4 +100,4 @@ function Chainer(amount = undefined) {
|
|
|
99
100
|
});
|
|
100
101
|
}
|
|
101
102
|
}
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXJ0cy9jaGFpbmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBa0NBLDBCQXVGQztBQXpIRCw0Q0FBcUQ7QUF1QnJEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQixPQUFPLENBQUMsU0FBNkIsU0FBUztJQUM1RCxJQUFJLGNBQWMsR0FBdUIsTUFBTSxDQUFDO0lBQ2hELElBQUksWUFBWSxHQUF1QixTQUFTLENBQUM7SUFDakQsSUFBSSxVQUFVLEdBQXVCLFNBQVMsQ0FBQztJQUMvQyxJQUFJLGFBQWEsR0FBMkIsU0FBUyxDQUFDO0lBQ3RELG1EQUFtRDtJQUNuRCxJQUFJLFVBQVUsR0FBdUIsU0FBUyxDQUFDO0lBRS9DLGtCQUFrQjtJQUNsQixNQUFNLFVBQVUsR0FBRyxJQUFJLHFCQUFTLEVBQUUsQ0FBQztJQUVuQzs7T0FFRztJQUNILE1BQU0sU0FBUyxHQUF1QjtRQUNwQyxJQUFJLEVBQUUsS0FBSztRQUNYLEVBQUUsRUFBRSxHQUFHO1FBQ1AsS0FBSyxFQUFFLE1BQU07UUFDYixJQUFJLEtBQUs7WUFDUCxvRUFBb0U7WUFDcEUsT0FBTyxhQUEyQixDQUFDO1FBQ3JDLENBQUM7UUFDRCxNQUFNLEVBQUUsT0FBTztLQUNoQixDQUFDO0lBRUY7Ozs7T0FJRztJQUNILFNBQWUsTUFBTTs7WUFDbkIsdUNBQXVDO1lBQ3ZDLGFBQWEsR0FBRyxNQUFNLFVBQVUsQ0FBQyxRQUFRLENBQVMsWUFBWSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMxRSxVQUFVLEdBQUcsWUFBWSxDQUFDO1lBQzFCLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7S0FBQTtJQUVELHNCQUFzQjtJQUN0QixPQUFPLFNBQVMsQ0FBQztJQUVqQjs7Ozs7T0FLRztJQUNILFNBQVMsT0FBTyxDQUFDLEdBQVc7UUFDMUIsY0FBYyxHQUFHLEdBQUcsQ0FBQztRQUNyQixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxTQUFTLEtBQUssQ0FBQyxJQUFZO1FBQ3pCLHdFQUF3RTtRQUN4RSxtRUFBbUU7UUFDbkUsSUFBSSxVQUFVLEtBQUssU0FBUyxJQUFJLElBQUksS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNwRCxhQUFhLEdBQUcsU0FBUyxDQUFDO1lBQzFCLFVBQVUsR0FBRyxTQUFTLENBQUM7UUFDekIsQ0FBQztRQUNELFlBQVksR0FBRyxJQUFJLENBQUM7UUFDcEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsU0FBZSxHQUFHLENBQUMsRUFBVTs7WUFDM0IsVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUVoQixhQUFhO1lBQ2IsTUFBTSxNQUFNLEdBQUcsTUFBTSxVQUFVLENBQUMsT0FBTyxDQUM3QixjQUFjLEVBQ2QsWUFBWSxFQUNwQixVQUFVLEVBQ1YsYUFBYSxDQUNkLENBQUM7WUFFRixPQUFPLE1BQU0sQ0FBQztRQUNoQixDQUFDO0tBQUE7QUFDSCxDQUFDIn0=
|
package/dist/parts/client.js
CHANGED
|
@@ -28,13 +28,22 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.createClient = createClient;
|
|
30
30
|
const DEFAULT_MAX_RESPONSE_SIZE = 10 * 1024 * 1024;
|
|
31
|
+
/** True for a non-null object, so a property read off it is not a member access on `unknown`. */
|
|
32
|
+
function isObject(value) {
|
|
33
|
+
return typeof value === "object" && value !== null;
|
|
34
|
+
}
|
|
31
35
|
/** Node's fetch reports the reason under `cause`; surface it as a code. */
|
|
32
36
|
function errorCode(err) {
|
|
33
|
-
var _a
|
|
34
|
-
if ((err
|
|
37
|
+
var _a;
|
|
38
|
+
if (!isObject(err)) {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
if (err.name === "TimeoutError" || err.name === "AbortError") {
|
|
35
42
|
return "ETIMEDOUT";
|
|
36
43
|
}
|
|
37
|
-
|
|
44
|
+
const cause = isObject(err.cause) ? err.cause : undefined;
|
|
45
|
+
const code = (_a = cause === null || cause === void 0 ? void 0 : cause.code) !== null && _a !== void 0 ? _a : err.code;
|
|
46
|
+
return typeof code === "string" ? code : undefined;
|
|
38
47
|
}
|
|
39
48
|
/** Distinguishes a body that grew past the cap from any other parse failure. */
|
|
40
49
|
class ResponseTooLargeError extends Error {
|
|
@@ -94,7 +103,8 @@ function createClient(options = {}) {
|
|
|
94
103
|
}
|
|
95
104
|
catch (err) {
|
|
96
105
|
// No response: DNS, refused, timeout, abort.
|
|
97
|
-
const
|
|
106
|
+
const message = isObject(err) && typeof err.message === "string" ? err.message : undefined;
|
|
107
|
+
const error = new Error(message || "fetch failed");
|
|
98
108
|
error.code = errorCode(err);
|
|
99
109
|
throw error;
|
|
100
110
|
}
|
|
@@ -135,4 +145,4 @@ function createClient(options = {}) {
|
|
|
135
145
|
}
|
|
136
146
|
};
|
|
137
147
|
}
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhcnRzL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkc7Ozs7Ozs7Ozs7O0FBeUdILG9DQXdEQztBQTVIRCxNQUFNLHlCQUF5QixHQUFHLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBRW5ELGlHQUFpRztBQUNqRyxTQUFTLFFBQVEsQ0FBQyxLQUFjO0lBQzlCLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUM7QUFDckQsQ0FBQztBQUVELDJFQUEyRTtBQUMzRSxTQUFTLFNBQVMsQ0FBQyxHQUFZOztJQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbkIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUNELElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxjQUFjLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztRQUM3RCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzFELE1BQU0sSUFBSSxHQUFHLE1BQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLElBQUksbUNBQUksR0FBRyxDQUFDLElBQUksQ0FBQztJQUNyQyxPQUFPLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDckQsQ0FBQztBQUVELGdGQUFnRjtBQUNoRixNQUFNLHFCQUFzQixTQUFRLEtBQUs7Q0FBRztBQUU1Qzs7Ozs7Ozs7R0FRRztBQUNILFNBQWUsUUFB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
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { rateObject } from "../converter";
|
|
1
2
|
/**
|
|
2
3
|
* A map for provider information
|
|
3
4
|
*
|
|
@@ -61,7 +62,7 @@ export interface Provider {
|
|
|
61
62
|
* @type {Function}
|
|
62
63
|
* @memberof Provider
|
|
63
64
|
*/
|
|
64
|
-
handler:
|
|
65
|
+
handler: (data: any) => rateObject;
|
|
65
66
|
/**
|
|
66
67
|
* A map of possible errors and their respective messages
|
|
67
68
|
*
|
package/dist/parts/providers.js
CHANGED
|
@@ -18,11 +18,29 @@ function resolveProvider(provider) {
|
|
|
18
18
|
throw new Error("No provider with this name. Please use a provider from the supported providers list.");
|
|
19
19
|
}
|
|
20
20
|
// Copy, so instances do not share a template and overwrite each other's key.
|
|
21
|
+
// `key` is `any` on both sides by the public contract (Provider.key,
|
|
22
|
+
// ProviderReference.key), so this assignment carries no more risk than the
|
|
23
|
+
// interfaces already declare.
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- see above
|
|
21
25
|
return Object.assign(Object.assign({}, exports.providers[name]), { key: provider.key });
|
|
22
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Narrows an unknown response body to a plain object, or undefined if it is
|
|
29
|
+
* not one (including null, since typeof null === "object" would otherwise
|
|
30
|
+
* slip through). Every built-in handler and errorHandler below starts here
|
|
31
|
+
* instead of casting `data` ad hoc at each member access.
|
|
32
|
+
*/
|
|
33
|
+
function asRecord(data) {
|
|
34
|
+
return typeof data === "object" && data !== null
|
|
35
|
+
? data
|
|
36
|
+
: undefined;
|
|
37
|
+
}
|
|
23
38
|
/**
|
|
24
39
|
* Provider map initialization
|
|
25
40
|
*/
|
|
41
|
+
// Object.create(null) types as `any`, so Object.assign onto it does too; cast
|
|
42
|
+
// at the construction boundary rather than disabling the check, since this is
|
|
43
|
+
// the one place that must vouch for the literal actually matching Providers.
|
|
26
44
|
exports.providers = Object.assign(Object.create(null), {
|
|
27
45
|
ExchangeRateAPI: {
|
|
28
46
|
endpoint: {
|
|
@@ -31,11 +49,13 @@ exports.providers = Object.assign(Object.create(null), {
|
|
|
31
49
|
},
|
|
32
50
|
key: undefined,
|
|
33
51
|
handler: function (data) {
|
|
34
|
-
|
|
52
|
+
var _a;
|
|
53
|
+
return (_a = asRecord(data)) === null || _a === void 0 ? void 0 : _a.rates;
|
|
35
54
|
},
|
|
36
55
|
errors: { 400: "Malformed query.", 404: "Currency not found" },
|
|
37
56
|
errorHandler: function (data) {
|
|
38
|
-
|
|
57
|
+
var _a;
|
|
58
|
+
return (_a = asRecord(data)) === null || _a === void 0 ? void 0 : _a.status;
|
|
39
59
|
}
|
|
40
60
|
},
|
|
41
61
|
ExchangeRatesAPIIO: {
|
|
@@ -50,11 +70,14 @@ exports.providers = Object.assign(Object.create(null), {
|
|
|
50
70
|
},
|
|
51
71
|
key: undefined,
|
|
52
72
|
handler: function (data) {
|
|
53
|
-
|
|
73
|
+
var _a;
|
|
74
|
+
return (_a = asRecord(data)) === null || _a === void 0 ? void 0 : _a.rates;
|
|
54
75
|
},
|
|
55
76
|
// apilayer signals failure in the body, not the HTTP status.
|
|
56
77
|
errorHandler: function (data) {
|
|
57
|
-
|
|
78
|
+
var _a, _b;
|
|
79
|
+
const code = (_b = asRecord((_a = asRecord(data)) === null || _a === void 0 ? void 0 : _a.error)) === null || _b === void 0 ? void 0 : _b.code;
|
|
80
|
+
return (code !== null && code !== void 0 ? code : null);
|
|
58
81
|
}
|
|
59
82
|
},
|
|
60
83
|
CurrencyLayer: {
|
|
@@ -64,15 +87,20 @@ exports.providers = Object.assign(Object.create(null), {
|
|
|
64
87
|
},
|
|
65
88
|
key: undefined,
|
|
66
89
|
handler: function (data) {
|
|
90
|
+
var _a;
|
|
67
91
|
// An empty or unexpected 200 body would otherwise throw a TypeError out
|
|
68
92
|
// of the handler, which the caller reports as a missing response.
|
|
69
|
-
|
|
93
|
+
// `quotes` must itself be a real object: quotes === null is a distinct
|
|
94
|
+
// 200 shape, and asRecord folds it into "not usable" like every other
|
|
95
|
+
// non-object case.
|
|
96
|
+
const quotes = asRecord((_a = asRecord(data)) === null || _a === void 0 ? void 0 : _a.quotes);
|
|
97
|
+
if (!quotes) {
|
|
70
98
|
return {};
|
|
71
99
|
}
|
|
72
100
|
const map = {};
|
|
73
|
-
Object.keys(
|
|
74
|
-
map[key.slice(3)] =
|
|
75
|
-
}
|
|
101
|
+
for (const key of Object.keys(quotes)) {
|
|
102
|
+
map[key.slice(3)] = quotes[key];
|
|
103
|
+
}
|
|
76
104
|
return map;
|
|
77
105
|
},
|
|
78
106
|
errors: {
|
|
@@ -82,7 +110,9 @@ exports.providers = Object.assign(Object.create(null), {
|
|
|
82
110
|
106: "No results."
|
|
83
111
|
},
|
|
84
112
|
errorHandler: function (data) {
|
|
85
|
-
|
|
113
|
+
var _a, _b;
|
|
114
|
+
const code = (_b = asRecord((_a = asRecord(data)) === null || _a === void 0 ? void 0 : _a.error)) === null || _b === void 0 ? void 0 : _b.code;
|
|
115
|
+
return (code !== null && code !== void 0 ? code : null);
|
|
86
116
|
}
|
|
87
117
|
},
|
|
88
118
|
OpenExchangeRates: {
|
|
@@ -92,13 +122,15 @@ exports.providers = Object.assign(Object.create(null), {
|
|
|
92
122
|
},
|
|
93
123
|
key: undefined,
|
|
94
124
|
handler: function (data) {
|
|
95
|
-
|
|
125
|
+
var _a;
|
|
126
|
+
return (_a = asRecord(data)) === null || _a === void 0 ? void 0 : _a.rates;
|
|
96
127
|
},
|
|
97
128
|
errors: {
|
|
98
129
|
401: "Invalid API key!"
|
|
99
130
|
},
|
|
100
131
|
errorHandler: function (data) {
|
|
101
|
-
|
|
132
|
+
var _a;
|
|
133
|
+
return (_a = asRecord(data)) === null || _a === void 0 ? void 0 : _a.status;
|
|
102
134
|
}
|
|
103
135
|
},
|
|
104
136
|
AlphaVantage: {
|
|
@@ -109,9 +141,15 @@ exports.providers = Object.assign(Object.create(null), {
|
|
|
109
141
|
key: undefined,
|
|
110
142
|
handler: function (data) {
|
|
111
143
|
const map = {};
|
|
112
|
-
const
|
|
113
|
-
|
|
114
|
-
|
|
144
|
+
const record = asRecord(data);
|
|
145
|
+
if (!record) {
|
|
146
|
+
return map;
|
|
147
|
+
}
|
|
148
|
+
const firstKey = Object.keys(record)[0];
|
|
149
|
+
const o = firstKey === undefined ? undefined : asRecord(record[firstKey]);
|
|
150
|
+
// Same guard: an empty 200, or a first key holding a string rather than
|
|
151
|
+
// an object, must not crash the handler.
|
|
152
|
+
if (!o) {
|
|
115
153
|
return map;
|
|
116
154
|
}
|
|
117
155
|
map[o["3. To_Currency Code"]] = o["5. Exchange Rate"];
|
|
@@ -122,14 +160,15 @@ exports.providers = Object.assign(Object.create(null), {
|
|
|
122
160
|
503: "Invalid API key or Malformed query."
|
|
123
161
|
},
|
|
124
162
|
errorHandler: function (data) {
|
|
125
|
-
|
|
163
|
+
const record = asRecord(data);
|
|
164
|
+
if (!record) {
|
|
126
165
|
return null;
|
|
127
166
|
}
|
|
128
167
|
// AlphaVantage does not return error codes in the response,
|
|
129
168
|
// so we have to check if the response contains error messages
|
|
130
169
|
// and translate them to error codes if possible.
|
|
131
|
-
const hasError =
|
|
132
|
-
if (
|
|
170
|
+
const hasError = record["Error Message"] || record["Information"];
|
|
171
|
+
if (typeof hasError === "string" && hasError.includes("API rate limit")) {
|
|
133
172
|
return 429;
|
|
134
173
|
}
|
|
135
174
|
if (hasError) {
|
|
@@ -145,7 +184,8 @@ exports.providers = Object.assign(Object.create(null), {
|
|
|
145
184
|
},
|
|
146
185
|
key: undefined,
|
|
147
186
|
handler: function (data) {
|
|
148
|
-
|
|
187
|
+
var _a;
|
|
188
|
+
return (_a = asRecord(data)) === null || _a === void 0 ? void 0 : _a.rates;
|
|
149
189
|
},
|
|
150
190
|
errors: {
|
|
151
191
|
105: "A paid plan is required in order to use Fixer.io (base currency use not allowed)",
|
|
@@ -153,7 +193,9 @@ exports.providers = Object.assign(Object.create(null), {
|
|
|
153
193
|
201: "Invalid base currency."
|
|
154
194
|
},
|
|
155
195
|
errorHandler: function (data) {
|
|
156
|
-
|
|
196
|
+
var _a, _b;
|
|
197
|
+
const code = (_b = asRecord((_a = asRecord(data)) === null || _a === void 0 ? void 0 : _a.error)) === null || _b === void 0 ? void 0 : _b.code;
|
|
198
|
+
return (code !== null && code !== void 0 ? code : null);
|
|
157
199
|
}
|
|
158
200
|
},
|
|
159
201
|
Frankfurter: {
|
|
@@ -166,12 +208,14 @@ exports.providers = Object.assign(Object.create(null), {
|
|
|
166
208
|
},
|
|
167
209
|
key: undefined,
|
|
168
210
|
handler: function (data) {
|
|
169
|
-
|
|
211
|
+
var _a;
|
|
212
|
+
return (_a = asRecord(data)) === null || _a === void 0 ? void 0 : _a.rates;
|
|
170
213
|
},
|
|
171
214
|
// Verified live: an unknown base returns 404 with {"message":"not found"}.
|
|
172
215
|
errors: { 404: "Currency not found or not supported by Frankfurter." },
|
|
173
216
|
errorHandler: function (data) {
|
|
174
|
-
|
|
217
|
+
var _a;
|
|
218
|
+
return (_a = asRecord(data)) === null || _a === void 0 ? void 0 : _a.status;
|
|
175
219
|
}
|
|
176
220
|
},
|
|
177
221
|
FloatRates: {
|
|
@@ -184,15 +228,23 @@ exports.providers = Object.assign(Object.create(null), {
|
|
|
184
228
|
key: undefined,
|
|
185
229
|
handler: function (data) {
|
|
186
230
|
const map = {};
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
231
|
+
const record = asRecord(data);
|
|
232
|
+
if (!record) {
|
|
233
|
+
return map;
|
|
234
|
+
}
|
|
235
|
+
for (const key of Object.keys(record)) {
|
|
236
|
+
const entry = asRecord(record[key]);
|
|
237
|
+
if (entry) {
|
|
238
|
+
map[entry.code] = parseFloat(entry.rate);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
190
241
|
return map;
|
|
191
242
|
},
|
|
192
243
|
// Verified live: an unknown currency returns 403 with an empty body.
|
|
193
244
|
errors: { 403: "Currency not found or not supported by FloatRates." },
|
|
194
245
|
errorHandler: function (data) {
|
|
195
|
-
|
|
246
|
+
var _a;
|
|
247
|
+
return (_a = asRecord(data)) === null || _a === void 0 ? void 0 : _a.status;
|
|
196
248
|
}
|
|
197
249
|
}
|
|
198
250
|
});
|
|
@@ -208,4 +260,4 @@ for (const name of Object.keys(exports.providers)) {
|
|
|
208
260
|
// a built-in can no longer be deleted or replaced out from under every
|
|
209
261
|
// Converter in the process.
|
|
210
262
|
Object.seal(exports.providers);
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhcnRzL3Byb3ZpZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUEwSEEsMENBaUJDO0FBeEJEOzs7Ozs7R0FNRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxRQUEyQjtJQUN6RCw2RUFBNkU7SUFDN0UsbUVBQW1FO0lBQ25FLCtDQUErQztJQUMvQyxNQUFNLElBQUksR0FBRyxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsSUFBSSxDQUFDO0lBQzVCLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGlCQUFTLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN2RixNQUFNLElBQUksS0FBSyxDQUNiLHNGQUFzRixDQUN2RixDQUFDO0lBQ0osQ0FBQztJQUVELDZFQUE2RTtJQUM3RSxxRUFBcUU7SUFDckUsMkVBQTJFO0lBQzNFLDhCQUE4QjtJQUM5QixnRkFBZ0Y7SUFDaEYsdUNBQVksaUJBQVMsQ0FBQyxJQUFJLENBQUMsS0FBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUcsSUFBRztBQUNuRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLFFBQVEsQ0FBQyxJQUFhO0lBQzdCLE9BQU8sT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxJQUFJO1FBQzlDLENBQUMsQ0FBRSxJQUFnQztRQUNuQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7R0FFRztBQUNILDhFQUE4RTtBQUM5RSw4RUFBOEU7QUFDOUUsNkVBQTZFO0FBQ2hFLFFBQUEsU0FBUyxHQUFjLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUNyRSxlQUFlLEVBQUU7UUFDZixRQUFRLEVBQUU7WUFDUixJQUFJ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
|
|
@@ -28,12 +28,21 @@ export interface RetryOptions {
|
|
|
28
28
|
*/
|
|
29
29
|
deadline?: number;
|
|
30
30
|
}
|
|
31
|
-
/**
|
|
32
|
-
|
|
31
|
+
/**
|
|
32
|
+
* How a rate fetch failed. Every provider failure is recoverable by trying the
|
|
33
|
+
* next provider.
|
|
34
|
+
*
|
|
35
|
+
* Extends Error, not a plain object, so every `throw` of one satisfies
|
|
36
|
+
* only-throw-error. converter.ts still recognises it by duck-typing `handled`
|
|
37
|
+
* (see `isProviderFailure` there), which an Error subclass with a boolean
|
|
38
|
+
* `handled` property satisfies exactly as a plain object would.
|
|
39
|
+
*/
|
|
40
|
+
export declare class FetchRatesError extends Error {
|
|
33
41
|
/** False means fatal: the caller rethrows rather than trying another provider. */
|
|
34
|
-
handled: boolean;
|
|
35
|
-
/** The reason
|
|
36
|
-
error: unknown;
|
|
42
|
+
readonly handled: boolean;
|
|
43
|
+
/** The reason: an Error for a transport or budget failure, or whatever a provider's errorHandler mapped to. */
|
|
44
|
+
readonly error: unknown;
|
|
45
|
+
constructor(handled: boolean, error: unknown);
|
|
37
46
|
}
|
|
38
47
|
/**
|
|
39
48
|
* When a call that starts now must be finished by.
|
|
@@ -52,6 +61,6 @@ export declare function deadlineFrom(options: RetryOptions): number;
|
|
|
52
61
|
* @param {Provider} provider - provider from which the quotes will be fetched
|
|
53
62
|
* @param {Query} query - the query
|
|
54
63
|
* @param {RetryOptions} [options] - retry tuning
|
|
55
|
-
* @returns {Promise<
|
|
64
|
+
* @returns {Promise<unknown>} - a result promise
|
|
56
65
|
*/
|
|
57
|
-
export declare function fetchRates(client: HttpClient, provider: Provider, query: Query, options?: RetryOptions): Promise<
|
|
66
|
+
export declare function fetchRates(client: HttpClient, provider: Provider, query: Query, options?: RetryOptions): Promise<unknown>;
|
package/dist/parts/requester.js
CHANGED
|
@@ -9,9 +9,28 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.FetchRatesError = void 0;
|
|
12
13
|
exports.deadlineFrom = deadlineFrom;
|
|
13
14
|
exports.fetchRates = fetchRates;
|
|
14
15
|
const utils_1 = require("../parts/utils");
|
|
16
|
+
/**
|
|
17
|
+
* How a rate fetch failed. Every provider failure is recoverable by trying the
|
|
18
|
+
* next provider.
|
|
19
|
+
*
|
|
20
|
+
* Extends Error, not a plain object, so every `throw` of one satisfies
|
|
21
|
+
* only-throw-error. converter.ts still recognises it by duck-typing `handled`
|
|
22
|
+
* (see `isProviderFailure` there), which an Error subclass with a boolean
|
|
23
|
+
* `handled` property satisfies exactly as a plain object would.
|
|
24
|
+
*/
|
|
25
|
+
class FetchRatesError extends Error {
|
|
26
|
+
constructor(handled, error) {
|
|
27
|
+
super(error instanceof Error ? error.message : String(error));
|
|
28
|
+
this.name = "FetchRatesError";
|
|
29
|
+
this.handled = handled;
|
|
30
|
+
this.error = error;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.FetchRatesError = FetchRatesError;
|
|
15
34
|
// The old 5 retries capped at 16s ran 1+2+4+8+16 = 31s per provider, and the
|
|
16
35
|
// schedule restarted for each one: three rate-limited providers measured at
|
|
17
36
|
// 102s and 18 upstream requests, with no way for a caller to shorten it.
|
|
@@ -37,7 +56,7 @@ function budgetExhausted() {
|
|
|
37
56
|
return error;
|
|
38
57
|
}
|
|
39
58
|
function isBudgetExhausted(value) {
|
|
40
|
-
return
|
|
59
|
+
return value instanceof Error && value[BUDGET_EXHAUSTED] === true;
|
|
41
60
|
}
|
|
42
61
|
/**
|
|
43
62
|
* Rejects once the deadline passes.
|
|
@@ -64,7 +83,10 @@ function withDeadline(work, deadline) {
|
|
|
64
83
|
resolve(value);
|
|
65
84
|
}, (error) => {
|
|
66
85
|
clearTimeout(timer);
|
|
67
|
-
|
|
86
|
+
// Forwarded verbatim: `work` is whatever a caller-supplied HttpClient
|
|
87
|
+
// rejects with, which the contract never requires to be an Error.
|
|
88
|
+
const forwarded = error;
|
|
89
|
+
reject(forwarded);
|
|
68
90
|
});
|
|
69
91
|
});
|
|
70
92
|
}
|
|
@@ -135,7 +157,7 @@ function signalledFailure(provider, failed, response, result) {
|
|
|
135
157
|
? provider.errors[error]
|
|
136
158
|
: undefined;
|
|
137
159
|
if (mapped) {
|
|
138
|
-
return
|
|
160
|
+
return new FetchRatesError(true, mapped);
|
|
139
161
|
}
|
|
140
162
|
// A code the provider does not enumerate is not a verdict on the chain.
|
|
141
163
|
// Treating it as fatal meant a 500 from any provider whose errorHandler reads
|
|
@@ -151,12 +173,9 @@ function signalledFailure(provider, failed, response, result) {
|
|
|
151
173
|
// Keep the provider's own number when it is not just the status echoed
|
|
152
174
|
// back: an apilayer 101 arriving on an HTTP 401 is the useful half, and
|
|
153
175
|
// reporting only "HTTP 401" throws away what the vendor actually said.
|
|
154
|
-
return
|
|
155
|
-
handled: true,
|
|
156
|
-
error: httpFailureError(response.status, error === response.status ? undefined : error)
|
|
157
|
-
};
|
|
176
|
+
return new FetchRatesError(true, httpFailureError(response.status, error === response.status ? undefined : error));
|
|
158
177
|
}
|
|
159
|
-
return
|
|
178
|
+
return new FetchRatesError(true, error);
|
|
160
179
|
}
|
|
161
180
|
/**
|
|
162
181
|
* The fetchRates function, used for fetching currency conversion rates.
|
|
@@ -168,7 +187,7 @@ function signalledFailure(provider, failed, response, result) {
|
|
|
168
187
|
* @param {Provider} provider - provider from which the quotes will be fetched
|
|
169
188
|
* @param {Query} query - the query
|
|
170
189
|
* @param {RetryOptions} [options] - retry tuning
|
|
171
|
-
* @returns {Promise<
|
|
190
|
+
* @returns {Promise<unknown>} - a result promise
|
|
172
191
|
*/
|
|
173
192
|
function fetchRates(client_1, provider_1, query_1) {
|
|
174
193
|
return __awaiter(this, arguments, void 0, function* (client, provider, query, options = {}) {
|
|
@@ -243,7 +262,7 @@ function normalize(value, fallback) {
|
|
|
243
262
|
}
|
|
244
263
|
/** The rejection shape for a failure the caller should treat as this provider's, and fall back from. */
|
|
245
264
|
function providerFailure(error) {
|
|
246
|
-
return
|
|
265
|
+
return new FetchRatesError(true, error);
|
|
247
266
|
}
|
|
248
267
|
/** The response of an HTTP failure, or undefined for anything else thrown. */
|
|
249
268
|
function responseOf(err) {
|
|
@@ -258,12 +277,20 @@ function responseOf(err) {
|
|
|
258
277
|
* `HttpResponse` carries no headers today, so this only pays off for a custom
|
|
259
278
|
* client that attaches them — but it costs nothing to look.
|
|
260
279
|
*/
|
|
280
|
+
/** True for a non-null object, so a property read off it is not a member access on `unknown`. */
|
|
281
|
+
function isObject(value) {
|
|
282
|
+
return typeof value === "object" && value !== null;
|
|
283
|
+
}
|
|
284
|
+
/** Narrows to a fetch-style Headers instance, the one shape here that reads via a method. */
|
|
285
|
+
function hasGetMethod(value) {
|
|
286
|
+
return typeof value.get === "function";
|
|
287
|
+
}
|
|
261
288
|
function header(response, name) {
|
|
262
289
|
const headers = response.headers;
|
|
263
|
-
if (!headers) {
|
|
290
|
+
if (!isObject(headers)) {
|
|
264
291
|
return undefined;
|
|
265
292
|
}
|
|
266
|
-
if (
|
|
293
|
+
if (hasGetMethod(headers)) {
|
|
267
294
|
const value = headers.get(name);
|
|
268
295
|
return typeof value === "string" ? value : undefined;
|
|
269
296
|
}
|
|
@@ -323,33 +350,46 @@ function httpFailureError(status, providerCode) {
|
|
|
323
350
|
* @returns {string} - a short, safe description
|
|
324
351
|
*/
|
|
325
352
|
function describe(err) {
|
|
326
|
-
var _a;
|
|
327
353
|
if (typeof err === "string") {
|
|
328
354
|
return err.trim() || "unknown error";
|
|
329
355
|
}
|
|
330
356
|
if (err && typeof err === "object") {
|
|
331
|
-
|
|
332
|
-
if (typeof code === "string" && code.trim()) {
|
|
333
|
-
return code.trim();
|
|
334
|
-
}
|
|
335
|
-
if (typeof code === "number") {
|
|
336
|
-
return String(code);
|
|
337
|
-
}
|
|
338
|
-
const name = (_a = err.constructor) === null || _a === void 0 ? void 0 : _a.name;
|
|
339
|
-
if (typeof name !== "string" || !name || name === "Object") {
|
|
340
|
-
return "unknown error";
|
|
341
|
-
}
|
|
342
|
-
return typeof message === "string" && message.trim()
|
|
343
|
-
? `${name} (message withheld)`
|
|
344
|
-
: `${name} (no message)`;
|
|
357
|
+
return describeObject(err);
|
|
345
358
|
}
|
|
346
359
|
if (err === null || err === undefined) {
|
|
347
360
|
return "unknown error";
|
|
348
361
|
}
|
|
349
|
-
//
|
|
350
|
-
//
|
|
351
|
-
//
|
|
352
|
-
|
|
362
|
+
// Each of these renders through String() on its own. Objects never reach
|
|
363
|
+
// here, which matters: String() throws on a null prototype and their fields
|
|
364
|
+
// are not ours to show. Named one by one rather than narrowed by
|
|
365
|
+
// elimination, because `unknown` stays `unknown` in the false branch of a
|
|
366
|
+
// typeof check, so nothing else convinces the compiler this is exhaustive.
|
|
367
|
+
if (typeof err === "number" ||
|
|
368
|
+
typeof err === "bigint" ||
|
|
369
|
+
typeof err === "boolean" ||
|
|
370
|
+
typeof err === "symbol" ||
|
|
371
|
+
typeof err === "function") {
|
|
372
|
+
return String(err);
|
|
373
|
+
}
|
|
374
|
+
return "unknown error";
|
|
375
|
+
}
|
|
376
|
+
/** The object half of `describe`, split out to keep either half readable. */
|
|
377
|
+
function describeObject(err) {
|
|
378
|
+
const { code, message } = err;
|
|
379
|
+
if (typeof code === "string" && code.trim()) {
|
|
380
|
+
return code.trim();
|
|
381
|
+
}
|
|
382
|
+
if (typeof code === "number") {
|
|
383
|
+
return String(code);
|
|
384
|
+
}
|
|
385
|
+
const ctor = err.constructor;
|
|
386
|
+
const name = typeof ctor === "function" ? ctor.name : undefined;
|
|
387
|
+
if (typeof name !== "string" || !name || name === "Object") {
|
|
388
|
+
return "unknown error";
|
|
389
|
+
}
|
|
390
|
+
return typeof message === "string" && message.trim()
|
|
391
|
+
? `${name} (message withheld)`
|
|
392
|
+
: `${name} (no message)`;
|
|
353
393
|
}
|
|
354
394
|
/**
|
|
355
395
|
* Reduces a request error to a message and code.
|
|
@@ -392,6 +432,6 @@ function formatUrl(provider, query) {
|
|
|
392
432
|
return (provider.endpoint.base + provider.endpoint.single)
|
|
393
433
|
.replace(/%FROM%/g, put(query.FROM))
|
|
394
434
|
.replace(/%TO%/g, put(query.TO))
|
|
395
|
-
.replace(/%KEY%/g, put(provider.key || ""));
|
|
435
|
+
.replace(/%KEY%/g, put(String(provider.key || "")));
|
|
396
436
|
}
|
|
397
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhcnRzL3JlcXVlc3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQXlEQSxvQ0FFQztBQWdNRCxnQ0E4RUM7QUF2VUQsMENBQXNDO0FBd0N0Qyw2RUFBNkU7QUFDN0UsNEVBQTRFO0FBQzVFLHlFQUF5RTtBQUN6RSxNQUFNLG1CQUFtQixHQUFHLENBQUMsQ0FBQztBQUM5QixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUMvQixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUM7QUFDN0IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDO0FBQzNCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQztBQUVwQjs7Ozs7R0FLRztBQUNILFNBQWdCLFlBQVksQ0FBQyxPQUFxQjtJQUNoRCxPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsQ0FBQztBQUNsRSxDQUFDO0FBRUQsdUZBQXVGO0FBQ3ZGLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBRXZFLFNBQVMsZUFBZTtJQUN0QixNQUFNLEtBQUssR0FBUSxJQUFJLEtBQUssQ0FDMUIsaUVBQWlFLENBQ2xFLENBQUM7SUFDRixLQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDL0IsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxLQUFjO0lBQ3ZDLE9BQU8sT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUssS0FBYSxDQUFDLGdCQUFnQixDQUFDLEtBQUssSUFBSSxDQUFDO0FBQ2xHLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxZQUFZLENBQUksSUFBZ0IsRUFBRSxRQUFnQjtJ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
|
|
437
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3BhcnRzL3JlcXVlc3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUF3RUEsb0NBRUM7QUFtTUQsZ0NBOEVDO0FBelZELDBDQUFzQztBQWdDdEM7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsS0FBSztJQU14QyxZQUFZLE9BQWdCLEVBQUUsS0FBYztRQUMxQyxLQUFLLENBQUMsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztRQUM5QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0NBQ0Y7QUFaRCwwQ0FZQztBQUVELDZFQUE2RTtBQUM3RSw0RUFBNEU7QUFDNUUseUVBQXlFO0FBQ3pFLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDO0FBQy9CLE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQztBQUM3QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFDM0IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBRXBCOzs7OztHQUtHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLE9BQXFCO0lBQ2hELE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFFRCx1RkFBdUY7QUFDdkYsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7QUFLdkUsU0FBUyxlQUFl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
|
package/dist/parts/utils.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { UserDefinedProvider, Provider } from "./providers";
|
|
|
9
9
|
* checks the actual shape each field is dereferenced with, and returns the
|
|
10
10
|
* reason so the caller can throw one message that names it.
|
|
11
11
|
*/
|
|
12
|
-
export declare function providerShapeIssue(provider:
|
|
12
|
+
export declare function providerShapeIssue(provider: unknown): string | null;
|
|
13
13
|
/**
|
|
14
14
|
* Same as `providerShapeIssue`, for the `{ name, provider }` pair `add` and
|
|
15
15
|
* `addMultiple` take.
|
|
@@ -19,7 +19,7 @@ export declare function providerShapeIssue(provider: Provider | any): string | n
|
|
|
19
19
|
* property key for the built-in-name lookup, with no `toString` to fall back
|
|
20
20
|
* on.
|
|
21
21
|
*/
|
|
22
|
-
export declare function userDefinedProviderIssue(userDefinedProvider:
|
|
22
|
+
export declare function userDefinedProviderIssue(userDefinedProvider: unknown): string | null;
|
|
23
23
|
/**
|
|
24
24
|
* Utility for typechecking UserDefinedProvider objects
|
|
25
25
|
*
|
|
@@ -27,7 +27,7 @@ export declare function userDefinedProviderIssue(userDefinedProvider: UserDefine
|
|
|
27
27
|
* @param {(UserDefinedProvider | any)} userDefinedProvider - The UserDefinedProvider object to be checked
|
|
28
28
|
* @returns {u is UserDefinedProvider}
|
|
29
29
|
*/
|
|
30
|
-
export declare function checkIfUserDefinedProvider(userDefinedProvider:
|
|
30
|
+
export declare function checkIfUserDefinedProvider(userDefinedProvider: unknown): userDefinedProvider is UserDefinedProvider;
|
|
31
31
|
/**
|
|
32
32
|
* Utility for typechecking Provider objects
|
|
33
33
|
*
|
|
@@ -35,7 +35,7 @@ export declare function checkIfUserDefinedProvider(userDefinedProvider: UserDefi
|
|
|
35
35
|
* @param {(Provider | any)} provider - The Provider object to be checked
|
|
36
36
|
* @returns {p is Provider}
|
|
37
37
|
*/
|
|
38
|
-
export declare function checkIfProvider(provider:
|
|
38
|
+
export declare function checkIfProvider(provider: unknown): provider is Provider;
|
|
39
39
|
/**
|
|
40
40
|
* Wraps a promise and handles both the resolved value and any potential errors.
|
|
41
41
|
* @param promise - The promise to wrap.
|
package/dist/parts/utils.js
CHANGED
|
@@ -98,4 +98,4 @@ function _to(promise) {
|
|
|
98
98
|
function sleep(ms) {
|
|
99
99
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
100
100
|
}
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcGFydHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFZQSxnREF5QkM7QUFXRCw0REFXQztBQVNELGdFQUlDO0FBU0QsMENBSUM7QUFRRCxrQkFNQztBQVNELHNCQUVDO0FBNUdEOzs7Ozs7Ozs7R0FTRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLFFBQWlCO0lBQ2xELElBQUksUUFBUSxLQUFLLElBQUksSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUN0RCxPQUFPLDRCQUE0QixDQUFDO0lBQ3RDLENBQUM7SUFDRCxNQUFNLENBQUMsR0FBRyxRQUFvQixDQUFDO0lBQy9CLElBQ0UsQ0FBQyxDQUFDLFFBQVEsS0FBSyxJQUFJO1FBQ25CLE9BQU8sQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRO1FBQzlCLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssUUFBUTtRQUNuQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFDckMsQ0FBQztRQUNELE9BQU8sOERBQThELENBQUM7SUFDeEUsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLE9BQU8sOEJBQThCLENBQUM7SUFDeEMsQ0FBQztJQUNELElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3RELE9BQU8sNEJBQTRCLENBQUM7SUFDdEMsQ0FBQztJQUNELElBQUksT0FBTyxDQUFDLENBQUMsWUFBWSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ3pDLE9BQU8sbUNBQW1DLENBQUM7SUFDN0MsQ0FBQztJQUNELDRFQUE0RTtJQUM1RSxpREFBaUQ7SUFDakQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQix3QkFBd0IsQ0FDdEMsbUJBQTRCO0lBRTVCLElBQUksbUJBQW1CLEtBQUssSUFBSSxJQUFJLE9BQU8sbUJBQW1CLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDNUUsT0FBTyxrQ0FBa0MsQ0FBQztJQUM1QyxDQUFDO0lBQ0QsTUFBTSxDQUFDLEdBQUcsbUJBQTBDLENBQUM7SUFDckQsSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDL0IsT0FBTyx5QkFBeUIsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsT0FBTyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLDBCQUEwQixDQUN4QyxtQkFBNEI7SUFFNUIsT0FBTyx3QkFBd0IsQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLElBQUksQ0FBQztBQUNoRSxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsZUFBZSxDQUM3QixRQUFpQjtJQUVqQixPQUFPLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQztBQUMvQyxDQUFDO0FBR0Q7Ozs7R0FJRztBQUNILFNBQWdCLEdBQUcsQ0FDakIsT0FBbUI7SUFFbkIsT0FBTyxPQUFPO1NBQ1gsSUFBSSxDQUFDLENBQUMsSUFBTyxFQUFhLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztTQUMxQyxLQUFLLENBQUMsQ0FBQyxHQUFNLEVBQWEsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDL0MsQ0FBQztBQUdEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsS0FBSyxDQUFDLEVBQVU7SUFDOUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6RCxDQUFDIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "easy-currencies",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "A tool for easy conversion of currencies.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -20,9 +20,10 @@
|
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
22
|
"build": "tsc",
|
|
23
|
+
"lint": "oxlint src test scripts && eslint src",
|
|
23
24
|
"prepare": "npm run build",
|
|
24
25
|
"docs": "typedoc && cp ./_config.yml docs/_config.yml",
|
|
25
|
-
"prepublishOnly": "npm run build && npm test && npm run api:check",
|
|
26
|
+
"prepublishOnly": "npm run build && npm run lint && npm test && npm run api:check",
|
|
26
27
|
"test": "jest --selectProjects offline",
|
|
27
28
|
"test:live": "jest --selectProjects live --passWithNoTests --runInBand",
|
|
28
29
|
"test:all": "jest --passWithNoTests",
|
|
@@ -59,10 +60,13 @@
|
|
|
59
60
|
"@types/jest": "^29.5.12",
|
|
60
61
|
"@types/node": "^20.14.2",
|
|
61
62
|
"dotenv": "^16.4.5",
|
|
63
|
+
"eslint": "^10.9.1",
|
|
62
64
|
"jest": "^29.7.0",
|
|
65
|
+
"oxlint": "^1.80.0",
|
|
63
66
|
"publint": "^0.3.24",
|
|
64
67
|
"ts-jest": "^29.1.4",
|
|
65
68
|
"typedoc": "^0.28.20",
|
|
66
|
-
"typescript": "^5.4.5"
|
|
69
|
+
"typescript": "^5.4.5",
|
|
70
|
+
"typescript-eslint": "^8.68.0"
|
|
67
71
|
}
|
|
68
72
|
}
|