@dhis2/app-service-offline 3.6.0 → 3.6.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.
@@ -20,7 +20,11 @@ const keysMockDefault = jest.fn().mockImplementation(async () => []);
20
20
  const deleteMockDefault = makeCachesDeleteMock([]);
21
21
  const cachesDefault = {
22
22
  keys: keysMockDefault,
23
- delete: deleteMockDefault
23
+ delete: deleteMockDefault,
24
+ // the following to satisfy types:
25
+ has: () => Promise.resolve(true),
26
+ open: () => Promise.resolve(new Cache()),
27
+ match: () => Promise.resolve(new Response())
24
28
  };
25
29
  window.caches = cachesDefault;
26
30
  afterEach(() => {
@@ -51,7 +55,7 @@ it('returns false if caches.keys throws', async () => {
51
55
  const spy = jest.fn(() => {
52
56
  throw new Error('Security Error');
53
57
  });
54
- window.caches = {
58
+ window.caches = { ...cachesDefault,
55
59
  keys: spy
56
60
  };
57
61
  const result = await (0, _clearSensitiveCaches.clearSensitiveCaches)();
@@ -59,19 +63,20 @@ it('returns false if caches.keys throws', async () => {
59
63
  expect(result).toBe(false);
60
64
  });
61
65
  it('clears potentially sensitive caches', async () => {
62
- const testKeys = ['cache1', 'cache2', 'app-shell'];
66
+ const testKeys = ['cache1', 'cache2', 'app-shell', 'other-assets'];
63
67
  const keysMock = jest.fn().mockImplementation(() => Promise.resolve(testKeys));
64
68
  const deleteMock = makeCachesDeleteMock(testKeys);
65
- window.caches = {
69
+ window.caches = { ...cachesDefault,
66
70
  keys: keysMock,
67
71
  delete: deleteMock
68
72
  };
69
73
  const cachesDeleted = await (0, _clearSensitiveCaches.clearSensitiveCaches)();
70
74
  expect(cachesDeleted).toBe(true);
71
- expect(deleteMock).toHaveBeenCalledTimes(3);
75
+ expect(deleteMock).toHaveBeenCalledTimes(4);
72
76
  expect(deleteMock.mock.calls[0][0]).toBe('cache1');
73
77
  expect(deleteMock.mock.calls[1][0]).toBe('cache2');
74
78
  expect(deleteMock.mock.calls[2][0]).toBe('app-shell');
79
+ expect(deleteMock.mock.calls[3][0]).toBe('other-assets');
75
80
  });
76
81
  it('preserves keepable caches', async () => {
77
82
  const keysMock = jest.fn().mockImplementation(async () => ['cache1', 'cache2', 'app-shell', 'other-assets', 'workbox-precache-v2-https://hey.howareya.now/']);
@@ -79,11 +84,11 @@ it('preserves keepable caches', async () => {
79
84
  keys: keysMock
80
85
  };
81
86
  await (0, _clearSensitiveCaches.clearSensitiveCaches)();
82
- expect(deleteMockDefault).toHaveBeenCalledTimes(3);
87
+ expect(deleteMockDefault).toHaveBeenCalledTimes(4);
83
88
  expect(deleteMockDefault.mock.calls[0][0]).toBe('cache1');
84
89
  expect(deleteMockDefault.mock.calls[1][0]).toBe('cache2');
85
90
  expect(deleteMockDefault.mock.calls[2][0]).toBe('app-shell');
86
- expect(deleteMockDefault).not.toHaveBeenCalledWith('other-assets');
91
+ expect(deleteMockDefault.mock.calls[3][0]).toBe('other-assets');
87
92
  expect(deleteMockDefault).not.toHaveBeenCalledWith('workbox-precache-v2-https://hey.howareya.now/');
88
93
  });
89
94
  describe('clears sections-db', () => {
@@ -11,8 +11,7 @@ exports.SECTIONS_DB = SECTIONS_DB;
11
11
  const SECTIONS_STORE = 'sections-store'; // Non-sensitive caches that can be kept:
12
12
 
13
13
  exports.SECTIONS_STORE = SECTIONS_STORE;
14
- const KEEPABLE_CACHES = [/^workbox-precache/, // precached static assets
15
- /^other-assets/ // static assets cached at runtime - shouldn't be sensitive
14
+ const KEEPABLE_CACHES = [/^workbox-precache/ // precached static assets
16
15
  ];
17
16
 
18
17
  /*
@@ -12,7 +12,11 @@ const keysMockDefault = jest.fn().mockImplementation(async () => []);
12
12
  const deleteMockDefault = makeCachesDeleteMock([]);
13
13
  const cachesDefault = {
14
14
  keys: keysMockDefault,
15
- delete: deleteMockDefault
15
+ delete: deleteMockDefault,
16
+ // the following to satisfy types:
17
+ has: () => Promise.resolve(true),
18
+ open: () => Promise.resolve(new Cache()),
19
+ match: () => Promise.resolve(new Response())
16
20
  };
17
21
  window.caches = cachesDefault;
18
22
  afterEach(() => {
@@ -43,7 +47,7 @@ it('returns false if caches.keys throws', async () => {
43
47
  const spy = jest.fn(() => {
44
48
  throw new Error('Security Error');
45
49
  });
46
- window.caches = {
50
+ window.caches = { ...cachesDefault,
47
51
  keys: spy
48
52
  };
49
53
  const result = await clearSensitiveCaches();
@@ -51,19 +55,20 @@ it('returns false if caches.keys throws', async () => {
51
55
  expect(result).toBe(false);
52
56
  });
53
57
  it('clears potentially sensitive caches', async () => {
54
- const testKeys = ['cache1', 'cache2', 'app-shell'];
58
+ const testKeys = ['cache1', 'cache2', 'app-shell', 'other-assets'];
55
59
  const keysMock = jest.fn().mockImplementation(() => Promise.resolve(testKeys));
56
60
  const deleteMock = makeCachesDeleteMock(testKeys);
57
- window.caches = {
61
+ window.caches = { ...cachesDefault,
58
62
  keys: keysMock,
59
63
  delete: deleteMock
60
64
  };
61
65
  const cachesDeleted = await clearSensitiveCaches();
62
66
  expect(cachesDeleted).toBe(true);
63
- expect(deleteMock).toHaveBeenCalledTimes(3);
67
+ expect(deleteMock).toHaveBeenCalledTimes(4);
64
68
  expect(deleteMock.mock.calls[0][0]).toBe('cache1');
65
69
  expect(deleteMock.mock.calls[1][0]).toBe('cache2');
66
70
  expect(deleteMock.mock.calls[2][0]).toBe('app-shell');
71
+ expect(deleteMock.mock.calls[3][0]).toBe('other-assets');
67
72
  });
68
73
  it('preserves keepable caches', async () => {
69
74
  const keysMock = jest.fn().mockImplementation(async () => ['cache1', 'cache2', 'app-shell', 'other-assets', 'workbox-precache-v2-https://hey.howareya.now/']);
@@ -71,11 +76,11 @@ it('preserves keepable caches', async () => {
71
76
  keys: keysMock
72
77
  };
73
78
  await clearSensitiveCaches();
74
- expect(deleteMockDefault).toHaveBeenCalledTimes(3);
79
+ expect(deleteMockDefault).toHaveBeenCalledTimes(4);
75
80
  expect(deleteMockDefault.mock.calls[0][0]).toBe('cache1');
76
81
  expect(deleteMockDefault.mock.calls[1][0]).toBe('cache2');
77
82
  expect(deleteMockDefault.mock.calls[2][0]).toBe('app-shell');
78
- expect(deleteMockDefault).not.toHaveBeenCalledWith('other-assets');
83
+ expect(deleteMockDefault.mock.calls[3][0]).toBe('other-assets');
79
84
  expect(deleteMockDefault).not.toHaveBeenCalledWith('workbox-precache-v2-https://hey.howareya.now/');
80
85
  });
81
86
  describe('clears sections-db', () => {
@@ -2,8 +2,7 @@
2
2
  export const SECTIONS_DB = 'sections-db';
3
3
  export const SECTIONS_STORE = 'sections-store'; // Non-sensitive caches that can be kept:
4
4
 
5
- const KEEPABLE_CACHES = [/^workbox-precache/, // precached static assets
6
- /^other-assets/ // static assets cached at runtime - shouldn't be sensitive
5
+ const KEEPABLE_CACHES = [/^workbox-precache/ // precached static assets
7
6
  ];
8
7
 
9
8
  /*
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dhis2/app-service-offline",
3
3
  "description": "A runtime service for online/offline detection and offline caching",
4
- "version": "3.6.0",
4
+ "version": "3.6.2",
5
5
  "main": "./build/cjs/index.js",
6
6
  "module": "./build/es/index.js",
7
7
  "types": "build/types/index.d.ts",
@@ -33,7 +33,7 @@
33
33
  "coverage": "yarn test --coverage"
34
34
  },
35
35
  "peerDependencies": {
36
- "@dhis2/app-service-alerts": "3.6.0",
36
+ "@dhis2/app-service-alerts": "3.6.2",
37
37
  "prop-types": "^15.7.2",
38
38
  "react": "^16.8.6",
39
39
  "react-dom": "^16.8.6"