@mxpicture/teslamate-extended-cli 2.1.61 → 3.1.2
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 +61 -77
- package/dist/cli.common.d.ts.map +1 -1
- package/dist/cli.common.js +171 -180
- package/dist/cli.common.js.map +1 -1
- package/dist/cli.d.ts +13 -7
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +30 -23
- package/dist/cli.js.map +1 -1
- package/package.json +2 -2
package/dist/cli.common.d.ts
CHANGED
|
@@ -1,56 +1,38 @@
|
|
|
1
1
|
import { Option } from "@commander-js/extra-typings";
|
|
2
|
-
import { type FetchOptions, type FetchScope } from "@mxpicture/teslamate-extended-api/api";
|
|
3
2
|
import { type IStore } from "@mxpicture/teslamate-extended-api/store";
|
|
4
3
|
/** Reads the CLI package version from its package.json. */
|
|
5
4
|
export declare const readVersion: () => string;
|
|
6
|
-
/** One day in milliseconds — the schedule interval. */
|
|
5
|
+
/** One day in milliseconds — the schedule interval and the cadence clock unit. */
|
|
7
6
|
export declare const DAY_MS: number;
|
|
8
7
|
/**
|
|
9
|
-
* Match radius (km) for
|
|
10
|
-
* given Supercharger when it sits within this distance of it.
|
|
11
|
-
* covers the gap between where the car parks and the site's
|
|
12
|
-
* staying well under the spacing between distinct sites.
|
|
8
|
+
* Match radius (km) for the outdated-price determination: a TeslaMate charge
|
|
9
|
+
* location maps to a given Supercharger when it sits within this distance of it.
|
|
10
|
+
* ~300 m comfortably covers the gap between where the car parks and the site's
|
|
11
|
+
* listed point while staying well under the spacing between distinct sites.
|
|
13
12
|
*/
|
|
14
13
|
export declare const CHARGED_MATCH_KM = 0.3;
|
|
15
|
-
/** Parses a non-negative float (e.g. --delay). */
|
|
14
|
+
/** Parses a non-negative float (e.g. --delay, --radius). */
|
|
16
15
|
export declare const parseFloatArg: (v: string) => number;
|
|
17
16
|
/** Parses a non-negative integer (e.g. --limit). */
|
|
18
17
|
export declare const parseIntArg: (v: string) => number;
|
|
18
|
+
/** Parses a positive integer number of days (e.g. --*-every, --outdated-age). */
|
|
19
|
+
export declare const parseDaysArg: (v: string) => number;
|
|
19
20
|
/** Validates an HH:MM (24h) time string (e.g. --at). */
|
|
20
21
|
export declare const parseTime: (v: string) => string;
|
|
21
|
-
/**
|
|
22
|
-
export declare const
|
|
23
|
-
|
|
24
|
-
|
|
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[];
|
|
22
|
+
/** Commander option: radius (km) around the TeslaMate "Home" geofence. */
|
|
23
|
+
export declare const radiusOption: Option<"-r, --radius <km>", undefined, undefined, number, false, undefined>;
|
|
24
|
+
/** Commander option: cadence (days) for the radius determination. */
|
|
25
|
+
export declare const radiusEveryOption: Option<"--radius-every <days>", undefined, 7, number, false, undefined>;
|
|
33
26
|
/** Commander option: restrict to a single country. */
|
|
34
27
|
export declare const countryOption: Option<"-c, --country <name>", undefined, undefined, undefined, false, undefined>;
|
|
35
|
-
/** Commander option:
|
|
36
|
-
export declare const
|
|
37
|
-
/** Commander option:
|
|
38
|
-
export declare const
|
|
39
|
-
/** Commander option:
|
|
40
|
-
export declare const
|
|
41
|
-
|
|
42
|
-
|
|
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>;
|
|
28
|
+
/** Commander option: cadence (days) for the country determination. */
|
|
29
|
+
export declare const countryEveryOption: Option<"--country-every <days>", undefined, 30, number, false, undefined>;
|
|
30
|
+
/** Commander option: enable the missing/outdated-price determination. */
|
|
31
|
+
export declare const outdatedOption: Option<"--outdated", undefined, undefined, undefined, false, undefined>;
|
|
32
|
+
/** Commander option: cadence (days) for the outdated determination. */
|
|
33
|
+
export declare const outdatedEveryOption: Option<"--outdated-every <days>", undefined, 1, number, false, undefined>;
|
|
34
|
+
/** Commander option: age (days) past which a managed geofence's price is "outdated". */
|
|
35
|
+
export declare const outdatedAgeOption: Option<"--outdated-age <days>", undefined, 30, number, false, undefined>;
|
|
54
36
|
/** Commander option: pricing locale. */
|
|
55
37
|
export declare const localeOption: Option<"-l, --locale <locale>", undefined, "en-US", undefined, false, undefined>;
|
|
56
38
|
/** Commander option: politeness delay between requests (seconds). */
|
|
@@ -69,27 +51,29 @@ export declare const httpUrlOption: Option<"--http-url <url>", undefined, undefi
|
|
|
69
51
|
export declare const httpUserOption: Option<"--http-user <user>", undefined, undefined, undefined, false, undefined>;
|
|
70
52
|
/** Commander option: Basic-auth password for --http-url. */
|
|
71
53
|
export declare const httpPasswordOption: Option<"--http-password <password>", undefined, undefined, undefined, false, undefined>;
|
|
72
|
-
/** Commander option:
|
|
73
|
-
export declare const
|
|
54
|
+
/** Commander option: also upsert each fetched Supercharger as a TeslaMate geofence. */
|
|
55
|
+
export declare const geofencesOption: Option<"--teslamate-geofences", undefined, undefined, undefined, false, undefined>;
|
|
56
|
+
/** Commander option: backfill TeslaMate charge costs from the managed geofence prices. */
|
|
57
|
+
export declare const chargesOption: Option<"--teslamate-charges", undefined, undefined, undefined, false, undefined>;
|
|
74
58
|
/**
|
|
75
59
|
* Commander option: route tesla.com requests through a proxy. Sets
|
|
76
60
|
* HTTPS_PROXY/ALL_PROXY for the curl subprocess (which already honors them when
|
|
77
61
|
* set in the environment). Use this to escape datacenter IPs Akamai 403s.
|
|
78
62
|
*/
|
|
79
63
|
export declare const proxyOption: Option<"--proxy <url>", undefined, undefined, undefined, false, undefined>;
|
|
64
|
+
/** Commander option: daily run time for `schedule` (24h, local). */
|
|
65
|
+
export declare const atOption: Option<"-t, --at <HH:MM>", undefined, "03:30", string, false, undefined>;
|
|
80
66
|
/** Options common to `fetch` and `schedule`. */
|
|
81
67
|
export interface CommonOpts {
|
|
82
|
-
country?: string;
|
|
83
|
-
region?: string;
|
|
84
|
-
all?: boolean;
|
|
85
|
-
near?: {
|
|
86
|
-
lat: number;
|
|
87
|
-
lon: number;
|
|
88
|
-
};
|
|
89
68
|
radius?: number;
|
|
90
|
-
|
|
91
|
-
|
|
69
|
+
radiusEvery: number;
|
|
70
|
+
country?: string;
|
|
71
|
+
countryEvery: number;
|
|
72
|
+
outdated?: boolean;
|
|
73
|
+
outdatedEvery: number;
|
|
74
|
+
outdatedAge: number;
|
|
92
75
|
teslamateGeofences?: boolean;
|
|
76
|
+
teslamateCharges?: boolean;
|
|
93
77
|
locale: string;
|
|
94
78
|
delay: number;
|
|
95
79
|
limit: number;
|
|
@@ -101,25 +85,10 @@ export interface CommonOpts {
|
|
|
101
85
|
httpPassword?: string;
|
|
102
86
|
proxy?: string;
|
|
103
87
|
}
|
|
104
|
-
/** `schedule` options: the common ones plus the daily run time
|
|
88
|
+
/** `schedule` options: the common ones plus the daily run time. */
|
|
105
89
|
export type ScheduleOpts = CommonOpts & {
|
|
106
90
|
at: string;
|
|
107
|
-
tier: Tier[];
|
|
108
91
|
};
|
|
109
|
-
/** Resolves the single scope flag (exactly one of country/region/all/near). */
|
|
110
|
-
export declare const toScope: (o: CommonOpts) => FetchScope;
|
|
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;
|
|
123
92
|
/** Builds the sinks the user asked for (CLI flag or env). At least one required. */
|
|
124
93
|
export declare const buildStores: (o: CommonOpts) => IStore[];
|
|
125
94
|
/**
|
|
@@ -128,21 +97,36 @@ export declare const buildStores: (o: CommonOpts) => IStore[];
|
|
|
128
97
|
* env the process already has is left untouched.
|
|
129
98
|
*/
|
|
130
99
|
export declare const applyProxy: (o: CommonOpts) => void;
|
|
131
|
-
/**
|
|
132
|
-
export
|
|
133
|
-
/**
|
|
100
|
+
/** A Supercharger-selection method and how often (in days) it runs. */
|
|
101
|
+
export type DeterminationKind = "radius" | "country" | "outdated";
|
|
102
|
+
/** One enabled determination with its day-based cadence. */
|
|
103
|
+
export interface Determination {
|
|
104
|
+
kind: DeterminationKind;
|
|
105
|
+
everyDays: number;
|
|
106
|
+
}
|
|
107
|
+
/** The determinations the user enabled (at least one is required). */
|
|
108
|
+
export declare const buildDeterminations: (o: CommonOpts) => Determination[];
|
|
109
|
+
/**
|
|
110
|
+
* True when a determination with this cadence is due on `date`. Cadence is
|
|
111
|
+
* date-driven — `epochDay % everyDays === 0`, where epochDay is whole days since
|
|
112
|
+
* the Unix epoch (UTC) — so it survives restarts, with `7` landing on a fixed
|
|
113
|
+
* weekday and `30` meaning every 30 days.
|
|
114
|
+
*/
|
|
115
|
+
export declare const isDue: (everyDays: number, date: Date) => boolean;
|
|
116
|
+
/** The subset of `dets` whose cadence is due on `date`. */
|
|
117
|
+
export declare const dueDeterminations: (dets: Determination[], date: Date) => Determination[];
|
|
118
|
+
/**
|
|
119
|
+
* Run the given determinations as ONE snapshot: take the union of their target
|
|
120
|
+
* Superchargers (selected from the cached master list), fetch each site's pricing
|
|
121
|
+
* once, then fan the records out to the configured sinks. The union + de-dupe is
|
|
122
|
+
* what keeps requests down — a site several determinations want is fetched once.
|
|
123
|
+
*/
|
|
124
|
+
export declare const runDeterminations: (o: CommonOpts, dets: Determination[]) => Promise<void>;
|
|
125
|
+
/** `fetch` command: run every enabled determination once (ignoring cadence), then exit. */
|
|
134
126
|
export declare const runFetch: (o: CommonOpts) => Promise<void>;
|
|
135
127
|
/** ms from now until the next HH:MM (local); rolls to tomorrow if already passed. */
|
|
136
128
|
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;
|
|
145
|
-
/** Runs once on start, then every day at o.at — keeping the process alive. */
|
|
129
|
+
/** Runs the due determinations on start, then every day at o.at — keeping the process alive. */
|
|
146
130
|
export declare const scheduleDaily: (o: ScheduleOpts) => Promise<void>;
|
|
147
131
|
/** Prints the countries and regions that have Superchargers. */
|
|
148
132
|
export declare const listCountries: () => Promise<void>;
|
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;
|
|
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,23 +3,23 @@ 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,
|
|
7
|
-
import { HttpStore,
|
|
6
|
+
import { fetchAllLocations, fetchHomeGeofence, fetchOutdatedChargeSites, fetchRecordsForLocations, inScope, isSupercharger, } from "@mxpicture/teslamate-extended-api/api";
|
|
7
|
+
import { HttpStore, ingestRecords, JsonFileStore, PostgresStore, TeslaMateChargeStore, 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
|
-
/** One day in milliseconds — the schedule interval. */
|
|
12
|
+
/** One day in milliseconds — the schedule interval and the cadence clock unit. */
|
|
13
13
|
export const DAY_MS = 24 * 60 * 60 * 1000;
|
|
14
14
|
/**
|
|
15
|
-
* Match radius (km) for
|
|
16
|
-
* given Supercharger when it sits within this distance of it.
|
|
17
|
-
* covers the gap between where the car parks and the site's
|
|
18
|
-
* staying well under the spacing between distinct sites.
|
|
15
|
+
* Match radius (km) for the outdated-price determination: a TeslaMate charge
|
|
16
|
+
* location maps to a given Supercharger when it sits within this distance of it.
|
|
17
|
+
* ~300 m comfortably covers the gap between where the car parks and the site's
|
|
18
|
+
* listed point while staying well under the spacing between distinct sites.
|
|
19
19
|
*/
|
|
20
20
|
export const CHARGED_MATCH_KM = 0.3;
|
|
21
21
|
// ---------- argument parsers ----------
|
|
22
|
-
/** Parses a non-negative float (e.g. --delay). */
|
|
22
|
+
/** Parses a non-negative float (e.g. --delay, --radius). */
|
|
23
23
|
export const parseFloatArg = (v) => {
|
|
24
24
|
const n = Number(v);
|
|
25
25
|
if (!Number.isFinite(n) || n < 0)
|
|
@@ -33,54 +33,46 @@ export const parseIntArg = (v) => {
|
|
|
33
33
|
throw new InvalidArgumentError("must be a non-negative integer");
|
|
34
34
|
return n;
|
|
35
35
|
};
|
|
36
|
+
/** Parses a positive integer number of days (e.g. --*-every, --outdated-age). */
|
|
37
|
+
export const parseDaysArg = (v) => {
|
|
38
|
+
const n = parseInt(v, 10);
|
|
39
|
+
if (!Number.isInteger(n) || n < 1)
|
|
40
|
+
throw new InvalidArgumentError("must be a positive integer (>= 1)");
|
|
41
|
+
return n;
|
|
42
|
+
};
|
|
36
43
|
/** Validates an HH:MM (24h) time string (e.g. --at). */
|
|
37
44
|
export const parseTime = (v) => {
|
|
38
45
|
if (!/^([01]\d|2[0-3]):[0-5]\d$/.test(v))
|
|
39
46
|
throw new InvalidArgumentError("expected HH:MM (24h)");
|
|
40
47
|
return v;
|
|
41
48
|
};
|
|
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
|
-
};
|
|
63
49
|
// ---------- commander options ----------
|
|
50
|
+
// --- determination: radius from the TeslaMate Home geofence ---
|
|
51
|
+
/** Commander option: radius (km) around the TeslaMate "Home" geofence. */
|
|
52
|
+
export const radiusOption = new Option("-r, --radius <km>", "Determination: fetch Superchargers within this many km of the TeslaMate 'Home' geofence").argParser(parseFloatArg);
|
|
53
|
+
/** Commander option: cadence (days) for the radius determination. */
|
|
54
|
+
export const radiusEveryOption = new Option("--radius-every <days>", "Run the radius determination every N days")
|
|
55
|
+
.default(7)
|
|
56
|
+
.argParser(parseDaysArg);
|
|
57
|
+
// --- determination: by country ---
|
|
64
58
|
/** Commander option: restrict to a single country. */
|
|
65
|
-
export const countryOption = new Option("-c, --country <name>", "
|
|
66
|
-
/** Commander option:
|
|
67
|
-
export const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
.
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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");
|
|
59
|
+
export const countryOption = new Option("-c, --country <name>", "Determination: fetch Superchargers in this country");
|
|
60
|
+
/** Commander option: cadence (days) for the country determination. */
|
|
61
|
+
export const countryEveryOption = new Option("--country-every <days>", "Run the country determination every N days")
|
|
62
|
+
.default(30)
|
|
63
|
+
.argParser(parseDaysArg);
|
|
64
|
+
// --- determination: missing/outdated price ---
|
|
65
|
+
/** Commander option: enable the missing/outdated-price determination. */
|
|
66
|
+
export const outdatedOption = new Option("--outdated", "Determination: fetch Superchargers whose TeslaMate price is missing or outdated; needs --postgres-url");
|
|
67
|
+
/** Commander option: cadence (days) for the outdated determination. */
|
|
68
|
+
export const outdatedEveryOption = new Option("--outdated-every <days>", "Run the outdated-price determination every N days")
|
|
69
|
+
.default(1)
|
|
70
|
+
.argParser(parseDaysArg);
|
|
71
|
+
/** Commander option: age (days) past which a managed geofence's price is "outdated". */
|
|
72
|
+
export const outdatedAgeOption = new Option("--outdated-age <days>", "A managed geofence's price counts as outdated once older than this many days")
|
|
73
|
+
.default(30)
|
|
74
|
+
.argParser(parseDaysArg);
|
|
75
|
+
// --- pricing / pacing ---
|
|
84
76
|
/** Commander option: pricing locale. */
|
|
85
77
|
export const localeOption = new Option("-l, --locale <locale>", "Locale for pricing").default("en-US");
|
|
86
78
|
/** Commander option: politeness delay between requests (seconds). */
|
|
@@ -91,6 +83,7 @@ export const delayOption = new Option("-d, --delay <seconds>", "Delay between re
|
|
|
91
83
|
export const limitOption = new Option("-n, --limit <count>", "Cap number of sites")
|
|
92
84
|
.default(0)
|
|
93
85
|
.argParser(parseIntArg);
|
|
86
|
+
// --- sinks ---
|
|
94
87
|
/** Commander option: JSON snapshot output directory. */
|
|
95
88
|
export const outOption = new Option("-o, --out <dir>", "Write JSON snapshots to this directory (env SUPERCHARGERS_OUT_DIR)");
|
|
96
89
|
/** Commander option: Postgres connection URL. */
|
|
@@ -103,37 +96,21 @@ export const httpUrlOption = new Option("--http-url <url>", "Push snapshots to t
|
|
|
103
96
|
export const httpUserOption = new Option("--http-user <user>", "Basic-auth username for --http-url (env SUPERCHARGERS_HTTP_USER)");
|
|
104
97
|
/** Commander option: Basic-auth password for --http-url. */
|
|
105
98
|
export const httpPasswordOption = new Option("--http-password <password>", "Basic-auth password for --http-url (env SUPERCHARGERS_HTTP_PASSWORD)");
|
|
106
|
-
/** Commander option:
|
|
107
|
-
export const
|
|
108
|
-
|
|
109
|
-
|
|
99
|
+
/** Commander option: also upsert each fetched Supercharger as a TeslaMate geofence. */
|
|
100
|
+
export const geofencesOption = new Option("--teslamate-geofences", "Upsert each fetched Supercharger as a TeslaMate geofence (name + price); needs --postgres-url");
|
|
101
|
+
/** Commander option: backfill TeslaMate charge costs from the managed geofence prices. */
|
|
102
|
+
export const chargesOption = new Option("--teslamate-charges", "Backfill TeslaMate charge costs from the managed geofence prices (implies --teslamate-geofences); needs --postgres-url");
|
|
103
|
+
// --- transport / scheduling ---
|
|
110
104
|
/**
|
|
111
105
|
* Commander option: route tesla.com requests through a proxy. Sets
|
|
112
106
|
* HTTPS_PROXY/ALL_PROXY for the curl subprocess (which already honors them when
|
|
113
107
|
* set in the environment). Use this to escape datacenter IPs Akamai 403s.
|
|
114
108
|
*/
|
|
115
109
|
export const proxyOption = new Option("--proxy <url>", "Route requests through this proxy (env HTTPS_PROXY / ALL_PROXY also honored)");
|
|
116
|
-
/**
|
|
117
|
-
export const
|
|
118
|
-
|
|
119
|
-
|
|
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
|
-
};
|
|
110
|
+
/** Commander option: daily run time for `schedule` (24h, local). */
|
|
111
|
+
export const atOption = new Option("-t, --at <HH:MM>", "Daily run time (24h, local)")
|
|
112
|
+
.default("03:30")
|
|
113
|
+
.argParser(parseTime);
|
|
137
114
|
/** pgUrl from --postgres-url or env; errors out when a flag needs it and it's absent. */
|
|
138
115
|
const requirePgUrl = (o, flag) => {
|
|
139
116
|
const pgUrl = o.postgresUrl ?? env.SUPERCHARGERS_PG_URL;
|
|
@@ -143,64 +120,8 @@ const requirePgUrl = (o, flag) => {
|
|
|
143
120
|
}
|
|
144
121
|
return pgUrl;
|
|
145
122
|
};
|
|
146
|
-
/**
|
|
147
|
-
|
|
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);
|
|
175
|
-
if (picked.length !== 1) {
|
|
176
|
-
console.error("Pick exactly one scope: --country | --region | --all | --near | --home-from-teslamate | --charged.");
|
|
177
|
-
exit(1);
|
|
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
|
-
}
|
|
192
|
-
return { country: o.country, region: o.region, all: o.all };
|
|
193
|
-
};
|
|
194
|
-
/** Maps CLI options to the api fetch options, optionally with an explicit scope. */
|
|
195
|
-
export const toFetchOptions = (o, scope) => {
|
|
196
|
-
return {
|
|
197
|
-
scope: scope ?? toScope(o),
|
|
198
|
-
locale: o.locale,
|
|
199
|
-
delayMs: o.delay * 1000,
|
|
200
|
-
limit: o.limit,
|
|
201
|
-
logger: (m) => console.log(m),
|
|
202
|
-
};
|
|
203
|
-
};
|
|
123
|
+
/** Directory the ~30 MB /all-locations download is cached in (so it's read monthly). */
|
|
124
|
+
const cacheDir = (o) => env.SUPERCHARGERS_CACHE_DIR ?? o.out ?? env.SUPERCHARGERS_OUT_DIR;
|
|
204
125
|
/** Builds the sinks the user asked for (CLI flag or env). At least one required. */
|
|
205
126
|
export const buildStores = (o) => {
|
|
206
127
|
const stores = [];
|
|
@@ -217,14 +138,20 @@ export const buildStores = (o) => {
|
|
|
217
138
|
username: o.httpUser ?? env.SUPERCHARGERS_HTTP_USER,
|
|
218
139
|
password: o.httpPassword ?? env.SUPERCHARGERS_HTTP_PASSWORD,
|
|
219
140
|
}));
|
|
220
|
-
|
|
141
|
+
// --teslamate-charges costs charges from the managed geofence prices, so it
|
|
142
|
+
// implies --teslamate-geofences; the geofence store must also run first.
|
|
143
|
+
if (o.teslamateGeofences || o.teslamateCharges)
|
|
221
144
|
stores.push(new TeslaMateGeofenceStore({
|
|
222
145
|
connectionString: requirePgUrl(o, "--teslamate-geofences"),
|
|
223
146
|
}));
|
|
147
|
+
if (o.teslamateCharges)
|
|
148
|
+
stores.push(new TeslaMateChargeStore({
|
|
149
|
+
connectionString: requirePgUrl(o, "--teslamate-charges"),
|
|
150
|
+
}));
|
|
224
151
|
if (stores.length === 0) {
|
|
225
|
-
console.error("No output configured. Pass --out <dir>, --postgres-url <url>,
|
|
226
|
-
"--http-url <url
|
|
227
|
-
"/ SUPERCHARGERS_HTTP_URL).");
|
|
152
|
+
console.error("No output configured. Pass --out <dir>, --postgres-url <url>, " +
|
|
153
|
+
"--http-url <url>, --teslamate-geofences and/or --teslamate-charges " +
|
|
154
|
+
"(or set SUPERCHARGERS_OUT_DIR / SUPERCHARGERS_PG_URL / SUPERCHARGERS_HTTP_URL).");
|
|
228
155
|
exit(1);
|
|
229
156
|
}
|
|
230
157
|
return stores;
|
|
@@ -240,13 +167,105 @@ export const applyProxy = (o) => {
|
|
|
240
167
|
env.HTTPS_PROXY = o.proxy;
|
|
241
168
|
env.ALL_PROXY = o.proxy;
|
|
242
169
|
};
|
|
243
|
-
/**
|
|
244
|
-
export const
|
|
170
|
+
/** The determinations the user enabled (at least one is required). */
|
|
171
|
+
export const buildDeterminations = (o) => {
|
|
172
|
+
const dets = [];
|
|
173
|
+
if (o.radius !== undefined)
|
|
174
|
+
dets.push({ kind: "radius", everyDays: o.radiusEvery });
|
|
175
|
+
if (o.country)
|
|
176
|
+
dets.push({ kind: "country", everyDays: o.countryEvery });
|
|
177
|
+
if (o.outdated)
|
|
178
|
+
dets.push({ kind: "outdated", everyDays: o.outdatedEvery });
|
|
179
|
+
if (dets.length === 0) {
|
|
180
|
+
console.error("Enable at least one determination: --radius <km>, --country <name>, and/or --outdated.");
|
|
181
|
+
exit(1);
|
|
182
|
+
}
|
|
183
|
+
return dets;
|
|
184
|
+
};
|
|
185
|
+
/**
|
|
186
|
+
* True when a determination with this cadence is due on `date`. Cadence is
|
|
187
|
+
* date-driven — `epochDay % everyDays === 0`, where epochDay is whole days since
|
|
188
|
+
* the Unix epoch (UTC) — so it survives restarts, with `7` landing on a fixed
|
|
189
|
+
* weekday and `30` meaning every 30 days.
|
|
190
|
+
*/
|
|
191
|
+
export const isDue = (everyDays, date) => Math.floor(date.getTime() / DAY_MS) % everyDays === 0;
|
|
192
|
+
/** The subset of `dets` whose cadence is due on `date`. */
|
|
193
|
+
export const dueDeterminations = (dets, date) => dets.filter((d) => isDue(d.everyDays, date));
|
|
194
|
+
/**
|
|
195
|
+
* The fetch scope for one determination, or null to skip it this run:
|
|
196
|
+
* - radius: centered on the TeslaMate "Home" geofence; skipped with a warning
|
|
197
|
+
* when no Home geofence exists (radius-based selection is ignored).
|
|
198
|
+
* - country: a plain country match.
|
|
199
|
+
* - outdated: the charge sites whose managed price is missing/outdated, matched
|
|
200
|
+
* to Superchargers (skipped when there are none).
|
|
201
|
+
*/
|
|
202
|
+
const scopeForDetermination = async (det, o) => {
|
|
203
|
+
if (det.kind === "country")
|
|
204
|
+
return { country: o.country };
|
|
205
|
+
if (det.kind === "radius") {
|
|
206
|
+
if (o.radius === undefined)
|
|
207
|
+
return null;
|
|
208
|
+
const home = await fetchHomeGeofence(requirePgUrl(o, "--radius"));
|
|
209
|
+
if (!home) {
|
|
210
|
+
console.warn("No TeslaMate 'Home' geofence found (name ILIKE 'home'); skipping the radius determination.");
|
|
211
|
+
return null;
|
|
212
|
+
}
|
|
213
|
+
console.log(`Home geofence center: ${home.lat},${home.lon}.`);
|
|
214
|
+
return { near: { lat: home.lat, lon: home.lon, radiusKm: o.radius } };
|
|
215
|
+
}
|
|
216
|
+
// outdated
|
|
217
|
+
const sites = await fetchOutdatedChargeSites(requirePgUrl(o, "--outdated"), {
|
|
218
|
+
outdatedAgeDays: o.outdatedAge,
|
|
219
|
+
});
|
|
220
|
+
console.log(`Found ${sites.length} charge sites with missing/outdated pricing.`);
|
|
221
|
+
if (sites.length === 0)
|
|
222
|
+
return null;
|
|
223
|
+
return { nearAny: { points: sites, radiusKm: CHARGED_MATCH_KM } };
|
|
224
|
+
};
|
|
225
|
+
/**
|
|
226
|
+
* Run the given determinations as ONE snapshot: take the union of their target
|
|
227
|
+
* Superchargers (selected from the cached master list), fetch each site's pricing
|
|
228
|
+
* once, then fan the records out to the configured sinks. The union + de-dupe is
|
|
229
|
+
* what keeps requests down — a site several determinations want is fetched once.
|
|
230
|
+
*/
|
|
231
|
+
export const runDeterminations = async (o, dets) => {
|
|
245
232
|
applyProxy(o);
|
|
246
|
-
|
|
233
|
+
// Build (and thereby validate) the sinks up front — before the expensive
|
|
234
|
+
// fetch — so a misconfigured run fails fast instead of after downloading
|
|
235
|
+
// everything; the `finally` always closes them.
|
|
247
236
|
const stores = buildStores(o);
|
|
237
|
+
const logger = (m) => console.log(m);
|
|
248
238
|
try {
|
|
249
|
-
const
|
|
239
|
+
const dir = cacheDir(o);
|
|
240
|
+
const all = (await fetchAllLocations(logger, dir ? { cacheDir: dir } : undefined)).filter(isSupercharger);
|
|
241
|
+
logger(` -> ${all.length} are Superchargers.`);
|
|
242
|
+
const targets = new Map();
|
|
243
|
+
for (const det of dets) {
|
|
244
|
+
const scope = await scopeForDetermination(det, o);
|
|
245
|
+
if (!scope)
|
|
246
|
+
continue;
|
|
247
|
+
let n = 0;
|
|
248
|
+
for (const loc of all) {
|
|
249
|
+
if (!inScope(loc, scope))
|
|
250
|
+
continue;
|
|
251
|
+
targets.set(loc.location_id ?? `${loc.latitude},${loc.longitude}`, loc);
|
|
252
|
+
n++;
|
|
253
|
+
}
|
|
254
|
+
logger(`Determination '${det.kind}': ${n} Superchargers.`);
|
|
255
|
+
}
|
|
256
|
+
let list = [...targets.values()];
|
|
257
|
+
if (o.limit)
|
|
258
|
+
list = list.slice(0, o.limit);
|
|
259
|
+
if (list.length === 0) {
|
|
260
|
+
logger("No Superchargers to fetch; nothing to do.");
|
|
261
|
+
return;
|
|
262
|
+
}
|
|
263
|
+
const records = await fetchRecordsForLocations(list, {
|
|
264
|
+
locale: o.locale,
|
|
265
|
+
delayMs: o.delay * 1000,
|
|
266
|
+
logger,
|
|
267
|
+
});
|
|
268
|
+
const res = await ingestRecords(records, stores);
|
|
250
269
|
console.log(`Saved ${res.count} Superchargers (run ${res.runId}, ` +
|
|
251
270
|
`${res.fetchedAt.toISOString()}).`);
|
|
252
271
|
}
|
|
@@ -255,9 +274,9 @@ export const runOnce = async (o, scope) => {
|
|
|
255
274
|
await s.close?.();
|
|
256
275
|
}
|
|
257
276
|
};
|
|
258
|
-
/** `fetch` command:
|
|
277
|
+
/** `fetch` command: run every enabled determination once (ignoring cadence), then exit. */
|
|
259
278
|
export const runFetch = async (o) => {
|
|
260
|
-
await
|
|
279
|
+
await runDeterminations(o, buildDeterminations(o));
|
|
261
280
|
};
|
|
262
281
|
/** ms from now until the next HH:MM (local); rolls to tomorrow if already passed. */
|
|
263
282
|
export const msUntil = (at) => {
|
|
@@ -269,47 +288,18 @@ export const msUntil = (at) => {
|
|
|
269
288
|
next.setTime(next.getTime() + DAY_MS);
|
|
270
289
|
return next.getTime() - now.getTime();
|
|
271
290
|
};
|
|
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
|
-
};
|
|
286
|
-
/** Runs once on start, then every day at o.at — keeping the process alive. */
|
|
291
|
+
/** Runs the due determinations on start, then every day at o.at — keeping the process alive. */
|
|
287
292
|
export const scheduleDaily = async (o) => {
|
|
288
|
-
const
|
|
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;
|
|
293
|
+
const dets = buildDeterminations(o);
|
|
295
294
|
const safeRun = async () => {
|
|
295
|
+
const due = dueDeterminations(dets, new Date());
|
|
296
|
+
if (due.length === 0) {
|
|
297
|
+
console.log("No determination due today; skipping run.");
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
console.log(`Determinations due today: ${due.map((d) => d.kind).join(", ")}.`);
|
|
296
301
|
try {
|
|
297
|
-
|
|
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
|
-
}
|
|
302
|
+
await runDeterminations(o, due);
|
|
313
303
|
}
|
|
314
304
|
catch (e) {
|
|
315
305
|
console.error("Run failed:", e instanceof Error ? e.message : e);
|
|
@@ -328,7 +318,8 @@ export const scheduleDaily = async (o) => {
|
|
|
328
318
|
};
|
|
329
319
|
/** Prints the countries and regions that have Superchargers. */
|
|
330
320
|
export const listCountries = async () => {
|
|
331
|
-
const
|
|
321
|
+
const dir = env.SUPERCHARGERS_CACHE_DIR ?? env.SUPERCHARGERS_OUT_DIR;
|
|
322
|
+
const locations = (await fetchAllLocations(undefined, dir ? { cacheDir: dir } : undefined)).filter(isSupercharger);
|
|
332
323
|
const countries = [
|
|
333
324
|
...new Set(locations.map((l) => l.country).filter(Boolean)),
|
|
334
325
|
].sort();
|
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.d.ts
CHANGED
|
@@ -2,17 +2,23 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* teslamate-superchargers
|
|
4
4
|
* =======================
|
|
5
|
-
* Fetch
|
|
5
|
+
* Fetch Tesla Supercharger locations + pricing (via the public tesla.com
|
|
6
6
|
* endpoints, see `@mxpicture/teslamate-extended-api`) and persist each run as a
|
|
7
|
-
* dated snapshot — to JSON files and/or
|
|
8
|
-
* under its own timestamp, repeated runs build a price history.
|
|
7
|
+
* dated snapshot — to JSON files, PostgreSQL and/or TeslaMate. Because every run
|
|
8
|
+
* is stored under its own timestamp, repeated runs build a price history.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
10
|
+
* Which Superchargers to fetch is chosen by one or more "determinations", each
|
|
11
|
+
* with its own day-based cadence:
|
|
12
|
+
* --radius <km> within km of the TeslaMate "Home" geofence (--radius-every)
|
|
13
|
+
* --country <name> every Supercharger in a country (--country-every)
|
|
14
|
+
* --outdated sites whose TeslaMate price is missing/old (--outdated-every)
|
|
15
|
+
*
|
|
16
|
+
* teslamate-superchargers fetch --country Germany --out ./data
|
|
17
|
+
* teslamate-superchargers schedule --radius 100 --outdated --postgres-url "$PG_URL"
|
|
12
18
|
* teslamate-superchargers list-countries
|
|
13
19
|
*
|
|
14
|
-
* The `schedule` command runs
|
|
15
|
-
* process alive — so a single container
|
|
20
|
+
* The `schedule` command runs the due determinations on start and then daily at
|
|
21
|
+
* --at, keeping the process alive — so a single container refreshes the data.
|
|
16
22
|
*/
|
|
17
23
|
export {};
|
|
18
24
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;GAoBG"}
|
package/dist/cli.js
CHANGED
|
@@ -2,36 +2,43 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* teslamate-superchargers
|
|
4
4
|
* =======================
|
|
5
|
-
* Fetch
|
|
5
|
+
* Fetch Tesla Supercharger locations + pricing (via the public tesla.com
|
|
6
6
|
* endpoints, see `@mxpicture/teslamate-extended-api`) and persist each run as a
|
|
7
|
-
* dated snapshot — to JSON files and/or
|
|
8
|
-
* under its own timestamp, repeated runs build a price history.
|
|
7
|
+
* dated snapshot — to JSON files, PostgreSQL and/or TeslaMate. Because every run
|
|
8
|
+
* is stored under its own timestamp, repeated runs build a price history.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
10
|
+
* Which Superchargers to fetch is chosen by one or more "determinations", each
|
|
11
|
+
* with its own day-based cadence:
|
|
12
|
+
* --radius <km> within km of the TeslaMate "Home" geofence (--radius-every)
|
|
13
|
+
* --country <name> every Supercharger in a country (--country-every)
|
|
14
|
+
* --outdated sites whose TeslaMate price is missing/old (--outdated-every)
|
|
15
|
+
*
|
|
16
|
+
* teslamate-superchargers fetch --country Germany --out ./data
|
|
17
|
+
* teslamate-superchargers schedule --radius 100 --outdated --postgres-url "$PG_URL"
|
|
12
18
|
* teslamate-superchargers list-countries
|
|
13
19
|
*
|
|
14
|
-
* The `schedule` command runs
|
|
15
|
-
* process alive — so a single container
|
|
20
|
+
* The `schedule` command runs the due determinations on start and then daily at
|
|
21
|
+
* --at, keeping the process alive — so a single container refreshes the data.
|
|
16
22
|
*/
|
|
17
23
|
import { program } from "@commander-js/extra-typings";
|
|
18
24
|
import { argv, exit } from "node:process";
|
|
19
|
-
import {
|
|
25
|
+
import { atOption, chargesOption, countryEveryOption, countryOption, delayOption, geofencesOption, httpPasswordOption, httpUrlOption, httpUserOption, limitOption, listCountries, localeOption, outdatedAgeOption, outdatedEveryOption, outdatedOption, outOption, pgTableOption, postgresUrlOption, proxyOption, radiusEveryOption, radiusOption, readVersion, runFetch, scheduleDaily, } from "./cli.common.js";
|
|
20
26
|
program
|
|
21
27
|
.name("teslamate-superchargers")
|
|
22
28
|
.version(readVersion())
|
|
23
29
|
.description("Fetch + store Tesla Supercharger locations and pricing");
|
|
24
30
|
program
|
|
25
31
|
.command("fetch")
|
|
26
|
-
.description("
|
|
27
|
-
.addOption(countryOption)
|
|
28
|
-
.addOption(regionOption)
|
|
29
|
-
.addOption(allOption)
|
|
30
|
-
.addOption(nearOption)
|
|
32
|
+
.description("Run every enabled determination once and store it, then exit")
|
|
31
33
|
.addOption(radiusOption)
|
|
32
|
-
.addOption(
|
|
33
|
-
.addOption(
|
|
34
|
+
.addOption(radiusEveryOption)
|
|
35
|
+
.addOption(countryOption)
|
|
36
|
+
.addOption(countryEveryOption)
|
|
37
|
+
.addOption(outdatedOption)
|
|
38
|
+
.addOption(outdatedEveryOption)
|
|
39
|
+
.addOption(outdatedAgeOption)
|
|
34
40
|
.addOption(geofencesOption)
|
|
41
|
+
.addOption(chargesOption)
|
|
35
42
|
.addOption(localeOption)
|
|
36
43
|
.addOption(delayOption)
|
|
37
44
|
.addOption(limitOption)
|
|
@@ -45,16 +52,16 @@ program
|
|
|
45
52
|
.action((o) => runFetch(o));
|
|
46
53
|
program
|
|
47
54
|
.command("schedule")
|
|
48
|
-
.description("
|
|
49
|
-
.addOption(countryOption)
|
|
50
|
-
.addOption(regionOption)
|
|
51
|
-
.addOption(allOption)
|
|
52
|
-
.addOption(nearOption)
|
|
55
|
+
.description("Run the due determinations now, then daily at --at (keeps running)")
|
|
53
56
|
.addOption(radiusOption)
|
|
54
|
-
.addOption(
|
|
55
|
-
.addOption(
|
|
56
|
-
.addOption(
|
|
57
|
+
.addOption(radiusEveryOption)
|
|
58
|
+
.addOption(countryOption)
|
|
59
|
+
.addOption(countryEveryOption)
|
|
60
|
+
.addOption(outdatedOption)
|
|
61
|
+
.addOption(outdatedEveryOption)
|
|
62
|
+
.addOption(outdatedAgeOption)
|
|
57
63
|
.addOption(geofencesOption)
|
|
64
|
+
.addOption(chargesOption)
|
|
58
65
|
.addOption(localeOption)
|
|
59
66
|
.addOption(delayOption)
|
|
60
67
|
.addOption(limitOption)
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mxpicture/teslamate-extended-cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.1.2",
|
|
4
4
|
"description": "CLI to fetch + store Tesla Supercharger locations and pricing",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "MXPicture",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@commander-js/extra-typings": "^14.0.0",
|
|
39
|
-
"@mxpicture/teslamate-extended-api": "^
|
|
39
|
+
"@mxpicture/teslamate-extended-api": "^3.1.2",
|
|
40
40
|
"commander": "^14.0.3"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|