@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 +1 -1
- package/README.md +1 -5
- package/__tests__/api.spec.js +40 -18
- package/config/dev.json +3 -1
- package/config/prod.json +3 -1
- package/config/stage.json +3 -1
- package/config/test.json +3 -1
- package/docs/CHANGELOG.md +1 -1
- package/package.json +1 -2
- package/src/api.js +42 -24
- package/gl-sbom-npm-yarn.cdx.json +0 -10278
package/.releaserc
CHANGED
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
|
|
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()
|
package/__tests__/api.spec.js
CHANGED
|
@@ -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
|
-
|
|
16
|
-
|
|
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
|
|
63
|
-
|
|
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
|
|
76
|
-
|
|
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
|
|
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
|
|
99
|
-
|
|
100
|
-
|
|
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
|
|
113
|
-
|
|
114
|
-
|
|
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
package/config/prod.json
CHANGED
package/config/stage.json
CHANGED
package/config/test.json
CHANGED
package/docs/CHANGELOG.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
# 1.0.0 (
|
|
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": "
|
|
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'}
|
|
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 (!
|
|
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
|
-
|
|
186
|
+
envrnmnt = _getEnv();
|
|
156
187
|
}
|
|
157
188
|
|
|
158
189
|
// If the environment requested hasn't changed return the stack we already have
|
|
159
|
-
if (
|
|
190
|
+
if (envrnmnt === env && Stack) {
|
|
160
191
|
return Stack;
|
|
161
192
|
}
|
|
162
193
|
|
|
163
|
-
env =
|
|
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
|
};
|