@nuskin/contentstack-lib 1.0.0 → 2.0.0-pa-954.2

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/.releaserc CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "branches": [
3
- "master"
3
+ "master", {"name":"PA-954", "channel":"prerelease", "prerelease":"pa-954"}
4
4
  ],
5
5
  "plugins": [
6
6
  "@semantic-release/release-notes-generator",
package/README.md CHANGED
@@ -25,11 +25,7 @@ yarn add @nuskin/contentstack-lib
25
25
  ## Example usage
26
26
 
27
27
  ```js
28
- const { getStack, init } = require('@nuskin/contentstack-lib')
29
-
30
- // Initialize the module with params needed for connecting to contentstack
31
- // These fields can be gotten from the parameter store
32
- init({env, apiKey, deliveryToken})
28
+ const { getStack } = require('@nuskin/contentstack-lib')
33
29
 
34
30
  // Call getStack to get the stack object
35
31
  const Stack = getStack()
@@ -8,12 +8,38 @@ const singleCheckoutAdrStringsCommon = require('./resources/singleCheckoutAdrStr
8
8
  const singleCheckoutCartStrings = require('./resources/singleCheckoutCartStrings.json');
9
9
  const singleCheckoutAdrCamelResult = require('./resources/singleCheckoutAdrStringsCamel.json');
10
10
  const singleCheckoutCartCamelResult = require('./resources/singleCheckoutCartStringsCamel.json');
11
+ const {contentstack: devEnvConfig} = require(`../config/dev.json`);
12
+ const {contentstack: testEnvConfig} = require(`../config/test.json`);
13
+ const {contentstack: stageEnvConfig} = require(`../config/stage.json`);
14
+ const {contentstack: prodEnvConfig} = require(`../config/prod.json`);
11
15
  const mockPromiseResult = jest.fn();
12
16
  const mockSinglePromiseResult = jest.fn();
13
17
  const mockStack = jest.fn();
14
18
 
15
- const apiKey = 'testkey';
16
- const deliveryToken = 'testDeliveryToken';
19
+ function getConfig(env) {
20
+ let config = {};
21
+
22
+ switch (env) {
23
+ case 'dev': {
24
+ config = devEnvConfig;
25
+ break;
26
+ }
27
+ case 'test': {
28
+ config = testEnvConfig;
29
+ break;
30
+ }
31
+ case 'stage': {
32
+ config = stageEnvConfig;
33
+ break;
34
+ }
35
+ case 'prod': {
36
+ config = prodEnvConfig;
37
+ break;
38
+ }
39
+ }
40
+
41
+ return config;
42
+ }
17
43
 
18
44
  beforeEach(() => {
19
45
  mockStack.mockImplementation(() => ({
@@ -59,9 +85,8 @@ describe("ContentstackApi", () => {
59
85
 
60
86
  test("getSingletonEntries in camelcase", async () => {
61
87
  mockResults();
62
- const {getStack, init} = require('../src/api');
63
- init({env: 'dev'})
64
- const Stack = getStack();
88
+ const {getStack} = require('../src/api');
89
+ const Stack = getStack('dev');
65
90
  const [checkoutAdrStrings, checkoutCartStrings] = await Stack.getSingletonEntries({contentTypeUIDs: ['checkout_adr_strings', 'checkout_cart_strings'], language: 'en', camelcase: true});
66
91
  expect(checkoutAdrStrings).toStrictEqual(singleCheckoutAdrCamelResult);
67
92
  expect(checkoutCartStrings).toStrictEqual(singleCheckoutCartCamelResult);
@@ -72,9 +97,8 @@ describe("ContentstackApi", () => {
72
97
  mockSinglePromiseResult.mockResolvedValueOnce(singleCheckoutAdrStringsCommon);
73
98
  // The second api call is for en_US
74
99
  mockSinglePromiseResult.mockResolvedValueOnce(singleCheckoutAdrStrings);
75
- const {getStack, init} = require('../src/api');
76
- init({})
77
- const Stack = getStack();
100
+ const {getStack} = require('../src/api');
101
+ const Stack = getStack('dev');
78
102
  const [checkoutAdrStrings] = await Stack.getSingletonEntries({contentTypeUIDs: ['checkout_adr_strings'], language: 'en', country: 'US', mergeWithFallback: true});
79
103
  expect(checkoutAdrStrings.overridden_value).toEqual("This value overrides the common value");
80
104
  expect(checkoutAdrStrings.new_value).toEqual("This value only exists in en_US");
@@ -83,8 +107,7 @@ describe("ContentstackApi", () => {
83
107
 
84
108
  test("getSingletonEntries throws error", async () => {
85
109
  mockResults();
86
- const {getStack, init} = require('../src/api');
87
- init({deliveryToken, apiKey});
110
+ const {getStack} = require('../src/api');
88
111
  const Stack = getStack();
89
112
  try {
90
113
  await Stack.getSingletonEntries({});
@@ -95,10 +118,9 @@ describe("ContentstackApi", () => {
95
118
 
96
119
  test("getStack initialized using sdk", () => {
97
120
  mockResults();
98
- const {getStack, init} = require('../src/api');
99
- init({apiKey, deliveryToken, env: 'test'});
100
- getStack();
101
- expect(mockStack).toHaveBeenCalledWith({api_key: apiKey, delivery_token: deliveryToken, environment: 'test'});
121
+ const {getStack} = require('../src/api');
122
+ getStack('dev');
123
+ expect(mockStack).toHaveBeenCalledWith({api_key: devEnvConfig.apiKey, delivery_token: devEnvConfig.deliveryToken, environment: 'public-dev'});
102
124
  });
103
125
 
104
126
  test('getStack without environment', () => {
@@ -106,13 +128,13 @@ describe("ContentstackApi", () => {
106
128
  const hostnames = ['dev.nuskin.com', 'test.nuskin.com', 'stage.nuskin.com', 'www.nuskin.com'];
107
129
  const env = ['dev', 'test', 'stage', 'prod'];
108
130
  hostnames.forEach((hostname, index) => {
131
+ const csCfg = getConfig(env[index]);
109
132
  delete global.window.location;
110
133
  global.window = Object.create(window);
111
134
  global.window.location = { hostname };
112
- const {getStack, init} = require('../src/api');
113
- init({apiKey, deliveryToken})
114
- getStack();
115
- expect(mockStack).toHaveBeenCalledWith({api_key: apiKey, delivery_token: deliveryToken, environment: env[index]});
135
+ const {getStack} = require('../src/api');
136
+ getStack(env[index]);
137
+ expect(mockStack).toHaveBeenCalledWith({api_key: csCfg.apiKey, delivery_token: csCfg.deliveryToken, environment: csCfg.environment});
116
138
  })
117
139
  })
118
140
  });
package/config/dev.json CHANGED
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "contentstack": {
3
3
  "baseUrl": "https://cdn.contentstack.io",
4
- "environment": "public-dev"
4
+ "environment": "public-dev",
5
+ "apiKey": "blt7d4c4f4a1bf5a819",
6
+ "deliveryToken": "csb0f10375c807538aad91a5e7"
5
7
  }
6
8
  }
package/config/prod.json CHANGED
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "contentstack": {
3
3
  "baseUrl": "https://cdn.contentstack.io",
4
- "environment": "public-prod"
4
+ "environment": "public-prod",
5
+ "apiKey": "blt7d4c4f4a1bf5a819",
6
+ "deliveryToken": "cs7029c5e32f0e99978efc683d"
5
7
  }
6
8
  }
package/config/stage.json CHANGED
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "contentstack": {
3
3
  "baseUrl": "https://cdn.contentstack.io",
4
- "environment": "public-stage"
4
+ "environment": "public-stage",
5
+ "apiKey": "blt7d4c4f4a1bf5a819",
6
+ "deliveryToken": "cs4c1de6b00d219e11c4863215"
5
7
  }
6
8
  }
package/config/test.json CHANGED
@@ -1,6 +1,8 @@
1
1
  {
2
2
  "contentstack": {
3
3
  "baseUrl": "https://cdn.contentstack.io",
4
- "environment": "public-test"
4
+ "environment": "public-test",
5
+ "apiKey": "blt7d4c4f4a1bf5a819",
6
+ "deliveryToken": "cs9a111e7615cf94011266b5e6"
5
7
  }
6
8
  }
package/docs/CHANGELOG.md CHANGED
@@ -1 +1 @@
1
- # 1.0.0 (2024-09-30)
1
+ # [2.0.0-pa-954.2](https://code.tls.nuskin.io/ns-am/utility/npm/contentstack-lib/compare/v2.0.0-pa-954.1...v2.0.0-pa-954.2) (2026-03-23)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuskin/contentstack-lib",
3
- "version": "1.0.0",
3
+ "version": "2.0.0-pa-954.2",
4
4
  "description": "This project contains configuration and api code to access Contentstack, to be shared between the backend (AWS Lambda) and frontend (Vue, etc).",
5
5
  "main": "src/index.js",
6
6
  "scripts": {
@@ -29,7 +29,6 @@
29
29
  "prettier": "1.19.1"
30
30
  },
31
31
  "dependencies": {
32
- "axios": "1.7.7",
33
32
  "contentstack": "^3.16.0"
34
33
  }
35
34
  }
package/src/api.js CHANGED
@@ -1,13 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  const Contentstack = require('contentstack');
4
+ const {contentstack: devEnvConfig} = require(`../config/dev.json`);
5
+ const {contentstack: testEnvConfig} = require(`../config/test.json`);
6
+ const {contentstack: stageEnvConfig} = require(`../config/stage.json`);
7
+ const {contentstack: prodEnvConfig} = require(`../config/prod.json`);
8
+
4
9
  let env = null;
5
10
  let Stack = null;
6
11
 
7
- let api_key;
8
- let delivery_token;
9
- let environment;
10
-
11
12
  const COMMON_LANGUAGES = {
12
13
  'da': 'da-dk',
13
14
  'id': 'id-id',
@@ -21,6 +22,36 @@ const COMMON_LANGUAGES = {
21
22
  'tr': 'tr-tr'
22
23
  };
23
24
 
25
+ /**
26
+ * Gets the correct contentstack config settings
27
+ * @param {string} env
28
+ * @returns {object}
29
+ */
30
+ function getConfig(env) {
31
+ let config = {};
32
+
33
+ switch (env) {
34
+ case 'dev': {
35
+ config = devEnvConfig;
36
+ break;
37
+ }
38
+ case 'test': {
39
+ config = testEnvConfig;
40
+ break;
41
+ }
42
+ case 'stage': {
43
+ config = stageEnvConfig;
44
+ break;
45
+ }
46
+ case 'prod': {
47
+ config = prodEnvConfig;
48
+ break;
49
+ }
50
+ }
51
+
52
+ return config;
53
+ }
54
+
24
55
  /**
25
56
  * Convert string from snake case to camel case
26
57
  * @param {string} snakeCasedString
@@ -144,23 +175,24 @@ async function getSingletonEntries(options) {
144
175
 
145
176
  /**
146
177
  * Returns contentstack Stack object initialized with the api key, deliveryToken, and extended with custom functionality
147
- * @param {'dev' | 'test' | 'stage' | 'prod'} environment
178
+ * @param {'dev' | 'test' | 'stage' | 'prod'} envrnmnt
148
179
  * @return {Object} Stack - contentstack Stack sdk object with additional getStrings function
149
180
  */
150
- function getStack() {
151
- if (!environment) {
181
+ function getStack(envrnmnt) {
182
+ if (!envrnmnt) {
152
183
  if (!window || !window.location) {
153
184
  throw new Error('Environment must be passed into getStack');
154
185
  }
155
- environment = _getEnv();
186
+ envrnmnt = _getEnv();
156
187
  }
157
188
 
158
189
  // If the environment requested hasn't changed return the stack we already have
159
- if (environment === env && Stack) {
190
+ if (envrnmnt === env && Stack) {
160
191
  return Stack;
161
192
  }
162
193
 
163
- env = environment;
194
+ env = envrnmnt;
195
+ const {apiKey: api_key, deliveryToken: delivery_token, environment} = getConfig(env)
164
196
  Stack = Contentstack.Stack({api_key, delivery_token, environment})
165
197
 
166
198
  // extend the Stack with a custom function to get translations
@@ -169,20 +201,6 @@ function getStack() {
169
201
  return Stack;
170
202
  }
171
203
 
172
- /**
173
- * init needs to be called first before getStack can be called
174
- *
175
- * @param {string} env - environment for the getStack call
176
- * @param {stirng} apiKey - api_key for the getStack call
177
- * @param {string} deliveryToken - delivery_token for the getStack call
178
- */
179
- function init({env, apiKey, deliveryToken}) {
180
- environment = env;
181
- api_key = apiKey;
182
- delivery_token = deliveryToken;
183
- }
184
-
185
204
  module.exports = {
186
- init,
187
205
  getStack
188
206
  };