@texturehq/device 2.0.0 → 2.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.
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Simple in-memory TTL cache for API responses.
3
+ *
4
+ * Since manufacturer and device model data changes infrequently (a few times
5
+ * per month), caching responses avoids tens of thousands of redundant API calls
6
+ * per day from OEM adapters. Cache clears naturally on container restart.
7
+ */
8
+ /**
9
+ * Get a value from cache if it exists and hasn't expired.
10
+ */
11
+ export declare function cacheGet<T>(key: string): T | undefined;
12
+ /**
13
+ * Store a value in cache with a TTL.
14
+ */
15
+ export declare function cacheSet<T>(key: string, data: T, ttlMs?: number): void;
16
+ /**
17
+ * Clear all cached entries. Useful for testing.
18
+ */
19
+ export declare function cacheClear(): void;
20
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/common/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAQtD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,GAAE,MAAuB,GAAG,IAAI,CAEtF;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,IAAI,CAEjC"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ /**
3
+ * Simple in-memory TTL cache for API responses.
4
+ *
5
+ * Since manufacturer and device model data changes infrequently (a few times
6
+ * per month), caching responses avoids tens of thousands of redundant API calls
7
+ * per day from OEM adapters. Cache clears naturally on container restart.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.cacheGet = cacheGet;
11
+ exports.cacheSet = cacheSet;
12
+ exports.cacheClear = cacheClear;
13
+ const DEFAULT_TTL_MS = 60 * 60 * 1000; // 1 hour (matches API Cache-Control)
14
+ const store = new Map();
15
+ /**
16
+ * Get a value from cache if it exists and hasn't expired.
17
+ */
18
+ function cacheGet(key) {
19
+ const entry = store.get(key);
20
+ if (!entry)
21
+ return undefined;
22
+ if (Date.now() > entry.expiresAt) {
23
+ store.delete(key);
24
+ return undefined;
25
+ }
26
+ return entry.data;
27
+ }
28
+ /**
29
+ * Store a value in cache with a TTL.
30
+ */
31
+ function cacheSet(key, data, ttlMs = DEFAULT_TTL_MS) {
32
+ store.set(key, { data, expiresAt: Date.now() + ttlMs });
33
+ }
34
+ /**
35
+ * Clear all cached entries. Useful for testing.
36
+ */
37
+ function cacheClear() {
38
+ store.clear();
39
+ }
40
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/common/cache.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAcH,4BAQC;AAKD,4BAEC;AAKD,gCAEC;AA7BD,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,qCAAqC;AAE5E,MAAM,KAAK,GAAG,IAAI,GAAG,EAA+B,CAAC;AAErD;;GAEG;AACH,SAAgB,QAAQ,CAAI,GAAW;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC,IAAS,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAI,GAAW,EAAE,IAAO,EAAE,QAAgB,cAAc;IAC9E,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU;IACxB,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/deviceModel/getDeviceModel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,WAAW,EAAqB,MAAM,aAAa,CAAC;AAM7D,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,iBAAiB,GAAG,CAAC,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,CAAC;AAErE;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAU,SAAS,qBAAqB,KAAG,OAAO,CAAC,iBAAiB,CA8C9F,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/deviceModel/getDeviceModel/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,WAAW,EAAqB,MAAM,aAAa,CAAC;AAO7D,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,iBAAiB,GAAG,CAAC,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,CAAC;AAErE;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAU,SAAS,qBAAqB,KAAG,OAAO,CAAC,iBAAiB,CAsD9F,CAAC"}
@@ -6,6 +6,7 @@ const exceptions_1 = require("../../common/exceptions");
6
6
  const entities_1 = require("../entities");
7
7
  const constants_1 = require("../../common/constants");
8
8
  const fetch_1 = require("../../common/fetch");
9
+ const cache_1 = require("../../common/cache");
9
10
  const parseManufacturer_1 = require("../../manufacturer/parseManufacturer");
10
11
  /**
11
12
  * Retrieves a device model from the Texture REST API.
@@ -19,26 +20,34 @@ const getDeviceModel = async (options) => {
19
20
  try {
20
21
  operation.start({ options });
21
22
  const modelsUrl = `${baseApiUrl}/v1/public/device-models?slug=${encodeURIComponent(slug)}`;
22
- const modelsResponse = await (0, fetch_1.fetchWithRetry)(modelsUrl);
23
- if (!modelsResponse.ok) {
24
- const errorMessage = `Request to ${modelsUrl} failed with status ${modelsResponse.status}`;
25
- operation.fail(errorMessage);
26
- throw new exceptions_1.NetworkError(errorMessage, modelsResponse.status);
23
+ let modelsData = (0, cache_1.cacheGet)(modelsUrl);
24
+ if (!modelsData) {
25
+ const modelsResponse = await (0, fetch_1.fetchWithRetry)(modelsUrl);
26
+ if (!modelsResponse.ok) {
27
+ const errorMessage = `Request to ${modelsUrl} failed with status ${modelsResponse.status}`;
28
+ operation.fail(errorMessage);
29
+ throw new exceptions_1.NetworkError(errorMessage, modelsResponse.status);
30
+ }
31
+ modelsData = (await modelsResponse.json());
32
+ (0, cache_1.cacheSet)(modelsUrl, modelsData);
27
33
  }
28
- const modelsData = (await modelsResponse.json());
29
34
  if (!modelsData.data || modelsData.data.length === 0) {
30
35
  operation.fail({ slug });
31
36
  return null;
32
37
  }
33
38
  const doc = modelsData.data[0];
34
39
  const manufacturersUrl = `${baseApiUrl}/v1/public/manufacturers`;
35
- const manufacturersResponse = await (0, fetch_1.fetchWithRetry)(manufacturersUrl);
36
- if (!manufacturersResponse.ok) {
37
- const errorMessage = `Request to ${manufacturersUrl} failed with status ${manufacturersResponse.status}`;
38
- operation.fail(errorMessage);
39
- throw new exceptions_1.NetworkError(errorMessage, manufacturersResponse.status);
40
+ let manufacturersData = (0, cache_1.cacheGet)(manufacturersUrl);
41
+ if (!manufacturersData) {
42
+ const manufacturersResponse = await (0, fetch_1.fetchWithRetry)(manufacturersUrl);
43
+ if (!manufacturersResponse.ok) {
44
+ const errorMessage = `Request to ${manufacturersUrl} failed with status ${manufacturersResponse.status}`;
45
+ operation.fail(errorMessage);
46
+ throw new exceptions_1.NetworkError(errorMessage, manufacturersResponse.status);
47
+ }
48
+ manufacturersData = (await manufacturersResponse.json());
49
+ (0, cache_1.cacheSet)(manufacturersUrl, manufacturersData);
40
50
  }
41
- const manufacturersData = (await manufacturersResponse.json());
42
51
  const fullManufacturer = manufacturersData.find((m) => m.slug === doc.manufacturer.slug);
43
52
  if (!fullManufacturer)
44
53
  throw new Error(`Manufacturer not found for slug: ${doc.manufacturer.slug}`);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/deviceModel/getDeviceModel/index.ts"],"names":[],"mappings":";;;AAAA,gDAAyD;AAEzD,wDAAuD;AACvD,0CAA6D;AAC7D,sDAA6D;AAC7D,8CAAoD;AAEpD,4EAAyE;AAoBzE;;;;GAIG;AACI,MAAM,cAAc,GAAG,KAAK,EAAE,OAA8B,EAA8B,EAAE;IACjG,MAAM,aAAa,GAAG,mBAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC5D,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,+BAAmB,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;IACnF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,wCAAwC,CAAC,CAAC;IAE7E,IAAI,CAAC;QACH,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAE7B,MAAM,SAAS,GAAG,GAAG,UAAU,iCAAiC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3F,MAAM,cAAc,GAAG,MAAM,IAAA,sBAAc,EAAC,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;YACvB,MAAM,YAAY,GAAG,cAAc,SAAS,uBAAuB,cAAc,CAAC,MAAM,EAAE,CAAC;YAC3F,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7B,MAAM,IAAI,yBAAY,CAAC,YAAY,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,UAAU,GAAG,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAA4B,CAAC;QAE5E,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE/B,MAAM,gBAAgB,GAAG,GAAG,UAAU,0BAA0B,CAAC;QACjE,MAAM,qBAAqB,GAAG,MAAM,IAAA,sBAAc,EAAC,gBAAgB,CAAC,CAAC;QACrE,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,CAAC;YAC9B,MAAM,YAAY,GAAG,cAAc,gBAAgB,uBAAuB,qBAAqB,CAAC,MAAM,EAAE,CAAC;YACzG,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7B,MAAM,IAAI,yBAAY,CAAC,YAAY,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,iBAAiB,GAAG,CAAC,MAAM,qBAAqB,CAAC,IAAI,EAAE,CAA8B,CAAC;QAC5F,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACzF,IAAI,CAAC,gBAAgB;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QAEpG,MAAM,WAAW,GAAsB,4BAAiB,CAAC,KAAK,CAAC;YAC7D,GAAG,GAAG;YACN,YAAY,EAAE,IAAA,qCAAiB,EAAC,gBAAgB,CAAC;SAClD,CAAC,CAAC;QAEH,SAAS,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QAC/B,OAAO,WAAW,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,SAAS,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;QAC5F,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AA9CW,QAAA,cAAc,kBA8CzB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/deviceModel/getDeviceModel/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/deviceModel/getDeviceModelByManufacturerSlug/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,WAAW,EAAqB,MAAM,aAAa,CAAC;AAM7D,MAAM,WAAW,uCAAuC;IACtD;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,iBAAiB,GAAG,CAAC,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,CAAC;AAErE;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,GAC3C,SAAS,uCAAuC,KAC/C,OAAO,CAAC,iBAAiB,CAmD3B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/deviceModel/getDeviceModelByManufacturerSlug/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,WAAW,EAAqB,MAAM,aAAa,CAAC;AAO7D,MAAM,WAAW,uCAAuC;IACtD;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,iBAAiB,GAAG,CAAC,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG,IAAI,CAAC;AAErE;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,GAC3C,SAAS,uCAAuC,KAC/C,OAAO,CAAC,iBAAiB,CA2D3B,CAAC"}
@@ -6,6 +6,7 @@ const exceptions_1 = require("../../common/exceptions");
6
6
  const entities_1 = require("../entities");
7
7
  const constants_1 = require("../../common/constants");
8
8
  const fetch_1 = require("../../common/fetch");
9
+ const cache_1 = require("../../common/cache");
9
10
  const parseManufacturer_1 = require("../../manufacturer/parseManufacturer");
10
11
  /**
11
12
  * Retrieves a device model from the Texture REST API by manufacturer:model slug.
@@ -19,26 +20,34 @@ const getDeviceModelByManufacturerSlug = async (options) => {
19
20
  try {
20
21
  operation.start({ options });
21
22
  const modelsUrl = `${baseApiUrl}/v1/public/device-models?slug=${encodeURIComponent(slug)}`;
22
- const modelsResponse = await (0, fetch_1.fetchWithRetry)(modelsUrl);
23
- if (!modelsResponse.ok) {
24
- const errorMessage = `Request to ${modelsUrl} failed with status ${modelsResponse.status}`;
25
- operation.fail({ slug, status: modelsResponse.status, errorMessage });
26
- throw new exceptions_1.NetworkError(errorMessage, modelsResponse.status);
23
+ let modelsData = (0, cache_1.cacheGet)(modelsUrl);
24
+ if (!modelsData) {
25
+ const modelsResponse = await (0, fetch_1.fetchWithRetry)(modelsUrl);
26
+ if (!modelsResponse.ok) {
27
+ const errorMessage = `Request to ${modelsUrl} failed with status ${modelsResponse.status}`;
28
+ operation.fail({ slug, status: modelsResponse.status, errorMessage });
29
+ throw new exceptions_1.NetworkError(errorMessage, modelsResponse.status);
30
+ }
31
+ modelsData = (await modelsResponse.json());
32
+ (0, cache_1.cacheSet)(modelsUrl, modelsData);
27
33
  }
28
- const modelsData = (await modelsResponse.json());
29
34
  if (!modelsData.data || modelsData.data.length === 0) {
30
35
  operation.fail({ slug });
31
36
  return null;
32
37
  }
33
38
  const doc = modelsData.data[0];
34
39
  const manufacturersUrl = `${baseApiUrl}/v1/public/manufacturers`;
35
- const manufacturersResponse = await (0, fetch_1.fetchWithRetry)(manufacturersUrl);
36
- if (!manufacturersResponse.ok) {
37
- const errorMessage = `Request to ${manufacturersUrl} failed with status ${manufacturersResponse.status}`;
38
- operation.fail({ slug, status: manufacturersResponse.status, errorMessage });
39
- throw new exceptions_1.NetworkError(errorMessage, manufacturersResponse.status);
40
+ let manufacturersData = (0, cache_1.cacheGet)(manufacturersUrl);
41
+ if (!manufacturersData) {
42
+ const manufacturersResponse = await (0, fetch_1.fetchWithRetry)(manufacturersUrl);
43
+ if (!manufacturersResponse.ok) {
44
+ const errorMessage = `Request to ${manufacturersUrl} failed with status ${manufacturersResponse.status}`;
45
+ operation.fail({ slug, status: manufacturersResponse.status, errorMessage });
46
+ throw new exceptions_1.NetworkError(errorMessage, manufacturersResponse.status);
47
+ }
48
+ manufacturersData = (await manufacturersResponse.json());
49
+ (0, cache_1.cacheSet)(manufacturersUrl, manufacturersData);
40
50
  }
41
- const manufacturersData = (await manufacturersResponse.json());
42
51
  const fullManufacturer = manufacturersData.find((m) => m.slug === doc.manufacturer.slug);
43
52
  if (!fullManufacturer)
44
53
  throw new Error(`Manufacturer not found for slug: ${doc.manufacturer.slug}`);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/deviceModel/getDeviceModelByManufacturerSlug/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/deviceModel/getDeviceModelByManufacturerSlug/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/deviceModel/getDeviceModels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,WAAW,EAAqB,MAAM,aAAa,CAAC;AAM7D,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAU,UAAS,sBAA2B,KAAG,OAAO,CAAC,uBAAuB,CA4D3G,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/deviceModel/getDeviceModels/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,WAAW,EAAqB,MAAM,aAAa,CAAC;AAO7D,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAU,UAAS,sBAA2B,KAAG,OAAO,CAAC,uBAAuB,CAoE3G,CAAC"}
@@ -6,6 +6,7 @@ const exceptions_1 = require("../../common/exceptions");
6
6
  const entities_1 = require("../entities");
7
7
  const constants_1 = require("../../common/constants");
8
8
  const fetch_1 = require("../../common/fetch");
9
+ const cache_1 = require("../../common/cache");
9
10
  const parseManufacturer_1 = require("../../manufacturer/parseManufacturer");
10
11
  /**
11
12
  * Retrieves a collection of device models from the Texture REST API.
@@ -26,21 +27,29 @@ const getDeviceModels = async (options = {}) => {
26
27
  params.set("slug", slugs[0]);
27
28
  }
28
29
  const modelsUrl = `${baseApiUrl}/v1/public/device-models?${params.toString()}`;
29
- const modelsResponse = await (0, fetch_1.fetchWithRetry)(modelsUrl);
30
- if (!modelsResponse.ok) {
31
- const errorMessage = `Request to ${modelsUrl} failed with status ${modelsResponse.status}`;
32
- operation.fail(errorMessage);
33
- throw new exceptions_1.NetworkError(errorMessage, modelsResponse.status);
30
+ let modelsData = (0, cache_1.cacheGet)(modelsUrl);
31
+ if (!modelsData) {
32
+ const modelsResponse = await (0, fetch_1.fetchWithRetry)(modelsUrl);
33
+ if (!modelsResponse.ok) {
34
+ const errorMessage = `Request to ${modelsUrl} failed with status ${modelsResponse.status}`;
35
+ operation.fail(errorMessage);
36
+ throw new exceptions_1.NetworkError(errorMessage, modelsResponse.status);
37
+ }
38
+ modelsData = (await modelsResponse.json());
39
+ (0, cache_1.cacheSet)(modelsUrl, modelsData);
34
40
  }
35
- const modelsData = (await modelsResponse.json());
36
41
  const manufacturersUrl = `${baseApiUrl}/v1/public/manufacturers`;
37
- const manufacturersResponse = await (0, fetch_1.fetchWithRetry)(manufacturersUrl);
38
- if (!manufacturersResponse.ok) {
39
- const errorMessage = `Request to ${manufacturersUrl} failed with status ${manufacturersResponse.status}`;
40
- operation.fail(errorMessage);
41
- throw new exceptions_1.NetworkError(errorMessage, manufacturersResponse.status);
42
+ let manufacturersData = (0, cache_1.cacheGet)(manufacturersUrl);
43
+ if (!manufacturersData) {
44
+ const manufacturersResponse = await (0, fetch_1.fetchWithRetry)(manufacturersUrl);
45
+ if (!manufacturersResponse.ok) {
46
+ const errorMessage = `Request to ${manufacturersUrl} failed with status ${manufacturersResponse.status}`;
47
+ operation.fail(errorMessage);
48
+ throw new exceptions_1.NetworkError(errorMessage, manufacturersResponse.status);
49
+ }
50
+ manufacturersData = (await manufacturersResponse.json());
51
+ (0, cache_1.cacheSet)(manufacturersUrl, manufacturersData);
42
52
  }
43
- const manufacturersData = (await manufacturersResponse.json());
44
53
  const manufacturersBySlug = new Map(manufacturersData.map((m) => [m.slug, m]));
45
54
  let items = modelsData.data;
46
55
  if (slugs.length > 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/deviceModel/getDeviceModels/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/deviceModel/getDeviceModels/index.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,8 @@ export declare const VehicleStateSchema: z.ZodObject<{
18
18
  }, z.core.$strip>;
19
19
  export type VehicleState = z.infer<typeof VehicleStateSchema>;
20
20
  export declare const VehicleStaticStateSchema: z.ZodObject<{
21
- capacity: z.ZodNumber;
21
+ capacity: z.ZodOptional<z.ZodNumber>;
22
+ keyPaired: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
22
23
  }, z.core.$strip>;
23
24
  export type VehicleStaticState = z.infer<typeof VehicleStaticStateSchema>;
24
25
  //# sourceMappingURL=vehicle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vehicle.d.ts","sourceRoot":"","sources":["../../src/deviceState/vehicle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;iBA4D7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,wBAAwB;;iBAKnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
1
+ {"version":3,"file":"vehicle.d.ts","sourceRoot":"","sources":["../../src/deviceState/vehicle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;iBA4D7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,wBAAwB;;;iBAenC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC"}
@@ -66,6 +66,14 @@ exports.VehicleStaticStateSchema = v4_1.z.object({
66
66
  /**
67
67
  * The rated maximum capacity of the vehicle battery in watt-hours (Wh).
68
68
  */
69
- capacity: v4_1.z.number().describe("The rated maximum capacity of the vehicle battery in watt-hours (Wh)."),
69
+ capacity: v4_1.z.number().optional().describe("The rated maximum capacity of the vehicle battery in watt-hours (Wh)."),
70
+ /**
71
+ * Whether the manufacturer virtual key has been paired with this vehicle.
72
+ * Null for manufacturers where virtual key pairing is not applicable.
73
+ */
74
+ keyPaired: v4_1.z
75
+ .boolean()
76
+ .nullish()
77
+ .describe("Whether the manufacturer virtual key has been paired with this vehicle. Null for manufacturers where virtual key pairing is not applicable."),
70
78
  });
71
79
  //# sourceMappingURL=vehicle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vehicle.js","sourceRoot":"","sources":["../../src/deviceState/vehicle.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAC3B,qCAAoD;AAEvC,QAAA,kBAAkB,GAAG,MAAC,CAAC,MAAM,CAAC;IACzC;;;OAGG;IACH,aAAa,EAAE,iCAAwB,CAAC,QAAQ,CAC9C,4GAA4G,CAC7G;IACD;;;OAGG;IACH,gBAAgB,EAAE,MAAC;SAChB,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,+FAA+F,CAAC;IAC5G;;;OAGG;IACH,iBAAiB,EAAE,MAAC,CAAC,GAAG;SACrB,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,qEAAqE,CAAC;IAClF;;;OAGG;IACH,WAAW,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IACvG;;;OAGG;IACH,MAAM,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;IAC9G;;;OAGG;IACH,WAAW,EAAE,MAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAClF;;;OAGG;IACH,cAAc,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC5G;;;OAGG;IACH,cAAc,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAC3G;;;OAGG;IACH,cAAc,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAChH;;;OAGG;IACH,KAAK,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,6DAA6D,CAAC;CAC7G,CAAC,CAAC;AAGU,QAAA,wBAAwB,GAAG,MAAC,CAAC,MAAM,CAAC;IAC/C;;OAEG;IACH,QAAQ,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;CACvG,CAAC,CAAC"}
1
+ {"version":3,"file":"vehicle.js","sourceRoot":"","sources":["../../src/deviceState/vehicle.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAC3B,qCAAoD;AAEvC,QAAA,kBAAkB,GAAG,MAAC,CAAC,MAAM,CAAC;IACzC;;;OAGG;IACH,aAAa,EAAE,iCAAwB,CAAC,QAAQ,CAC9C,4GAA4G,CAC7G;IACD;;;OAGG;IACH,gBAAgB,EAAE,MAAC;SAChB,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,+FAA+F,CAAC;IAC5G;;;OAGG;IACH,iBAAiB,EAAE,MAAC,CAAC,GAAG;SACrB,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,qEAAqE,CAAC;IAClF;;;OAGG;IACH,WAAW,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;IACvG;;;OAGG;IACH,MAAM,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;IAC9G;;;OAGG;IACH,WAAW,EAAE,MAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IAClF;;;OAGG;IACH,cAAc,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAC5G;;;OAGG;IACH,cAAc,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAC3G;;;OAGG;IACH,cAAc,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;IAChH;;;OAGG;IACH,KAAK,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,6DAA6D,CAAC;CAC7G,CAAC,CAAC;AAGU,QAAA,wBAAwB,GAAG,MAAC,CAAC,MAAM,CAAC;IAC/C;;OAEG;IACH,QAAQ,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uEAAuE,CAAC;IACjH;;;OAGG;IACH,SAAS,EAAE,MAAC;SACT,OAAO,EAAE;SACT,OAAO,EAAE;SACT,QAAQ,CACP,6IAA6I,CAC9I;CACJ,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from "./common/cache";
1
2
  export * from "./common/constants";
2
3
  export * from "./common/exceptions";
3
4
  export * from "./common/supportLevel";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AAEtC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
package/dist/index.js CHANGED
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./common/cache"), exports);
17
18
  __exportStar(require("./common/constants"), exports);
18
19
  __exportStar(require("./common/exceptions"), exports);
19
20
  __exportStar(require("./common/supportLevel"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,sDAAoC;AACpC,wDAAsC;AAEtC,gDAA8B;AAC9B,gDAA8B;AAC9B,+CAA6B;AAC7B,iDAA+B;AAC/B,4CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,qDAAmC;AACnC,sDAAoC;AACpC,wDAAsC;AAEtC,gDAA8B;AAC9B,gDAA8B;AAC9B,+CAA6B;AAC7B,iDAA+B;AAC/B,4CAA0B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/manufacturer/getManufacturer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAK3C,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAU,SAAS,sBAAsB,KAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAoClG,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/manufacturer/getManufacturer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAU,SAAS,sBAAsB,KAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAwClG,CAAC"}
@@ -6,6 +6,7 @@ const exceptions_1 = require("../../common/exceptions");
6
6
  const constants_1 = require("../../common/constants");
7
7
  const parseManufacturer_1 = require("../parseManufacturer");
8
8
  const fetch_1 = require("../../common/fetch");
9
+ const cache_1 = require("../../common/cache");
9
10
  /**
10
11
  * Retrieves a manufacturer from the Texture REST API.
11
12
  * @param options The options to use during the getManufacturer operation.
@@ -18,13 +19,17 @@ const getManufacturer = async (options) => {
18
19
  try {
19
20
  const url = `${baseApiUrl}/v1/public/manufacturers`;
20
21
  operation.start({ options });
21
- const response = await (0, fetch_1.fetchWithRetry)(url);
22
- if (!response.ok) {
23
- const errorMessage = `Request to ${url} failed with status ${response.status}`;
24
- operation.fail(errorMessage);
25
- throw new exceptions_1.NetworkError(errorMessage, response.status);
22
+ let data = (0, cache_1.cacheGet)(url);
23
+ if (!data) {
24
+ const response = await (0, fetch_1.fetchWithRetry)(url);
25
+ if (!response.ok) {
26
+ const errorMessage = `Request to ${url} failed with status ${response.status}`;
27
+ operation.fail(errorMessage);
28
+ throw new exceptions_1.NetworkError(errorMessage, response.status);
29
+ }
30
+ data = (await response.json());
31
+ (0, cache_1.cacheSet)(url, data);
26
32
  }
27
- const data = (await response.json());
28
33
  const match = data.find((m) => m.slug === slug);
29
34
  if (!match) {
30
35
  operation.fail({ slug });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/manufacturer/getManufacturer/index.ts"],"names":[],"mappings":";;;AAAA,gDAAyD;AAEzD,wDAAuD;AAEvD,sDAA6D;AAC7D,4DAAyD;AACzD,8CAAoD;AAkBpD;;;;GAIG;AACI,MAAM,eAAe,GAAG,KAAK,EAAE,OAA+B,EAAgC,EAAE;IACrG,MAAM,aAAa,GAAG,mBAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC7D,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,+BAAmB,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;IACnF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,wCAAwC,CAAC,CAAC;IAE7E,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,UAAU,0BAA0B,CAAC;QACpD,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAc,EAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,YAAY,GAAG,cAAc,GAAG,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC/E,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7B,MAAM,IAAI,yBAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA8B,CAAC;QAClE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAEhD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YACxB,SAAS,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAG,IAAA,qCAAiB,EAAC,KAAK,CAAC,CAAC;QAE9C,SAAS,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;QAChC,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,SAAS,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;QAC5F,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AApCW,QAAA,eAAe,mBAoC1B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/manufacturer/getManufacturer/index.ts"],"names":[],"mappings":";;;AAAA,gDAAyD;AAEzD,wDAAuD;AAEvD,sDAA6D;AAC7D,4DAAyD;AACzD,8CAAoD;AACpD,8CAAwD;AAkBxD;;;;GAIG;AACI,MAAM,eAAe,GAAG,KAAK,EAAE,OAA+B,EAAgC,EAAE;IACrG,MAAM,aAAa,GAAG,mBAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC7D,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,+BAAmB,EAAE,MAAM,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;IACnF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,wCAAwC,CAAC,CAAC;IAE7E,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,UAAU,0BAA0B,CAAC;QACpD,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAE7B,IAAI,IAAI,GAAG,IAAA,gBAAQ,EAA4B,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAc,EAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,YAAY,GAAG,cAAc,GAAG,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC;gBAC/E,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC7B,MAAM,IAAI,yBAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxD,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA8B,CAAC;YAC5D,IAAA,gBAAQ,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAEhD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YACzB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YACxB,SAAS,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAG,IAAA,qCAAiB,EAAC,KAAK,CAAC,CAAC;QAE9C,SAAS,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;QAChC,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,SAAS,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;QAC5F,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAxCW,QAAA,eAAe,mBAwC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/manufacturer/getManufacturers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IAC9B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAU,UAAS,uBAA4B,KAAG,OAAO,CAAC,wBAAwB,CAoD9G,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/manufacturer/getManufacturers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAIzD,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,EAAE,CAAC;IAC9B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAU,UAAS,uBAA4B,KAAG,OAAO,CAAC,wBAAwB,CA0D9G,CAAC"}
@@ -6,6 +6,7 @@ const exceptions_1 = require("../../common/exceptions");
6
6
  const constants_1 = require("../../common/constants");
7
7
  const parseManufacturer_1 = require("../parseManufacturer");
8
8
  const fetch_1 = require("../../common/fetch");
9
+ const cache_1 = require("../../common/cache");
9
10
  /**
10
11
  * Retrieves a collection of manufacturers from the Texture REST API.
11
12
  * @param options The options to use during the getManufacturers operation.
@@ -18,13 +19,18 @@ const getManufacturers = async (options = {}) => {
18
19
  try {
19
20
  const url = `${baseApiUrl}/v1/public/manufacturers`;
20
21
  operation.start({ options });
21
- const response = await (0, fetch_1.fetchWithRetry)(url);
22
- if (!response.ok) {
23
- const errorMessage = `Request to ${url} failed with status ${response.status}`;
24
- operation.fail(errorMessage);
25
- throw new exceptions_1.NetworkError(errorMessage, response.status);
22
+ // Check in-memory cache first
23
+ let data = (0, cache_1.cacheGet)(url);
24
+ if (!data) {
25
+ const response = await (0, fetch_1.fetchWithRetry)(url);
26
+ if (!response.ok) {
27
+ const errorMessage = `Request to ${url} failed with status ${response.status}`;
28
+ operation.fail(errorMessage);
29
+ throw new exceptions_1.NetworkError(errorMessage, response.status);
30
+ }
31
+ data = (await response.json());
32
+ (0, cache_1.cacheSet)(url, data);
26
33
  }
27
- const data = (await response.json());
28
34
  // Apply client-side filters
29
35
  let filtered = data;
30
36
  if (slugs.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/manufacturer/getManufacturers/index.ts"],"names":[],"mappings":";;;AAAA,gDAAyD;AAEzD,wDAAuD;AAEvD,sDAA6D;AAC7D,4DAAyD;AAEzD,8CAAoD;AAwCpD;;;;GAIG;AACI,MAAM,gBAAgB,GAAG,KAAK,EAAE,UAAmC,EAAE,EAAqC,EAAE;IACjH,MAAM,aAAa,GAAG,mBAAU,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IAC9D,MAAM,EACJ,KAAK,GAAG,EAAE,EACV,IAAI,GAAG,CAAC,EACR,UAAU,GAAG,+BAAmB,EAChC,MAAM,GAAG,aAAa,EACtB,KAAK,GAAG,EAAE,EACV,YAAY,GACb,GAAG,OAAO,CAAC;IACZ,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC;IAE9E,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,UAAU,0BAA0B,CAAC;QACpD,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAc,EAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,YAAY,GAAG,cAAc,GAAG,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC/E,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC7B,MAAM,IAAI,yBAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxD,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA8B,CAAC;QAElE,4BAA4B;QAC5B,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,YAA4B,CAAC,CAAC,CAAC;QAC3F,CAAC;QAED,+BAA+B;QAC/B,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;QACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,KAAK,CAAC,CAAC;QAE7D,MAAM,MAAM,GAA6B;YACvC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAA,qCAAiB,EAAC,GAAG,CAAC,CAAC;YACzD,KAAK,EAAE,UAAU;YACjB,KAAK;YACL,IAAI;YACJ,SAAS;SACV,CAAC;QAEF,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,SAAS,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;QAC7F,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AApDW,QAAA,gBAAgB,oBAoD3B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/manufacturer/getManufacturers/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@texturehq/device",
3
- "version": "2.0.0",
3
+ "version": "2.2.0",
4
4
  "author": "Will Laeri <will@texture.energy>",
5
5
  "description": "A type-safe client for validating device data",
6
6
  "main": "dist/index.js",