tesla-fleet-api 0.1.2 → 0.2.0

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.
@@ -18,6 +18,7 @@ export default class TeslaFleetApi {
18
18
  partner?: Partner;
19
19
  user?: User;
20
20
  vehicle?: Vehicle;
21
+ debug: boolean;
21
22
  constructor(options: {
22
23
  accessToken?: string;
23
24
  region?: Region;
@@ -27,6 +28,7 @@ export default class TeslaFleetApi {
27
28
  partnerScope?: boolean;
28
29
  userScope?: boolean;
29
30
  vehicleScope?: boolean;
31
+ debug?: boolean;
30
32
  });
31
33
  /**
32
34
  * Make a request to the Tesla Fleet API.
@@ -11,6 +11,8 @@ const servers = {
11
11
  export default class TeslaFleetApi {
12
12
  constructor(options) {
13
13
  this.server = null;
14
+ this.debug = false;
15
+ this.debug = !!options.debug;
14
16
  this.accessToken = options.accessToken;
15
17
  if (options.server) {
16
18
  this.server = options.server;
@@ -21,7 +23,7 @@ export default class TeslaFleetApi {
21
23
  else {
22
24
  throw new Error("Either server or region must be provided.");
23
25
  }
24
- console.debug(`Using server ${this.server}`);
26
+ this.debug && console.debug(`Using server ${this.server}`);
25
27
  if (options.chargingScope !== false) {
26
28
  this.charging = new Charging(this);
27
29
  }
@@ -53,15 +55,15 @@ export default class TeslaFleetApi {
53
55
  if (method === "GET" && json !== null) {
54
56
  throw new Error("GET requests cannot have a body.");
55
57
  }
56
- console.debug(`Sending request to ${path}`);
58
+ this.debug && console.debug(`Sending request to ${path}`);
57
59
  // Remove null and undefined values from params and json
58
60
  if (params) {
59
61
  params = Object.fromEntries(Object.entries(params).filter(([_, v]) => v != null));
60
- console.debug(`Parameters: ${JSON.stringify(params)}`);
62
+ this.debug && console.debug(`Parameters: ${JSON.stringify(params)}`);
61
63
  }
62
64
  if (json) {
63
65
  json = Object.fromEntries(Object.entries(json).filter(([_, v]) => v != null));
64
- console.debug(`Body: ${JSON.stringify(json)}`);
66
+ this.debug && console.debug(`Body: ${JSON.stringify(json)}`);
65
67
  }
66
68
  const headers = {
67
69
  Authorization: `Bearer ${this.accessToken}`,
@@ -1 +1 @@
1
- {"version":3,"file":"teslafleetapi.js","sourceRoot":"","sources":["../src/teslafleetapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"teslafleetapi.js","sourceRoot":"","sources":["../src/teslafleetapi.ts"],"names":[],"mappings":"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"}
package/dist/tessie.d.ts CHANGED
@@ -12,6 +12,9 @@ export default class Telemetry extends TeslaFleetApi {
12
12
  * Get your approved Tesla scopes
13
13
  */
14
14
  tesla_scopes(): Promise<Scope[]>;
15
+ metadata(): Promise<{
16
+ scopes: Scope[];
17
+ }>;
15
18
  status(vin: string): Promise<"asleep" | "waiting_for_sleep" | "awake">;
16
19
  state(vin: string, use_cache?: boolean): Promise<VehicleDataResponse>;
17
20
  vehicles(only_active?: boolean): Promise<TessieVehicleResponse[]>;
package/dist/tessie.js CHANGED
@@ -7,6 +7,9 @@ export default class Telemetry extends TeslaFleetApi {
7
7
  * Get your approved Tesla scopes
8
8
  */
9
9
  async tesla_scopes() {
10
+ return this._request("GET", "auth/tesla_scopes").then(({ scopes }) => scopes);
11
+ }
12
+ async metadata() {
10
13
  return this._request("GET", "auth/tesla_scopes");
11
14
  }
12
15
  async status(vin) {
@@ -1 +1 @@
1
- {"version":3,"file":"tessie.js","sourceRoot":"","sources":["../src/tessie.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAU/C,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,aAAa;IAChD,YAAY,WAAmB;QAC3B,KAAK,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,wBAAwB,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACpG,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;IACrD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,YAAqB,IAAI;QAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,cAAuB,KAAK;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAW;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAC7E,CAAC;CACJ"}
1
+ {"version":3,"file":"tessie.js","sourceRoot":"","sources":["../src/tessie.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAU/C,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,aAAa;IAChD,YAAY,WAAmB;QAC3B,KAAK,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,wBAAwB,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IACpG,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAA;IACjF,CAAC;IAED,KAAK,CAAC,QAAQ;QACV,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAA;IACpD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAW,EAAE,YAAqB,IAAI;QAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,GAAG,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,cAAuB,KAAK;QACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,GAAW;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;IAC7E,CAAC;CACJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tesla-fleet-api",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "author": {
5
5
  "name": "Teslemetry",
6
6
  "email": "hello@teslemetry.com",
@@ -3,9 +3,9 @@ import Energy from "./energy.js";
3
3
  import Partner from "./partner.js";
4
4
  import User from "./user.js";
5
5
  import Vehicle from "./vehicle.js";
6
-
7
6
  import { EnergyProduct, ProductsResponse, VehicleProduct } from "./types/products.js";
8
7
 
8
+
9
9
  type Region = "na" | "eu" | "cn";
10
10
  type Method = "GET" | "POST" | "PUT" | "DELETE";
11
11
 
@@ -25,6 +25,7 @@ export default class TeslaFleetApi {
25
25
  partner?: Partner;
26
26
  user?: User;
27
27
  vehicle?: Vehicle;
28
+ debug: boolean = false;
28
29
 
29
30
  constructor(options: {
30
31
  accessToken?: string;
@@ -35,7 +36,9 @@ export default class TeslaFleetApi {
35
36
  partnerScope?: boolean;
36
37
  userScope?: boolean;
37
38
  vehicleScope?: boolean;
39
+ debug?: boolean;
38
40
  }) {
41
+ this.debug = !!options.debug
39
42
  this.accessToken = options.accessToken;
40
43
 
41
44
  if (options.server) {
@@ -46,7 +49,7 @@ export default class TeslaFleetApi {
46
49
  throw new Error("Either server or region must be provided.");
47
50
  }
48
51
 
49
- console.debug(`Using server ${this.server}`);
52
+ this.debug && console.debug(`Using server ${this.server}`);
50
53
 
51
54
  if (options.chargingScope !== false) {
52
55
  this.charging = new Charging(this);
@@ -83,16 +86,16 @@ export default class TeslaFleetApi {
83
86
  throw new Error("GET requests cannot have a body.");
84
87
  }
85
88
 
86
- console.debug(`Sending request to ${path}`);
89
+ this.debug && console.debug(`Sending request to ${path}`);
87
90
 
88
91
  // Remove null and undefined values from params and json
89
92
  if (params) {
90
93
  params = Object.fromEntries(Object.entries(params).filter(([_, v]) => v != null));
91
- console.debug(`Parameters: ${JSON.stringify(params)}`);
94
+ this.debug && console.debug(`Parameters: ${JSON.stringify(params)}`);
92
95
  }
93
96
  if (json) {
94
97
  json = Object.fromEntries(Object.entries(json).filter(([_, v]) => v != null));
95
- console.debug(`Body: ${JSON.stringify(json)}`);
98
+ this.debug && console.debug(`Body: ${JSON.stringify(json)}`);
96
99
  }
97
100
 
98
101
  const headers = {
package/src/tessie.ts CHANGED
@@ -17,7 +17,11 @@ export default class Telemetry extends TeslaFleetApi {
17
17
  * Get your approved Tesla scopes
18
18
  */
19
19
  async tesla_scopes(): Promise<Scope[]> {
20
- return this._request("GET", "auth/tesla_scopes");
20
+ return this._request("GET", "auth/tesla_scopes").then(({ scopes }) => scopes)
21
+ }
22
+
23
+ async metadata(): Promise<{ scopes: Scope[] }> {
24
+ return this._request("GET", "auth/tesla_scopes")
21
25
  }
22
26
 
23
27
  async status(vin: string): Promise<"asleep" | "waiting_for_sleep" | "awake"> {