lightview 1.8.2 → 2.0.0

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 (264) hide show
  1. package/.agent/workflows/daisyui-component-migration.md +155 -0
  2. package/.codacy/cli.sh +149 -0
  3. package/.codacy/codacy.yaml +15 -0
  4. package/.github/instructions/codacy.instructions.md +72 -0
  5. package/.wranglerignore +21 -0
  6. package/README.md +1330 -19
  7. package/_headers +4 -0
  8. package/build.js +70 -0
  9. package/components/actions/button.js +151 -0
  10. package/components/actions/dropdown.js +120 -0
  11. package/components/actions/modal.js +146 -0
  12. package/components/actions/swap.js +118 -0
  13. package/components/daisyui.js +288 -0
  14. package/components/data-display/accordion.js +128 -0
  15. package/components/data-display/alert.js +112 -0
  16. package/components/data-display/avatar.js +170 -0
  17. package/components/data-display/badge.js +82 -0
  18. package/components/data-display/card.js +151 -0
  19. package/components/data-display/carousel.js +94 -0
  20. package/components/data-display/chart.js +220 -0
  21. package/components/data-display/chat.js +128 -0
  22. package/components/data-display/collapse.js +103 -0
  23. package/components/data-display/countdown.js +69 -0
  24. package/components/data-display/diff.js +111 -0
  25. package/components/data-display/kbd.js +65 -0
  26. package/components/data-display/loading.js +75 -0
  27. package/components/data-display/progress.js +79 -0
  28. package/components/data-display/radial-progress.js +88 -0
  29. package/components/data-display/skeleton.js +66 -0
  30. package/components/data-display/stats.js +159 -0
  31. package/components/data-display/table.js +146 -0
  32. package/components/data-display/timeline.js +146 -0
  33. package/components/data-display/toast.js +72 -0
  34. package/components/data-display/tooltip.js +74 -0
  35. package/components/data-input/checkbox.js +253 -0
  36. package/components/data-input/file-input.js +224 -0
  37. package/components/data-input/input.js +264 -0
  38. package/components/data-input/radio.js +338 -0
  39. package/components/data-input/range.js +204 -0
  40. package/components/data-input/rating.js +219 -0
  41. package/components/data-input/select.js +287 -0
  42. package/components/data-input/textarea.js +287 -0
  43. package/components/data-input/toggle.js +201 -0
  44. package/components/index.js +137 -0
  45. package/components/layout/divider.js +72 -0
  46. package/components/layout/drawer.js +142 -0
  47. package/components/layout/footer.js +100 -0
  48. package/components/layout/hero.js +109 -0
  49. package/components/layout/indicator.js +90 -0
  50. package/components/layout/join.js +78 -0
  51. package/components/layout/navbar.js +110 -0
  52. package/components/navigation/breadcrumbs.js +91 -0
  53. package/components/navigation/dock.js +103 -0
  54. package/components/navigation/menu.js +126 -0
  55. package/components/navigation/pagination.js +105 -0
  56. package/components/navigation/steps.js +89 -0
  57. package/components/navigation/tabs.css +177 -0
  58. package/components/navigation/tabs.js +123 -0
  59. package/components/theme/theme-switch.css +65 -0
  60. package/components/theme/theme-switch.js +177 -0
  61. package/docs/about.html +164 -0
  62. package/docs/api/computed.html +184 -0
  63. package/docs/api/effects.html +173 -0
  64. package/docs/api/elements.html +180 -0
  65. package/docs/api/enhance.html +225 -0
  66. package/docs/api/hypermedia.html +165 -0
  67. package/docs/api/index.html +178 -0
  68. package/docs/api/nav.html +18 -0
  69. package/docs/api/signals.html +136 -0
  70. package/docs/api/state.html +217 -0
  71. package/docs/assets/images/logo-favicon.svg +42 -0
  72. package/docs/assets/images/logo-static.svg +40 -0
  73. package/docs/assets/images/logo.svg +66 -0
  74. package/docs/assets/js/examplify.js +395 -0
  75. package/docs/assets/styles/site.css +1102 -0
  76. package/docs/assets/styles/themes.css +236 -0
  77. package/docs/components/accordion.html +439 -0
  78. package/docs/components/alert.html +528 -0
  79. package/docs/components/avatar.html +586 -0
  80. package/docs/components/badge.html +531 -0
  81. package/docs/components/breadcrumbs.html +278 -0
  82. package/docs/components/button.html +579 -0
  83. package/docs/components/card.html +561 -0
  84. package/docs/components/carousel.html +286 -0
  85. package/docs/components/chart-area.html +702 -0
  86. package/docs/components/chart-bar.html +782 -0
  87. package/docs/components/chart-column.html +735 -0
  88. package/docs/components/chart-line.html +794 -0
  89. package/docs/components/chart-pie.html +823 -0
  90. package/docs/components/chart.html +610 -15
  91. package/docs/components/chat.html +547 -0
  92. package/docs/components/checkbox.html +641 -0
  93. package/docs/components/collapse.html +536 -0
  94. package/docs/components/component-nav.html +53 -0
  95. package/docs/components/countdown.html +470 -0
  96. package/docs/components/diff.html +245 -0
  97. package/docs/components/divider.html +240 -0
  98. package/docs/components/dock.html +277 -0
  99. package/docs/components/drawer.html +515 -0
  100. package/docs/components/dropdown.html +479 -0
  101. package/docs/components/file-input.html +591 -0
  102. package/docs/components/footer.html +301 -0
  103. package/docs/components/gallery.html +504 -0
  104. package/docs/components/hero.html +264 -0
  105. package/docs/components/index.css +840 -0
  106. package/docs/components/index.html +735 -0
  107. package/docs/components/indicator.html +342 -0
  108. package/docs/components/input.html +644 -0
  109. package/docs/components/join.html +285 -0
  110. package/docs/components/kbd.html +322 -0
  111. package/docs/components/loading.html +521 -0
  112. package/docs/components/menu.html +461 -0
  113. package/docs/components/modal.html +639 -0
  114. package/docs/components/navbar.html +321 -0
  115. package/docs/components/pagination.html +279 -0
  116. package/docs/components/progress.html +514 -0
  117. package/docs/components/radial-progress.html +434 -0
  118. package/docs/components/radio.html +655 -0
  119. package/docs/components/range.html +611 -0
  120. package/docs/components/rating.html +642 -0
  121. package/docs/components/select.html +696 -0
  122. package/docs/components/sidebar-setup.js +93 -0
  123. package/docs/components/skeleton.html +447 -0
  124. package/docs/components/spinner.html +68 -0
  125. package/docs/components/stats.html +486 -0
  126. package/docs/components/steps.html +356 -0
  127. package/docs/components/swap.html +517 -0
  128. package/docs/components/switch.html +68 -0
  129. package/docs/components/table.html +668 -0
  130. package/docs/components/tabs.html +506 -0
  131. package/docs/components/text-input.html +68 -0
  132. package/docs/components/textarea.html +603 -0
  133. package/docs/components/timeline.html +485 -42
  134. package/docs/components/toast.html +474 -0
  135. package/docs/components/toggle.html +564 -0
  136. package/docs/components/tooltip.html +423 -0
  137. package/docs/examples/getting-started-example.html +40 -0
  138. package/docs/examples/index.html +93 -0
  139. package/docs/getting-started/index.html +739 -0
  140. package/docs/getting-started/reviews.html +23 -0
  141. package/docs/getting-started/reviews.odom +108 -0
  142. package/docs/getting-started/reviews.vdom +84 -0
  143. package/docs/index.html +132 -42
  144. package/docs/playground.html +416 -0
  145. package/docs/router.html +285 -0
  146. package/docs/styles/index.html +190 -0
  147. package/functions/_middleware.js +32 -0
  148. package/index.html +309 -0
  149. package/lightview-router.js +364 -0
  150. package/lightview-x.js +1577 -0
  151. package/lightview.js +659 -1200
  152. package/lightview.js.backup +793 -0
  153. package/middleware/locale.js +25 -0
  154. package/middleware/markdown.js +44 -0
  155. package/middleware/notFound.js +37 -0
  156. package/package.json +27 -41
  157. package/watch.js +92 -0
  158. package/wrangler.toml +12 -0
  159. package/.idea/lightview.iml +0 -12
  160. package/.idea/modules.xml +0 -8
  161. package/.idea/vcs.xml +0 -6
  162. package/LICENSE +0 -21
  163. package/codepen-no-tabs-embed.css +0 -2
  164. package/docs/CNAME +0 -1
  165. package/docs/api.html +0 -674
  166. package/docs/blank.html +0 -10
  167. package/docs/comparedto.html +0 -89
  168. package/docs/components/chart-repl.html +0 -69
  169. package/docs/components/components.js +0 -113
  170. package/docs/components/contents.html +0 -17
  171. package/docs/components/gantt-repl.html +0 -61
  172. package/docs/components/gantt.html +0 -42
  173. package/docs/components/gauge-repl.html +0 -66
  174. package/docs/components/gauge.html +0 -20
  175. package/docs/components/orgchart-repl.html +0 -64
  176. package/docs/components/orgchart.html +0 -41
  177. package/docs/components/repl-as-src.html +0 -17
  178. package/docs/components/repl-repl.html +0 -95
  179. package/docs/components/repl.html +0 -527
  180. package/docs/components/timeline-repl.html +0 -72
  181. package/docs/components.html +0 -14
  182. package/docs/css/highlightjs.min.css +0 -9
  183. package/docs/css/tutorial.css +0 -35
  184. package/docs/examples/anchor.html +0 -11
  185. package/docs/examples/chart.html +0 -34
  186. package/docs/examples/counter.html +0 -26
  187. package/docs/examples/counter.test.mjs +0 -47
  188. package/docs/examples/counter2.html +0 -26
  189. package/docs/examples/directives.html +0 -79
  190. package/docs/examples/foreign.html +0 -50
  191. package/docs/examples/forgeinform.html +0 -98
  192. package/docs/examples/form.html +0 -61
  193. package/docs/examples/gauge.html +0 -18
  194. package/docs/examples/invalid-template-literals.html +0 -44
  195. package/docs/examples/medium/remote.html +0 -60
  196. package/docs/examples/message.html +0 -18
  197. package/docs/examples/nested.html +0 -11
  198. package/docs/examples/object-bound-form.html +0 -34
  199. package/docs/examples/remote-server.js +0 -51
  200. package/docs/examples/remote.html +0 -34
  201. package/docs/examples/remote.json +0 -1
  202. package/docs/examples/scratch.html +0 -69
  203. package/docs/examples/sensors/index.html +0 -44
  204. package/docs/examples/sensors/sensor-server.js +0 -30
  205. package/docs/examples/shared.html +0 -41
  206. package/docs/examples/template.html +0 -33
  207. package/docs/examples/timeline.html +0 -21
  208. package/docs/examples/todo.html +0 -40
  209. package/docs/examples/top.html +0 -10
  210. package/docs/examples/types.html +0 -94
  211. package/docs/examples/xor.html +0 -62
  212. package/docs/examples.html +0 -25
  213. package/docs/javascript/codejar.min.js +0 -8
  214. package/docs/javascript/highlightjs.min.js +0 -1173
  215. package/docs/javascript/isomorphic-git.js +0 -9
  216. package/docs/javascript/json5.min.js +0 -1
  217. package/docs/javascript/lightning-fs.js +0 -1
  218. package/docs/javascript/lightview.js +0 -1285
  219. package/docs/javascript/marked.min.js +0 -6
  220. package/docs/javascript/peerjs.min.js +0 -70
  221. package/docs/javascript/turndown.js +0 -973
  222. package/docs/javascript/types.js +0 -606
  223. package/docs/javascript/utils.js +0 -45
  224. package/docs/lightview.html +0 -63
  225. package/docs/old_index.html +0 -965
  226. package/docs/old_index.md +0 -1132
  227. package/docs/slidein.html +0 -51
  228. package/docs/tutorial/0-getting-started.html +0 -67
  229. package/docs/tutorial/1-intro-to-variables.html +0 -103
  230. package/docs/tutorial/10-template-components.html +0 -80
  231. package/docs/tutorial/11-linked-components.html +0 -76
  232. package/docs/tutorial/12-imported-components.html +0 -67
  233. package/docs/tutorial/13-input-binding.html +0 -94
  234. package/docs/tutorial/14-automatic-variable-creation.html +0 -74
  235. package/docs/tutorial/15-form-binding.html +0 -110
  236. package/docs/tutorial/16-if-directive.html +0 -60
  237. package/docs/tutorial/17-loop-directives.html +0 -83
  238. package/docs/tutorial/18-sanitizing-and-escaping-input.html +0 -79
  239. package/docs/tutorial/2-imported-and-exported-variables.html +0 -80
  240. package/docs/tutorial/3-data-types.html +0 -89
  241. package/docs/tutorial/4-extended-data-types.html +0 -83
  242. package/docs/tutorial/5-extended-functional-types.html +0 -96
  243. package/docs/tutorial/5.1-extended-functional-types.html +0 -79
  244. package/docs/tutorial/5.2-extended-functional-types.html +0 -70
  245. package/docs/tutorial/6-conventional-javascript.html +0 -75
  246. package/docs/tutorial/7-monitoring-with-observers.html +0 -107
  247. package/docs/tutorial/8-event-listeners.html +0 -65
  248. package/docs/tutorial/9-intro-to-components.html +0 -91
  249. package/docs/tutorial/contents.html +0 -32
  250. package/docs/tutorial/my-component.html +0 -29
  251. package/docs/tutorial/remote-value.json +0 -4
  252. package/docs/websiterepl.html +0 -46
  253. package/jest-puppeteer.config.js +0 -5
  254. package/jest.config.json +0 -12
  255. package/lightview.min.js +0 -1
  256. package/lightview_good.js +0 -1267
  257. package/lightview_optimized.js +0 -1274
  258. package/repl_hold.html +0 -320
  259. package/test/basic.html +0 -104
  260. package/test/basic.test.mjs +0 -315
  261. package/test/extended.html +0 -29
  262. package/test/extended.test.mjs +0 -448
  263. package/types.js +0 -607
  264. package/unsplash.key +0 -1
@@ -1,315 +0,0 @@
1
- import 'expect-puppeteer';
2
-
3
- describe('Lightview - Variables', () => {
4
- beforeAll(async () => {
5
- await page.goto('http://localhost:8080/test/basic.html');
6
- });
7
-
8
- test('should be titled "Basic"', async () => {
9
- await expect(page.title()).resolves.toMatch('Basic');
10
- });
11
-
12
- test('boolean - open should be imported', async () => {
13
- const result = await page.evaluate(() => {
14
- const el = document.getElementById("test");
15
- return JSON.parse(el.getVariableValue("open"));
16
- });
17
- expect(result).toBe(true);
18
- });
19
-
20
- test('number - count should be imported', async () => {
21
- const result = await page.evaluate(() => {
22
- const el = document.getElementById("test");
23
- return JSON.parse(el.getVariableValue("count"));
24
- });
25
- expect(result).toBe(1);
26
- });
27
-
28
- test('string - name should be imported', async () => {
29
- const result = await page.evaluate(() => {
30
- const el = document.getElementById("test");
31
- return el.getVariableValue("name");
32
- });
33
- expect(result).toBe("joe");
34
- });
35
-
36
- test('object - children should be imported', async () => {
37
- const result = await page.evaluate(() => {
38
- const el = document.getElementById("test");
39
- return el.getVariableValue("children").toJSON();
40
- });
41
- expect(Array.isArray(result)).toBe(true);
42
- expect(result[0]).toBe("mary");
43
- expect(result.length).toBe(1);
44
- });
45
-
46
- test('boolean - checked should be exported', async () => {
47
- const result = await page.evaluate(() => {
48
- const el = document.getElementById("test");
49
- return JSON.parse(el.getAttribute("checked"));
50
- });
51
- expect(result).toBe(true);
52
- });
53
-
54
- test('number - age should be exported', async () => {
55
- const result = await page.evaluate(() => {
56
- const el = document.getElementById("test");
57
- return JSON.parse(el.getAttribute("age"));
58
- });
59
- expect(result).toBe(27);
60
- });
61
-
62
- test('string - color should be exported', async () => {
63
- const result = await page.evaluate(() => {
64
- const el = document.getElementById("test");
65
- return el.getAttribute("color");
66
- });
67
- expect(result).toBe("green");
68
- });
69
-
70
- test('object - hamburger should be exported', async () => {
71
- const result = await page.evaluate(() => {
72
- const el = document.getElementById("test");
73
- return JSON.parse(el.getAttribute("hamburger"));
74
- });
75
- expect(Array.isArray(result)).toBe(true);
76
- expect(result[0]).toBe("lettuce");
77
- expect(result.length).toBe(1);
78
- });
79
-
80
- test('boolean - open should be rendered', async () => {
81
- const result = await page.evaluate(() => {
82
- const el = document.getElementById("test"),
83
- result = el.getElementById("open");
84
- return JSON.parse(result.innerText);
85
- });
86
- expect(result).toBe(true);
87
- });
88
-
89
- test('number - count should be rendered', async () => {
90
- const result = await page.evaluate(() => {
91
- const el = document.getElementById("test"),
92
- result = el.getElementById("count");
93
- return JSON.parse(result.innerText);
94
- });
95
- expect(result).toBe(1);
96
- });
97
-
98
- test('string - name should be rendered', async () => {
99
- const result = await page.evaluate(() => {
100
- const el = document.getElementById("test"),
101
- result = el.getElementById("name");
102
- return result.innerText;
103
- });
104
- expect(result).toBe("joe");
105
- });
106
-
107
- test('object - children should be rendered', async () => {
108
- const result = await page.evaluate(() => {
109
- const el = document.getElementById("test"),
110
- result = el.getElementById("children");
111
- return JSON.parse(result.innerText);
112
- });
113
- expect(Array.isArray(result)).toBe(true);
114
- expect(result[0]).toBe("mary");
115
- expect(result.length).toBe(1);
116
- });
117
-
118
- test('boolean - checked should be rendered', async () => {
119
- const result = await page.evaluate(() => {
120
- const el = document.getElementById("test"),
121
- result = el.getElementById("checked");
122
- return JSON.parse(result.innerText);
123
- });
124
- expect(result).toBe(true);
125
- });
126
-
127
- test('number - age should be rendered', async () => {
128
- const result = await page.evaluate(() => {
129
- const el = document.getElementById("test"),
130
- result = el.getElementById("age");
131
- return JSON.parse(result.innerText);
132
- });
133
- expect(result).toBe(27);
134
- });
135
-
136
- test('string - color should be rendered', async () => {
137
- const result = await page.evaluate(() => {
138
- const el = document.getElementById("test"),
139
- result = el.getElementById("color");
140
- return result.innerText;
141
- });
142
- expect(result).toBe("green");
143
- });
144
-
145
- test('object - hamburger should be rendered', async () => {
146
- const result = await page.evaluate(() => {
147
- const el = document.getElementById("test"),
148
- result = el.getElementById("hamburger");
149
- return JSON.parse(result.innerText);
150
- });
151
- expect(Array.isArray(result)).toBe(true);
152
- expect(result[0]).toBe("lettuce");
153
- expect(result.length).toBe(1);
154
- });
155
-
156
- test('shared - myshare should be same', async () => {
157
- const result = await page.evaluate(async () => {
158
- const el0 = document.getElementById("test"),
159
- el1 = document.getElementById("test1")
160
- return [el0.getVariableValue("myshare"),el1.getVariableValue("myshare")];
161
- });
162
- expect(Array.isArray(result)).toBe(true);
163
- expect(result[0]).toBe(result[1]);
164
- });
165
-
166
- test('untyped input - iuntyped should be "test"', async () => {
167
- const result = await page.evaluate(() => {
168
- const el = document.getElementById("test"),
169
- result = el.getElementById("iuntyped")
170
- return result.getAttribute("value");
171
- });
172
- expect(result).toBe("test");
173
- });
174
-
175
-
176
- test('text input - itext should be test', async () => {
177
- const result = await page.evaluate(async () => {
178
- const el = document.getElementById("test"),
179
- result = el.getElementById(`itext`);
180
- return result.getAttribute("value");
181
- });
182
- expect(result).toBe("test");
183
- });
184
-
185
-
186
- test('tel input - itel should be test', async () => {
187
- const result = await page.evaluate(async () => {
188
- const el = document.getElementById("test"),
189
- result = el.getElementById("itel");
190
- return result.getAttribute("value");
191
- });
192
- expect(result).toBe("test");
193
- });
194
-
195
- test('email input - email should be test', async () => {
196
- const result = await page.evaluate(async () => {
197
- const el = document.getElementById("test"),
198
- result = el.getElementById("iemail");
199
- return result.getAttribute("value");
200
- });
201
- expect(result).toBe("test");
202
- });
203
-
204
- test('url input - url should be test', async () => {
205
- const result = await page.evaluate(async () => {
206
- const el = document.getElementById("test"),
207
- result = el.getElementById("iurl");
208
- return result.getAttribute("value");
209
- });
210
- expect(result).toBe("test");
211
- });
212
-
213
- test('search input - search should be test', async () => {
214
- const result = await page.evaluate(async () => {
215
- const el = document.getElementById("test"),
216
- result = el.getElementById("isearch");
217
- return result.getAttribute("value");
218
- });
219
- expect(result).toBe("test");
220
- });
221
-
222
- test('radio input - radio should be test', async () => {
223
- const result = await page.evaluate(async () => {
224
- const el = document.getElementById("test"),
225
- result = el.getElementById("iradio");
226
- return result.checked;
227
- });
228
- expect(result).toBe(true);
229
- });
230
-
231
- test('color input - color should be test', async () => {
232
- const result = await page.evaluate(async () => {
233
- const el = document.getElementById("test"),
234
- result = el.getElementById("icolor");
235
- return result.getAttribute("value");
236
- });
237
- expect(result).toBe("test");
238
- });
239
-
240
- test('password input - password should be test', async () => {
241
- const result = await page.evaluate(async () => {
242
- const el = document.getElementById("test"),
243
- result = el.getElementById("ipassword");
244
- return result.getAttribute("value");
245
- });
246
- expect(result).toBe("test");
247
- });
248
-
249
- test('number input - inumber should be 1', async () => {
250
- const result = await page.evaluate(async () => {
251
- const el = document.getElementById("test"),
252
- result = el.getElementById("inumber")
253
- return JSON.parse(result.getAttribute("value"));
254
- });
255
- expect(result).toBe(1);
256
- });
257
-
258
- test('range input - irange should be 1', async () => {
259
- const result = await page.evaluate(async () => {
260
- const el = document.getElementById("test"),
261
- result = el.getElementById("irange")
262
- return JSON.parse(result.getAttribute("value"));
263
- });
264
- expect(result).toBe(1);
265
- });
266
-
267
- test('datetime input - idatetime should be current date', async () => {
268
- const result = await page.evaluate(async () => {
269
- const el = document.getElementById("test"),
270
- result = el.getElementById("idatetime")
271
- return result.getAttribute("value");
272
- });
273
- const dt = new Date(result);
274
- expect(dt).toBeInstanceOf(Date);
275
- expect(dt.toString()).toBe(result);
276
- });
277
-
278
- test('checkbox input - icheckbox should be true', async () => {
279
- const result = await page.evaluate(async () => {
280
- const el = document.getElementById("test"),
281
- result = el.getElementById("icheckbox")
282
- return result.checked;
283
- });
284
- expect(result).toBe(true);
285
- });
286
- });
287
-
288
- describe("Lightview - on: directive", () => {
289
- test('on:<handler> - count should be bumped', async () => {
290
- await page.click("#test",{waitUntil:"load"});
291
- const result = await page.evaluate(async () => {
292
- const el = document.getElementById("test");
293
- return JSON.parse(el.getVariableValue("counter"));
294
- });
295
- expect(result).toBe(1);
296
- });
297
- })
298
-
299
- describe("Lightview - lifecycle", () => {
300
- test('connected should be called', async () => {
301
- const result = await page.evaluate(async () => {
302
- const el = document.getElementById("test");
303
- return el.testId;
304
- });
305
- expect(result).toBe("test");
306
- });
307
- test('change should be called', async () => {
308
- await page.click("#test",{waitUntil:"load"});
309
- const result = await page.evaluate(async () => {
310
- const el = document.getElementById("test");
311
- return el.counter;
312
- });
313
- expect(result).toBe(2);
314
- });
315
- })
@@ -1,29 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <title>Extended</title>
6
- <script src="../lightview.js?as=x-body"></script>
7
- </head>
8
- <body>
9
- <script>
10
- document.body.mount = async (self) => {
11
- const {array,boolean,number,object,string} = await import("../types.js");
12
-
13
- self.variables({strictarray:array},{set:[]});
14
- self.variables({strictboolean:boolean},{set:true});
15
- self.variables({strictnumber:number},{set:0});
16
- self.variables({strictobject:object},{set:{}});
17
- self.variables({strictstring:string},{set:"test"});
18
- self.variables({extendedarray:array({required:true,minlength:2,maxlength:3})});
19
- self.variables({extendedboolean:boolean({required:true})});
20
- self.variables({extendednumber:number({required:true,min:1,max:4,step:2,allowNaN:false})});
21
- self.variables({extendedobject:object({required:true})});
22
- self.variables({extendedstring:string({required:true,minlength:2,maxlength:4})});
23
-
24
- self.variables({allowNaNnumber:number({min:null,max:null,step:null})});
25
- self.variables({noNaNnumber:number({allowNaN:false})});
26
- }
27
- </script>
28
- </body>
29
- </html>