pure-orm 4.0.3 → 4.1.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/.benchmarks/bench-core-baseline.json +303 -0
- package/README.md +0 -7
- package/babel.config.js +4 -1
- package/coverage/clover.xml +1549 -1284
- package/coverage/coverage-final.json +103 -103
- package/coverage/lcov-report/dist/src/core.js.html +610 -379
- package/coverage/lcov-report/dist/src/driver-integrations/index.html +20 -20
- package/coverage/lcov-report/dist/src/driver-integrations/pgp.js.html +52 -52
- package/coverage/lcov-report/dist/src/index.html +28 -28
- package/coverage/lcov-report/dist/src/index.js.html +2 -2
- package/coverage/lcov-report/dist/src/orm.js.html +392 -209
- package/coverage/lcov-report/dist/test-utils/blog/entities.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/blog/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/blog/models/article.js.html +15 -15
- package/coverage/lcov-report/dist/test-utils/blog/models/article_tag.js.html +2 -2
- package/coverage/lcov-report/dist/test-utils/blog/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/blog/models/person.js.html +13 -13
- package/coverage/lcov-report/dist/test-utils/blog/models/tag.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/entities.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/models/line-item.js.html +4 -4
- package/coverage/lcov-report/dist/test-utils/five/models/order.js.html +3 -3
- package/coverage/lcov-report/dist/test-utils/five/models/parcel-event.js.html +6 -6
- package/coverage/lcov-report/dist/test-utils/five/models/parcel-line-item.js.html +7 -7
- package/coverage/lcov-report/dist/test-utils/five/models/parcel.js.html +2 -2
- package/coverage/lcov-report/dist/test-utils/fourteen/entities.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/fourteen/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/fourteen/models/customer.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/fourteen/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/fourteen/models/person.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/nine/entities.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/nine/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/nine/models/feature-switch.js.html +6 -6
- package/coverage/lcov-report/dist/test-utils/nine/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order/entities.js.html +9 -9
- package/coverage/lcov-report/dist/test-utils/order/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order/models/index.html +14 -14
- package/coverage/lcov-report/dist/test-utils/order/models/line-item.js.html +24 -24
- package/coverage/lcov-report/dist/test-utils/order/models/order.js.html +41 -41
- package/coverage/lcov-report/dist/test-utils/order/models/product-variant.js.html +32 -32
- package/coverage/lcov-report/dist/test-utils/order/models/product.js.html +17 -17
- package/coverage/lcov-report/dist/test-utils/order/models/utm-source.js.html +12 -12
- package/coverage/lcov-report/dist/test-utils/order-more/entities.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/actual-product-variant.js.html +3 -3
- package/coverage/lcov-report/dist/test-utils/order-more/models/color.js.html +6 -6
- package/coverage/lcov-report/dist/test-utils/order-more/models/customer.js.html +3 -3
- package/coverage/lcov-report/dist/test-utils/order-more/models/gender.js.html +4 -4
- package/coverage/lcov-report/dist/test-utils/order-more/models/index.html +23 -23
- package/coverage/lcov-report/dist/test-utils/order-more/models/inventory-level.js.html +11 -11
- package/coverage/lcov-report/dist/test-utils/order-more/models/line-item.js.html +15 -15
- package/coverage/lcov-report/dist/test-utils/order-more/models/order.js.html +39 -39
- package/coverage/lcov-report/dist/test-utils/order-more/models/parcel-event.js.html +6 -6
- package/coverage/lcov-report/dist/test-utils/order-more/models/parcel-line-item.js.html +7 -7
- package/coverage/lcov-report/dist/test-utils/order-more/models/parcel.js.html +2 -2
- package/coverage/lcov-report/dist/test-utils/order-more/models/physical-address.js.html +12 -12
- package/coverage/lcov-report/dist/test-utils/order-more/models/product-variant-image.js.html +7 -7
- package/coverage/lcov-report/dist/test-utils/order-more/models/product-variant.js.html +22 -22
- package/coverage/lcov-report/dist/test-utils/order-more/models/product.js.html +11 -11
- package/coverage/lcov-report/dist/test-utils/order-more/models/refund.js.html +11 -11
- package/coverage/lcov-report/dist/test-utils/order-more/models/shipment-actual-product-variant.js.html +9 -9
- package/coverage/lcov-report/dist/test-utils/order-more/models/shipment.js.html +4 -4
- package/coverage/lcov-report/dist/test-utils/order-more/models/size.js.html +4 -4
- package/coverage/lcov-report/dist/test-utils/order-more/models/utm-medium.js.html +15 -15
- package/coverage/lcov-report/dist/test-utils/order-more/models/utm-source.js.html +17 -17
- package/coverage/lcov-report/dist/test-utils/six/entities.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/six/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/six/models/customer.js.html +3 -3
- package/coverage/lcov-report/dist/test-utils/six/models/index.html +21 -21
- package/coverage/lcov-report/dist/test-utils/six/models/line-item.js.html +10 -10
- package/coverage/lcov-report/dist/test-utils/six/models/order.js.html +13 -13
- package/coverage/lcov-report/dist/test-utils/six/models/parcel-line-item.js.html +2 -2
- package/coverage/lcov-report/dist/test-utils/six/models/parcel.js.html +2 -2
- package/coverage/lcov-report/dist/test-utils/thirteen/entities.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/audience.js.html +2 -2
- package/coverage/lcov-report/dist/test-utils/thirteen/models/brand.js.html +2 -2
- package/coverage/lcov-report/dist/test-utils/thirteen/models/category.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/index.html +14 -14
- package/coverage/lcov-report/dist/test-utils/thirteen/models/member.js.html +2 -2
- package/coverage/lcov-report/dist/test-utils/thirteen/models/passion.js.html +2 -2
- package/coverage/lcov-report/dist/test-utils/thirteen/models/product.js.html +10 -10
- package/coverage/lcov-report/dist/test-utils/thirteen/models/recommendation-audience.js.html +2 -2
- package/coverage/lcov-report/dist/test-utils/thirteen/models/recommendation.js.html +2 -2
- package/coverage/lcov-report/dist/test-utils/three/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/three/results.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/twelve/entities.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/twelve/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/twelve/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/twelve/models/member.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/twelve/models/prompt.js.html +2 -2
- package/coverage/lcov-report/dist/test-utils/two/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/two/results.js.html +1 -1
- package/coverage/lcov-report/index.html +103 -103
- package/coverage/lcov-report/src/core.ts.html +853 -415
- package/coverage/lcov-report/src/driver-integrations/index.html +20 -20
- package/coverage/lcov-report/src/driver-integrations/pgp.ts.html +58 -58
- package/coverage/lcov-report/src/index.html +28 -28
- package/coverage/lcov-report/src/index.ts.html +1 -1
- package/coverage/lcov-report/src/orm.ts.html +361 -298
- package/coverage/lcov-report/test-utils/blog/entities.ts.html +1 -1
- package/coverage/lcov-report/test-utils/blog/index.html +1 -1
- package/coverage/lcov-report/test-utils/blog/models/article.ts.html +15 -15
- package/coverage/lcov-report/test-utils/blog/models/article_tag.ts.html +2 -2
- package/coverage/lcov-report/test-utils/blog/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/blog/models/person.ts.html +13 -13
- package/coverage/lcov-report/test-utils/blog/models/tag.ts.html +1 -1
- package/coverage/lcov-report/test-utils/five/entities.ts.html +1 -1
- package/coverage/lcov-report/test-utils/five/index.html +1 -1
- package/coverage/lcov-report/test-utils/five/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/five/models/line-item.ts.html +4 -4
- package/coverage/lcov-report/test-utils/five/models/order.ts.html +3 -3
- package/coverage/lcov-report/test-utils/five/models/parcel-event.ts.html +6 -6
- package/coverage/lcov-report/test-utils/five/models/parcel-line-item.ts.html +7 -7
- package/coverage/lcov-report/test-utils/five/models/parcel.ts.html +2 -2
- package/coverage/lcov-report/test-utils/fourteen/entities.ts.html +1 -1
- package/coverage/lcov-report/test-utils/fourteen/index.html +1 -1
- package/coverage/lcov-report/test-utils/fourteen/models/customer.ts.html +1 -1
- package/coverage/lcov-report/test-utils/fourteen/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/fourteen/models/person.ts.html +1 -1
- package/coverage/lcov-report/test-utils/nine/entities.ts.html +1 -1
- package/coverage/lcov-report/test-utils/nine/index.html +1 -1
- package/coverage/lcov-report/test-utils/nine/models/feature-switch.ts.html +8 -8
- package/coverage/lcov-report/test-utils/nine/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/order/entities.ts.html +2 -2
- package/coverage/lcov-report/test-utils/order/index.html +1 -1
- package/coverage/lcov-report/test-utils/order/models/index.html +14 -14
- package/coverage/lcov-report/test-utils/order/models/line-item.ts.html +18 -18
- package/coverage/lcov-report/test-utils/order/models/order.ts.html +36 -36
- package/coverage/lcov-report/test-utils/order/models/product-variant.ts.html +27 -27
- package/coverage/lcov-report/test-utils/order/models/product.ts.html +13 -13
- package/coverage/lcov-report/test-utils/order/models/utm-source.ts.html +8 -8
- package/coverage/lcov-report/test-utils/order-more/entities.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/index.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/actual-product-variant.ts.html +3 -3
- package/coverage/lcov-report/test-utils/order-more/models/color.ts.html +6 -6
- package/coverage/lcov-report/test-utils/order-more/models/customer.ts.html +3 -3
- package/coverage/lcov-report/test-utils/order-more/models/gender.ts.html +4 -4
- package/coverage/lcov-report/test-utils/order-more/models/index.html +23 -23
- package/coverage/lcov-report/test-utils/order-more/models/inventory-level.ts.html +11 -11
- package/coverage/lcov-report/test-utils/order-more/models/line-item.ts.html +15 -15
- package/coverage/lcov-report/test-utils/order-more/models/order.ts.html +45 -45
- package/coverage/lcov-report/test-utils/order-more/models/parcel-event.ts.html +6 -6
- package/coverage/lcov-report/test-utils/order-more/models/parcel-line-item.ts.html +7 -7
- package/coverage/lcov-report/test-utils/order-more/models/parcel.ts.html +2 -2
- package/coverage/lcov-report/test-utils/order-more/models/physical-address.ts.html +12 -12
- package/coverage/lcov-report/test-utils/order-more/models/product-variant-image.ts.html +7 -7
- package/coverage/lcov-report/test-utils/order-more/models/product-variant.ts.html +22 -22
- package/coverage/lcov-report/test-utils/order-more/models/product.ts.html +11 -11
- package/coverage/lcov-report/test-utils/order-more/models/refund.ts.html +11 -11
- package/coverage/lcov-report/test-utils/order-more/models/shipment-actual-product-variant.ts.html +9 -9
- package/coverage/lcov-report/test-utils/order-more/models/shipment.ts.html +4 -4
- package/coverage/lcov-report/test-utils/order-more/models/size.ts.html +4 -4
- package/coverage/lcov-report/test-utils/order-more/models/utm-medium.ts.html +15 -15
- package/coverage/lcov-report/test-utils/order-more/models/utm-source.ts.html +17 -17
- package/coverage/lcov-report/test-utils/six/entities.ts.html +1 -1
- package/coverage/lcov-report/test-utils/six/index.html +1 -1
- package/coverage/lcov-report/test-utils/six/models/customer.ts.html +3 -3
- package/coverage/lcov-report/test-utils/six/models/index.html +21 -21
- package/coverage/lcov-report/test-utils/six/models/line-item.ts.html +10 -10
- package/coverage/lcov-report/test-utils/six/models/order.ts.html +13 -13
- package/coverage/lcov-report/test-utils/six/models/parcel-line-item.ts.html +2 -2
- package/coverage/lcov-report/test-utils/six/models/parcel.ts.html +2 -2
- package/coverage/lcov-report/test-utils/thirteen/entities.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/index.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/audience.ts.html +2 -2
- package/coverage/lcov-report/test-utils/thirteen/models/brand.ts.html +2 -2
- package/coverage/lcov-report/test-utils/thirteen/models/category.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/index.html +14 -14
- package/coverage/lcov-report/test-utils/thirteen/models/member.ts.html +2 -2
- package/coverage/lcov-report/test-utils/thirteen/models/passion.ts.html +2 -2
- package/coverage/lcov-report/test-utils/thirteen/models/product.ts.html +10 -10
- package/coverage/lcov-report/test-utils/thirteen/models/recommendation-audience.ts.html +2 -2
- package/coverage/lcov-report/test-utils/thirteen/models/recommendation.ts.html +2 -2
- package/coverage/lcov-report/test-utils/three/index.html +1 -1
- package/coverage/lcov-report/test-utils/three/results.js.html +1 -1
- package/coverage/lcov-report/test-utils/twelve/entities.ts.html +1 -1
- package/coverage/lcov-report/test-utils/twelve/index.html +1 -1
- package/coverage/lcov-report/test-utils/twelve/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/twelve/models/member.ts.html +1 -1
- package/coverage/lcov-report/test-utils/twelve/models/prompt.ts.html +2 -2
- package/coverage/lcov-report/test-utils/two/index.html +1 -1
- package/coverage/lcov-report/test-utils/two/results.js.html +1 -1
- package/coverage/lcov.info +2196 -2047
- package/dist/src/core.d.ts +6 -0
- package/dist/src/core.js +265 -188
- package/dist/src/core.spec.js +424 -0
- package/dist/src/driver-integrations/pgp.spec.d.ts +1 -0
- package/dist/src/driver-integrations/pgp.spec.js +376 -0
- package/dist/src/orm.d.ts +1 -1
- package/dist/src/orm.js +137 -76
- package/dist/src/orm.spec.js +535 -85
- package/dist/test-utils/nine/models/feature-switch.d.ts +2 -2
- package/dist/test-utils/nine/models/feature-switch.ts +2 -2
- package/package.json +5 -3
- package/scripts/bench-core.js +636 -0
- package/scripts/check-bench-scenarios.js +47 -0
- package/src/core.spec.ts +498 -2
- package/src/core.ts +373 -227
- package/src/driver-integrations/pgp.spec.ts +444 -0
- package/src/orm.spec.ts +592 -88
- package/src/orm.ts +149 -128
- package/test-utils/nine/models/feature-switch.ts +2 -2
|
@@ -20,24 +20,24 @@
|
|
|
20
20
|
</h1>
|
|
21
21
|
<div class='clearfix'>
|
|
22
22
|
<div class='fl pad1y space-right2'>
|
|
23
|
-
<span class="strong">
|
|
23
|
+
<span class="strong">98.91% </span>
|
|
24
24
|
<span class="quiet">Statements</span>
|
|
25
|
-
<span class='fraction'>
|
|
25
|
+
<span class='fraction'>272/275</span>
|
|
26
26
|
</div>
|
|
27
27
|
<div class='fl pad1y space-right2'>
|
|
28
|
-
<span class="strong">
|
|
28
|
+
<span class="strong">90.98% </span>
|
|
29
29
|
<span class="quiet">Branches</span>
|
|
30
|
-
<span class='fraction'>
|
|
30
|
+
<span class='fraction'>111/122</span>
|
|
31
31
|
</div>
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">100% </span>
|
|
34
34
|
<span class="quiet">Functions</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>31/31</span>
|
|
36
36
|
</div>
|
|
37
37
|
<div class='fl pad1y space-right2'>
|
|
38
|
-
<span class="strong">
|
|
38
|
+
<span class="strong">98.81% </span>
|
|
39
39
|
<span class="quiet">Lines</span>
|
|
40
|
-
<span class='fraction'>
|
|
40
|
+
<span class='fraction'>250/253</span>
|
|
41
41
|
</div>
|
|
42
42
|
</div>
|
|
43
43
|
<p class="quiet">
|
|
@@ -379,55 +379,144 @@
|
|
|
379
379
|
<a name='L331'></a><a href='#L331'>331</a>
|
|
380
380
|
<a name='L332'></a><a href='#L332'>332</a>
|
|
381
381
|
<a name='L333'></a><a href='#L333'>333</a>
|
|
382
|
-
<a name='L334'></a><a href='#L334'>334</a
|
|
383
|
-
<
|
|
384
|
-
<
|
|
382
|
+
<a name='L334'></a><a href='#L334'>334</a>
|
|
383
|
+
<a name='L335'></a><a href='#L335'>335</a>
|
|
384
|
+
<a name='L336'></a><a href='#L336'>336</a>
|
|
385
|
+
<a name='L337'></a><a href='#L337'>337</a>
|
|
386
|
+
<a name='L338'></a><a href='#L338'>338</a>
|
|
387
|
+
<a name='L339'></a><a href='#L339'>339</a>
|
|
388
|
+
<a name='L340'></a><a href='#L340'>340</a>
|
|
389
|
+
<a name='L341'></a><a href='#L341'>341</a>
|
|
390
|
+
<a name='L342'></a><a href='#L342'>342</a>
|
|
391
|
+
<a name='L343'></a><a href='#L343'>343</a>
|
|
392
|
+
<a name='L344'></a><a href='#L344'>344</a>
|
|
393
|
+
<a name='L345'></a><a href='#L345'>345</a>
|
|
394
|
+
<a name='L346'></a><a href='#L346'>346</a>
|
|
395
|
+
<a name='L347'></a><a href='#L347'>347</a>
|
|
396
|
+
<a name='L348'></a><a href='#L348'>348</a>
|
|
397
|
+
<a name='L349'></a><a href='#L349'>349</a>
|
|
398
|
+
<a name='L350'></a><a href='#L350'>350</a>
|
|
399
|
+
<a name='L351'></a><a href='#L351'>351</a>
|
|
400
|
+
<a name='L352'></a><a href='#L352'>352</a>
|
|
401
|
+
<a name='L353'></a><a href='#L353'>353</a>
|
|
402
|
+
<a name='L354'></a><a href='#L354'>354</a>
|
|
403
|
+
<a name='L355'></a><a href='#L355'>355</a>
|
|
404
|
+
<a name='L356'></a><a href='#L356'>356</a>
|
|
405
|
+
<a name='L357'></a><a href='#L357'>357</a>
|
|
406
|
+
<a name='L358'></a><a href='#L358'>358</a>
|
|
407
|
+
<a name='L359'></a><a href='#L359'>359</a>
|
|
408
|
+
<a name='L360'></a><a href='#L360'>360</a>
|
|
409
|
+
<a name='L361'></a><a href='#L361'>361</a>
|
|
410
|
+
<a name='L362'></a><a href='#L362'>362</a>
|
|
411
|
+
<a name='L363'></a><a href='#L363'>363</a>
|
|
412
|
+
<a name='L364'></a><a href='#L364'>364</a>
|
|
413
|
+
<a name='L365'></a><a href='#L365'>365</a>
|
|
414
|
+
<a name='L366'></a><a href='#L366'>366</a>
|
|
415
|
+
<a name='L367'></a><a href='#L367'>367</a>
|
|
416
|
+
<a name='L368'></a><a href='#L368'>368</a>
|
|
417
|
+
<a name='L369'></a><a href='#L369'>369</a>
|
|
418
|
+
<a name='L370'></a><a href='#L370'>370</a>
|
|
419
|
+
<a name='L371'></a><a href='#L371'>371</a>
|
|
420
|
+
<a name='L372'></a><a href='#L372'>372</a>
|
|
421
|
+
<a name='L373'></a><a href='#L373'>373</a>
|
|
422
|
+
<a name='L374'></a><a href='#L374'>374</a>
|
|
423
|
+
<a name='L375'></a><a href='#L375'>375</a>
|
|
424
|
+
<a name='L376'></a><a href='#L376'>376</a>
|
|
425
|
+
<a name='L377'></a><a href='#L377'>377</a>
|
|
426
|
+
<a name='L378'></a><a href='#L378'>378</a>
|
|
427
|
+
<a name='L379'></a><a href='#L379'>379</a>
|
|
428
|
+
<a name='L380'></a><a href='#L380'>380</a>
|
|
429
|
+
<a name='L381'></a><a href='#L381'>381</a>
|
|
430
|
+
<a name='L382'></a><a href='#L382'>382</a>
|
|
431
|
+
<a name='L383'></a><a href='#L383'>383</a>
|
|
432
|
+
<a name='L384'></a><a href='#L384'>384</a>
|
|
433
|
+
<a name='L385'></a><a href='#L385'>385</a>
|
|
434
|
+
<a name='L386'></a><a href='#L386'>386</a>
|
|
435
|
+
<a name='L387'></a><a href='#L387'>387</a>
|
|
436
|
+
<a name='L388'></a><a href='#L388'>388</a>
|
|
437
|
+
<a name='L389'></a><a href='#L389'>389</a>
|
|
438
|
+
<a name='L390'></a><a href='#L390'>390</a>
|
|
439
|
+
<a name='L391'></a><a href='#L391'>391</a>
|
|
440
|
+
<a name='L392'></a><a href='#L392'>392</a>
|
|
441
|
+
<a name='L393'></a><a href='#L393'>393</a>
|
|
442
|
+
<a name='L394'></a><a href='#L394'>394</a>
|
|
443
|
+
<a name='L395'></a><a href='#L395'>395</a>
|
|
444
|
+
<a name='L396'></a><a href='#L396'>396</a>
|
|
445
|
+
<a name='L397'></a><a href='#L397'>397</a>
|
|
446
|
+
<a name='L398'></a><a href='#L398'>398</a>
|
|
447
|
+
<a name='L399'></a><a href='#L399'>399</a>
|
|
448
|
+
<a name='L400'></a><a href='#L400'>400</a>
|
|
449
|
+
<a name='L401'></a><a href='#L401'>401</a>
|
|
450
|
+
<a name='L402'></a><a href='#L402'>402</a>
|
|
451
|
+
<a name='L403'></a><a href='#L403'>403</a>
|
|
452
|
+
<a name='L404'></a><a href='#L404'>404</a>
|
|
453
|
+
<a name='L405'></a><a href='#L405'>405</a>
|
|
454
|
+
<a name='L406'></a><a href='#L406'>406</a>
|
|
455
|
+
<a name='L407'></a><a href='#L407'>407</a>
|
|
456
|
+
<a name='L408'></a><a href='#L408'>408</a>
|
|
457
|
+
<a name='L409'></a><a href='#L409'>409</a>
|
|
458
|
+
<a name='L410'></a><a href='#L410'>410</a>
|
|
459
|
+
<a name='L411'></a><a href='#L411'>411</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
460
|
+
<span class="cline-any cline-yes">3x</span>
|
|
461
|
+
<span class="cline-any cline-yes">3x</span>
|
|
385
462
|
<span class="cline-any cline-neutral"> </span>
|
|
386
|
-
<span class="cline-any cline-yes">
|
|
387
|
-
<span class="cline-any cline-yes">
|
|
388
|
-
<span class="cline-any cline-yes">
|
|
389
|
-
<span class="cline-any cline-yes">
|
|
390
|
-
<span class="cline-any cline-yes">
|
|
391
|
-
<span class="cline-any cline-yes">
|
|
392
|
-
<span class="cline-any cline-yes">
|
|
393
|
-
<span class="cline-any cline-yes">
|
|
394
|
-
<span class="cline-any cline-yes">
|
|
395
|
-
<span class="cline-any cline-yes">
|
|
396
|
-
<span class="cline-any cline-yes">
|
|
463
|
+
<span class="cline-any cline-yes">3x</span>
|
|
464
|
+
<span class="cline-any cline-yes">3x</span>
|
|
465
|
+
<span class="cline-any cline-yes">3x</span>
|
|
466
|
+
<span class="cline-any cline-yes">3x</span>
|
|
467
|
+
<span class="cline-any cline-yes">126x</span>
|
|
468
|
+
<span class="cline-any cline-yes">514x</span>
|
|
469
|
+
<span class="cline-any cline-yes">514x</span>
|
|
470
|
+
<span class="cline-any cline-yes">514x</span>
|
|
471
|
+
<span class="cline-any cline-yes">514x</span>
|
|
472
|
+
<span class="cline-any cline-yes">4858x</span>
|
|
473
|
+
<span class="cline-any cline-yes">4396x</span>
|
|
397
474
|
<span class="cline-any cline-neutral"> </span>
|
|
398
475
|
<span class="cline-any cline-neutral"> </span>
|
|
399
476
|
<span class="cline-any cline-neutral"> </span>
|
|
400
477
|
<span class="cline-any cline-neutral"> </span>
|
|
401
478
|
<span class="cline-any cline-neutral"> </span>
|
|
402
|
-
<span class="cline-any cline-yes">
|
|
479
|
+
<span class="cline-any cline-yes">462x</span>
|
|
403
480
|
<span class="cline-any cline-neutral"> </span>
|
|
404
|
-
<span class="cline-any cline-yes">
|
|
405
|
-
<span class="cline-any cline-yes">
|
|
406
|
-
<span class="cline-any cline-yes">
|
|
407
|
-
<span class="cline-any cline-yes">
|
|
408
|
-
<span class="cline-any cline-yes">
|
|
409
|
-
<span class="cline-any cline-yes">
|
|
410
|
-
<span class="cline-any cline-yes">
|
|
411
|
-
<span class="cline-any cline-yes">
|
|
481
|
+
<span class="cline-any cline-yes">4858x</span>
|
|
482
|
+
<span class="cline-any cline-yes">4858x</span>
|
|
483
|
+
<span class="cline-any cline-yes">4858x</span>
|
|
484
|
+
<span class="cline-any cline-yes">514x</span>
|
|
485
|
+
<span class="cline-any cline-yes">514x</span>
|
|
486
|
+
<span class="cline-any cline-yes">4858x</span>
|
|
487
|
+
<span class="cline-any cline-yes">514x</span>
|
|
488
|
+
<span class="cline-any cline-yes">514x</span>
|
|
489
|
+
<span class="cline-any cline-yes">514x</span>
|
|
490
|
+
<span class="cline-any cline-yes">1x</span>
|
|
491
|
+
<span class="cline-any cline-yes">1x</span>
|
|
492
|
+
<span class="cline-any cline-yes">2x</span>
|
|
493
|
+
<span class="cline-any cline-yes">2x</span>
|
|
494
|
+
<span class="cline-any cline-yes">2x</span>
|
|
412
495
|
<span class="cline-any cline-neutral"> </span>
|
|
413
|
-
<span class="cline-any cline-yes">227x</span>
|
|
414
|
-
<span class="cline-any cline-yes">3611x</span>
|
|
415
|
-
<span class="cline-any cline-yes">3611x</span>
|
|
416
496
|
<span class="cline-any cline-neutral"> </span>
|
|
497
|
+
<span class="cline-any cline-yes">1x</span>
|
|
417
498
|
<span class="cline-any cline-neutral"> </span>
|
|
418
|
-
<span class="cline-any cline-yes">
|
|
419
|
-
<span class="cline-any cline-yes">
|
|
420
|
-
<span class="cline-any cline-yes">
|
|
499
|
+
<span class="cline-any cline-yes">514x</span>
|
|
500
|
+
<span class="cline-any cline-yes">514x</span>
|
|
501
|
+
<span class="cline-any cline-yes">514x</span>
|
|
502
|
+
<span class="cline-any cline-yes">4858x</span>
|
|
503
|
+
<span class="cline-any cline-yes">396x</span>
|
|
504
|
+
<span class="cline-any cline-yes">396x</span>
|
|
421
505
|
<span class="cline-any cline-neutral"> </span>
|
|
422
506
|
<span class="cline-any cline-neutral"> </span>
|
|
423
|
-
<span class="cline-any cline-yes">227x</span>
|
|
424
|
-
<span class="cline-any cline-yes">1793x</span>
|
|
425
507
|
<span class="cline-any cline-neutral"> </span>
|
|
426
|
-
<span class="cline-any cline-yes">227x</span>
|
|
427
508
|
<span class="cline-any cline-neutral"> </span>
|
|
428
509
|
<span class="cline-any cline-neutral"> </span>
|
|
510
|
+
<span class="cline-any cline-yes">514x</span>
|
|
511
|
+
<span class="cline-any cline-yes">514x</span>
|
|
512
|
+
<span class="cline-any cline-yes">514x</span>
|
|
513
|
+
<span class="cline-any cline-yes">4858x</span>
|
|
514
|
+
<span class="cline-any cline-yes">4858x</span>
|
|
429
515
|
<span class="cline-any cline-neutral"> </span>
|
|
516
|
+
<span class="cline-any cline-yes">514x</span>
|
|
517
|
+
<span class="cline-any cline-yes">4858x</span>
|
|
430
518
|
<span class="cline-any cline-neutral"> </span>
|
|
519
|
+
<span class="cline-any cline-yes">514x</span>
|
|
431
520
|
<span class="cline-any cline-neutral"> </span>
|
|
432
521
|
<span class="cline-any cline-neutral"> </span>
|
|
433
522
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -439,158 +528,204 @@
|
|
|
439
528
|
<span class="cline-any cline-neutral"> </span>
|
|
440
529
|
<span class="cline-any cline-neutral"> </span>
|
|
441
530
|
<span class="cline-any cline-neutral"> </span>
|
|
442
|
-
<span class="cline-any cline-yes">34x</span>
|
|
443
|
-
<span class="cline-any cline-yes">227x</span>
|
|
444
|
-
<span class="cline-any cline-yes">227x</span>
|
|
445
531
|
<span class="cline-any cline-neutral"> </span>
|
|
446
|
-
<span class="cline-any cline-yes">34x</span>
|
|
447
|
-
<span class="cline-any cline-yes">1435x</span>
|
|
448
|
-
<span class="cline-any cline-yes">1435x</span>
|
|
449
|
-
<span class="cline-any cline-no"> </span>
|
|
450
532
|
<span class="cline-any cline-neutral"> </span>
|
|
451
|
-
<span class="cline-any cline-yes">1435x</span>
|
|
452
533
|
<span class="cline-any cline-neutral"> </span>
|
|
453
|
-
<span class="cline-any cline-yes">34x</span>
|
|
454
|
-
<span class="cline-any cline-yes">227x</span>
|
|
455
|
-
<span class="cline-any cline-yes">227x</span>
|
|
456
534
|
<span class="cline-any cline-neutral"> </span>
|
|
457
|
-
<span class="cline-any cline-yes">34x</span>
|
|
458
|
-
<span class="cline-any cline-yes">42896x</span>
|
|
459
|
-
<span class="cline-any cline-yes">42896x</span>
|
|
460
|
-
<span class="cline-any cline-no"> </span>
|
|
461
535
|
<span class="cline-any cline-neutral"> </span>
|
|
462
|
-
<span class="cline-any cline-yes">42896x</span>
|
|
463
536
|
<span class="cline-any cline-neutral"> </span>
|
|
464
|
-
<span class="cline-any cline-yes">34x</span>
|
|
465
|
-
<span class="cline-any cline-yes">42895x</span>
|
|
466
537
|
<span class="cline-any cline-neutral"> </span>
|
|
538
|
+
<span class="cline-any cline-yes">126x</span>
|
|
539
|
+
<span class="cline-any cline-yes">514x</span>
|
|
540
|
+
<span class="cline-any cline-yes">514x</span>
|
|
467
541
|
<span class="cline-any cline-neutral"> </span>
|
|
542
|
+
<span class="cline-any cline-yes">126x</span>
|
|
543
|
+
<span class="cline-any cline-yes">169x</span>
|
|
544
|
+
<span class="cline-any cline-yes">169x</span>
|
|
545
|
+
<span class="cline-any cline-yes">1x</span>
|
|
468
546
|
<span class="cline-any cline-neutral"> </span>
|
|
547
|
+
<span class="cline-any cline-yes">168x</span>
|
|
469
548
|
<span class="cline-any cline-neutral"> </span>
|
|
549
|
+
<span class="cline-any cline-yes">126x</span>
|
|
550
|
+
<span class="cline-any cline-yes">514x</span>
|
|
551
|
+
<span class="cline-any cline-yes">514x</span>
|
|
470
552
|
<span class="cline-any cline-neutral"> </span>
|
|
553
|
+
<span class="cline-any cline-yes">126x</span>
|
|
554
|
+
<span class="cline-any cline-yes">500x</span>
|
|
555
|
+
<span class="cline-any cline-yes">500x</span>
|
|
556
|
+
<span class="cline-any cline-yes">1x</span>
|
|
471
557
|
<span class="cline-any cline-neutral"> </span>
|
|
558
|
+
<span class="cline-any cline-yes">499x</span>
|
|
472
559
|
<span class="cline-any cline-neutral"> </span>
|
|
560
|
+
<span class="cline-any cline-yes">126x</span>
|
|
561
|
+
<span class="cline-any cline-yes">103x</span>
|
|
473
562
|
<span class="cline-any cline-neutral"> </span>
|
|
563
|
+
<span class="cline-any cline-yes">126x</span>
|
|
564
|
+
<span class="cline-any cline-yes">126x</span>
|
|
565
|
+
<span class="cline-any cline-yes">514x</span>
|
|
566
|
+
<span class="cline-any cline-yes">514x</span>
|
|
567
|
+
<span class="cline-any cline-yes">514x</span>
|
|
568
|
+
<span class="cline-any cline-yes">396x</span>
|
|
569
|
+
<span class="cline-any cline-yes">396x</span>
|
|
474
570
|
<span class="cline-any cline-neutral"> </span>
|
|
475
571
|
<span class="cline-any cline-neutral"> </span>
|
|
476
|
-
<span class="cline-any cline-yes">34x</span>
|
|
477
|
-
<span class="cline-any cline-yes">188x</span>
|
|
478
|
-
<span class="cline-any cline-yes">39x</span>
|
|
479
|
-
<span class="cline-any cline-yes">1434x</span>
|
|
480
|
-
<span class="cline-any cline-yes">39x</span>
|
|
481
|
-
<span class="cline-any cline-yes">39x</span>
|
|
482
572
|
<span class="cline-any cline-neutral"> </span>
|
|
483
|
-
<span class="cline-any cline-yes">39x</span>
|
|
484
|
-
<span class="cline-any cline-yes">188x</span>
|
|
485
|
-
<span class="cline-any cline-yes">21304x</span>
|
|
486
573
|
<span class="cline-any cline-neutral"> </span>
|
|
574
|
+
<span class="cline-any cline-yes">514x</span>
|
|
487
575
|
<span class="cline-any cline-neutral"> </span>
|
|
488
|
-
<span class="cline-any cline-yes">
|
|
489
|
-
<span class="cline-any cline-yes">
|
|
490
|
-
<span class="cline-any cline-yes">
|
|
491
|
-
<span class="cline-any cline-yes">
|
|
492
|
-
<span class="cline-any cline-yes">
|
|
493
|
-
<span class="cline-any cline-yes">
|
|
494
|
-
<span class="cline-any cline-yes">29445x</span>
|
|
495
|
-
<span class="cline-any cline-yes">28597x</span>
|
|
576
|
+
<span class="cline-any cline-yes">126x</span>
|
|
577
|
+
<span class="cline-any cline-yes">1489x</span>
|
|
578
|
+
<span class="cline-any cline-yes">1489x</span>
|
|
579
|
+
<span class="cline-any cline-yes">1489x</span>
|
|
580
|
+
<span class="cline-any cline-yes">1489x</span>
|
|
581
|
+
<span class="cline-any cline-yes">1321x</span>
|
|
496
582
|
<span class="cline-any cline-neutral"> </span>
|
|
497
|
-
<span class="cline-any cline-yes">848x</span>
|
|
498
|
-
<span class="cline-any cline-yes">849x</span>
|
|
499
|
-
<span class="cline-any cline-yes">849x</span>
|
|
500
|
-
<span class="cline-any cline-yes">822x</span>
|
|
501
583
|
<span class="cline-any cline-neutral"> </span>
|
|
584
|
+
<span class="cline-any cline-yes">1489x</span>
|
|
502
585
|
<span class="cline-any cline-neutral"> </span>
|
|
503
|
-
<span class="cline-any cline-yes">
|
|
586
|
+
<span class="cline-any cline-yes">126x</span>
|
|
587
|
+
<span class="cline-any cline-yes">45x</span>
|
|
588
|
+
<span class="cline-any cline-yes">45x</span>
|
|
589
|
+
<span class="cline-any cline-yes">45x</span>
|
|
590
|
+
<span class="cline-any cline-yes">988x</span>
|
|
591
|
+
<span class="cline-any cline-no"> </span>
|
|
504
592
|
<span class="cline-any cline-neutral"> </span>
|
|
593
|
+
<span class="cline-any cline-yes">988x</span>
|
|
594
|
+
<span class="cline-any cline-yes">988x</span>
|
|
595
|
+
<span class="cline-any cline-yes">1x</span>
|
|
505
596
|
<span class="cline-any cline-neutral"> </span>
|
|
597
|
+
<span class="cline-any cline-yes">987x</span>
|
|
598
|
+
<span class="cline-any cline-yes">987x</span>
|
|
599
|
+
<span class="cline-any cline-yes">987x</span>
|
|
600
|
+
<span class="cline-any cline-yes">987x</span>
|
|
601
|
+
<span class="cline-any cline-yes">153x</span>
|
|
602
|
+
<span class="cline-any cline-yes">153x</span>
|
|
603
|
+
<span class="cline-any cline-yes">153x</span>
|
|
506
604
|
<span class="cline-any cline-neutral"> </span>
|
|
507
|
-
<span class="cline-any cline-yes">1246x</span>
|
|
508
|
-
<span class="cline-any cline-yes">12590x</span>
|
|
509
|
-
<span class="cline-any cline-yes">10448x</span>
|
|
510
605
|
<span class="cline-any cline-neutral"> </span>
|
|
511
|
-
<span class="cline-any cline-yes">49133x</span>
|
|
512
|
-
<span class="cline-any cline-yes">2142x</span>
|
|
513
|
-
<span class="cline-any cline-yes">1203x</span>
|
|
514
606
|
<span class="cline-any cline-neutral"> </span>
|
|
515
|
-
<span class="cline-any cline-yes">939x</span>
|
|
516
607
|
<span class="cline-any cline-neutral"> </span>
|
|
517
|
-
<span class="cline-any cline-yes">
|
|
608
|
+
<span class="cline-any cline-yes">153x</span>
|
|
609
|
+
<span class="cline-any cline-yes">153x</span>
|
|
518
610
|
<span class="cline-any cline-neutral"> </span>
|
|
611
|
+
<span class="cline-any cline-yes">987x</span>
|
|
612
|
+
<span class="cline-any cline-yes">987x</span>
|
|
613
|
+
<span class="cline-any cline-yes">2x</span>
|
|
614
|
+
<span class="cline-any cline-yes">1x</span>
|
|
519
615
|
<span class="cline-any cline-neutral"> </span>
|
|
520
616
|
<span class="cline-any cline-neutral"> </span>
|
|
521
|
-
<span class="cline-any cline-yes">
|
|
522
|
-
<span class="cline-any cline-yes">6559x</span>
|
|
523
|
-
<span class="cline-any cline-yes">2788x</span>
|
|
524
|
-
<span class="cline-any cline-yes">2788x</span>
|
|
525
|
-
<span class="cline-any cline-yes">6559x</span>
|
|
526
|
-
<span class="cline-any cline-yes">6150x</span>
|
|
617
|
+
<span class="cline-any cline-yes">1x</span>
|
|
527
618
|
<span class="cline-any cline-neutral"> </span>
|
|
528
|
-
<span class="cline-any cline-yes">409x</span>
|
|
529
|
-
<span class="cline-any cline-yes">410x</span>
|
|
530
|
-
<span class="cline-any cline-yes">410x</span>
|
|
531
|
-
<span class="cline-any cline-yes">355x</span>
|
|
532
619
|
<span class="cline-any cline-neutral"> </span>
|
|
620
|
+
<span class="cline-any cline-yes">986x</span>
|
|
533
621
|
<span class="cline-any cline-neutral"> </span>
|
|
534
|
-
<span class="cline-any cline-yes">54x</span>
|
|
535
622
|
<span class="cline-any cline-neutral"> </span>
|
|
536
|
-
<span class="cline-any cline-yes">1246x</span>
|
|
537
|
-
<span class="cline-any cline-yes">614x</span>
|
|
538
|
-
<span class="cline-any cline-yes">75x</span>
|
|
539
|
-
<span class="cline-any cline-yes">75x</span>
|
|
540
623
|
<span class="cline-any cline-neutral"> </span>
|
|
541
624
|
<span class="cline-any cline-neutral"> </span>
|
|
625
|
+
<span class="cline-any cline-yes">43x</span>
|
|
626
|
+
<span class="cline-any cline-yes">43x</span>
|
|
627
|
+
<span class="cline-any cline-yes">152x</span>
|
|
542
628
|
<span class="cline-any cline-neutral"> </span>
|
|
629
|
+
<span class="cline-any cline-yes">43x</span>
|
|
543
630
|
<span class="cline-any cline-neutral"> </span>
|
|
631
|
+
<span class="cline-any cline-yes">126x</span>
|
|
632
|
+
<span class="cline-any cline-yes">219x</span>
|
|
633
|
+
<span class="cline-any cline-yes">219x</span>
|
|
634
|
+
<span class="cline-any cline-yes">1489x</span>
|
|
635
|
+
<span class="cline-any cline-yes">1489x</span>
|
|
636
|
+
<span class="cline-any cline-yes">1489x</span>
|
|
637
|
+
<span class="cline-any cline-yes">1489x</span>
|
|
638
|
+
<span class="cline-any cline-yes">1321x</span>
|
|
639
|
+
<span class="cline-any cline-yes">1321x</span>
|
|
640
|
+
<span class="cline-any cline-yes">281x</span>
|
|
641
|
+
<span class="cline-any cline-yes">281x</span>
|
|
544
642
|
<span class="cline-any cline-neutral"> </span>
|
|
545
643
|
<span class="cline-any cline-neutral"> </span>
|
|
546
|
-
<span class="cline-any cline-yes">
|
|
547
|
-
<span class="cline-any cline-yes">
|
|
644
|
+
<span class="cline-any cline-yes">1040x</span>
|
|
645
|
+
<span class="cline-any cline-yes">1040x</span>
|
|
646
|
+
<span class="cline-any cline-yes">739x</span>
|
|
647
|
+
<span class="cline-any cline-yes">739x</span>
|
|
548
648
|
<span class="cline-any cline-neutral"> </span>
|
|
549
|
-
<span class="cline-any cline-yes">539x</span>
|
|
550
|
-
<span class="cline-any cline-yes">61x</span>
|
|
551
|
-
<span class="cline-any cline-yes">61x</span>
|
|
552
649
|
<span class="cline-any cline-neutral"> </span>
|
|
553
650
|
<span class="cline-any cline-neutral"> </span>
|
|
651
|
+
<span class="cline-any cline-yes">168x</span>
|
|
554
652
|
<span class="cline-any cline-neutral"> </span>
|
|
555
|
-
<span class="cline-any cline-yes">1110x</span>
|
|
556
|
-
<span class="cline-any cline-yes">761x</span>
|
|
557
653
|
<span class="cline-any cline-neutral"> </span>
|
|
558
|
-
<span class="cline-any cline-yes">
|
|
559
|
-
<span class="cline-any cline-yes">
|
|
560
|
-
<span class="cline-any cline-yes">228x</span>
|
|
561
|
-
<span class="cline-any cline-yes">149x</span>
|
|
654
|
+
<span class="cline-any cline-yes">168x</span>
|
|
655
|
+
<span class="cline-any cline-yes">168x</span>
|
|
562
656
|
<span class="cline-any cline-neutral"> </span>
|
|
657
|
+
<span class="cline-any cline-yes">582x</span>
|
|
658
|
+
<span class="cline-any cline-yes">582x</span>
|
|
659
|
+
<span class="cline-any cline-yes">2973x</span>
|
|
660
|
+
<span class="cline-any cline-yes">2973x</span>
|
|
563
661
|
<span class="cline-any cline-neutral"> </span>
|
|
564
|
-
<span class="cline-any cline-yes">
|
|
565
|
-
<span class="cline-any cline-yes">
|
|
662
|
+
<span class="cline-any cline-yes">582x</span>
|
|
663
|
+
<span class="cline-any cline-yes">582x</span>
|
|
566
664
|
<span class="cline-any cline-neutral"> </span>
|
|
665
|
+
<span class="cline-any cline-yes">582x</span>
|
|
666
|
+
<span class="cline-any cline-yes">582x</span>
|
|
567
667
|
<span class="cline-any cline-neutral"> </span>
|
|
668
|
+
<span class="cline-any cline-yes">582x</span>
|
|
568
669
|
<span class="cline-any cline-neutral"> </span>
|
|
670
|
+
<span class="cline-any cline-yes">219x</span>
|
|
569
671
|
<span class="cline-any cline-neutral"> </span>
|
|
672
|
+
<span class="cline-any cline-yes">126x</span>
|
|
673
|
+
<span class="cline-any cline-yes">219x</span>
|
|
674
|
+
<span class="cline-any cline-yes">219x</span>
|
|
675
|
+
<span class="cline-any cline-yes">219x</span>
|
|
676
|
+
<span class="cline-any cline-no"> </span>
|
|
570
677
|
<span class="cline-any cline-neutral"> </span>
|
|
678
|
+
<span class="cline-any cline-yes">219x</span>
|
|
679
|
+
<span class="cline-any cline-yes">219x</span>
|
|
571
680
|
<span class="cline-any cline-neutral"> </span>
|
|
572
|
-
<span class="cline-any cline-yes">
|
|
681
|
+
<span class="cline-any cline-yes">219x</span>
|
|
573
682
|
<span class="cline-any cline-neutral"> </span>
|
|
574
|
-
<span class="cline-any cline-yes">
|
|
683
|
+
<span class="cline-any cline-yes">126x</span>
|
|
684
|
+
<span class="cline-any cline-yes">65x</span>
|
|
685
|
+
<span class="cline-any cline-yes">65x</span>
|
|
686
|
+
<span class="cline-any cline-yes">65x</span>
|
|
575
687
|
<span class="cline-any cline-neutral"> </span>
|
|
576
|
-
<span class="cline-any cline-no"> </span>
|
|
577
688
|
<span class="cline-any cline-neutral"> </span>
|
|
578
|
-
<span class="cline-any cline-yes">
|
|
689
|
+
<span class="cline-any cline-yes">65x</span>
|
|
579
690
|
<span class="cline-any cline-neutral"> </span>
|
|
691
|
+
<span class="cline-any cline-yes">65x</span>
|
|
580
692
|
<span class="cline-any cline-neutral"> </span>
|
|
581
|
-
<span class="cline-any cline-yes">
|
|
693
|
+
<span class="cline-any cline-yes">126x</span>
|
|
694
|
+
<span class="cline-any cline-yes">559x</span>
|
|
695
|
+
<span class="cline-any cline-yes">38x</span>
|
|
582
696
|
<span class="cline-any cline-neutral"> </span>
|
|
697
|
+
<span class="cline-any cline-yes">559x</span>
|
|
583
698
|
<span class="cline-any cline-neutral"> </span>
|
|
699
|
+
<span class="cline-any cline-yes">126x</span>
|
|
700
|
+
<span class="cline-any cline-yes">559x</span>
|
|
584
701
|
<span class="cline-any cline-neutral"> </span>
|
|
702
|
+
<span class="cline-any cline-yes">559x</span>
|
|
703
|
+
<span class="cline-any cline-yes">559x</span>
|
|
704
|
+
<span class="cline-any cline-yes">559x</span>
|
|
705
|
+
<span class="cline-any cline-yes">366x</span>
|
|
706
|
+
<span class="cline-any cline-yes">366x</span>
|
|
585
707
|
<span class="cline-any cline-neutral"> </span>
|
|
708
|
+
<span class="cline-any cline-yes">366x</span>
|
|
586
709
|
<span class="cline-any cline-neutral"> </span>
|
|
587
710
|
<span class="cline-any cline-neutral"> </span>
|
|
588
711
|
<span class="cline-any cline-neutral"> </span>
|
|
589
712
|
<span class="cline-any cline-neutral"> </span>
|
|
590
713
|
<span class="cline-any cline-neutral"> </span>
|
|
714
|
+
<span class="cline-any cline-yes">366x</span>
|
|
591
715
|
<span class="cline-any cline-neutral"> </span>
|
|
716
|
+
<span class="cline-any cline-yes">559x</span>
|
|
717
|
+
<span class="cline-any cline-yes">559x</span>
|
|
718
|
+
<span class="cline-any cline-yes">332x</span>
|
|
719
|
+
<span class="cline-any cline-yes">332x</span>
|
|
592
720
|
<span class="cline-any cline-neutral"> </span>
|
|
721
|
+
<span class="cline-any cline-yes">559x</span>
|
|
722
|
+
<span class="cline-any cline-yes">559x</span>
|
|
723
|
+
<span class="cline-any cline-yes">366x</span>
|
|
724
|
+
<span class="cline-any cline-yes">366x</span>
|
|
593
725
|
<span class="cline-any cline-neutral"> </span>
|
|
726
|
+
<span class="cline-any cline-yes">559x</span>
|
|
727
|
+
<span class="cline-any cline-yes">557x</span>
|
|
728
|
+
<span class="cline-any cline-yes">557x</span>
|
|
594
729
|
<span class="cline-any cline-neutral"> </span>
|
|
595
730
|
<span class="cline-any cline-neutral"> </span>
|
|
596
731
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -599,103 +734,122 @@
|
|
|
599
734
|
<span class="cline-any cline-neutral"> </span>
|
|
600
735
|
<span class="cline-any cline-neutral"> </span>
|
|
601
736
|
<span class="cline-any cline-neutral"> </span>
|
|
602
|
-
<span class="cline-any cline-yes">34x</span>
|
|
603
|
-
<span class="cline-any cline-yes">22x</span>
|
|
604
|
-
<span class="cline-any cline-yes">22x</span>
|
|
605
|
-
<span class="cline-any cline-yes">22x</span>
|
|
606
|
-
<span class="cline-any cline-yes">188x</span>
|
|
607
|
-
<span class="cline-any cline-yes">188x</span>
|
|
608
737
|
<span class="cline-any cline-neutral"> </span>
|
|
609
|
-
<span class="cline-any cline-yes">188x</span>
|
|
610
|
-
<span class="cline-any cline-yes">149x</span>
|
|
611
738
|
<span class="cline-any cline-neutral"> </span>
|
|
739
|
+
<span class="cline-any cline-yes">126x</span>
|
|
612
740
|
<span class="cline-any cline-neutral"> </span>
|
|
613
|
-
<span class="cline-any cline-yes">
|
|
741
|
+
<span class="cline-any cline-yes">45x</span>
|
|
742
|
+
<span class="cline-any cline-yes">45x</span>
|
|
743
|
+
<span class="cline-any cline-yes">45x</span>
|
|
744
|
+
<span class="cline-any cline-yes">43x</span>
|
|
745
|
+
<span class="cline-any cline-yes">43x</span>
|
|
746
|
+
<span class="cline-any cline-yes">152x</span>
|
|
614
747
|
<span class="cline-any cline-neutral"> </span>
|
|
615
|
-
<span class="cline-any cline-yes">
|
|
748
|
+
<span class="cline-any cline-yes">43x</span>
|
|
749
|
+
<span class="cline-any cline-yes">43x</span>
|
|
750
|
+
<span class="cline-any cline-yes">152x</span>
|
|
751
|
+
<span class="cline-any cline-yes">152x</span>
|
|
752
|
+
<span class="cline-any cline-yes">152x</span>
|
|
753
|
+
<span class="cline-any cline-yes">152x</span>
|
|
616
754
|
<span class="cline-any cline-neutral"> </span>
|
|
617
|
-
<span class="cline-any cline-yes">
|
|
755
|
+
<span class="cline-any cline-yes">43x</span>
|
|
756
|
+
<span class="cline-any cline-yes">43x</span>
|
|
757
|
+
<span class="cline-any cline-yes">43x</span>
|
|
758
|
+
<span class="cline-any cline-yes">43x</span>
|
|
759
|
+
<span class="cline-any cline-yes">43x</span>
|
|
760
|
+
<span class="cline-any cline-yes">43x</span>
|
|
761
|
+
<span class="cline-any cline-yes">43x</span>
|
|
762
|
+
<span class="cline-any cline-yes">43x</span>
|
|
763
|
+
<span class="cline-any cline-yes">43x</span>
|
|
764
|
+
<span class="cline-any cline-yes">43x</span>
|
|
618
765
|
<span class="cline-any cline-neutral"> </span>
|
|
619
|
-
<span class="cline-any cline-yes">
|
|
620
|
-
<span class="cline-any cline-yes">
|
|
621
|
-
<span class="cline-any cline-yes">
|
|
622
|
-
<span class="cline-any cline-yes">
|
|
623
|
-
<span class="cline-any cline-yes">
|
|
624
|
-
<span class="cline-any cline-yes">
|
|
625
|
-
<span class="cline-any cline-
|
|
626
|
-
<span class="cline-any cline-
|
|
766
|
+
<span class="cline-any cline-yes">43x</span>
|
|
767
|
+
<span class="cline-any cline-yes">219x</span>
|
|
768
|
+
<span class="cline-any cline-yes">219x</span>
|
|
769
|
+
<span class="cline-any cline-yes">219x</span>
|
|
770
|
+
<span class="cline-any cline-yes">219x</span>
|
|
771
|
+
<span class="cline-any cline-yes">65x</span>
|
|
772
|
+
<span class="cline-any cline-yes">65x</span>
|
|
773
|
+
<span class="cline-any cline-yes">65x</span>
|
|
627
774
|
<span class="cline-any cline-neutral"> </span>
|
|
775
|
+
<span class="cline-any cline-yes">219x</span>
|
|
776
|
+
<span class="cline-any cline-yes">219x</span>
|
|
777
|
+
<span class="cline-any cline-yes">65x</span>
|
|
778
|
+
<span class="cline-any cline-yes">65x</span>
|
|
628
779
|
<span class="cline-any cline-neutral"> </span>
|
|
629
|
-
<span class="cline-any cline-
|
|
780
|
+
<span class="cline-any cline-yes">219x</span>
|
|
781
|
+
<span class="cline-any cline-yes">582x</span>
|
|
782
|
+
<span class="cline-any cline-yes">582x</span>
|
|
783
|
+
<span class="cline-any cline-yes">582x</span>
|
|
784
|
+
<span class="cline-any cline-yes">582x</span>
|
|
785
|
+
<span class="cline-any cline-yes">582x</span>
|
|
786
|
+
<span class="cline-any cline-yes">582x</span>
|
|
787
|
+
<span class="cline-any cline-yes">262x</span>
|
|
630
788
|
<span class="cline-any cline-neutral"> </span>
|
|
789
|
+
<span class="cline-any cline-yes">320x</span>
|
|
790
|
+
<span class="cline-any cline-yes">581x</span>
|
|
791
|
+
<span class="cline-any cline-yes">581x</span>
|
|
792
|
+
<span class="cline-any cline-yes">581x</span>
|
|
793
|
+
<span class="cline-any cline-yes">11x</span>
|
|
631
794
|
<span class="cline-any cline-neutral"> </span>
|
|
632
|
-
<span class="cline-any cline-yes">
|
|
633
|
-
<span class="cline-any cline-yes">
|
|
795
|
+
<span class="cline-any cline-yes">570x</span>
|
|
796
|
+
<span class="cline-any cline-yes">570x</span>
|
|
634
797
|
<span class="cline-any cline-neutral"> </span>
|
|
635
|
-
<span class="cline-any cline-yes">
|
|
798
|
+
<span class="cline-any cline-yes">570x</span>
|
|
799
|
+
<span class="cline-any cline-yes">559x</span>
|
|
636
800
|
<span class="cline-any cline-neutral"> </span>
|
|
637
801
|
<span class="cline-any cline-neutral"> </span>
|
|
638
802
|
<span class="cline-any cline-neutral"> </span>
|
|
639
803
|
<span class="cline-any cline-neutral"> </span>
|
|
640
804
|
<span class="cline-any cline-neutral"> </span>
|
|
641
805
|
<span class="cline-any cline-neutral"> </span>
|
|
642
|
-
<span class="cline-any cline-yes">34x</span>
|
|
643
|
-
<span class="cline-any cline-yes">188x</span>
|
|
644
|
-
<span class="cline-any cline-yes">6747x</span>
|
|
645
|
-
<span class="cline-any cline-yes">6747x</span>
|
|
646
|
-
<span class="cline-any cline-yes">6747x</span>
|
|
647
|
-
<span class="cline-any cline-no"> </span>
|
|
648
806
|
<span class="cline-any cline-neutral"> </span>
|
|
649
|
-
<span class="cline-any cline-yes">6747x</span>
|
|
650
|
-
<span class="cline-any cline-yes">6747x</span>
|
|
651
|
-
<span class="cline-any cline-yes">6747x</span>
|
|
652
807
|
<span class="cline-any cline-neutral"> </span>
|
|
653
808
|
<span class="cline-any cline-neutral"> </span>
|
|
654
|
-
<span class="cline-any cline-yes">34x</span>
|
|
655
|
-
<span class="cline-any cline-yes">22x</span>
|
|
656
|
-
<span class="cline-any cline-yes">22x</span>
|
|
657
|
-
<span class="cline-any cline-yes">22x</span>
|
|
658
|
-
<span class="cline-any cline-yes">22x</span>
|
|
659
|
-
<span class="cline-any cline-yes">22x</span>
|
|
660
|
-
<span class="cline-any cline-yes">39x</span>
|
|
661
|
-
<span class="cline-any cline-yes">22x</span>
|
|
662
|
-
<span class="cline-any cline-yes">22x</span>
|
|
663
809
|
<span class="cline-any cline-neutral"> </span>
|
|
664
|
-
<span class="cline-any cline-yes">34x</span>
|
|
665
|
-
<span class="cline-any cline-yes">4x</span>
|
|
666
|
-
<span class="cline-any cline-yes">2x</span>
|
|
667
810
|
<span class="cline-any cline-neutral"> </span>
|
|
811
|
+
<span class="cline-any cline-yes">43x</span>
|
|
812
|
+
<span class="cline-any cline-yes">43x</span>
|
|
813
|
+
<span class="cline-any cline-yes">65x</span>
|
|
668
814
|
<span class="cline-any cline-neutral"> </span>
|
|
669
|
-
<span class="cline-any cline-yes">
|
|
815
|
+
<span class="cline-any cline-yes">43x</span>
|
|
816
|
+
<span class="cline-any cline-yes">43x</span>
|
|
817
|
+
<span class="cline-any cline-neutral"> </span>
|
|
818
|
+
<span class="cline-any cline-yes">126x</span>
|
|
819
|
+
<span class="cline-any cline-yes">10x</span>
|
|
820
|
+
<span class="cline-any cline-yes">5x</span>
|
|
670
821
|
<span class="cline-any cline-neutral"> </span>
|
|
671
|
-
<span class="cline-any cline-yes">2x</span>
|
|
672
822
|
<span class="cline-any cline-neutral"> </span>
|
|
673
|
-
<span class="cline-any cline-yes">34x</span>
|
|
674
823
|
<span class="cline-any cline-yes">5x</span>
|
|
675
|
-
<span class="cline-any cline-yes">1x</span>
|
|
676
824
|
<span class="cline-any cline-neutral"> </span>
|
|
677
|
-
<span class="cline-any cline-yes">
|
|
678
|
-
<span class="cline-any cline-
|
|
825
|
+
<span class="cline-any cline-yes">5x</span>
|
|
826
|
+
<span class="cline-any cline-neutral"> </span>
|
|
827
|
+
<span class="cline-any cline-yes">126x</span>
|
|
828
|
+
<span class="cline-any cline-yes">17x</span>
|
|
829
|
+
<span class="cline-any cline-yes">2x</span>
|
|
830
|
+
<span class="cline-any cline-neutral"> </span>
|
|
831
|
+
<span class="cline-any cline-yes">15x</span>
|
|
832
|
+
<span class="cline-any cline-yes">15x</span>
|
|
679
833
|
<span class="cline-any cline-no"> </span>
|
|
680
834
|
<span class="cline-any cline-neutral"> </span>
|
|
835
|
+
<span class="cline-any cline-yes">15x</span>
|
|
681
836
|
<span class="cline-any cline-yes">4x</span>
|
|
682
|
-
<span class="cline-any cline-yes">2x</span>
|
|
683
837
|
<span class="cline-any cline-neutral"> </span>
|
|
684
|
-
<span class="cline-any cline-yes">
|
|
838
|
+
<span class="cline-any cline-yes">11x</span>
|
|
685
839
|
<span class="cline-any cline-neutral"> </span>
|
|
686
|
-
<span class="cline-any cline-yes">
|
|
840
|
+
<span class="cline-any cline-yes">126x</span>
|
|
841
|
+
<span class="cline-any cline-yes">8x</span>
|
|
687
842
|
<span class="cline-any cline-yes">3x</span>
|
|
688
|
-
<span class="cline-any cline-yes">1x</span>
|
|
689
843
|
<span class="cline-any cline-neutral"> </span>
|
|
690
|
-
<span class="cline-any cline-yes">
|
|
844
|
+
<span class="cline-any cline-yes">5x</span>
|
|
691
845
|
<span class="cline-any cline-neutral"> </span>
|
|
692
|
-
<span class="cline-any cline-yes">
|
|
846
|
+
<span class="cline-any cline-yes">126x</span>
|
|
847
|
+
<span class="cline-any cline-yes">9x</span>
|
|
693
848
|
<span class="cline-any cline-yes">3x</span>
|
|
694
|
-
<span class="cline-any cline-yes">1x</span>
|
|
695
849
|
<span class="cline-any cline-neutral"> </span>
|
|
696
|
-
<span class="cline-any cline-yes">
|
|
850
|
+
<span class="cline-any cline-yes">6x</span>
|
|
697
851
|
<span class="cline-any cline-neutral"> </span>
|
|
698
|
-
<span class="cline-any cline-yes">
|
|
852
|
+
<span class="cline-any cline-yes">126x</span>
|
|
699
853
|
<span class="cline-any cline-neutral"> </span>
|
|
700
854
|
<span class="cline-any cline-neutral"> </span>
|
|
701
855
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -704,14 +858,14 @@
|
|
|
704
858
|
<span class="cline-any cline-neutral"> </span>
|
|
705
859
|
<span class="cline-any cline-neutral"> </span>
|
|
706
860
|
<span class="cline-any cline-neutral"> </span>
|
|
707
|
-
<span class="cline-any cline-yes">
|
|
861
|
+
<span class="cline-any cline-yes">514x</span>
|
|
708
862
|
<span class="cline-any cline-neutral"> </span>
|
|
709
863
|
<span class="cline-any cline-neutral"> </span>
|
|
710
|
-
<span class="cline-any cline-yes">
|
|
864
|
+
<span class="cline-any cline-yes">514x</span>
|
|
711
865
|
<span class="cline-any cline-neutral"> </span>
|
|
712
866
|
<span class="cline-any cline-neutral"> </span>
|
|
713
867
|
<span class="cline-any cline-neutral"> </span>
|
|
714
|
-
<span class="cline-any cline-yes">
|
|
868
|
+
<span class="cline-any cline-yes">3x</span>
|
|
715
869
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">"use strict";
|
|
716
870
|
var __importDefault = (this && <span class="branch-1 cbranch-no" title="branch not covered" >this.__importDefault)</span> || function (mod) {
|
|
717
871
|
return (mod && mod.__esModule) ? <span class="branch-0 cbranch-no" title="branch not covered" >mod </span>: { "default": mod };
|
|
@@ -724,7 +878,7 @@ const createCore = ({ entities: externalEntities }) => {
|
|
|
724
878
|
const tableName = d.tableName;
|
|
725
879
|
const displayName = d.displayName || (0, camelcase_1.default)(d.tableName);
|
|
726
880
|
const collectionDisplayName = d.collectionDisplayName || `${displayName}s`;
|
|
727
|
-
const columns = (typeof d.columns === 'function' ?
|
|
881
|
+
const columns = (typeof d.columns === 'function' ? d.columns() : d.columns).map((d) => {
|
|
728
882
|
if (typeof d === 'string') {
|
|
729
883
|
return {
|
|
730
884
|
column: d,
|
|
@@ -740,19 +894,35 @@ const createCore = ({ entities: externalEntities }) => {
|
|
|
740
894
|
const Model = d.Model;
|
|
741
895
|
const Collection = d.Collection;
|
|
742
896
|
const pkColumnsData = columns.filter((x) => x.primaryKey);
|
|
743
|
-
const _primaryKeys = pkColumnsData.map(
|
|
744
|
-
const primaryKeys = _primaryKeys.length > 0 ?
|
|
745
|
-
// Returns unique identifier of model (the values of the primary keys)
|
|
897
|
+
const _primaryKeys = pkColumnsData.map((x) => x.column);
|
|
898
|
+
const primaryKeys = _primaryKeys.length > 0 ? _primaryKeys : ['id'];
|
|
746
899
|
const getPkId = (model) => {
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
900
|
+
let id = '';
|
|
901
|
+
for (let i = 0; i < primaryKeys.length; i++) {
|
|
902
|
+
const part = model[primaryKeys[i]];
|
|
903
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (part !== void 0 && part !== null) {
|
|
904
|
+
id += String(part);
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
return id;
|
|
750
908
|
};
|
|
751
|
-
const references =
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
909
|
+
const references = {};
|
|
910
|
+
const referencesEntries = [];
|
|
911
|
+
for (const col of columns) {
|
|
912
|
+
if (col.references) {
|
|
913
|
+
references[col.property] = col.references;
|
|
914
|
+
referencesEntries.push({
|
|
915
|
+
property: col.property,
|
|
916
|
+
ModelClass: col.references
|
|
917
|
+
});
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
const columnToPropertyMap = new Map();
|
|
921
|
+
const propertyToColumnMap = new Map();
|
|
922
|
+
for (let i = 0; i < columnNames.length; i++) {
|
|
923
|
+
columnToPropertyMap.set(columnNames[i], propertyNames[i]);
|
|
924
|
+
propertyToColumnMap.set(propertyNames[i], columnNames[i]);
|
|
925
|
+
}
|
|
756
926
|
const selectColumnsClause = prefixedColumnNames
|
|
757
927
|
.map((prefixed, index) => `"${tableName}".${columnNames[index]} as "${prefixed}"`)
|
|
758
928
|
.join(', ');
|
|
@@ -769,7 +939,10 @@ const createCore = ({ entities: externalEntities }) => {
|
|
|
769
939
|
primaryKeys,
|
|
770
940
|
references,
|
|
771
941
|
selectColumnsClause,
|
|
772
|
-
getPkId
|
|
942
|
+
getPkId,
|
|
943
|
+
columnToPropertyMap,
|
|
944
|
+
propertyToColumnMap,
|
|
945
|
+
referencesEntries
|
|
773
946
|
};
|
|
774
947
|
});
|
|
775
948
|
const tableNameToEntityMap = entities.reduce((map, entity) => {
|
|
@@ -778,8 +951,8 @@ const createCore = ({ entities: externalEntities }) => {
|
|
|
778
951
|
}, new Map());
|
|
779
952
|
const getEntityByTableName = (tableName) => {
|
|
780
953
|
const entity = tableNameToEntityMap.get(tableName);
|
|
781
|
-
|
|
782
|
-
|
|
954
|
+
if (!entity) {
|
|
955
|
+
throw new Error(`Could not find entity for table ${tableName}`);
|
|
783
956
|
}
|
|
784
957
|
return entity;
|
|
785
958
|
};
|
|
@@ -789,208 +962,266 @@ const createCore = ({ entities: externalEntities }) => {
|
|
|
789
962
|
}, new Map());
|
|
790
963
|
const getEntityByModelClass = (Model) => {
|
|
791
964
|
const entity = modelToEntityMap.get(Model);
|
|
792
|
-
|
|
793
|
-
|
|
965
|
+
if (!entity) {
|
|
966
|
+
throw new Error(`Could not find entity for class ${Model}`);
|
|
794
967
|
}
|
|
795
968
|
return entity;
|
|
796
969
|
};
|
|
797
970
|
const getEntityByModel = (model) => {
|
|
798
971
|
return getEntityByModelClass(model.constructor);
|
|
799
972
|
};
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
let
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
...nodes.slice(0, indexOfOldestParent + 1).reverse()
|
|
853
|
-
];
|
|
854
|
-
const nodeItPointsTo = parentHeirarchy.find((parent) => {
|
|
855
|
-
const indexes = Object.values(getEntityByModel(model).references)
|
|
856
|
-
.map((x, i) => x === parent.constructor ? i : null)
|
|
857
|
-
.filter((x, i) => x != null);
|
|
858
|
-
if (!indexes.length) {
|
|
859
|
-
return false;
|
|
860
|
-
}
|
|
861
|
-
for (const index of indexes) {
|
|
862
|
-
const property = Object.keys(getEntityByModel(model).references)[index];
|
|
863
|
-
if (model[property] === parent.id) {
|
|
864
|
-
return true;
|
|
865
|
-
}
|
|
866
|
-
}
|
|
867
|
-
return false;
|
|
868
|
-
});
|
|
869
|
-
if (isNodeAlreadySeen) {
|
|
870
|
-
if (nodeItPointsTo && !nodePointingToIt) {
|
|
871
|
-
nodes = [model, ...nodes];
|
|
872
|
-
return;
|
|
873
|
-
}
|
|
874
|
-
// If the nodePointingToIt (eg, parcel_event) is part of an
|
|
875
|
-
// existing collection on this node (eg, parcel) which is a
|
|
876
|
-
// nodeAlreadySeen, early return so we don't create it (parcel) on
|
|
877
|
-
// the nodePointingToIt (parcel_event), since it (parcel) has been
|
|
878
|
-
// shown to be the parent (of parcel_events).
|
|
879
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (nodePointingToIt) {
|
|
880
|
-
const ec = model[getEntityByModel(nodePointingToIt)
|
|
881
|
-
.collectionDisplayName];
|
|
882
|
-
if (ec && ec.models.find((m) => m === nodePointingToIt)) {
|
|
883
|
-
nodes = [model, ...nodes];
|
|
884
|
-
return;
|
|
885
|
-
}
|
|
886
|
-
}
|
|
973
|
+
const entityReferencePlans = new Map();
|
|
974
|
+
for (let i = 0; i < entities.length; i++) {
|
|
975
|
+
const entity = entities[i];
|
|
976
|
+
const plans = new Array(entity.referencesEntries.length);
|
|
977
|
+
for (let j = 0; j < entity.referencesEntries.length; j++) {
|
|
978
|
+
const ref = entity.referencesEntries[j];
|
|
979
|
+
plans[j] = {
|
|
980
|
+
property: ref.property,
|
|
981
|
+
targetEntity: getEntityByModelClass(ref.ModelClass)
|
|
982
|
+
};
|
|
983
|
+
}
|
|
984
|
+
entityReferencePlans.set(entity, plans);
|
|
985
|
+
}
|
|
986
|
+
const getPkIdFromRow = (row, primaryKeyRowKeys) => {
|
|
987
|
+
let id = '';
|
|
988
|
+
for (let i = 0; i < primaryKeyRowKeys.length; i++) {
|
|
989
|
+
const part = row[primaryKeyRowKeys[i]];
|
|
990
|
+
if (part !== void 0 && part !== null) {
|
|
991
|
+
id += String(part);
|
|
992
|
+
}
|
|
993
|
+
}
|
|
994
|
+
return id;
|
|
995
|
+
};
|
|
996
|
+
const buildEntityRowPlans = (sampleRow) => {
|
|
997
|
+
const plansByTable = new Map();
|
|
998
|
+
const tableOrder = [];
|
|
999
|
+
for (const text in sampleRow) {
|
|
1000
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!Object.prototype.hasOwnProperty.call(sampleRow, text)) {
|
|
1001
|
+
<span class="cstat-no" title="statement not covered" > continue;</span>
|
|
1002
|
+
}
|
|
1003
|
+
const hashIndex = text.indexOf('#');
|
|
1004
|
+
if (hashIndex === -1) {
|
|
1005
|
+
throw new Error('Column names must be namespaced to table');
|
|
1006
|
+
}
|
|
1007
|
+
const tableName = text.substring(0, hashIndex);
|
|
1008
|
+
const column = text.substring(hashIndex + 1);
|
|
1009
|
+
let plan = plansByTable.get(tableName);
|
|
1010
|
+
if (!plan) {
|
|
1011
|
+
const entity = getEntityByTableName(tableName);
|
|
1012
|
+
const primaryKeyRowKeys = entity.primaryKeys.map((pk) => `${tableName}#${pk}`);
|
|
1013
|
+
plan = {
|
|
1014
|
+
entity,
|
|
1015
|
+
columnPlans: [],
|
|
1016
|
+
primaryKeyRowKeys
|
|
1017
|
+
};
|
|
1018
|
+
plansByTable.set(tableName, plan);
|
|
1019
|
+
tableOrder.push(tableName);
|
|
1020
|
+
}
|
|
1021
|
+
let propertyName = plan.entity.columnToPropertyMap.get(column);
|
|
1022
|
+
if (!propertyName) {
|
|
1023
|
+
if (column.startsWith('meta_')) {
|
|
1024
|
+
propertyName = (0, camelcase_1.default)(column);
|
|
887
1025
|
}
|
|
888
|
-
|
|
889
|
-
|
|
1026
|
+
else {
|
|
1027
|
+
throw Error(`No property name for "${column}" in business object "${plan.entity.displayName}". Non-spec'd columns must begin with "meta_".`);
|
|
890
1028
|
}
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
1029
|
+
}
|
|
1030
|
+
plan.columnPlans.push({
|
|
1031
|
+
rowKey: text,
|
|
1032
|
+
propertyName
|
|
1033
|
+
});
|
|
1034
|
+
}
|
|
1035
|
+
const orderedPlans = new Array(tableOrder.length);
|
|
1036
|
+
for (let i = 0; i < tableOrder.length; i++) {
|
|
1037
|
+
orderedPlans[i] = plansByTable.get(tableOrder[i]);
|
|
1038
|
+
}
|
|
1039
|
+
return orderedPlans;
|
|
1040
|
+
};
|
|
1041
|
+
const materializeModelsFromRow = (row, entityRowPlans, rootScopedModelsByEntity, rowModels, rowModelPkIds, rowCreatedWithPkIndexes) => {
|
|
1042
|
+
rowCreatedWithPkIndexes.length = 0;
|
|
1043
|
+
for (let i = 0; i < entityRowPlans.length; i++) {
|
|
1044
|
+
const plan = entityRowPlans[i];
|
|
1045
|
+
const pkId = getPkIdFromRow(row, plan.primaryKeyRowKeys);
|
|
1046
|
+
rowModelPkIds[i] = pkId;
|
|
1047
|
+
if (pkId) {
|
|
1048
|
+
let modelsForEntity = rootScopedModelsByEntity.get(plan.entity);
|
|
1049
|
+
if (!modelsForEntity) {
|
|
1050
|
+
modelsForEntity = new Map();
|
|
1051
|
+
rootScopedModelsByEntity.set(plan.entity, modelsForEntity);
|
|
903
1052
|
}
|
|
904
1053
|
else {
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
1054
|
+
const existing = modelsForEntity.get(pkId);
|
|
1055
|
+
if (existing) {
|
|
1056
|
+
rowModels[i] = existing;
|
|
1057
|
+
continue;
|
|
908
1058
|
}
|
|
909
|
-
<span class="cstat-no" title="statement not covered" > throw Error(`Could not find how this BO fits: ${JSON.stringify(model)} ${getEntityByModel(model).tableName}`);</span>
|
|
910
1059
|
}
|
|
911
|
-
|
|
1060
|
+
}
|
|
1061
|
+
else <span class="missing-if-branch" title="else path not taken" >E</span>if (i !== 0) {
|
|
1062
|
+
// No primary key means this is typically an outer-joined null row.
|
|
1063
|
+
// Skip model construction for non-root entities since it cannot link.
|
|
1064
|
+
rowModels[i] = void 0;
|
|
1065
|
+
continue;
|
|
1066
|
+
}
|
|
1067
|
+
const props = {};
|
|
1068
|
+
for (let j = 0; j < plan.columnPlans.length; j++) {
|
|
1069
|
+
const columnPlan = plan.columnPlans[j];
|
|
1070
|
+
props[columnPlan.propertyName] = row[columnPlan.rowKey];
|
|
1071
|
+
}
|
|
1072
|
+
const model = new plan.entity.Model(props);
|
|
1073
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (pkId) {
|
|
1074
|
+
// modelsForEntity is guaranteed to be initialized above for pk rows.
|
|
1075
|
+
rootScopedModelsByEntity.get(plan.entity).set(pkId, model);
|
|
1076
|
+
rowCreatedWithPkIndexes.push(i);
|
|
1077
|
+
}
|
|
1078
|
+
rowModels[i] = model;
|
|
1079
|
+
}
|
|
1080
|
+
return rowModels[0];
|
|
1081
|
+
};
|
|
1082
|
+
const getRootScopeKey = (row, rootEntity, rootPrimaryKeys) => {
|
|
1083
|
+
let rootScopeKey = '';
|
|
1084
|
+
for (let i = 0; i < rootPrimaryKeys.length; i++) {
|
|
1085
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (i > 0) {
|
|
1086
|
+
<span class="cstat-no" title="statement not covered" > rootScopeKey += '@';</span>
|
|
1087
|
+
}
|
|
1088
|
+
const value = row[`${rootEntity.tableName}#${rootPrimaryKeys[i]}`];
|
|
1089
|
+
rootScopeKey += value === void 0 || value === null ? <span class="branch-0 cbranch-no" title="branch not covered" >'' </span>: String(value);
|
|
1090
|
+
}
|
|
1091
|
+
return rootScopeKey;
|
|
1092
|
+
};
|
|
1093
|
+
const ensureRootScopeState = (rootScopeKey, rootScopeStateByKey) => {
|
|
1094
|
+
let state = rootScopeStateByKey.get(rootScopeKey);
|
|
1095
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (!state) {
|
|
1096
|
+
state = {
|
|
1097
|
+
modelsByEntity: new Map()
|
|
1098
|
+
};
|
|
1099
|
+
rootScopeStateByKey.set(rootScopeKey, state);
|
|
1100
|
+
}
|
|
1101
|
+
return state;
|
|
1102
|
+
};
|
|
1103
|
+
const ensureCollectionMembership = (rootScopeState) => {
|
|
1104
|
+
if (!rootScopeState.collectionMembership) {
|
|
1105
|
+
rootScopeState.collectionMembership = new WeakMap();
|
|
1106
|
+
}
|
|
1107
|
+
return rootScopeState.collectionMembership;
|
|
1108
|
+
};
|
|
1109
|
+
const linkSourceToTarget = ({ sourceEntity, sourceModel, sourceModelPkId, targetEntity, targetModel, collectionMembership }) => {
|
|
1110
|
+
sourceModel[targetEntity.displayName] =
|
|
1111
|
+
targetModel;
|
|
1112
|
+
const collectionKey = sourceEntity.collectionDisplayName;
|
|
1113
|
+
let collection = targetModel[collectionKey];
|
|
1114
|
+
if (!collection) {
|
|
1115
|
+
const Collection = sourceEntity.Collection;
|
|
1116
|
+
const createdCollection = new Collection({ models: [] });
|
|
1117
|
+
// Keep ORM back-reference collections out of default JSON serialization.
|
|
1118
|
+
Object.defineProperty(targetModel, collectionKey, {
|
|
1119
|
+
value: createdCollection,
|
|
1120
|
+
writable: true,
|
|
1121
|
+
configurable: true,
|
|
1122
|
+
enumerable: false
|
|
912
1123
|
});
|
|
913
|
-
|
|
914
|
-
|
|
1124
|
+
collection = createdCollection;
|
|
1125
|
+
}
|
|
1126
|
+
let byCollection = collectionMembership.get(targetModel);
|
|
1127
|
+
if (!byCollection) {
|
|
1128
|
+
byCollection = new Map();
|
|
1129
|
+
collectionMembership.set(targetModel, byCollection);
|
|
1130
|
+
}
|
|
1131
|
+
let memberIds = byCollection.get(sourceEntity);
|
|
1132
|
+
if (!memberIds) {
|
|
1133
|
+
memberIds = new Set();
|
|
1134
|
+
byCollection.set(sourceEntity, memberIds);
|
|
1135
|
+
}
|
|
1136
|
+
if (!memberIds.has(sourceModelPkId)) {
|
|
1137
|
+
collection.models.push(sourceModel);
|
|
1138
|
+
memberIds.add(sourceModelPkId);
|
|
1139
|
+
}
|
|
915
1140
|
};
|
|
916
1141
|
/*
|
|
917
|
-
*
|
|
918
|
-
*
|
|
919
|
-
*
|
|
920
|
-
*
|
|
921
|
-
*
|
|
922
|
-
*
|
|
923
|
-
* ]
|
|
924
|
-
* Out:
|
|
925
|
-
* [
|
|
926
|
-
* [
|
|
927
|
-
* [Article {id: 32}, ArticleTag {id: 54}]
|
|
928
|
-
* [Article {id: 32}, ArticleTag {id: 55}]
|
|
929
|
-
* ]
|
|
930
|
-
* [
|
|
931
|
-
* [Article {id: 33}, ArticleTag {id: 56}]
|
|
932
|
-
* ]
|
|
933
|
-
* ]
|
|
1142
|
+
* createFromDatabase architecture:
|
|
1143
|
+
* 1) Compile row plans once (column -> property mapping per entity/table).
|
|
1144
|
+
* 2) Materialize models per row with scoped de-duplication by root scope key.
|
|
1145
|
+
* 3) Index models by root scope + entity + entity primary key.
|
|
1146
|
+
* 4) Link refs incrementally as new models appear.
|
|
1147
|
+
* 5) Return root models in first-seen root scope order.
|
|
934
1148
|
*/
|
|
935
|
-
const
|
|
936
|
-
|
|
937
|
-
const
|
|
938
|
-
const
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
1149
|
+
const createFromDatabase = (rows) => {
|
|
1150
|
+
var _a;
|
|
1151
|
+
const result = Array.isArray(rows) ? rows : [rows];
|
|
1152
|
+
const len = result.length;
|
|
1153
|
+
const entityRowPlans = buildEntityRowPlans(result[0]);
|
|
1154
|
+
const selectedEntities = new Set();
|
|
1155
|
+
for (let i = 0; i < entityRowPlans.length; i++) {
|
|
1156
|
+
selectedEntities.add(entityRowPlans[i].entity);
|
|
1157
|
+
}
|
|
1158
|
+
const applicableRefPlans = new Map();
|
|
1159
|
+
for (let i = 0; i < entityRowPlans.length; i++) {
|
|
1160
|
+
const entity = entityRowPlans[i].entity;
|
|
1161
|
+
const refs = entityReferencePlans.get(entity) || <span class="branch-1 cbranch-no" title="branch not covered" >[];</span>
|
|
1162
|
+
const filteredRefs = refs.filter((ref) => selectedEntities.has(ref.targetEntity));
|
|
1163
|
+
applicableRefPlans.set(entity, filteredRefs);
|
|
1164
|
+
}
|
|
1165
|
+
const rootEntity = entityRowPlans[0].entity;
|
|
1166
|
+
const rootPrimaryKeys = rootEntity.primaryKeys;
|
|
1167
|
+
const rootScopeOrder = [];
|
|
1168
|
+
const rootModelsByScopeKey = new Map();
|
|
1169
|
+
const rootScopeStateByKey = new Map();
|
|
1170
|
+
let currentRootScopeKey = void 0;
|
|
1171
|
+
let currentRootScopeState = void 0;
|
|
1172
|
+
const rowModels = new Array(entityRowPlans.length);
|
|
1173
|
+
const rowModelPkIds = new Array(entityRowPlans.length);
|
|
1174
|
+
const rowCreatedWithPkIndexes = [];
|
|
1175
|
+
// Phase 1: materialize and index model instances by root scope + entity.
|
|
1176
|
+
for (let i = 0; i < len; i++) {
|
|
1177
|
+
const row = result[i];
|
|
1178
|
+
const rootScopeKey = getRootScopeKey(row, rootEntity, rootPrimaryKeys);
|
|
1179
|
+
let rootScopeState = currentRootScopeState;
|
|
1180
|
+
if (!rootScopeState || rootScopeKey !== currentRootScopeKey) {
|
|
1181
|
+
rootScopeState = ensureRootScopeState(rootScopeKey, rootScopeStateByKey);
|
|
1182
|
+
currentRootScopeKey = rootScopeKey;
|
|
1183
|
+
currentRootScopeState = rootScopeState;
|
|
944
1184
|
}
|
|
945
|
-
|
|
946
|
-
|
|
1185
|
+
const rootModel = materializeModelsFromRow(row, entityRowPlans, rootScopeState.modelsByEntity, rowModels, rowModelPkIds, rowCreatedWithPkIndexes);
|
|
1186
|
+
if (!rootModelsByScopeKey.has(rootScopeKey)) {
|
|
1187
|
+
rootScopeOrder.push(rootScopeKey);
|
|
1188
|
+
rootModelsByScopeKey.set(rootScopeKey, rootModel);
|
|
947
1189
|
}
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
1190
|
+
for (let c = 0; c < rowCreatedWithPkIndexes.length; c++) {
|
|
1191
|
+
const j = rowCreatedWithPkIndexes[c];
|
|
1192
|
+
const sourceModel = rowModels[j];
|
|
1193
|
+
const sourceModelPkId = rowModelPkIds[j];
|
|
1194
|
+
const sourceEntity = entityRowPlans[j].entity;
|
|
1195
|
+
const refs = applicableRefPlans.get(sourceEntity);
|
|
1196
|
+
if (!refs || refs.length === 0) {
|
|
1197
|
+
continue;
|
|
1198
|
+
}
|
|
1199
|
+
for (let r = 0; r < refs.length; r++) {
|
|
1200
|
+
const ref = refs[r];
|
|
1201
|
+
const refId = sourceModel[ref.property];
|
|
1202
|
+
if (refId == null) {
|
|
1203
|
+
continue;
|
|
960
1204
|
}
|
|
961
|
-
|
|
962
|
-
|
|
1205
|
+
const targetPkId = String(refId);
|
|
1206
|
+
const target = (_a = rootScopeState.modelsByEntity
|
|
1207
|
+
.get(ref.targetEntity)) === null || _a === void 0 ? void 0 : _a.get(targetPkId);
|
|
1208
|
+
if (target) {
|
|
1209
|
+
linkSourceToTarget({
|
|
1210
|
+
sourceEntity,
|
|
1211
|
+
sourceModel,
|
|
1212
|
+
sourceModelPkId,
|
|
1213
|
+
targetEntity: ref.targetEntity,
|
|
1214
|
+
targetModel: target,
|
|
1215
|
+
collectionMembership: ensureCollectionMembership(rootScopeState)
|
|
1216
|
+
});
|
|
963
1217
|
}
|
|
964
1218
|
}
|
|
965
|
-
obj[propertyName] = objectified[tableName][column];
|
|
966
|
-
return obj;
|
|
967
|
-
}, {});
|
|
968
|
-
return new entity.Model(propified);
|
|
969
|
-
});
|
|
970
|
-
};
|
|
971
|
-
/*
|
|
972
|
-
* Make objects (based on special table#column names) from flat database
|
|
973
|
-
* return value.
|
|
974
|
-
*/
|
|
975
|
-
const objectifyDatabaseResult = (result) => {
|
|
976
|
-
return Object.keys(result).reduce((obj, text) => {
|
|
977
|
-
const tableName = text.split('#')[0];
|
|
978
|
-
const column = text.split('#')[1];
|
|
979
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!tableName || !column) {
|
|
980
|
-
<span class="cstat-no" title="statement not covered" > throw new Error('Column names must be namespaced to table');</span>
|
|
981
1219
|
}
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
const createFromDatabase = (rows) => {
|
|
988
|
-
const result = Array.isArray(rows) ? rows : <span class="branch-1 cbranch-no" title="branch not covered" >[rows];</span>
|
|
989
|
-
const objectified = result.map(objectifyDatabaseResult);
|
|
990
|
-
const boified = objectified.map(mapToBos);
|
|
991
|
-
const clumps = clumpIntoGroups(boified);
|
|
992
|
-
const nested = clumps.map(nestClump);
|
|
993
|
-
const models = nested.map((n) => Object.values(n)[0]);
|
|
1220
|
+
}
|
|
1221
|
+
const models = new Array(rootScopeOrder.length);
|
|
1222
|
+
for (let i = 0; i < rootScopeOrder.length; i++) {
|
|
1223
|
+
models[i] = rootModelsByScopeKey.get(rootScopeOrder[i]);
|
|
1224
|
+
}
|
|
994
1225
|
const Collection = getEntityByModel(models[0]).Collection;
|
|
995
1226
|
return new Collection({ models });
|
|
996
1227
|
};
|
|
@@ -1051,7 +1282,7 @@ exports.createCore = createCore;
|
|
|
1051
1282
|
</div><!-- /wrapper -->
|
|
1052
1283
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1053
1284
|
Code coverage
|
|
1054
|
-
generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at
|
|
1285
|
+
generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Mon Mar 02 2026 20:05:31 GMT-0500 (Eastern Standard Time)
|
|
1055
1286
|
</div>
|
|
1056
1287
|
</div>
|
|
1057
1288
|
<script src="../../prettify.js"></script>
|