@nuskin/ns-product-lib 2.3.1-cx12-5910.1 → 2.3.1-fix.1
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/CHANGELOG.md +2 -2
- package/package.json +4 -3
- package/src/contentstack/contentstack.js +52 -14
- package/src/productData.js +0 -1
package/CHANGELOG.md
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
## [2.3.1-
|
1
|
+
## [2.3.1-fix.1](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/compare/v2.3.0...v2.3.1-fix.1) (2022-11-04)
|
2
2
|
|
3
3
|
|
4
4
|
### Fix
|
5
5
|
|
6
|
-
*
|
6
|
+
* use platform-specific values when initialized ([18de006](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/18de006211ab396f4d7fa40d0089c8e185d9cee9))
|
7
7
|
|
8
8
|
# [2.3.0](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/compare/v2.2.0...v2.3.0) (2022-10-14)
|
9
9
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@nuskin/ns-product-lib",
|
3
|
-
"version": "2.3.1-
|
3
|
+
"version": "2.3.1-fix.1",
|
4
4
|
"description": "This project contains shared Product models and code between the backend and frontend.",
|
5
5
|
"main": "src/index.js",
|
6
6
|
"scripts": {
|
@@ -19,13 +19,14 @@
|
|
19
19
|
"license": "ISC",
|
20
20
|
"homepage": "https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/blob/master/README.md",
|
21
21
|
"devDependencies": {
|
22
|
+
"axios-mock-adapter": "1.21.2",
|
22
23
|
"eslint": "5.16.0",
|
23
24
|
"eslint-config-google": "0.14.0",
|
24
25
|
"eslint-config-prettier": "4.1.0",
|
25
26
|
"eslint-plugin-json": "2.1.1",
|
26
27
|
"eslint-plugin-prettier": "3.1.2",
|
27
|
-
"
|
28
|
-
"jest": "
|
28
|
+
"jest": "29.2.2",
|
29
|
+
"jest-environment-jsdom": "29.2.2",
|
29
30
|
"jest-sonar-reporter": "2.0.0",
|
30
31
|
"prettier": "1.19.1"
|
31
32
|
},
|
@@ -4,14 +4,51 @@ const { getEnvironmentFromUrl } = require('@nuskin/ns-common-lib');
|
|
4
4
|
const config = require('./environment');
|
5
5
|
|
6
6
|
// contentstack HTTP service
|
7
|
-
const
|
8
|
-
const
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
'
|
13
|
-
|
14
|
-
|
7
|
+
const platform = usePlatformSpecificVariables();
|
8
|
+
const http = axios.create({ baseURL: platform.baseURL, headers: platform.headers });
|
9
|
+
|
10
|
+
// usePlatformVariables returns an object with platform-specific values; defaults to Lambda environment
|
11
|
+
function usePlatformSpecificVariables() {
|
12
|
+
if (typeof window !== 'undefined') {
|
13
|
+
return useWebEnvironment();
|
14
|
+
}
|
15
|
+
|
16
|
+
if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {
|
17
|
+
return useMobileEnvironment();
|
18
|
+
}
|
19
|
+
|
20
|
+
return useLambdaEnvironment();
|
21
|
+
}
|
22
|
+
|
23
|
+
function useWebEnvironment() {
|
24
|
+
console.log('web');
|
25
|
+
const env = getEnvironmentFromUrl(window.location.host);
|
26
|
+
const envConfig = config.getCredentials(env);
|
27
|
+
const baseURL = `${envConfig.url}/stacks/${envConfig.apiKey}?environment=${envConfig.env}`;
|
28
|
+
const headers = {
|
29
|
+
'access_token': `${envConfig.accessToken}`,
|
30
|
+
'Content-Type': 'application/json'
|
31
|
+
};
|
32
|
+
|
33
|
+
return { baseURL, env, headers }
|
34
|
+
}
|
35
|
+
|
36
|
+
function useMobileEnvironment() {
|
37
|
+
// ...
|
38
|
+
}
|
39
|
+
|
40
|
+
function useLambdaEnvironment() {
|
41
|
+
console.log('lambda');
|
42
|
+
const env = {};
|
43
|
+
const baseURL = `contentstack-call-for-lambda`;
|
44
|
+
const headers = {
|
45
|
+
'access_token': `contentstack-access-token-for-lambda`,
|
46
|
+
'Content-Type': 'application/json'
|
47
|
+
};
|
48
|
+
|
49
|
+
return { baseURL, env, headers }
|
50
|
+
}
|
51
|
+
|
15
52
|
|
16
53
|
// in-memory caching
|
17
54
|
const cacheKeys = { aemConfig: 'aemConfig', equinoxMarkets: 'equinoxMarkets', kongUrl: 'kongUrl' };
|
@@ -19,7 +56,7 @@ const cacheTTLInSeconds = 30 * 1000;
|
|
19
56
|
const cache = {
|
20
57
|
[cacheKeys.aemConfig]: { data: null, ttl: Date.now() + cacheTTLInSeconds },
|
21
58
|
[cacheKeys.equinoxMarkets]: { data: null, ttl: Date.now() + cacheTTLInSeconds },
|
22
|
-
[cacheKeys.kongUrl]: { data: null, ttl: Date.now() + cacheTTLInSeconds}
|
59
|
+
[cacheKeys.kongUrl]: { data: null, ttl: Date.now() + cacheTTLInSeconds }
|
23
60
|
};
|
24
61
|
|
25
62
|
/**
|
@@ -67,7 +104,7 @@ function getCachedData(key) {
|
|
67
104
|
async function getAEMConfig() {
|
68
105
|
try {
|
69
106
|
if (isCacheExpired(cacheKeys.aemConfig)) {
|
70
|
-
const marketConfig = `market_config_${env}`;
|
107
|
+
const marketConfig = `market_config_${platform.env}`;
|
71
108
|
const variables = { uid: 'blt52b0b83a89763791' };
|
72
109
|
const query = `query AemConfigByUid($uid: String!) {
|
73
110
|
aem_config(uid: $uid) {
|
@@ -114,7 +151,7 @@ async function getAEMConfig() {
|
|
114
151
|
async function getEquinoxMarkets() {
|
115
152
|
try {
|
116
153
|
if (isCacheExpired(cacheKeys.equinoxMarkets)) {
|
117
|
-
const marketConfig = `${env}_markets`;
|
154
|
+
const marketConfig = `${platform.env}_markets`;
|
118
155
|
const variables = { uid: 'blt5633ff9e560f14ef' };
|
119
156
|
const query = `query EquinoxMarketsByUid($uid: String!) {
|
120
157
|
equinox_markets(uid: $uid) {
|
@@ -151,7 +188,7 @@ async function getKongUrl() {
|
|
151
188
|
const query = `query KongUrlByUid($uid: String!) {
|
152
189
|
equinox_markets(uid: $uid) {
|
153
190
|
kong_urls {
|
154
|
-
${env}
|
191
|
+
${platform.env}
|
155
192
|
}
|
156
193
|
}
|
157
194
|
}`;
|
@@ -160,9 +197,9 @@ async function getKongUrl() {
|
|
160
197
|
data: { variables, query }
|
161
198
|
});
|
162
199
|
|
163
|
-
setCachedData(cacheKeys.kongUrl, data.equinox_markets.kong_urls[env]);
|
200
|
+
setCachedData(cacheKeys.kongUrl, data.equinox_markets.kong_urls[platform.env]);
|
164
201
|
}
|
165
|
-
|
202
|
+
|
166
203
|
return getCachedData(cacheKeys.kongUrl);
|
167
204
|
} catch (error) {
|
168
205
|
console.error(error);
|
@@ -199,6 +236,7 @@ async function contentstackService(config) {
|
|
199
236
|
|
200
237
|
try {
|
201
238
|
const response = await http.post('', data);
|
239
|
+
console.log(response);
|
202
240
|
return response.data
|
203
241
|
} catch (error) {
|
204
242
|
console.error(error.response.data.errors);
|
package/src/productData.js
CHANGED
@@ -30,7 +30,6 @@ const ProductData = {
|
|
30
30
|
axios.defaults.withCredentials = true;
|
31
31
|
|
32
32
|
const url = await contentstack.getKongUrl() + `/orchestrationservices/storefront/catalogs/search/`;
|
33
|
-
console.log("Dynamic URL", url)
|
34
33
|
const href = `${url}?filter=${encodeURI(filter)}`;
|
35
34
|
const response = await axios.request({
|
36
35
|
method: 'get',
|