diff --git a/src/index.ts b/src/index.ts index 765ac5b..b43bb4e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,4 +17,5 @@ export { RetryableSignedCommandFaultError, } from "./signing/errors.js"; export { getTariffPeriods } from "./tariff.js"; +export { Models } from "./types/vehicle.js"; export type { TariffRate, TariffPeriod, TariffResolution } from "./tariff.js"; diff --git a/src/types/vehicle.ts b/src/types/vehicle.ts index d46fa9d..e56e19f 100644 --- a/src/types/vehicle.ts +++ b/src/types/vehicle.ts @@ -21,3 +21,13 @@ export type VehicleResponse = { export type GranularAccess = { hide_private: boolean; }; + +export const Models: Record = { + S: "Model S", + "3": "Model 3", + X: "Model X", + Y: "Model Y", + C: "Cybertruck", + T: "Semi", + A: "Cybercab", +}; diff --git a/src/vehicle.ts b/src/vehicle.ts index e09b92d..83e5537 100644 --- a/src/vehicle.ts +++ b/src/vehicle.ts @@ -1,21 +1,11 @@ import TeslaFleetApi from "./teslafleetapi.js"; import { ClimateMode, ClimateModes, CommandResponse, FleetTelemetryConfig, Level, Seat, Seats, Trunk, VehicleDataEndpoint } from "./types/commands.js"; import { OptionsResponse } from "./types/responses.js"; -import { VehicleResponse } from "./types/vehicle.js"; +import { Models, VehicleResponse } from "./types/vehicle.js"; import { VehicleDataResponse } from "./types/vehicle_data.js"; import VehicleSpecific from "./vehiclespecific.js"; import VehicleSigned from "./vehiclesigned.js"; -const Models: Record = { - S: "Model S", - "3": "Model 3", - X: "Model X", - Y: "Model Y", - C: "Cybertruck", - T: "Semi", - A: "Cybercab", -}; - export default class Vehicle { parent: TeslaFleetApi; /** Fallback private key for `signed()` when a call site doesn't pass one explicitly. */ diff --git a/test/vehicle.test.ts b/test/vehicle.test.ts index 5ee3d03..3a5f26a 100644 --- a/test/vehicle.test.ts +++ b/test/vehicle.test.ts @@ -1,4 +1,5 @@ import { describe, expect, it } from "vitest"; +import { Models } from "../src/index.js"; import TeslaFleetApi from "../src/teslafleetapi.js"; import Vehicle from "../src/vehicle.js"; @@ -19,3 +20,17 @@ describe("Vehicle.model", () => { expect(vehicle.model(vin)).toBe(expected); }); }); + +describe("Models public export", () => { + it.each([ + ["S", "Model S"], + ["3", "Model 3"], + ["X", "Model X"], + ["Y", "Model Y"], + ["C", "Cybertruck"], + ["T", "Semi"], + ["A", "Cybercab"], + ])("maps code %s to %s", (code, expected) => { + expect(Models[code]).toBe(expected); + }); +});