@mxpicture/tesla-superchargers-api 0.1.36 → 0.1.37

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.
@@ -1 +1 @@
1
- {"version":3,"file":"ChargersApi.d.ts","sourceRoot":"","sources":["../../src/api/ChargersApi.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,4CAA4C,CAAC;AAOpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,KAAK,EAEV,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAQ1D,qBAAa,WAAY,SAAQ,IAAI;;IACtB,GAAG,CACd,EAAE,EACE,MAAM,GACN;QACE,KAAK,EAAE,aAAa,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GACJ,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAOjB,KAAK,CAAC,MAAM,CAAC,EAAE;QAC1B,KAAK,CAAC,EAAE,aAAa,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAWb,YAAY,CACvB,EAAE,EAAE,aAAa,GAChB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAetB,eAAe,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAe9C,eAAe,CAC1B,EAAE,EAAE,aAAa,EACjB,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IActB,WAAW,CACtB,IAAI,EAAE,aAAa,EACnB,MAAM,GAAE,MAAgB,EACxB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAK9B;;;;;;;;;;;OAWG;IACU,KAAK,CAChB,IAAI,EAAE,aAAa,EACnB,MAAM,GAAE,MAAgB,EACxB,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,EACd,UAAU,GAAE,MAA4B,GACvC,OAAO,CAAC,WAAW,EAAE,CAAC;IAmFzB;;;;;;;;;;;;;;;OAeG;IACU,WAAW,CACtB,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,IAAI,EACR,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,wBAAwB,CAAC;IAgCvB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C,aAAa,CACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,WAAW,CAAC;IAsEvB,2EAA2E;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;cAKzC,YAAY,CAC1B,IAAI,EAAE,kBAAkB,EAAE,GACzB,OAAO,CAAC,WAAW,CAAC;CAKxB;AAGD,eAAO,MAAM,WAAW,mBAAqC,CAAC"}
1
+ {"version":3,"file":"ChargersApi.d.ts","sourceRoot":"","sources":["../../src/api/ChargersApi.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,4CAA4C,CAAC;AAOpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,KAAK,EAEV,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAS1D,qBAAa,WAAY,SAAQ,IAAI;;IACtB,GAAG,CACd,EAAE,EACE,MAAM,GACN;QACE,KAAK,EAAE,aAAa,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GACJ,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAOjB,KAAK,CAAC,MAAM,CAAC,EAAE;QAC1B,KAAK,CAAC,EAAE,aAAa,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAWb,YAAY,CACvB,EAAE,EAAE,aAAa,GAChB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAetB,eAAe,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAe9C,eAAe,CAC1B,EAAE,EAAE,aAAa,EACjB,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IActB,WAAW,CACtB,IAAI,EAAE,aAAa,EACnB,MAAM,GAAE,MAAgB,EACxB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAK9B;;;;;;;;;;;OAWG;IACU,KAAK,CAChB,IAAI,EAAE,aAAa,EACnB,MAAM,GAAE,MAAgB,EACxB,QAAQ,CAAC,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,EACd,UAAU,GAAE,MAA4B,GACvC,OAAO,CAAC,WAAW,EAAE,CAAC;IAmFzB;;;;;;;;;;;;;;;OAeG;IACU,WAAW,CACtB,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,IAAI,EACR,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,wBAAwB,CAAC;IAgCvB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5C,aAAa,CACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,WAAW,CAAC;IA+EvB,2EAA2E;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;cAKzC,YAAY,CAC1B,IAAI,EAAE,kBAAkB,EAAE,GACzB,OAAO,CAAC,WAAW,CAAC;CAKxB;AAGD,eAAO,MAAM,WAAW,mBAAqC,CAAC"}
@@ -9,6 +9,7 @@ import { IApi } from "./IApi.js";
9
9
  import { pricebookCoversInstant, samePricebookGroup, } from "../common/pricebooks.common.js";
10
10
  import { singleFlight } from "../common/concurrency.common.js";
11
11
  import { ChargersSync } from "../sync/ChargersSync.js";
12
+ import { fxToEur } from "../common/fx.common.js";
12
13
  export class ChargersApi extends IApi {
13
14
  async get(id) {
14
15
  if (typeof id == "string")
@@ -213,13 +214,20 @@ export class ChargersApi extends IApi {
213
214
  const init = chargerToInitializer({ charger, meta, slugsId });
214
215
  const chargersStore = picChargersStore();
215
216
  const pricebooksStore = picPricebooksStore();
217
+ const currencyCode = charger.effectivePricebooks[0]?.currencyCode;
218
+ const fxRate = currencyCode ? await fxToEur(currencyCode) : null;
216
219
  return await transaction(chargersStore.table, async (tx) => {
217
220
  const row = await chargersStore.upsertOne(init,
218
221
  // update only the columns present in the initializer, so omitted ids
219
222
  // don't overwrite existing FK links with NULL
220
223
  { conflictColumn: "location_guid", updateColumns: Object.keys(init) }, tx);
221
224
  const current = await pricebooksStore.getCurrentGroup(row.id, tx);
222
- const next = assignSortOrder(charger.effectivePricebooks.map((pricebook) => pricebookToInitializer({ pricebook, meta, chargersId: row.id })));
225
+ const next = assignSortOrder(charger.effectivePricebooks.map((pricebook) => pricebookToInitializer({
226
+ pricebook,
227
+ meta,
228
+ chargersId: row.id,
229
+ fxRate,
230
+ })));
223
231
  if (next.length === 0) {
224
232
  // an empty group cannot be represented by rows — keep the last
225
233
  // known prices instead of pretending they vanished
@@ -1 +1 @@
1
- {"version":3,"file":"ChargersApi.js","sourceRoot":"","sources":["../../src/api/ChargersApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChargersApi.js","sourceRoot":"","sources":["../../src/api/ChargersApi.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type ChargingProcesses, type ChargingProcessesId, type PicChargersId, type PicFxRatesId } from "@mxpicture/tesla-superchargers-generated/public";
1
+ import { type ChargingProcesses, type ChargingProcessesId, type PicChargersId } from "@mxpicture/tesla-superchargers-generated/public";
2
2
  import type { UnpricedChargingProcess } from "@mxpicture/tesla-superchargers-mate/types";
3
3
  import type { PricingSummary } from "../types/charging.types.js";
4
4
  import { IApi } from "./IApi.js";
@@ -9,7 +9,6 @@ export declare class ChargingProcessesApi extends IApi {
9
9
  charging_processes_id: ChargingProcessesId;
10
10
  cost?: number | null;
11
11
  chargers_id?: PicChargersId | null;
12
- fx_rates_id?: PicFxRatesId | null;
13
12
  }): Promise<ChargingProcesses | null>;
14
13
  }
15
14
  export declare const chargingProcessesApi: () => ChargingProcessesApi;
@@ -1 +1 @@
1
- {"version":3,"file":"ChargingProcessesApi.d.ts","sourceRoot":"","sources":["../../src/api/ChargingProcessesApi.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,iDAAiD,CAAC;AAEzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAEzF,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AASjC,qBAAa,oBAAqB,SAAQ,IAAI;IAC/B,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC;IAsErC,kBAAkB,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAIxD,WAAW,CAAC,CAAC,EAAE;QAC1B,qBAAqB,EAAE,mBAAmB,CAAC;QAC3C,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,WAAW,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;QACnC,WAAW,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;KACnC,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;CAGtC;AAGD,eAAO,MAAM,oBAAoB,4BAA8C,CAAC"}
1
+ {"version":3,"file":"ChargingProcessesApi.d.ts","sourceRoot":"","sources":["../../src/api/ChargingProcessesApi.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EACnB,MAAM,iDAAiD,CAAC;AAEzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAEzF,OAAO,KAAK,EACV,cAAc,EAEf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AASjC,qBAAa,oBAAqB,SAAQ,IAAI;IAC/B,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC;IAkErC,kBAAkB,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAIxD,WAAW,CAAC,CAAC,EAAE;QAC1B,qBAAqB,EAAE,mBAAmB,CAAC;QAC3C,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,WAAW,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;KACpC,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;CAGtC;AAGD,eAAO,MAAM,oBAAoB,4BAA8C,CAAC"}
@@ -5,7 +5,7 @@ import { IApi } from "./IApi.js";
5
5
  import { chargingRate } from "../common/pricebooks.common.js";
6
6
  import { FAILURE_DEPRIORITIZE_THRESHOLD, PRICING_FETCH_CONCURRENCY, } from "../common/chargers.common.js";
7
7
  import { mapWithConcurrency } from "../common/concurrency.common.js";
8
- import { fxToEur } from "../common/fx.common.js";
8
+ import { BASE_CURRENCY } from "../common/fx.common.js";
9
9
  export class ChargingProcessesApi extends IApi {
10
10
  async runPricing() {
11
11
  const store = chargingProcessesStore();
@@ -32,24 +32,20 @@ export class ChargingProcessesApi extends IApi {
32
32
  item.failure_count = await store.incrementFailed(item.charge.id);
33
33
  return item;
34
34
  }
35
- // cost is written into TeslaMate's single-currency cost column, so a
36
- // foreign-currency rate is converted to EUR at the charge's own date;
37
- // an unresolvable rate leaves the charge unpriced rather than storing
38
- // a wrong-currency number.
39
- const local = rate.rate * Number(energy);
40
- const fx = await fxToEur(rate.currencyCode, charge.start_date);
41
- if (fx === null) {
35
+ // cost is written into TeslaMate's single-currency cost column, so a rate
36
+ // that is not already in EUR no fx rate was stored with the pricebook row
37
+ // leaves the charge unpriced rather than storing a wrong-currency number.
38
+ if (rate.currencyCode !== BASE_CURRENCY) {
42
39
  item.topic = "noFxRate";
43
40
  item.failure_count = await store.incrementFailed(item.charge.id);
44
41
  return item;
45
42
  }
46
- const cost = Number((local * fx.rate_to_eur_num).toFixed(2));
43
+ const cost = Number((rate.rate * Number(energy)).toFixed(2));
47
44
  item.cost = cost;
48
45
  await chargingProcessesApi().updatePrice({
49
46
  charging_processes_id: charge.id,
50
47
  cost,
51
48
  chargers_id: pricebooks.charger?.id ?? null,
52
- fx_rates_id: fx.id,
53
49
  });
54
50
  item.topic = "chargeUpdated";
55
51
  item.failure_count = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"ChargingProcessesApi.js","sourceRoot":"","sources":["../../src/api/ChargingProcessesApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChargingProcessesApi.js","sourceRoot":"","sources":["../../src/api/ChargingProcessesApi.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  export * from "./ChargersApi.js";
2
2
  export * from "./ChargingProcessesApi.js";
3
3
  export * from "./FailuresApi.js";
4
- export * from "./FxRatesApi.js";
5
4
  export * from "./IApi.js";
6
5
  export * from "./InvoicesApi.js";
7
6
  export * from "./SlugsApi.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
package/dist/api/index.js CHANGED
@@ -2,7 +2,6 @@
2
2
  export * from "./ChargersApi.js";
3
3
  export * from "./ChargingProcessesApi.js";
4
4
  export * from "./FailuresApi.js";
5
- export * from "./FxRatesApi.js";
6
5
  export * from "./IApi.js";
7
6
  export * from "./InvoicesApi.js";
8
7
  export * from "./SlugsApi.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC"}
@@ -1,24 +1,32 @@
1
- import type { FxRateNum } from "@mxpicture/tesla-superchargers-mate/types";
1
+ /**
2
+ * FX conversion to the base currency, resolved when a charger's pricebooks are
3
+ * fetched: the feed publishes quote-per-EUR rates, so a foreign rate is
4
+ * inverted and stored next to the local one in `pic_pricebooks`. EUR is the
5
+ * identity and never leaves the process; foreign rates are held in-process, so
6
+ * one request serves every currency and every charger of a window. A rate that
7
+ * cannot be resolved returns null, and the caller stores the group without EUR
8
+ * values rather than with wrong ones.
9
+ */
10
+ import type { FxRateRowNum, FxRatesRaw } from "@mxpicture/tesla-superchargers-mate/types";
2
11
  /** The currency TeslaMate's `cost` column is aggregated in. */
3
12
  export declare const BASE_CURRENCY = "EUR";
4
13
  /** How many UTC days back the daily sync covers, today included. */
5
14
  export declare const FX_SYNC_DAYS = 7;
6
- export declare const toRateDate: (d: Date) => string;
15
+ export declare const toRateDate: (d: Date | string) => string;
7
16
  /**
8
17
  * All quote-per-EUR rates for a date, primary host then mirror; null when the
9
18
  * date is not published yet or both hosts fail. One request serves every
10
19
  * currency of that day.
11
20
  */
12
- export declare const fetchEurRates: (rateDate: string) => Promise<Record<string, number> | null>;
21
+ export declare const fetchEurRates: (rateDate: string) => Promise<FxRatesRaw | null>;
13
22
  /** Invert a quote-per-EUR rate into EUR per 1 unit; null when unusable. */
14
- export declare const rateToEur: (quotePerEur: number | undefined) => number | null;
23
+ export declare const rateToEur: (quotePerEur: number | undefined | null) => number | null;
24
+ /** Test seam: drop the cached rates so a case starts from a cold cache. */
25
+ export declare const resetFxCache: () => void;
15
26
  /**
16
- * The stored rate row for `currencyCode` on the day of `at` (UTC), or null
17
- * when it can't be resolved. The caller needs the row, not just the number:
18
- * its id is the provenance written to `pic_charging_process_links`. EUR is not
19
- * special-cased — the feed carries `eur: 1`, so the base currency resolves to
20
- * a real row like any other. A cache hit is returned directly; a miss fetches
21
- * once (single-flighted) and caches the result before returning it.
27
+ * The current rate row for `currencyCode`, or null when it can't be resolved.
28
+ * The base currency is the identity and never goes to the network with an
29
+ * EUR-only price history that keeps the feed out of the normal path entirely.
22
30
  */
23
- export declare const fxToEur: (currencyCode: string, at: Date, noFetch?: boolean) => Promise<FxRateNum | null>;
31
+ export declare const fxToEur: (currencyCode: string) => Promise<FxRateRowNum | null>;
24
32
  //# sourceMappingURL=fx.common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fx.common.d.ts","sourceRoot":"","sources":["../../src/common/fx.common.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAG3E,+DAA+D;AAC/D,eAAO,MAAM,aAAa,QAAQ,CAAC;AAEnC,oEAAoE;AACpE,eAAO,MAAM,YAAY,IAAI,CAAC;AAgB9B,eAAO,MAAM,UAAU,GAAI,GAAG,IAAI,WAAiC,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,aAAa,GACxB,UAAU,MAAM,KACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAevC,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,SAAS,GAAI,aAAa,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,IAG3D,CAAC;AAKX;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,GAClB,cAAc,MAAM,EACpB,IAAI,IAAI,EACR,UAAU,OAAO,KAChB,OAAO,CAAC,SAAS,GAAG,IAAI,CAiB1B,CAAC"}
1
+ {"version":3,"file":"fx.common.d.ts","sourceRoot":"","sources":["../../src/common/fx.common.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACX,MAAM,2CAA2C,CAAC;AAGnD,+DAA+D;AAC/D,eAAO,MAAM,aAAa,QAAQ,CAAC;AAEnC,oEAAoE;AACpE,eAAO,MAAM,YAAY,IAAI,CAAC;AAgB9B,eAAO,MAAM,UAAU,GAAI,GAAG,IAAI,GAAG,MAAM,KAAG,MACY,CAAC;AAY3D;;;;GAIG;AACH,eAAO,MAAM,aAAa,GACxB,UAAU,MAAM,KACf,OAAO,CAAC,UAAU,GAAG,IAAI,CAc3B,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,SAAS,GACpB,aAAa,MAAM,GAAG,SAAS,GAAG,IAAI,KACrC,MAAM,GAAG,IAMF,CAAC;AAcX,2EAA2E;AAC3E,eAAO,MAAM,YAAY,QAAO,IAE/B,CAAC;AAgBF;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAClB,cAAc,MAAM,KACnB,OAAO,CAAC,YAAY,GAAG,IAAI,CAc7B,CAAC"}
@@ -1,15 +1,4 @@
1
- /**
2
- * FX conversion to the base currency for the charge-cost boundary. A charge's
3
- * cost is written into TeslaMate's single-currency `charging_processes.cost`,
4
- * so a foreign-currency rate must be converted to EUR first. Rates are looked
5
- * up per the charge's own (UTC) date and cached write-once in `pic_fx_rates`,
6
- * EUR (rate 1) included, so every priced charge can point at the rate row it
7
- * was priced with. A rate that cannot be resolved returns null so the caller
8
- * can leave the charge unpriced rather than store a wrong-currency cost.
9
- */
10
- import { picFxRatesStore } from "@mxpicture/tesla-superchargers-mate/store";
11
1
  import { singleFlight } from "./concurrency.common.js";
12
- import { enrichFxRate } from "@mxpicture/tesla-superchargers-mate/transform";
13
2
  /** The currency TeslaMate's `cost` column is aggregated in. */
14
3
  export const BASE_CURRENCY = "EUR";
15
4
  /** How many UTC days back the daily sync covers, today included. */
@@ -26,7 +15,10 @@ const fxUrls = (rateDate, quoteLower) => [
26
15
  `https://cdn.jsdelivr.net/npm/@fawazahmed0/currency-api@${rateDate}/v1/currencies/${quoteLower}.json`,
27
16
  `https://${rateDate}.currency-api.pages.dev/v1/currencies/${quoteLower}.json`,
28
17
  ];
29
- export const toRateDate = (d) => d.toISOString().slice(0, 10);
18
+ export const toRateDate = (d) => typeof d === "string" ? d : d.toISOString().slice(0, 10);
19
+ const extractRateToEur = (raw, quoteCurrency) => rateToEur(raw[quoteCurrency.toLowerCase()] ??
20
+ raw[quoteCurrency.toUpperCase()] ??
21
+ null);
30
22
  /**
31
23
  * All quote-per-EUR rates for a date, primary host then mirror; null when the
32
24
  * date is not published yet or both hosts fail. One request serves every
@@ -51,33 +43,55 @@ export const fetchEurRates = async (rateDate) => {
51
43
  return null;
52
44
  };
53
45
  /** Invert a quote-per-EUR rate into EUR per 1 unit; null when unusable. */
54
- export const rateToEur = (quotePerEur) => quotePerEur !== undefined && Number.isFinite(quotePerEur) && quotePerEur > 0
46
+ export const rateToEur = (quotePerEur) => quotePerEur !== undefined &&
47
+ quotePerEur !== null &&
48
+ Number.isFinite(quotePerEur) &&
49
+ quotePerEur > 0
55
50
  ? 1 / quotePerEur
56
51
  : null;
57
- /** Coalesce concurrent lookups sharing a (date, currency) into one fetch. */
58
- const fxInFlight = singleFlight();
52
+ /** How long a successful fetch is reused; the feed moves on a daily cadence. */
53
+ const FX_TTL_MS = 6 * 60 * 60 * 1000;
54
+ /** How long a failure is remembered, so an outage costs one request per window. */
55
+ const FX_RETRY_MS = 5 * 60 * 1000;
56
+ /** The feed's moving-target alias — pricing always wants the current rate. */
57
+ const LATEST = "latest";
58
+ let cached = null;
59
+ const inFlight = singleFlight();
60
+ /** Test seam: drop the cached rates so a case starts from a cold cache. */
61
+ export const resetFxCache = () => {
62
+ cached = null;
63
+ };
59
64
  /**
60
- * The stored rate row for `currencyCode` on the day of `at` (UTC), or null
61
- * when it can't be resolved. The caller needs the row, not just the number:
62
- * its id is the provenance written to `pic_charging_process_links`. EUR is not
63
- * special-cased — the feed carries `eur: 1`, so the base currency resolves to
64
- * a real row like any other. A cache hit is returned directly; a miss fetches
65
- * once (single-flighted) and caches the result before returning it.
65
+ * The current quote-per-EUR rates, from cache when warm. Concurrent misses share
66
+ * one request; a failure is cached too, so an outage does not put two 10 s
67
+ * requests in front of every charger fetch.
66
68
  */
67
- export const fxToEur = async (currencyCode, at, noFetch) => {
68
- const rateDate = toRateDate(at);
69
- const quote = currencyCode.toUpperCase();
70
- const cached = await picFxRatesStore().getRate(rateDate, quote);
71
- if (cached)
72
- return cached;
73
- if (noFetch)
74
- return null;
75
- return await fxInFlight(`${rateDate} ${quote}`, async () => {
76
- const rates = await fetchEurRates(rateDate);
77
- const rate = rates ? rateToEur(rates[quote.toLowerCase()]) : null;
78
- if (rate === null)
79
- return null;
80
- return enrichFxRate(await picFxRatesStore().putRate(rateDate, quote, String(rate)));
69
+ const currentRates = async () => {
70
+ if (cached && Date.now() < cached.until)
71
+ return cached.rates;
72
+ return await inFlight(LATEST, async () => {
73
+ const rates = await fetchEurRates(LATEST);
74
+ cached = { rates, until: Date.now() + (rates ? FX_TTL_MS : FX_RETRY_MS) };
75
+ return rates;
81
76
  });
82
77
  };
78
+ /**
79
+ * The current rate row for `currencyCode`, or null when it can't be resolved.
80
+ * The base currency is the identity and never goes to the network — with an
81
+ * EUR-only price history that keeps the feed out of the normal path entirely.
82
+ */
83
+ export const fxToEur = async (currencyCode) => {
84
+ const quoteCurrency = currencyCode.toUpperCase();
85
+ const rateToEurNum = quoteCurrency === BASE_CURRENCY
86
+ ? 1
87
+ : extractRateToEur((await currentRates()) ?? {}, quoteCurrency);
88
+ if (!rateToEurNum)
89
+ return null;
90
+ return {
91
+ rateToEurNum,
92
+ rateDate: toRateDate(new Date()),
93
+ quoteCurrency,
94
+ rateToEur: rateToEurNum.toString(),
95
+ };
96
+ };
83
97
  //# sourceMappingURL=fx.common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fx.common.js","sourceRoot":"","sources":["../../src/common/fx.common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fx.common.js","sourceRoot":"","sources":["../../src/common/fx.common.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pricebooks.common.d.ts","sourceRoot":"","sources":["../../src/common/pricebooks.common.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEnF,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,SAAS,CAAC;AACzC,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAC5C,eAAO,MAAM,OAAO,QAAQ,CAAC;AAE7B,wEAAwE;AACxE,eAAO,MAAM,aAAa,GAAI,MAAM,IAAI,GAAG,MAAM,KAAG,MAInD,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,GAAG,MAAM,KAAG,MAC7B,CAAC;AAE1B,oFAAoF;AACpF,eAAO,MAAM,YAAY,GAAI,KAAK,gBAAgB,KAAG,MAcxC,CAAC;AAEd,qHAAqH;AACrH,eAAO,MAAM,YAAY,GACvB,IAAI,IAAI,EACR,UAAU,MAAM,KACf;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAkBjC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GACjC,KAAK,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC,EAC/D,IAAI,IAAI,EACR,UAAU,MAAM,KACf,OASF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAC7B,GAAG,gBAAgB,EAAE,EACrB,GAAG,gBAAgB,EAAE,KACpB,OAKF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,gBAAgB,EAAE,KAAG,YAAY,GAAG,IAwBtE,CAAC"}
1
+ {"version":3,"file":"pricebooks.common.d.ts","sourceRoot":"","sources":["../../src/common/pricebooks.common.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EACjB,MAAM,8BAA8B,CAAC;AAEtC,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,SAAS,CAAC;AACzC,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAC5C,eAAO,MAAM,OAAO,QAAQ,CAAC;AAE7B,wEAAwE;AACxE,eAAO,MAAM,aAAa,GAAI,MAAM,IAAI,GAAG,MAAM,KAAG,MAInD,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,GAAG,MAAM,KAAG,MAC7B,CAAC;AAE1B,oFAAoF;AACpF,eAAO,MAAM,YAAY,GAAI,KAAK,gBAAgB,KAAG,MAcxC,CAAC;AAEd,qHAAqH;AACrH,eAAO,MAAM,YAAY,GACvB,IAAI,IAAI,EACR,UAAU,MAAM,KACf;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAkBjC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GACjC,KAAK,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,YAAY,GAAG,UAAU,CAAC,EAC/D,IAAI,IAAI,EACR,UAAU,MAAM,KACf,OASF,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAC7B,GAAG,gBAAgB,EAAE,EACrB,GAAG,gBAAgB,EAAE,KACpB,OAKF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,gBAAgB,EAAE,KAAG,YAAY,GAAG,IA2BtE,CAAC"}
@@ -9,7 +9,7 @@ export const normalizeTime = (time) => {
9
9
  const [h = "0", m = "0", s = "0"] = time.split(".")[0].split(":");
10
10
  return [h, m, s].map((part) => part.padStart(2, "0")).join(":");
11
11
  };
12
- export const normalizeRate = (rate) => Number(rate).toFixed(2);
12
+ export const normalizeRate = (rate) => Number(rate).toFixed(4);
13
13
  /** One row's content columns as a canonical string, order-independent in `days`. */
14
14
  export const canonicalRow = (row) => [
15
15
  row.currency_code,
@@ -103,9 +103,12 @@ export const chargingRate = (rows) => {
103
103
  const candidates = groups.get(vehicleType);
104
104
  const row = candidates?.find((candidate) => !candidate.is_member_pricebook) ??
105
105
  candidates?.[0];
106
- return row
107
- ? { rate: Number(row.rate_base), currencyCode: row.currency_code }
108
- : null;
106
+ if (!row)
107
+ return null;
108
+ return {
109
+ rate: Number(row.rate_base_eur ?? row.rate_base),
110
+ currencyCode: row.rate_base_eur ? "EUR" : row.currency_code,
111
+ };
109
112
  };
110
113
  if (groups.has(TESLA_VEHICLE_MAKE))
111
114
  return rateFor(TESLA_VEHICLE_MAKE);
@@ -1 +1 @@
1
- {"version":3,"file":"pricebooks.common.js","sourceRoot":"","sources":["../../src/common/pricebooks.common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pricebooks.common.js","sourceRoot":"","sources":["../../src/common/pricebooks.common.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,10 @@ export interface PricebookContent {
20
20
  rate_base: string | number;
21
21
  rate_tier_1: string | number;
22
22
  rate_tier_2: string | number;
23
+ fx_rate_to_eur?: string | number | null;
24
+ rate_base_eur?: string | number | null;
25
+ rate_tier_1_eur?: string | number | null;
26
+ rate_tier_2_eur?: string | number | null;
23
27
  }
24
28
  export interface ChargingRate {
25
29
  rate: number;
@@ -1 +1 @@
1
- {"version":3,"file":"pricebooks.types.d.ts","sourceRoot":"","sources":["../../src/types/pricebooks.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB"}
1
+ {"version":3,"file":"pricebooks.types.d.ts","sourceRoot":"","sources":["../../src/types/pricebooks.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC;IAC1B,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACxC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACzC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mxpicture/tesla-superchargers-api",
3
- "version": "0.1.36",
3
+ "version": "0.1.37",
4
4
  "description": "Fetch + store Tesla Supercharger locations and pricing",
5
5
  "type": "module",
6
6
  "author": "MXPicture",
@@ -44,9 +44,9 @@
44
44
  "access": "public"
45
45
  },
46
46
  "dependencies": {
47
- "@mxpicture/tesla-superchargers-generated": "^0.1.36",
48
- "@mxpicture/tesla-superchargers-mate": "^0.1.36",
49
- "@mxpicture/tesla-superchargers-cloud-store": "^0.1.36",
47
+ "@mxpicture/tesla-superchargers-cloud-store": "^0.1.37",
48
+ "@mxpicture/tesla-superchargers-generated": "^0.1.37",
49
+ "@mxpicture/tesla-superchargers-mate": "^0.1.37",
50
50
  "csv-parse": "^7.0.1",
51
51
  "json5": "^2.2.3",
52
52
  "zod": "^4.4.3"
@@ -1,31 +0,0 @@
1
- import { IApi } from "./IApi.js";
2
- import type { FxSyncSummary } from "../types/fx.types.js";
3
- import type { FxRateRow } from "@mxpicture/tesla-superchargers-mate/types";
4
- export declare class FxRatesApi extends IApi {
5
- /**
6
- * Every quote currency the feed publishes for one date, as storable rows.
7
- * `quote_currency` is uppercase throughout the schema, so the feed's
8
- * lowercase keys are normalized here — a lowercase row would never be found
9
- * by {@link fxToEur}, which looks up the uppercased code.
10
- */
11
- syncDate(rateDate: string): Promise<FxRateRow[]>;
12
- /**
13
- * Fill the window's missing rates and prune what fell out of it. A date the
14
- * feed has not published yet is reported in `missingDates` and retried by
15
- * the next run, never a failure.
16
- *
17
- * A date counts as covered only when every currency pricing can ask for is
18
- * present — the ones `pic_pricebooks` uses, plus the base currency. Coverage
19
- * cannot be judged per date alone: `fxToEur`'s lazy fallback stores a single
20
- * currency, and that one row would otherwise mark the whole date done and
21
- * keep the sync from ever filling the rest of it.
22
- *
23
- * A pricebook currency the feed does not publish can never become covered,
24
- * so it is reported in `unknownCurrencies` and dropped from the needed set
25
- * for the rest of the run — otherwise it would re-fetch the whole window on
26
- * every run. The cost of one is a single request per run instead of none.
27
- */
28
- sync(): Promise<FxSyncSummary>;
29
- }
30
- export declare const fxRatesApi: () => FxRatesApi;
31
- //# sourceMappingURL=FxRatesApi.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FxRatesApi.d.ts","sourceRoot":"","sources":["../../src/api/FxRatesApi.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAQjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAC;AAY3E,qBAAa,UAAW,SAAQ,IAAI;IAClC;;;;;OAKG;IACU,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAkB7D;;;;;;;;;;;;;;;OAeG;IACU,IAAI,IAAI,OAAO,CAAC,aAAa,CAAC;CAkD5C;AAGD,eAAO,MAAM,UAAU,kBAAoC,CAAC"}
@@ -1,97 +0,0 @@
1
- /**
2
- * Daily FX rate sync: the primary filler of `pic_fx_rates`. One request per
3
- * UTC date against the base-EUR feed covers every currency the price history
4
- * uses, so a window of `FX_SYNC_DAYS` days costs at most that many requests —
5
- * and none at all once the window is fully cached. `fxToEur` keeps its lazy
6
- * per-charge fetch as the fallback for what the window does not cover.
7
- */
8
- import { picFxRatesStore, picPricebooksStore, } from "@mxpicture/tesla-superchargers-mate/store";
9
- import { IApi } from "./IApi.js";
10
- import { BASE_CURRENCY, FX_SYNC_DAYS, fetchEurRates, rateToEur, toRateDate, } from "../common/fx.common.js";
11
- const DAY_MS = 24 * 60 * 60 * 1000;
12
- /** The last `days` UTC calendar days as `YYYY-MM-DD`, oldest first, today last. */
13
- const utcDates = (days) => {
14
- const today = Date.now();
15
- return Array.from({ length: days }, (_, i) => toRateDate(new Date(today - (days - 1 - i) * DAY_MS)));
16
- };
17
- export class FxRatesApi extends IApi {
18
- /**
19
- * Every quote currency the feed publishes for one date, as storable rows.
20
- * `quote_currency` is uppercase throughout the schema, so the feed's
21
- * lowercase keys are normalized here — a lowercase row would never be found
22
- * by {@link fxToEur}, which looks up the uppercased code.
23
- */
24
- async syncDate(rateDate) {
25
- const rows = [];
26
- const rates = await fetchEurRates(rateDate);
27
- if (!rates)
28
- return rows;
29
- for (const [quoteCurrency, quotePerEur] of Object.entries(rates)) {
30
- const rate = rateToEur(quotePerEur);
31
- if (rate !== null)
32
- rows.push({
33
- rateDate,
34
- quoteCurrency: quoteCurrency.toUpperCase(),
35
- rateToEur: String(rate),
36
- });
37
- }
38
- return rows;
39
- }
40
- /**
41
- * Fill the window's missing rates and prune what fell out of it. A date the
42
- * feed has not published yet is reported in `missingDates` and retried by
43
- * the next run, never a failure.
44
- *
45
- * A date counts as covered only when every currency pricing can ask for is
46
- * present — the ones `pic_pricebooks` uses, plus the base currency. Coverage
47
- * cannot be judged per date alone: `fxToEur`'s lazy fallback stores a single
48
- * currency, and that one row would otherwise mark the whole date done and
49
- * keep the sync from ever filling the rest of it.
50
- *
51
- * A pricebook currency the feed does not publish can never become covered,
52
- * so it is reported in `unknownCurrencies` and dropped from the needed set
53
- * for the rest of the run — otherwise it would re-fetch the whole window on
54
- * every run. The cost of one is a single request per run instead of none.
55
- */
56
- async sync() {
57
- let needed = [
58
- BASE_CURRENCY,
59
- ...(await picPricebooksStore().getDistinctCurrencies()).filter((c) => c !== BASE_CURRENCY),
60
- ];
61
- const dates = utcDates(FX_SYNC_DAYS);
62
- const fromDate = dates[0];
63
- const fetchedDates = [];
64
- const missingDates = [];
65
- const unknownCurrencies = new Set();
66
- const rows = [];
67
- const coverage = new Set((await picFxRatesStore().getCoverage(fromDate)).map((row) => `${toRateDate(row.rate_date)} ${row.quote_currency.toUpperCase()}`));
68
- for (const rateDate of dates) {
69
- if (needed.every((c) => coverage.has(`${rateDate} ${c}`)))
70
- continue;
71
- const dateRows = await this.syncDate(rateDate);
72
- if (!dateRows.length) {
73
- missingDates.push(rateDate);
74
- continue;
75
- }
76
- const published = new Set(dateRows.map((row) => row.quoteCurrency));
77
- const unknown = needed.filter((c) => !published.has(c));
78
- for (const currency of unknown)
79
- unknownCurrencies.add(currency);
80
- needed = needed.filter((c) => published.has(c));
81
- fetchedDates.push(rateDate);
82
- rows.push(...dateRows);
83
- }
84
- return {
85
- days: FX_SYNC_DAYS,
86
- fromDate,
87
- fetchedDates,
88
- missingDates,
89
- unknownCurrencies: [...unknownCurrencies],
90
- inserted: await picFxRatesStore().putRates(rows),
91
- deleted: await picFxRatesStore().deleteStale(fromDate),
92
- };
93
- }
94
- }
95
- let _api = null;
96
- export const fxRatesApi = () => (_api ??= new FxRatesApi());
97
- //# sourceMappingURL=FxRatesApi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FxRatesApi.js","sourceRoot":"","sources":["../../src/api/FxRatesApi.ts"],"names":[],"mappings":"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"}