pure-orm 4.0.3 → 4.1.4
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 +1492 -1231
- package/coverage/coverage-final.json +103 -103
- package/coverage/lcov-report/dist/src/core.js.html +590 -383
- 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 +11 -11
- 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 +18 -18
- 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 +841 -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 +5 -5
- 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 +13 -13
- 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 +2134 -1989
- package/dist/src/core.d.ts +6 -0
- package/dist/src/core.js +258 -189
- package/dist/src/core.spec.js +413 -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 +485 -2
- package/src/core.ts +369 -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,31 +20,31 @@
|
|
|
20
20
|
</h1>
|
|
21
21
|
<div class='clearfix'>
|
|
22
22
|
<div class='fl pad1y space-right2'>
|
|
23
|
-
<span class="strong">
|
|
23
|
+
<span class="strong">100% </span>
|
|
24
24
|
<span class="quiet">Statements</span>
|
|
25
|
-
<span class='fraction'>
|
|
25
|
+
<span class='fraction'>154/154</span>
|
|
26
26
|
</div>
|
|
27
27
|
<div class='fl pad1y space-right2'>
|
|
28
|
-
<span class="strong">
|
|
28
|
+
<span class="strong">88.89% </span>
|
|
29
29
|
<span class="quiet">Branches</span>
|
|
30
|
-
<span class='fraction'>
|
|
30
|
+
<span class='fraction'>24/27</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'>17/17</span>
|
|
36
36
|
</div>
|
|
37
37
|
<div class='fl pad1y space-right2'>
|
|
38
|
-
<span class="strong">
|
|
38
|
+
<span class="strong">100% </span>
|
|
39
39
|
<span class="quiet">Lines</span>
|
|
40
|
-
<span class='fraction'>
|
|
40
|
+
<span class='fraction'>148/148</span>
|
|
41
41
|
</div>
|
|
42
42
|
</div>
|
|
43
43
|
<p class="quiet">
|
|
44
44
|
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
45
45
|
</p>
|
|
46
46
|
</div>
|
|
47
|
-
<div class='status-line
|
|
47
|
+
<div class='status-line high'></div>
|
|
48
48
|
<pre><table class="coverage">
|
|
49
49
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
50
50
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -392,7 +392,28 @@
|
|
|
392
392
|
<a name='L344'></a><a href='#L344'>344</a>
|
|
393
393
|
<a name='L345'></a><a href='#L345'>345</a>
|
|
394
394
|
<a name='L346'></a><a href='#L346'>346</a>
|
|
395
|
-
<a name='L347'></a><a href='#L347'>347</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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
396
417
|
<span class="cline-any cline-neutral"> </span>
|
|
397
418
|
<span class="cline-any cline-neutral"> </span>
|
|
398
419
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -456,269 +477,290 @@
|
|
|
456
477
|
<span class="cline-any cline-neutral"> </span>
|
|
457
478
|
<span class="cline-any cline-neutral"> </span>
|
|
458
479
|
<span class="cline-any cline-neutral"> </span>
|
|
459
|
-
<span class="cline-any cline-yes">
|
|
460
|
-
<span class="cline-any cline-neutral"> </span>
|
|
461
|
-
<span class="cline-any cline-neutral"> </span>
|
|
462
|
-
<span class="cline-any cline-yes">6x</span>
|
|
463
|
-
<span class="cline-any cline-yes">6x</span>
|
|
464
|
-
<span class="cline-any cline-neutral"> </span>
|
|
465
|
-
<span class="cline-any cline-no"> </span>
|
|
466
|
-
<span class="cline-any cline-neutral"> </span>
|
|
467
|
-
<span class="cline-any cline-neutral"> </span>
|
|
480
|
+
<span class="cline-any cline-yes">41x</span>
|
|
468
481
|
<span class="cline-any cline-neutral"> </span>
|
|
469
482
|
<span class="cline-any cline-neutral"> </span>
|
|
470
|
-
<span class="cline-any cline-
|
|
471
|
-
<span class="cline-any cline-
|
|
472
|
-
<span class="cline-any cline-neutral"> </span>
|
|
473
|
-
<span class="cline-any cline-neutral"> </span>
|
|
474
|
-
<span class="cline-any cline-yes">6x</span>
|
|
475
|
-
<span class="cline-any cline-neutral"> </span>
|
|
483
|
+
<span class="cline-any cline-yes">41x</span>
|
|
484
|
+
<span class="cline-any cline-yes">40x</span>
|
|
476
485
|
<span class="cline-any cline-neutral"> </span>
|
|
477
486
|
<span class="cline-any cline-yes">1x</span>
|
|
478
487
|
<span class="cline-any cline-neutral"> </span>
|
|
479
488
|
<span class="cline-any cline-neutral"> </span>
|
|
480
489
|
<span class="cline-any cline-neutral"> </span>
|
|
481
|
-
<span class="cline-any cline-yes">24x</span>
|
|
482
|
-
<span class="cline-any cline-neutral"> </span>
|
|
483
490
|
<span class="cline-any cline-neutral"> </span>
|
|
484
491
|
<span class="cline-any cline-neutral"> </span>
|
|
485
492
|
<span class="cline-any cline-neutral"> </span>
|
|
486
493
|
<span class="cline-any cline-neutral"> </span>
|
|
487
|
-
<span class="cline-any cline-yes">4x</span>
|
|
488
494
|
<span class="cline-any cline-neutral"> </span>
|
|
489
|
-
<span class="cline-any cline-yes">1x</span>
|
|
490
495
|
<span class="cline-any cline-neutral"> </span>
|
|
491
496
|
<span class="cline-any cline-neutral"> </span>
|
|
492
|
-
<span class="cline-any cline-yes">24x</span>
|
|
493
497
|
<span class="cline-any cline-neutral"> </span>
|
|
494
|
-
<span class="cline-any cline-yes">24x</span>
|
|
495
|
-
<span class="cline-any cline-yes">1x</span>
|
|
496
|
-
<span class="cline-any cline-yes">4x</span>
|
|
497
498
|
<span class="cline-any cline-neutral"> </span>
|
|
498
|
-
<span class="cline-any cline-yes">1x</span>
|
|
499
499
|
<span class="cline-any cline-neutral"> </span>
|
|
500
500
|
<span class="cline-any cline-neutral"> </span>
|
|
501
|
-
<span class="cline-any cline-yes">6x</span>
|
|
502
501
|
<span class="cline-any cline-neutral"> </span>
|
|
502
|
+
<span class="cline-any cline-yes">40x</span>
|
|
503
|
+
<span class="cline-any cline-yes">40x</span>
|
|
504
|
+
<span class="cline-any cline-yes">23x</span>
|
|
505
|
+
<span class="cline-any cline-yes">23x</span>
|
|
506
|
+
<span class="cline-any cline-yes">23x</span>
|
|
507
|
+
<span class="cline-any cline-yes">23x</span>
|
|
508
|
+
<span class="cline-any cline-yes">23x</span>
|
|
509
|
+
<span class="cline-any cline-yes">23x</span>
|
|
510
|
+
<span class="cline-any cline-yes">23x</span>
|
|
511
|
+
<span class="cline-any cline-yes">552x</span>
|
|
512
|
+
<span class="cline-any cline-yes">552x</span>
|
|
513
|
+
<span class="cline-any cline-yes">552x</span>
|
|
514
|
+
<span class="cline-any cline-yes">552x</span>
|
|
515
|
+
<span class="cline-any cline-yes">552x</span>
|
|
503
516
|
<span class="cline-any cline-neutral"> </span>
|
|
517
|
+
<span class="cline-any cline-yes">23x</span>
|
|
504
518
|
<span class="cline-any cline-neutral"> </span>
|
|
505
|
-
<span class="cline-any cline-yes">1x</span>
|
|
506
519
|
<span class="cline-any cline-neutral"> </span>
|
|
507
520
|
<span class="cline-any cline-neutral"> </span>
|
|
508
521
|
<span class="cline-any cline-neutral"> </span>
|
|
509
|
-
<span class="cline-any cline-yes">24x</span>
|
|
510
522
|
<span class="cline-any cline-neutral"> </span>
|
|
523
|
+
<span class="cline-any cline-yes">23x</span>
|
|
511
524
|
<span class="cline-any cline-neutral"> </span>
|
|
525
|
+
<span class="cline-any cline-yes">23x</span>
|
|
512
526
|
<span class="cline-any cline-neutral"> </span>
|
|
513
527
|
<span class="cline-any cline-neutral"> </span>
|
|
528
|
+
<span class="cline-any cline-yes">40x</span>
|
|
514
529
|
<span class="cline-any cline-neutral"> </span>
|
|
515
530
|
<span class="cline-any cline-neutral"> </span>
|
|
516
|
-
<span class="cline-any cline-yes">
|
|
531
|
+
<span class="cline-any cline-yes">5x</span>
|
|
532
|
+
<span class="cline-any cline-yes">5x</span>
|
|
533
|
+
<span class="cline-any cline-yes">5x</span>
|
|
534
|
+
<span class="cline-any cline-yes">5x</span>
|
|
535
|
+
<span class="cline-any cline-yes">5x</span>
|
|
536
|
+
<span class="cline-any cline-yes">5x</span>
|
|
537
|
+
<span class="cline-any cline-yes">5x</span>
|
|
538
|
+
<span class="cline-any cline-yes">5x</span>
|
|
539
|
+
<span class="cline-any cline-yes">120x</span>
|
|
540
|
+
<span class="cline-any cline-yes">120x</span>
|
|
541
|
+
<span class="cline-any cline-yes">12x</span>
|
|
542
|
+
<span class="cline-any cline-yes">7x</span>
|
|
517
543
|
<span class="cline-any cline-neutral"> </span>
|
|
518
|
-
<span class="cline-any cline-yes">
|
|
519
|
-
<span class="cline-any cline-yes">
|
|
520
|
-
<span class="cline-any cline-yes">
|
|
544
|
+
<span class="cline-any cline-yes">12x</span>
|
|
545
|
+
<span class="cline-any cline-yes">12x</span>
|
|
546
|
+
<span class="cline-any cline-yes">12x</span>
|
|
547
|
+
<span class="cline-any cline-yes">12x</span>
|
|
521
548
|
<span class="cline-any cline-neutral"> </span>
|
|
522
549
|
<span class="cline-any cline-neutral"> </span>
|
|
523
|
-
<span class="cline-any cline-yes">
|
|
550
|
+
<span class="cline-any cline-yes">5x</span>
|
|
524
551
|
<span class="cline-any cline-neutral"> </span>
|
|
525
|
-
<span class="cline-any cline-yes">24x</span>
|
|
526
|
-
<span class="cline-any cline-yes">1x</span>
|
|
527
|
-
<span class="cline-any cline-yes">1x</span>
|
|
528
552
|
<span class="cline-any cline-neutral"> </span>
|
|
553
|
+
<span class="cline-any cline-yes">40x</span>
|
|
529
554
|
<span class="cline-any cline-neutral"> </span>
|
|
530
|
-
<span class="cline-any cline-yes">6x</span>
|
|
531
555
|
<span class="cline-any cline-neutral"> </span>
|
|
532
556
|
<span class="cline-any cline-neutral"> </span>
|
|
533
|
-
<span class="cline-any cline-yes">
|
|
557
|
+
<span class="cline-any cline-yes">6x</span>
|
|
558
|
+
<span class="cline-any cline-yes">6x</span>
|
|
559
|
+
<span class="cline-any cline-yes">6x</span>
|
|
560
|
+
<span class="cline-any cline-yes">6x</span>
|
|
561
|
+
<span class="cline-any cline-yes">6x</span>
|
|
562
|
+
<span class="cline-any cline-yes">6x</span>
|
|
563
|
+
<span class="cline-any cline-yes">6x</span>
|
|
564
|
+
<span class="cline-any cline-yes">144x</span>
|
|
565
|
+
<span class="cline-any cline-yes">144x</span>
|
|
566
|
+
<span class="cline-any cline-yes">13x</span>
|
|
567
|
+
<span class="cline-any cline-yes">7x</span>
|
|
534
568
|
<span class="cline-any cline-neutral"> </span>
|
|
569
|
+
<span class="cline-any cline-yes">13x</span>
|
|
570
|
+
<span class="cline-any cline-yes">13x</span>
|
|
571
|
+
<span class="cline-any cline-yes">13x</span>
|
|
535
572
|
<span class="cline-any cline-neutral"> </span>
|
|
536
|
-
<span class="cline-any cline-yes">24x</span>
|
|
537
573
|
<span class="cline-any cline-neutral"> </span>
|
|
574
|
+
<span class="cline-any cline-yes">6x</span>
|
|
575
|
+
<span class="cline-any cline-yes">6x</span>
|
|
576
|
+
<span class="cline-any cline-yes">6x</span>
|
|
538
577
|
<span class="cline-any cline-neutral"> </span>
|
|
539
578
|
<span class="cline-any cline-neutral"> </span>
|
|
579
|
+
<span class="cline-any cline-yes">40x</span>
|
|
540
580
|
<span class="cline-any cline-neutral"> </span>
|
|
541
581
|
<span class="cline-any cline-neutral"> </span>
|
|
542
|
-
<span class="cline-any cline-yes">
|
|
582
|
+
<span class="cline-any cline-yes">10x</span>
|
|
583
|
+
<span class="cline-any cline-yes">10x</span>
|
|
584
|
+
<span class="cline-any cline-yes">10x</span>
|
|
585
|
+
<span class="cline-any cline-yes">10x</span>
|
|
586
|
+
<span class="cline-any cline-yes">10x</span>
|
|
587
|
+
<span class="cline-any cline-yes">10x</span>
|
|
588
|
+
<span class="cline-any cline-yes">10x</span>
|
|
589
|
+
<span class="cline-any cline-yes">240x</span>
|
|
590
|
+
<span class="cline-any cline-yes">240x</span>
|
|
591
|
+
<span class="cline-any cline-yes">14x</span>
|
|
543
592
|
<span class="cline-any cline-yes">4x</span>
|
|
544
593
|
<span class="cline-any cline-neutral"> </span>
|
|
545
|
-
<span class="cline-any cline-yes">
|
|
594
|
+
<span class="cline-any cline-yes">14x</span>
|
|
595
|
+
<span class="cline-any cline-yes">14x</span>
|
|
596
|
+
<span class="cline-any cline-yes">14x</span>
|
|
546
597
|
<span class="cline-any cline-neutral"> </span>
|
|
547
598
|
<span class="cline-any cline-neutral"> </span>
|
|
548
|
-
<span class="cline-any cline-yes">
|
|
599
|
+
<span class="cline-any cline-yes">10x</span>
|
|
549
600
|
<span class="cline-any cline-neutral"> </span>
|
|
550
601
|
<span class="cline-any cline-neutral"> </span>
|
|
551
602
|
<span class="cline-any cline-neutral"> </span>
|
|
552
|
-
<span class="cline-any cline-yes">24x</span>
|
|
553
|
-
<span class="cline-any cline-yes">1x</span>
|
|
554
603
|
<span class="cline-any cline-neutral"> </span>
|
|
604
|
+
<span class="cline-any cline-yes">40x</span>
|
|
555
605
|
<span class="cline-any cline-neutral"> </span>
|
|
556
606
|
<span class="cline-any cline-neutral"> </span>
|
|
607
|
+
<span class="cline-any cline-yes">2x</span>
|
|
608
|
+
<span class="cline-any cline-yes">2x</span>
|
|
609
|
+
<span class="cline-any cline-yes">2x</span>
|
|
610
|
+
<span class="cline-any cline-yes">2x</span>
|
|
611
|
+
<span class="cline-any cline-yes">2x</span>
|
|
612
|
+
<span class="cline-any cline-yes">2x</span>
|
|
613
|
+
<span class="cline-any cline-yes">2x</span>
|
|
614
|
+
<span class="cline-any cline-yes">48x</span>
|
|
615
|
+
<span class="cline-any cline-yes">48x</span>
|
|
616
|
+
<span class="cline-any cline-yes">5x</span>
|
|
617
|
+
<span class="cline-any cline-yes">3x</span>
|
|
557
618
|
<span class="cline-any cline-neutral"> </span>
|
|
558
|
-
<span class="cline-any cline-yes">
|
|
559
|
-
<span class="cline-any cline-
|
|
560
|
-
<span class="cline-any cline-
|
|
561
|
-
<span class="cline-any cline-yes">1x</span>
|
|
562
|
-
<span class="cline-any cline-neutral"> </span>
|
|
563
|
-
<span class="cline-any cline-neutral"> </span>
|
|
564
|
-
<span class="cline-any cline-yes">24x</span>
|
|
565
|
-
<span class="cline-any cline-neutral"> </span>
|
|
566
|
-
<span class="cline-any cline-neutral"> </span>
|
|
619
|
+
<span class="cline-any cline-yes">5x</span>
|
|
620
|
+
<span class="cline-any cline-yes">5x</span>
|
|
621
|
+
<span class="cline-any cline-yes">5x</span>
|
|
567
622
|
<span class="cline-any cline-neutral"> </span>
|
|
568
623
|
<span class="cline-any cline-neutral"> </span>
|
|
624
|
+
<span class="cline-any cline-yes">2x</span>
|
|
569
625
|
<span class="cline-any cline-neutral"> </span>
|
|
570
|
-
<span class="cline-any cline-yes">24x</span>
|
|
571
|
-
<span class="cline-any cline-yes">4x</span>
|
|
572
626
|
<span class="cline-any cline-neutral"> </span>
|
|
573
|
-
<span class="cline-any cline-yes">
|
|
627
|
+
<span class="cline-any cline-yes">40x</span>
|
|
628
|
+
<span class="cline-any cline-yes">3x</span>
|
|
629
|
+
<span class="cline-any cline-yes">3x</span>
|
|
630
|
+
<span class="cline-any cline-yes">3x</span>
|
|
631
|
+
<span class="cline-any cline-yes">3x</span>
|
|
632
|
+
<span class="cline-any cline-yes">6x</span>
|
|
633
|
+
<span class="cline-any cline-yes">6x</span>
|
|
634
|
+
<span class="cline-any cline-yes">6x</span>
|
|
574
635
|
<span class="cline-any cline-neutral"> </span>
|
|
575
636
|
<span class="cline-any cline-neutral"> </span>
|
|
576
|
-
<span class="cline-any cline-yes">
|
|
637
|
+
<span class="cline-any cline-yes">3x</span>
|
|
577
638
|
<span class="cline-any cline-neutral"> </span>
|
|
578
639
|
<span class="cline-any cline-neutral"> </span>
|
|
640
|
+
<span class="cline-any cline-yes">40x</span>
|
|
641
|
+
<span class="cline-any cline-yes">5x</span>
|
|
642
|
+
<span class="cline-any cline-yes">5x</span>
|
|
643
|
+
<span class="cline-any cline-yes">5x</span>
|
|
579
644
|
<span class="cline-any cline-neutral"> </span>
|
|
580
|
-
<span class="cline-any cline-yes">24x</span>
|
|
581
645
|
<span class="cline-any cline-neutral"> </span>
|
|
582
646
|
<span class="cline-any cline-neutral"> </span>
|
|
583
|
-
<span class="cline-any cline-yes">4x</span>
|
|
584
647
|
<span class="cline-any cline-neutral"> </span>
|
|
648
|
+
<span class="cline-any cline-yes">40x</span>
|
|
585
649
|
<span class="cline-any cline-neutral"> </span>
|
|
586
|
-
<span class="cline-any cline-yes">1x</span>
|
|
587
650
|
<span class="cline-any cline-neutral"> </span>
|
|
588
651
|
<span class="cline-any cline-neutral"> </span>
|
|
589
652
|
<span class="cline-any cline-yes">6x</span>
|
|
590
|
-
<span class="cline-any cline-no"> </span>
|
|
591
|
-
<span class="cline-any cline-no"> </span>
|
|
592
|
-
<span class="cline-any cline-neutral"> </span>
|
|
593
|
-
<span class="cline-any cline-no"> </span>
|
|
594
|
-
<span class="cline-any cline-neutral"> </span>
|
|
595
|
-
<span class="cline-any cline-neutral"> </span>
|
|
596
|
-
<span class="cline-any cline-neutral"> </span>
|
|
597
|
-
<span class="cline-any cline-no"> </span>
|
|
598
|
-
<span class="cline-any cline-neutral"> </span>
|
|
599
|
-
<span class="cline-any cline-no"> </span>
|
|
600
|
-
<span class="cline-any cline-no"> </span>
|
|
601
|
-
<span class="cline-any cline-neutral"> </span>
|
|
602
|
-
<span class="cline-any cline-neutral"> </span>
|
|
603
|
-
<span class="cline-any cline-neutral"> </span>
|
|
604
|
-
<span class="cline-any cline-no"> </span>
|
|
605
|
-
<span class="cline-any cline-neutral"> </span>
|
|
606
|
-
<span class="cline-any cline-neutral"> </span>
|
|
607
653
|
<span class="cline-any cline-yes">6x</span>
|
|
608
|
-
<span class="cline-any cline-yes">4x</span>
|
|
609
|
-
<span class="cline-any cline-neutral"> </span>
|
|
610
|
-
<span class="cline-any cline-neutral"> </span>
|
|
611
|
-
<span class="cline-any cline-neutral"> </span>
|
|
612
|
-
<span class="cline-any cline-neutral"> </span>
|
|
613
|
-
<span class="cline-any cline-neutral"> </span>
|
|
614
|
-
<span class="cline-any cline-neutral"> </span>
|
|
615
654
|
<span class="cline-any cline-yes">6x</span>
|
|
616
655
|
<span class="cline-any cline-neutral"> </span>
|
|
617
656
|
<span class="cline-any cline-neutral"> </span>
|
|
618
657
|
<span class="cline-any cline-neutral"> </span>
|
|
619
|
-
<span class="cline-any cline-yes">3x</span>
|
|
620
|
-
<span class="cline-any cline-neutral"> </span>
|
|
621
|
-
<span class="cline-any cline-neutral"> </span>
|
|
622
658
|
<span class="cline-any cline-neutral"> </span>
|
|
623
659
|
<span class="cline-any cline-neutral"> </span>
|
|
624
660
|
<span class="cline-any cline-neutral"> </span>
|
|
625
661
|
<span class="cline-any cline-neutral"> </span>
|
|
662
|
+
<span class="cline-any cline-yes">40x</span>
|
|
663
|
+
<span class="cline-any cline-yes">2x</span>
|
|
664
|
+
<span class="cline-any cline-yes">2x</span>
|
|
665
|
+
<span class="cline-any cline-yes">2x</span>
|
|
626
666
|
<span class="cline-any cline-neutral"> </span>
|
|
627
667
|
<span class="cline-any cline-neutral"> </span>
|
|
628
668
|
<span class="cline-any cline-neutral"> </span>
|
|
629
|
-
<span class="cline-any cline-yes">6x</span>
|
|
630
|
-
<span class="cline-any cline-no"> </span>
|
|
631
|
-
<span class="cline-any cline-no"> </span>
|
|
632
669
|
<span class="cline-any cline-neutral"> </span>
|
|
670
|
+
<span class="cline-any cline-yes">2x</span>
|
|
633
671
|
<span class="cline-any cline-neutral"> </span>
|
|
634
672
|
<span class="cline-any cline-neutral"> </span>
|
|
635
673
|
<span class="cline-any cline-neutral"> </span>
|
|
636
|
-
<span class="cline-any cline-
|
|
674
|
+
<span class="cline-any cline-yes">40x</span>
|
|
637
675
|
<span class="cline-any cline-neutral"> </span>
|
|
638
676
|
<span class="cline-any cline-neutral"> </span>
|
|
639
677
|
<span class="cline-any cline-neutral"> </span>
|
|
640
|
-
<span class="cline-any cline-yes">
|
|
678
|
+
<span class="cline-any cline-yes">2x</span>
|
|
679
|
+
<span class="cline-any cline-yes">2x</span>
|
|
680
|
+
<span class="cline-any cline-yes">2x</span>
|
|
641
681
|
<span class="cline-any cline-neutral"> </span>
|
|
642
682
|
<span class="cline-any cline-neutral"> </span>
|
|
643
683
|
<span class="cline-any cline-neutral"> </span>
|
|
644
|
-
<span class="cline-any cline-no"> </span>
|
|
645
|
-
<span class="cline-any cline-no"> </span>
|
|
646
684
|
<span class="cline-any cline-neutral"> </span>
|
|
647
685
|
<span class="cline-any cline-neutral"> </span>
|
|
648
686
|
<span class="cline-any cline-neutral"> </span>
|
|
649
687
|
<span class="cline-any cline-neutral"> </span>
|
|
650
688
|
<span class="cline-any cline-neutral"> </span>
|
|
689
|
+
<span class="cline-any cline-yes">2x</span>
|
|
651
690
|
<span class="cline-any cline-neutral"> </span>
|
|
652
691
|
<span class="cline-any cline-neutral"> </span>
|
|
653
|
-
<span class="cline-any cline-no"> </span>
|
|
654
692
|
<span class="cline-any cline-neutral"> </span>
|
|
655
|
-
<span class="cline-any cline-
|
|
656
|
-
<span class="cline-any cline-
|
|
657
|
-
<span class="cline-any cline-yes">
|
|
658
|
-
<span class="cline-any cline-
|
|
659
|
-
<span class="cline-any cline-no"> </span>
|
|
693
|
+
<span class="cline-any cline-yes">40x</span>
|
|
694
|
+
<span class="cline-any cline-yes">1x</span>
|
|
695
|
+
<span class="cline-any cline-yes">1x</span>
|
|
696
|
+
<span class="cline-any cline-yes">1x</span>
|
|
660
697
|
<span class="cline-any cline-neutral"> </span>
|
|
661
698
|
<span class="cline-any cline-neutral"> </span>
|
|
662
699
|
<span class="cline-any cline-neutral"> </span>
|
|
663
|
-
<span class="cline-any cline-
|
|
700
|
+
<span class="cline-any cline-yes">1x</span>
|
|
664
701
|
<span class="cline-any cline-neutral"> </span>
|
|
665
702
|
<span class="cline-any cline-neutral"> </span>
|
|
666
|
-
<span class="cline-any cline-yes">
|
|
667
|
-
<span class="cline-any cline-
|
|
668
|
-
<span class="cline-any cline-
|
|
703
|
+
<span class="cline-any cline-yes">40x</span>
|
|
704
|
+
<span class="cline-any cline-yes">1x</span>
|
|
705
|
+
<span class="cline-any cline-yes">1x</span>
|
|
706
|
+
<span class="cline-any cline-yes">1x</span>
|
|
669
707
|
<span class="cline-any cline-neutral"> </span>
|
|
670
708
|
<span class="cline-any cline-neutral"> </span>
|
|
671
709
|
<span class="cline-any cline-neutral"> </span>
|
|
672
|
-
<span class="cline-any cline-
|
|
710
|
+
<span class="cline-any cline-yes">1x</span>
|
|
673
711
|
<span class="cline-any cline-neutral"> </span>
|
|
674
712
|
<span class="cline-any cline-neutral"> </span>
|
|
675
|
-
<span class="cline-any cline-yes">
|
|
676
|
-
<span class="cline-any cline-
|
|
677
|
-
<span class="cline-any cline-
|
|
713
|
+
<span class="cline-any cline-yes">40x</span>
|
|
714
|
+
<span class="cline-any cline-yes">1x</span>
|
|
715
|
+
<span class="cline-any cline-yes">1x</span>
|
|
716
|
+
<span class="cline-any cline-yes">1x</span>
|
|
678
717
|
<span class="cline-any cline-neutral"> </span>
|
|
679
718
|
<span class="cline-any cline-neutral"> </span>
|
|
680
719
|
<span class="cline-any cline-neutral"> </span>
|
|
681
720
|
<span class="cline-any cline-neutral"> </span>
|
|
682
|
-
<span class="cline-any cline-
|
|
721
|
+
<span class="cline-any cline-yes">1x</span>
|
|
683
722
|
<span class="cline-any cline-neutral"> </span>
|
|
684
723
|
<span class="cline-any cline-neutral"> </span>
|
|
685
|
-
<span class="cline-any cline-yes">
|
|
724
|
+
<span class="cline-any cline-yes">40x</span>
|
|
686
725
|
<span class="cline-any cline-neutral"> </span>
|
|
687
726
|
<span class="cline-any cline-neutral"> </span>
|
|
688
|
-
<span class="cline-any cline-
|
|
689
|
-
<span class="cline-any cline-
|
|
727
|
+
<span class="cline-any cline-yes">2x</span>
|
|
728
|
+
<span class="cline-any cline-yes">2x</span>
|
|
729
|
+
<span class="cline-any cline-yes">2x</span>
|
|
690
730
|
<span class="cline-any cline-neutral"> </span>
|
|
691
731
|
<span class="cline-any cline-neutral"> </span>
|
|
692
732
|
<span class="cline-any cline-neutral"> </span>
|
|
693
733
|
<span class="cline-any cline-neutral"> </span>
|
|
694
|
-
<span class="cline-any cline-
|
|
734
|
+
<span class="cline-any cline-yes">2x</span>
|
|
695
735
|
<span class="cline-any cline-neutral"> </span>
|
|
696
736
|
<span class="cline-any cline-neutral"> </span>
|
|
697
|
-
<span class="cline-any cline-yes">
|
|
737
|
+
<span class="cline-any cline-yes">40x</span>
|
|
698
738
|
<span class="cline-any cline-neutral"> </span>
|
|
699
739
|
<span class="cline-any cline-neutral"> </span>
|
|
700
|
-
<span class="cline-any cline-
|
|
701
|
-
<span class="cline-any cline-
|
|
740
|
+
<span class="cline-any cline-yes">2x</span>
|
|
741
|
+
<span class="cline-any cline-yes">2x</span>
|
|
742
|
+
<span class="cline-any cline-yes">2x</span>
|
|
702
743
|
<span class="cline-any cline-neutral"> </span>
|
|
703
744
|
<span class="cline-any cline-neutral"> </span>
|
|
704
745
|
<span class="cline-any cline-neutral"> </span>
|
|
705
746
|
<span class="cline-any cline-neutral"> </span>
|
|
706
|
-
<span class="cline-any cline-
|
|
747
|
+
<span class="cline-any cline-yes">2x</span>
|
|
707
748
|
<span class="cline-any cline-neutral"> </span>
|
|
708
749
|
<span class="cline-any cline-neutral"> </span>
|
|
709
|
-
<span class="cline-any cline-yes">
|
|
750
|
+
<span class="cline-any cline-yes">40x</span>
|
|
710
751
|
<span class="cline-any cline-neutral"> </span>
|
|
711
752
|
<span class="cline-any cline-neutral"> </span>
|
|
712
|
-
<span class="cline-any cline-
|
|
713
|
-
<span class="cline-any cline-
|
|
753
|
+
<span class="cline-any cline-yes">2x</span>
|
|
754
|
+
<span class="cline-any cline-yes">2x</span>
|
|
755
|
+
<span class="cline-any cline-yes">2x</span>
|
|
714
756
|
<span class="cline-any cline-neutral"> </span>
|
|
715
757
|
<span class="cline-any cline-neutral"> </span>
|
|
716
758
|
<span class="cline-any cline-neutral"> </span>
|
|
717
759
|
<span class="cline-any cline-neutral"> </span>
|
|
718
|
-
<span class="cline-any cline-
|
|
760
|
+
<span class="cline-any cline-yes">2x</span>
|
|
719
761
|
<span class="cline-any cline-neutral"> </span>
|
|
720
762
|
<span class="cline-any cline-neutral"> </span>
|
|
721
|
-
<span class="cline-any cline-yes">
|
|
763
|
+
<span class="cline-any cline-yes">40x</span>
|
|
722
764
|
<span class="cline-any cline-neutral"> </span>
|
|
723
765
|
<span class="cline-any cline-neutral"> </span>
|
|
724
766
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -767,7 +809,7 @@ export interface IPureORM extends ICoreIntegratedDriver {
|
|
|
767
809
|
) => Promise<T | void>;
|
|
768
810
|
getAllMatching: <T extends ICollection<IModel>>(model: IModel) => Promise<T>;
|
|
769
811
|
create: <T extends IModel>(model: T) => Promise<T>;
|
|
770
|
-
update: <T extends IModel>(model: T, options
|
|
812
|
+
update: <T extends IModel>(model: T, options?: { on: string }) => Promise<T>;
|
|
771
813
|
delete: <T extends IModel>(model: T) => Promise<void>;
|
|
772
814
|
deleteMatching: <T extends IModel>(model: T) => Promise<void>;
|
|
773
815
|
|
|
@@ -805,10 +847,10 @@ export const create = ({
|
|
|
805
847
|
const core = createCore({ entities: externalEntities });
|
|
806
848
|
|
|
807
849
|
let orm: ICoreIntegratedDriver;
|
|
808
|
-
|
|
850
|
+
if (db.$config.pgp) {
|
|
809
851
|
orm = createForPGP({ core, db, logError });
|
|
810
852
|
} else {
|
|
811
|
-
|
|
853
|
+
throw new Error(
|
|
812
854
|
`You're database driver is not yet supported. You can make a PR to add it, or use the \`createCore\` export which doesn't try to abstract over the database driver, and instead you pass the results of the database driver queries to it.`
|
|
813
855
|
);
|
|
814
856
|
}
|
|
@@ -816,31 +858,62 @@ export const create = ({
|
|
|
816
858
|
/* ------------------------------------------------------------------------*/
|
|
817
859
|
/* Helper Utilities for CRUD functions ------------------------------------*/
|
|
818
860
|
/* ------------------------------------------------------------------------*/
|
|
861
|
+
|
|
862
|
+
interface IOrmHelperPlan {
|
|
863
|
+
quotedColumns: Array<string>;
|
|
864
|
+
updateClausePrefixes: Array<string>;
|
|
865
|
+
wherePositionalPrefixes: Array<string>;
|
|
866
|
+
whereNamedPrefixes: Array<string>;
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
const helperPlanByEntity = new Map<any, IOrmHelperPlan>();
|
|
870
|
+
const getHelperPlan = (entity: any): IOrmHelperPlan => {
|
|
871
|
+
let plan = helperPlanByEntity.get(entity);
|
|
872
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (!plan) {
|
|
873
|
+
const quotedColumns = new Array(entity.columnNames.length);
|
|
874
|
+
const updateClausePrefixes = new Array(entity.columnNames.length);
|
|
875
|
+
const wherePositionalPrefixes = new Array(entity.columnNames.length);
|
|
876
|
+
const whereNamedPrefixes = new Array(entity.columnNames.length);
|
|
877
|
+
for (let i = 0; i < entity.columnNames.length; i++) {
|
|
878
|
+
const column = entity.columnNames[i];
|
|
879
|
+
quotedColumns[i] = `"${column}"`;
|
|
880
|
+
updateClausePrefixes[i] = `"${column}" = $`;
|
|
881
|
+
wherePositionalPrefixes[i] = `"${entity.tableName}"."${column}" = $`;
|
|
882
|
+
whereNamedPrefixes[i] = `"${entity.tableName}"."${column}" = $(`;
|
|
883
|
+
}
|
|
884
|
+
plan = {
|
|
885
|
+
quotedColumns,
|
|
886
|
+
updateClausePrefixes,
|
|
887
|
+
wherePositionalPrefixes,
|
|
888
|
+
whereNamedPrefixes
|
|
889
|
+
};
|
|
890
|
+
helperPlanByEntity.set(entity, plan);
|
|
891
|
+
}
|
|
892
|
+
return plan;
|
|
893
|
+
};
|
|
819
894
|
|
|
820
895
|
const getSqlInsertParts = (
|
|
821
896
|
model: IModel
|
|
822
897
|
): { columns: string; values: Array<string>; valuesVar: Array<string> } => {
|
|
823
|
-
const
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
)
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
(
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
(value: any, index: number) => `$${index + 1}`
|
|
843
|
-
);
|
|
898
|
+
const entity = orm.getEntityByModel(model);
|
|
899
|
+
const { columnNames, propertyNames } = entity;
|
|
900
|
+
const helperPlan = getHelperPlan(entity);
|
|
901
|
+
let columns = '';
|
|
902
|
+
const values: Array<any> = [];
|
|
903
|
+
const valuesVar: Array<string> = [];
|
|
904
|
+
let paramIndex = 1;
|
|
905
|
+
for (let i = 0; i < columnNames.length; i++) {
|
|
906
|
+
const val = model[propertyNames[i] as keyof typeof model];
|
|
907
|
+
if (val !== void 0) {
|
|
908
|
+
if (columns) {
|
|
909
|
+
columns += ', ';
|
|
910
|
+
}
|
|
911
|
+
columns += helperPlan.quotedColumns[i];
|
|
912
|
+
values.push(val);
|
|
913
|
+
valuesVar.push(`$${paramIndex}`);
|
|
914
|
+
paramIndex++;
|
|
915
|
+
}
|
|
916
|
+
}
|
|
844
917
|
return { columns, values, valuesVar };
|
|
845
918
|
};
|
|
846
919
|
|
|
@@ -848,54 +921,48 @@ export const create = ({
|
|
|
848
921
|
model: IModel,
|
|
849
922
|
on = 'id'
|
|
850
923
|
): { clause: string; idVar: string; values: Array<string> } => {
|
|
851
|
-
const
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
)
|
|
871
|
-
.filter((value: any) => value !== void 0);
|
|
872
|
-
const values = [..._values, model[on as keyof typeof model]];
|
|
924
|
+
const entity = orm.getEntityByModel(model);
|
|
925
|
+
const { columnNames, propertyNames } = entity;
|
|
926
|
+
const helperPlan = getHelperPlan(entity);
|
|
927
|
+
let clause = '';
|
|
928
|
+
const values: Array<any> = [];
|
|
929
|
+
let paramIndex = 1;
|
|
930
|
+
for (let i = 0; i < columnNames.length; i++) {
|
|
931
|
+
const val = model[propertyNames[i] as keyof typeof model];
|
|
932
|
+
if (val !== void 0) {
|
|
933
|
+
if (clause) {
|
|
934
|
+
clause += ', ';
|
|
935
|
+
}
|
|
936
|
+
clause += helperPlan.updateClausePrefixes[i] + paramIndex;
|
|
937
|
+
values.push(val);
|
|
938
|
+
paramIndex++;
|
|
939
|
+
}
|
|
940
|
+
}
|
|
941
|
+
const idVar = `$${paramIndex}`;
|
|
942
|
+
values.push(model[on as keyof typeof model]);
|
|
873
943
|
return { clause, idVar, values };
|
|
874
944
|
};
|
|
875
945
|
|
|
876
946
|
const getMatchingParts = (
|
|
877
947
|
model: IModel
|
|
878
948
|
): { whereClause: string; values: Array<string> } => {
|
|
879
|
-
const
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
)
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
: null
|
|
897
|
-
)
|
|
898
|
-
.filter((x: any) => x != null);
|
|
949
|
+
const entity = orm.getEntityByModel(model);
|
|
950
|
+
const { propertyNames, columnNames } = entity;
|
|
951
|
+
const helperPlan = getHelperPlan(entity);
|
|
952
|
+
const values: Array<any> = [];
|
|
953
|
+
let paramIndex = 1;
|
|
954
|
+
let whereClause = '';
|
|
955
|
+
for (let i = 0; i < propertyNames.length; i++) {
|
|
956
|
+
const val = model[propertyNames[i] as keyof typeof model];
|
|
957
|
+
if (val != null) {
|
|
958
|
+
if (whereClause) {
|
|
959
|
+
whereClause += ' AND ';
|
|
960
|
+
}
|
|
961
|
+
whereClause += helperPlan.wherePositionalPrefixes[i] + paramIndex;
|
|
962
|
+
values.push(val);
|
|
963
|
+
paramIndex++;
|
|
964
|
+
}
|
|
965
|
+
}
|
|
899
966
|
return { whereClause, values };
|
|
900
967
|
};
|
|
901
968
|
|
|
@@ -904,67 +971,54 @@ export const create = ({
|
|
|
904
971
|
const getMatchingPartsObject = (
|
|
905
972
|
model: IModel
|
|
906
973
|
): { whereClause: string; values: Array<string> } => {
|
|
907
|
-
const
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
)
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
: null
|
|
925
|
-
)
|
|
926
|
-
.filter((x: any) => x != null)
|
|
927
|
-
.reduce(
|
|
928
|
-
(accum: any, val: any, index: number) =>
|
|
929
|
-
Object.assign({}, accum, { [index + 1]: val }),
|
|
930
|
-
{}
|
|
931
|
-
);
|
|
974
|
+
const entity = orm.getEntityByModel(model);
|
|
975
|
+
const { propertyNames, columnNames } = entity;
|
|
976
|
+
const helperPlan = getHelperPlan(entity);
|
|
977
|
+
const values: any = {};
|
|
978
|
+
let paramIndex = 1;
|
|
979
|
+
let whereClause = '';
|
|
980
|
+
for (let i = 0; i < propertyNames.length; i++) {
|
|
981
|
+
const val = model[propertyNames[i] as keyof typeof model];
|
|
982
|
+
if (val != null) {
|
|
983
|
+
if (whereClause) {
|
|
984
|
+
whereClause += ' AND ';
|
|
985
|
+
}
|
|
986
|
+
whereClause += helperPlan.whereNamedPrefixes[i] + paramIndex + ')';
|
|
987
|
+
values[paramIndex] = val;
|
|
988
|
+
paramIndex++;
|
|
989
|
+
}
|
|
990
|
+
}
|
|
932
991
|
return { whereClause, values };
|
|
933
992
|
};
|
|
934
993
|
|
|
935
|
-
const getNewWith =
|
|
936
|
-
const Constructor =
|
|
937
|
-
const
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
<span class="cstat-no" title="statement not covered" > return data;</span>
|
|
947
|
-
},
|
|
948
|
-
{}
|
|
949
|
-
);
|
|
950
|
-
<span class="cstat-no" title="statement not covered" > return new Constructor(modelData);</span>
|
|
994
|
+
const getNewWith = (model: IModel, sqlColumns: any, values: any): IModel => {
|
|
995
|
+
const Constructor = model.constructor as any;
|
|
996
|
+
const entity = orm.getEntityByModel(model);
|
|
997
|
+
const modelData: any = {};
|
|
998
|
+
for (let i = 0; i < sqlColumns.length; i++) {
|
|
999
|
+
const propertyName = entity.columnToPropertyMap.get(sqlColumns[i]);
|
|
1000
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (propertyName) {
|
|
1001
|
+
modelData[propertyName] = values[i];
|
|
1002
|
+
}
|
|
1003
|
+
}
|
|
1004
|
+
return new Constructor(modelData);
|
|
951
1005
|
};
|
|
952
1006
|
|
|
953
1007
|
const getValueBySqlColumn = (model: IModel, sqlColumn: string): string => {
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
1008
|
+
const entity = orm.getEntityByModel(model);
|
|
1009
|
+
const propertyName = entity.columnToPropertyMap.get(sqlColumn);
|
|
1010
|
+
return propertyName
|
|
1011
|
+
? model[propertyName as keyof typeof model]
|
|
1012
|
+
: (<span class="branch-1 cbranch-no" title="branch not covered" >undefined as any)</span>;
|
|
959
1013
|
};
|
|
960
1014
|
|
|
961
1015
|
const getSqlColumnForPropertyName = (
|
|
962
1016
|
model: IModel,
|
|
963
1017
|
propertyName: string
|
|
964
1018
|
): string => {
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
1019
|
+
const entity = orm.getEntityByModel(model);
|
|
1020
|
+
const column = entity.propertyToColumnMap.get(propertyName);
|
|
1021
|
+
return column as string;
|
|
968
1022
|
};
|
|
969
1023
|
|
|
970
1024
|
/* ------------------------------------------------------------------------*/
|
|
@@ -972,96 +1026,105 @@ export const create = ({
|
|
|
972
1026
|
/* ------------------------------------------------------------------------*/
|
|
973
1027
|
|
|
974
1028
|
// Standard create
|
|
975
|
-
const create =
|
|
976
|
-
const
|
|
977
|
-
const
|
|
978
|
-
|
|
1029
|
+
const create = <T extends IModel>(model: T): Promise<T> => {
|
|
1030
|
+
const entity = orm.getEntityByModel(model);
|
|
1031
|
+
const { columns, values, valuesVar } = getSqlInsertParts(model);
|
|
1032
|
+
const query = `
|
|
1033
|
+
INSERT INTO "${entity.tableName}" ( ${columns} )
|
|
979
1034
|
VALUES ( ${valuesVar} )
|
|
980
|
-
RETURNING ${
|
|
1035
|
+
RETURNING ${entity.selectColumnsClause};
|
|
981
1036
|
`;
|
|
982
|
-
|
|
1037
|
+
return orm.one<T>(query, values);
|
|
983
1038
|
};
|
|
984
1039
|
|
|
985
1040
|
// Standard update
|
|
986
|
-
const update =
|
|
1041
|
+
const update = <T extends IModel>(
|
|
987
1042
|
model: T,
|
|
988
|
-
{ on =
|
|
1043
|
+
{ on = 'id' } = {}
|
|
989
1044
|
): Promise<T> => {
|
|
990
|
-
const
|
|
991
|
-
const
|
|
992
|
-
|
|
1045
|
+
const entity = orm.getEntityByModel(model);
|
|
1046
|
+
const { clause, idVar, values } = getSqlUpdateParts(model, on);
|
|
1047
|
+
const query = `
|
|
1048
|
+
UPDATE "${entity.tableName}"
|
|
993
1049
|
SET ${clause}
|
|
994
|
-
WHERE "${
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
1050
|
+
WHERE "${entity.tableName}".${getSqlColumnForPropertyName(
|
|
1051
|
+
model,
|
|
1052
|
+
on
|
|
1053
|
+
)} = ${idVar}
|
|
1054
|
+
RETURNING ${entity.selectColumnsClause};
|
|
998
1055
|
`;
|
|
999
|
-
|
|
1056
|
+
return orm.one<T>(query, values);
|
|
1000
1057
|
};
|
|
1001
1058
|
|
|
1002
1059
|
// Standard delete
|
|
1003
|
-
const _delete =
|
|
1004
|
-
const
|
|
1005
|
-
const
|
|
1006
|
-
|
|
1007
|
-
|
|
1060
|
+
const _delete = <T extends IModel>(model: T): Promise<void> => {
|
|
1061
|
+
const entity = orm.getEntityByModel(model);
|
|
1062
|
+
const id = (model as any).id;
|
|
1063
|
+
const query = `
|
|
1064
|
+
DELETE FROM "${entity.tableName}"
|
|
1065
|
+
WHERE "${entity.tableName}".id = $(id)
|
|
1008
1066
|
`;
|
|
1009
|
-
|
|
1067
|
+
return orm.none(query, { id });
|
|
1010
1068
|
};
|
|
1011
1069
|
|
|
1012
|
-
const deleteMatching =
|
|
1013
|
-
const
|
|
1014
|
-
const
|
|
1015
|
-
|
|
1070
|
+
const deleteMatching = <T extends IModel>(model: T): Promise<void> => {
|
|
1071
|
+
const entity = orm.getEntityByModel(model);
|
|
1072
|
+
const { whereClause, values } = getMatchingParts(model);
|
|
1073
|
+
const query = `
|
|
1074
|
+
DELETE FROM "${entity.tableName}"
|
|
1016
1075
|
WHERE ${whereClause};
|
|
1017
1076
|
`;
|
|
1018
|
-
|
|
1077
|
+
return orm.none(query, values);
|
|
1019
1078
|
};
|
|
1020
1079
|
|
|
1021
|
-
const getMatching =
|
|
1022
|
-
const
|
|
1023
|
-
const
|
|
1024
|
-
|
|
1025
|
-
|
|
1080
|
+
const getMatching = <T extends IModel>(model: T): Promise<T> => {
|
|
1081
|
+
const entity = orm.getEntityByModel(model);
|
|
1082
|
+
const { whereClause, values } = getMatchingParts(model);
|
|
1083
|
+
const query = `
|
|
1084
|
+
SELECT ${entity.selectColumnsClause}
|
|
1085
|
+
FROM "${entity.tableName}"
|
|
1026
1086
|
WHERE ${whereClause};
|
|
1027
1087
|
`;
|
|
1028
|
-
|
|
1088
|
+
return orm.one<T>(query, values);
|
|
1029
1089
|
};
|
|
1030
1090
|
|
|
1031
|
-
const getOneOrNoneMatching =
|
|
1091
|
+
const getOneOrNoneMatching = <T extends IModel>(
|
|
1032
1092
|
model: T
|
|
1033
1093
|
): Promise<T | void> => {
|
|
1034
|
-
const
|
|
1035
|
-
const
|
|
1036
|
-
|
|
1037
|
-
|
|
1094
|
+
const entity = orm.getEntityByModel(model);
|
|
1095
|
+
const { whereClause, values } = getMatchingParts(model);
|
|
1096
|
+
const query = `
|
|
1097
|
+
SELECT ${entity.selectColumnsClause}
|
|
1098
|
+
FROM "${entity.tableName}"
|
|
1038
1099
|
WHERE ${whereClause};
|
|
1039
1100
|
`;
|
|
1040
|
-
|
|
1101
|
+
return orm.oneOrNone<T>(query, values);
|
|
1041
1102
|
};
|
|
1042
1103
|
|
|
1043
|
-
const getAnyMatching =
|
|
1104
|
+
const getAnyMatching = <T extends ICollection<IModel>>(
|
|
1044
1105
|
model: IModel
|
|
1045
1106
|
): Promise<T | void> => {
|
|
1046
|
-
const
|
|
1047
|
-
const
|
|
1048
|
-
|
|
1049
|
-
|
|
1107
|
+
const entity = orm.getEntityByModel(model);
|
|
1108
|
+
const { whereClause, values } = getMatchingParts(model);
|
|
1109
|
+
const query = `
|
|
1110
|
+
SELECT ${entity.selectColumnsClause}
|
|
1111
|
+
FROM "${entity.tableName}"
|
|
1050
1112
|
WHERE ${whereClause};
|
|
1051
1113
|
`;
|
|
1052
|
-
|
|
1114
|
+
return orm.any<T>(query, values);
|
|
1053
1115
|
};
|
|
1054
1116
|
|
|
1055
|
-
const getAllMatching =
|
|
1117
|
+
const getAllMatching = <T extends ICollection<IModel>>(
|
|
1056
1118
|
model: IModel
|
|
1057
1119
|
): Promise<T> => {
|
|
1058
|
-
const
|
|
1059
|
-
const
|
|
1060
|
-
|
|
1061
|
-
|
|
1120
|
+
const entity = orm.getEntityByModel(model);
|
|
1121
|
+
const { whereClause, values } = getMatchingParts(model);
|
|
1122
|
+
const query = `
|
|
1123
|
+
SELECT ${entity.selectColumnsClause}
|
|
1124
|
+
FROM "${entity.tableName}"
|
|
1062
1125
|
WHERE ${whereClause};
|
|
1063
1126
|
`;
|
|
1064
|
-
|
|
1127
|
+
return orm.many<T>(query, values);
|
|
1065
1128
|
};
|
|
1066
1129
|
|
|
1067
1130
|
return Object.assign({}, orm, {
|
|
@@ -1090,7 +1153,7 @@ export const create = ({
|
|
|
1090
1153
|
</div><!-- /wrapper -->
|
|
1091
1154
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1092
1155
|
Code coverage
|
|
1093
|
-
generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Sun
|
|
1156
|
+
generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Sun Mar 01 2026 17:10:47 GMT-0500 (Eastern Standard Time)
|
|
1094
1157
|
</div>
|
|
1095
1158
|
</div>
|
|
1096
1159
|
<script src="../prettify.js"></script>
|