@mxpicture/tesla-superchargers-mate 0.1.6 → 0.1.8
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/store/ChargingProcessesStore.d.ts +18 -1
- package/dist/store/ChargingProcessesStore.d.ts.map +1 -1
- package/dist/store/ChargingProcessesStore.js +63 -3
- package/dist/store/ChargingProcessesStore.js.map +1 -1
- package/dist/types/chargingProcess.types.d.ts +14 -0
- package/dist/types/chargingProcess.types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ChargingProcesses, type ChargingProcessesId, type ChargingProcessesInitializer, type ChargingProcessesMutator, type PicChargingProcessStates, type PicChargingProcessStatesId } from "@mxpicture/tesla-superchargers-generated/public";
|
|
2
2
|
import { IMateStore } from "./IMateStore.js";
|
|
3
3
|
import { type SqlTx } from "./db.js";
|
|
4
|
-
import type { FailedChargingProcessState, UnpricedChargingProcess } from "../types/chargingProcess.types.js";
|
|
4
|
+
import type { FailedChargingProcessState, UnmatchedInvoiceCharge, UnpricedChargingProcess } from "../types/chargingProcess.types.js";
|
|
5
5
|
/**
|
|
6
6
|
* Access to TeslaMate's `charging_processes` table. The helpers here
|
|
7
7
|
* ({@link ChargingProcessesStore.getUnpricedCharges},
|
|
@@ -13,6 +13,7 @@ import type { FailedChargingProcessState, UnpricedChargingProcess } from "../typ
|
|
|
13
13
|
*/
|
|
14
14
|
export declare class ChargingProcessesStore extends IMateStore<ChargingProcessesId, ChargingProcesses, ChargingProcessesInitializer, ChargingProcessesMutator> {
|
|
15
15
|
readonly statesTable: string;
|
|
16
|
+
readonly invoiceStatesTable: string;
|
|
16
17
|
constructor();
|
|
17
18
|
getUnpricedCharges(tx?: SqlTx): Promise<UnpricedChargingProcess[]>;
|
|
18
19
|
updatePrice(processId: ChargingProcessesId, cost: number | null, tx?: SqlTx): Promise<ChargingProcesses>;
|
|
@@ -33,8 +34,24 @@ export declare class ChargingProcessesStore extends IMateStore<ChargingProcesses
|
|
|
33
34
|
* Best-effort match of a CSV row to a TeslaMate charging_processes.id by
|
|
34
35
|
* VIN + start time (Supercharger session start vs. logged start can differ
|
|
35
36
|
* by a couple of minutes). Adjust the tolerance to taste.
|
|
37
|
+
*
|
|
38
|
+
* `start_date` is a naive `timestamp` holding UTC wall time (TeslaMate's
|
|
39
|
+
* convention), so the invoice instant is converted to naive UTC before
|
|
40
|
+
* comparing — a bare `timestamp`-vs-`timestamptz` comparison would shift
|
|
41
|
+
* `start_date` by the session timezone and miss the window on any server
|
|
42
|
+
* not running UTC.
|
|
36
43
|
*/
|
|
37
44
|
lookupChargingProcessId(vin: string, chargeStart: Date, tx?: SqlTx): Promise<number | null>;
|
|
45
|
+
/**
|
|
46
|
+
* Completed Supercharger charges — a charge whose position lies within the
|
|
47
|
+
* covered radius of a charger-typed slug, same geo-match the pricing uses —
|
|
48
|
+
* that no `pic_invoices` row is matched to, oldest first. With
|
|
49
|
+
* `onlyUnnotified` charges already paged (a stamped
|
|
50
|
+
* `pic_invoice_missing_states` row) are excluded.
|
|
51
|
+
*/
|
|
52
|
+
getUnmatchedInvoiceCharges(onlyUnnotified?: boolean, tx?: SqlTx): Promise<UnmatchedInvoiceCharge[]>;
|
|
53
|
+
/** Stamp the missing-invoice notified flag for the given charges (upsert; empty is a no-op). */
|
|
54
|
+
markUnmatchedInvoiceNotified(processIds: ChargingProcessesId[], tx?: SqlTx): Promise<void>;
|
|
38
55
|
}
|
|
39
56
|
export declare const chargingProcessesStore: () => ChargingProcessesStore;
|
|
40
57
|
//# sourceMappingURL=ChargingProcessesStore.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChargingProcessesStore.d.ts","sourceRoot":"","sources":["../../src/store/ChargingProcessesStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAChC,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAO,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EACV,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"ChargingProcessesStore.d.ts","sourceRoot":"","sources":["../../src/store/ChargingProcessesStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EACjC,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAChC,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAO,KAAK,KAAK,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EACV,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,mCAAmC,CAAC;AAS3C;;;;;;;;GAQG;AACH,qBAAa,sBAAuB,SAAQ,UAAU,CACpD,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,wBAAwB,CACzB;IACC,SAAgB,WAAW,EAAE,MAAM,CAAiC;IACpE,SAAgB,kBAAkB,EAAE,MAAM,CAAgC;;IAU7D,kBAAkB,CAC7B,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAuBxB,WAAW,CACtB,SAAS,EAAE,mBAAmB,EAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,iBAAiB,CAAC;IAQhB,QAAQ,CACnB,SAAS,EAAE,mBAAmB,EAC9B,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IAO9B,UAAU,CACrB,SAAS,EAAE,mBAAmB,EAC9B,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;OAIG;IACU,eAAe,CAC1B,SAAS,EAAE,MAAM,EACjB,cAAc,UAAQ,EACtB,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAWxC,iFAAiF;IACpE,kBAAkB,CAC7B,QAAQ,EAAE,0BAA0B,EAAE,EACtC,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,IAAI,CAAC;IAMhB,kGAAkG;IACrF,cAAc,CAAC,EAAE,GAAE,KAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAKlD,oBAAoB,CAC/B,SAAS,EAAE,mBAAmB,EAC9B,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,MAAM,CAAC;IAYlB;;;;;;;;;;OAUG;IACU,uBAAuB,CAClC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,IAAI,EACjB,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAazB;;;;;;OAMG;IACU,0BAA0B,CACrC,cAAc,UAAQ,EACtB,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAoCpC,gGAAgG;IACnF,4BAA4B,CACvC,UAAU,EAAE,mBAAmB,EAAE,EACjC,EAAE,GAAE,KAAa,GAChB,OAAO,CAAC,IAAI,CAAC;CASjB;AAGD,eAAO,MAAM,sBAAsB,8BACQ,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { chargingProcessesInitializer, chargingProcessesMutator, } from "@mxpicture/tesla-superchargers-generated/public";
|
|
2
2
|
import { IMateStore } from "./IMateStore.js";
|
|
3
3
|
import { sql } from "./db.js";
|
|
4
|
+
import { CHARGER_MAP_TYPES } from "../client/common.clients.js";
|
|
5
|
+
import { COVERED_MARGIN, COVERED_RADIUS_KM, KM_PER_DEG_LAT, } from "../common/coordinates.js";
|
|
4
6
|
/**
|
|
5
7
|
* Access to TeslaMate's `charging_processes` table. The helpers here
|
|
6
8
|
* ({@link ChargingProcessesStore.getUnpricedCharges},
|
|
@@ -12,6 +14,7 @@ import { sql } from "./db.js";
|
|
|
12
14
|
*/
|
|
13
15
|
export class ChargingProcessesStore extends IMateStore {
|
|
14
16
|
statesTable = "pic_charging_process_states";
|
|
17
|
+
invoiceStatesTable = "pic_invoice_missing_states";
|
|
15
18
|
constructor() {
|
|
16
19
|
super("charging_processes", chargingProcessesInitializer, chargingProcessesMutator);
|
|
17
20
|
}
|
|
@@ -88,6 +91,12 @@ export class ChargingProcessesStore extends IMateStore {
|
|
|
88
91
|
* Best-effort match of a CSV row to a TeslaMate charging_processes.id by
|
|
89
92
|
* VIN + start time (Supercharger session start vs. logged start can differ
|
|
90
93
|
* by a couple of minutes). Adjust the tolerance to taste.
|
|
94
|
+
*
|
|
95
|
+
* `start_date` is a naive `timestamp` holding UTC wall time (TeslaMate's
|
|
96
|
+
* convention), so the invoice instant is converted to naive UTC before
|
|
97
|
+
* comparing — a bare `timestamp`-vs-`timestamptz` comparison would shift
|
|
98
|
+
* `start_date` by the session timezone and miss the window on any server
|
|
99
|
+
* not running UTC.
|
|
91
100
|
*/
|
|
92
101
|
async lookupChargingProcessId(vin, chargeStart, tx = sql()) {
|
|
93
102
|
const rows = await tx `
|
|
@@ -95,12 +104,63 @@ export class ChargingProcessesStore extends IMateStore {
|
|
|
95
104
|
FROM charging_processes cp
|
|
96
105
|
INNER JOIN cars c ON c.id = cp.car_id
|
|
97
106
|
WHERE c.vin = ${vin}
|
|
98
|
-
AND cp.start_date BETWEEN ${chargeStart}::timestamptz - interval '15 minutes'
|
|
99
|
-
AND ${chargeStart}::timestamptz + interval '15 minutes'
|
|
100
|
-
ORDER BY abs(extract(epoch FROM cp.start_date - ${chargeStart}::timestamptz))
|
|
107
|
+
AND cp.start_date BETWEEN (${chargeStart}::timestamptz AT TIME ZONE 'UTC') - interval '15 minutes'
|
|
108
|
+
AND (${chargeStart}::timestamptz AT TIME ZONE 'UTC') + interval '15 minutes'
|
|
109
|
+
ORDER BY abs(extract(epoch FROM cp.start_date - (${chargeStart}::timestamptz AT TIME ZONE 'UTC')))
|
|
101
110
|
LIMIT 1`;
|
|
102
111
|
return rows[0]?.id ?? null;
|
|
103
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* Completed Supercharger charges — a charge whose position lies within the
|
|
115
|
+
* covered radius of a charger-typed slug, same geo-match the pricing uses —
|
|
116
|
+
* that no `pic_invoices` row is matched to, oldest first. With
|
|
117
|
+
* `onlyUnnotified` charges already paged (a stamped
|
|
118
|
+
* `pic_invoice_missing_states` row) are excluded.
|
|
119
|
+
*/
|
|
120
|
+
async getUnmatchedInvoiceCharges(onlyUnnotified = false, tx = sql()) {
|
|
121
|
+
const radiusKm = COVERED_RADIUS_KM * COVERED_MARGIN;
|
|
122
|
+
const latDeg = radiusKm / KM_PER_DEG_LAT;
|
|
123
|
+
return await tx `
|
|
124
|
+
SELECT cp.id, cp.start_date, cp.end_date,
|
|
125
|
+
p.latitude, p.longitude,
|
|
126
|
+
slug.title AS slug_title, slug.distance_km
|
|
127
|
+
FROM charging_processes cp
|
|
128
|
+
INNER JOIN positions p ON p.id = cp.position_id
|
|
129
|
+
CROSS JOIN LATERAL (
|
|
130
|
+
SELECT s.title,
|
|
131
|
+
2 * 6371 * asin(sqrt(
|
|
132
|
+
pow(sin(radians(s.latitude - p.latitude) / 2), 2)
|
|
133
|
+
+ cos(radians(p.latitude)) * cos(radians(s.latitude))
|
|
134
|
+
* pow(sin(radians(s.longitude - p.longitude) / 2), 2)
|
|
135
|
+
)) AS distance_km
|
|
136
|
+
FROM pic_slugs s
|
|
137
|
+
WHERE s.location_types && ${[...CHARGER_MAP_TYPES]}::text[]
|
|
138
|
+
AND s.latitude BETWEEN p.latitude - ${latDeg} AND p.latitude + ${latDeg}
|
|
139
|
+
AND s.longitude BETWEEN p.longitude - ${latDeg} / cos(radians(p.latitude))
|
|
140
|
+
AND p.longitude + ${latDeg} / cos(radians(p.latitude))
|
|
141
|
+
ORDER BY distance_km
|
|
142
|
+
LIMIT 1
|
|
143
|
+
) slug
|
|
144
|
+
WHERE cp.end_date IS NOT NULL
|
|
145
|
+
AND slug.distance_km < ${radiusKm}
|
|
146
|
+
AND NOT EXISTS (SELECT 1 FROM pic_invoices i WHERE i.charging_processes_id = cp.id)
|
|
147
|
+
${onlyUnnotified
|
|
148
|
+
? tx `AND NOT EXISTS (SELECT 1 FROM ${tx(this.invoiceStatesTable)} n
|
|
149
|
+
WHERE n.charging_processes_id = cp.id AND n.notified_at IS NOT NULL)`
|
|
150
|
+
: tx ``}
|
|
151
|
+
ORDER BY cp.start_date`;
|
|
152
|
+
}
|
|
153
|
+
/** Stamp the missing-invoice notified flag for the given charges (upsert; empty is a no-op). */
|
|
154
|
+
async markUnmatchedInvoiceNotified(processIds, tx = sql()) {
|
|
155
|
+
if (processIds.length === 0)
|
|
156
|
+
return;
|
|
157
|
+
await tx `
|
|
158
|
+
INSERT INTO ${tx(this.invoiceStatesTable)} (created_at, updated_at, charging_processes_id, notified_at)
|
|
159
|
+
SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, unnest(${processIds}::int[]), CURRENT_TIMESTAMP
|
|
160
|
+
ON CONFLICT (charging_processes_id)
|
|
161
|
+
DO UPDATE SET notified_at = CURRENT_TIMESTAMP,
|
|
162
|
+
updated_at = CURRENT_TIMESTAMP`;
|
|
163
|
+
}
|
|
104
164
|
}
|
|
105
165
|
let _store = null;
|
|
106
166
|
export const chargingProcessesStore = () => (_store ??= new ChargingProcessesStore());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChargingProcessesStore.js","sourceRoot":"","sources":["../../src/store/ChargingProcessesStore.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,GAOzB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAc,MAAM,SAAS,CAAC;AAO1C;;;;;;;;GAQG;AACH,MAAM,OAAO,sBAAuB,SAAQ,UAK3C;IACiB,WAAW,GAAW,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"ChargingProcessesStore.js","sourceRoot":"","sources":["../../src/store/ChargingProcessesStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,20 @@ import type { ChargingProcesses, ChargingProcessesId, PicChargingProcessStates,
|
|
|
3
3
|
export interface FailedChargingProcessState extends PicChargingProcessStates {
|
|
4
4
|
start_date: Date | null;
|
|
5
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* A completed Supercharger charge (geo-matched to a charger-typed slug, same
|
|
8
|
+
* match the pricing uses) that no `pic_invoices` row is matched to.
|
|
9
|
+
*/
|
|
10
|
+
export interface UnmatchedInvoiceCharge {
|
|
11
|
+
id: ChargingProcessesId;
|
|
12
|
+
start_date: ChargingProcesses["start_date"];
|
|
13
|
+
end_date: ChargingProcesses["end_date"];
|
|
14
|
+
latitude: Positions["latitude"];
|
|
15
|
+
longitude: Positions["longitude"];
|
|
16
|
+
/** title of the nearest matched slug (site name); null when the feed has none */
|
|
17
|
+
slug_title: string | null;
|
|
18
|
+
distance_km: number;
|
|
19
|
+
}
|
|
6
20
|
export interface UnpricedChargingProcess {
|
|
7
21
|
id: ChargingProcessesId;
|
|
8
22
|
start_date: ChargingProcesses["start_date"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chargingProcess.types.d.ts","sourceRoot":"","sources":["../../src/types/chargingProcess.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,SAAS,EACV,MAAM,iDAAiD,CAAC;AAEzD,6EAA6E;AAC7E,MAAM,WAAW,0BAA2B,SAAQ,wBAAwB;IAC1E,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,mBAAmB,CAAC;IACxB,UAAU,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC5C,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACpC,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC9C,UAAU,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC5C,mBAAmB,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;IAC9D,kBAAkB,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;IAC5D,YAAY,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAChD,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAChC,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,0BAA0B,CAAC;IACvC,aAAa,CAAC,EAAE,wBAAwB,CAAC,eAAe,CAAC,CAAC;CAC3D"}
|
|
1
|
+
{"version":3,"file":"chargingProcess.types.d.ts","sourceRoot":"","sources":["../../src/types/chargingProcess.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,wBAAwB,EACxB,0BAA0B,EAC1B,SAAS,EACV,MAAM,iDAAiD,CAAC;AAEzD,6EAA6E;AAC7E,MAAM,WAAW,0BAA2B,SAAQ,wBAAwB;IAC1E,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,mBAAmB,CAAC;IACxB,UAAU,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC5C,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxC,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAChC,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAClC,iFAAiF;IACjF,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,mBAAmB,CAAC;IACxB,UAAU,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC5C,QAAQ,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACpC,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC9C,UAAU,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC5C,mBAAmB,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,CAAC;IAC9D,kBAAkB,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;IAC5D,YAAY,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAChD,QAAQ,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IAChC,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,0BAA0B,CAAC;IACvC,aAAa,CAAC,EAAE,wBAAwB,CAAC,eAAe,CAAC,CAAC;CAC3D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mxpicture/tesla-superchargers-mate",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "TeslaMate integration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "MXPicture",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"access": "public"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@mxpicture/tesla-superchargers-generated": "^0.1.
|
|
51
|
+
"@mxpicture/tesla-superchargers-generated": "^0.1.8",
|
|
52
52
|
"postgres": "^3.4.9",
|
|
53
53
|
"short-uuid": "^6.0.3",
|
|
54
54
|
"zod": "^4.3.6"
|