@sitecore-feaas/clientside 0.3.0 → 0.3.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.
Files changed (108) hide show
  1. package/README.md +8 -6
  2. package/build/components/FEAASComponent.js +8 -4
  3. package/build/components/FEAASComponent.js.map +1 -1
  4. package/build/components/FEAASElement.js +18 -4
  5. package/build/components/FEAASElement.js.map +1 -1
  6. package/build/dom/rendering.js +1 -1
  7. package/build/dom/rendering.js.map +1 -1
  8. package/build/headless.js +4 -5
  9. package/build/headless.js.map +1 -1
  10. package/build/ui/FEAASExternal.js +8 -0
  11. package/build/ui/FEAASExternal.js.map +1 -1
  12. package/build/ui/FEAASPicker.js +10 -1
  13. package/build/ui/FEAASPicker.js.map +1 -1
  14. package/build/ui/react.js +18 -10
  15. package/build/ui/react.js.map +1 -1
  16. package/build/{dom → utils}/data.js +3 -0
  17. package/build/utils/data.js.map +1 -0
  18. package/build/utils/datapath.js +6 -2
  19. package/build/utils/datapath.js.map +1 -1
  20. package/build/utils/settings.js +154 -52
  21. package/build/utils/settings.js.map +1 -1
  22. package/dist/browser/headless.cjs +6 -6
  23. package/dist/browser/headless.cjs.map +4 -4
  24. package/dist/browser/headless.esm.js +6 -6
  25. package/dist/browser/headless.esm.js.map +1 -1
  26. package/dist/browser/index.cjs +7 -7
  27. package/dist/browser/index.cjs.map +4 -4
  28. package/dist/browser/index.esm.js +7 -7
  29. package/dist/browser/index.esm.js.map +1 -1
  30. package/dist/browser/react.cjs +6 -6
  31. package/dist/browser/react.cjs.map +4 -4
  32. package/dist/browser/react.esm.js +6 -6
  33. package/dist/browser/react.esm.js.map +1 -1
  34. package/dist/node/headless.cjs +4 -4
  35. package/dist/node/headless.cjs.map +4 -4
  36. package/dist/node/headless.esm.js +4 -4
  37. package/dist/node/headless.esm.js.map +4 -4
  38. package/dist/node/index.cjs +6 -6
  39. package/dist/node/index.cjs.map +4 -4
  40. package/dist/node/index.esm.js +6 -6
  41. package/dist/node/index.esm.js.map +4 -4
  42. package/dist/node/react.cjs +5 -5
  43. package/dist/node/react.cjs.map +4 -4
  44. package/dist/node/react.esm.js +5 -5
  45. package/dist/node/react.esm.js.map +4 -4
  46. package/headless.cjs +4 -4
  47. package/headless.cjs.map +4 -4
  48. package/headless.js +4 -4
  49. package/headless.js.map +4 -4
  50. package/package.json +1 -1
  51. package/react.cjs +6 -6
  52. package/react.cjs.map +4 -4
  53. package/react.js +6 -6
  54. package/react.js.map +4 -4
  55. package/src/components/FEAASComponent.tsx +11 -5
  56. package/src/components/FEAASElement.tsx +18 -3
  57. package/src/dom/component.ts +2 -2
  58. package/src/dom/html.ts +2 -2
  59. package/src/dom/rendering.ts +9 -7
  60. package/src/headless.ts +5 -5
  61. package/src/ui/FEAASExternal.tsx +10 -0
  62. package/src/ui/FEAASPicker.tsx +10 -2
  63. package/src/ui/react.tsx +24 -11
  64. package/src/{dom → utils}/data.ts +3 -1
  65. package/src/utils/datapath.ts +7 -2
  66. package/src/utils/settings.ts +184 -53
  67. package/test/FEAASComponentData.test.tsx +56 -52
  68. package/test/ServerComponent.test.tsx +14 -3
  69. package/test/cdn.ts +1 -1
  70. package/test/datasettings.test.ts +248 -0
  71. package/test/{extras.ts → extras.test.ts} +1 -1
  72. package/test/fetch.ts +2 -2
  73. package/types/components/FEAASComponent.d.ts +7 -4
  74. package/types/components/FEAASComponent.d.ts.map +1 -1
  75. package/types/components/FEAASElement.d.ts +1 -0
  76. package/types/components/FEAASElement.d.ts.map +1 -1
  77. package/types/dom/component.d.ts +2 -2
  78. package/types/dom/component.d.ts.map +1 -1
  79. package/types/dom/html.d.ts +2 -2
  80. package/types/dom/html.d.ts.map +1 -1
  81. package/types/dom/rendering.d.ts +8 -7
  82. package/types/dom/rendering.d.ts.map +1 -1
  83. package/types/headless.d.ts +5 -5
  84. package/types/headless.d.ts.map +1 -1
  85. package/types/tsbuildinfo +1 -1
  86. package/types/ui/FEAASExternal.d.ts +4 -0
  87. package/types/ui/FEAASExternal.d.ts.map +1 -1
  88. package/types/ui/FEAASPicker.d.ts +3 -3
  89. package/types/ui/FEAASPicker.d.ts.map +1 -1
  90. package/types/ui/react.d.ts +7 -5
  91. package/types/ui/react.d.ts.map +1 -1
  92. package/types/ui/tsbuildinfo +1 -1
  93. package/types/{dom → utils}/data.d.ts +1 -1
  94. package/types/utils/data.d.ts.map +1 -0
  95. package/types/utils/datapath.d.ts +1 -0
  96. package/types/utils/datapath.d.ts.map +1 -1
  97. package/types/utils/settings.d.ts +85 -9
  98. package/types/utils/settings.d.ts.map +1 -1
  99. package/build/dom/data.js.map +0 -1
  100. package/build/utils/fetch.js +0 -40
  101. package/build/utils/fetch.js.map +0 -1
  102. package/src/utils/fetch.ts +0 -60
  103. package/test/cjs/tsconfig.json +0 -9
  104. package/test/fetch-data.ts +0 -55
  105. package/test/settings.test.ts +0 -78
  106. package/types/dom/data.d.ts.map +0 -1
  107. package/types/utils/fetch.d.ts +0 -9
  108. package/types/utils/fetch.d.ts.map +0 -1
@@ -6,6 +6,7 @@ const earliest = new Date(2000, 1, 1, 0, 0, 0)
6
6
  const earlier = new Date(2000, 1, 2, 0, 0, 0)
7
7
  const now = new Date(2000, 1, 2, 12, 0, 0)
8
8
 
9
+ var delayLength = 16
9
10
  describe('FEAAS component data', () => {
10
11
  beforeAll(() => {
11
12
  vi.setSystemTime(now)
@@ -28,12 +29,12 @@ describe('FEAAS component data', () => {
28
29
  expect(resolved.map(({ name }) => name)).to.eql(promises.map(({ name }) => name))
29
30
  }
30
31
 
31
- const staleCacheSpy = (dataDelay = 100, htmlDelay = 100, stylesDelay = 100) => {
32
+ const freshRequestSpy = (dataDelay = 1, htmlDelay = 1, stylesDelay = 1) => {
32
33
  return vi
33
34
  .spyOn(global, 'fetch')
34
35
  .mockImplementation(async (url: string, options: Parameters<typeof fetch>[1] = {}) => {
35
36
  if (url.includes('.css')) {
36
- await new Promise((resolve) => setTimeout(resolve, stylesDelay))
37
+ await new Promise((resolve) => setTimeout(resolve, stylesDelay * delayLength))
37
38
  return new Response('YESTERDAY {}', {
38
39
  headers: {
39
40
  date: now.toUTCString(),
@@ -43,8 +44,8 @@ describe('FEAAS component data', () => {
43
44
  }
44
45
 
45
46
  if (url.includes('CDN')) {
46
- await new Promise((resolve) => setTimeout(resolve, htmlDelay))
47
- return new Response('C', {
47
+ await new Promise((resolve) => setTimeout(resolve, htmlDelay * delayLength))
48
+ return new Response('<var data-path="text">Default</var>', {
48
49
  headers: {
49
50
  date: now.toUTCString(),
50
51
  'last-modified': earlier.toUTCString()
@@ -53,36 +54,28 @@ describe('FEAAS component data', () => {
53
54
  }
54
55
 
55
56
  if (url === 'http://my-url') {
56
- await new Promise((resolve) => setTimeout(resolve, dataDelay))
57
+ await new Promise((resolve) => setTimeout(resolve, dataDelay * delayLength))
57
58
  return new Response(JSON.stringify({ text: 'My new text' }), {})
58
59
  }
59
60
 
60
61
  if (url === 'http://my-url2') {
61
- await new Promise((resolve) => setTimeout(resolve, dataDelay))
62
+ await new Promise((resolve) => setTimeout(resolve, dataDelay * delayLength))
62
63
  return new Response(JSON.stringify({ text: 'My new text2' }), {})
63
64
  }
64
-
65
- await new Promise((resolve) => setTimeout(resolve, htmlDelay))
66
- return new Response('C', {
67
- headers: {
68
- date: now.toUTCString(),
69
- 'last-modified': earlier.toUTCString()
70
- }
71
- })
72
65
  })
73
66
  }
74
67
 
75
68
  describe('Should render component using stale cache, no data initially, then data as object', async () => {
76
69
  const runWithDelay = async (delays: number[]) => {
77
- const spy = staleCacheSpy(delays[0], delays[1], delays[2])
78
- document.body.innerHTML = `<feaas-component data-path="text" library="L" cdn="CDN" component="C" version="V" revision="R"></feaas-component>`
70
+ const spy = freshRequestSpy(delays[0], delays[1], delays[2])
71
+ document.body.innerHTML = `<feaas-component library="L" cdn="CDN" component="C" version="V" revision="R"></feaas-component>`
79
72
  const component = document.body.firstElementChild as FEAASComponent
80
73
  const updateCall = vi.spyOn(component, 'update')
81
74
  await expect(component.whenDataReady).resolves.toEqual({})
82
75
  await expect(component.whenRendered).resolves.toEqual(component)
83
76
  await expect(component.whenLoaded).resolves.toBeTruthy()
84
77
  expect(component.readyData).toEqual({})
85
- expect(component.innerHTML).toEqual('C')
78
+ expect(component.innerHTML).toEqual('<var data-path="text">Default</var>')
86
79
  expect(spy).toHaveBeenCalledTimes(2)
87
80
  await checkRaceCondition([
88
81
  { promise: component.whenDataReady, name: 'when data ready' },
@@ -94,7 +87,7 @@ describe('FEAAS component data', () => {
94
87
  await expect(component.whenDataReady).resolves.toEqual({ text: 'this is text' })
95
88
  await expect(component.whenRendered).resolves.toEqual(component)
96
89
  expect(updateCall).toHaveBeenCalledTimes(2)
97
- expect(component.innerHTML).toEqual('this is text')
90
+ expect(component.innerHTML).toEqual('<var data-path="text">this is text</var>')
98
91
  expect(component.readyData).toEqual({ text: 'this is text' })
99
92
  expect(spy).toHaveBeenCalledTimes(2)
100
93
  await expect(component.whenLoaded).resolves.toBeTruthy()
@@ -103,27 +96,32 @@ describe('FEAAS component data', () => {
103
96
  { promise: component.whenRendered, name: 'when rendered' },
104
97
  { promise: component.whenLoaded, name: 'when loaded' }
105
98
  ])
99
+ component.set({ data: { text: 'this is updated text' } })
100
+ await expect(component.whenDataReady).resolves.toEqual({ text: 'this is updated text' })
101
+ await expect(component.whenRendered).resolves.toEqual(component)
102
+ expect(updateCall).toHaveBeenCalledTimes(3)
103
+ expect(component.innerHTML).toEqual('<var data-path="text">this is updated text</var>')
106
104
  }
107
105
 
108
- it('DATA -> HTML -> STYLESHEET', async () => await runWithDelay([100, 200, 300]))
109
- it('DATA -> STYLESHEET -> HTML', async () => await runWithDelay([100, 300, 200]))
110
- it('HTML -> DATA -> STYLESHEET', async () => await runWithDelay([200, 100, 300]))
111
- it('STYLESHEET -> DATA -> HTML', async () => await runWithDelay([200, 300, 100]))
112
- it('HTML -> STYLESHEET -> DATA', async () => await runWithDelay([300, 100, 200]))
113
- it('STYLESHEET -> HTML -> DATA', async () => await runWithDelay([300, 200, 100]))
106
+ it('DATA -> HTML -> STYLESHEET', async () => await runWithDelay([1, 2, 3]))
107
+ it('DATA -> STYLESHEET -> HTML', async () => await runWithDelay([1, 3, 2]))
108
+ it('HTML -> DATA -> STYLESHEET', async () => await runWithDelay([2, 1, 3]))
109
+ it('STYLESHEET -> DATA -> HTML', async () => await runWithDelay([2, 3, 1]))
110
+ it('HTML -> STYLESHEET -> DATA', async () => await runWithDelay([3, 1, 2]))
111
+ it('STYLESHEET -> HTML -> DATA', async () => await runWithDelay([3, 2, 1]))
114
112
  })
115
113
 
116
114
  describe('Should render component using stale cache and data as object first, then settings', () => {
117
115
  const runWithDelay = async (delays: number[]) => {
118
- const spy = staleCacheSpy(delays[0], delays[1], delays[2])
119
- document.body.innerHTML = `<feaas-component data='{"text": "this is text"}' data-path="text" library="L" cdn="CDN" component="C" version="V" revision="R"></feaas-component>`
116
+ const spy = freshRequestSpy(delays[0], delays[1], delays[2])
117
+ document.body.innerHTML = `<feaas-component data='{"text": "this is text"}' library="L" cdn="CDN" component="C" version="V" revision="R"></feaas-component>`
120
118
  const component = document.body.firstElementChild as FEAASComponent
121
119
  const updateCall = vi.spyOn(component, 'update')
122
120
  await expect(component.whenDataReady).resolves.toEqual({ text: 'this is text' })
123
121
  await expect(component.whenRendered).resolves.toEqual(component)
124
122
  await expect(component.whenLoaded).resolves.toBeTruthy()
125
123
  expect(component.readyData).toEqual({ text: 'this is text' })
126
- expect(component.innerHTML).toEqual('this is text')
124
+ expect(component.innerHTML).toEqual('<var data-path="text">this is text</var>')
127
125
  expect(spy).toHaveBeenCalledTimes(2)
128
126
  await checkRaceCondition([
129
127
  { promise: component.whenDataReady, name: 'when data ready' },
@@ -135,7 +133,7 @@ describe('FEAAS component data', () => {
135
133
  await expect(component.whenDataReady).resolves.toEqual({ text: 'My new text' })
136
134
  await expect(component.whenRendered).resolves.toEqual(component)
137
135
  expect(updateCall).toHaveBeenCalledTimes(2)
138
- expect(component.innerHTML).toEqual('My new text')
136
+ expect(component.innerHTML).toEqual('<var data-path="text">My new text</var>')
139
137
  expect(component.readyData).toEqual({ text: 'My new text' })
140
138
  expect(spy).toHaveBeenCalledTimes(3)
141
139
  await expect(component.whenLoaded).resolves.toBeTruthy()
@@ -146,25 +144,25 @@ describe('FEAAS component data', () => {
146
144
  ])
147
145
  }
148
146
 
149
- it('DATA -> HTML -> STYLESHEET', async () => await runWithDelay([100, 200, 300]))
150
- it('DATA -> STYLESHEET -> HTML', async () => await runWithDelay([100, 300, 200]))
151
- it('HTML -> DATA -> STYLESHEET', async () => await runWithDelay([200, 100, 300]))
152
- it('STYLESHEET -> DATA -> HTML', async () => await runWithDelay([200, 300, 100]))
153
- it('HTML -> STYLESHEET -> DATA', async () => await runWithDelay([300, 100, 200]))
154
- it('STYLESHEET -> HTML -> DATA', async () => await runWithDelay([300, 200, 100]))
147
+ it('DATA -> HTML -> STYLESHEET', async () => await runWithDelay([1, 2, 3]))
148
+ it('DATA -> STYLESHEET -> HTML', async () => await runWithDelay([1, 3, 2]))
149
+ it('HTML -> DATA -> STYLESHEET', async () => await runWithDelay([2, 1, 3]))
150
+ it('STYLESHEET -> DATA -> HTML', async () => await runWithDelay([2, 3, 1]))
151
+ it('HTML -> STYLESHEET -> DATA', async () => await runWithDelay([3, 1, 2]))
152
+ it('STYLESHEET -> HTML -> DATA', async () => await runWithDelay([3, 2, 1]))
155
153
  })
156
154
 
157
155
  describe('Should render component using stale cache and data as settings', () => {
158
156
  const runWithDelay = async (delays: number[]) => {
159
- const spy = staleCacheSpy(delays[0], delays[1], delays[2])
160
- document.body.innerHTML = `<feaas-component data='{ "jsonpath": "$", "url": "http://my-url" }' data-path="text" library="L" cdn="CDN" component="C" version="V" revision="R"></feaas-component>`
157
+ const spy = freshRequestSpy(delays[0], delays[1], delays[2])
158
+ document.body.innerHTML = `<feaas-component data='{ "jsonpath": "$", "url": "http://my-url" }' library="L" cdn="CDN" component="C" version="V" revision="R"></feaas-component>`
161
159
  const component = document.body.firstElementChild as FEAASComponent
162
160
  const updateCall = vi.spyOn(component, 'update')
163
161
  await expect(component.whenDataReady).resolves.toEqual({ text: 'My new text' })
164
162
  await expect(component.whenRendered).resolves.toEqual(component)
165
163
  await expect(component.whenLoaded).resolves.toBeTruthy()
166
164
  expect(component.readyData).toEqual({ text: 'My new text' })
167
- expect(component.innerHTML).toEqual('My new text')
165
+ expect(component.innerHTML).toEqual('<var data-path="text">My new text</var>')
168
166
  expect(spy).toHaveBeenCalledTimes(3)
169
167
  await checkRaceCondition([
170
168
  { promise: component.whenDataReady, name: 'when data ready' },
@@ -174,24 +172,30 @@ describe('FEAAS component data', () => {
174
172
  expect(updateCall).toHaveBeenCalledTimes(1)
175
173
  }
176
174
 
177
- it('DATA -> HTML -> STYLESHEET', async () => await runWithDelay([100, 200, 300]))
178
- it('DATA -> STYLESHEET -> HTML', async () => await runWithDelay([100, 300, 200]))
179
- it('HTML -> DATA -> STYLESHEET', async () => await runWithDelay([200, 100, 300]))
180
- it('STYLESHEET -> DATA -> HTML', async () => await runWithDelay([200, 300, 100]))
181
- it('HTML -> STYLESHEET -> DATA', async () => await runWithDelay([300, 100, 200]))
182
- it('STYLESHEET -> HTML -> DATA', async () => await runWithDelay([300, 200, 100]))
175
+ it('DATA -> HTML -> STYLESHEET', async () => await runWithDelay([1, 2, 3]))
176
+ it('DATA -> STYLESHEET -> HTML', async () => await runWithDelay([1, 3, 2]))
177
+ it('HTML -> DATA -> STYLESHEET', async () => await runWithDelay([2, 1, 3]))
178
+ it('STYLESHEET -> DATA -> HTML', async () => await runWithDelay([2, 3, 1]))
179
+ it('HTML -> STYLESHEET -> DATA', async () => await runWithDelay([3, 1, 2]))
180
+ it('STYLESHEET -> HTML -> DATA', async () => await runWithDelay([3, 2, 1]))
183
181
  })
184
182
 
185
183
  describe('Should render component using stale cache and data as mapping', () => {
186
184
  const runWithDelay = async (delays: number[]) => {
187
- const spy = staleCacheSpy(delays[0], delays[1], delays[2])
185
+ const spy = freshRequestSpy(delays[0], delays[1], delays[2])
188
186
  document.body.innerHTML = `<feaas-component data='{ "datasource-1": {"jsonpath": "$", "url": "http://my-url"}, "datasource-2": {"jsonpath": "$", "url": "http://my-url2"} }' data-path="datasource-2.text" library="L" cdn="CDN" component="C" version="V" revision="R"></feaas-component>`
189
187
  const component = document.body.firstElementChild as FEAASComponent
190
188
  const updateCall = vi.spyOn(component, 'update')
191
- await expect(component.whenDataReady).resolves.toEqual({ 'datasource-1': { text: 'My new text' }, 'datasource-2': { text: 'My new text2' } })
189
+ await expect(component.whenDataReady).resolves.toEqual({
190
+ 'datasource-1': { text: 'My new text' },
191
+ 'datasource-2': { text: 'My new text2' }
192
+ })
192
193
  await expect(component.whenRendered).resolves.toEqual(component)
193
194
  await expect(component.whenLoaded).resolves.toBeTruthy()
194
- expect(component.readyData).toEqual({ 'datasource-1': { text: 'My new text' }, 'datasource-2': { text: 'My new text2' } })
195
+ expect(component.readyData).toEqual({
196
+ 'datasource-1': { text: 'My new text' },
197
+ 'datasource-2': { text: 'My new text2' }
198
+ })
195
199
  expect(component.innerHTML).toEqual('My new text2')
196
200
  expect(spy).toHaveBeenCalledTimes(4)
197
201
  await checkRaceCondition([
@@ -202,12 +206,12 @@ describe('FEAAS component data', () => {
202
206
  expect(updateCall).toHaveBeenCalledTimes(1)
203
207
  }
204
208
 
205
- it('DATA -> HTML -> STYLESHEET', async () => await runWithDelay([100, 200, 300]))
206
- it('DATA -> STYLESHEET -> HTML', async () => await runWithDelay([100, 300, 200]))
207
- it('HTML -> DATA -> STYLESHEET', async () => await runWithDelay([200, 100, 300]))
208
- it('STYLESHEET -> DATA -> HTML', async () => await runWithDelay([200, 300, 100]))
209
- it('HTML -> STYLESHEET -> DATA', async () => await runWithDelay([300, 100, 200]))
210
- it('STYLESHEET -> HTML -> DATA', async () => await runWithDelay([300, 200, 100]))
209
+ it('DATA -> HTML -> STYLESHEET', async () => await runWithDelay([1, 2, 3]))
210
+ it('DATA -> STYLESHEET -> HTML', async () => await runWithDelay([1, 3, 2]))
211
+ it('HTML -> DATA -> STYLESHEET', async () => await runWithDelay([2, 1, 3]))
212
+ it('STYLESHEET -> DATA -> HTML', async () => await runWithDelay([2, 3, 1]))
213
+ it('HTML -> STYLESHEET -> DATA', async () => await runWithDelay([3, 1, 2]))
214
+ it('STYLESHEET -> HTML -> DATA', async () => await runWithDelay([3, 2, 1]))
211
215
  })
212
216
 
213
217
  // TODO
@@ -2,7 +2,7 @@ import React from 'react'
2
2
  import { beforeAll, beforeEach, describe, expect, it, vi } from 'vitest'
3
3
  import { ServerComponent } from '../src/ui/react.js'
4
4
  import { FEAASComponent } from '../src/components/FEAASComponent.js'
5
- import {test} from './FEAASComponent.react.test.js'
5
+ import { test } from './FEAASComponent.react.test.js'
6
6
 
7
7
  const earliest = new Date(2000, 1, 1, 0, 0, 0)
8
8
  const earlier = new Date(2000, 1, 2, 0, 0, 0)
@@ -18,16 +18,27 @@ describe('React Server', () => {
18
18
  document.write()
19
19
  })
20
20
 
21
- it('render server component', async () => {
21
+ it('render with data settings', async () => {
22
22
  vi.spyOn(global, 'fetch').mockImplementation(
23
23
  async (url: string, options: Parameters<typeof fetch>[1] = {}) => new Response('{"data": "1"}')
24
24
  )
25
25
 
26
- const Component = await ServerComponent({ src: 'library/test', data: { url: 'http://localhost:4000/api/data' } })
26
+ const Component = await ServerComponent({ src: 'library/test', data: { url: 'http://127.0.0.1:4000/api/data' } })
27
27
 
28
28
  await test(
29
29
  <>{Component}</>,
30
30
  `<feaas-component library="library" component="test" src="library/test" data="{&quot;data&quot;:&quot;1&quot;}">{"data": "1"}</feaas-component>`
31
31
  )
32
32
  })
33
+ it('render with object data', async () => {
34
+ vi.spyOn(global, 'fetch').mockImplementation(
35
+ async (url: string, options: Parameters<typeof fetch>[1] = {}) => new Response('Test')
36
+ )
37
+
38
+ const Component = await ServerComponent({ src: 'library/test', data: { data: '2' } })
39
+ await test(
40
+ <>{Component}</>,
41
+ `<feaas-component library="library" component="test" src="library/test" data="{&quot;data&quot;:&quot;2&quot;}">Test</feaas-component>`
42
+ )
43
+ })
33
44
  })
package/test/cdn.ts CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  parseStylesheetSource,
8
8
  getStylesheetURL
9
9
  } from '../src/cdn.js'
10
- import { CH1Node, serializeCH1RichText } from '../src/dom/data.js'
10
+ import { CH1Node, serializeCH1RichText } from '../src/utils/data.js'
11
11
  describe('CDN', function () {
12
12
  it('should parse and serialize component src', function () {
13
13
  ;[
@@ -0,0 +1,248 @@
1
+ import { vi, describe, it, expect } from 'vitest'
2
+ import { DataSettings } from '../src/utils/settings.js'
3
+
4
+ describe('DataSettings', () => {
5
+ describe('.clean', () => {
6
+ it('should clean', () => {
7
+ expect(
8
+ DataSettings.clean({
9
+ url: 'http://url',
10
+ method: 'post',
11
+ params: { first: '1' },
12
+ headers: { 'Content-type': 'multipart/form-data' },
13
+ body: { key: 'value' }
14
+ })
15
+ ).to.eql({
16
+ url: 'http://url',
17
+ method: 'POST',
18
+ params: { first: '1' },
19
+ headers: { 'Content-Type': 'multipart/form-data' },
20
+ body: { key: 'value' }
21
+ })
22
+ expect(DataSettings.clean({})).to.eql({ url: '' })
23
+ expect(
24
+ DataSettings.clean({
25
+ headers: {
26
+ accept: 'a-z'
27
+ }
28
+ })
29
+ ).to.eql({
30
+ url: '',
31
+ headers: {
32
+ Accept: 'a-z'
33
+ }
34
+ })
35
+ })
36
+ })
37
+ describe('.toFetchArguments', () => {
38
+ it('with no settings', () => {
39
+ const fetchArgs = DataSettings.toFetchArguments()
40
+
41
+ expect(fetchArgs).toEqual([
42
+ '',
43
+ {
44
+ body: undefined,
45
+ headers: { Accept: 'application/json' },
46
+ method: 'GET'
47
+ }
48
+ ])
49
+ })
50
+
51
+ it('with url, params and post', () => {
52
+ const fetchArgs = DataSettings.toFetchArguments({ url: 'http://url', method: 'post', params: { first: '1' } })
53
+
54
+ expect(fetchArgs).toEqual([
55
+ 'http://url?first=1',
56
+ { method: 'POST', body: undefined, headers: { Accept: 'application/json' } }
57
+ ])
58
+ })
59
+
60
+ it('with url, params and post, body and headers application/json', () => {
61
+ const fetchArgs = DataSettings.toFetchArguments({
62
+ url: 'http://url',
63
+ method: 'Post',
64
+ params: { first: '1' },
65
+ headers: { 'content-type': 'application/json', accept: 'abc' },
66
+ body: { key: 'value' }
67
+ })
68
+
69
+ expect(fetchArgs).toEqual([
70
+ 'http://url?first=1',
71
+ {
72
+ method: 'POST',
73
+ headers: { 'Content-Type': 'application/json', Accept: 'abc' },
74
+ body: '{"key":"value"}'
75
+ }
76
+ ])
77
+ })
78
+
79
+ it('with url, params and post, body and headers multipart-form-data', () => {
80
+ const fetchArgs = DataSettings.toFetchArguments({
81
+ url: 'http://url',
82
+ method: 'post',
83
+ params: { first: '1' },
84
+ headers: { 'Content-type': 'multipart/form-data' },
85
+ body: { key: 'value' }
86
+ })
87
+
88
+ const form = new FormData()
89
+
90
+ form.append('key', 'value')
91
+
92
+ expect(fetchArgs).toEqual([
93
+ 'http://url?first=1',
94
+ {
95
+ method: 'POST',
96
+ headers: { Accept: 'application/json', 'Content-Type': 'multipart/form-data' },
97
+ body: form
98
+ }
99
+ ])
100
+ })
101
+
102
+ it('with url, params and post, body and headers url params', () => {
103
+ const fetchArgs = DataSettings.toFetchArguments({
104
+ url: 'http://url',
105
+ method: 'post',
106
+ params: { first: '1', second: '2' },
107
+ headers: { 'Content-type': 'application/x-www-form-urlencoded' },
108
+ body: { key: 'value' }
109
+ })
110
+
111
+ expect(fetchArgs).toEqual([
112
+ 'http://url?first=1&second=2',
113
+ {
114
+ method: 'POST',
115
+ headers: { Accept: 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' },
116
+ body: new URLSearchParams({ key: 'value' })
117
+ }
118
+ ])
119
+ })
120
+ })
121
+ describe('.fetch', () => {
122
+ it('fetches when passed data object', async () => {
123
+ const result = await DataSettings.fetch({ hello: 'world' })
124
+
125
+ expect(result).toEqual({ hello: 'world' })
126
+ })
127
+
128
+ it('fetches when passed settings object', async () => {
129
+ const spy = vi.spyOn(global, 'fetch')
130
+ spy.mockImplementation(
131
+ async (url: string, options?: Parameters<typeof fetch>[1]) =>
132
+ new Response(JSON.stringify({ data: 'My data' }), {})
133
+ )
134
+
135
+ const result = await DataSettings.fetch({ jsonpath: '$', url: 'http://my-url' })
136
+
137
+ expect(result).toEqual({ data: 'My data' })
138
+
139
+ expect(spy).toHaveBeenCalledOnce()
140
+ })
141
+
142
+ it('fetches when passed mapping object', async () => {
143
+ const spy = vi.spyOn(global, 'fetch')
144
+ spy.mockImplementation(async (url: string, options?: Parameters<typeof fetch>[1]) => {
145
+ if (url === 'http://my-url1') return new Response(JSON.stringify({ data: 'My data1' }), {})
146
+ if (url === 'http://my-url2') return new Response(JSON.stringify({ data: 'My data2' }), {})
147
+ throw new Error('Fetch failed')
148
+ })
149
+
150
+ const inputData = {
151
+ datasourceId1: { jsonpath: '$', url: 'http://my-url1' },
152
+ datasourceId2: { data: 'This is plain data' },
153
+ datasourceId3: { jsonpath: '$', url: 'http://my-url2' },
154
+ datasourceId4: { jsonpath: '$', url: 'http://bad-url' }
155
+ }
156
+
157
+ const result = await DataSettings.fetch(inputData)
158
+
159
+ expect(result).to.have.property('datasourceId1')
160
+ expect((result as Record<keyof typeof inputData, any>).datasourceId1).toEqual({ data: 'My data1' })
161
+
162
+ expect(result).to.have.property('datasourceId2')
163
+ expect((result as Record<keyof typeof inputData, any>).datasourceId2).toEqual({ data: 'This is plain data' })
164
+
165
+ expect(result).to.have.property('datasourceId3')
166
+ expect((result as Record<keyof typeof inputData, any>).datasourceId3).toEqual({ data: 'My data2' })
167
+
168
+ expect(result).to.have.property('datasourceId4')
169
+ expect((result as Record<keyof typeof inputData, any>).datasourceId4).toEqual({})
170
+
171
+ expect(spy).toHaveBeenCalledTimes(3)
172
+ })
173
+
174
+ it('should serialize body', async () => {
175
+ const spy = vi.spyOn(global, 'fetch')
176
+ spy.mockImplementation(async (url: string, options?: Parameters<typeof fetch>[1]) => {
177
+ return new Response(JSON.stringify(options), {})
178
+ })
179
+
180
+ const inputData = {
181
+ datasourceId1: {
182
+ url: 'http://my-url1',
183
+ headers: { 'content-type': 'application/json' },
184
+ body: { a: 1 },
185
+ method: 'put'
186
+ },
187
+ datasourceId2: {
188
+ url: 'http://my-url2',
189
+ headers: { 'content-type': 'multipart/form-data' },
190
+ body: { a: 1 },
191
+ method: 'post'
192
+ },
193
+ datasourceId3: {
194
+ url: 'http://my-url3',
195
+ headers: { 'Content-type': 'application/x-www-form-urlencoded' },
196
+ body: { a: 1 },
197
+ method: 'patch'
198
+ },
199
+ datasourceId4: {
200
+ url: 'http://my-url4',
201
+ body: { a: 1 }
202
+ }
203
+ }
204
+
205
+ const result = await DataSettings.fetch(inputData)
206
+
207
+ expect(spy).toHaveBeenNthCalledWith(1, 'http://my-url1', {
208
+ headers: {
209
+ Accept: 'application/json',
210
+ 'Content-Type': 'application/json'
211
+ },
212
+ body: '{"a":1}',
213
+ method: 'put'
214
+ })
215
+ expect(spy).toHaveBeenNthCalledWith(2, 'http://my-url2', {
216
+ headers: {
217
+ Accept: 'application/json',
218
+ 'Content-Type': 'multipart/form-data'
219
+ },
220
+ body: (() => {
221
+ const f = new FormData()
222
+ f.append('a', '1')
223
+ return f
224
+ })(),
225
+ method: 'post'
226
+ })
227
+ expect(spy).toHaveBeenNthCalledWith(3, 'http://my-url3', {
228
+ headers: {
229
+ Accept: 'application/json',
230
+ 'Content-Type': 'application/x-www-form-urlencoded'
231
+ },
232
+ body: (() => {
233
+ const f = new URLSearchParams()
234
+ f.append('a', '1')
235
+ return f
236
+ })(),
237
+ method: 'patch'
238
+ })
239
+ expect(spy).toHaveBeenNthCalledWith(4, 'http://my-url4', {
240
+ body: undefined,
241
+ headers: {
242
+ Accept: 'application/json'
243
+ },
244
+ method: 'get'
245
+ })
246
+ })
247
+ })
248
+ })
@@ -1,5 +1,5 @@
1
1
  import { describe, it, assert, beforeAll, expect } from 'vitest'
2
- import { CH1Node, serializeCH1RichText } from '../src/dom/data.js'
2
+ import { CH1Node, serializeCH1RichText } from '../src/utils/data.js'
3
3
  describe('Extras', function () {
4
4
  it('should serialize content hub', function () {
5
5
  const data: CH1Node = {
package/test/fetch.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { vi, describe, it, assert, beforeAll, expect, beforeEach } from 'vitest'
2
- import { CH1Node, serializeCH1RichText } from '../src/dom/data.js'
2
+ import { CH1Node, serializeCH1RichText } from '../src/utils/data.js'
3
3
  import { clearFetchCache, fetchAndRevalidate } from '../src/fetch.js'
4
4
  const yesterday = new Date(2000, 1, 1, 0, 0, 0)
5
5
  const yesterdayNoon = new Date(2000, 1, 2, 12, 0, 0)
@@ -113,7 +113,7 @@ describe('Fetch', () => {
113
113
  })
114
114
  } else {
115
115
  return new Response('A', {
116
- headers: {
116
+ headers: {
117
117
  date: yesterday.toUTCString()
118
118
  }
119
119
  })
@@ -1,7 +1,8 @@
1
1
  import { ControlledPromise } from '../utils/promise.js';
2
+ import { DataOptions } from '../utils/settings.js';
2
3
  import { FEAASElement } from './FEAASElement.js';
3
4
  export declare function FEAASComponentsProps(element: FEAASElement): {
4
- data: any;
5
+ data: DataOptions;
5
6
  cdn: string;
6
7
  library: string;
7
8
  component: string;
@@ -45,7 +46,7 @@ export declare class FEAASComponent extends FEAASElement<FEAASComponentsProps, s
45
46
  whenDataReady: ControlledPromise<any>;
46
47
  static observedAttributes: string[];
47
48
  defaultProps: Partial<{
48
- data: any;
49
+ data: DataOptions;
49
50
  cdn: string;
50
51
  library: string;
51
52
  component: string;
@@ -60,9 +61,9 @@ export declare class FEAASComponent extends FEAASElement<FEAASComponentsProps, s
60
61
  withStylesheet: boolean;
61
62
  }>;
62
63
  needsRefresh: boolean;
63
- setData(data: any): void;
64
+ setData(data: DataOptions): void;
64
65
  getProps(): {
65
- data: any;
66
+ data: DataOptions;
66
67
  cdn: string;
67
68
  library: string;
68
69
  component: string;
@@ -76,6 +77,7 @@ export declare class FEAASComponent extends FEAASElement<FEAASComponentsProps, s
76
77
  lastModified: string;
77
78
  withStylesheet: boolean;
78
79
  };
80
+ isJSONAttribute(prop: keyof FEAASComponentsProps): boolean;
79
81
  attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
80
82
  fetchData(): Promise<void>;
81
83
  getEditor(): any;
@@ -94,6 +96,7 @@ declare global {
94
96
  interface IntrinsicElements {
95
97
  'feaas-component': {
96
98
  data?: any;
99
+ suppressHydrationWarning?: boolean;
97
100
  template?: string;
98
101
  instance?: string;
99
102
  editable?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"FEAASComponent.d.ts","sourceRoot":"","sources":["../../src/components/FEAASComponent.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEvD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY;;;;;;;;;;;;;;EAkCzD;AAED,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAE1E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,cAAe,SAAQ,YAAY,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAC5E,SAAS,EAAE,GAAG,CAAK;IACnB,aAAa,yBAGZ;IAED,MAAM,CAAC,kBAAkB,WAYxB;IAED,YAAY;;;;;;;;;;;;;;OAOsB;IAElC,YAAY,EAAE,OAAO,CAAA;IAErB,OAAO,CAAC,IAAI,EAAE,GAAG;IAIjB,QAAQ;;;;;;;;;;;;;;;IAIR,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAkB1E,SAAS;IAef,SAAS,IAAI,GAAG;;IAkBhB,IAAI;IASJ,WAAW;IAaX,aAAa;IAMb,MAAM,SAAU,MAAM,UAGrB;IAEK,IAAI;IAkCV,eAAe,EAAE,OAAO,CAAA;IAExB,KAAK;IAML,MAAM;CAaP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,GAAG,CAAC;QACZ,UAAU,iBAAiB;YACzB,iBAAiB,EAAE;gBACjB,IAAI,CAAC,EAAE,GAAG,CAAA;gBACV,QAAQ,CAAC,EAAE,MAAM,CAAA;gBACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;gBACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;gBAClB,QAAQ,CAAC,EAAE,GAAG,CAAA;gBACd,uBAAuB,CAAC,EAAE;oBAAE,MAAM,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC5C,eAAe,CAAC,EAAE,MAAM,CAAA;gBACxB,iBAAiB,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,EAAE,CAAA;aAC1C,GAAG,CACA;gBACE;;mBAEG;gBACH,QAAQ,CAAC,EAAE,MAAM,CAAA;gBACjB,GAAG,CAAC,EAAE,MAAM,CAAA;gBACZ,OAAO,EAAE,MAAM,CAAA;gBACf,SAAS,EAAE,MAAM,CAAA;gBACjB,OAAO,CAAC,EAAE,MAAM,CAAA;gBAChB,QAAQ,CAAC,EAAE,oBAAoB,CAAC,UAAU,CAAC,CAAA;aAC5C,GACD;gBAAE,GAAG,EAAE,MAAM,CAAA;aAAE,GACf;gBAAE,QAAQ,EAAE,MAAM,CAAA;aAAE,CACvB,CAAA;SACF;KACF;CACF;AAGD,OAAO,EAAE,cAAc,IAAI,SAAS,EAAE,oBAAoB,IAAI,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"FEAASComponent.d.ts","sourceRoot":"","sources":["../../src/components/FEAASComponent.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,WAAW,EAAgB,MAAM,sBAAsB,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY;;;;;;;;;;;;;;EAkCzD;AAED,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAE1E;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,cAAe,SAAQ,YAAY,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAC5E,SAAS,EAAE,GAAG,CAAK;IACnB,aAAa,yBAGZ;IAED,MAAM,CAAC,kBAAkB,WAYxB;IAED,YAAY;;;;;;;;;;;;;;OAQsB;IAElC,YAAY,EAAE,OAAO,CAAA;IAErB,OAAO,CAAC,IAAI,EAAE,WAAW;IAIzB,QAAQ;;;;;;;;;;;;;;;IAIR,eAAe,CAAC,IAAI,EAAE,MAAM,oBAAoB;IAIhD,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAkB1E,SAAS;IAef,SAAS,IAAI,GAAG;;IAkBhB,IAAI;IASJ,WAAW;IAaX,aAAa;IAMb,MAAM,SAAU,MAAM,UAGrB;IAEK,IAAI;IAkCV,eAAe,EAAE,OAAO,CAAA;IAExB,KAAK;IAML,MAAM;CAaP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,GAAG,CAAC;QACZ,UAAU,iBAAiB;YACzB,iBAAiB,EAAE;gBACjB,IAAI,CAAC,EAAE,GAAG,CAAA;gBACV,wBAAwB,CAAC,EAAE,OAAO,CAAA;gBAClC,QAAQ,CAAC,EAAE,MAAM,CAAA;gBACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;gBACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;gBAClB,QAAQ,CAAC,EAAE,GAAG,CAAA;gBACd,uBAAuB,CAAC,EAAE;oBAAE,MAAM,EAAE,MAAM,CAAA;iBAAE,CAAA;gBAC5C,eAAe,CAAC,EAAE,MAAM,CAAA;gBACxB,iBAAiB,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,EAAE,CAAA;aAC1C,GAAG,CACA;gBACE;;mBAEG;gBACH,QAAQ,CAAC,EAAE,MAAM,CAAA;gBACjB,GAAG,CAAC,EAAE,MAAM,CAAA;gBACZ,OAAO,EAAE,MAAM,CAAA;gBACf,SAAS,EAAE,MAAM,CAAA;gBACjB,OAAO,CAAC,EAAE,MAAM,CAAA;gBAChB,QAAQ,CAAC,EAAE,oBAAoB,CAAC,UAAU,CAAC,CAAA;aAC5C,GACD;gBAAE,GAAG,EAAE,MAAM,CAAA;aAAE,GACf;gBAAE,QAAQ,EAAE,MAAM,CAAA;aAAE,CACvB,CAAA;SACF;KACF;CACF;AAGD,OAAO,EAAE,cAAc,IAAI,SAAS,EAAE,oBAAoB,IAAI,cAAc,EAAE,CAAA"}
@@ -75,6 +75,7 @@ export declare class FEAASElement<Props = any, Payload = any> extends WebCompone
75
75
  */
76
76
  mount(): void;
77
77
  dispatchEventIndirectly(event: Event): void;
78
+ isJSONAttribute(attribute: keyof Props): boolean;
78
79
  log(...args: any): void;
79
80
  /** Nothing special happens on unmount, except setting a flag */
80
81
  unmount(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"FEAASElement.d.ts","sourceRoot":"","sources":["../../src/components/FEAASElement.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FEAASElement.d.ts","sourceRoot":"","sources":["../../src/components/FEAASElement.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { Datascopes } from './data.js';
1
+ import { DataScopes } from '../utils/settings.js';
2
2
  import { FEAASComponentProps } from './rendering.js';
3
- export declare function renderComponentElement(content: string, datasources?: Datascopes): HTMLDivElement;
3
+ export declare function renderComponentElement(content: string, datasources?: DataScopes): HTMLDivElement;
4
4
  export declare function renderComponent(props: FEAASComponentProps, root?: HTMLElement): HTMLElement;
5
5
  export declare function renderComponentPromise(props: FEAASComponentProps, root?: HTMLElement): Promise<HTMLElement>;
6
6
  //# sourceMappingURL=component.d.ts.map