@mxpicture/teslamate-extended-cli 2.1.59 → 2.1.61
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/cli.common.d.ts +68 -5
- package/dist/cli.common.d.ts.map +1 -1
- package/dist/cli.common.js +166 -11
- package/dist/cli.common.js.map +1 -1
- package/dist/cli.js +13 -2
- package/dist/cli.js.map +1 -1
- package/package.json +6 -4
package/dist/cli.common.d.ts
CHANGED
|
@@ -5,18 +5,52 @@ import { type IStore } from "@mxpicture/teslamate-extended-api/store";
|
|
|
5
5
|
export declare const readVersion: () => string;
|
|
6
6
|
/** One day in milliseconds — the schedule interval. */
|
|
7
7
|
export declare const DAY_MS: number;
|
|
8
|
+
/**
|
|
9
|
+
* Match radius (km) for `--charged`: a TeslaMate charge location counts as a
|
|
10
|
+
* given Supercharger when it sits within this distance of it. ~300 m comfortably
|
|
11
|
+
* covers the gap between where the car parks and the site's listed point while
|
|
12
|
+
* staying well under the spacing between distinct sites.
|
|
13
|
+
*/
|
|
14
|
+
export declare const CHARGED_MATCH_KM = 0.3;
|
|
8
15
|
/** Parses a non-negative float (e.g. --delay). */
|
|
9
16
|
export declare const parseFloatArg: (v: string) => number;
|
|
10
17
|
/** Parses a non-negative integer (e.g. --limit). */
|
|
11
18
|
export declare const parseIntArg: (v: string) => number;
|
|
12
19
|
/** Validates an HH:MM (24h) time string (e.g. --at). */
|
|
13
20
|
export declare const parseTime: (v: string) => string;
|
|
21
|
+
/** Parses a "lat,lon" coordinate pair (e.g. --near). */
|
|
22
|
+
export declare const parseNear: (v: string) => {
|
|
23
|
+
lat: number;
|
|
24
|
+
lon: number;
|
|
25
|
+
};
|
|
26
|
+
/** One schedule tier: fetch within `radiusKm` of home every `everyDays` days. */
|
|
27
|
+
export interface Tier {
|
|
28
|
+
radiusKm: number;
|
|
29
|
+
everyDays: number;
|
|
30
|
+
}
|
|
31
|
+
/** Collects a repeatable --tier "radiusKm:everyDays" value onto the previous list. */
|
|
32
|
+
export declare const parseTier: (v: string, prev: Tier[]) => Tier[];
|
|
14
33
|
/** Commander option: restrict to a single country. */
|
|
15
34
|
export declare const countryOption: Option<"-c, --country <name>", undefined, undefined, undefined, false, undefined>;
|
|
16
35
|
/** Commander option: restrict to a single region. */
|
|
17
36
|
export declare const regionOption: Option<"-R, --region <name>", undefined, undefined, undefined, false, undefined>;
|
|
18
37
|
/** Commander option: all Superchargers worldwide. */
|
|
19
38
|
export declare const allOption: Option<"-a, --all", undefined, undefined, undefined, false, undefined>;
|
|
39
|
+
/** Commander option: center coordinate "lat,lon" for a radius scope. */
|
|
40
|
+
export declare const nearOption: Option<"--near <lat,lon>", undefined, undefined, {
|
|
41
|
+
lat: number;
|
|
42
|
+
lon: number;
|
|
43
|
+
}, false, undefined>;
|
|
44
|
+
/** Commander option: radius in km around --near. */
|
|
45
|
+
export declare const radiusOption: Option<"--radius <km>", undefined, undefined, number, false, undefined>;
|
|
46
|
+
/** Commander option (schedule): repeatable tier "radiusKm:everyDays". */
|
|
47
|
+
export declare const tierOption: Option<"--tier <km:everyDays>", undefined, Tier[], Tier[], false, undefined>;
|
|
48
|
+
/** Commander option: scope = the Superchargers you've charged at (TeslaMate DB). */
|
|
49
|
+
export declare const chargedOption: Option<"--charged", undefined, undefined, undefined, false, undefined>;
|
|
50
|
+
/** Commander option: center the radius scope on the TeslaMate "Home" geofence. */
|
|
51
|
+
export declare const homeFromTeslamateOption: Option<"--home-from-teslamate", undefined, undefined, undefined, false, undefined>;
|
|
52
|
+
/** Commander option: also upsert each fetched Supercharger as a TeslaMate geofence. */
|
|
53
|
+
export declare const geofencesOption: Option<"--teslamate-geofences", undefined, undefined, undefined, false, undefined>;
|
|
20
54
|
/** Commander option: pricing locale. */
|
|
21
55
|
export declare const localeOption: Option<"-l, --locale <locale>", undefined, "en-US", undefined, false, undefined>;
|
|
22
56
|
/** Commander option: politeness delay between requests (seconds). */
|
|
@@ -48,6 +82,14 @@ export interface CommonOpts {
|
|
|
48
82
|
country?: string;
|
|
49
83
|
region?: string;
|
|
50
84
|
all?: boolean;
|
|
85
|
+
near?: {
|
|
86
|
+
lat: number;
|
|
87
|
+
lon: number;
|
|
88
|
+
};
|
|
89
|
+
radius?: number;
|
|
90
|
+
charged?: boolean;
|
|
91
|
+
homeFromTeslamate?: boolean;
|
|
92
|
+
teslamateGeofences?: boolean;
|
|
51
93
|
locale: string;
|
|
52
94
|
delay: number;
|
|
53
95
|
limit: number;
|
|
@@ -59,14 +101,25 @@ export interface CommonOpts {
|
|
|
59
101
|
httpPassword?: string;
|
|
60
102
|
proxy?: string;
|
|
61
103
|
}
|
|
62
|
-
/** `schedule` options: the common ones plus the daily run time. */
|
|
104
|
+
/** `schedule` options: the common ones plus the daily run time and tiers. */
|
|
63
105
|
export type ScheduleOpts = CommonOpts & {
|
|
64
106
|
at: string;
|
|
107
|
+
tier: Tier[];
|
|
65
108
|
};
|
|
66
|
-
/** Resolves the single scope flag (exactly one of country/region/all). */
|
|
109
|
+
/** Resolves the single scope flag (exactly one of country/region/all/near). */
|
|
67
110
|
export declare const toScope: (o: CommonOpts) => FetchScope;
|
|
68
|
-
/**
|
|
69
|
-
export declare const
|
|
111
|
+
/** The radius center: --near, or the TeslaMate "Home" geofence (--home-from-teslamate). */
|
|
112
|
+
export declare const resolveCenter: (o: CommonOpts) => Promise<{
|
|
113
|
+
lat: number;
|
|
114
|
+
lon: number;
|
|
115
|
+
}>;
|
|
116
|
+
/**
|
|
117
|
+
* Resolves the fetch scope, including the TeslaMate-backed ones. Exactly one of
|
|
118
|
+
* --country / --region / --all / --near|--home-from-teslamate / --charged.
|
|
119
|
+
*/
|
|
120
|
+
export declare const resolveFetchScope: (o: CommonOpts) => Promise<FetchScope>;
|
|
121
|
+
/** Maps CLI options to the api fetch options, optionally with an explicit scope. */
|
|
122
|
+
export declare const toFetchOptions: (o: CommonOpts, scope?: FetchScope) => FetchOptions;
|
|
70
123
|
/** Builds the sinks the user asked for (CLI flag or env). At least one required. */
|
|
71
124
|
export declare const buildStores: (o: CommonOpts) => IStore[];
|
|
72
125
|
/**
|
|
@@ -76,9 +129,19 @@ export declare const buildStores: (o: CommonOpts) => IStore[];
|
|
|
76
129
|
*/
|
|
77
130
|
export declare const applyProxy: (o: CommonOpts) => void;
|
|
78
131
|
/** Fetches one snapshot, stores it, and closes the sinks. */
|
|
79
|
-
export declare const runOnce: (o: CommonOpts) => Promise<void>;
|
|
132
|
+
export declare const runOnce: (o: CommonOpts, scope?: FetchScope) => Promise<void>;
|
|
133
|
+
/** `fetch` command: resolve the (possibly TeslaMate-backed) scope, then run once. */
|
|
134
|
+
export declare const runFetch: (o: CommonOpts) => Promise<void>;
|
|
80
135
|
/** ms from now until the next HH:MM (local); rolls to tomorrow if already passed. */
|
|
81
136
|
export declare const msUntil: (at: string) => number;
|
|
137
|
+
/**
|
|
138
|
+
* The largest tier radius whose cadence is due on `date`, or null if none is.
|
|
139
|
+
* A tier is "due" when `epochDay % everyDays === 0` (epochDay = whole days since
|
|
140
|
+
* the Unix epoch, UTC) — date-driven so it survives restarts, with `7` landing on
|
|
141
|
+
* a fixed weekday and `30` meaning every 30 days. Cumulative: the chosen radius
|
|
142
|
+
* already covers every smaller tier, so one fetch at it satisfies all due tiers.
|
|
143
|
+
*/
|
|
144
|
+
export declare const dueRadiusKm: (tiers: Tier[], date: Date) => number | null;
|
|
82
145
|
/** Runs once on start, then every day at o.at — keeping the process alive. */
|
|
83
146
|
export declare const scheduleDaily: (o: ScheduleOpts) => Promise<void>;
|
|
84
147
|
/** Prints the countries and regions that have Superchargers. */
|
package/dist/cli.common.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.common.d.ts","sourceRoot":"","sources":["../src/cli.common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAK3E,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.common.d.ts","sourceRoot":"","sources":["../src/cli.common.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.common.js
CHANGED
|
@@ -3,14 +3,21 @@ import { readFileSync } from "node:fs";
|
|
|
3
3
|
import { dirname, resolve } from "node:path";
|
|
4
4
|
import { env, exit } from "node:process";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
|
-
import { fetchAllLocations, isSupercharger, } from "@mxpicture/teslamate-extended-api/api";
|
|
7
|
-
import { HttpStore, ingestSuperchargers, JsonFileStore, PostgresStore, } from "@mxpicture/teslamate-extended-api/store";
|
|
6
|
+
import { fetchAllLocations, fetchChargeSiteCoords, fetchHomeGeofence, isSupercharger, } from "@mxpicture/teslamate-extended-api/api";
|
|
7
|
+
import { HttpStore, ingestSuperchargers, JsonFileStore, PostgresStore, TeslaMateGeofenceStore, } from "@mxpicture/teslamate-extended-api/store";
|
|
8
8
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
9
|
/** Reads the CLI package version from its package.json. */
|
|
10
10
|
export const readVersion = () => JSON.parse(readFileSync(resolve(__dirname, "../package.json"), "utf8"))
|
|
11
11
|
.version;
|
|
12
12
|
/** One day in milliseconds — the schedule interval. */
|
|
13
13
|
export const DAY_MS = 24 * 60 * 60 * 1000;
|
|
14
|
+
/**
|
|
15
|
+
* Match radius (km) for `--charged`: a TeslaMate charge location counts as a
|
|
16
|
+
* given Supercharger when it sits within this distance of it. ~300 m comfortably
|
|
17
|
+
* covers the gap between where the car parks and the site's listed point while
|
|
18
|
+
* staying well under the spacing between distinct sites.
|
|
19
|
+
*/
|
|
20
|
+
export const CHARGED_MATCH_KM = 0.3;
|
|
14
21
|
// ---------- argument parsers ----------
|
|
15
22
|
/** Parses a non-negative float (e.g. --delay). */
|
|
16
23
|
export const parseFloatArg = (v) => {
|
|
@@ -32,6 +39,27 @@ export const parseTime = (v) => {
|
|
|
32
39
|
throw new InvalidArgumentError("expected HH:MM (24h)");
|
|
33
40
|
return v;
|
|
34
41
|
};
|
|
42
|
+
/** Parses a "lat,lon" coordinate pair (e.g. --near). */
|
|
43
|
+
export const parseNear = (v) => {
|
|
44
|
+
const parts = v.split(",").map((s) => Number(s.trim()));
|
|
45
|
+
if (parts.length !== 2 || !parts.every((n) => Number.isFinite(n)))
|
|
46
|
+
throw new InvalidArgumentError("expected 'lat,lon' (e.g. 48.137,11.575)");
|
|
47
|
+
const [lat, lon] = parts;
|
|
48
|
+
if (lat < -90 || lat > 90 || lon < -180 || lon > 180)
|
|
49
|
+
throw new InvalidArgumentError("lat must be -90..90 and lon -180..180");
|
|
50
|
+
return { lat, lon };
|
|
51
|
+
};
|
|
52
|
+
/** Collects a repeatable --tier "radiusKm:everyDays" value onto the previous list. */
|
|
53
|
+
export const parseTier = (v, prev) => {
|
|
54
|
+
const [kmStr, daysStr] = v.split(":");
|
|
55
|
+
const radiusKm = Number(kmStr);
|
|
56
|
+
const everyDays = parseInt(daysStr ?? "", 10);
|
|
57
|
+
if (!Number.isFinite(radiusKm) || radiusKm <= 0)
|
|
58
|
+
throw new InvalidArgumentError("radius (km) must be a positive number");
|
|
59
|
+
if (!Number.isInteger(everyDays) || everyDays <= 0)
|
|
60
|
+
throw new InvalidArgumentError("everyDays must be a positive integer");
|
|
61
|
+
return [...prev, { radiusKm, everyDays }];
|
|
62
|
+
};
|
|
35
63
|
// ---------- commander options ----------
|
|
36
64
|
/** Commander option: restrict to a single country. */
|
|
37
65
|
export const countryOption = new Option("-c, --country <name>", "Only this country");
|
|
@@ -39,6 +67,20 @@ export const countryOption = new Option("-c, --country <name>", "Only this count
|
|
|
39
67
|
export const regionOption = new Option("-R, --region <name>", "Only this region");
|
|
40
68
|
/** Commander option: all Superchargers worldwide. */
|
|
41
69
|
export const allOption = new Option("-a, --all", "All Superchargers worldwide");
|
|
70
|
+
/** Commander option: center coordinate "lat,lon" for a radius scope. */
|
|
71
|
+
export const nearOption = new Option("--near <lat,lon>", "Center coordinate for a radius scope, e.g. 48.137,11.575").argParser(parseNear);
|
|
72
|
+
/** Commander option: radius in km around --near. */
|
|
73
|
+
export const radiusOption = new Option("--radius <km>", "Radius in km around --near").argParser(parseFloatArg);
|
|
74
|
+
/** Commander option (schedule): repeatable tier "radiusKm:everyDays". */
|
|
75
|
+
export const tierOption = new Option("--tier <km:everyDays>", "Schedule tier 'radiusKm:everyDays' (repeatable); fetch within radiusKm every everyDays days")
|
|
76
|
+
.default([])
|
|
77
|
+
.argParser(parseTier);
|
|
78
|
+
/** Commander option: scope = the Superchargers you've charged at (TeslaMate DB). */
|
|
79
|
+
export const chargedOption = new Option("--charged", "Only Superchargers you've charged at (read from the TeslaMate DB); needs --postgres-url");
|
|
80
|
+
/** Commander option: center the radius scope on the TeslaMate "Home" geofence. */
|
|
81
|
+
export const homeFromTeslamateOption = new Option("--home-from-teslamate", "Center --near/--tier on the TeslaMate 'Home' geofence instead of a coordinate; needs --postgres-url");
|
|
82
|
+
/** Commander option: also upsert each fetched Supercharger as a TeslaMate geofence. */
|
|
83
|
+
export const geofencesOption = new Option("--teslamate-geofences", "Also upsert each fetched Supercharger as a TeslaMate geofence (name + price); needs --postgres-url");
|
|
42
84
|
/** Commander option: pricing locale. */
|
|
43
85
|
export const localeOption = new Option("-l, --locale <locale>", "Locale for pricing").default("en-US");
|
|
44
86
|
/** Commander option: politeness delay between requests (seconds). */
|
|
@@ -71,19 +113,88 @@ export const atOption = new Option("-t, --at <HH:MM>", "Daily run time (24h, loc
|
|
|
71
113
|
* set in the environment). Use this to escape datacenter IPs Akamai 403s.
|
|
72
114
|
*/
|
|
73
115
|
export const proxyOption = new Option("--proxy <url>", "Route requests through this proxy (env HTTPS_PROXY / ALL_PROXY also honored)");
|
|
74
|
-
/** Resolves the single scope flag (exactly one of country/region/all). */
|
|
116
|
+
/** Resolves the single scope flag (exactly one of country/region/all/near). */
|
|
75
117
|
export const toScope = (o) => {
|
|
76
|
-
const picked = [
|
|
118
|
+
const picked = [
|
|
119
|
+
o.country,
|
|
120
|
+
o.region,
|
|
121
|
+
o.all ? "all" : undefined,
|
|
122
|
+
o.near ? "near" : undefined,
|
|
123
|
+
].filter(Boolean);
|
|
124
|
+
if (picked.length !== 1) {
|
|
125
|
+
console.error("Pick exactly one scope: --country | --region | --all | --near.");
|
|
126
|
+
exit(1);
|
|
127
|
+
}
|
|
128
|
+
if (o.near) {
|
|
129
|
+
if (o.radius === undefined) {
|
|
130
|
+
console.error("--near requires --radius <km>.");
|
|
131
|
+
exit(1);
|
|
132
|
+
}
|
|
133
|
+
return { near: { lat: o.near.lat, lon: o.near.lon, radiusKm: o.radius } };
|
|
134
|
+
}
|
|
135
|
+
return { country: o.country, region: o.region, all: o.all };
|
|
136
|
+
};
|
|
137
|
+
/** pgUrl from --postgres-url or env; errors out when a flag needs it and it's absent. */
|
|
138
|
+
const requirePgUrl = (o, flag) => {
|
|
139
|
+
const pgUrl = o.postgresUrl ?? env.SUPERCHARGERS_PG_URL;
|
|
140
|
+
if (!pgUrl) {
|
|
141
|
+
console.error(`${flag} needs --postgres-url <url> (or env SUPERCHARGERS_PG_URL).`);
|
|
142
|
+
exit(1);
|
|
143
|
+
}
|
|
144
|
+
return pgUrl;
|
|
145
|
+
};
|
|
146
|
+
/** The radius center: --near, or the TeslaMate "Home" geofence (--home-from-teslamate). */
|
|
147
|
+
export const resolveCenter = async (o) => {
|
|
148
|
+
if (o.near && o.homeFromTeslamate) {
|
|
149
|
+
console.error("Pass either --near or --home-from-teslamate, not both.");
|
|
150
|
+
exit(1);
|
|
151
|
+
}
|
|
152
|
+
if (o.near)
|
|
153
|
+
return o.near;
|
|
154
|
+
const home = await fetchHomeGeofence(requirePgUrl(o, "--home-from-teslamate"));
|
|
155
|
+
if (!home) {
|
|
156
|
+
console.error("No TeslaMate 'Home' geofence found (name ILIKE 'home').");
|
|
157
|
+
exit(1);
|
|
158
|
+
}
|
|
159
|
+
console.log(`Home geofence center: ${home.lat},${home.lon}.`);
|
|
160
|
+
return home;
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* Resolves the fetch scope, including the TeslaMate-backed ones. Exactly one of
|
|
164
|
+
* --country / --region / --all / --near|--home-from-teslamate / --charged.
|
|
165
|
+
*/
|
|
166
|
+
export const resolveFetchScope = async (o) => {
|
|
167
|
+
const nearScope = o.near || o.homeFromTeslamate;
|
|
168
|
+
const picked = [
|
|
169
|
+
o.country,
|
|
170
|
+
o.region,
|
|
171
|
+
o.all ? "all" : undefined,
|
|
172
|
+
nearScope ? "near" : undefined,
|
|
173
|
+
o.charged ? "charged" : undefined,
|
|
174
|
+
].filter(Boolean);
|
|
77
175
|
if (picked.length !== 1) {
|
|
78
|
-
console.error("Pick exactly one scope: --country | --region | --all.");
|
|
176
|
+
console.error("Pick exactly one scope: --country | --region | --all | --near | --home-from-teslamate | --charged.");
|
|
79
177
|
exit(1);
|
|
80
178
|
}
|
|
179
|
+
if (o.charged) {
|
|
180
|
+
const points = await fetchChargeSiteCoords(requirePgUrl(o, "--charged"));
|
|
181
|
+
console.log(`Found ${points.length} charge locations in TeslaMate.`);
|
|
182
|
+
return { nearAny: { points, radiusKm: CHARGED_MATCH_KM } };
|
|
183
|
+
}
|
|
184
|
+
if (nearScope) {
|
|
185
|
+
if (o.radius === undefined) {
|
|
186
|
+
console.error("--near/--home-from-teslamate requires --radius <km>.");
|
|
187
|
+
exit(1);
|
|
188
|
+
}
|
|
189
|
+
const c = await resolveCenter(o);
|
|
190
|
+
return { near: { lat: c.lat, lon: c.lon, radiusKm: o.radius } };
|
|
191
|
+
}
|
|
81
192
|
return { country: o.country, region: o.region, all: o.all };
|
|
82
193
|
};
|
|
83
|
-
/** Maps CLI options to the api fetch options. */
|
|
84
|
-
export const toFetchOptions = (o) => {
|
|
194
|
+
/** Maps CLI options to the api fetch options, optionally with an explicit scope. */
|
|
195
|
+
export const toFetchOptions = (o, scope) => {
|
|
85
196
|
return {
|
|
86
|
-
scope: toScope(o),
|
|
197
|
+
scope: scope ?? toScope(o),
|
|
87
198
|
locale: o.locale,
|
|
88
199
|
delayMs: o.delay * 1000,
|
|
89
200
|
limit: o.limit,
|
|
@@ -106,6 +217,10 @@ export const buildStores = (o) => {
|
|
|
106
217
|
username: o.httpUser ?? env.SUPERCHARGERS_HTTP_USER,
|
|
107
218
|
password: o.httpPassword ?? env.SUPERCHARGERS_HTTP_PASSWORD,
|
|
108
219
|
}));
|
|
220
|
+
if (o.teslamateGeofences)
|
|
221
|
+
stores.push(new TeslaMateGeofenceStore({
|
|
222
|
+
connectionString: requirePgUrl(o, "--teslamate-geofences"),
|
|
223
|
+
}));
|
|
109
224
|
if (stores.length === 0) {
|
|
110
225
|
console.error("No output configured. Pass --out <dir>, --postgres-url <url>, and/or " +
|
|
111
226
|
"--http-url <url> (or set SUPERCHARGERS_OUT_DIR / SUPERCHARGERS_PG_URL " +
|
|
@@ -126,9 +241,9 @@ export const applyProxy = (o) => {
|
|
|
126
241
|
env.ALL_PROXY = o.proxy;
|
|
127
242
|
};
|
|
128
243
|
/** Fetches one snapshot, stores it, and closes the sinks. */
|
|
129
|
-
export const runOnce = async (o) => {
|
|
244
|
+
export const runOnce = async (o, scope) => {
|
|
130
245
|
applyProxy(o);
|
|
131
|
-
const fetchOpts = toFetchOptions(o);
|
|
246
|
+
const fetchOpts = toFetchOptions(o, scope);
|
|
132
247
|
const stores = buildStores(o);
|
|
133
248
|
try {
|
|
134
249
|
const res = await ingestSuperchargers(fetchOpts, stores);
|
|
@@ -140,6 +255,10 @@ export const runOnce = async (o) => {
|
|
|
140
255
|
await s.close?.();
|
|
141
256
|
}
|
|
142
257
|
};
|
|
258
|
+
/** `fetch` command: resolve the (possibly TeslaMate-backed) scope, then run once. */
|
|
259
|
+
export const runFetch = async (o) => {
|
|
260
|
+
await runOnce(o, await resolveFetchScope(o));
|
|
261
|
+
};
|
|
143
262
|
/** ms from now until the next HH:MM (local); rolls to tomorrow if already passed. */
|
|
144
263
|
export const msUntil = (at) => {
|
|
145
264
|
const [h, m] = at.split(":").map(Number);
|
|
@@ -150,11 +269,47 @@ export const msUntil = (at) => {
|
|
|
150
269
|
next.setTime(next.getTime() + DAY_MS);
|
|
151
270
|
return next.getTime() - now.getTime();
|
|
152
271
|
};
|
|
272
|
+
/**
|
|
273
|
+
* The largest tier radius whose cadence is due on `date`, or null if none is.
|
|
274
|
+
* A tier is "due" when `epochDay % everyDays === 0` (epochDay = whole days since
|
|
275
|
+
* the Unix epoch, UTC) — date-driven so it survives restarts, with `7` landing on
|
|
276
|
+
* a fixed weekday and `30` meaning every 30 days. Cumulative: the chosen radius
|
|
277
|
+
* already covers every smaller tier, so one fetch at it satisfies all due tiers.
|
|
278
|
+
*/
|
|
279
|
+
export const dueRadiusKm = (tiers, date) => {
|
|
280
|
+
const epochDay = Math.floor(date.getTime() / DAY_MS);
|
|
281
|
+
const due = tiers.filter((t) => epochDay % t.everyDays === 0);
|
|
282
|
+
if (due.length === 0)
|
|
283
|
+
return null;
|
|
284
|
+
return Math.max(...due.map((t) => t.radiusKm));
|
|
285
|
+
};
|
|
153
286
|
/** Runs once on start, then every day at o.at — keeping the process alive. */
|
|
154
287
|
export const scheduleDaily = async (o) => {
|
|
288
|
+
const tiers = o.tier;
|
|
289
|
+
if (tiers.length > 0 && !o.near && !o.homeFromTeslamate) {
|
|
290
|
+
console.error("--tier requires --near <lat,lon> or --home-from-teslamate.");
|
|
291
|
+
exit(1);
|
|
292
|
+
}
|
|
293
|
+
// Resolve the tier center once (a coordinate, or the TeslaMate "Home" geofence).
|
|
294
|
+
const center = tiers.length > 0 ? await resolveCenter(o) : undefined;
|
|
155
295
|
const safeRun = async () => {
|
|
156
296
|
try {
|
|
157
|
-
|
|
297
|
+
if (tiers.length > 0 && center) {
|
|
298
|
+
const radiusKm = dueRadiusKm(tiers, new Date());
|
|
299
|
+
if (radiusKm === null) {
|
|
300
|
+
console.log("No tier due today; skipping run.");
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
console.log(`Tier due: fetching within ${radiusKm} km of ${center.lat},${center.lon}.`);
|
|
304
|
+
await runOnce(o, {
|
|
305
|
+
near: { lat: center.lat, lon: center.lon, radiusKm },
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
else {
|
|
309
|
+
// No tiers: country/region/all, --near, --home-from-teslamate, or --charged
|
|
310
|
+
// (re-resolved each fire so new charge locations are picked up over time).
|
|
311
|
+
await runOnce(o, await resolveFetchScope(o));
|
|
312
|
+
}
|
|
158
313
|
}
|
|
159
314
|
catch (e) {
|
|
160
315
|
console.error("Run failed:", e instanceof Error ? e.message : e);
|
package/dist/cli.common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.common.js","sourceRoot":"","sources":["../src/cli.common.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.common.js","sourceRoot":"","sources":["../src/cli.common.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { program } from "@commander-js/extra-typings";
|
|
18
18
|
import { argv, exit } from "node:process";
|
|
19
|
-
import { allOption, atOption, countryOption, delayOption, httpPasswordOption, httpUrlOption, httpUserOption, limitOption, listCountries, localeOption, outOption, pgTableOption, postgresUrlOption, proxyOption, readVersion, regionOption,
|
|
19
|
+
import { allOption, atOption, chargedOption, countryOption, delayOption, geofencesOption, homeFromTeslamateOption, httpPasswordOption, httpUrlOption, httpUserOption, limitOption, listCountries, localeOption, nearOption, outOption, pgTableOption, postgresUrlOption, proxyOption, radiusOption, readVersion, regionOption, runFetch, scheduleDaily, tierOption, } from "./cli.common.js";
|
|
20
20
|
program
|
|
21
21
|
.name("teslamate-superchargers")
|
|
22
22
|
.version(readVersion())
|
|
@@ -27,6 +27,11 @@ program
|
|
|
27
27
|
.addOption(countryOption)
|
|
28
28
|
.addOption(regionOption)
|
|
29
29
|
.addOption(allOption)
|
|
30
|
+
.addOption(nearOption)
|
|
31
|
+
.addOption(radiusOption)
|
|
32
|
+
.addOption(chargedOption)
|
|
33
|
+
.addOption(homeFromTeslamateOption)
|
|
34
|
+
.addOption(geofencesOption)
|
|
30
35
|
.addOption(localeOption)
|
|
31
36
|
.addOption(delayOption)
|
|
32
37
|
.addOption(limitOption)
|
|
@@ -37,13 +42,19 @@ program
|
|
|
37
42
|
.addOption(httpUserOption)
|
|
38
43
|
.addOption(httpPasswordOption)
|
|
39
44
|
.addOption(proxyOption)
|
|
40
|
-
.action(
|
|
45
|
+
.action((o) => runFetch(o));
|
|
41
46
|
program
|
|
42
47
|
.command("schedule")
|
|
43
48
|
.description("Fetch now, then refresh once a day at --at (keeps running)")
|
|
44
49
|
.addOption(countryOption)
|
|
45
50
|
.addOption(regionOption)
|
|
46
51
|
.addOption(allOption)
|
|
52
|
+
.addOption(nearOption)
|
|
53
|
+
.addOption(radiusOption)
|
|
54
|
+
.addOption(tierOption)
|
|
55
|
+
.addOption(chargedOption)
|
|
56
|
+
.addOption(homeFromTeslamateOption)
|
|
57
|
+
.addOption(geofencesOption)
|
|
47
58
|
.addOption(localeOption)
|
|
48
59
|
.addOption(delayOption)
|
|
49
60
|
.addOption(limitOption)
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,SAAS,EACT,QAAQ,EACR,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,YAAY,EACZ,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,SAAS,EACT,QAAQ,EACR,aAAa,EACb,aAAa,EACb,WAAW,EACX,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,YAAY,EACZ,UAAU,EACV,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO;KACJ,IAAI,CAAC,yBAAyB,CAAC;KAC/B,OAAO,CAAC,WAAW,EAAE,CAAC;KACtB,WAAW,CAAC,wDAAwD,CAAC,CAAC;AAEzE,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,4CAA4C,CAAC;KACzD,SAAS,CAAC,aAAa,CAAC;KACxB,SAAS,CAAC,YAAY,CAAC;KACvB,SAAS,CAAC,SAAS,CAAC;KACpB,SAAS,CAAC,UAAU,CAAC;KACrB,SAAS,CAAC,YAAY,CAAC;KACvB,SAAS,CAAC,aAAa,CAAC;KACxB,SAAS,CAAC,uBAAuB,CAAC;KAClC,SAAS,CAAC,eAAe,CAAC;KAC1B,SAAS,CAAC,YAAY,CAAC;KACvB,SAAS,CAAC,WAAW,CAAC;KACtB,SAAS,CAAC,WAAW,CAAC;KACtB,SAAS,CAAC,SAAS,CAAC;KACpB,SAAS,CAAC,iBAAiB,CAAC;KAC5B,SAAS,CAAC,aAAa,CAAC;KACxB,SAAS,CAAC,aAAa,CAAC;KACxB,SAAS,CAAC,cAAc,CAAC;KACzB,SAAS,CAAC,kBAAkB,CAAC;KAC7B,SAAS,CAAC,WAAW,CAAC;KACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9B,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,4DAA4D,CAAC;KACzE,SAAS,CAAC,aAAa,CAAC;KACxB,SAAS,CAAC,YAAY,CAAC;KACvB,SAAS,CAAC,SAAS,CAAC;KACpB,SAAS,CAAC,UAAU,CAAC;KACrB,SAAS,CAAC,YAAY,CAAC;KACvB,SAAS,CAAC,UAAU,CAAC;KACrB,SAAS,CAAC,aAAa,CAAC;KACxB,SAAS,CAAC,uBAAuB,CAAC;KAClC,SAAS,CAAC,eAAe,CAAC;KAC1B,SAAS,CAAC,YAAY,CAAC;KACvB,SAAS,CAAC,WAAW,CAAC;KACtB,SAAS,CAAC,WAAW,CAAC;KACtB,SAAS,CAAC,SAAS,CAAC;KACpB,SAAS,CAAC,iBAAiB,CAAC;KAC5B,SAAS,CAAC,aAAa,CAAC;KACxB,SAAS,CAAC,aAAa,CAAC;KACxB,SAAS,CAAC,cAAc,CAAC;KACzB,SAAS,CAAC,kBAAkB,CAAC;KAC7B,SAAS,CAAC,WAAW,CAAC;KACtB,SAAS,CAAC,QAAQ,CAAC;KACnB,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,wDAAwD,CAAC;KACrE,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IACnC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjB,IAAI,CAAC,CAAC,CAAC,CAAC;AACV,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mxpicture/teslamate-extended-cli",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.61",
|
|
4
4
|
"description": "CLI to fetch + store Tesla Supercharger locations and pricing",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "MXPicture",
|
|
@@ -28,19 +28,21 @@
|
|
|
28
28
|
"scripts": {
|
|
29
29
|
"lint": "eslint \"src/**/*.ts\" --ext .ts --cache --cache-strategy content",
|
|
30
30
|
"lint:ci": "eslint \"src/**/*.ts\" --ext .ts --max-warnings=0",
|
|
31
|
-
"build": "tsc -b ."
|
|
31
|
+
"build": "tsc -b .",
|
|
32
|
+
"test": "tsc -b . && vitest run"
|
|
32
33
|
},
|
|
33
34
|
"publishConfig": {
|
|
34
35
|
"access": "public"
|
|
35
36
|
},
|
|
36
37
|
"dependencies": {
|
|
37
38
|
"@commander-js/extra-typings": "^14.0.0",
|
|
38
|
-
"@mxpicture/teslamate-extended-api": "^2.1.
|
|
39
|
+
"@mxpicture/teslamate-extended-api": "^2.1.61",
|
|
39
40
|
"commander": "^14.0.3"
|
|
40
41
|
},
|
|
41
42
|
"devDependencies": {
|
|
42
43
|
"@types/node": "^25.2.3",
|
|
43
44
|
"eslint": "^9.39.3",
|
|
44
|
-
"typescript": "^5.9.3"
|
|
45
|
+
"typescript": "^5.9.3",
|
|
46
|
+
"vitest": "^4.0.18"
|
|
45
47
|
}
|
|
46
48
|
}
|