Skip to content

Commit 6ff4699

Browse files
committed
Fix some types in Teslemetry SDK
1 parent 8e49308 commit 6ff4699

File tree

4 files changed

+36
-17
lines changed

4 files changed

+36
-17
lines changed

.changeset/big-jokes-itch.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@teslemetry/api": patch
3+
---
4+
5+
Fix some types

packages/api/src/Teslemetry.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,15 @@ export class Teslemetry {
100100
vin: product.vin,
101101
api: this.api.getVehicle(product.vin),
102102
sse: this.sse.getVehicle(product.vin),
103+
product,
103104
};
104105
}
105106
if (product.device_type === "energy") {
106107
result.energySites[product.energy_site_id] = {
107108
name: product.site_name ?? "Unnamed",
108109
site: product.energy_site_id,
109110
api: this.api.getEnergySite(product.energy_site_id),
111+
product,
110112
};
111113
}
112114
});

packages/api/src/const.ts

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type {
22
GetSseByVin_Response,
33
GetApiConfigByVinResponses,
44
PatchApiConfigByVinData,
5+
GetApi1ProductsResponses,
56
} from "./client/types.gen.js";
67
import type { TeslemetryEnergyApi } from "./TeslemetryEnergyApi.js";
78
import type { TeslemetryVehicleApi } from "./TeslemetryVehicleApi.js";
@@ -28,22 +29,32 @@ export type FieldsRequest = NonNullable<
2829

2930
export type Signals = keyof SseData["data"];
3031

32+
// Extract specific product types from the API response
33+
type ProductsResponse = GetApi1ProductsResponses[200]["response"];
34+
type VehicleProduct = Extract<
35+
ProductsResponse[number],
36+
{ device_type: "vehicle" }
37+
>;
38+
type EnergyProduct = Extract<
39+
ProductsResponse[number],
40+
{ device_type: "energy" }
41+
>;
42+
export interface VehicleDetails {
43+
name: string;
44+
vin: string;
45+
api: TeslemetryVehicleApi;
46+
sse: TeslemetryVehicleStream;
47+
product: VehicleProduct;
48+
}
49+
50+
export interface EnergyDetails {
51+
name: string;
52+
site: number;
53+
api: TeslemetryEnergyApi;
54+
product: EnergyProduct;
55+
}
56+
3157
export interface Products {
32-
vehicles: Record<
33-
string,
34-
{
35-
name: string;
36-
vin: string;
37-
api: TeslemetryVehicleApi;
38-
sse: TeslemetryVehicleStream;
39-
}
40-
>;
41-
energySites: Record<
42-
string,
43-
{
44-
name: string;
45-
site: number;
46-
api: TeslemetryEnergyApi;
47-
}
48-
>;
58+
vehicles: Record<string, VehicleDetails>;
59+
energySites: Record<string, EnergyDetails>;
4960
}

packages/api/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ export { TeslemetryVehicleApi } from "./TeslemetryVehicleApi.js";
88
export { TeslemetryEnergyApi } from "./TeslemetryEnergyApi.js";
99
export * from "./const.js";
1010
export * from "./exceptions.js";
11+
export type { EnergyDetails, VehicleDetails, Products } from "./const.js";

0 commit comments

Comments
 (0)