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.
Files changed (204) hide show
  1. package/.benchmarks/bench-core-baseline.json +303 -0
  2. package/README.md +0 -7
  3. package/babel.config.js +4 -1
  4. package/coverage/clover.xml +1492 -1231
  5. package/coverage/coverage-final.json +103 -103
  6. package/coverage/lcov-report/dist/src/core.js.html +590 -383
  7. package/coverage/lcov-report/dist/src/driver-integrations/index.html +20 -20
  8. package/coverage/lcov-report/dist/src/driver-integrations/pgp.js.html +52 -52
  9. package/coverage/lcov-report/dist/src/index.html +28 -28
  10. package/coverage/lcov-report/dist/src/index.js.html +2 -2
  11. package/coverage/lcov-report/dist/src/orm.js.html +392 -209
  12. package/coverage/lcov-report/dist/test-utils/blog/entities.js.html +1 -1
  13. package/coverage/lcov-report/dist/test-utils/blog/index.html +1 -1
  14. package/coverage/lcov-report/dist/test-utils/blog/models/article.js.html +15 -15
  15. package/coverage/lcov-report/dist/test-utils/blog/models/article_tag.js.html +2 -2
  16. package/coverage/lcov-report/dist/test-utils/blog/models/index.html +1 -1
  17. package/coverage/lcov-report/dist/test-utils/blog/models/person.js.html +13 -13
  18. package/coverage/lcov-report/dist/test-utils/blog/models/tag.js.html +1 -1
  19. package/coverage/lcov-report/dist/test-utils/five/entities.js.html +1 -1
  20. package/coverage/lcov-report/dist/test-utils/five/index.html +1 -1
  21. package/coverage/lcov-report/dist/test-utils/five/models/index.html +1 -1
  22. package/coverage/lcov-report/dist/test-utils/five/models/line-item.js.html +4 -4
  23. package/coverage/lcov-report/dist/test-utils/five/models/order.js.html +3 -3
  24. package/coverage/lcov-report/dist/test-utils/five/models/parcel-event.js.html +6 -6
  25. package/coverage/lcov-report/dist/test-utils/five/models/parcel-line-item.js.html +7 -7
  26. package/coverage/lcov-report/dist/test-utils/five/models/parcel.js.html +2 -2
  27. package/coverage/lcov-report/dist/test-utils/fourteen/entities.js.html +1 -1
  28. package/coverage/lcov-report/dist/test-utils/fourteen/index.html +1 -1
  29. package/coverage/lcov-report/dist/test-utils/fourteen/models/customer.js.html +1 -1
  30. package/coverage/lcov-report/dist/test-utils/fourteen/models/index.html +1 -1
  31. package/coverage/lcov-report/dist/test-utils/fourteen/models/person.js.html +1 -1
  32. package/coverage/lcov-report/dist/test-utils/nine/entities.js.html +1 -1
  33. package/coverage/lcov-report/dist/test-utils/nine/index.html +1 -1
  34. package/coverage/lcov-report/dist/test-utils/nine/models/feature-switch.js.html +6 -6
  35. package/coverage/lcov-report/dist/test-utils/nine/models/index.html +1 -1
  36. package/coverage/lcov-report/dist/test-utils/order/entities.js.html +9 -9
  37. package/coverage/lcov-report/dist/test-utils/order/index.html +1 -1
  38. package/coverage/lcov-report/dist/test-utils/order/models/index.html +14 -14
  39. package/coverage/lcov-report/dist/test-utils/order/models/line-item.js.html +11 -11
  40. package/coverage/lcov-report/dist/test-utils/order/models/order.js.html +41 -41
  41. package/coverage/lcov-report/dist/test-utils/order/models/product-variant.js.html +18 -18
  42. package/coverage/lcov-report/dist/test-utils/order/models/product.js.html +17 -17
  43. package/coverage/lcov-report/dist/test-utils/order/models/utm-source.js.html +12 -12
  44. package/coverage/lcov-report/dist/test-utils/order-more/entities.js.html +1 -1
  45. package/coverage/lcov-report/dist/test-utils/order-more/index.html +1 -1
  46. package/coverage/lcov-report/dist/test-utils/order-more/models/actual-product-variant.js.html +3 -3
  47. package/coverage/lcov-report/dist/test-utils/order-more/models/color.js.html +6 -6
  48. package/coverage/lcov-report/dist/test-utils/order-more/models/customer.js.html +3 -3
  49. package/coverage/lcov-report/dist/test-utils/order-more/models/gender.js.html +4 -4
  50. package/coverage/lcov-report/dist/test-utils/order-more/models/index.html +23 -23
  51. package/coverage/lcov-report/dist/test-utils/order-more/models/inventory-level.js.html +11 -11
  52. package/coverage/lcov-report/dist/test-utils/order-more/models/line-item.js.html +15 -15
  53. package/coverage/lcov-report/dist/test-utils/order-more/models/order.js.html +39 -39
  54. package/coverage/lcov-report/dist/test-utils/order-more/models/parcel-event.js.html +6 -6
  55. package/coverage/lcov-report/dist/test-utils/order-more/models/parcel-line-item.js.html +7 -7
  56. package/coverage/lcov-report/dist/test-utils/order-more/models/parcel.js.html +2 -2
  57. package/coverage/lcov-report/dist/test-utils/order-more/models/physical-address.js.html +12 -12
  58. package/coverage/lcov-report/dist/test-utils/order-more/models/product-variant-image.js.html +7 -7
  59. package/coverage/lcov-report/dist/test-utils/order-more/models/product-variant.js.html +22 -22
  60. package/coverage/lcov-report/dist/test-utils/order-more/models/product.js.html +11 -11
  61. package/coverage/lcov-report/dist/test-utils/order-more/models/refund.js.html +11 -11
  62. package/coverage/lcov-report/dist/test-utils/order-more/models/shipment-actual-product-variant.js.html +9 -9
  63. package/coverage/lcov-report/dist/test-utils/order-more/models/shipment.js.html +4 -4
  64. package/coverage/lcov-report/dist/test-utils/order-more/models/size.js.html +4 -4
  65. package/coverage/lcov-report/dist/test-utils/order-more/models/utm-medium.js.html +15 -15
  66. package/coverage/lcov-report/dist/test-utils/order-more/models/utm-source.js.html +17 -17
  67. package/coverage/lcov-report/dist/test-utils/six/entities.js.html +1 -1
  68. package/coverage/lcov-report/dist/test-utils/six/index.html +1 -1
  69. package/coverage/lcov-report/dist/test-utils/six/models/customer.js.html +3 -3
  70. package/coverage/lcov-report/dist/test-utils/six/models/index.html +21 -21
  71. package/coverage/lcov-report/dist/test-utils/six/models/line-item.js.html +10 -10
  72. package/coverage/lcov-report/dist/test-utils/six/models/order.js.html +13 -13
  73. package/coverage/lcov-report/dist/test-utils/six/models/parcel-line-item.js.html +2 -2
  74. package/coverage/lcov-report/dist/test-utils/six/models/parcel.js.html +2 -2
  75. package/coverage/lcov-report/dist/test-utils/thirteen/entities.js.html +1 -1
  76. package/coverage/lcov-report/dist/test-utils/thirteen/index.html +1 -1
  77. package/coverage/lcov-report/dist/test-utils/thirteen/models/audience.js.html +2 -2
  78. package/coverage/lcov-report/dist/test-utils/thirteen/models/brand.js.html +2 -2
  79. package/coverage/lcov-report/dist/test-utils/thirteen/models/category.js.html +1 -1
  80. package/coverage/lcov-report/dist/test-utils/thirteen/models/index.html +14 -14
  81. package/coverage/lcov-report/dist/test-utils/thirteen/models/member.js.html +2 -2
  82. package/coverage/lcov-report/dist/test-utils/thirteen/models/passion.js.html +2 -2
  83. package/coverage/lcov-report/dist/test-utils/thirteen/models/product.js.html +10 -10
  84. package/coverage/lcov-report/dist/test-utils/thirteen/models/recommendation-audience.js.html +2 -2
  85. package/coverage/lcov-report/dist/test-utils/thirteen/models/recommendation.js.html +2 -2
  86. package/coverage/lcov-report/dist/test-utils/three/index.html +1 -1
  87. package/coverage/lcov-report/dist/test-utils/three/results.js.html +1 -1
  88. package/coverage/lcov-report/dist/test-utils/twelve/entities.js.html +1 -1
  89. package/coverage/lcov-report/dist/test-utils/twelve/index.html +1 -1
  90. package/coverage/lcov-report/dist/test-utils/twelve/models/index.html +1 -1
  91. package/coverage/lcov-report/dist/test-utils/twelve/models/member.js.html +1 -1
  92. package/coverage/lcov-report/dist/test-utils/twelve/models/prompt.js.html +2 -2
  93. package/coverage/lcov-report/dist/test-utils/two/index.html +1 -1
  94. package/coverage/lcov-report/dist/test-utils/two/results.js.html +1 -1
  95. package/coverage/lcov-report/index.html +103 -103
  96. package/coverage/lcov-report/src/core.ts.html +841 -415
  97. package/coverage/lcov-report/src/driver-integrations/index.html +20 -20
  98. package/coverage/lcov-report/src/driver-integrations/pgp.ts.html +58 -58
  99. package/coverage/lcov-report/src/index.html +28 -28
  100. package/coverage/lcov-report/src/index.ts.html +1 -1
  101. package/coverage/lcov-report/src/orm.ts.html +361 -298
  102. package/coverage/lcov-report/test-utils/blog/entities.ts.html +1 -1
  103. package/coverage/lcov-report/test-utils/blog/index.html +1 -1
  104. package/coverage/lcov-report/test-utils/blog/models/article.ts.html +15 -15
  105. package/coverage/lcov-report/test-utils/blog/models/article_tag.ts.html +2 -2
  106. package/coverage/lcov-report/test-utils/blog/models/index.html +1 -1
  107. package/coverage/lcov-report/test-utils/blog/models/person.ts.html +13 -13
  108. package/coverage/lcov-report/test-utils/blog/models/tag.ts.html +1 -1
  109. package/coverage/lcov-report/test-utils/five/entities.ts.html +1 -1
  110. package/coverage/lcov-report/test-utils/five/index.html +1 -1
  111. package/coverage/lcov-report/test-utils/five/models/index.html +1 -1
  112. package/coverage/lcov-report/test-utils/five/models/line-item.ts.html +4 -4
  113. package/coverage/lcov-report/test-utils/five/models/order.ts.html +3 -3
  114. package/coverage/lcov-report/test-utils/five/models/parcel-event.ts.html +6 -6
  115. package/coverage/lcov-report/test-utils/five/models/parcel-line-item.ts.html +7 -7
  116. package/coverage/lcov-report/test-utils/five/models/parcel.ts.html +2 -2
  117. package/coverage/lcov-report/test-utils/fourteen/entities.ts.html +1 -1
  118. package/coverage/lcov-report/test-utils/fourteen/index.html +1 -1
  119. package/coverage/lcov-report/test-utils/fourteen/models/customer.ts.html +1 -1
  120. package/coverage/lcov-report/test-utils/fourteen/models/index.html +1 -1
  121. package/coverage/lcov-report/test-utils/fourteen/models/person.ts.html +1 -1
  122. package/coverage/lcov-report/test-utils/nine/entities.ts.html +1 -1
  123. package/coverage/lcov-report/test-utils/nine/index.html +1 -1
  124. package/coverage/lcov-report/test-utils/nine/models/feature-switch.ts.html +8 -8
  125. package/coverage/lcov-report/test-utils/nine/models/index.html +1 -1
  126. package/coverage/lcov-report/test-utils/order/entities.ts.html +2 -2
  127. package/coverage/lcov-report/test-utils/order/index.html +1 -1
  128. package/coverage/lcov-report/test-utils/order/models/index.html +14 -14
  129. package/coverage/lcov-report/test-utils/order/models/line-item.ts.html +5 -5
  130. package/coverage/lcov-report/test-utils/order/models/order.ts.html +36 -36
  131. package/coverage/lcov-report/test-utils/order/models/product-variant.ts.html +13 -13
  132. package/coverage/lcov-report/test-utils/order/models/product.ts.html +13 -13
  133. package/coverage/lcov-report/test-utils/order/models/utm-source.ts.html +8 -8
  134. package/coverage/lcov-report/test-utils/order-more/entities.ts.html +1 -1
  135. package/coverage/lcov-report/test-utils/order-more/index.html +1 -1
  136. package/coverage/lcov-report/test-utils/order-more/models/actual-product-variant.ts.html +3 -3
  137. package/coverage/lcov-report/test-utils/order-more/models/color.ts.html +6 -6
  138. package/coverage/lcov-report/test-utils/order-more/models/customer.ts.html +3 -3
  139. package/coverage/lcov-report/test-utils/order-more/models/gender.ts.html +4 -4
  140. package/coverage/lcov-report/test-utils/order-more/models/index.html +23 -23
  141. package/coverage/lcov-report/test-utils/order-more/models/inventory-level.ts.html +11 -11
  142. package/coverage/lcov-report/test-utils/order-more/models/line-item.ts.html +15 -15
  143. package/coverage/lcov-report/test-utils/order-more/models/order.ts.html +45 -45
  144. package/coverage/lcov-report/test-utils/order-more/models/parcel-event.ts.html +6 -6
  145. package/coverage/lcov-report/test-utils/order-more/models/parcel-line-item.ts.html +7 -7
  146. package/coverage/lcov-report/test-utils/order-more/models/parcel.ts.html +2 -2
  147. package/coverage/lcov-report/test-utils/order-more/models/physical-address.ts.html +12 -12
  148. package/coverage/lcov-report/test-utils/order-more/models/product-variant-image.ts.html +7 -7
  149. package/coverage/lcov-report/test-utils/order-more/models/product-variant.ts.html +22 -22
  150. package/coverage/lcov-report/test-utils/order-more/models/product.ts.html +11 -11
  151. package/coverage/lcov-report/test-utils/order-more/models/refund.ts.html +11 -11
  152. package/coverage/lcov-report/test-utils/order-more/models/shipment-actual-product-variant.ts.html +9 -9
  153. package/coverage/lcov-report/test-utils/order-more/models/shipment.ts.html +4 -4
  154. package/coverage/lcov-report/test-utils/order-more/models/size.ts.html +4 -4
  155. package/coverage/lcov-report/test-utils/order-more/models/utm-medium.ts.html +15 -15
  156. package/coverage/lcov-report/test-utils/order-more/models/utm-source.ts.html +17 -17
  157. package/coverage/lcov-report/test-utils/six/entities.ts.html +1 -1
  158. package/coverage/lcov-report/test-utils/six/index.html +1 -1
  159. package/coverage/lcov-report/test-utils/six/models/customer.ts.html +3 -3
  160. package/coverage/lcov-report/test-utils/six/models/index.html +21 -21
  161. package/coverage/lcov-report/test-utils/six/models/line-item.ts.html +10 -10
  162. package/coverage/lcov-report/test-utils/six/models/order.ts.html +13 -13
  163. package/coverage/lcov-report/test-utils/six/models/parcel-line-item.ts.html +2 -2
  164. package/coverage/lcov-report/test-utils/six/models/parcel.ts.html +2 -2
  165. package/coverage/lcov-report/test-utils/thirteen/entities.ts.html +1 -1
  166. package/coverage/lcov-report/test-utils/thirteen/index.html +1 -1
  167. package/coverage/lcov-report/test-utils/thirteen/models/audience.ts.html +2 -2
  168. package/coverage/lcov-report/test-utils/thirteen/models/brand.ts.html +2 -2
  169. package/coverage/lcov-report/test-utils/thirteen/models/category.ts.html +1 -1
  170. package/coverage/lcov-report/test-utils/thirteen/models/index.html +14 -14
  171. package/coverage/lcov-report/test-utils/thirteen/models/member.ts.html +2 -2
  172. package/coverage/lcov-report/test-utils/thirteen/models/passion.ts.html +2 -2
  173. package/coverage/lcov-report/test-utils/thirteen/models/product.ts.html +10 -10
  174. package/coverage/lcov-report/test-utils/thirteen/models/recommendation-audience.ts.html +2 -2
  175. package/coverage/lcov-report/test-utils/thirteen/models/recommendation.ts.html +2 -2
  176. package/coverage/lcov-report/test-utils/three/index.html +1 -1
  177. package/coverage/lcov-report/test-utils/three/results.js.html +1 -1
  178. package/coverage/lcov-report/test-utils/twelve/entities.ts.html +1 -1
  179. package/coverage/lcov-report/test-utils/twelve/index.html +1 -1
  180. package/coverage/lcov-report/test-utils/twelve/models/index.html +1 -1
  181. package/coverage/lcov-report/test-utils/twelve/models/member.ts.html +1 -1
  182. package/coverage/lcov-report/test-utils/twelve/models/prompt.ts.html +2 -2
  183. package/coverage/lcov-report/test-utils/two/index.html +1 -1
  184. package/coverage/lcov-report/test-utils/two/results.js.html +1 -1
  185. package/coverage/lcov.info +2134 -1989
  186. package/dist/src/core.d.ts +6 -0
  187. package/dist/src/core.js +258 -189
  188. package/dist/src/core.spec.js +413 -0
  189. package/dist/src/driver-integrations/pgp.spec.d.ts +1 -0
  190. package/dist/src/driver-integrations/pgp.spec.js +376 -0
  191. package/dist/src/orm.d.ts +1 -1
  192. package/dist/src/orm.js +137 -76
  193. package/dist/src/orm.spec.js +535 -85
  194. package/dist/test-utils/nine/models/feature-switch.d.ts +2 -2
  195. package/dist/test-utils/nine/models/feature-switch.ts +2 -2
  196. package/package.json +5 -3
  197. package/scripts/bench-core.js +636 -0
  198. package/scripts/check-bench-scenarios.js +47 -0
  199. package/src/core.spec.ts +485 -2
  200. package/src/core.ts +369 -227
  201. package/src/driver-integrations/pgp.spec.ts +444 -0
  202. package/src/orm.spec.ts +592 -88
  203. package/src/orm.ts +149 -128
  204. 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">64.44% </span>
23
+ <span class="strong">100% </span>
24
24
  <span class="quiet">Statements</span>
25
- <span class='fraction'>58/90</span>
25
+ <span class='fraction'>154/154</span>
26
26
  </div>
27
27
  <div class='fl pad1y space-right2'>
28
- <span class="strong">76.92% </span>
28
+ <span class="strong">88.89% </span>
29
29
  <span class="quiet">Branches</span>
30
- <span class='fraction'>10/13</span>
30
+ <span class='fraction'>24/27</span>
31
31
  </div>
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">71.05% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Functions</span>
35
- <span class='fraction'>27/38</span>
35
+ <span class='fraction'>17/17</span>
36
36
  </div>
37
37
  <div class='fl pad1y space-right2'>
38
- <span class="strong">64.44% </span>
38
+ <span class="strong">100% </span>
39
39
  <span class="quiet">Lines</span>
40
- <span class='fraction'>58/90</span>
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 medium'></div>
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></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
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">&nbsp;</span>
396
417
  <span class="cline-any cline-neutral">&nbsp;</span>
397
418
  <span class="cline-any cline-neutral">&nbsp;</span>
398
419
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -456,269 +477,290 @@
456
477
  <span class="cline-any cline-neutral">&nbsp;</span>
457
478
  <span class="cline-any cline-neutral">&nbsp;</span>
458
479
  <span class="cline-any cline-neutral">&nbsp;</span>
459
- <span class="cline-any cline-yes">6x</span>
460
- <span class="cline-any cline-neutral">&nbsp;</span>
461
- <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
465
- <span class="cline-any cline-no">&nbsp;</span>
466
- <span class="cline-any cline-neutral">&nbsp;</span>
467
- <span class="cline-any cline-neutral">&nbsp;</span>
480
+ <span class="cline-any cline-yes">41x</span>
468
481
  <span class="cline-any cline-neutral">&nbsp;</span>
469
482
  <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-neutral">&nbsp;</span>
471
- <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-yes">6x</span>
475
- <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
477
486
  <span class="cline-any cline-yes">1x</span>
478
487
  <span class="cline-any cline-neutral">&nbsp;</span>
479
488
  <span class="cline-any cline-neutral">&nbsp;</span>
480
489
  <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-yes">24x</span>
482
- <span class="cline-any cline-neutral">&nbsp;</span>
483
490
  <span class="cline-any cline-neutral">&nbsp;</span>
484
491
  <span class="cline-any cline-neutral">&nbsp;</span>
485
492
  <span class="cline-any cline-neutral">&nbsp;</span>
486
493
  <span class="cline-any cline-neutral">&nbsp;</span>
487
- <span class="cline-any cline-yes">4x</span>
488
494
  <span class="cline-any cline-neutral">&nbsp;</span>
489
- <span class="cline-any cline-yes">1x</span>
490
495
  <span class="cline-any cline-neutral">&nbsp;</span>
491
496
  <span class="cline-any cline-neutral">&nbsp;</span>
492
- <span class="cline-any cline-yes">24x</span>
493
497
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
498
- <span class="cline-any cline-yes">1x</span>
499
499
  <span class="cline-any cline-neutral">&nbsp;</span>
500
500
  <span class="cline-any cline-neutral">&nbsp;</span>
501
- <span class="cline-any cline-yes">6x</span>
502
501
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
517
+ <span class="cline-any cline-yes">23x</span>
504
518
  <span class="cline-any cline-neutral">&nbsp;</span>
505
- <span class="cline-any cline-yes">1x</span>
506
519
  <span class="cline-any cline-neutral">&nbsp;</span>
507
520
  <span class="cline-any cline-neutral">&nbsp;</span>
508
521
  <span class="cline-any cline-neutral">&nbsp;</span>
509
- <span class="cline-any cline-yes">24x</span>
510
522
  <span class="cline-any cline-neutral">&nbsp;</span>
523
+ <span class="cline-any cline-yes">23x</span>
511
524
  <span class="cline-any cline-neutral">&nbsp;</span>
525
+ <span class="cline-any cline-yes">23x</span>
512
526
  <span class="cline-any cline-neutral">&nbsp;</span>
513
527
  <span class="cline-any cline-neutral">&nbsp;</span>
528
+ <span class="cline-any cline-yes">40x</span>
514
529
  <span class="cline-any cline-neutral">&nbsp;</span>
515
530
  <span class="cline-any cline-neutral">&nbsp;</span>
516
- <span class="cline-any cline-yes">4x</span>
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">&nbsp;</span>
518
- <span class="cline-any cline-yes">1x</span>
519
- <span class="cline-any cline-yes">1x</span>
520
- <span class="cline-any cline-yes">1x</span>
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">&nbsp;</span>
522
549
  <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-yes">24x</span>
550
+ <span class="cline-any cline-yes">5x</span>
524
551
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
553
+ <span class="cline-any cline-yes">40x</span>
529
554
  <span class="cline-any cline-neutral">&nbsp;</span>
530
- <span class="cline-any cline-yes">6x</span>
531
555
  <span class="cline-any cline-neutral">&nbsp;</span>
532
556
  <span class="cline-any cline-neutral">&nbsp;</span>
533
- <span class="cline-any cline-yes">1x</span>
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">&nbsp;</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">&nbsp;</span>
536
- <span class="cline-any cline-yes">24x</span>
537
573
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
539
578
  <span class="cline-any cline-neutral">&nbsp;</span>
579
+ <span class="cline-any cline-yes">40x</span>
540
580
  <span class="cline-any cline-neutral">&nbsp;</span>
541
581
  <span class="cline-any cline-neutral">&nbsp;</span>
542
- <span class="cline-any cline-yes">24x</span>
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">&nbsp;</span>
545
- <span class="cline-any cline-yes">1x</span>
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">&nbsp;</span>
547
598
  <span class="cline-any cline-neutral">&nbsp;</span>
548
- <span class="cline-any cline-yes">24x</span>
599
+ <span class="cline-any cline-yes">10x</span>
549
600
  <span class="cline-any cline-neutral">&nbsp;</span>
550
601
  <span class="cline-any cline-neutral">&nbsp;</span>
551
602
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
604
+ <span class="cline-any cline-yes">40x</span>
555
605
  <span class="cline-any cline-neutral">&nbsp;</span>
556
606
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
558
- <span class="cline-any cline-yes">6x</span>
559
- <span class="cline-any cline-neutral">&nbsp;</span>
560
- <span class="cline-any cline-neutral">&nbsp;</span>
561
- <span class="cline-any cline-yes">1x</span>
562
- <span class="cline-any cline-neutral">&nbsp;</span>
563
- <span class="cline-any cline-neutral">&nbsp;</span>
564
- <span class="cline-any cline-yes">24x</span>
565
- <span class="cline-any cline-neutral">&nbsp;</span>
566
- <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
568
623
  <span class="cline-any cline-neutral">&nbsp;</span>
624
+ <span class="cline-any cline-yes">2x</span>
569
625
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
573
- <span class="cline-any cline-yes">1x</span>
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">&nbsp;</span>
575
636
  <span class="cline-any cline-neutral">&nbsp;</span>
576
- <span class="cline-any cline-yes">24x</span>
637
+ <span class="cline-any cline-yes">3x</span>
577
638
  <span class="cline-any cline-neutral">&nbsp;</span>
578
639
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
580
- <span class="cline-any cline-yes">24x</span>
581
645
  <span class="cline-any cline-neutral">&nbsp;</span>
582
646
  <span class="cline-any cline-neutral">&nbsp;</span>
583
- <span class="cline-any cline-yes">4x</span>
584
647
  <span class="cline-any cline-neutral">&nbsp;</span>
648
+ <span class="cline-any cline-yes">40x</span>
585
649
  <span class="cline-any cline-neutral">&nbsp;</span>
586
- <span class="cline-any cline-yes">1x</span>
587
650
  <span class="cline-any cline-neutral">&nbsp;</span>
588
651
  <span class="cline-any cline-neutral">&nbsp;</span>
589
652
  <span class="cline-any cline-yes">6x</span>
590
- <span class="cline-any cline-no">&nbsp;</span>
591
- <span class="cline-any cline-no">&nbsp;</span>
592
- <span class="cline-any cline-neutral">&nbsp;</span>
593
- <span class="cline-any cline-no">&nbsp;</span>
594
- <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-neutral">&nbsp;</span>
596
- <span class="cline-any cline-neutral">&nbsp;</span>
597
- <span class="cline-any cline-no">&nbsp;</span>
598
- <span class="cline-any cline-neutral">&nbsp;</span>
599
- <span class="cline-any cline-no">&nbsp;</span>
600
- <span class="cline-any cline-no">&nbsp;</span>
601
- <span class="cline-any cline-neutral">&nbsp;</span>
602
- <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-neutral">&nbsp;</span>
604
- <span class="cline-any cline-no">&nbsp;</span>
605
- <span class="cline-any cline-neutral">&nbsp;</span>
606
- <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
610
- <span class="cline-any cline-neutral">&nbsp;</span>
611
- <span class="cline-any cline-neutral">&nbsp;</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-neutral">&nbsp;</span>
614
- <span class="cline-any cline-neutral">&nbsp;</span>
615
654
  <span class="cline-any cline-yes">6x</span>
616
655
  <span class="cline-any cline-neutral">&nbsp;</span>
617
656
  <span class="cline-any cline-neutral">&nbsp;</span>
618
657
  <span class="cline-any cline-neutral">&nbsp;</span>
619
- <span class="cline-any cline-yes">3x</span>
620
- <span class="cline-any cline-neutral">&nbsp;</span>
621
- <span class="cline-any cline-neutral">&nbsp;</span>
622
658
  <span class="cline-any cline-neutral">&nbsp;</span>
623
659
  <span class="cline-any cline-neutral">&nbsp;</span>
624
660
  <span class="cline-any cline-neutral">&nbsp;</span>
625
661
  <span class="cline-any cline-neutral">&nbsp;</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">&nbsp;</span>
627
667
  <span class="cline-any cline-neutral">&nbsp;</span>
628
668
  <span class="cline-any cline-neutral">&nbsp;</span>
629
- <span class="cline-any cline-yes">6x</span>
630
- <span class="cline-any cline-no">&nbsp;</span>
631
- <span class="cline-any cline-no">&nbsp;</span>
632
669
  <span class="cline-any cline-neutral">&nbsp;</span>
670
+ <span class="cline-any cline-yes">2x</span>
633
671
  <span class="cline-any cline-neutral">&nbsp;</span>
634
672
  <span class="cline-any cline-neutral">&nbsp;</span>
635
673
  <span class="cline-any cline-neutral">&nbsp;</span>
636
- <span class="cline-any cline-no">&nbsp;</span>
674
+ <span class="cline-any cline-yes">40x</span>
637
675
  <span class="cline-any cline-neutral">&nbsp;</span>
638
676
  <span class="cline-any cline-neutral">&nbsp;</span>
639
677
  <span class="cline-any cline-neutral">&nbsp;</span>
640
- <span class="cline-any cline-yes">6x</span>
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">&nbsp;</span>
642
682
  <span class="cline-any cline-neutral">&nbsp;</span>
643
683
  <span class="cline-any cline-neutral">&nbsp;</span>
644
- <span class="cline-any cline-no">&nbsp;</span>
645
- <span class="cline-any cline-no">&nbsp;</span>
646
684
  <span class="cline-any cline-neutral">&nbsp;</span>
647
685
  <span class="cline-any cline-neutral">&nbsp;</span>
648
686
  <span class="cline-any cline-neutral">&nbsp;</span>
649
687
  <span class="cline-any cline-neutral">&nbsp;</span>
650
688
  <span class="cline-any cline-neutral">&nbsp;</span>
689
+ <span class="cline-any cline-yes">2x</span>
651
690
  <span class="cline-any cline-neutral">&nbsp;</span>
652
691
  <span class="cline-any cline-neutral">&nbsp;</span>
653
- <span class="cline-any cline-no">&nbsp;</span>
654
692
  <span class="cline-any cline-neutral">&nbsp;</span>
655
- <span class="cline-any cline-neutral">&nbsp;</span>
656
- <span class="cline-any cline-neutral">&nbsp;</span>
657
- <span class="cline-any cline-yes">6x</span>
658
- <span class="cline-any cline-no">&nbsp;</span>
659
- <span class="cline-any cline-no">&nbsp;</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">&nbsp;</span>
661
698
  <span class="cline-any cline-neutral">&nbsp;</span>
662
699
  <span class="cline-any cline-neutral">&nbsp;</span>
663
- <span class="cline-any cline-no">&nbsp;</span>
700
+ <span class="cline-any cline-yes">1x</span>
664
701
  <span class="cline-any cline-neutral">&nbsp;</span>
665
702
  <span class="cline-any cline-neutral">&nbsp;</span>
666
- <span class="cline-any cline-yes">6x</span>
667
- <span class="cline-any cline-no">&nbsp;</span>
668
- <span class="cline-any cline-no">&nbsp;</span>
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">&nbsp;</span>
670
708
  <span class="cline-any cline-neutral">&nbsp;</span>
671
709
  <span class="cline-any cline-neutral">&nbsp;</span>
672
- <span class="cline-any cline-no">&nbsp;</span>
710
+ <span class="cline-any cline-yes">1x</span>
673
711
  <span class="cline-any cline-neutral">&nbsp;</span>
674
712
  <span class="cline-any cline-neutral">&nbsp;</span>
675
- <span class="cline-any cline-yes">6x</span>
676
- <span class="cline-any cline-no">&nbsp;</span>
677
- <span class="cline-any cline-no">&nbsp;</span>
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">&nbsp;</span>
679
718
  <span class="cline-any cline-neutral">&nbsp;</span>
680
719
  <span class="cline-any cline-neutral">&nbsp;</span>
681
720
  <span class="cline-any cline-neutral">&nbsp;</span>
682
- <span class="cline-any cline-no">&nbsp;</span>
721
+ <span class="cline-any cline-yes">1x</span>
683
722
  <span class="cline-any cline-neutral">&nbsp;</span>
684
723
  <span class="cline-any cline-neutral">&nbsp;</span>
685
- <span class="cline-any cline-yes">6x</span>
724
+ <span class="cline-any cline-yes">40x</span>
686
725
  <span class="cline-any cline-neutral">&nbsp;</span>
687
726
  <span class="cline-any cline-neutral">&nbsp;</span>
688
- <span class="cline-any cline-no">&nbsp;</span>
689
- <span class="cline-any cline-no">&nbsp;</span>
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">&nbsp;</span>
691
731
  <span class="cline-any cline-neutral">&nbsp;</span>
692
732
  <span class="cline-any cline-neutral">&nbsp;</span>
693
733
  <span class="cline-any cline-neutral">&nbsp;</span>
694
- <span class="cline-any cline-no">&nbsp;</span>
734
+ <span class="cline-any cline-yes">2x</span>
695
735
  <span class="cline-any cline-neutral">&nbsp;</span>
696
736
  <span class="cline-any cline-neutral">&nbsp;</span>
697
- <span class="cline-any cline-yes">6x</span>
737
+ <span class="cline-any cline-yes">40x</span>
698
738
  <span class="cline-any cline-neutral">&nbsp;</span>
699
739
  <span class="cline-any cline-neutral">&nbsp;</span>
700
- <span class="cline-any cline-no">&nbsp;</span>
701
- <span class="cline-any cline-no">&nbsp;</span>
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">&nbsp;</span>
703
744
  <span class="cline-any cline-neutral">&nbsp;</span>
704
745
  <span class="cline-any cline-neutral">&nbsp;</span>
705
746
  <span class="cline-any cline-neutral">&nbsp;</span>
706
- <span class="cline-any cline-no">&nbsp;</span>
747
+ <span class="cline-any cline-yes">2x</span>
707
748
  <span class="cline-any cline-neutral">&nbsp;</span>
708
749
  <span class="cline-any cline-neutral">&nbsp;</span>
709
- <span class="cline-any cline-yes">6x</span>
750
+ <span class="cline-any cline-yes">40x</span>
710
751
  <span class="cline-any cline-neutral">&nbsp;</span>
711
752
  <span class="cline-any cline-neutral">&nbsp;</span>
712
- <span class="cline-any cline-no">&nbsp;</span>
713
- <span class="cline-any cline-no">&nbsp;</span>
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">&nbsp;</span>
715
757
  <span class="cline-any cline-neutral">&nbsp;</span>
716
758
  <span class="cline-any cline-neutral">&nbsp;</span>
717
759
  <span class="cline-any cline-neutral">&nbsp;</span>
718
- <span class="cline-any cline-no">&nbsp;</span>
760
+ <span class="cline-any cline-yes">2x</span>
719
761
  <span class="cline-any cline-neutral">&nbsp;</span>
720
762
  <span class="cline-any cline-neutral">&nbsp;</span>
721
- <span class="cline-any cline-yes">6x</span>
763
+ <span class="cline-any cline-yes">40x</span>
722
764
  <span class="cline-any cline-neutral">&nbsp;</span>
723
765
  <span class="cline-any cline-neutral">&nbsp;</span>
724
766
  <span class="cline-any cline-neutral">&nbsp;</span>
@@ -767,7 +809,7 @@ export interface IPureORM extends ICoreIntegratedDriver {
767
809
  ) =&gt; Promise&lt;T | void&gt;;
768
810
  getAllMatching: &lt;T extends ICollection&lt;IModel&gt;&gt;(model: IModel) =&gt; Promise&lt;T&gt;;
769
811
  create: &lt;T extends IModel&gt;(model: T) =&gt; Promise&lt;T&gt;;
770
- update: &lt;T extends IModel&gt;(model: T, options: { on: string }) =&gt; Promise&lt;T&gt;;
812
+ update: &lt;T extends IModel&gt;(model: T, options?: { on: string }) =&gt; Promise&lt;T&gt;;
771
813
  delete: &lt;T extends IModel&gt;(model: T) =&gt; Promise&lt;void&gt;;
772
814
  deleteMatching: &lt;T extends IModel&gt;(model: T) =&gt; Promise&lt;void&gt;;
773
815
  &nbsp;
@@ -805,10 +847,10 @@ export const create = ({
805
847
  const core = createCore({ entities: externalEntities });
806
848
  &nbsp;
807
849
  let orm: ICoreIntegratedDriver;
808
- <span class="missing-if-branch" title="else path not taken" >E</span>if (db.$config.pgp) {
850
+ if (db.$config.pgp) {
809
851
  orm = createForPGP({ core, db, logError });
810
852
  } else {
811
- <span class="cstat-no" title="statement not covered" > throw new Error(</span>
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
+ &nbsp;
862
+ interface IOrmHelperPlan {
863
+ quotedColumns: Array&lt;string&gt;;
864
+ updateClausePrefixes: Array&lt;string&gt;;
865
+ wherePositionalPrefixes: Array&lt;string&gt;;
866
+ whereNamedPrefixes: Array&lt;string&gt;;
867
+ }
868
+ &nbsp;
869
+ const helperPlanByEntity = new Map&lt;any, IOrmHelperPlan&gt;();
870
+ const getHelperPlan = (entity: any): IOrmHelperPlan =&gt; {
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 &lt; 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
  &nbsp;
820
895
  const getSqlInsertParts = (
821
896
  model: IModel
822
897
  ): { columns: string; values: Array&lt;string&gt;; valuesVar: Array&lt;string&gt; } =&gt; {
823
- const columns = orm
824
- .getEntityByModel(model)
825
- .columnNames.filter(
826
- (column: string, index: number) =&gt;
827
- model[
828
- orm.getEntityByModel(model).propertyNames[
829
- index
830
- ] as keyof typeof model
831
- ] !== void 0
832
- )
833
- .map((col: string) =&gt; `"${col}"`)
834
- .join(', ');
835
- const values = orm
836
- .getEntityByModel(model)
837
- .propertyNames.map(
838
- (property: string) =&gt; model[property as keyof typeof model]
839
- )
840
- .filter((value: any) =&gt; value !== void 0);
841
- const valuesVar = values.map(
842
- (value: any, index: number) =&gt; `$${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&lt;any&gt; = [];
903
+ const valuesVar: Array&lt;string&gt; = [];
904
+ let paramIndex = 1;
905
+ for (let i = 0; i &lt; 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
  &nbsp;
@@ -848,54 +921,48 @@ export const create = ({
848
921
  model: IModel,
849
922
  on = 'id'
850
923
  ): { clause: string; idVar: string; values: Array&lt;string&gt; } =&gt; {
851
- const clauseArray = orm
852
- .getEntityByModel(model)
853
- .columnNames.filter(
854
- (sqlColumn: string, index: number) =&gt;
855
- model[
856
- orm.getEntityByModel(model).propertyNames[
857
- index
858
- ] as keyof typeof model
859
- ] !== void 0
860
- )
861
- .map(
862
- (sqlColumn: string, index: number) =&gt; `"${sqlColumn}" = $${index + 1}`
863
- );
864
- const clause = clauseArray.join(', ');
865
- const idVar = `$${clauseArray.length + 1}`;
866
- const _values = orm
867
- .getEntityByModel(model)
868
- .propertyNames.map(
869
- (property: string) =&gt; model[property as keyof typeof model]
870
- )
871
- .filter((value: any) =&gt; 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&lt;any&gt; = [];
929
+ let paramIndex = 1;
930
+ for (let i = 0; i &lt; 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
  &nbsp;
876
946
  const getMatchingParts = (
877
947
  model: IModel
878
948
  ): { whereClause: string; values: Array&lt;string&gt; } =&gt; {
879
- const whereClause = orm
880
- .getEntityByModel(model)
881
- .propertyNames.map((property: string, index: number) =&gt;
882
- model[property as keyof typeof model] != null
883
- ? `"${orm.getEntityByModel(model).tableName}"."${
884
- orm.getEntityByModel(model).columnNames[index]
885
- }"`
886
- : null
887
- )
888
- .filter((x: string | null) =&gt; x != null)
889
- .map((x: string | null, i: number) =&gt; `${x} = $${i + 1}`)
890
- .join(' AND ');
891
- const values = orm
892
- .getEntityByModel(model)
893
- .propertyNames.map((property: string) =&gt;
894
- model[property as keyof typeof model] != null
895
- ? model[property as keyof typeof model]
896
- : null
897
- )
898
- .filter((x: any) =&gt; x != null);
949
+ const entity = orm.getEntityByModel(model);
950
+ const { propertyNames, columnNames } = entity;
951
+ const helperPlan = getHelperPlan(entity);
952
+ const values: Array&lt;any&gt; = [];
953
+ let paramIndex = 1;
954
+ let whereClause = '';
955
+ for (let i = 0; i &lt; 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
  &nbsp;
@@ -904,67 +971,54 @@ export const create = ({
904
971
  const getMatchingPartsObject = (
905
972
  model: IModel
906
973
  ): { whereClause: string; values: Array&lt;string&gt; } =&gt; {
907
- const whereClause = orm
908
- .getEntityByModel(model)
909
- .propertyNames.map((property: string, index: number) =&gt;
910
- model[property as keyof typeof model] != null
911
- ? `"${orm.getEntityByModel(model).tableName}"."${
912
- orm.getEntityByModel(model).columnNames[index]
913
- }"`
914
- : null
915
- )
916
- .filter((x: string | null) =&gt; x != null)
917
- .map((x: string | null, i: number) =&gt; `${x} = $(${i + 1})`)
918
- .join(' AND ');
919
- const values = orm
920
- .getEntityByModel(model)
921
- .propertyNames.map((property: string) =&gt;
922
- model[property as keyof typeof model] != null
923
- ? model[property as keyof typeof model]
924
- : null
925
- )
926
- .filter((x: any) =&gt; x != null)
927
- .reduce(
928
- (accum: any, val: any, index: number) =&gt;
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 &lt; 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
  &nbsp;
935
- const getNewWith = <span class="fstat-no" title="function not covered" >(m</span>odel: IModel, sqlColumns: any, values: any): IModel =&gt; {
936
- const Constructor = <span class="cstat-no" title="statement not covered" >model.constructor as any;</span>
937
- const modelKeys = <span class="cstat-no" title="statement not covered" >sqlColumns.map(</span>
938
- <span class="fstat-no" title="function not covered" > (k</span>ey: string) =&gt;
939
- <span class="cstat-no" title="statement not covered" > orm.getEntityByModel(model).propertyNames[</span>
940
- orm.getEntityByModel(model).columnNames.indexOf(key)
941
- ]
942
- );
943
- const modelData = <span class="cstat-no" title="statement not covered" >modelKeys.reduce(</span>
944
- <span class="fstat-no" title="function not covered" > (d</span>ata: any, key: string, index: number) =&gt; {
945
- <span class="cstat-no" title="statement not covered" > data[key] = values[index];</span>
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 =&gt; {
995
+ const Constructor = model.constructor as any;
996
+ const entity = orm.getEntityByModel(model);
997
+ const modelData: any = {};
998
+ for (let i = 0; i &lt; 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
  &nbsp;
953
1007
  const getValueBySqlColumn = (model: IModel, sqlColumn: string): string =&gt; {
954
- return model[
955
- orm.getEntityByModel(model).propertyNames[
956
- orm.getEntityByModel(model).columnNames.indexOf(sqlColumn)
957
- ] as keyof typeof model
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
  &nbsp;
961
1015
  const getSqlColumnForPropertyName = (
962
1016
  model: IModel,
963
1017
  propertyName: string
964
1018
  ): string =&gt; {
965
- return orm.getEntityByModel(model).columnNames[
966
- orm.getEntityByModel(model).propertyNames.indexOf(propertyName)
967
- ];
1019
+ const entity = orm.getEntityByModel(model);
1020
+ const column = entity.propertyToColumnMap.get(propertyName);
1021
+ return column as string;
968
1022
  };
969
1023
  &nbsp;
970
1024
  /* ------------------------------------------------------------------------*/
@@ -972,96 +1026,105 @@ export const create = ({
972
1026
  /* ------------------------------------------------------------------------*/
973
1027
  &nbsp;
974
1028
  // Standard create
975
- const create = <span class="fstat-no" title="function not covered" >&lt;T</span> extends IModel&gt;(model: T): Promise&lt;T&gt; =&gt; {
976
- const { columns, values, valuesVar } = <span class="cstat-no" title="statement not covered" >getSqlInsertParts(model);</span>
977
- const query = <span class="cstat-no" title="statement not covered" >`</span>
978
- INSERT INTO "${orm.getEntityByModel(model).tableName}" ( ${columns} )
1029
+ const create = &lt;T extends IModel&gt;(model: T): Promise&lt;T&gt; =&gt; {
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 ${orm.getEntityByModel(model).selectColumnsClause};
1035
+ RETURNING ${entity.selectColumnsClause};
981
1036
  `;
982
- <span class="cstat-no" title="statement not covered" > return orm.one&lt;T&gt;(query, values);</span>
1037
+ return orm.one&lt;T&gt;(query, values);
983
1038
  };
984
1039
  &nbsp;
985
1040
  // Standard update
986
- const update = <span class="fstat-no" title="function not covered" >&lt;T</span> extends IModel&gt;(
1041
+ const update = &lt;T extends IModel&gt;(
987
1042
  model: T,
988
- { on = <span class="branch-0 cbranch-no" title="branch not covered" >'id' </span>} = <span class="branch-0 cbranch-no" title="branch not covered" >{}</span>
1043
+ { on = 'id' } = {}
989
1044
  ): Promise&lt;T&gt; =&gt; {
990
- const { clause, idVar, values } = <span class="cstat-no" title="statement not covered" >getSqlUpdateParts(model, on);</span>
991
- const query = <span class="cstat-no" title="statement not covered" >`</span>
992
- UPDATE "${orm.getEntityByModel(model).tableName}"
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
- orm.getEntityByModel(model).tableName
996
- }".${getSqlColumnForPropertyName(model, on)} = ${idVar}
997
- RETURNING ${orm.getEntityByModel(model).selectColumnsClause};
1050
+ WHERE "${entity.tableName}".${getSqlColumnForPropertyName(
1051
+ model,
1052
+ on
1053
+ )} = ${idVar}
1054
+ RETURNING ${entity.selectColumnsClause};
998
1055
  `;
999
- <span class="cstat-no" title="statement not covered" > return orm.one&lt;T&gt;(query, values);</span>
1056
+ return orm.one&lt;T&gt;(query, values);
1000
1057
  };
1001
1058
  &nbsp;
1002
1059
  // Standard delete
1003
- const _delete = <span class="fstat-no" title="function not covered" >&lt;T</span> extends IModel&gt;(model: T): Promise&lt;void&gt; =&gt; {
1004
- const id = <span class="cstat-no" title="statement not covered" >(model as any).id;</span>
1005
- const query = <span class="cstat-no" title="statement not covered" >`</span>
1006
- DELETE FROM "${orm.getEntityByModel(model).tableName}"
1007
- WHERE "${orm.getEntityByModel(model).tableName}".id = $(id)
1060
+ const _delete = &lt;T extends IModel&gt;(model: T): Promise&lt;void&gt; =&gt; {
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
- <span class="cstat-no" title="statement not covered" > return orm.none(query, { id });</span>
1067
+ return orm.none(query, { id });
1010
1068
  };
1011
1069
  &nbsp;
1012
- const deleteMatching = <span class="fstat-no" title="function not covered" >&lt;T</span> extends IModel&gt;(model: T): Promise&lt;void&gt; =&gt; {
1013
- const { whereClause, values } = <span class="cstat-no" title="statement not covered" >getMatchingParts(model);</span>
1014
- const query = <span class="cstat-no" title="statement not covered" >`</span>
1015
- DELETE FROM "${orm.getEntityByModel(model).tableName}"
1070
+ const deleteMatching = &lt;T extends IModel&gt;(model: T): Promise&lt;void&gt; =&gt; {
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
- <span class="cstat-no" title="statement not covered" > return orm.none(query, values);</span>
1077
+ return orm.none(query, values);
1019
1078
  };
1020
1079
  &nbsp;
1021
- const getMatching = <span class="fstat-no" title="function not covered" >&lt;T</span> extends IModel&gt;(model: T): Promise&lt;T&gt; =&gt; {
1022
- const { whereClause, values } = <span class="cstat-no" title="statement not covered" >getMatchingParts(model);</span>
1023
- const query = <span class="cstat-no" title="statement not covered" >`</span>
1024
- SELECT ${orm.getEntityByModel(model).selectColumnsClause}
1025
- FROM "${orm.getEntityByModel(model).tableName}"
1080
+ const getMatching = &lt;T extends IModel&gt;(model: T): Promise&lt;T&gt; =&gt; {
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
- <span class="cstat-no" title="statement not covered" > return orm.one&lt;T&gt;(query, values);</span>
1088
+ return orm.one&lt;T&gt;(query, values);
1029
1089
  };
1030
1090
  &nbsp;
1031
- const getOneOrNoneMatching = <span class="fstat-no" title="function not covered" >&lt;T</span> extends IModel&gt;(
1091
+ const getOneOrNoneMatching = &lt;T extends IModel&gt;(
1032
1092
  model: T
1033
1093
  ): Promise&lt;T | void&gt; =&gt; {
1034
- const { whereClause, values } = <span class="cstat-no" title="statement not covered" >getMatchingParts(model);</span>
1035
- const query = <span class="cstat-no" title="statement not covered" >`</span>
1036
- SELECT ${orm.getEntityByModel(model).selectColumnsClause}
1037
- FROM "${orm.getEntityByModel(model).tableName}"
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
- <span class="cstat-no" title="statement not covered" > return orm.oneOrNone&lt;T&gt;(query, values);</span>
1101
+ return orm.oneOrNone&lt;T&gt;(query, values);
1041
1102
  };
1042
1103
  &nbsp;
1043
- const getAnyMatching = <span class="fstat-no" title="function not covered" >&lt;T</span> extends ICollection&lt;IModel&gt;&gt;(
1104
+ const getAnyMatching = &lt;T extends ICollection&lt;IModel&gt;&gt;(
1044
1105
  model: IModel
1045
1106
  ): Promise&lt;T | void&gt; =&gt; {
1046
- const { whereClause, values } = <span class="cstat-no" title="statement not covered" >getMatchingParts(model);</span>
1047
- const query = <span class="cstat-no" title="statement not covered" >`</span>
1048
- SELECT ${orm.getEntityByModel(model).selectColumnsClause}
1049
- FROM "${orm.getEntityByModel(model).tableName}"
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
- <span class="cstat-no" title="statement not covered" > return orm.any&lt;T&gt;(query, values);</span>
1114
+ return orm.any&lt;T&gt;(query, values);
1053
1115
  };
1054
1116
  &nbsp;
1055
- const getAllMatching = <span class="fstat-no" title="function not covered" >&lt;T</span> extends ICollection&lt;IModel&gt;&gt;(
1117
+ const getAllMatching = &lt;T extends ICollection&lt;IModel&gt;&gt;(
1056
1118
  model: IModel
1057
1119
  ): Promise&lt;T&gt; =&gt; {
1058
- const { whereClause, values } = <span class="cstat-no" title="statement not covered" >getMatchingParts(model);</span>
1059
- const query = <span class="cstat-no" title="statement not covered" >`</span>
1060
- SELECT ${orm.getEntityByModel(model).selectColumnsClause}
1061
- FROM "${orm.getEntityByModel(model).tableName}"
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
- <span class="cstat-no" title="statement not covered" > return orm.many&lt;T&gt;(query, values);</span>
1127
+ return orm.many&lt;T&gt;(query, values);
1065
1128
  };
1066
1129
  &nbsp;
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 Jun 01 2025 21:09:39 GMT-0400 (Eastern Daylight Time)
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>