@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 CHANGED
@@ -1,9 +1,9 @@
1
- ## [2.3.1-cx12-5910.1](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/compare/v2.3.0...v2.3.1-cx12-5910.1) (2022-10-25)
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
- * window object doesn't exist in lambda ([e092ad6](https://code.tls.nuskin.io/ns-am/product/js-libs/ns-product-lib/commit/e092ad6ac2fda7d550c5df6c360eb52e044834a2))
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-cx12-5910.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
- "axios-mock-adapter": "1.18.2",
28
- "jest": "25.1.0",
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 env = getEnvironmentFromUrl(window ? window.location.host : null);
8
- const envConfig = env ? config.getCredentials(env) : null;
9
- const baseURL = env ? `${envConfig.url}/stacks/${envConfig.apiKey}?environment=${envConfig.env}` : null;
10
- const headers = {
11
- 'access_token': env ? `${envConfig.accessToken}` : '',
12
- 'Content-Type': 'application/json'
13
- };
14
- const http = axios.create({ baseURL, headers });
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);
@@ -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',