@sitecore-feaas/clientside 0.5.4 → 0.5.6

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.
Files changed (63) hide show
  1. package/build/dom/rendering.js +20 -11
  2. package/build/dom/rendering.js.map +1 -1
  3. package/build/dom/stylesheet.js +11 -12
  4. package/build/dom/stylesheet.js.map +1 -1
  5. package/build/fetch.js +46 -22
  6. package/build/fetch.js.map +1 -1
  7. package/build/utils/data.js +11 -8
  8. package/build/utils/data.js.map +1 -1
  9. package/build/utils/settings.js +1 -1
  10. package/build/utils/settings.js.map +1 -1
  11. package/dist/browser/headless.cjs +4 -4
  12. package/dist/browser/headless.cjs.map +3 -3
  13. package/dist/browser/headless.esm.js +5 -5
  14. package/dist/browser/headless.esm.js.map +1 -1
  15. package/dist/browser/index.cjs +5 -5
  16. package/dist/browser/index.cjs.map +3 -3
  17. package/dist/browser/index.esm.js +5 -5
  18. package/dist/browser/index.esm.js.map +1 -1
  19. package/dist/browser/react.cjs +5 -5
  20. package/dist/browser/react.cjs.map +3 -3
  21. package/dist/browser/react.esm.js +5 -5
  22. package/dist/browser/react.esm.js.map +1 -1
  23. package/dist/node/headless.cjs +5 -5
  24. package/dist/node/headless.cjs.map +3 -3
  25. package/dist/node/headless.esm.js +5 -5
  26. package/dist/node/headless.esm.js.map +3 -3
  27. package/dist/node/index.cjs +4 -4
  28. package/dist/node/index.cjs.map +3 -3
  29. package/dist/node/index.esm.js +4 -4
  30. package/dist/node/index.esm.js.map +3 -3
  31. package/dist/node/react.cjs +4 -4
  32. package/dist/node/react.cjs.map +3 -3
  33. package/dist/node/react.esm.js +4 -4
  34. package/dist/node/react.esm.js.map +3 -3
  35. package/headless.cjs +5 -5
  36. package/headless.cjs.map +3 -3
  37. package/headless.js +5 -5
  38. package/headless.js.map +3 -3
  39. package/package.json +1 -1
  40. package/react.cjs +5 -5
  41. package/react.cjs.map +3 -3
  42. package/react.js +5 -5
  43. package/react.js.map +3 -3
  44. package/src/dom/rendering.ts +31 -16
  45. package/src/dom/stylesheet.ts +17 -15
  46. package/src/dom/thumbnail.ts +1 -1
  47. package/src/fetch.ts +54 -30
  48. package/src/utils/data.ts +11 -7
  49. package/src/utils/settings.ts +1 -1
  50. package/test/FEAASComponent.react.test.tsx +19 -3
  51. package/test/FEAASComponent.test.tsx +117 -20
  52. package/test/FEAASStylesheet.test.tsx +13 -11
  53. package/test/datasettings.test.ts +92 -0
  54. package/types/dom/rendering.d.ts.map +1 -1
  55. package/types/dom/stylesheet.d.ts +1 -1
  56. package/types/dom/stylesheet.d.ts.map +1 -1
  57. package/types/dom/thumbnail.d.ts +1 -1
  58. package/types/dom/thumbnail.d.ts.map +1 -1
  59. package/types/fetch.d.ts +39 -15
  60. package/types/fetch.d.ts.map +1 -1
  61. package/types/utils/data.d.ts +2 -2
  62. package/types/utils/data.d.ts.map +1 -1
  63. package/types/utils/settings.d.ts +5 -5
@@ -29,7 +29,7 @@ describe('Stylesheet', () => {
29
29
  it('should load stylesheet (cold cache)', async () => {
30
30
  const spy = vi.spyOn(global, 'fetch')
31
31
  spy.mockImplementation(async (url: string, options: Parameters<typeof fetch>[1] = {}) => {
32
- return new Response('TODAY {}', {
32
+ return new Response('FRESH {}', {
33
33
  headers: {
34
34
  date: now.toUTCString(),
35
35
  'last-modified': earlier.toUTCString()
@@ -44,13 +44,13 @@ describe('Stylesheet', () => {
44
44
  await expect(stylesheet.whenRendered).resolves.toEqual(stylesheet)
45
45
  expect(spy).toHaveBeenCalledTimes(1)
46
46
 
47
- expect(document.head.querySelector('style').textContent).toContain('TODAY')
47
+ expect(document.head.querySelector('style').textContent).toContain('FRESH')
48
48
  })
49
49
  it('should load stylesheet with minimum parameters(cold cache)', async () => {
50
50
  const spy = vi.spyOn(global, 'fetch')
51
51
  spy.mockImplementation(async (url: string, options: Parameters<typeof fetch>[1] = {}) => {
52
52
  if (url.match(DEFAULT_CDN_URL + '/styles/L/published.css'))
53
- return new Response('TODAY {}', {
53
+ return new Response('FRESH {}', {
54
54
  headers: {
55
55
  date: now.toUTCString(),
56
56
  'last-modified': earlier.toUTCString()
@@ -65,14 +65,14 @@ describe('Stylesheet', () => {
65
65
  await expect(stylesheet.whenRendered).resolves.toEqual(stylesheet)
66
66
  expect(spy).toHaveBeenCalledTimes(1)
67
67
 
68
- expect(document.head.querySelector('style').textContent).toContain('TODAY')
68
+ expect(document.head.querySelector('style').textContent).toContain('FRESH')
69
69
  })
70
70
 
71
71
  it('should invalidate stylesheet cache', async () => {
72
72
  const spy = vi.spyOn(global, 'fetch')
73
73
  spy.mockImplementation(async (url: string, options: Parameters<typeof fetch>[1] = {}) => {
74
74
  if (url.match('CDN/styles/L/published.css') && options?.method != 'HEAD') {
75
- return new Response('TODAY {}', {
75
+ return new Response('FRESH {}', {
76
76
  headers: {
77
77
  date: earlier.toUTCString(),
78
78
  'last-modified': earlier.toUTCString()
@@ -95,7 +95,7 @@ describe('Stylesheet', () => {
95
95
  await expect(stylesheet.whenRendered).resolves.toEqual(stylesheet)
96
96
  expect(spy).toHaveBeenCalledTimes(2)
97
97
 
98
- expect(document.head.querySelector('style').textContent).toContain('TODAY')
98
+ expect(document.head.querySelector('style').textContent).toContain('FRESH')
99
99
  })
100
100
  it('should update stylesheet while using stale cache', async () => {
101
101
  const spy = vi.spyOn(global, 'fetch')
@@ -117,7 +117,7 @@ describe('Stylesheet', () => {
117
117
  }
118
118
  })
119
119
  } else {
120
- return new Response('TODAY {}', {
120
+ return new Response('FRESH {}', {
121
121
  headers: {
122
122
  date: now.toUTCString(),
123
123
  'last-modified': earlier.toUTCString()
@@ -137,7 +137,7 @@ describe('Stylesheet', () => {
137
137
  // whenLoaded only fires when ensures that up-to-date version is loaded
138
138
  await expect(stylesheet.whenLoaded).resolves.toBeTruthy()
139
139
  expect(spy).toHaveBeenCalledTimes(3)
140
- expect(document.head.querySelector('style').textContent).toContain('TODAY {}')
140
+ expect(document.head.querySelector('style').textContent).toContain('FRESH {}')
141
141
  })
142
142
 
143
143
  it('should load stylesheet statically', async () => {
@@ -160,7 +160,7 @@ describe('Stylesheet', () => {
160
160
  }
161
161
  })
162
162
  } else {
163
- return new Response('TODAY {}', {
163
+ return new Response('FRESH {}', {
164
164
  headers: {
165
165
  date: now.toUTCString(),
166
166
  'last-modified': earlier.toUTCString()
@@ -175,7 +175,9 @@ describe('Stylesheet', () => {
175
175
  library: 'L',
176
176
  revision: 'published'
177
177
  }).then((r) => r.textContent)
178
- ).resolves.toEqual('TODAY {}')
179
- await expect(loadStylesheet(`http://CDN/L/published.css`).then((r) => r.textContent)).resolves.toEqual('TODAY {}')
178
+ ).resolves.toEqual('FRESH {}')
179
+ await expect(loadStylesheet(`http://CDN/L/published.css`).then((r) => r.textContent)).resolves.toEqual('FRESH {}')
180
180
  })
181
+
182
+ it('should ')
181
183
  })
@@ -118,6 +118,98 @@ describe('DataSettings', () => {
118
118
  ])
119
119
  })
120
120
  })
121
+ describe('.isDataSettings', () => {
122
+ it('should return true if data has all the required properties', () => {
123
+ const data = {
124
+ url: 'https://example.com',
125
+ method: 'GET',
126
+ headers: { 'Content-Type': 'application/json' }
127
+ }
128
+
129
+ expect(DataSettings.isDataSettings(data)).toBe(true)
130
+ })
131
+
132
+ it('should return false if data does not have the "url" property', () => {
133
+ const data = {
134
+ method: 'GET',
135
+ headers: { 'Content-Type': 'application/json' }
136
+ }
137
+
138
+ expect(DataSettings.isDataSettings(data)).toBe(false)
139
+ })
140
+
141
+ it('should return false if data has an additional property apart from the allowed ones', () => {
142
+ const data = {
143
+ url: 'https://example.com',
144
+ method: 'GET',
145
+ headers: { 'Content-Type': 'application/json' },
146
+ invalidProperty: 'invalid'
147
+ }
148
+
149
+ expect(DataSettings.isDataSettings(data)).toBe(false)
150
+ })
151
+
152
+ it('should return false if "jsonpath" property is not a string', () => {
153
+ const data = {
154
+ url: 'https://example.com',
155
+ method: 'GET',
156
+ headers: { 'Content-Type': 'application/json' },
157
+ jsonpath: { invalid: 'value' }
158
+ }
159
+
160
+ expect(DataSettings.isDataSettings(data)).toBe(false)
161
+ })
162
+ })
163
+ describe('.hasDataSettings', () => {
164
+ it('should return false if data is falsy', () => {
165
+ expect(DataSettings.hasDataSettings(null)).toBe(false)
166
+ expect(DataSettings.hasDataSettings(undefined)).toBe(false)
167
+ expect(DataSettings.hasDataSettings({ test: null })).toBe(false)
168
+ expect(DataSettings.hasDataSettings({ test: undefined })).toBe(false)
169
+ })
170
+ it('should return true for simple case', () => {
171
+ expect(DataSettings.hasDataSettings({ test: { url: 'a' } })).toBe(true)
172
+ expect(DataSettings.hasDataSettings({ url: 'a' })).toBe(true)
173
+ })
174
+
175
+ it('should return true if data has a valid DataSettings object', () => {
176
+ const data = {
177
+ url: 'https://example.com',
178
+ method: 'GET',
179
+ headers: { 'Content-Type': 'application/json' }
180
+ }
181
+
182
+ expect(DataSettings.hasDataSettings(data)).toBe(true)
183
+ expect(DataSettings.hasDataSettings({ a: data })).toBe(true)
184
+ })
185
+
186
+ it('should return true if any property in data is a valid DataSettings object', () => {
187
+ const data = {
188
+ url: 'https://example.com',
189
+ method: 'GET',
190
+ headers: { 'Content-Type': 'application/json' },
191
+ nestedData: {
192
+ url: 'https://example.com/nested',
193
+ method: 'POST',
194
+ headers: { 'Content-Type': 'application/json' }
195
+ }
196
+ }
197
+
198
+ expect(DataSettings.hasDataSettings(data)).toBe(true)
199
+ })
200
+
201
+ it('should return false if all properties in data are invalid', () => {
202
+ const data = {
203
+ property1: 'value1',
204
+ property2: { invalid: 'object' },
205
+ property3: false
206
+ }
207
+
208
+ expect(DataSettings.hasDataSettings(data)).toBe(false)
209
+ })
210
+
211
+ // Add more test cases to cover other scenarios
212
+ })
121
213
  describe('.fetch', () => {
122
214
  it('fetches when passed data object', async () => {
123
215
  const result = await DataSettings.fetch({ hello: 'world' })
@@ -1 +1 @@
1
- {"version":3,"file":"rendering.d.ts","sourceRoot":"","sources":["../../src/dom/rendering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAElD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAIvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAG5C,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,MAAM,CAAA;IACtF,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,KAAK,GAAG,CAAA;IAC7D,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;IAC1E,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAA;IAC5D,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;CAC5D;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,WAAW,IAAI,OAAO,CAAC,gBAAgB,CAAC,GAAG;IAC7E,IAAI,CAAC,EAAE,CAAC,CAAA;CACT,GAAG,CAAC,gBAAgB,GAAG,sBAAsB,CAAC,GAC7C,mBAAmB,CAAA;AAsDrB,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,mBAAmB,QAwFhH;AAID,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,GAAG,gBAAgB,EACrC,UAAU,CAAC,EAAE,GAAG,EAChB,MAAM,CAAC,EAAE,mBAAmB,EAC5B,QAAQ,CAAC,EAAE,OAAO,eA0CnB;AAMD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,mBAAmB,eAc9G;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,OAAO,UAAQ,UAW7G"}
1
+ {"version":3,"file":"rendering.d.ts","sourceRoot":"","sources":["../../src/dom/rendering.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAA;AAElD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAIvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAG5C,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,MAAM,CAAA;IACtF,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,KAAK,GAAG,CAAA;IAC7D,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,GAAG,CAAA;IAC1E,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAA;IAC5D,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAA;CAC5D;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,WAAW,IAAI,OAAO,CAAC,gBAAgB,CAAC,GAAG;IAC7E,IAAI,CAAC,EAAE,CAAC,CAAA;CACT,GAAG,CAAC,gBAAgB,GAAG,sBAAsB,CAAC,GAC7C,mBAAmB,CAAA;AAsDrB,wBAAgB,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,mBAAmB,QAkGhH;AAID,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,GAAG,gBAAgB,EACrC,UAAU,CAAC,EAAE,GAAG,EAChB,MAAM,CAAC,EAAE,mBAAmB,EAC5B,QAAQ,CAAC,EAAE,OAAO,eA+CnB;AAMD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,mBAAmB,eAc9G;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,mBAAmB,EAAE,OAAO,UAAQ,UAW7G"}
@@ -3,6 +3,6 @@ export declare function renderStylesheet(props: FEAASCDNStylesheetProps, style?:
3
3
  export declare function renderStylesheetPromise(props: FEAASCDNStylesheetProps, stylesheet?: HTMLStyleElement): Promise<HTMLStyleElement>;
4
4
  export declare function loadStylesheet(props: FEAASCDNStylesheetProps, callback?: ValidatableStylesheetCallback): Promise<HTMLStyleElement>;
5
5
  export declare function loadStylesheetAllowStale(props: FEAASCDNStylesheetProps): Promise<unknown>;
6
- export declare function findStylesheet(props: FEAASCDNStylesheetProps): Element;
6
+ export declare function findStylesheet(props: FEAASCDNStylesheetProps): HTMLLinkElement | HTMLStyleElement;
7
7
  export declare function createStylesheet(props: FEAASCDNStylesheetProps): HTMLStyleElement;
8
8
  //# sourceMappingURL=stylesheet.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stylesheet.d.ts","sourceRoot":"","sources":["../../src/dom/stylesheet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EAGvB,6BAA6B,EAC9B,MAAM,WAAW,CAAA;AAElB,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,uBAAuB,EAAE,KAAK,CAAC,EAAE,gBAAgB,oBAGxF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,uBAAuB,EAAE,UAAU,CAAC,EAAE,gBAAgB,6BAKpG;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,uBAAuB,EAAE,QAAQ,CAAC,EAAE,6BAA6B,6BAiBtG;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB,oBAItE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,uBAAuB,WAK5D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,uBAAuB,oBAM9D"}
1
+ {"version":3,"file":"stylesheet.d.ts","sourceRoot":"","sources":["../../src/dom/stylesheet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EAGvB,6BAA6B,EAC9B,MAAM,WAAW,CAAA;AAElB,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,uBAAuB,EAAE,KAAK,CAAC,EAAE,gBAAgB,oBAGxF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,uBAAuB,EAAE,UAAU,CAAC,EAAE,gBAAgB,6BAKpG;AAGD,wBAAgB,cAAc,CAAC,KAAK,EAAE,uBAAuB,EAAE,QAAQ,CAAC,EAAE,6BAA6B,6BAkBtG;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,uBAAuB,oBAItE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,uBAAuB,sCAK5D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,uBAAuB,oBAM9D"}
@@ -1,5 +1,5 @@
1
1
  import type { VersionModel, ComponentModel, StylesheetModel } from '@sitecore-feaas/sdk';
2
- export type Callback = (image: HTMLImageElement, isCached: boolean) => void;
2
+ export type Callback = (image: HTMLImageElement | null, isCached: boolean) => void;
3
3
  export declare const convertBase64toBlob: (base64: string) => Promise<Blob>;
4
4
  /** Parse fetch response as blob and turn it into HTMLImageElement off thread */
5
5
  export declare const responseToImage: (response: Response) => Promise<HTMLImageElement>;
@@ -1 +1 @@
1
- {"version":3,"file":"thumbnail.d.ts","sourceRoot":"","sources":["../../src/dom/thumbnail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAIpG,MAAM,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;AAE3E,eAAO,MAAM,mBAAmB,WAAY,MAAM,kBAA4C,CAAA;AAE9F,gFAAgF;AAChF,eAAO,MAAM,eAAe,aAAc,QAAQ,KAAG,QAAQ,gBAAgB,CAUzE,CAAA;AAEJ;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAG7F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,QAAQ,6BAqB/F;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,IAAI,CACxB,SAAS,EAAE,cAAc,EACzB,OAAO,CAAC,EAAE,YAAY,EACtB,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAmC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,gBAAgB,CAAC,EAAE,eAAe,6BAsBnH;AAuFD;;;;;;;;;;;GAWG;AACH,wBAAsB,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CA+B1G"}
1
+ {"version":3,"file":"thumbnail.d.ts","sourceRoot":"","sources":["../../src/dom/thumbnail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAIpG,MAAM,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;AAElF,eAAO,MAAM,mBAAmB,WAAY,MAAM,kBAA4C,CAAA;AAE9F,gFAAgF;AAChF,eAAO,MAAM,eAAe,aAAc,QAAQ,KAAG,QAAQ,gBAAgB,CAUzE,CAAA;AAEJ;;;;;;;;;GASG;AACH,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAG7F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,QAAQ,6BAqB/F;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,IAAI,CACxB,SAAS,EAAE,cAAc,EACzB,OAAO,CAAC,EAAE,YAAY,EACtB,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAmC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,gBAAgB,CAAC,EAAE,eAAe,6BAsBnH;AAuFD;;;;;;;;;;;GAWG;AACH,wBAAsB,MAAM,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CA+B1G"}
package/types/fetch.d.ts CHANGED
@@ -1,16 +1,4 @@
1
1
  import { ControlledPromise } from './utils/promise.js';
2
- /**
3
- * Utility to cache-bust static files. It relies on reading Date header to detect cached response, so it requires CORS
4
- * settings to be set.
5
- *
6
- * It accepts validator function that determines if response is usable. If response was pulled from cache and is valid,
7
- * the optional callback function is fired right away. Then HEAD request is made bypassing the cache, to see if the
8
- * response has an newer Last-Modified header. In case it does and it passes validation, third request is fired that
9
- * actually fetches the new content and callback is invoked the second time.
10
- *
11
- * It works as promise, but also accepts callback to use cached blobs mid-flight and have access to headers. Any network
12
- * errors will not be caught. Function throws when unable to fetch valid response.
13
- */
14
2
  declare const phases: readonly ["initial", "check", "updated"];
15
3
  export type ValidatableRequestPhase = (typeof phases)[number];
16
4
  export type FetchCache = Record<string, FetchCacheRequest>;
@@ -32,10 +20,35 @@ export type FetchCacheRequest = {
32
20
  };
33
21
  export declare var fetchCache: Record<string, FetchCacheRequest>;
34
22
  export declare function clearFetchCache(): void;
23
+ /**
24
+ * Utility to cache-bust static files. It relies on reading Date header to detect cached response, so it requires CORS
25
+ * settings to be set.
26
+ *
27
+ * It accepts validator function that determines if response is usable. If response was pulled from cache and is valid,
28
+ * the optional callback function is fired right away. Then HEAD request is made bypassing the cache, to see if the
29
+ * response has an newer Last-Modified header. In case it does and it passes validation, third request is fired that
30
+ * actually fetches the new content and callback is invoked the second time.
31
+ *
32
+ * It works as promise, but also accepts callback to use cached blobs mid-flight and have access to headers. Any network
33
+ * errors will not be caught. Function throws when unable to fetch valid response.
34
+ */
35
35
  export declare function fetchAndRevalidate(url: ValidatableRequest['url'], options?: ValidatableRequest['options'], validator?: ValidatableRequest['validator'], callback?: ValidatableRequest['callback'], cache?: FetchCache): Promise<Response>;
36
- export declare function getFetchCache(url: Parameters<typeof fetch>[0], dontCreate?: boolean): FetchCacheRequest;
37
- export declare class InvalidResponse extends Error {
38
- }
36
+ /**
37
+ * Executes a fetch request optionally validating and handling the response. Using callback function it's possible to
38
+ * observe successful response twice: Cached version first, and up-to-date later.
39
+ *
40
+ * @param {Object} request - An object containing request parameters.
41
+ * @param {string} request.url - The URL to fetch.
42
+ * @param {Object} request.options - Fetch request options.
43
+ * @param {Function} [request.validator] - Function to validate the response. Should return `false` if
44
+ * validation fails.
45
+ * @param {Function} [request.callback] - Function to execute after fetching. Receives the response,
46
+ * phase, and cache status.
47
+ * @param {Object} [request.cache] - Cache object to store or retrieve cached data.
48
+ * @param {ValidatableRequestPhase} [phase='initial'] - The phase of the request, defaults to 'initial'.
49
+ * @returns {Promise<Object>} A promise that resolves to an object containing request details and the response.
50
+ * @throws {Error} Throws an error if the fetch fails or if the response is not valid according to the validator.
51
+ */
39
52
  export declare function fetchWithCacheAwareness({ url, options, validator, callback, cache }: ValidatableRequest, phase?: ValidatableRequestPhase): Promise<{
40
53
  url: RequestInfo | URL;
41
54
  options: RequestInit;
@@ -45,6 +58,17 @@ export declare function fetchWithCacheAwareness({ url, options, validator, callb
45
58
  callback: (response: Response, status: "initial" | "check" | "updated", isCached: boolean) => any;
46
59
  cache: FetchCache;
47
60
  }>;
61
+ export declare function getFetchCache(url: Parameters<typeof fetch>[0], dontCreate?: boolean): FetchCacheRequest;
62
+ export declare class InvalidResponse extends Error {
63
+ }
64
+ /**
65
+ * Validates cache of previousl fetch If the resource is cached and there is a newer version available, it will be
66
+ * re-fetched.
67
+ *
68
+ * @param request - The request object containing the URL, cache information, options, validator, and response of
69
+ * initial request.
70
+ * @returns A promise that resolves to the request object.
71
+ */
48
72
  export declare function fetchToValidateCache(request: ValidatableRequest & Required<Pick<ValidatableRequest, 'response'>>): Promise<ValidatableRequest & Required<Pick<ValidatableRequest, "response">>>;
49
73
  export declare function fetchBypassingCache(request: ValidatableRequest): Promise<{
50
74
  url: RequestInfo | URL;
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtD;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,MAAM,0CAA2C,CAAA;AACvD,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAA;AAC7D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;AAC1D,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAChC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACrC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAA;IAC9D,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,OAAO,KAAK,GAAG,CAAA;IAC1F,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,uBAAuB,CAAA;IAC9B,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACpC,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAClC,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACpC,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAA;CACnC,CAAA;AAED,eAAO,IAAI,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAM,CAAA;AAC7D,wBAAgB,eAAe,SAE9B;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,kBAAkB,CAAC,KAAK,CAAC,EAC9B,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,EACvC,SAAS,CAAC,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAC3C,QAAQ,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,EACzC,KAAK,GAAE,UAAuB,qBAM/B;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,UAAQ,qBAajF;AAED,qBAAa,eAAgB,SAAQ,KAAK;CAAG;AAE7C,wBAAsB,uBAAuB,CAC3C,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,kBAAkB,EAChE,KAAK,GAAE,uBAAmC;;;;;;;;GAmC3C;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,gFA0B7E;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,kBAAkB;;;;;;;;GAWpE"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../src/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtD,QAAA,MAAM,MAAM,0CAA2C,CAAA;AACvD,MAAM,MAAM,uBAAuB,GAAG,CAAC,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,CAAA;AAC7D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;AAC1D,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAChC,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACrC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,KAAK,OAAO,CAAA;IAC9D,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,OAAO,KAAK,GAAG,CAAA;IAC1F,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,uBAAuB,CAAA;IAC9B,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACpC,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAClC,OAAO,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IACpC,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAA;CACnC,CAAA;AAED,eAAO,IAAI,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAM,CAAA;AAC7D,wBAAgB,eAAe,SAE9B;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,kBAAkB,CAAC,KAAK,CAAC,EAC9B,OAAO,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,EACvC,SAAS,CAAC,EAAE,kBAAkB,CAAC,WAAW,CAAC,EAC3C,QAAQ,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,EACzC,KAAK,GAAE,UAAuB,qBAM/B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,uBAAuB,CAC3C,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,kBAAkB,EAChE,KAAK,GAAE,uBAAmC;;;;;;;;GAmC3C;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,UAAQ,qBAajF;AAED,qBAAa,eAAgB,SAAQ,KAAK;CAAG;AAE7C;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC,gFA0B7E;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,kBAAkB;;;;;;;;GAWpE"}
@@ -1,7 +1,7 @@
1
1
  import { JSONPath } from 'jsonpath-plus';
2
2
  export declare function queryObjectRaw(json: any, path: string): any[];
3
- export declare function queryObject(json: any, path: string): any[];
4
- export declare function queryScopes(scopes: any, datapath: string, singleValue?: boolean, json?: any): any;
3
+ export declare function queryObject(json: any, path: string, flatten?: boolean): any[];
4
+ export declare function queryScopes(scopes: any, datapath: string, singleValue?: boolean, json?: any, flatten?: boolean): any;
5
5
  export type CH1Node = {
6
6
  type: string;
7
7
  text?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/utils/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,SAMrD;AACD,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,SAElD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,UAAQ,EAAE,IAAI,GAAE,GAAY,OAsDjG;AAED,MAAM,MAAM,OAAO,GACf;IACE,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,EAAE,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC5B,GACD,OAAO,EAAE,CAAA;AAQb,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAqCtF;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../src/utils/data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,SAMrD;AACD,wBAAgB,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,UAAO,SAMlE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,UAAQ,EAAE,IAAI,GAAE,GAAY,EAAE,OAAO,UAAO,OAsDjH;AAED,MAAM,MAAM,OAAO,GACf;IACE,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,EAAE,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAC5B,GACD,OAAO,EAAE,CAAA;AAQb,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAqCtF;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
@@ -15,7 +15,7 @@ export declare function clean(settings: any): Partial<{
15
15
  params: Record<string, any>;
16
16
  headers: Record<string, string>;
17
17
  jsonpath: string;
18
- method: "GET" | "POST" | "OPTIONS" | "PUT" | "DELETE" | "UPDATE" | "HEAD";
18
+ method: "HEAD" | "GET" | "POST" | "OPTIONS" | "PUT" | "DELETE" | "UPDATE";
19
19
  body: Record<string, any>;
20
20
  url: string;
21
21
  }>;
@@ -29,7 +29,7 @@ export declare const isDataSettings: (data: any) => data is {
29
29
  params: Record<string, any>;
30
30
  headers: Record<string, string>;
31
31
  jsonpath: string;
32
- method: "GET" | "POST" | "OPTIONS" | "PUT" | "DELETE" | "UPDATE" | "HEAD";
32
+ method: "HEAD" | "GET" | "POST" | "OPTIONS" | "PUT" | "DELETE" | "UPDATE";
33
33
  body: Record<string, any>;
34
34
  url: string;
35
35
  };
@@ -51,7 +51,7 @@ export declare function DataSettings(settings: any): {
51
51
  params: Record<string, any>;
52
52
  headers: Record<string, string>;
53
53
  jsonpath: string;
54
- method: "GET" | "POST" | "OPTIONS" | "PUT" | "DELETE" | "UPDATE" | "HEAD";
54
+ method: "HEAD" | "GET" | "POST" | "OPTIONS" | "PUT" | "DELETE" | "UPDATE";
55
55
  body: Record<string, any>;
56
56
  url: string;
57
57
  };
@@ -62,7 +62,7 @@ export declare namespace DataSettings {
62
62
  params: Record<string, any>;
63
63
  headers: Record<string, string>;
64
64
  jsonpath: string;
65
- method: "GET" | "POST" | "OPTIONS" | "PUT" | "DELETE" | "UPDATE" | "HEAD";
65
+ method: "HEAD" | "GET" | "POST" | "OPTIONS" | "PUT" | "DELETE" | "UPDATE";
66
66
  body: Record<string, any>;
67
67
  url: string;
68
68
  }) => Promise<Data>;
@@ -71,7 +71,7 @@ export declare namespace DataSettings {
71
71
  params: Record<string, any>;
72
72
  headers: Record<string, string>;
73
73
  jsonpath: string;
74
- method: "GET" | "POST" | "OPTIONS" | "PUT" | "DELETE" | "UPDATE" | "HEAD";
74
+ method: "HEAD" | "GET" | "POST" | "OPTIONS" | "PUT" | "DELETE" | "UPDATE";
75
75
  body: Record<string, any>;
76
76
  url: string;
77
77
  };