@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.
- package/dist/common/cache.d.ts +20 -0
- package/dist/common/cache.d.ts.map +1 -0
- package/dist/common/cache.js +40 -0
- package/dist/common/cache.js.map +1 -0
- package/dist/deviceModel/getDeviceModel/index.d.ts.map +1 -1
- package/dist/deviceModel/getDeviceModel/index.js +21 -12
- package/dist/deviceModel/getDeviceModel/index.js.map +1 -1
- package/dist/deviceModel/getDeviceModelByManufacturerSlug/index.d.ts.map +1 -1
- package/dist/deviceModel/getDeviceModelByManufacturerSlug/index.js +21 -12
- package/dist/deviceModel/getDeviceModelByManufacturerSlug/index.js.map +1 -1
- package/dist/deviceModel/getDeviceModels/index.d.ts.map +1 -1
- package/dist/deviceModel/getDeviceModels/index.js +21 -12
- package/dist/deviceModel/getDeviceModels/index.js.map +1 -1
- package/dist/deviceState/vehicle.d.ts +2 -1
- package/dist/deviceState/vehicle.d.ts.map +1 -1
- package/dist/deviceState/vehicle.js +9 -1
- package/dist/deviceState/vehicle.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/manufacturer/getManufacturer/index.d.ts.map +1 -1
- package/dist/manufacturer/getManufacturer/index.js +11 -6
- package/dist/manufacturer/getManufacturer/index.js.map +1 -1
- package/dist/manufacturer/getManufacturers/index.d.ts.map +1 -1
- package/dist/manufacturer/getManufacturers/index.js +12 -6
- package/dist/manufacturer/getManufacturers/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -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;
|
|
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
|
-
|
|
23
|
-
if (!
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
36
|
-
if (!
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
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;
|
|
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;
|
|
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
|
-
|
|
23
|
-
if (!
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
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
|
-
|
|
36
|
-
if (!
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
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":";;;AAAA,gDAAyD;AAEzD,wDAAuD;AACvD,0CAA6D;AAC7D,sDAA6D;AAC7D,8CAAoD;
|
|
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;
|
|
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
|
-
|
|
30
|
-
if (!
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
38
|
-
if (!
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
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":";;;AAAA,gDAAyD;AAEzD,wDAAuD;AACvD,0CAA6D;AAC7D,sDAA6D;AAC7D,8CAAoD;
|
|
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
|
|
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;
|
|
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
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
22
|
-
if (!
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
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;
|
|
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;
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/manufacturer/getManufacturers/index.ts"],"names":[],"mappings":"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"}
|