Skip to content

Commit 21bd585

Browse files
authored
Merge pull request #113 from contentstack/staging
Hotfix | 16-01-2025 | setLocale | Release
2 parents f2728bb + 97da918 commit 21bd585

File tree

10 files changed

+108
-288
lines changed

10 files changed

+108
-288
lines changed

package-lock.json

Lines changed: 61 additions & 249 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@contentstack/delivery-sdk",
3-
"version": "4.4.4",
3+
"version": "4.4.5",
44
"type": "module",
55
"license": "MIT",
66
"main": "./dist/legacy/index.cjs",
@@ -33,7 +33,7 @@
3333
"build:types": "node tools/cleanup types && tsc -p config/tsconfig.types.json"
3434
},
3535
"dependencies": {
36-
"@contentstack/core": "^1.1.3",
36+
"@contentstack/core": "^1.1.4",
3737
"@contentstack/utils": "^1.3.15",
3838
"@types/humps": "^2.0.6",
3939
"axios": "^1.7.9",

src/lib/cache.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ export async function handleRequest(
1717
const apiResponse = await defaultAdapter(config);
1818

1919
if (apiResponse.data) {
20-
cacheStore.setItem(apiKey, apiResponse.data, config.contentTypeUid, cacheOptions.maxAge);
20+
cacheStore.setItem(apiKey, JSON.parse(apiResponse.data), config.contentTypeUid, cacheOptions.maxAge);
2121

22-
return resolve(apiResponse.data);
22+
return resolve({data: JSON.parse(apiResponse.data)});
2323
} else {
2424
const cacheResponse = cacheStore.getItem(apiKey, config.contentTypeUid);
2525
if (cacheResponse)
@@ -48,9 +48,9 @@ export async function handleRequest(
4848
const apiResponse = await defaultAdapter(config);
4949

5050
if (apiResponse.data) {
51-
cacheStore.setItem(apiKey, apiResponse.data, config.contentTypeUid, cacheOptions.maxAge);
51+
cacheStore.setItem(apiKey, JSON.parse(apiResponse.data), config.contentTypeUid, cacheOptions.maxAge);
5252

53-
return resolve(apiResponse.data);
53+
return resolve({data: JSON.parse(apiResponse.data)});
5454
} else {
5555
return reject(apiResponse);
5656
}
@@ -70,9 +70,9 @@ export async function handleRequest(
7070
const apiResponse = await defaultAdapter(config);
7171

7272
if (apiResponse.data) {
73-
cacheStore.setItem(apiKey, apiResponse.data, config.contentTypeUid, cacheOptions.maxAge);
73+
cacheStore.setItem(apiKey, JSON.parse(apiResponse.data), config.contentTypeUid, cacheOptions.maxAge);
7474

75-
return resolve(apiResponse.data);
75+
return resolve({data: JSON.parse(apiResponse.data)});
7676
} else {
7777
return reject(apiResponse);
7878
}

src/lib/contentstack.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ export function stack(config: StackConfig): StackClass {
5959
throw new Error('Environment for Stack is required');
6060
}
6161

62+
if (config.locale) {
63+
defaultConfig.params.locale = config.locale;
64+
}
65+
6266
if (config.live_preview) {
6367
if (Utility.isBrowser()) {
6468
const params = new URL(document.location.toString()).searchParams;

src/lib/stack.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ export class Stack {
114114
*/
115115
setLocale(locale: string) {
116116
this.config.locale = locale;
117+
this._client.defaults.params.locale = locale;
117118
}
118119

119120
/**
@@ -158,10 +159,11 @@ export class Stack {
158159
};
159160
} else {
160161
livePreviewParams = {
161-
live_preview: null,
162-
contentTypeUid: null,
163-
entryUid: null,
164-
preview_timestamp: null,
162+
...livePreviewParams,
163+
live_preview: "",
164+
contentTypeUid: "",
165+
entryUid: "",
166+
preview_timestamp: "",
165167
include_applied_variants: false,
166168
};
167169
}

src/persistance/config/persistance-storage-config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ import { StorageType } from '../types/storage-type';
33

44
export type PersistanceStoreConfig =
55
| (Store & PersistanceStoreOptions)
6-
| ({ storageType?: StorageType } & PersistanceStoreOptions);
6+
| ({ storeType?: StorageType } & PersistanceStoreOptions);
77
export interface Store {
88
storage: Storage;
9-
storageType: 'customStorage';
9+
storeType: 'customStorage';
1010
}
1111
export interface PersistanceStoreOptions {
1212
maxAge?: number; // default 24 hrs

src/persistance/persistance-store.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export class PersistanceStore {
1111

1212
constructor(config?: PersistanceStoreConfig) {
1313
let defaultConfig: PersistanceStoreConfig = {
14-
storageType: 'localStorage',
14+
storeType: 'localStorage',
1515
maxAge: 1000 * 60 * 60 * 24,
1616
serializer: JSON.stringify,
1717
deserializer: JSON.parse,
@@ -20,7 +20,7 @@ export class PersistanceStore {
2020
...defaultConfig,
2121
...config,
2222
};
23-
this.setStore(defaultConfig.storageType, (defaultConfig as unknown as Store).storage);
23+
this.setStore(defaultConfig.storeType, (defaultConfig as unknown as Store).storage);
2424
this.config = defaultConfig;
2525
this.name = ''; // TODO add stack api key to name
2626
}

test/unit/cache.spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ describe('Cache handleRequest function', () => {
2828
describe('NETWORK_ELSE_CACHE policy', () => {
2929
it('should return network response when proper response is received', async () => {
3030
const cacheOptions = { policy: Policy.NETWORK_ELSE_CACHE, maxAge: 3600 };
31-
const defaultAdapter = jest.fn((_config) => ({ data: 'foo' }));
31+
const defaultAdapter = jest.fn((_config) => ({ data: JSON.stringify('foo') }));
3232
const cacheStore = new PersistanceStore(cacheOptions);
3333

3434
await handleRequest(cacheOptions, apiKey, defaultAdapter, resolve, reject, config);
3535

3636
expect(defaultAdapter).toHaveBeenCalledWith(config);
37-
expect(resolve).toBeCalledWith('foo');
37+
expect(resolve).toBeCalledWith({"data": "foo"});
3838
expect(reject).not.toBeCalled();
3939

4040
cacheStore.removeItem(apiKey, config.contentTypeUid);
@@ -97,14 +97,14 @@ describe('Cache handleRequest function', () => {
9797
});
9898
it('should return api response when proper cache is not available', async () => {
9999
const cacheOptions = { policy: Policy.CACHE_THEN_NETWORK, maxAge: 3600 };
100-
const defaultAdapter = jest.fn((_config) => ({ data: 'foo' }));
100+
const defaultAdapter = jest.fn((_config) => ({ data: JSON.stringify('foo') }));
101101

102102
const cacheStore = new PersistanceStore(cacheOptions);
103103

104104
await handleRequest(cacheOptions, apiKey, defaultAdapter, resolve, reject, config);
105105

106106
expect(defaultAdapter).toHaveBeenCalled();
107-
expect(resolve).toBeCalledWith('foo');
107+
expect(resolve).toBeCalledWith({"data": "foo"});
108108
expect(reject).not.toBeCalled();
109109

110110
cacheStore.removeItem(apiKey, config.contentTypeUid);
@@ -150,13 +150,13 @@ describe('Cache handleRequest function', () => {
150150

151151
it('should return network response data when cache is not available', async () => {
152152
const cacheOptions = { policy: Policy.CACHE_ELSE_NETWORK, maxAge: 3600 };
153-
const defaultAdapter = jest.fn((_config) => ({ data: 'foo' }));
153+
const defaultAdapter = jest.fn((_config) => ({ data: JSON.stringify('foo') }));
154154
const cacheStore = new PersistanceStore(cacheOptions);
155155

156156
await handleRequest(cacheOptions, apiKey, defaultAdapter, resolve, reject, config);
157157

158158
expect(defaultAdapter).toHaveBeenCalledWith(config);
159-
expect(resolve).toBeCalledWith('foo');
159+
expect(resolve).toBeCalledWith({"data": "foo"});
160160
expect(reject).not.toBeCalled();
161161

162162
cacheStore.removeItem(apiKey, config.contentTypeUid);

test/unit/persistance/preference-store.spec.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,35 +7,35 @@ describe('persistance store intiialization test', () => {
77
expect(persistance).toBeDefined();
88
expect(persistance.config).toBeDefined();
99
expect(persistance.config.maxAge).toEqual(86400000);
10-
expect(persistance.config.storageType).toEqual('localStorage');
10+
expect(persistance.config.storeType).toEqual('localStorage');
1111
});
1212

1313
it('should initialize persistance with name and local storage type ', () => {
14-
const storageType = 'localStorage';
15-
const persistance = makePersistance({ storageType });
14+
const storeType = 'localStorage';
15+
const persistance = makePersistance({ storeType });
1616
expect(persistance).toBeDefined();
1717
expect(persistance.config).toBeDefined();
1818
expect(persistance.config.maxAge).toEqual(86400000);
19-
expect(persistance.config.storageType).toEqual(storageType);
19+
expect(persistance.config.storeType).toEqual(storeType);
2020
});
2121
it('should initialize persistance with name and memory storage type ', () => {
22-
const storageType = 'memoryStorage';
23-
const persistance = makePersistance({ storageType });
22+
const storeType = 'memoryStorage';
23+
const persistance = makePersistance({ storeType });
2424
expect(persistance).toBeDefined();
2525
expect(persistance.config).toBeDefined();
2626
expect(persistance.config.maxAge).toEqual(86400000);
27-
expect(persistance.config.storageType).toEqual(storageType);
27+
expect(persistance.config.storeType).toEqual(storeType);
2828
});
2929
it('should initialize persistance with name and local storage type ', () => {
30-
const storageType = 'customStorage';
31-
const persistance = makePersistance({ storageType });
30+
const storeType = 'customStorage';
31+
const persistance = makePersistance({ storeType });
3232
expect(persistance).toBeDefined();
3333
expect(persistance.config).toBeDefined();
3434
expect(persistance.config.maxAge).toEqual(86400000);
35-
expect(persistance.config.storageType).toEqual(storageType);
35+
expect(persistance.config.storeType).toEqual(storeType);
3636
});
3737
it('should throw error on custom storage without storage', () => {
38-
const config: any = { name: 'foobar', storageType: 'customStorage' };
38+
const config: any = { name: 'foobar', storeType: 'customStorage' };
3939
config.storage = '';
4040
const persistance = () => {
4141
new PersistanceStore(config);
@@ -162,6 +162,6 @@ describe('persistance with 0 maxAge', () => {
162162
});
163163
});
164164

165-
function makePersistance(config: { storageType: StorageType | 'customStorage' }) {
166-
return new PersistanceStore({ storageType: config.storageType, storage: memoryStorage });
165+
function makePersistance(config: { storeType: StorageType | 'customStorage' }) {
166+
return new PersistanceStore({ storeType: config.storeType, storage: memoryStorage });
167167
}

test/unit/stack.spec.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ describe('Stack class tests', () => {
3232
});
3333

3434
stack = new Stack(client, config() as StackConfig);
35+
client.defaults.params = {};
3536
});
3637
it('should test import of class Stack', (done) => {
3738
expect(stack).toBeInstanceOf(Stack);
@@ -95,10 +96,11 @@ describe('Stack class tests', () => {
9596
stack.livePreviewQuery(query);
9697

9798
expect(stack.getClient().stackConfig.live_preview).toEqual({
98-
live_preview: null,
99-
contentTypeUid: null,
100-
entryUid: null,
101-
preview_timestamp: null,
99+
live_preview: '',
100+
contentTypeUid: '',
101+
entryUid: '',
102+
enable: false,
103+
preview_timestamp: '',
102104
include_applied_variants: false,
103105
});
104106
});

0 commit comments

Comments
 (0)