@teslemetry/api 0.6.5 → 0.6.7

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/index.cjs CHANGED
@@ -3359,37 +3359,6 @@ function formatDate(date) {
3359
3359
  return date.toISOString().replace(/\.\d{3}Z$/, "Z");
3360
3360
  }
3361
3361
  /**
3362
- * Gets the start of today (midnight) in local timezone
3363
- * @returns Date object set to today at 00:00:00.000
3364
- */
3365
- function getStartOfToday() {
3366
- const now = /* @__PURE__ */ new Date();
3367
- return new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0, 0);
3368
- }
3369
- /**
3370
- * Gets the end of today (23:59:59.999) in local timezone
3371
- * @returns Date object set to today at 23:59:59.999
3372
- */
3373
- function getEndOfToday() {
3374
- const now = /* @__PURE__ */ new Date();
3375
- return new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59, 999);
3376
- }
3377
- /**
3378
- * Normalizes a date input to an ISO string format suitable for API calls.
3379
- * - If input is a string, it is returned as-is
3380
- * - If input is a Date, it is converted to ISO string without milliseconds
3381
- * - If input is undefined, the default date is used and converted
3382
- *
3383
- * @param input The date input (string, Date, or undefined)
3384
- * @param defaultDate The default Date to use if input is undefined
3385
- * @returns Formatted date string
3386
- */
3387
- function normalizeDateInput(input, defaultDate) {
3388
- if (typeof input === "string") return input;
3389
- if (input instanceof Date) return formatDate(input);
3390
- return formatDate(defaultDate);
3391
- }
3392
- /**
3393
3362
  * Processes start_date and end_date inputs for API calls.
3394
3363
  * Handles string (taken as-is), Date (formatted), or undefined (defaults to today).
3395
3364
  *
@@ -3398,10 +3367,10 @@ function normalizeDateInput(input, defaultDate) {
3398
3367
  * @returns Object with formatted start_date and end_date strings
3399
3368
  */
3400
3369
  function processDateRange(start_date, end_date) {
3401
- return {
3402
- start_date: normalizeDateInput(start_date, getStartOfToday()),
3403
- end_date: normalizeDateInput(end_date, getEndOfToday())
3404
- };
3370
+ const output = {};
3371
+ if (start_date) output.start_date = start_date instanceof Date ? formatDate(start_date) : start_date;
3372
+ if (end_date) output.end_date = end_date instanceof Date ? formatDate(end_date) : end_date;
3373
+ return output;
3405
3374
  }
3406
3375
 
3407
3376
  //#endregion
@@ -3709,22 +3678,6 @@ var TeslemetryEnergyApi = class extends events.EventEmitter {
3709
3678
  }
3710
3679
  };
3711
3680
  }
3712
- /**
3713
- * Sum energy history entries to find the total energy usage of each type.
3714
- * @param energyHistory
3715
- */
3716
- sumEnergyHistory(energyHistory) {
3717
- const summary = {};
3718
- if (!energyHistory?.response?.events) return summary;
3719
- for (const event of energyHistory.response.events) for (const [key, value] of Object.entries(event)) {
3720
- if (key === "timestamp") continue;
3721
- if (typeof value === "number") {
3722
- const typedKey = key;
3723
- summary[typedKey] = (summary[typedKey] ?? 0) + value;
3724
- }
3725
- }
3726
- return summary;
3727
- }
3728
3681
  };
3729
3682
 
3730
3683
  //#endregion
@@ -5251,7 +5204,7 @@ const consoleLogger = {
5251
5204
 
5252
5205
  //#endregion
5253
5206
  //#region package.json
5254
- var version = "0.6.5";
5207
+ var version = "0.6.7";
5255
5208
 
5256
5209
  //#endregion
5257
5210
  //#region src/Teslemetry.ts
package/dist/index.d.cts CHANGED
@@ -7956,28 +7956,41 @@ type GetApi1EnergySitesByIdCalendarHistoryResponses = {
7956
7956
  * Default Response
7957
7957
  */
7958
7958
  200: {
7959
- response?: {
7959
+ response?: null | {
7960
+ serial_number: string;
7961
+ period: 'day' | 'week' | 'month' | 'year' | 'lifetime';
7962
+ installation_time_zone?: string;
7963
+ time_series?: Array<{
7964
+ timestamp: string;
7965
+ solar_energy_exported: number;
7966
+ generator_energy_exported: number;
7967
+ grid_energy_imported: number;
7968
+ grid_services_energy_imported: number;
7969
+ grid_services_energy_exported: number;
7970
+ grid_energy_exported_from_solar: number;
7971
+ grid_energy_exported_from_generator: number;
7972
+ grid_energy_exported_from_battery: number;
7973
+ battery_energy_exported: number;
7974
+ battery_energy_imported_from_grid: number;
7975
+ battery_energy_imported_from_solar: number;
7976
+ battery_energy_imported_from_generator: number;
7977
+ consumer_energy_imported_from_grid: number;
7978
+ consumer_energy_imported_from_solar: number;
7979
+ consumer_energy_imported_from_battery: number;
7980
+ consumer_energy_imported_from_generator: number;
7981
+ raw_timestamp?: string;
7982
+ total_home_usage?: number;
7983
+ total_battery_discharge?: number;
7984
+ total_grid_energy_exported?: number;
7985
+ total_battery_charge?: number;
7986
+ total_solar_generation?: number;
7987
+ }>;
7988
+ SmartBreakerEnergyLogs?: null;
7989
+ time_zone_offset?: number;
7990
+ } | {
7960
7991
  events?: Array<{
7961
- timestamp?: string;
7962
- duration?: number;
7963
- } | {
7964
- timestamp?: string;
7965
- solar_energy_exported?: number;
7966
- generator_energy_exported?: number;
7967
- grid_energy_imported?: number;
7968
- grid_services_energy_imported?: number;
7969
- grid_services_energy_exported?: number;
7970
- grid_energy_exported_from_solar?: number;
7971
- grid_energy_exported_from_generator?: number;
7972
- grid_energy_exported_from_battery?: number;
7973
- battery_energy_exported?: number;
7974
- battery_energy_imported_from_grid?: number;
7975
- battery_energy_imported_from_solar?: number;
7976
- battery_energy_imported_from_generator?: number;
7977
- consumer_energy_imported_from_grid?: number;
7978
- consumer_energy_imported_from_solar?: number;
7979
- consumer_energy_imported_from_battery?: number;
7980
- consumer_energy_imported_from_generator?: number;
7992
+ timestamp: string;
7993
+ duration: number;
7981
7994
  }>;
7982
7995
  total_events?: number;
7983
7996
  };
@@ -9926,7 +9939,7 @@ type GetSseByVin_Response = GetSseByVin_Responses[keyof GetSseByVin_Responses];
9926
9939
  /**
9927
9940
  * Input type for date parameters - can be a string (used as-is), Date object, or undefined
9928
9941
  */
9929
- type DateInput = string | Date | undefined;
9942
+ type DateInput = string | Date;
9930
9943
  //#endregion
9931
9944
  //#region src/client/core/auth.gen.d.ts
9932
9945
  type AuthToken = string | undefined;
@@ -10239,26 +10252,16 @@ type OmitKeys<T, K$1> = Pick<T, Exclude<keyof T, K$1>>;
10239
10252
  type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown, TResponseStyle extends ResponseStyle = 'fields'> = OmitKeys<RequestOptions<TResponse, TResponseStyle, ThrowOnError>, 'body' | 'path' | 'query' | 'url'> & ([TData] extends [never] ? unknown : Omit<TData, 'url'>);
10240
10253
  //#endregion
10241
10254
  //#region src/TeslemetryEnergyApi.d.ts
10242
- type CalendarHistoryEvents = NonNullable<NonNullable<GetApi1EnergySitesByIdCalendarHistoryResponse["response"]>["events"]>[number];
10243
- type BackupHistoryEvent = Extract<CalendarHistoryEvents, {
10244
- duration?: number;
10245
- }>;
10246
- type EnergyHistoryEvent = Exclude<CalendarHistoryEvents, {
10247
- duration?: number;
10248
- }>;
10249
10255
  type BackupHistoryResponse = {
10250
- response?: {
10251
- events?: BackupHistoryEvent[];
10252
- total_events?: number;
10253
- };
10256
+ response: Extract<GetApi1EnergySitesByIdCalendarHistoryResponse["response"], {
10257
+ events?: any;
10258
+ }>;
10254
10259
  };
10255
10260
  type EnergyHistoryResponse = {
10256
- response?: {
10257
- events?: EnergyHistoryEvent[];
10258
- total_events?: number;
10259
- };
10261
+ response: Extract<GetApi1EnergySitesByIdCalendarHistoryResponse["response"], {
10262
+ time_series?: any;
10263
+ }>;
10260
10264
  };
10261
- type EnergyHistorySummary = Partial<Omit<EnergyHistoryEvent, "timestamp">>;
10262
10265
  type TeslemetryEnergyEventMap = {
10263
10266
  siteInfo: GetApi1EnergySitesByIdSiteInfoResponse;
10264
10267
  liveStatus: GetApi1EnergySitesByIdLiveStatusResponse;
@@ -10607,11 +10610,6 @@ declare class TeslemetryEnergyApi extends EventEmitter {
10607
10610
  * @param endpoint
10608
10611
  */
10609
10612
  requestPolling(endpoint: PollingEndpoints): () => void;
10610
- /**
10611
- * Sum energy history entries to find the total energy usage of each type.
10612
- * @param energyHistory
10613
- */
10614
- sumEnergyHistory(energyHistory: EnergyHistoryResponse): EnergyHistorySummary;
10615
10613
  }
10616
10614
  //#endregion
10617
10615
  //#region src/TeslemetryVehicleApi.d.ts
package/dist/index.d.mts CHANGED
@@ -7956,28 +7956,41 @@ type GetApi1EnergySitesByIdCalendarHistoryResponses = {
7956
7956
  * Default Response
7957
7957
  */
7958
7958
  200: {
7959
- response?: {
7959
+ response?: null | {
7960
+ serial_number: string;
7961
+ period: 'day' | 'week' | 'month' | 'year' | 'lifetime';
7962
+ installation_time_zone?: string;
7963
+ time_series?: Array<{
7964
+ timestamp: string;
7965
+ solar_energy_exported: number;
7966
+ generator_energy_exported: number;
7967
+ grid_energy_imported: number;
7968
+ grid_services_energy_imported: number;
7969
+ grid_services_energy_exported: number;
7970
+ grid_energy_exported_from_solar: number;
7971
+ grid_energy_exported_from_generator: number;
7972
+ grid_energy_exported_from_battery: number;
7973
+ battery_energy_exported: number;
7974
+ battery_energy_imported_from_grid: number;
7975
+ battery_energy_imported_from_solar: number;
7976
+ battery_energy_imported_from_generator: number;
7977
+ consumer_energy_imported_from_grid: number;
7978
+ consumer_energy_imported_from_solar: number;
7979
+ consumer_energy_imported_from_battery: number;
7980
+ consumer_energy_imported_from_generator: number;
7981
+ raw_timestamp?: string;
7982
+ total_home_usage?: number;
7983
+ total_battery_discharge?: number;
7984
+ total_grid_energy_exported?: number;
7985
+ total_battery_charge?: number;
7986
+ total_solar_generation?: number;
7987
+ }>;
7988
+ SmartBreakerEnergyLogs?: null;
7989
+ time_zone_offset?: number;
7990
+ } | {
7960
7991
  events?: Array<{
7961
- timestamp?: string;
7962
- duration?: number;
7963
- } | {
7964
- timestamp?: string;
7965
- solar_energy_exported?: number;
7966
- generator_energy_exported?: number;
7967
- grid_energy_imported?: number;
7968
- grid_services_energy_imported?: number;
7969
- grid_services_energy_exported?: number;
7970
- grid_energy_exported_from_solar?: number;
7971
- grid_energy_exported_from_generator?: number;
7972
- grid_energy_exported_from_battery?: number;
7973
- battery_energy_exported?: number;
7974
- battery_energy_imported_from_grid?: number;
7975
- battery_energy_imported_from_solar?: number;
7976
- battery_energy_imported_from_generator?: number;
7977
- consumer_energy_imported_from_grid?: number;
7978
- consumer_energy_imported_from_solar?: number;
7979
- consumer_energy_imported_from_battery?: number;
7980
- consumer_energy_imported_from_generator?: number;
7992
+ timestamp: string;
7993
+ duration: number;
7981
7994
  }>;
7982
7995
  total_events?: number;
7983
7996
  };
@@ -9926,7 +9939,7 @@ type GetSseByVin_Response = GetSseByVin_Responses[keyof GetSseByVin_Responses];
9926
9939
  /**
9927
9940
  * Input type for date parameters - can be a string (used as-is), Date object, or undefined
9928
9941
  */
9929
- type DateInput = string | Date | undefined;
9942
+ type DateInput = string | Date;
9930
9943
  //#endregion
9931
9944
  //#region src/client/core/auth.gen.d.ts
9932
9945
  type AuthToken = string | undefined;
@@ -10239,26 +10252,16 @@ type OmitKeys<T, K$1> = Pick<T, Exclude<keyof T, K$1>>;
10239
10252
  type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown, TResponseStyle extends ResponseStyle = 'fields'> = OmitKeys<RequestOptions<TResponse, TResponseStyle, ThrowOnError>, 'body' | 'path' | 'query' | 'url'> & ([TData] extends [never] ? unknown : Omit<TData, 'url'>);
10240
10253
  //#endregion
10241
10254
  //#region src/TeslemetryEnergyApi.d.ts
10242
- type CalendarHistoryEvents = NonNullable<NonNullable<GetApi1EnergySitesByIdCalendarHistoryResponse["response"]>["events"]>[number];
10243
- type BackupHistoryEvent = Extract<CalendarHistoryEvents, {
10244
- duration?: number;
10245
- }>;
10246
- type EnergyHistoryEvent = Exclude<CalendarHistoryEvents, {
10247
- duration?: number;
10248
- }>;
10249
10255
  type BackupHistoryResponse = {
10250
- response?: {
10251
- events?: BackupHistoryEvent[];
10252
- total_events?: number;
10253
- };
10256
+ response: Extract<GetApi1EnergySitesByIdCalendarHistoryResponse["response"], {
10257
+ events?: any;
10258
+ }>;
10254
10259
  };
10255
10260
  type EnergyHistoryResponse = {
10256
- response?: {
10257
- events?: EnergyHistoryEvent[];
10258
- total_events?: number;
10259
- };
10261
+ response: Extract<GetApi1EnergySitesByIdCalendarHistoryResponse["response"], {
10262
+ time_series?: any;
10263
+ }>;
10260
10264
  };
10261
- type EnergyHistorySummary = Partial<Omit<EnergyHistoryEvent, "timestamp">>;
10262
10265
  type TeslemetryEnergyEventMap = {
10263
10266
  siteInfo: GetApi1EnergySitesByIdSiteInfoResponse;
10264
10267
  liveStatus: GetApi1EnergySitesByIdLiveStatusResponse;
@@ -10607,11 +10610,6 @@ declare class TeslemetryEnergyApi extends EventEmitter {
10607
10610
  * @param endpoint
10608
10611
  */
10609
10612
  requestPolling(endpoint: PollingEndpoints): () => void;
10610
- /**
10611
- * Sum energy history entries to find the total energy usage of each type.
10612
- * @param energyHistory
10613
- */
10614
- sumEnergyHistory(energyHistory: EnergyHistoryResponse): EnergyHistorySummary;
10615
10613
  }
10616
10614
  //#endregion
10617
10615
  //#region src/TeslemetryVehicleApi.d.ts
package/dist/index.mjs CHANGED
@@ -3359,37 +3359,6 @@ function formatDate(date) {
3359
3359
  return date.toISOString().replace(/\.\d{3}Z$/, "Z");
3360
3360
  }
3361
3361
  /**
3362
- * Gets the start of today (midnight) in local timezone
3363
- * @returns Date object set to today at 00:00:00.000
3364
- */
3365
- function getStartOfToday() {
3366
- const now = /* @__PURE__ */ new Date();
3367
- return new Date(now.getFullYear(), now.getMonth(), now.getDate(), 0, 0, 0, 0);
3368
- }
3369
- /**
3370
- * Gets the end of today (23:59:59.999) in local timezone
3371
- * @returns Date object set to today at 23:59:59.999
3372
- */
3373
- function getEndOfToday() {
3374
- const now = /* @__PURE__ */ new Date();
3375
- return new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59, 999);
3376
- }
3377
- /**
3378
- * Normalizes a date input to an ISO string format suitable for API calls.
3379
- * - If input is a string, it is returned as-is
3380
- * - If input is a Date, it is converted to ISO string without milliseconds
3381
- * - If input is undefined, the default date is used and converted
3382
- *
3383
- * @param input The date input (string, Date, or undefined)
3384
- * @param defaultDate The default Date to use if input is undefined
3385
- * @returns Formatted date string
3386
- */
3387
- function normalizeDateInput(input, defaultDate) {
3388
- if (typeof input === "string") return input;
3389
- if (input instanceof Date) return formatDate(input);
3390
- return formatDate(defaultDate);
3391
- }
3392
- /**
3393
3362
  * Processes start_date and end_date inputs for API calls.
3394
3363
  * Handles string (taken as-is), Date (formatted), or undefined (defaults to today).
3395
3364
  *
@@ -3398,10 +3367,10 @@ function normalizeDateInput(input, defaultDate) {
3398
3367
  * @returns Object with formatted start_date and end_date strings
3399
3368
  */
3400
3369
  function processDateRange(start_date, end_date) {
3401
- return {
3402
- start_date: normalizeDateInput(start_date, getStartOfToday()),
3403
- end_date: normalizeDateInput(end_date, getEndOfToday())
3404
- };
3370
+ const output = {};
3371
+ if (start_date) output.start_date = start_date instanceof Date ? formatDate(start_date) : start_date;
3372
+ if (end_date) output.end_date = end_date instanceof Date ? formatDate(end_date) : end_date;
3373
+ return output;
3405
3374
  }
3406
3375
 
3407
3376
  //#endregion
@@ -3709,22 +3678,6 @@ var TeslemetryEnergyApi = class extends EventEmitter {
3709
3678
  }
3710
3679
  };
3711
3680
  }
3712
- /**
3713
- * Sum energy history entries to find the total energy usage of each type.
3714
- * @param energyHistory
3715
- */
3716
- sumEnergyHistory(energyHistory) {
3717
- const summary = {};
3718
- if (!energyHistory?.response?.events) return summary;
3719
- for (const event of energyHistory.response.events) for (const [key, value] of Object.entries(event)) {
3720
- if (key === "timestamp") continue;
3721
- if (typeof value === "number") {
3722
- const typedKey = key;
3723
- summary[typedKey] = (summary[typedKey] ?? 0) + value;
3724
- }
3725
- }
3726
- return summary;
3727
- }
3728
3681
  };
3729
3682
 
3730
3683
  //#endregion
@@ -5251,7 +5204,7 @@ const consoleLogger = {
5251
5204
 
5252
5205
  //#endregion
5253
5206
  //#region package.json
5254
- var version = "0.6.5";
5207
+ var version = "0.6.7";
5255
5208
 
5256
5209
  //#endregion
5257
5210
  //#region src/Teslemetry.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teslemetry/api",
3
- "version": "0.6.5",
3
+ "version": "0.6.7",
4
4
  "description": "API client for Teslemetry",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",