@react-typed-forms/schemas 14.0.4 → 14.0.5
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.
- package/coverage/clover.xml +867 -120
- package/coverage/coverage-final.json +16 -4
- package/coverage/lcov-report/index.html +28 -28
- package/coverage/lcov-report/src/controlBuilder.ts.html +889 -0
- package/coverage/lcov-report/src/controlDefinition.ts.html +1 -1
- package/coverage/lcov-report/src/controlRender.tsx.html +3532 -0
- package/coverage/lcov-report/src/createFormRenderer.tsx.html +721 -0
- package/coverage/lcov-report/src/defaultSchemaInterface.ts.html +658 -0
- package/coverage/lcov-report/src/dynamicHooks.ts.html +379 -0
- package/coverage/lcov-report/src/entityExpression.ts.html +199 -0
- package/coverage/lcov-report/src/hooks.tsx.html +1462 -0
- package/coverage/lcov-report/src/index.html +198 -18
- package/coverage/lcov-report/src/index.ts.html +127 -0
- package/coverage/lcov-report/src/renderers.tsx.html +679 -0
- package/coverage/lcov-report/src/schemaBuilder.ts.html +1039 -0
- package/coverage/lcov-report/src/schemaField.ts.html +35 -32
- package/coverage/lcov-report/src/schemaValidator.ts.html +181 -0
- package/coverage/lcov-report/src/util.ts.html +29 -131
- package/coverage/lcov-report/src/validators.ts.html +736 -0
- package/coverage/lcov-report/test/gen.ts.html +217 -82
- package/coverage/lcov-report/test/index.html +17 -17
- package/coverage/lcov.info +2091 -271
- package/jest.config.js +3 -2
- package/lib/index.cjs +1 -1
- package/lib/index.cjs.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/util.d.ts +1 -1
- package/package.json +1 -1
- package/test/diff.test.ts +68 -88
- package/test/gen.ts +78 -33
- package/test/play.ts +45 -41
- package/tsconfig.json +1 -1
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>77/77</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">98.41% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>62/63</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>31/31</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>64/64</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -238,7 +238,52 @@
|
|
|
238
238
|
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
239
|
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
240
|
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
+
<a name='L221'></a><a href='#L221'>221</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
242
287
|
<span class="cline-any cline-yes">1x</span>
|
|
243
288
|
<span class="cline-any cline-neutral"> </span>
|
|
244
289
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -249,6 +294,7 @@
|
|
|
249
294
|
<span class="cline-any cline-neutral"> </span>
|
|
250
295
|
<span class="cline-any cline-neutral"> </span>
|
|
251
296
|
<span class="cline-any cline-neutral"> </span>
|
|
297
|
+
<span class="cline-any cline-neutral"> </span>
|
|
252
298
|
<span class="cline-any cline-yes">1x</span>
|
|
253
299
|
<span class="cline-any cline-neutral"> </span>
|
|
254
300
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -256,11 +302,37 @@
|
|
|
256
302
|
<span class="cline-any cline-neutral"> </span>
|
|
257
303
|
<span class="cline-any cline-neutral"> </span>
|
|
258
304
|
<span class="cline-any cline-neutral"> </span>
|
|
305
|
+
<span class="cline-any cline-neutral"> </span>
|
|
306
|
+
<span class="cline-any cline-neutral"> </span>
|
|
307
|
+
<span class="cline-any cline-neutral"> </span>
|
|
308
|
+
<span class="cline-any cline-neutral"> </span>
|
|
309
|
+
<span class="cline-any cline-yes">1x</span>
|
|
310
|
+
<span class="cline-any cline-yes">100x</span>
|
|
311
|
+
<span class="cline-any cline-yes">100x</span>
|
|
312
|
+
<span class="cline-any cline-yes">457x</span>
|
|
313
|
+
<span class="cline-any cline-yes">804x</span>
|
|
314
|
+
<span class="cline-any cline-yes">457x</span>
|
|
315
|
+
<span class="cline-any cline-neutral"> </span>
|
|
316
|
+
<span class="cline-any cline-neutral"> </span>
|
|
259
317
|
<span class="cline-any cline-yes">1x</span>
|
|
260
318
|
<span class="cline-any cline-neutral"> </span>
|
|
261
319
|
<span class="cline-any cline-neutral"> </span>
|
|
262
320
|
<span class="cline-any cline-yes">5x</span>
|
|
263
|
-
<span class="cline-any cline-
|
|
321
|
+
<span class="cline-any cline-neutral"> </span>
|
|
322
|
+
<span class="cline-any cline-yes">538x</span>
|
|
323
|
+
<span class="cline-any cline-neutral"> </span>
|
|
324
|
+
<span class="cline-any cline-neutral"> </span>
|
|
325
|
+
<span class="cline-any cline-neutral"> </span>
|
|
326
|
+
<span class="cline-any cline-neutral"> </span>
|
|
327
|
+
<span class="cline-any cline-neutral"> </span>
|
|
328
|
+
<span class="cline-any cline-neutral"> </span>
|
|
329
|
+
<span class="cline-any cline-neutral"> </span>
|
|
330
|
+
<span class="cline-any cline-yes">1x</span>
|
|
331
|
+
<span class="cline-any cline-neutral"> </span>
|
|
332
|
+
<span class="cline-any cline-neutral"> </span>
|
|
333
|
+
<span class="cline-any cline-yes">538x</span>
|
|
334
|
+
<span class="cline-any cline-neutral"> </span>
|
|
335
|
+
<span class="cline-any cline-neutral"> </span>
|
|
264
336
|
<span class="cline-any cline-neutral"> </span>
|
|
265
337
|
<span class="cline-any cline-neutral"> </span>
|
|
266
338
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -289,9 +361,9 @@
|
|
|
289
361
|
<span class="cline-any cline-neutral"> </span>
|
|
290
362
|
<span class="cline-any cline-neutral"> </span>
|
|
291
363
|
<span class="cline-any cline-neutral"> </span>
|
|
292
|
-
<span class="cline-any cline-yes">
|
|
293
|
-
<span class="cline-any cline-yes">
|
|
294
|
-
<span class="cline-any cline-yes">
|
|
364
|
+
<span class="cline-any cline-yes">379x</span>
|
|
365
|
+
<span class="cline-any cline-yes">379x</span>
|
|
366
|
+
<span class="cline-any cline-yes">379x</span>
|
|
295
367
|
<span class="cline-any cline-neutral"> </span>
|
|
296
368
|
<span class="cline-any cline-neutral"> </span>
|
|
297
369
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -309,7 +381,7 @@
|
|
|
309
381
|
<span class="cline-any cline-neutral"> </span>
|
|
310
382
|
<span class="cline-any cline-neutral"> </span>
|
|
311
383
|
<span class="cline-any cline-neutral"> </span>
|
|
312
|
-
<span class="cline-any cline-yes">
|
|
384
|
+
<span class="cline-any cline-yes">379x</span>
|
|
313
385
|
<span class="cline-any cline-neutral"> </span>
|
|
314
386
|
<span class="cline-any cline-neutral"> </span>
|
|
315
387
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -320,8 +392,8 @@
|
|
|
320
392
|
<span class="cline-any cline-neutral"> </span>
|
|
321
393
|
<span class="cline-any cline-neutral"> </span>
|
|
322
394
|
<span class="cline-any cline-neutral"> </span>
|
|
323
|
-
<span class="cline-any cline-yes">
|
|
324
|
-
<span class="cline-any cline-yes">
|
|
395
|
+
<span class="cline-any cline-yes">379x</span>
|
|
396
|
+
<span class="cline-any cline-yes">2535x</span>
|
|
325
397
|
<span class="cline-any cline-neutral"> </span>
|
|
326
398
|
<span class="cline-any cline-neutral"> </span>
|
|
327
399
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -334,12 +406,12 @@
|
|
|
334
406
|
<span class="cline-any cline-neutral"> </span>
|
|
335
407
|
<span class="cline-any cline-neutral"> </span>
|
|
336
408
|
<span class="cline-any cline-neutral"> </span>
|
|
337
|
-
<span class="cline-any cline-yes">
|
|
409
|
+
<span class="cline-any cline-yes">1997x</span>
|
|
338
410
|
<span class="cline-any cline-neutral"> </span>
|
|
339
411
|
<span class="cline-any cline-neutral"> </span>
|
|
340
412
|
<span class="cline-any cline-neutral"> </span>
|
|
341
413
|
<span class="cline-any cline-neutral"> </span>
|
|
342
|
-
<span class="cline-any cline-yes">
|
|
414
|
+
<span class="cline-any cline-yes">379x</span>
|
|
343
415
|
<span class="cline-any cline-neutral"> </span>
|
|
344
416
|
<span class="cline-any cline-neutral"> </span>
|
|
345
417
|
<span class="cline-any cline-yes">100x</span>
|
|
@@ -352,32 +424,32 @@
|
|
|
352
424
|
<span class="cline-any cline-neutral"> </span>
|
|
353
425
|
<span class="cline-any cline-neutral"> </span>
|
|
354
426
|
<span class="cline-any cline-neutral"> </span>
|
|
355
|
-
<span class="cline-any cline-yes">
|
|
356
|
-
<span class="cline-any cline-yes">
|
|
357
|
-
<span class="cline-any cline-yes">
|
|
358
|
-
<span class="cline-any cline-yes">
|
|
427
|
+
<span class="cline-any cline-yes">5858x</span>
|
|
428
|
+
<span class="cline-any cline-yes">6599x</span>
|
|
429
|
+
<span class="cline-any cline-yes">5807x</span>
|
|
430
|
+
<span class="cline-any cline-yes">221x</span>
|
|
359
431
|
<span class="cline-any cline-neutral"> </span>
|
|
360
432
|
<span class="cline-any cline-neutral"> </span>
|
|
361
433
|
<span class="cline-any cline-neutral"> </span>
|
|
362
434
|
<span class="cline-any cline-neutral"> </span>
|
|
363
|
-
<span class="cline-any cline-yes">
|
|
364
|
-
<span class="cline-any cline-yes">
|
|
365
|
-
<span class="cline-any cline-yes">
|
|
366
|
-
<span class="cline-any cline-yes">
|
|
367
|
-
<span class="cline-any cline-yes">
|
|
368
|
-
<span class="cline-any cline-yes">
|
|
369
|
-
<span class="cline-any cline-yes">
|
|
370
|
-
<span class="cline-any cline-yes">
|
|
371
|
-
<span class="cline-any cline-yes">
|
|
372
|
-
<span class="cline-any cline-yes">
|
|
373
|
-
<span class="cline-any cline-yes">
|
|
374
|
-
<span class="cline-any cline-yes">
|
|
435
|
+
<span class="cline-any cline-yes">5586x</span>
|
|
436
|
+
<span class="cline-any cline-yes">4951x</span>
|
|
437
|
+
<span class="cline-any cline-yes">4249x</span>
|
|
438
|
+
<span class="cline-any cline-yes">3548x</span>
|
|
439
|
+
<span class="cline-any cline-yes">2903x</span>
|
|
440
|
+
<span class="cline-any cline-yes">685x</span>
|
|
441
|
+
<span class="cline-any cline-yes">2218x</span>
|
|
442
|
+
<span class="cline-any cline-yes">600x</span>
|
|
443
|
+
<span class="cline-any cline-yes">1618x</span>
|
|
444
|
+
<span class="cline-any cline-yes">678x</span>
|
|
445
|
+
<span class="cline-any cline-yes">940x</span>
|
|
446
|
+
<span class="cline-any cline-yes">940x</span>
|
|
375
447
|
<span class="cline-any cline-neutral"> </span>
|
|
376
|
-
<span class="cline-any cline-yes">
|
|
448
|
+
<span class="cline-any cline-yes">5099x</span>
|
|
377
449
|
<span class="cline-any cline-neutral"> </span>
|
|
378
450
|
<span class="cline-any cline-neutral"> </span>
|
|
379
451
|
<span class="cline-any cline-neutral"> </span>
|
|
380
|
-
<span class="cline-any cline-yes">
|
|
452
|
+
<span class="cline-any cline-yes">792x</span>
|
|
381
453
|
<span class="cline-any cline-neutral"> </span>
|
|
382
454
|
<span class="cline-any cline-neutral"> </span>
|
|
383
455
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -386,31 +458,49 @@
|
|
|
386
458
|
<span class="cline-any cline-neutral"> </span>
|
|
387
459
|
<span class="cline-any cline-neutral"> </span>
|
|
388
460
|
<span class="cline-any cline-neutral"> </span>
|
|
389
|
-
<span class="cline-any cline-yes">2400x</span>
|
|
390
|
-
<span class="cline-any cline-no"> </span>
|
|
391
461
|
<span class="cline-any cline-neutral"> </span>
|
|
392
|
-
<span class="cline-any cline-yes">
|
|
462
|
+
<span class="cline-any cline-yes">4867x</span>
|
|
463
|
+
<span class="cline-any cline-yes">4867x</span>
|
|
464
|
+
<span class="cline-any cline-yes">1843x</span>
|
|
465
|
+
<span class="cline-any cline-yes">3024x</span>
|
|
466
|
+
<span class="cline-any cline-yes">249x</span>
|
|
467
|
+
<span class="cline-any cline-yes">57x</span>
|
|
468
|
+
<span class="cline-any cline-yes">192x</span>
|
|
469
|
+
<span class="cline-any cline-neutral"> </span>
|
|
470
|
+
<span class="cline-any cline-yes">946x</span>
|
|
471
|
+
<span class="cline-any cline-yes">946x</span>
|
|
472
|
+
<span class="cline-any cline-neutral"> </span>
|
|
473
|
+
<span class="cline-any cline-neutral"> </span>
|
|
474
|
+
<span class="cline-any cline-neutral"> </span>
|
|
475
|
+
<span class="cline-any cline-neutral"> </span>
|
|
476
|
+
<span class="cline-any cline-yes">2775x</span>
|
|
477
|
+
<span class="cline-any cline-yes">611x</span>
|
|
478
|
+
<span class="cline-any cline-neutral"> </span>
|
|
479
|
+
<span class="cline-any cline-yes">3326x</span>
|
|
393
480
|
<span class="cline-any cline-neutral"> </span>
|
|
394
|
-
<span class="cline-any cline-yes">61x</span>
|
|
395
|
-
<span class="cline-any cline-yes">61x</span>
|
|
396
|
-
<span class="cline-any cline-yes">357x</span>
|
|
397
481
|
<span class="cline-any cline-neutral"> </span>
|
|
398
482
|
<span class="cline-any cline-neutral"> </span>
|
|
399
483
|
<span class="cline-any cline-neutral"> </span>
|
|
400
484
|
<span class="cline-any cline-neutral"> </span>
|
|
401
485
|
<span class="cline-any cline-neutral"> </span>
|
|
486
|
+
<span class="cline-any cline-yes">2164x</span>
|
|
402
487
|
<span class="cline-any cline-neutral"> </span>
|
|
488
|
+
<span class="cline-any cline-yes">2164x</span>
|
|
403
489
|
<span class="cline-any cline-neutral"> </span>
|
|
404
490
|
<span class="cline-any cline-neutral"> </span>
|
|
405
|
-
<span class="cline-any cline-yes">1379x</span>
|
|
406
491
|
<span class="cline-any cline-neutral"> </span>
|
|
407
|
-
<span class="cline-any cline-yes">285x</span>
|
|
408
|
-
<span class="cline-any cline-yes">285x</span>
|
|
409
492
|
<span class="cline-any cline-neutral"> </span>
|
|
410
|
-
<span class="cline-any cline-yes">
|
|
411
|
-
<span class="cline-any cline-
|
|
493
|
+
<span class="cline-any cline-yes">1249x</span>
|
|
494
|
+
<span class="cline-any cline-neutral"> </span>
|
|
495
|
+
<span class="cline-any cline-yes">308x</span>
|
|
496
|
+
<span class="cline-any cline-yes">308x</span>
|
|
497
|
+
<span class="cline-any cline-neutral"> </span>
|
|
498
|
+
<span class="cline-any cline-yes">313x</span>
|
|
499
|
+
<span class="cline-any cline-yes">313x</span>
|
|
500
|
+
<span class="cline-any cline-neutral"> </span>
|
|
501
|
+
<span class="cline-any cline-yes">294x</span>
|
|
502
|
+
<span class="cline-any cline-neutral"> </span>
|
|
412
503
|
<span class="cline-any cline-neutral"> </span>
|
|
413
|
-
<span class="cline-any cline-yes">356x</span>
|
|
414
504
|
<span class="cline-any cline-neutral"> </span>
|
|
415
505
|
<span class="cline-any cline-neutral"> </span>
|
|
416
506
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import fc, { Arbitrary } from "fast-check";
|
|
@@ -418,12 +508,13 @@ import {
|
|
|
418
508
|
CompoundField,
|
|
419
509
|
createSchemaLookup,
|
|
420
510
|
FieldType,
|
|
511
|
+
getTagParam,
|
|
421
512
|
isCompoundField,
|
|
422
513
|
makeSchemaDataNode,
|
|
423
514
|
SchemaDataNode,
|
|
424
515
|
SchemaField,
|
|
425
516
|
SchemaTags,
|
|
426
|
-
} from "../src
|
|
517
|
+
} from "../src";
|
|
427
518
|
import { newControl } from "@react-typed-forms/core";
|
|
428
519
|
|
|
429
520
|
export interface FieldAndValue {
|
|
@@ -431,13 +522,39 @@ export interface FieldAndValue {
|
|
|
431
522
|
value: any;
|
|
432
523
|
}
|
|
433
524
|
|
|
434
|
-
export
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
525
|
+
export interface FieldAndValueChanged extends FieldAndValue {
|
|
526
|
+
newValue: any;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
export function newIndexes(arr: number): Arbitrary<number[]> {
|
|
530
|
+
return fc.array(fc.integer(), { minLength: arr, maxLength: arr }).map((x) =>
|
|
531
|
+
x
|
|
532
|
+
.map((n, i) => ({ n, i }))
|
|
533
|
+
.sort((a, b) => a.n - b.n)
|
|
534
|
+
.map((x) => x.i),
|
|
439
535
|
);
|
|
440
536
|
}
|
|
537
|
+
export function valueAndSchema(
|
|
538
|
+
schemaOptions?: SchemaFieldGenOptions,
|
|
539
|
+
): Arbitrary<FieldAndValueChanged> {
|
|
540
|
+
return randomSchemaField(schemaOptions)
|
|
541
|
+
.chain((schema) =>
|
|
542
|
+
randomValueForField(schema).map((value) => ({
|
|
543
|
+
field: schema,
|
|
544
|
+
value,
|
|
545
|
+
})),
|
|
546
|
+
)
|
|
547
|
+
.chain(changedValue);
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
export function changedValue(
|
|
551
|
+
val: FieldAndValue,
|
|
552
|
+
): Arbitrary<FieldAndValueChanged> {
|
|
553
|
+
return changeValue(val.value, val.field, true).map((newValue) => ({
|
|
554
|
+
...val,
|
|
555
|
+
newValue,
|
|
556
|
+
}));
|
|
557
|
+
}
|
|
441
558
|
|
|
442
559
|
export function makeDataNode(fv: FieldAndValue): SchemaDataNode {
|
|
443
560
|
return makeSchemaDataNode(
|
|
@@ -537,7 +654,7 @@ function randomValueForField(
|
|
|
537
654
|
}
|
|
538
655
|
if (f.type === FieldType.String) return fc.string();
|
|
539
656
|
if (f.type === FieldType.Int) return fc.integer();
|
|
540
|
-
if (f.type === FieldType.Double) return fc.double();
|
|
657
|
+
if (f.type === FieldType.Double) return fc.double({ noNaN: true });
|
|
541
658
|
if (f.type === FieldType.Bool) return fc.boolean();
|
|
542
659
|
if (f.type === FieldType.Date)
|
|
543
660
|
return fc.date().map((x) => x.toISOString().substring(0, 10));
|
|
@@ -552,41 +669,59 @@ function randomValueForField(
|
|
|
552
669
|
),
|
|
553
670
|
);
|
|
554
671
|
}
|
|
555
|
-
return fc.constantFrom(null
|
|
672
|
+
return fc.constantFrom(null);
|
|
556
673
|
}) as (x: number) => Arbitrary<any>);
|
|
557
674
|
}
|
|
558
675
|
|
|
559
676
|
export function changeValue(
|
|
560
677
|
value: any,
|
|
561
678
|
field: SchemaField,
|
|
679
|
+
forceChange: boolean | undefined,
|
|
562
680
|
element?: boolean,
|
|
563
|
-
): any {
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
return
|
|
571
|
-
(
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
681
|
+
): Arbitrary<any> {
|
|
682
|
+
return fc.boolean().chain((shouldChange) => {
|
|
683
|
+
if (forceChange === false || (!shouldChange && !forceChange))
|
|
684
|
+
return fc.constant(value);
|
|
685
|
+
if (field.collection && !element) {
|
|
686
|
+
if (!value || !value.length)
|
|
687
|
+
return changeValue(undefined, field, true, true).map((x) => [x]);
|
|
688
|
+
return (value as any[]).reduce(
|
|
689
|
+
(acc, x) =>
|
|
690
|
+
acc.chain((nx: any[]) =>
|
|
691
|
+
changeValue(x, field, undefined, true).map((v) => [...nx, v]),
|
|
692
|
+
),
|
|
693
|
+
fc.constant([] as any[]),
|
|
694
|
+
);
|
|
695
|
+
}
|
|
696
|
+
if (isCompoundField(field)) {
|
|
697
|
+
return fc.record(
|
|
698
|
+
Object.fromEntries(
|
|
699
|
+
field.children.map((x) => [
|
|
700
|
+
x.field,
|
|
701
|
+
changeValue(value?.[x.field], x, value == null ? true : undefined),
|
|
702
|
+
]),
|
|
703
|
+
),
|
|
575
704
|
);
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
705
|
+
}
|
|
706
|
+
return fc.constant(changePrim() as any);
|
|
707
|
+
function changePrim() {
|
|
708
|
+
switch (field.type) {
|
|
709
|
+
case FieldType.String:
|
|
710
|
+
case FieldType.Date:
|
|
711
|
+
case FieldType.DateTime:
|
|
712
|
+
case FieldType.Time:
|
|
713
|
+
return (value ?? "") + "x";
|
|
714
|
+
case FieldType.Int:
|
|
715
|
+
const v = value ?? 0;
|
|
716
|
+
return !v ? 1 : -v;
|
|
717
|
+
case FieldType.Double:
|
|
718
|
+
const dv = value ?? 0;
|
|
719
|
+
return !dv ? 1 : -dv;
|
|
720
|
+
case FieldType.Bool:
|
|
721
|
+
return !(value ?? false);
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
});
|
|
590
725
|
}
|
|
591
726
|
</pre></td></tr></table></pre>
|
|
592
727
|
|
|
@@ -595,7 +730,7 @@ export function changeValue(
|
|
|
595
730
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
596
731
|
Code coverage generated by
|
|
597
732
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
598
|
-
at 2025-01-
|
|
733
|
+
at 2025-01-20T03:45:10.627Z
|
|
599
734
|
</div>
|
|
600
735
|
<script src="../prettify.js"></script>
|
|
601
736
|
<script>
|
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>77/77</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">98.41% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>62/63</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
40
|
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>31/31</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>64/64</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -80,17 +80,17 @@
|
|
|
80
80
|
</thead>
|
|
81
81
|
<tbody><tr>
|
|
82
82
|
<td class="file high" data-value="gen.ts"><a href="gen.ts.html">gen.ts</a></td>
|
|
83
|
-
<td data-value="
|
|
84
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
83
|
+
<td data-value="100" class="pic high">
|
|
84
|
+
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
85
85
|
</td>
|
|
86
|
-
<td data-value="98.27" class="pct high">98.27%</td>
|
|
87
|
-
<td data-value="58" class="abs high">57/58</td>
|
|
88
|
-
<td data-value="91.37" class="pct high">91.37%</td>
|
|
89
|
-
<td data-value="58" class="abs high">53/58</td>
|
|
90
86
|
<td data-value="100" class="pct high">100%</td>
|
|
91
|
-
<td data-value="
|
|
92
|
-
<td data-value="
|
|
93
|
-
<td data-value="
|
|
87
|
+
<td data-value="77" class="abs high">77/77</td>
|
|
88
|
+
<td data-value="98.41" class="pct high">98.41%</td>
|
|
89
|
+
<td data-value="63" class="abs high">62/63</td>
|
|
90
|
+
<td data-value="100" class="pct high">100%</td>
|
|
91
|
+
<td data-value="31" class="abs high">31/31</td>
|
|
92
|
+
<td data-value="100" class="pct high">100%</td>
|
|
93
|
+
<td data-value="64" class="abs high">64/64</td>
|
|
94
94
|
</tr>
|
|
95
95
|
|
|
96
96
|
</tbody>
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
102
102
|
Code coverage generated by
|
|
103
103
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
104
|
-
at 2025-01-
|
|
104
|
+
at 2025-01-20T03:45:10.627Z
|
|
105
105
|
</div>
|
|
106
106
|
<script src="../prettify.js"></script>
|
|
107
107
|
<script>
|