@mxpicture/tesla-superchargers-api 0.1.37 → 0.1.38

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,7 +1,7 @@
1
1
  import { type PicChargers, type PicChargersId, type PicSlugsId } from "@mxpicture/tesla-superchargers-generated/public";
2
2
  import { type TeslaClientCharger } from "@mxpicture/tesla-superchargers-mate/client";
3
3
  import type { CoordinateAny } from "@mxpicture/tesla-superchargers-mate/common";
4
- import type { ChargerFavourite, ChargerFetchPricesResult } from "../types/chargers.types.js";
4
+ import type { ChargerCandidate, ChargerFavourite, ChargerFetchPricesResult } from "../types/chargers.types.js";
5
5
  import { IApi } from "./IApi.js";
6
6
  import type { SyncSummary } from "../types/sync.types.js";
7
7
  export declare class ChargersApi extends IApi {
@@ -17,20 +17,35 @@ export declare class ChargersApi extends IApi {
17
17
  getFavourite(id: PicChargersId): Promise<ChargerFavourite | null>;
18
18
  queryFavourites(): Promise<ChargerFavourite[]>;
19
19
  updateFavourite(id: PicChargersId, favourite: boolean): Promise<ChargerFavourite | null>;
20
- fetchSingle(item: CoordinateAny, locale?: string, radiusKm?: number): Promise<PicChargers | null>;
21
20
  /**
22
- * Find the Supercharger at a coordinate: try the nearby slug rows
21
+ * The nearest confirmed charger at a coordinate {@link fetchByCoordinates}
22
+ * with a limit of 1.
23
+ */
24
+ fetchFirstByCoordinates(item: CoordinateAny, locale?: string, radiusKm?: number): Promise<PicChargers | null>;
25
+ /**
26
+ * Find the Superchargers at a coordinate: try the nearby slug rows
23
27
  * (slugs first — their location_url_slug is the canonical details slug),
24
28
  * answer from the db when the cached charger is fresh, otherwise fetch and
25
29
  * store it via the chargers sync. Candidates whose failure_count reached
26
30
  * {@link FAILURE_DEPRIORITIZE_THRESHOLD} are tried last (still by
27
- * distance within each bucket). Returns the first confirmed charger; a
28
- * failed fetch bumps the source row's failure_count and moves on. A stale
29
- * cached charger is returned rather than nothing when its refresh fails or
30
- * the fetch budget (`maxFetches`, default {@link MAX_CHARGER_FETCHES}) is
31
- * spent.
31
+ * distance within each bucket). Returns the confirmed chargers, nearest
32
+ * first, up to `limit`; a failed fetch bumps the source row's failure_count
33
+ * and moves on. A stale cached charger is returned rather than nothing when
34
+ * its refresh fails or the fetch budget (`maxFetches`, default
35
+ * {@link MAX_CHARGER_FETCHES}) is spent.
32
36
  */
33
- fetch(item: CoordinateAny, locale?: string, radiusKm?: number, limit?: number, maxFetches?: number): Promise<PicChargers[]>;
37
+ fetchByCoordinates(item: CoordinateAny, locale?: string, radiusKm?: number, limit?: number, maxFetches?: number): Promise<PicChargers[]>;
38
+ /** The charger for a details slug, fetched on demand when it is missing or stale. */
39
+ fetchBySlug(slug: string, locale?: string): Promise<PicChargers | null>;
40
+ /**
41
+ * Resolve a list of candidates to stored chargers: repeat failers
42
+ * ({@link FAILURE_DEPRIORITIZE_THRESHOLD}) are tried after the rest, each
43
+ * slug is attempted once, and a fresh stored row answers without a fetch.
44
+ * At most `maxFetches` (default {@link MAX_CHARGER_FETCHES}) detail fetches
45
+ * run per call — past that a stale stored row is returned rather than
46
+ * nothing. Stops at `limit` results.
47
+ */
48
+ fetch(candidates: ChargerCandidate[], locale?: string, limit?: number, maxFetches?: number): Promise<PicChargers[]>;
34
49
  /**
35
50
  * The pricebook rows valid at `at` for the Supercharger at a coordinate.
36
51
  * The charger is resolved from the stored rows first — soft-deleted
@@ -47,9 +62,32 @@ export declare class ChargersApi extends IApi {
47
62
  * a fetch-on-demand stored the charger's first group), that earliest group
48
63
  * is used as the best available estimate.
49
64
  */
50
- fetchPrices(item: CoordinateAny, at: Date, radiusKm?: number): Promise<ChargerFetchPricesResult>;
65
+ fetchPricesByCoordinates(item: CoordinateAny, at: Date, radiusKm?: number): Promise<ChargerFetchPricesResult>;
66
+ /**
67
+ * The pricebook rows valid at `at` for the Supercharger with this details
68
+ * slug. Same contract as {@link fetchPricesByCoordinates}, including the
69
+ * soft-deleted rows: `location_url_slug` lives on the charger itself, so a
70
+ * site Tesla removed from the feed — `pic_slugs` row hard-deleted, link
71
+ * NULLed — still answers for past dates.
72
+ */
73
+ fetchPricesBySlug(slug: string, at: Date): Promise<ChargerFetchPricesResult>;
74
+ /**
75
+ * The pricebook rows valid at `at` for a stored charger id — the resolution
76
+ * key that survives everything, since it is the row's own. A stale row is
77
+ * refreshed through the slug it was fetched by when it still has one.
78
+ */
79
+ fetchPricesById(id: PicChargersId, at: Date): Promise<ChargerFetchPricesResult>;
51
80
  initialLoadFile(path: string): Promise<void>;
52
- fetchAndStore(slug: string, locale: string, slugsId?: PicSlugsId): Promise<PicChargers>;
81
+ /**
82
+ * Fetch one charger by its details slug and store it, or answer from what is
83
+ * already stored when the fetch fails: a failed refresh returns `cached`
84
+ * with its bumped failure_count (stale beats nothing), a failed first fetch
85
+ * records the failure on the slug row and returns null. Never throws — the
86
+ * caller gets a charger or nothing, not an error. `slugsId` is the
87
+ * `pic_slugs` row the candidate came from; without it the slug is resolved
88
+ * again from the db.
89
+ */
90
+ fetchAndStore(slug: string, locale: string, cached?: PicChargers | null, slugsId?: PicSlugsId): Promise<PicChargers | null>;
53
91
  /** Snapshot sync from a full-feed file dump. Does not touch pricebooks. */
54
92
  syncFile(path: string): Promise<SyncSummary>;
55
93
  protected syncSnapshot(docs: TeslaClientCharger[]): Promise<SyncSummary>;
@@ -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;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"}
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,EACV,gBAAgB,EAChB,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;IAenC;;;OAGG;IACU,uBAAuB,CAClC,IAAI,EAAE,aAAa,EACnB,MAAM,GAAE,MAAgB,EACxB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAK9B;;;;;;;;;;;OAWG;IACU,kBAAkB,CAC7B,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;IAczB,qFAAqF;IACxE,WAAW,CACtB,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,MAAgB,GACvB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAK9B;;;;;;;OAOG;IACU,KAAK,CAChB,UAAU,EAAE,gBAAgB,EAAE,EAC9B,MAAM,GAAE,MAAgB,EACxB,KAAK,CAAC,EAAE,MAAM,EACd,UAAU,GAAE,MAA4B,GACvC,OAAO,CAAC,WAAW,EAAE,CAAC;IAkDzB;;;;;;;;;;;;;;;OAeG;IACU,wBAAwB,CACnC,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,IAAI,EACR,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,wBAAwB,CAAC;IAmBpC;;;;;;OAMG;IACU,iBAAiB,CAC5B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,IAAI,GACP,OAAO,CAAC,wBAAwB,CAAC;IASpC;;;;OAIG;IACU,eAAe,CAC1B,EAAE,EAAE,aAAa,EACjB,EAAE,EAAE,IAAI,GACP,OAAO,CAAC,wBAAwB,CAAC;IAoCvB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzD;;;;;;;;OAQG;IACU,aAAa,CACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,EAC3B,OAAO,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAkH9B,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"}
@@ -60,37 +60,58 @@ export class ChargersApi extends IApi {
60
60
  }
61
61
  // Coalesce concurrent fetches for the same site. A parallel runPricing pass
62
62
  // resolves many charges to the same slug at once, before the first fetch has
63
- // stored the row for the DB freshness cache to dedup them. Keyed by slug
64
- // location_url_slug is unique, so slugsId is consistent per key. In-flight
65
- // only (cleared on settle); freshness/staleness still drives whether a new
66
- // fetch runs.
63
+ // stored the row for the DB freshness cache to dedup them. Keyed by slug +
64
+ // locale — that pair is what the details endpoint is called with, so two
65
+ // pic_slugs rows sharing a location_url_slug are one fetch, not two.
66
+ // In-flight only (cleared on settle); freshness/staleness still drives
67
+ // whether a new fetch runs.
67
68
  #fetchInFlight = singleFlight();
68
- async fetchSingle(item, locale = "de-DE", radiusKm) {
69
- const [found] = await this.fetch(item, locale, radiusKm, 1);
69
+ /**
70
+ * The nearest confirmed charger at a coordinate — {@link fetchByCoordinates}
71
+ * with a limit of 1.
72
+ */
73
+ async fetchFirstByCoordinates(item, locale = "de-DE", radiusKm) {
74
+ const [found] = await this.fetchByCoordinates(item, locale, radiusKm, 1);
70
75
  return found ?? null;
71
76
  }
72
77
  /**
73
- * Find the Supercharger at a coordinate: try the nearby slug rows
78
+ * Find the Superchargers at a coordinate: try the nearby slug rows
74
79
  * (slugs first — their location_url_slug is the canonical details slug),
75
80
  * answer from the db when the cached charger is fresh, otherwise fetch and
76
81
  * store it via the chargers sync. Candidates whose failure_count reached
77
82
  * {@link FAILURE_DEPRIORITIZE_THRESHOLD} are tried last (still by
78
- * distance within each bucket). Returns the first confirmed charger; a
79
- * failed fetch bumps the source row's failure_count and moves on. A stale
80
- * cached charger is returned rather than nothing when its refresh fails or
81
- * the fetch budget (`maxFetches`, default {@link MAX_CHARGER_FETCHES}) is
82
- * spent.
83
+ * distance within each bucket). Returns the confirmed chargers, nearest
84
+ * first, up to `limit`; a failed fetch bumps the source row's failure_count
85
+ * and moves on. A stale cached charger is returned rather than nothing when
86
+ * its refresh fails or the fetch budget (`maxFetches`, default
87
+ * {@link MAX_CHARGER_FETCHES}) is spent.
83
88
  */
84
- async fetch(item, locale = "de-DE", radiusKm, limit, maxFetches = MAX_CHARGER_FETCHES) {
85
- const chargers = [];
89
+ async fetchByCoordinates(item, locale = "de-DE", radiusKm, limit, maxFetches = MAX_CHARGER_FETCHES) {
86
90
  const founds = radiusKm
87
91
  ? await picSlugsStore().queryByRadius(item, radiusKm)
88
92
  : await picSlugsStore().queryByCoordinate(item);
89
93
  const candidates = founds.map((found) => ({
90
94
  slug: found.location_url_slug,
91
- slugsId: found.id,
92
95
  failureCount: found.failure_count,
96
+ slugsId: found.id,
93
97
  }));
98
+ return await this.fetch(candidates, locale, limit, maxFetches);
99
+ }
100
+ /** The charger for a details slug, fetched on demand when it is missing or stale. */
101
+ async fetchBySlug(slug, locale = "de-DE") {
102
+ const [found] = await this.fetch([{ slug, failureCount: 0 }], locale, 1);
103
+ return found ?? null;
104
+ }
105
+ /**
106
+ * Resolve a list of candidates to stored chargers: repeat failers
107
+ * ({@link FAILURE_DEPRIORITIZE_THRESHOLD}) are tried after the rest, each
108
+ * slug is attempted once, and a fresh stored row answers without a fetch.
109
+ * At most `maxFetches` (default {@link MAX_CHARGER_FETCHES}) detail fetches
110
+ * run per call — past that a stale stored row is returned rather than
111
+ * nothing. Stops at `limit` results.
112
+ */
113
+ async fetch(candidates, locale = "de-DE", limit, maxFetches = MAX_CHARGER_FETCHES) {
114
+ const chargers = [];
94
115
  // deprioritize (not skip) repeat failers; the sort is stable, so the
95
116
  // nearest-first order is kept within each bucket
96
117
  candidates.sort((a, b) => Number(a.failureCount >= FAILURE_DEPRIORITIZE_THRESHOLD) -
@@ -98,12 +119,11 @@ export class ChargersApi extends IApi {
98
119
  const seen = new Set();
99
120
  let fetches = 0;
100
121
  const chargersStore = picChargersStore();
101
- const slugsStore = picSlugsStore();
102
122
  for (const candidate of candidates) {
103
123
  if (seen.has(candidate.slug))
104
124
  continue;
105
125
  seen.add(candidate.slug);
106
- const cached = await chargersStore.getBySlug(candidate.slugsId);
126
+ const cached = await chargersStore.getBySlug(candidate.slug);
107
127
  if (cached && isFresh(cached)) {
108
128
  chargers.push(cached);
109
129
  if (limit && chargers.length >= limit)
@@ -119,30 +139,11 @@ export class ChargersApi extends IApi {
119
139
  continue;
120
140
  }
121
141
  fetches++;
122
- try {
123
- const charger = await this.fetchAndStore(candidate.slug, locale, candidate.slugsId);
124
- if (charger.failure_count > 0)
125
- await chargersStore.resetFailed(charger.id);
126
- await slugsStore.resetFailed(candidate.slugsId);
142
+ const charger = await this.fetchAndStore(candidate.slug, locale, cached, candidate.slugsId);
143
+ if (charger)
127
144
  chargers.push(charger);
128
- if (limit && chargers.length >= limit)
129
- break;
130
- continue;
131
- }
132
- catch (error) {
133
- console.warn(`charger fetch for slug "${candidate.slug}" failed: ` +
134
- (error instanceof Error ? error.message : String(error)));
135
- // record the failure where it happened: a failed refresh on the
136
- // charger row, a failed first fetch on the slug row
137
- if (cached) {
138
- cached.failure_count = await chargersStore.incrementFailed(cached.id);
139
- chargers.push(cached); // stale beats nothing
140
- if (limit && chargers.length >= limit)
141
- break;
142
- continue;
143
- }
144
- candidate.failureCount = await slugsStore.incrementFailed(candidate.slugsId);
145
- }
145
+ if (limit && chargers.length >= limit)
146
+ break;
146
147
  }
147
148
  return chargers;
148
149
  }
@@ -162,7 +163,7 @@ export class ChargersApi extends IApi {
162
163
  * a fetch-on-demand stored the charger's first group), that earliest group
163
164
  * is used as the best available estimate.
164
165
  */
165
- async fetchPrices(item, at, radiusKm) {
166
+ async fetchPricesByCoordinates(item, at, radiusKm) {
166
167
  const result = {
167
168
  charger: null,
168
169
  rows: [],
@@ -172,9 +173,49 @@ export class ChargersApi extends IApi {
172
173
  : await picChargersStore().getByCoordinate(item)) ?? null;
173
174
  let charger = stored;
174
175
  if (!stored || (at > stored.fetched_at && !isFresh(stored)))
175
- charger = (await this.fetchSingle(item)) ?? stored;
176
+ charger = (await this.fetchFirstByCoordinates(item)) ?? stored;
176
177
  if (!charger)
177
178
  return result;
179
+ return await this.#pricesAt(charger, at);
180
+ }
181
+ /**
182
+ * The pricebook rows valid at `at` for the Supercharger with this details
183
+ * slug. Same contract as {@link fetchPricesByCoordinates}, including the
184
+ * soft-deleted rows: `location_url_slug` lives on the charger itself, so a
185
+ * site Tesla removed from the feed — `pic_slugs` row hard-deleted, link
186
+ * NULLed — still answers for past dates.
187
+ */
188
+ async fetchPricesBySlug(slug, at) {
189
+ const stored = await picChargersStore().getBySlug(slug, true);
190
+ let charger = stored;
191
+ if (!stored || (at > stored.fetched_at && !isFresh(stored)))
192
+ charger = (await this.fetchBySlug(slug)) ?? stored;
193
+ if (!charger)
194
+ return { charger: null, rows: [] };
195
+ return await this.#pricesAt(charger, at);
196
+ }
197
+ /**
198
+ * The pricebook rows valid at `at` for a stored charger id — the resolution
199
+ * key that survives everything, since it is the row's own. A stale row is
200
+ * refreshed through the slug it was fetched by when it still has one.
201
+ */
202
+ async fetchPricesById(id, at) {
203
+ const stored = await picChargersStore().getIncludingDeleted(id);
204
+ if (!stored)
205
+ return { charger: null, rows: [] };
206
+ let charger = stored;
207
+ if (at > stored.fetched_at && !isFresh(stored) && stored.location_url_slug)
208
+ charger = (await this.fetchBySlug(stored.location_url_slug)) ?? stored;
209
+ return await this.#pricesAt(charger, at);
210
+ }
211
+ /**
212
+ * The pricebook group valid at `at`, filtered to the rows whose time-of-use
213
+ * window covers that instant in the charger's time zone. When `at` predates
214
+ * the first recorded group — always the case right after a fetch-on-demand
215
+ * stored the charger's first group — that earliest group is the best
216
+ * available estimate.
217
+ */
218
+ async #pricesAt(charger, at) {
178
219
  const pricebooksStore = picPricebooksStore();
179
220
  const group = await pricebooksStore.getGroupAt(charger.id, at);
180
221
  const rows = group.length > 0
@@ -190,8 +231,42 @@ export class ChargersApi extends IApi {
190
231
  const meta = createMeta();
191
232
  await this.initialInserts(picChargersStore(), teslaClientChargersSchema.parse(json), (charger) => chargerToInitializer({ charger, meta }));
192
233
  }
193
- async fetchAndStore(slug, locale, slugsId) {
194
- return this.#fetchInFlight(`${slug} ${locale}`, () => this.#doFetchAndStore(slug, locale, slugsId));
234
+ /**
235
+ * Fetch one charger by its details slug and store it, or answer from what is
236
+ * already stored when the fetch fails: a failed refresh returns `cached`
237
+ * with its bumped failure_count (stale beats nothing), a failed first fetch
238
+ * records the failure on the slug row and returns null. Never throws — the
239
+ * caller gets a charger or nothing, not an error. `slugsId` is the
240
+ * `pic_slugs` row the candidate came from; without it the slug is resolved
241
+ * again from the db.
242
+ */
243
+ async fetchAndStore(slug, locale, cached, slugsId) {
244
+ const chargersStore = picChargersStore();
245
+ const slugsStore = picSlugsStore();
246
+ let charger;
247
+ try {
248
+ charger = await this.#fetchInFlight(`${slug} ${locale}`, () => this.#doFetchAndStore(slug, locale, slugsId));
249
+ }
250
+ catch (error) {
251
+ console.warn(`charger fetch for slug "${slug}" failed: ` +
252
+ (error instanceof Error ? error.message : String(error)));
253
+ // record the failure where it happened: a failed refresh on the
254
+ // charger row, a failed first fetch on the slug row
255
+ if (cached)
256
+ return {
257
+ ...cached,
258
+ failure_count: await chargersStore.incrementFailed(cached.id),
259
+ };
260
+ const failedId = slugsId ?? (await slugsStore.idBySlug(slug));
261
+ if (failedId)
262
+ await slugsStore.incrementFailed(failedId);
263
+ else
264
+ console.warn(`charger fetch for slug "${slug}" failed with no pic_slugs row — failure not recorded`);
265
+ return null;
266
+ }
267
+ if (charger.pic_slugs_id)
268
+ await slugsStore.resetFailed(charger.pic_slugs_id);
269
+ return charger;
195
270
  }
196
271
  /**
197
272
  * Fetch one charger by its details slug and upsert it on `location_guid`,
@@ -199,9 +274,10 @@ export class ChargersApi extends IApi {
199
274
  * price changed, the current group is only re-stamped with the fetch's
200
275
  * uuid; when one did, a new group is inserted and the old rows stay as
201
276
  * history. A successful fetch resurrects the row and resets
202
- * `failure_count`; `ids` links it to the slug rows it was found through
203
- * (existing links are kept when `ids` is omitted). Throws when the
204
- * endpoint returns no charger.
277
+ * `failure_count`; `slugsId` links it to the `pic_slugs` row it was found
278
+ * through, resolved from the slug when the caller did not pass one, and
279
+ * stored alongside the slug itself. Throws when the endpoint returns no
280
+ * charger.
205
281
  */
206
282
  async #doFetchAndStore(slug, locale, slugsId) {
207
283
  const clientDoc = await teslaClient().fetchCharger(slug, locale);
@@ -211,9 +287,11 @@ export class ChargersApi extends IApi {
211
287
  ` (${clientDoc.attempts} attempts)`);
212
288
  const charger = clientDoc.charger;
213
289
  const meta = createMeta();
214
- const init = chargerToInitializer({ charger, meta, slugsId });
290
+ const slugsStore = picSlugsStore();
215
291
  const chargersStore = picChargersStore();
216
292
  const pricebooksStore = picPricebooksStore();
293
+ const linkId = slugsId ?? (await slugsStore.idBySlug(slug)) ?? undefined;
294
+ const init = chargerToInitializer({ charger, meta, slugsId: linkId, slug });
217
295
  const currencyCode = charger.effectivePricebooks[0]?.currencyCode;
218
296
  const fxRate = currencyCode ? await fxToEur(currencyCode) : null;
219
297
  return await transaction(chargersStore.table, async (tx) => {
@@ -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 +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,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"}
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;IAmErC,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"}
@@ -17,7 +17,7 @@ export class ChargingProcessesApi extends IApi {
17
17
  item.topic = "failureLimitReached";
18
18
  return item;
19
19
  }
20
- const pricebooks = await chargersApi().fetchPrices({ latitude: charge.latitude, longitude: charge.longitude }, charge.start_date);
20
+ const pricebooks = await chargersApi().fetchPricesByCoordinates({ latitude: charge.latitude, longitude: charge.longitude }, charge.start_date);
21
21
  const rate = chargingRate(pricebooks.rows);
22
22
  item.rate = rate;
23
23
  if (!rate) {
@@ -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 +1 @@
1
- {"version":3,"file":"chargers.common.d.ts","sourceRoot":"","sources":["../../src/common/chargers.common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAEnF,oEAAoE;AACpE,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,wEAAwE;AACxE,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,qHAAqH;AACrH,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,QACc,CAAC;AAErD,eAAO,MAAM,OAAO,GAAI,KAAK,WAAW,KAAG,OAEkB,CAAC;AAS9D,eAAO,MAAM,qBAAqB,GAAI,SAAS,MAAM,EAAE,KAAG,MAAM,EACA,CAAC"}
1
+ {"version":3,"file":"chargers.common.d.ts","sourceRoot":"","sources":["../../src/common/chargers.common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAEnF,oEAAoE;AACpE,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,wEAAwE;AACxE,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,qHAAqH;AACrH,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,QACc,CAAC;AAErD,eAAO,MAAM,OAAO,GAAI,KAAK,WAAW,KAAG,OAEkB,CAAC;AAW9D,eAAO,MAAM,qBAAqB,GAAI,SAAS,MAAM,EAAE,KAAG,MAAM,EACA,CAAC"}
@@ -14,10 +14,12 @@ export const PRICING_FETCH_CONCURRENCY = Number(process.env.PRICING_FETCH_CONCUR
14
14
  export const isFresh = (row) => row.fetched_at.getTime() >
15
15
  Date.now() - CHARGER_STALE_AFTER_DAYS * 24 * 60 * 60 * 1000;
16
16
  /**
17
- * Columns the Tesla feed doesn't own — the `pic_slugs_id` FK link and the
18
- * user-set `favourite` flag. A snapshot re-sync must not wipe them, so they are
19
- * dropped from the charger sync's compare/update column lists.
17
+ * Columns the Tesla feed doesn't own — the `pic_slugs_id` FK link, the
18
+ * `location_url_slug` it was fetched by (the charger-details feed carries
19
+ * neither; both come from the map feed) and the user-set `favourite` flag. A
20
+ * snapshot re-sync must not wipe them, so they are dropped from the charger
21
+ * sync's compare/update column lists.
20
22
  */
21
- const NON_FEED_COLUMNS = ["pic_slugs_id", "favourite"];
23
+ const NON_FEED_COLUMNS = ["pic_slugs_id", "location_url_slug", "favourite"];
22
24
  export const withoutNonFeedColumns = (columns) => columns.filter((column) => !NON_FEED_COLUMNS.includes(column));
23
25
  //# sourceMappingURL=chargers.common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chargers.common.js","sourceRoot":"","sources":["../../src/common/chargers.common.ts"],"names":[],"mappings":"AAEA,oEAAoE;AACpE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C,wEAAwE;AACxE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,qHAAqH;AACrH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GACpC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAgB,EAAW,EAAE,CACnD,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE;IACxB,IAAI,CAAC,GAAG,EAAE,GAAG,wBAAwB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9D;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAiB,EAAY,EAAE,CACnE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"chargers.common.js","sourceRoot":"","sources":["../../src/common/chargers.common.ts"],"names":[],"mappings":"AAEA,oEAAoE;AACpE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AAE1C,wEAAwE;AACxE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,qHAAqH;AACrH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GACpC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAgB,EAAW,EAAE,CACnD,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE;IACxB,IAAI,CAAC,GAAG,EAAE,GAAG,wBAAwB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,CAAC,cAAc,EAAE,mBAAmB,EAAE,WAAW,CAAC,CAAC;AAE5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,OAAiB,EAAY,EAAE,CACnE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC"}
@@ -2,8 +2,9 @@ import type { PicChargers, PicChargersId, PicPricebooks, PicSlugsId } from "@mxp
2
2
  export interface ChargerCandidate {
3
3
  /** slug for the details endpoint (location_url_slug) */
4
4
  slug: string;
5
- slugsId: PicSlugsId;
6
5
  failureCount: number;
6
+ /** the pic_slugs row it came from, when the caller already resolved one */
7
+ slugsId?: PicSlugsId;
7
8
  }
8
9
  export interface ChargerFavourite {
9
10
  id: PicChargersId;
@@ -1 +1 @@
1
- {"version":3,"file":"chargers.types.d.ts","sourceRoot":"","sources":["../../src/types/chargers.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,aAAa,EACb,UAAU,EACX,MAAM,iDAAiD,CAAC;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,UAAU,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,aAAa,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB"}
1
+ {"version":3,"file":"chargers.types.d.ts","sourceRoot":"","sources":["../../src/types/chargers.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,aAAa,EACb,UAAU,EACX,MAAM,iDAAiD,CAAC;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,aAAa,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mxpicture/tesla-superchargers-api",
3
- "version": "0.1.37",
3
+ "version": "0.1.38",
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-cloud-store": "^0.1.37",
48
- "@mxpicture/tesla-superchargers-generated": "^0.1.37",
49
- "@mxpicture/tesla-superchargers-mate": "^0.1.37",
47
+ "@mxpicture/tesla-superchargers-cloud-store": "^0.1.38",
48
+ "@mxpicture/tesla-superchargers-generated": "^0.1.38",
49
+ "@mxpicture/tesla-superchargers-mate": "^0.1.38",
50
50
  "csv-parse": "^7.0.1",
51
51
  "json5": "^2.2.3",
52
52
  "zod": "^4.4.3"