pure-orm 4.0.0-0 → 4.0.0-1

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 (1198) hide show
  1. package/.prettierignore +1 -0
  2. package/README.md +390 -332
  3. package/babel.config.js +6 -0
  4. package/coverage/clover.xml +2437 -0
  5. package/coverage/coverage-final.json +125 -0
  6. package/coverage/lcov-report/base.css +224 -0
  7. package/coverage/lcov-report/block-navigation.js +79 -0
  8. package/coverage/lcov-report/business-object.ts.html +1290 -0
  9. package/coverage/lcov-report/dao/base-dao.js.html +507 -0
  10. package/coverage/lcov-report/dao/index.html +97 -0
  11. package/coverage/lcov-report/dist/business-object.js.html +1164 -0
  12. package/coverage/lcov-report/dist/examples/blog/business-objects/article.js.html +216 -0
  13. package/coverage/lcov-report/dist/examples/blog/business-objects/article_tag.js.html +168 -0
  14. package/coverage/lcov-report/dist/examples/blog/business-objects/article_tags.js.html +99 -0
  15. package/coverage/lcov-report/dist/examples/blog/business-objects/articles.js.html +72 -0
  16. package/coverage/lcov-report/dist/examples/blog/business-objects/index.html +136 -0
  17. package/coverage/lcov-report/dist/examples/blog/business-objects/person.js.html +213 -0
  18. package/coverage/lcov-report/dist/examples/blog/business-objects/tag.js.html +156 -0
  19. package/coverage/lcov-report/dist/examples/blog/entities/article.js.html +216 -0
  20. package/coverage/lcov-report/dist/examples/blog/entities/article_tag.js.html +168 -0
  21. package/coverage/lcov-report/dist/examples/blog/entities/index.html +136 -0
  22. package/coverage/lcov-report/dist/examples/blog/entities/person.js.html +213 -0
  23. package/coverage/lcov-report/dist/examples/blog/entities/tag.js.html +156 -0
  24. package/coverage/lcov-report/dist/examples/blog/index.html +97 -0
  25. package/coverage/lcov-report/dist/examples/blog/models/article.js.html +216 -0
  26. package/coverage/lcov-report/dist/examples/blog/models/article_tag.js.html +168 -0
  27. package/coverage/lcov-report/dist/examples/blog/models/index.html +136 -0
  28. package/coverage/lcov-report/dist/examples/blog/models/person.js.html +213 -0
  29. package/coverage/lcov-report/dist/examples/blog/models/tag.js.html +156 -0
  30. package/coverage/lcov-report/dist/examples/blog/orm.js.html +120 -0
  31. package/coverage/lcov-report/dist/examples/order/business-objects/index.html +149 -0
  32. package/coverage/lcov-report/dist/examples/order/business-objects/line-item.js.html +219 -0
  33. package/coverage/lcov-report/dist/examples/order/business-objects/line-items.js.html +99 -0
  34. package/coverage/lcov-report/dist/examples/order/business-objects/order.js.html +306 -0
  35. package/coverage/lcov-report/dist/examples/order/business-objects/orders.js.html +99 -0
  36. package/coverage/lcov-report/dist/examples/order/business-objects/product-variant.js.html +222 -0
  37. package/coverage/lcov-report/dist/examples/order/business-objects/product-variants.js.html +99 -0
  38. package/coverage/lcov-report/dist/examples/order/business-objects/product.js.html +192 -0
  39. package/coverage/lcov-report/dist/examples/order/business-objects/products.js.html +99 -0
  40. package/coverage/lcov-report/dist/examples/order/business-objects/utm-source.js.html +162 -0
  41. package/coverage/lcov-report/dist/examples/order/entities/index.html +149 -0
  42. package/coverage/lcov-report/dist/examples/order/entities/line-item.js.html +219 -0
  43. package/coverage/lcov-report/dist/examples/order/entities/order.js.html +306 -0
  44. package/coverage/lcov-report/dist/examples/order/entities/product-variant.js.html +222 -0
  45. package/coverage/lcov-report/dist/examples/order/entities/product.js.html +192 -0
  46. package/coverage/lcov-report/dist/examples/order/entities/utm-source.js.html +162 -0
  47. package/coverage/lcov-report/dist/examples/order/index.html +97 -0
  48. package/coverage/lcov-report/dist/examples/order/models/index.html +149 -0
  49. package/coverage/lcov-report/dist/examples/order/models/line-item.js.html +219 -0
  50. package/coverage/lcov-report/dist/examples/order/models/order.js.html +306 -0
  51. package/coverage/lcov-report/dist/examples/order/models/product-variant.js.html +222 -0
  52. package/coverage/lcov-report/dist/examples/order/models/product.js.html +192 -0
  53. package/coverage/lcov-report/dist/examples/order/models/utm-source.js.html +162 -0
  54. package/coverage/lcov-report/dist/examples/order/orm.js.html +126 -0
  55. package/coverage/lcov-report/dist/examples/order-more/business-objects/actual-product-variant.js.html +141 -0
  56. package/coverage/lcov-report/dist/examples/order-more/business-objects/actual-product-variants.js.html +99 -0
  57. package/coverage/lcov-report/dist/examples/order-more/business-objects/color.js.html +150 -0
  58. package/coverage/lcov-report/dist/examples/order-more/business-objects/colors.js.html +99 -0
  59. package/coverage/lcov-report/dist/examples/order-more/business-objects/customer.js.html +141 -0
  60. package/coverage/lcov-report/dist/examples/order-more/business-objects/customers.js.html +99 -0
  61. package/coverage/lcov-report/dist/examples/order-more/business-objects/gender.js.html +144 -0
  62. package/coverage/lcov-report/dist/examples/order-more/business-objects/genders.js.html +99 -0
  63. package/coverage/lcov-report/dist/examples/order-more/business-objects/index.html +344 -0
  64. package/coverage/lcov-report/dist/examples/order-more/business-objects/inventory-level.js.html +192 -0
  65. package/coverage/lcov-report/dist/examples/order-more/business-objects/inventory-levels.js.html +99 -0
  66. package/coverage/lcov-report/dist/examples/order-more/business-objects/line-item.js.html +219 -0
  67. package/coverage/lcov-report/dist/examples/order-more/business-objects/line-items.js.html +99 -0
  68. package/coverage/lcov-report/dist/examples/order-more/business-objects/order.js.html +339 -0
  69. package/coverage/lcov-report/dist/examples/order-more/business-objects/orders.js.html +99 -0
  70. package/coverage/lcov-report/dist/examples/order-more/business-objects/parcel-event.js.html +168 -0
  71. package/coverage/lcov-report/dist/examples/order-more/business-objects/parcel-events.js.html +99 -0
  72. package/coverage/lcov-report/dist/examples/order-more/business-objects/parcel-line-item.js.html +168 -0
  73. package/coverage/lcov-report/dist/examples/order-more/business-objects/parcel-line-items.js.html +99 -0
  74. package/coverage/lcov-report/dist/examples/order-more/business-objects/parcel.js.html +138 -0
  75. package/coverage/lcov-report/dist/examples/order-more/business-objects/parcels.js.html +99 -0
  76. package/coverage/lcov-report/dist/examples/order-more/business-objects/physical-address.js.html +204 -0
  77. package/coverage/lcov-report/dist/examples/order-more/business-objects/physical-addresses.js.html +108 -0
  78. package/coverage/lcov-report/dist/examples/order-more/business-objects/product-variant-image.js.html +174 -0
  79. package/coverage/lcov-report/dist/examples/order-more/business-objects/product-variant-images.js.html +99 -0
  80. package/coverage/lcov-report/dist/examples/order-more/business-objects/product-variant.js.html +258 -0
  81. package/coverage/lcov-report/dist/examples/order-more/business-objects/product-variants.js.html +99 -0
  82. package/coverage/lcov-report/dist/examples/order-more/business-objects/product.js.html +198 -0
  83. package/coverage/lcov-report/dist/examples/order-more/business-objects/products.js.html +99 -0
  84. package/coverage/lcov-report/dist/examples/order-more/business-objects/refund.js.html +198 -0
  85. package/coverage/lcov-report/dist/examples/order-more/business-objects/refunds.js.html +99 -0
  86. package/coverage/lcov-report/dist/examples/order-more/business-objects/shipment-actual-product-variant.js.html +180 -0
  87. package/coverage/lcov-report/dist/examples/order-more/business-objects/shipment-actual-product-variants.js.html +99 -0
  88. package/coverage/lcov-report/dist/examples/order-more/business-objects/shipment.js.html +144 -0
  89. package/coverage/lcov-report/dist/examples/order-more/business-objects/shipments.js.html +99 -0
  90. package/coverage/lcov-report/dist/examples/order-more/business-objects/size.js.html +144 -0
  91. package/coverage/lcov-report/dist/examples/order-more/business-objects/sizes.js.html +99 -0
  92. package/coverage/lcov-report/dist/examples/order-more/business-objects/utm-medium.js.html +144 -0
  93. package/coverage/lcov-report/dist/examples/order-more/business-objects/utm-source.js.html +147 -0
  94. package/coverage/lcov-report/dist/examples/order-more/entities/actual-product-variant.js.html +141 -0
  95. package/coverage/lcov-report/dist/examples/order-more/entities/color.js.html +150 -0
  96. package/coverage/lcov-report/dist/examples/order-more/entities/customer.js.html +141 -0
  97. package/coverage/lcov-report/dist/examples/order-more/entities/gender.js.html +144 -0
  98. package/coverage/lcov-report/dist/examples/order-more/entities/index.html +344 -0
  99. package/coverage/lcov-report/dist/examples/order-more/entities/inventory-level.js.html +192 -0
  100. package/coverage/lcov-report/dist/examples/order-more/entities/line-item.js.html +219 -0
  101. package/coverage/lcov-report/dist/examples/order-more/entities/order.js.html +339 -0
  102. package/coverage/lcov-report/dist/examples/order-more/entities/parcel-event.js.html +168 -0
  103. package/coverage/lcov-report/dist/examples/order-more/entities/parcel-line-item.js.html +168 -0
  104. package/coverage/lcov-report/dist/examples/order-more/entities/parcel.js.html +138 -0
  105. package/coverage/lcov-report/dist/examples/order-more/entities/physical-address.js.html +204 -0
  106. package/coverage/lcov-report/dist/examples/order-more/entities/product-variant-image.js.html +174 -0
  107. package/coverage/lcov-report/dist/examples/order-more/entities/product-variant.js.html +258 -0
  108. package/coverage/lcov-report/dist/examples/order-more/entities/product.js.html +198 -0
  109. package/coverage/lcov-report/dist/examples/order-more/entities/refund.js.html +198 -0
  110. package/coverage/lcov-report/dist/examples/order-more/entities/shipment-actual-product-variant.js.html +180 -0
  111. package/coverage/lcov-report/dist/examples/order-more/entities/shipment.js.html +144 -0
  112. package/coverage/lcov-report/dist/examples/order-more/entities/size.js.html +144 -0
  113. package/coverage/lcov-report/dist/examples/order-more/entities/utm-medium.js.html +144 -0
  114. package/coverage/lcov-report/dist/examples/order-more/entities/utm-source.js.html +147 -0
  115. package/coverage/lcov-report/dist/examples/order-more/index.html +97 -0
  116. package/coverage/lcov-report/dist/examples/order-more/models/actual-product-variant.js.html +141 -0
  117. package/coverage/lcov-report/dist/examples/order-more/models/color.js.html +150 -0
  118. package/coverage/lcov-report/dist/examples/order-more/models/customer.js.html +141 -0
  119. package/coverage/lcov-report/dist/examples/order-more/models/gender.js.html +144 -0
  120. package/coverage/lcov-report/dist/examples/order-more/models/index.html +344 -0
  121. package/coverage/lcov-report/dist/examples/order-more/models/inventory-level.js.html +192 -0
  122. package/coverage/lcov-report/dist/examples/order-more/models/line-item.js.html +219 -0
  123. package/coverage/lcov-report/dist/examples/order-more/models/order.js.html +339 -0
  124. package/coverage/lcov-report/dist/examples/order-more/models/parcel-event.js.html +168 -0
  125. package/coverage/lcov-report/dist/examples/order-more/models/parcel-line-item.js.html +168 -0
  126. package/coverage/lcov-report/dist/examples/order-more/models/parcel.js.html +138 -0
  127. package/coverage/lcov-report/dist/examples/order-more/models/physical-address.js.html +204 -0
  128. package/coverage/lcov-report/dist/examples/order-more/models/product-variant-image.js.html +174 -0
  129. package/coverage/lcov-report/dist/examples/order-more/models/product-variant.js.html +258 -0
  130. package/coverage/lcov-report/dist/examples/order-more/models/product.js.html +198 -0
  131. package/coverage/lcov-report/dist/examples/order-more/models/refund.js.html +198 -0
  132. package/coverage/lcov-report/dist/examples/order-more/models/shipment-actual-product-variant.js.html +180 -0
  133. package/coverage/lcov-report/dist/examples/order-more/models/shipment.js.html +144 -0
  134. package/coverage/lcov-report/dist/examples/order-more/models/size.js.html +144 -0
  135. package/coverage/lcov-report/dist/examples/order-more/models/utm-medium.js.html +144 -0
  136. package/coverage/lcov-report/dist/examples/order-more/models/utm-source.js.html +147 -0
  137. package/coverage/lcov-report/dist/examples/order-more/orm.js.html +216 -0
  138. package/coverage/lcov-report/dist/factory.js.html +501 -0
  139. package/coverage/lcov-report/dist/index.html +123 -0
  140. package/coverage/lcov-report/dist/index.js.html +153 -0
  141. package/coverage/lcov-report/dist/src/business-object.js.html +1218 -0
  142. package/coverage/lcov-report/dist/src/factory.js.html +1605 -0
  143. package/coverage/lcov-report/dist/src/index.html +110 -0
  144. package/coverage/lcov-report/dist/src/index.js.html +84 -0
  145. package/coverage/lcov-report/dist/test-utils/blog/index.html +97 -0
  146. package/coverage/lcov-report/dist/test-utils/blog/models/article.js.html +216 -0
  147. package/coverage/lcov-report/dist/test-utils/blog/models/article_tag.js.html +168 -0
  148. package/coverage/lcov-report/dist/test-utils/blog/models/article_tag.ts.html +192 -0
  149. package/coverage/lcov-report/dist/test-utils/blog/models/index.html +136 -0
  150. package/coverage/lcov-report/dist/test-utils/blog/models/person.js.html +213 -0
  151. package/coverage/lcov-report/dist/test-utils/blog/models/tag.js.html +144 -0
  152. package/coverage/lcov-report/dist/test-utils/blog/models/tag.ts.html +177 -0
  153. package/coverage/lcov-report/dist/test-utils/blog/orm.js.html +105 -0
  154. package/coverage/lcov-report/dist/test-utils/five/business-objects/index.html +149 -0
  155. package/coverage/lcov-report/dist/test-utils/five/business-objects/line-item.js.html +156 -0
  156. package/coverage/lcov-report/dist/test-utils/five/business-objects/line-items.js.html +99 -0
  157. package/coverage/lcov-report/dist/test-utils/five/business-objects/order.js.html +150 -0
  158. package/coverage/lcov-report/dist/test-utils/five/business-objects/orders.js.html +99 -0
  159. package/coverage/lcov-report/dist/test-utils/five/business-objects/parcel-event.js.html +168 -0
  160. package/coverage/lcov-report/dist/test-utils/five/business-objects/parcel-events.js.html +99 -0
  161. package/coverage/lcov-report/dist/test-utils/five/business-objects/parcel-line-item.js.html +168 -0
  162. package/coverage/lcov-report/dist/test-utils/five/business-objects/parcel-line-items.js.html +99 -0
  163. package/coverage/lcov-report/dist/test-utils/five/business-objects/parcel.js.html +138 -0
  164. package/coverage/lcov-report/dist/test-utils/five/business-objects/parcels.js.html +99 -0
  165. package/coverage/lcov-report/dist/test-utils/five/entities/index.html +149 -0
  166. package/coverage/lcov-report/dist/test-utils/five/entities/line-item.js.html +156 -0
  167. package/coverage/lcov-report/dist/test-utils/five/entities/order.js.html +150 -0
  168. package/coverage/lcov-report/dist/test-utils/five/entities/parcel-event.js.html +168 -0
  169. package/coverage/lcov-report/dist/test-utils/five/entities/parcel-line-item.js.html +168 -0
  170. package/coverage/lcov-report/dist/test-utils/five/entities/parcel.js.html +138 -0
  171. package/coverage/lcov-report/dist/test-utils/five/index.html +97 -0
  172. package/coverage/lcov-report/dist/test-utils/five/models/index.html +149 -0
  173. package/coverage/lcov-report/dist/test-utils/five/models/line-item.js.html +156 -0
  174. package/coverage/lcov-report/dist/test-utils/five/models/order.js.html +141 -0
  175. package/coverage/lcov-report/dist/test-utils/five/models/parcel-event.js.html +168 -0
  176. package/coverage/lcov-report/dist/test-utils/five/models/parcel-line-item.js.html +168 -0
  177. package/coverage/lcov-report/dist/test-utils/five/models/parcel.js.html +138 -0
  178. package/coverage/lcov-report/dist/test-utils/five/orm.js.html +126 -0
  179. package/coverage/lcov-report/dist/test-utils/nine/business-objects/feature-switch.js.html +147 -0
  180. package/coverage/lcov-report/dist/test-utils/nine/business-objects/feature-switches.js.html +108 -0
  181. package/coverage/lcov-report/dist/test-utils/nine/business-objects/index.html +97 -0
  182. package/coverage/lcov-report/dist/test-utils/nine/entities/feature-switch.js.html +147 -0
  183. package/coverage/lcov-report/dist/test-utils/nine/entities/index.html +97 -0
  184. package/coverage/lcov-report/dist/test-utils/nine/index.html +97 -0
  185. package/coverage/lcov-report/dist/test-utils/nine/models/feature-switch.js.html +147 -0
  186. package/coverage/lcov-report/dist/test-utils/nine/models/index.html +97 -0
  187. package/coverage/lcov-report/dist/test-utils/nine/orm.js.html +96 -0
  188. package/coverage/lcov-report/dist/test-utils/order/index.html +97 -0
  189. package/coverage/lcov-report/dist/test-utils/order/models/index.html +149 -0
  190. package/coverage/lcov-report/dist/test-utils/order/models/line-item.js.html +219 -0
  191. package/coverage/lcov-report/dist/test-utils/order/models/order.js.html +306 -0
  192. package/coverage/lcov-report/dist/test-utils/order/models/product-variant.js.html +222 -0
  193. package/coverage/lcov-report/dist/test-utils/order/models/product.js.html +192 -0
  194. package/coverage/lcov-report/dist/test-utils/order/models/utm-source.js.html +147 -0
  195. package/coverage/lcov-report/dist/test-utils/order/orm.js.html +126 -0
  196. package/coverage/lcov-report/dist/test-utils/order-more/index.html +97 -0
  197. package/coverage/lcov-report/dist/test-utils/order-more/models/actual-product-variant.js.html +141 -0
  198. package/coverage/lcov-report/dist/test-utils/order-more/models/color.js.html +168 -0
  199. package/coverage/lcov-report/dist/test-utils/order-more/models/customer.js.html +141 -0
  200. package/coverage/lcov-report/dist/test-utils/order-more/models/gender.js.html +144 -0
  201. package/coverage/lcov-report/dist/test-utils/order-more/models/index.html +344 -0
  202. package/coverage/lcov-report/dist/test-utils/order-more/models/inventory-level.js.html +192 -0
  203. package/coverage/lcov-report/dist/test-utils/order-more/models/line-item.js.html +219 -0
  204. package/coverage/lcov-report/dist/test-utils/order-more/models/order.js.html +339 -0
  205. package/coverage/lcov-report/dist/test-utils/order-more/models/parcel-event.js.html +168 -0
  206. package/coverage/lcov-report/dist/test-utils/order-more/models/parcel-line-item.js.html +168 -0
  207. package/coverage/lcov-report/dist/test-utils/order-more/models/parcel.js.html +138 -0
  208. package/coverage/lcov-report/dist/test-utils/order-more/models/physical-address.js.html +204 -0
  209. package/coverage/lcov-report/dist/test-utils/order-more/models/product-variant-image.js.html +174 -0
  210. package/coverage/lcov-report/dist/test-utils/order-more/models/product-variant.js.html +258 -0
  211. package/coverage/lcov-report/dist/test-utils/order-more/models/product.js.html +198 -0
  212. package/coverage/lcov-report/dist/test-utils/order-more/models/refund.js.html +198 -0
  213. package/coverage/lcov-report/dist/test-utils/order-more/models/shipment-actual-product-variant.js.html +180 -0
  214. package/coverage/lcov-report/dist/test-utils/order-more/models/shipment.js.html +156 -0
  215. package/coverage/lcov-report/dist/test-utils/order-more/models/size.js.html +144 -0
  216. package/coverage/lcov-report/dist/test-utils/order-more/models/utm-medium.js.html +144 -0
  217. package/coverage/lcov-report/dist/test-utils/order-more/models/utm-source.js.html +147 -0
  218. package/coverage/lcov-report/dist/test-utils/order-more/orm.js.html +216 -0
  219. package/coverage/lcov-report/dist/test-utils/six/business-objects/customer.js.html +141 -0
  220. package/coverage/lcov-report/dist/test-utils/six/business-objects/customers.js.html +99 -0
  221. package/coverage/lcov-report/dist/test-utils/six/business-objects/index.html +149 -0
  222. package/coverage/lcov-report/dist/test-utils/six/business-objects/line-item.js.html +156 -0
  223. package/coverage/lcov-report/dist/test-utils/six/business-objects/order.js.html +156 -0
  224. package/coverage/lcov-report/dist/test-utils/six/business-objects/orders.js.html +99 -0
  225. package/coverage/lcov-report/dist/test-utils/six/business-objects/parcel-line-item.js.html +168 -0
  226. package/coverage/lcov-report/dist/test-utils/six/business-objects/parcel-line-items.js.html +99 -0
  227. package/coverage/lcov-report/dist/test-utils/six/business-objects/parcel.js.html +138 -0
  228. package/coverage/lcov-report/dist/test-utils/six/business-objects/parcels.js.html +99 -0
  229. package/coverage/lcov-report/dist/test-utils/six/entities/customer.js.html +141 -0
  230. package/coverage/lcov-report/dist/test-utils/six/entities/index.html +149 -0
  231. package/coverage/lcov-report/dist/test-utils/six/entities/line-item.js.html +156 -0
  232. package/coverage/lcov-report/dist/test-utils/six/entities/order.js.html +156 -0
  233. package/coverage/lcov-report/dist/test-utils/six/entities/parcel-line-item.js.html +168 -0
  234. package/coverage/lcov-report/dist/test-utils/six/entities/parcel.js.html +138 -0
  235. package/coverage/lcov-report/dist/test-utils/six/index.html +97 -0
  236. package/coverage/lcov-report/dist/test-utils/six/models/customer.js.html +141 -0
  237. package/coverage/lcov-report/dist/test-utils/six/models/index.html +149 -0
  238. package/coverage/lcov-report/dist/test-utils/six/models/line-item.js.html +156 -0
  239. package/coverage/lcov-report/dist/test-utils/six/models/order.js.html +156 -0
  240. package/coverage/lcov-report/dist/test-utils/six/models/parcel-line-item.js.html +168 -0
  241. package/coverage/lcov-report/dist/test-utils/six/models/parcel.js.html +138 -0
  242. package/coverage/lcov-report/dist/test-utils/six/orm.js.html +126 -0
  243. package/coverage/lcov-report/dist/test-utils/thirteen/business-objects/audience.js.html +144 -0
  244. package/coverage/lcov-report/dist/test-utils/thirteen/business-objects/audiences.js.html +99 -0
  245. package/coverage/lcov-report/dist/test-utils/thirteen/business-objects/brand.js.html +144 -0
  246. package/coverage/lcov-report/dist/test-utils/thirteen/business-objects/brands.js.html +99 -0
  247. package/coverage/lcov-report/dist/test-utils/thirteen/business-objects/categories.js.html +108 -0
  248. package/coverage/lcov-report/dist/test-utils/thirteen/business-objects/category.js.html +144 -0
  249. package/coverage/lcov-report/dist/test-utils/thirteen/business-objects/index.html +188 -0
  250. package/coverage/lcov-report/dist/test-utils/thirteen/business-objects/member.js.html +144 -0
  251. package/coverage/lcov-report/dist/test-utils/thirteen/business-objects/members.js.html +99 -0
  252. package/coverage/lcov-report/dist/test-utils/thirteen/business-objects/passion.js.html +144 -0
  253. package/coverage/lcov-report/dist/test-utils/thirteen/business-objects/passions.js.html +99 -0
  254. package/coverage/lcov-report/dist/test-utils/thirteen/business-objects/product.js.html +156 -0
  255. package/coverage/lcov-report/dist/test-utils/thirteen/business-objects/products.js.html +99 -0
  256. package/coverage/lcov-report/dist/test-utils/thirteen/business-objects/recommendation-audience.js.html +168 -0
  257. package/coverage/lcov-report/dist/test-utils/thirteen/business-objects/recommendation-audiences.js.html +99 -0
  258. package/coverage/lcov-report/dist/test-utils/thirteen/business-objects/recommendation.js.html +204 -0
  259. package/coverage/lcov-report/dist/test-utils/thirteen/business-objects/recommendations.js.html +99 -0
  260. package/coverage/lcov-report/dist/test-utils/thirteen/entities/audience.js.html +144 -0
  261. package/coverage/lcov-report/dist/test-utils/thirteen/entities/brand.js.html +144 -0
  262. package/coverage/lcov-report/dist/test-utils/thirteen/entities/category.js.html +144 -0
  263. package/coverage/lcov-report/dist/test-utils/thirteen/entities/index.html +188 -0
  264. package/coverage/lcov-report/dist/test-utils/thirteen/entities/member.js.html +144 -0
  265. package/coverage/lcov-report/dist/test-utils/thirteen/entities/passion.js.html +144 -0
  266. package/coverage/lcov-report/dist/test-utils/thirteen/entities/product.js.html +156 -0
  267. package/coverage/lcov-report/dist/test-utils/thirteen/entities/recommendation-audience.js.html +168 -0
  268. package/coverage/lcov-report/dist/test-utils/thirteen/entities/recommendation.js.html +204 -0
  269. package/coverage/lcov-report/dist/test-utils/thirteen/index.html +97 -0
  270. package/coverage/lcov-report/dist/test-utils/thirteen/models/audience.js.html +138 -0
  271. package/coverage/lcov-report/dist/test-utils/thirteen/models/brand.js.html +138 -0
  272. package/coverage/lcov-report/dist/test-utils/thirteen/models/category.js.html +138 -0
  273. package/coverage/lcov-report/dist/test-utils/thirteen/models/index.html +188 -0
  274. package/coverage/lcov-report/dist/test-utils/thirteen/models/member.js.html +138 -0
  275. package/coverage/lcov-report/dist/test-utils/thirteen/models/passion.js.html +138 -0
  276. package/coverage/lcov-report/dist/test-utils/thirteen/models/product.js.html +156 -0
  277. package/coverage/lcov-report/dist/test-utils/thirteen/models/recommendation-audience.js.html +168 -0
  278. package/coverage/lcov-report/dist/test-utils/thirteen/models/recommendation.js.html +204 -0
  279. package/coverage/lcov-report/dist/test-utils/thirteen/orm.js.html +144 -0
  280. package/coverage/lcov-report/dist/test-utils/three/index.html +97 -0
  281. package/coverage/lcov-report/dist/test-utils/three/results.js.html +1335 -0
  282. package/coverage/lcov-report/dist/test-utils/twelve/business-objects/index.html +110 -0
  283. package/coverage/lcov-report/dist/test-utils/twelve/business-objects/member.js.html +144 -0
  284. package/coverage/lcov-report/dist/test-utils/twelve/business-objects/members.js.html +99 -0
  285. package/coverage/lcov-report/dist/test-utils/twelve/business-objects/prompt.js.html +165 -0
  286. package/coverage/lcov-report/dist/test-utils/twelve/business-objects/prompts.js.html +99 -0
  287. package/coverage/lcov-report/dist/test-utils/twelve/entities/index.html +110 -0
  288. package/coverage/lcov-report/dist/test-utils/twelve/entities/member.js.html +144 -0
  289. package/coverage/lcov-report/dist/test-utils/twelve/entities/prompt.js.html +165 -0
  290. package/coverage/lcov-report/dist/test-utils/twelve/index.html +97 -0
  291. package/coverage/lcov-report/dist/test-utils/twelve/models/index.html +110 -0
  292. package/coverage/lcov-report/dist/test-utils/twelve/models/member.js.html +138 -0
  293. package/coverage/lcov-report/dist/test-utils/twelve/models/prompt.js.html +165 -0
  294. package/coverage/lcov-report/dist/test-utils/twelve/orm.js.html +99 -0
  295. package/coverage/lcov-report/dist/test-utils/two/index.html +97 -0
  296. package/coverage/lcov-report/dist/test-utils/two/results.js.html +1035 -0
  297. package/coverage/lcov-report/examples/blog/bo/article.js.html +174 -0
  298. package/coverage/lcov-report/examples/blog/bo/article_tag.js.html +150 -0
  299. package/coverage/lcov-report/examples/blog/bo/article_tags.js.html +99 -0
  300. package/coverage/lcov-report/examples/blog/bo/articles.js.html +99 -0
  301. package/coverage/lcov-report/examples/blog/bo/base.js.html +84 -0
  302. package/coverage/lcov-report/examples/blog/bo/index.html +162 -0
  303. package/coverage/lcov-report/examples/blog/bo/person.js.html +153 -0
  304. package/coverage/lcov-report/examples/blog/bo/tag.js.html +114 -0
  305. package/coverage/lcov-report/examples/blog/business-objects/article.js.html +174 -0
  306. package/coverage/lcov-report/examples/blog/business-objects/article.ts.html +264 -0
  307. package/coverage/lcov-report/examples/blog/business-objects/article_tag.js.html +150 -0
  308. package/coverage/lcov-report/examples/blog/business-objects/article_tag.ts.html +192 -0
  309. package/coverage/lcov-report/examples/blog/business-objects/article_tags.js.html +99 -0
  310. package/coverage/lcov-report/examples/blog/business-objects/articles.js.html +72 -0
  311. package/coverage/lcov-report/examples/blog/business-objects/index.html +136 -0
  312. package/coverage/lcov-report/examples/blog/business-objects/person.js.html +153 -0
  313. package/coverage/lcov-report/examples/blog/business-objects/person.ts.html +303 -0
  314. package/coverage/lcov-report/examples/blog/business-objects/tag.js.html +114 -0
  315. package/coverage/lcov-report/examples/blog/business-objects/tag.ts.html +177 -0
  316. package/coverage/lcov-report/examples/blog/business-objects.js.html +99 -0
  317. package/coverage/lcov-report/examples/blog/entities/article.ts.html +264 -0
  318. package/coverage/lcov-report/examples/blog/entities/article_tag.ts.html +192 -0
  319. package/coverage/lcov-report/examples/blog/entities/index.html +136 -0
  320. package/coverage/lcov-report/examples/blog/entities/person.ts.html +303 -0
  321. package/coverage/lcov-report/examples/blog/entities/tag.ts.html +177 -0
  322. package/coverage/lcov-report/examples/blog/index.html +97 -0
  323. package/coverage/lcov-report/examples/blog/models/article.ts.html +264 -0
  324. package/coverage/lcov-report/examples/blog/models/article_tag.ts.html +192 -0
  325. package/coverage/lcov-report/examples/blog/models/index.html +136 -0
  326. package/coverage/lcov-report/examples/blog/models/person.ts.html +303 -0
  327. package/coverage/lcov-report/examples/blog/models/tag.ts.html +177 -0
  328. package/coverage/lcov-report/examples/blog/orm.js.html +111 -0
  329. package/coverage/lcov-report/examples/blog/orm.ts.html +117 -0
  330. package/coverage/lcov-report/examples/order/bo/base.js.html +84 -0
  331. package/coverage/lcov-report/examples/order/bo/index.html +201 -0
  332. package/coverage/lcov-report/examples/order/bo/line-item.js.html +177 -0
  333. package/coverage/lcov-report/examples/order/bo/line-items.js.html +99 -0
  334. package/coverage/lcov-report/examples/order/bo/order.js.html +210 -0
  335. package/coverage/lcov-report/examples/order/bo/orders.js.html +99 -0
  336. package/coverage/lcov-report/examples/order/bo/product-variant.js.html +177 -0
  337. package/coverage/lcov-report/examples/order/bo/product-variants.js.html +99 -0
  338. package/coverage/lcov-report/examples/order/bo/product.js.html +162 -0
  339. package/coverage/lcov-report/examples/order/bo/products.js.html +99 -0
  340. package/coverage/lcov-report/examples/order/bo/utm-source.js.html +114 -0
  341. package/coverage/lcov-report/examples/order/business-objects/index.html +149 -0
  342. package/coverage/lcov-report/examples/order/business-objects/line-item.js.html +177 -0
  343. package/coverage/lcov-report/examples/order/business-objects/line-item.ts.html +267 -0
  344. package/coverage/lcov-report/examples/order/business-objects/line-items.js.html +99 -0
  345. package/coverage/lcov-report/examples/order/business-objects/order.js.html +210 -0
  346. package/coverage/lcov-report/examples/order/business-objects/order.ts.html +390 -0
  347. package/coverage/lcov-report/examples/order/business-objects/orders.js.html +99 -0
  348. package/coverage/lcov-report/examples/order/business-objects/product-variant.js.html +177 -0
  349. package/coverage/lcov-report/examples/order/business-objects/product-variant.ts.html +273 -0
  350. package/coverage/lcov-report/examples/order/business-objects/product-variants.js.html +99 -0
  351. package/coverage/lcov-report/examples/order/business-objects/product.js.html +162 -0
  352. package/coverage/lcov-report/examples/order/business-objects/product.ts.html +228 -0
  353. package/coverage/lcov-report/examples/order/business-objects/products.js.html +99 -0
  354. package/coverage/lcov-report/examples/order/business-objects/utm-source.js.html +114 -0
  355. package/coverage/lcov-report/examples/order/business-objects/utm-source.ts.html +183 -0
  356. package/coverage/lcov-report/examples/order/business-objects.js.html +102 -0
  357. package/coverage/lcov-report/examples/order/entities/index.html +149 -0
  358. package/coverage/lcov-report/examples/order/entities/line-item.ts.html +267 -0
  359. package/coverage/lcov-report/examples/order/entities/order.ts.html +390 -0
  360. package/coverage/lcov-report/examples/order/entities/product-variant.ts.html +273 -0
  361. package/coverage/lcov-report/examples/order/entities/product.ts.html +228 -0
  362. package/coverage/lcov-report/examples/order/entities/utm-source.ts.html +183 -0
  363. package/coverage/lcov-report/examples/order/index.html +97 -0
  364. package/coverage/lcov-report/examples/order/models/index.html +149 -0
  365. package/coverage/lcov-report/examples/order/models/line-item.ts.html +267 -0
  366. package/coverage/lcov-report/examples/order/models/order.ts.html +390 -0
  367. package/coverage/lcov-report/examples/order/models/product-variant.ts.html +273 -0
  368. package/coverage/lcov-report/examples/order/models/product.ts.html +228 -0
  369. package/coverage/lcov-report/examples/order/models/utm-source.ts.html +183 -0
  370. package/coverage/lcov-report/examples/order/orm.js.html +129 -0
  371. package/coverage/lcov-report/examples/order/orm.ts.html +123 -0
  372. package/coverage/lcov-report/examples/order-more/bo/actual-product-variant.js.html +153 -0
  373. package/coverage/lcov-report/examples/order-more/bo/actual-product-variants.js.html +99 -0
  374. package/coverage/lcov-report/examples/order-more/bo/base.js.html +84 -0
  375. package/coverage/lcov-report/examples/order-more/bo/color.js.html +132 -0
  376. package/coverage/lcov-report/examples/order-more/bo/colors.js.html +99 -0
  377. package/coverage/lcov-report/examples/order-more/bo/customer.js.html +132 -0
  378. package/coverage/lcov-report/examples/order-more/bo/customers.js.html +99 -0
  379. package/coverage/lcov-report/examples/order-more/bo/gender.js.html +132 -0
  380. package/coverage/lcov-report/examples/order-more/bo/genders.js.html +99 -0
  381. package/coverage/lcov-report/examples/order-more/bo/index.html +578 -0
  382. package/coverage/lcov-report/examples/order-more/bo/inventory-level.js.html +162 -0
  383. package/coverage/lcov-report/examples/order-more/bo/inventory-levels.js.html +99 -0
  384. package/coverage/lcov-report/examples/order-more/bo/line-item.js.html +177 -0
  385. package/coverage/lcov-report/examples/order-more/bo/line-items.js.html +99 -0
  386. package/coverage/lcov-report/examples/order-more/bo/order.js.html +225 -0
  387. package/coverage/lcov-report/examples/order-more/bo/orders.js.html +99 -0
  388. package/coverage/lcov-report/examples/order-more/bo/parcel-event.js.html +135 -0
  389. package/coverage/lcov-report/examples/order-more/bo/parcel-events.js.html +99 -0
  390. package/coverage/lcov-report/examples/order-more/bo/parcel-line-item.js.html +150 -0
  391. package/coverage/lcov-report/examples/order-more/bo/parcel-line-items.js.html +99 -0
  392. package/coverage/lcov-report/examples/order-more/bo/parcel.js.html +132 -0
  393. package/coverage/lcov-report/examples/order-more/bo/parcels.js.html +99 -0
  394. package/coverage/lcov-report/examples/order-more/bo/physical-address.js.html +168 -0
  395. package/coverage/lcov-report/examples/order-more/bo/physical-addresses.js.html +108 -0
  396. package/coverage/lcov-report/examples/order-more/bo/product-variant-image.js.html +153 -0
  397. package/coverage/lcov-report/examples/order-more/bo/product-variant-images.js.html +99 -0
  398. package/coverage/lcov-report/examples/order-more/bo/product-variant.js.html +195 -0
  399. package/coverage/lcov-report/examples/order-more/bo/product-variants.js.html +99 -0
  400. package/coverage/lcov-report/examples/order-more/bo/product.js.html +165 -0
  401. package/coverage/lcov-report/examples/order-more/bo/products.js.html +99 -0
  402. package/coverage/lcov-report/examples/order-more/bo/refund.js.html +162 -0
  403. package/coverage/lcov-report/examples/order-more/bo/refunds.js.html +99 -0
  404. package/coverage/lcov-report/examples/order-more/bo/shipment-actual-product-variant.js.html +156 -0
  405. package/coverage/lcov-report/examples/order-more/bo/shipment-actual-product-variants.js.html +99 -0
  406. package/coverage/lcov-report/examples/order-more/bo/shipment.js.html +132 -0
  407. package/coverage/lcov-report/examples/order-more/bo/shipments.js.html +99 -0
  408. package/coverage/lcov-report/examples/order-more/bo/size.js.html +132 -0
  409. package/coverage/lcov-report/examples/order-more/bo/sizes.js.html +99 -0
  410. package/coverage/lcov-report/examples/order-more/bo/utm-medium.js.html +114 -0
  411. package/coverage/lcov-report/examples/order-more/bo/utm-source.js.html +114 -0
  412. package/coverage/lcov-report/examples/order-more/business-objects/actual-product-variant.js.html +153 -0
  413. package/coverage/lcov-report/examples/order-more/business-objects/actual-product-variant.ts.html +156 -0
  414. package/coverage/lcov-report/examples/order-more/business-objects/actual-product-variants.js.html +99 -0
  415. package/coverage/lcov-report/examples/order-more/business-objects/color.js.html +132 -0
  416. package/coverage/lcov-report/examples/order-more/business-objects/color.ts.html +174 -0
  417. package/coverage/lcov-report/examples/order-more/business-objects/colors.js.html +99 -0
  418. package/coverage/lcov-report/examples/order-more/business-objects/customer.js.html +132 -0
  419. package/coverage/lcov-report/examples/order-more/business-objects/customer.ts.html +156 -0
  420. package/coverage/lcov-report/examples/order-more/business-objects/customers.js.html +99 -0
  421. package/coverage/lcov-report/examples/order-more/business-objects/gender.js.html +132 -0
  422. package/coverage/lcov-report/examples/order-more/business-objects/gender.ts.html +162 -0
  423. package/coverage/lcov-report/examples/order-more/business-objects/genders.js.html +99 -0
  424. package/coverage/lcov-report/examples/order-more/business-objects/index.html +344 -0
  425. package/coverage/lcov-report/examples/order-more/business-objects/inventory-level.js.html +162 -0
  426. package/coverage/lcov-report/examples/order-more/business-objects/inventory-level.ts.html +231 -0
  427. package/coverage/lcov-report/examples/order-more/business-objects/inventory-levels.js.html +99 -0
  428. package/coverage/lcov-report/examples/order-more/business-objects/line-item.js.html +177 -0
  429. package/coverage/lcov-report/examples/order-more/business-objects/line-item.ts.html +267 -0
  430. package/coverage/lcov-report/examples/order-more/business-objects/line-items.js.html +99 -0
  431. package/coverage/lcov-report/examples/order-more/business-objects/order.js.html +225 -0
  432. package/coverage/lcov-report/examples/order-more/business-objects/order.ts.html +441 -0
  433. package/coverage/lcov-report/examples/order-more/business-objects/orders.js.html +99 -0
  434. package/coverage/lcov-report/examples/order-more/business-objects/parcel-event.js.html +135 -0
  435. package/coverage/lcov-report/examples/order-more/business-objects/parcel-event.ts.html +192 -0
  436. package/coverage/lcov-report/examples/order-more/business-objects/parcel-events.js.html +99 -0
  437. package/coverage/lcov-report/examples/order-more/business-objects/parcel-line-item.js.html +150 -0
  438. package/coverage/lcov-report/examples/order-more/business-objects/parcel-line-item.ts.html +192 -0
  439. package/coverage/lcov-report/examples/order-more/business-objects/parcel-line-items.js.html +99 -0
  440. package/coverage/lcov-report/examples/order-more/business-objects/parcel.js.html +132 -0
  441. package/coverage/lcov-report/examples/order-more/business-objects/parcel.ts.html +150 -0
  442. package/coverage/lcov-report/examples/order-more/business-objects/parcels.js.html +99 -0
  443. package/coverage/lcov-report/examples/order-more/business-objects/physical-address.js.html +168 -0
  444. package/coverage/lcov-report/examples/order-more/business-objects/physical-address.ts.html +246 -0
  445. package/coverage/lcov-report/examples/order-more/business-objects/physical-addresses.js.html +108 -0
  446. package/coverage/lcov-report/examples/order-more/business-objects/product-variant-image.js.html +153 -0
  447. package/coverage/lcov-report/examples/order-more/business-objects/product-variant-image.ts.html +201 -0
  448. package/coverage/lcov-report/examples/order-more/business-objects/product-variant-images.js.html +99 -0
  449. package/coverage/lcov-report/examples/order-more/business-objects/product-variant.js.html +195 -0
  450. package/coverage/lcov-report/examples/order-more/business-objects/product-variant.ts.html +327 -0
  451. package/coverage/lcov-report/examples/order-more/business-objects/product-variants.js.html +99 -0
  452. package/coverage/lcov-report/examples/order-more/business-objects/product.js.html +165 -0
  453. package/coverage/lcov-report/examples/order-more/business-objects/product.ts.html +237 -0
  454. package/coverage/lcov-report/examples/order-more/business-objects/products.js.html +99 -0
  455. package/coverage/lcov-report/examples/order-more/business-objects/refund.js.html +162 -0
  456. package/coverage/lcov-report/examples/order-more/business-objects/refund.ts.html +237 -0
  457. package/coverage/lcov-report/examples/order-more/business-objects/refunds.js.html +99 -0
  458. package/coverage/lcov-report/examples/order-more/business-objects/shipment-actual-product-variant.js.html +156 -0
  459. package/coverage/lcov-report/examples/order-more/business-objects/shipment-actual-product-variant.ts.html +210 -0
  460. package/coverage/lcov-report/examples/order-more/business-objects/shipment-actual-product-variants.js.html +99 -0
  461. package/coverage/lcov-report/examples/order-more/business-objects/shipment.js.html +132 -0
  462. package/coverage/lcov-report/examples/order-more/business-objects/shipment.ts.html +162 -0
  463. package/coverage/lcov-report/examples/order-more/business-objects/shipments.js.html +99 -0
  464. package/coverage/lcov-report/examples/order-more/business-objects/size.js.html +132 -0
  465. package/coverage/lcov-report/examples/order-more/business-objects/size.ts.html +162 -0
  466. package/coverage/lcov-report/examples/order-more/business-objects/sizes.js.html +99 -0
  467. package/coverage/lcov-report/examples/order-more/business-objects/utm-medium.js.html +114 -0
  468. package/coverage/lcov-report/examples/order-more/business-objects/utm-medium.ts.html +162 -0
  469. package/coverage/lcov-report/examples/order-more/business-objects/utm-source.js.html +114 -0
  470. package/coverage/lcov-report/examples/order-more/business-objects/utm-source.ts.html +168 -0
  471. package/coverage/lcov-report/examples/order-more/business-objects.js.html +147 -0
  472. package/coverage/lcov-report/examples/order-more/entities/actual-product-variant.ts.html +156 -0
  473. package/coverage/lcov-report/examples/order-more/entities/color.ts.html +174 -0
  474. package/coverage/lcov-report/examples/order-more/entities/customer.ts.html +156 -0
  475. package/coverage/lcov-report/examples/order-more/entities/gender.ts.html +162 -0
  476. package/coverage/lcov-report/examples/order-more/entities/index.html +344 -0
  477. package/coverage/lcov-report/examples/order-more/entities/inventory-level.ts.html +231 -0
  478. package/coverage/lcov-report/examples/order-more/entities/line-item.ts.html +267 -0
  479. package/coverage/lcov-report/examples/order-more/entities/order.ts.html +441 -0
  480. package/coverage/lcov-report/examples/order-more/entities/parcel-event.ts.html +192 -0
  481. package/coverage/lcov-report/examples/order-more/entities/parcel-line-item.ts.html +192 -0
  482. package/coverage/lcov-report/examples/order-more/entities/parcel.ts.html +150 -0
  483. package/coverage/lcov-report/examples/order-more/entities/physical-address.ts.html +246 -0
  484. package/coverage/lcov-report/examples/order-more/entities/product-variant-image.ts.html +201 -0
  485. package/coverage/lcov-report/examples/order-more/entities/product-variant.ts.html +327 -0
  486. package/coverage/lcov-report/examples/order-more/entities/product.ts.html +237 -0
  487. package/coverage/lcov-report/examples/order-more/entities/refund.ts.html +237 -0
  488. package/coverage/lcov-report/examples/order-more/entities/shipment-actual-product-variant.ts.html +210 -0
  489. package/coverage/lcov-report/examples/order-more/entities/shipment.ts.html +162 -0
  490. package/coverage/lcov-report/examples/order-more/entities/size.ts.html +162 -0
  491. package/coverage/lcov-report/examples/order-more/entities/utm-medium.ts.html +162 -0
  492. package/coverage/lcov-report/examples/order-more/entities/utm-source.ts.html +168 -0
  493. package/coverage/lcov-report/examples/order-more/index.html +97 -0
  494. package/coverage/lcov-report/examples/order-more/models/actual-product-variant.ts.html +156 -0
  495. package/coverage/lcov-report/examples/order-more/models/color.ts.html +174 -0
  496. package/coverage/lcov-report/examples/order-more/models/customer.ts.html +156 -0
  497. package/coverage/lcov-report/examples/order-more/models/gender.ts.html +162 -0
  498. package/coverage/lcov-report/examples/order-more/models/index.html +344 -0
  499. package/coverage/lcov-report/examples/order-more/models/inventory-level.ts.html +231 -0
  500. package/coverage/lcov-report/examples/order-more/models/line-item.ts.html +267 -0
  501. package/coverage/lcov-report/examples/order-more/models/order.ts.html +441 -0
  502. package/coverage/lcov-report/examples/order-more/models/parcel-event.ts.html +192 -0
  503. package/coverage/lcov-report/examples/order-more/models/parcel-line-item.ts.html +192 -0
  504. package/coverage/lcov-report/examples/order-more/models/parcel.ts.html +150 -0
  505. package/coverage/lcov-report/examples/order-more/models/physical-address.ts.html +246 -0
  506. package/coverage/lcov-report/examples/order-more/models/product-variant-image.ts.html +201 -0
  507. package/coverage/lcov-report/examples/order-more/models/product-variant.ts.html +327 -0
  508. package/coverage/lcov-report/examples/order-more/models/product.ts.html +237 -0
  509. package/coverage/lcov-report/examples/order-more/models/refund.ts.html +237 -0
  510. package/coverage/lcov-report/examples/order-more/models/shipment-actual-product-variant.ts.html +210 -0
  511. package/coverage/lcov-report/examples/order-more/models/shipment.ts.html +162 -0
  512. package/coverage/lcov-report/examples/order-more/models/size.ts.html +162 -0
  513. package/coverage/lcov-report/examples/order-more/models/utm-medium.ts.html +162 -0
  514. package/coverage/lcov-report/examples/order-more/models/utm-source.ts.html +168 -0
  515. package/coverage/lcov-report/examples/order-more/orm.js.html +216 -0
  516. package/coverage/lcov-report/examples/order-more/orm.ts.html +213 -0
  517. package/coverage/lcov-report/five/bo/base.js.html +84 -0
  518. package/coverage/lcov-report/five/bo/index.html +227 -0
  519. package/coverage/lcov-report/five/bo/line-item.js.html +135 -0
  520. package/coverage/lcov-report/five/bo/line-items.js.html +96 -0
  521. package/coverage/lcov-report/five/bo/order.js.html +132 -0
  522. package/coverage/lcov-report/five/bo/orders.js.html +96 -0
  523. package/coverage/lcov-report/five/bo/parcel-event.js.html +141 -0
  524. package/coverage/lcov-report/five/bo/parcel-events.js.html +96 -0
  525. package/coverage/lcov-report/five/bo/parcel-line-item.js.html +141 -0
  526. package/coverage/lcov-report/five/bo/parcel-line-items.js.html +96 -0
  527. package/coverage/lcov-report/five/bo/parcel.js.html +129 -0
  528. package/coverage/lcov-report/five/bo/parcels.js.html +96 -0
  529. package/coverage/lcov-report/five/business-objects.js.html +102 -0
  530. package/coverage/lcov-report/five/index.html +97 -0
  531. package/coverage/lcov-report/fixtures/index.html +110 -0
  532. package/coverage/lcov-report/fixtures/three.js.html +1335 -0
  533. package/coverage/lcov-report/fixtures/two.js.html +1035 -0
  534. package/coverage/lcov-report/index.html +578 -0
  535. package/coverage/lcov-report/prettify.css +1 -0
  536. package/coverage/lcov-report/prettify.js +2 -0
  537. package/coverage/lcov-report/six/bo/base.js.html +84 -0
  538. package/coverage/lcov-report/six/bo/customer.js.html +135 -0
  539. package/coverage/lcov-report/six/bo/customers.js.html +96 -0
  540. package/coverage/lcov-report/six/bo/index.html +214 -0
  541. package/coverage/lcov-report/six/bo/line-item.js.html +138 -0
  542. package/coverage/lcov-report/six/bo/order.js.html +138 -0
  543. package/coverage/lcov-report/six/bo/orders.js.html +96 -0
  544. package/coverage/lcov-report/six/bo/parcel-line-item.js.html +144 -0
  545. package/coverage/lcov-report/six/bo/parcel-line-items.js.html +96 -0
  546. package/coverage/lcov-report/six/bo/parcel.js.html +132 -0
  547. package/coverage/lcov-report/six/bo/parcels.js.html +96 -0
  548. package/coverage/lcov-report/six/business-objects.js.html +102 -0
  549. package/coverage/lcov-report/six/index.html +97 -0
  550. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  551. package/coverage/lcov-report/sorter.js +170 -0
  552. package/coverage/lcov-report/src/bo/base-bo-collection.js.html +114 -0
  553. package/coverage/lcov-report/src/bo/base-bo.js.html +1206 -0
  554. package/coverage/lcov-report/src/bo/index.html +110 -0
  555. package/coverage/lcov-report/src/bo.js.html +1248 -0
  556. package/coverage/lcov-report/src/business-object.js.html +1248 -0
  557. package/coverage/lcov-report/src/business-object.ts.html +1596 -0
  558. package/coverage/lcov-report/src/dao/base-dao.js.html +507 -0
  559. package/coverage/lcov-report/src/dao/index.html +97 -0
  560. package/coverage/lcov-report/src/factory.js.html +570 -0
  561. package/coverage/lcov-report/src/factory.ts.html +2268 -0
  562. package/coverage/lcov-report/src/index.html +110 -0
  563. package/coverage/lcov-report/src/index.js.html +219 -0
  564. package/coverage/lcov-report/src/index.ts.html +93 -0
  565. package/coverage/lcov-report/src/util/helpers.js.html +153 -0
  566. package/coverage/lcov-report/src/util/index.html +97 -0
  567. package/coverage/lcov-report/test-utils/blog/index.html +97 -0
  568. package/coverage/lcov-report/test-utils/blog/models/article.ts.html +264 -0
  569. package/coverage/lcov-report/test-utils/blog/models/article_tag.ts.html +192 -0
  570. package/coverage/lcov-report/test-utils/blog/models/index.html +136 -0
  571. package/coverage/lcov-report/test-utils/blog/models/person.ts.html +303 -0
  572. package/coverage/lcov-report/test-utils/blog/models/tag.ts.html +165 -0
  573. package/coverage/lcov-report/test-utils/blog/orm.ts.html +102 -0
  574. package/coverage/lcov-report/test-utils/five/bo/base.js.html +84 -0
  575. package/coverage/lcov-report/test-utils/five/bo/index.html +214 -0
  576. package/coverage/lcov-report/test-utils/five/bo/line-item.js.html +135 -0
  577. package/coverage/lcov-report/test-utils/five/bo/line-items.js.html +99 -0
  578. package/coverage/lcov-report/test-utils/five/bo/order.js.html +132 -0
  579. package/coverage/lcov-report/test-utils/five/bo/orders.js.html +99 -0
  580. package/coverage/lcov-report/test-utils/five/bo/parcel-event.js.html +135 -0
  581. package/coverage/lcov-report/test-utils/five/bo/parcel-events.js.html +99 -0
  582. package/coverage/lcov-report/test-utils/five/bo/parcel-line-item.js.html +150 -0
  583. package/coverage/lcov-report/test-utils/five/bo/parcel-line-items.js.html +99 -0
  584. package/coverage/lcov-report/test-utils/five/bo/parcel.js.html +132 -0
  585. package/coverage/lcov-report/test-utils/five/bo/parcels.js.html +99 -0
  586. package/coverage/lcov-report/test-utils/five/business-objects/index.html +149 -0
  587. package/coverage/lcov-report/test-utils/five/business-objects/line-item.js.html +135 -0
  588. package/coverage/lcov-report/test-utils/five/business-objects/line-item.ts.html +174 -0
  589. package/coverage/lcov-report/test-utils/five/business-objects/line-items.js.html +99 -0
  590. package/coverage/lcov-report/test-utils/five/business-objects/order.js.html +132 -0
  591. package/coverage/lcov-report/test-utils/five/business-objects/order.ts.html +165 -0
  592. package/coverage/lcov-report/test-utils/five/business-objects/orders.js.html +99 -0
  593. package/coverage/lcov-report/test-utils/five/business-objects/parcel-event.js.html +135 -0
  594. package/coverage/lcov-report/test-utils/five/business-objects/parcel-event.ts.html +192 -0
  595. package/coverage/lcov-report/test-utils/five/business-objects/parcel-events.js.html +99 -0
  596. package/coverage/lcov-report/test-utils/five/business-objects/parcel-line-item.js.html +150 -0
  597. package/coverage/lcov-report/test-utils/five/business-objects/parcel-line-item.ts.html +192 -0
  598. package/coverage/lcov-report/test-utils/five/business-objects/parcel-line-items.js.html +99 -0
  599. package/coverage/lcov-report/test-utils/five/business-objects/parcel.js.html +132 -0
  600. package/coverage/lcov-report/test-utils/five/business-objects/parcel.ts.html +150 -0
  601. package/coverage/lcov-report/test-utils/five/business-objects/parcels.js.html +99 -0
  602. package/coverage/lcov-report/test-utils/five/business-objects.js.html +102 -0
  603. package/coverage/lcov-report/test-utils/five/entities/index.html +149 -0
  604. package/coverage/lcov-report/test-utils/five/entities/line-item.ts.html +174 -0
  605. package/coverage/lcov-report/test-utils/five/entities/order.ts.html +165 -0
  606. package/coverage/lcov-report/test-utils/five/entities/parcel-event.ts.html +192 -0
  607. package/coverage/lcov-report/test-utils/five/entities/parcel-line-item.ts.html +192 -0
  608. package/coverage/lcov-report/test-utils/five/entities/parcel.ts.html +150 -0
  609. package/coverage/lcov-report/test-utils/five/index.html +97 -0
  610. package/coverage/lcov-report/test-utils/five/models/index.html +149 -0
  611. package/coverage/lcov-report/test-utils/five/models/line-item.ts.html +174 -0
  612. package/coverage/lcov-report/test-utils/five/models/order.ts.html +156 -0
  613. package/coverage/lcov-report/test-utils/five/models/parcel-event.ts.html +192 -0
  614. package/coverage/lcov-report/test-utils/five/models/parcel-line-item.ts.html +192 -0
  615. package/coverage/lcov-report/test-utils/five/models/parcel.ts.html +150 -0
  616. package/coverage/lcov-report/test-utils/five/orm.js.html +126 -0
  617. package/coverage/lcov-report/test-utils/five/orm.ts.html +120 -0
  618. package/coverage/lcov-report/test-utils/nine/bo/base.js.html +84 -0
  619. package/coverage/lcov-report/test-utils/nine/bo/feature-switch.js.html +132 -0
  620. package/coverage/lcov-report/test-utils/nine/bo/feature-switches.js.html +108 -0
  621. package/coverage/lcov-report/test-utils/nine/bo/index.html +110 -0
  622. package/coverage/lcov-report/test-utils/nine/business-objects/feature-switch.js.html +132 -0
  623. package/coverage/lcov-report/test-utils/nine/business-objects/feature-switch.ts.html +183 -0
  624. package/coverage/lcov-report/test-utils/nine/business-objects/feature-switches.js.html +108 -0
  625. package/coverage/lcov-report/test-utils/nine/business-objects/index.html +97 -0
  626. package/coverage/lcov-report/test-utils/nine/business-objects.js.html +90 -0
  627. package/coverage/lcov-report/test-utils/nine/entities/feature-switch.ts.html +183 -0
  628. package/coverage/lcov-report/test-utils/nine/entities/index.html +97 -0
  629. package/coverage/lcov-report/test-utils/nine/index.html +97 -0
  630. package/coverage/lcov-report/test-utils/nine/models/feature-switch.ts.html +183 -0
  631. package/coverage/lcov-report/test-utils/nine/models/index.html +97 -0
  632. package/coverage/lcov-report/test-utils/nine/orm.js.html +96 -0
  633. package/coverage/lcov-report/test-utils/nine/orm.ts.html +90 -0
  634. package/coverage/lcov-report/test-utils/order/index.html +97 -0
  635. package/coverage/lcov-report/test-utils/order/models/index.html +149 -0
  636. package/coverage/lcov-report/test-utils/order/models/line-item.ts.html +267 -0
  637. package/coverage/lcov-report/test-utils/order/models/order.ts.html +390 -0
  638. package/coverage/lcov-report/test-utils/order/models/product-variant.ts.html +273 -0
  639. package/coverage/lcov-report/test-utils/order/models/product.ts.html +228 -0
  640. package/coverage/lcov-report/test-utils/order/models/utm-source.ts.html +168 -0
  641. package/coverage/lcov-report/test-utils/order/orm.ts.html +123 -0
  642. package/coverage/lcov-report/test-utils/order-more/index.html +97 -0
  643. package/coverage/lcov-report/test-utils/order-more/models/actual-product-variant.ts.html +162 -0
  644. package/coverage/lcov-report/test-utils/order-more/models/color.ts.html +192 -0
  645. package/coverage/lcov-report/test-utils/order-more/models/customer.ts.html +156 -0
  646. package/coverage/lcov-report/test-utils/order-more/models/gender.ts.html +162 -0
  647. package/coverage/lcov-report/test-utils/order-more/models/index.html +344 -0
  648. package/coverage/lcov-report/test-utils/order-more/models/inventory-level.ts.html +231 -0
  649. package/coverage/lcov-report/test-utils/order-more/models/line-item.ts.html +267 -0
  650. package/coverage/lcov-report/test-utils/order-more/models/order.ts.html +441 -0
  651. package/coverage/lcov-report/test-utils/order-more/models/parcel-event.ts.html +192 -0
  652. package/coverage/lcov-report/test-utils/order-more/models/parcel-line-item.ts.html +192 -0
  653. package/coverage/lcov-report/test-utils/order-more/models/parcel.ts.html +150 -0
  654. package/coverage/lcov-report/test-utils/order-more/models/physical-address.ts.html +246 -0
  655. package/coverage/lcov-report/test-utils/order-more/models/product-variant-image.ts.html +201 -0
  656. package/coverage/lcov-report/test-utils/order-more/models/product-variant.ts.html +327 -0
  657. package/coverage/lcov-report/test-utils/order-more/models/product.ts.html +237 -0
  658. package/coverage/lcov-report/test-utils/order-more/models/refund.ts.html +237 -0
  659. package/coverage/lcov-report/test-utils/order-more/models/shipment-actual-product-variant.ts.html +216 -0
  660. package/coverage/lcov-report/test-utils/order-more/models/shipment.ts.html +174 -0
  661. package/coverage/lcov-report/test-utils/order-more/models/size.ts.html +162 -0
  662. package/coverage/lcov-report/test-utils/order-more/models/utm-medium.ts.html +162 -0
  663. package/coverage/lcov-report/test-utils/order-more/models/utm-source.ts.html +168 -0
  664. package/coverage/lcov-report/test-utils/order-more/orm.ts.html +213 -0
  665. package/coverage/lcov-report/test-utils/six/bo/base.js.html +84 -0
  666. package/coverage/lcov-report/test-utils/six/bo/customer.js.html +132 -0
  667. package/coverage/lcov-report/test-utils/six/bo/customers.js.html +99 -0
  668. package/coverage/lcov-report/test-utils/six/bo/index.html +201 -0
  669. package/coverage/lcov-report/test-utils/six/bo/line-item.js.html +135 -0
  670. package/coverage/lcov-report/test-utils/six/bo/order.js.html +135 -0
  671. package/coverage/lcov-report/test-utils/six/bo/orders.js.html +99 -0
  672. package/coverage/lcov-report/test-utils/six/bo/parcel-line-item.js.html +150 -0
  673. package/coverage/lcov-report/test-utils/six/bo/parcel-line-items.js.html +99 -0
  674. package/coverage/lcov-report/test-utils/six/bo/parcel.js.html +132 -0
  675. package/coverage/lcov-report/test-utils/six/bo/parcels.js.html +99 -0
  676. package/coverage/lcov-report/test-utils/six/business-objects/customer.js.html +132 -0
  677. package/coverage/lcov-report/test-utils/six/business-objects/customer.ts.html +156 -0
  678. package/coverage/lcov-report/test-utils/six/business-objects/customers.js.html +99 -0
  679. package/coverage/lcov-report/test-utils/six/business-objects/index.html +149 -0
  680. package/coverage/lcov-report/test-utils/six/business-objects/line-item.js.html +135 -0
  681. package/coverage/lcov-report/test-utils/six/business-objects/line-item.ts.html +174 -0
  682. package/coverage/lcov-report/test-utils/six/business-objects/order.js.html +135 -0
  683. package/coverage/lcov-report/test-utils/six/business-objects/order.ts.html +174 -0
  684. package/coverage/lcov-report/test-utils/six/business-objects/orders.js.html +99 -0
  685. package/coverage/lcov-report/test-utils/six/business-objects/parcel-line-item.js.html +150 -0
  686. package/coverage/lcov-report/test-utils/six/business-objects/parcel-line-item.ts.html +192 -0
  687. package/coverage/lcov-report/test-utils/six/business-objects/parcel-line-items.js.html +99 -0
  688. package/coverage/lcov-report/test-utils/six/business-objects/parcel.js.html +132 -0
  689. package/coverage/lcov-report/test-utils/six/business-objects/parcel.ts.html +150 -0
  690. package/coverage/lcov-report/test-utils/six/business-objects/parcels.js.html +99 -0
  691. package/coverage/lcov-report/test-utils/six/business-objects.js.html +102 -0
  692. package/coverage/lcov-report/test-utils/six/entities/customer.ts.html +156 -0
  693. package/coverage/lcov-report/test-utils/six/entities/index.html +149 -0
  694. package/coverage/lcov-report/test-utils/six/entities/line-item.ts.html +174 -0
  695. package/coverage/lcov-report/test-utils/six/entities/order.ts.html +174 -0
  696. package/coverage/lcov-report/test-utils/six/entities/parcel-line-item.ts.html +192 -0
  697. package/coverage/lcov-report/test-utils/six/entities/parcel.ts.html +150 -0
  698. package/coverage/lcov-report/test-utils/six/index.html +97 -0
  699. package/coverage/lcov-report/test-utils/six/models/customer.ts.html +156 -0
  700. package/coverage/lcov-report/test-utils/six/models/index.html +149 -0
  701. package/coverage/lcov-report/test-utils/six/models/line-item.ts.html +174 -0
  702. package/coverage/lcov-report/test-utils/six/models/order.ts.html +174 -0
  703. package/coverage/lcov-report/test-utils/six/models/parcel-line-item.ts.html +192 -0
  704. package/coverage/lcov-report/test-utils/six/models/parcel.ts.html +150 -0
  705. package/coverage/lcov-report/test-utils/six/orm.js.html +126 -0
  706. package/coverage/lcov-report/test-utils/six/orm.ts.html +120 -0
  707. package/coverage/lcov-report/test-utils/thirteen/bo/audience.js.html +132 -0
  708. package/coverage/lcov-report/test-utils/thirteen/bo/audiences.js.html +99 -0
  709. package/coverage/lcov-report/test-utils/thirteen/bo/base.js.html +84 -0
  710. package/coverage/lcov-report/test-utils/thirteen/bo/brand.js.html +132 -0
  711. package/coverage/lcov-report/test-utils/thirteen/bo/brands.js.html +99 -0
  712. package/coverage/lcov-report/test-utils/thirteen/bo/categories.js.html +108 -0
  713. package/coverage/lcov-report/test-utils/thirteen/bo/category.js.html +132 -0
  714. package/coverage/lcov-report/test-utils/thirteen/bo/index.html +292 -0
  715. package/coverage/lcov-report/test-utils/thirteen/bo/member.js.html +132 -0
  716. package/coverage/lcov-report/test-utils/thirteen/bo/members.js.html +99 -0
  717. package/coverage/lcov-report/test-utils/thirteen/bo/passion.js.html +132 -0
  718. package/coverage/lcov-report/test-utils/thirteen/bo/passions.js.html +99 -0
  719. package/coverage/lcov-report/test-utils/thirteen/bo/product.js.html +135 -0
  720. package/coverage/lcov-report/test-utils/thirteen/bo/products.js.html +99 -0
  721. package/coverage/lcov-report/test-utils/thirteen/bo/recommendation-audience.js.html +150 -0
  722. package/coverage/lcov-report/test-utils/thirteen/bo/recommendation-audiences.js.html +99 -0
  723. package/coverage/lcov-report/test-utils/thirteen/bo/recommendation.js.html +168 -0
  724. package/coverage/lcov-report/test-utils/thirteen/bo/recommendations.js.html +99 -0
  725. package/coverage/lcov-report/test-utils/thirteen/business-objects/audience.js.html +132 -0
  726. package/coverage/lcov-report/test-utils/thirteen/business-objects/audience.ts.html +156 -0
  727. package/coverage/lcov-report/test-utils/thirteen/business-objects/audiences.js.html +99 -0
  728. package/coverage/lcov-report/test-utils/thirteen/business-objects/brand.js.html +132 -0
  729. package/coverage/lcov-report/test-utils/thirteen/business-objects/brand.ts.html +156 -0
  730. package/coverage/lcov-report/test-utils/thirteen/business-objects/brands.js.html +99 -0
  731. package/coverage/lcov-report/test-utils/thirteen/business-objects/categories.js.html +108 -0
  732. package/coverage/lcov-report/test-utils/thirteen/business-objects/category.js.html +132 -0
  733. package/coverage/lcov-report/test-utils/thirteen/business-objects/category.ts.html +156 -0
  734. package/coverage/lcov-report/test-utils/thirteen/business-objects/index.html +188 -0
  735. package/coverage/lcov-report/test-utils/thirteen/business-objects/member.js.html +132 -0
  736. package/coverage/lcov-report/test-utils/thirteen/business-objects/member.ts.html +156 -0
  737. package/coverage/lcov-report/test-utils/thirteen/business-objects/members.js.html +99 -0
  738. package/coverage/lcov-report/test-utils/thirteen/business-objects/passion.js.html +132 -0
  739. package/coverage/lcov-report/test-utils/thirteen/business-objects/passion.ts.html +156 -0
  740. package/coverage/lcov-report/test-utils/thirteen/business-objects/passions.js.html +99 -0
  741. package/coverage/lcov-report/test-utils/thirteen/business-objects/product.js.html +135 -0
  742. package/coverage/lcov-report/test-utils/thirteen/business-objects/product.ts.html +174 -0
  743. package/coverage/lcov-report/test-utils/thirteen/business-objects/products.js.html +99 -0
  744. package/coverage/lcov-report/test-utils/thirteen/business-objects/recommendation-audience.js.html +150 -0
  745. package/coverage/lcov-report/test-utils/thirteen/business-objects/recommendation-audience.ts.html +192 -0
  746. package/coverage/lcov-report/test-utils/thirteen/business-objects/recommendation-audiences.js.html +99 -0
  747. package/coverage/lcov-report/test-utils/thirteen/business-objects/recommendation.js.html +168 -0
  748. package/coverage/lcov-report/test-utils/thirteen/business-objects/recommendation.ts.html +249 -0
  749. package/coverage/lcov-report/test-utils/thirteen/business-objects/recommendations.js.html +99 -0
  750. package/coverage/lcov-report/test-utils/thirteen/business-objects.js.html +111 -0
  751. package/coverage/lcov-report/test-utils/thirteen/entities/audience.ts.html +156 -0
  752. package/coverage/lcov-report/test-utils/thirteen/entities/brand.ts.html +156 -0
  753. package/coverage/lcov-report/test-utils/thirteen/entities/category.ts.html +156 -0
  754. package/coverage/lcov-report/test-utils/thirteen/entities/index.html +188 -0
  755. package/coverage/lcov-report/test-utils/thirteen/entities/member.ts.html +156 -0
  756. package/coverage/lcov-report/test-utils/thirteen/entities/passion.ts.html +156 -0
  757. package/coverage/lcov-report/test-utils/thirteen/entities/product.ts.html +174 -0
  758. package/coverage/lcov-report/test-utils/thirteen/entities/recommendation-audience.ts.html +192 -0
  759. package/coverage/lcov-report/test-utils/thirteen/entities/recommendation.ts.html +249 -0
  760. package/coverage/lcov-report/test-utils/thirteen/index.html +97 -0
  761. package/coverage/lcov-report/test-utils/thirteen/models/audience.ts.html +150 -0
  762. package/coverage/lcov-report/test-utils/thirteen/models/brand.ts.html +150 -0
  763. package/coverage/lcov-report/test-utils/thirteen/models/category.ts.html +150 -0
  764. package/coverage/lcov-report/test-utils/thirteen/models/index.html +188 -0
  765. package/coverage/lcov-report/test-utils/thirteen/models/member.ts.html +150 -0
  766. package/coverage/lcov-report/test-utils/thirteen/models/passion.ts.html +150 -0
  767. package/coverage/lcov-report/test-utils/thirteen/models/product.ts.html +174 -0
  768. package/coverage/lcov-report/test-utils/thirteen/models/recommendation-audience.ts.html +198 -0
  769. package/coverage/lcov-report/test-utils/thirteen/models/recommendation.ts.html +249 -0
  770. package/coverage/lcov-report/test-utils/thirteen/orm.js.html +144 -0
  771. package/coverage/lcov-report/test-utils/thirteen/orm.ts.html +138 -0
  772. package/coverage/lcov-report/test-utils/three/index.html +97 -0
  773. package/coverage/lcov-report/test-utils/three/results.js.html +1335 -0
  774. package/coverage/lcov-report/test-utils/twelve/bo/base.js.html +84 -0
  775. package/coverage/lcov-report/test-utils/twelve/bo/index.html +136 -0
  776. package/coverage/lcov-report/test-utils/twelve/bo/member.js.html +126 -0
  777. package/coverage/lcov-report/test-utils/twelve/bo/members.js.html +99 -0
  778. package/coverage/lcov-report/test-utils/twelve/bo/prompt.js.html +138 -0
  779. package/coverage/lcov-report/test-utils/twelve/bo/prompts.js.html +99 -0
  780. package/coverage/lcov-report/test-utils/twelve/business-objects/index.html +110 -0
  781. package/coverage/lcov-report/test-utils/twelve/business-objects/member.js.html +126 -0
  782. package/coverage/lcov-report/test-utils/twelve/business-objects/member.ts.html +156 -0
  783. package/coverage/lcov-report/test-utils/twelve/business-objects/members.js.html +99 -0
  784. package/coverage/lcov-report/test-utils/twelve/business-objects/prompt.js.html +138 -0
  785. package/coverage/lcov-report/test-utils/twelve/business-objects/prompt.ts.html +189 -0
  786. package/coverage/lcov-report/test-utils/twelve/business-objects/prompts.js.html +99 -0
  787. package/coverage/lcov-report/test-utils/twelve/business-objects.js.html +93 -0
  788. package/coverage/lcov-report/test-utils/twelve/entities/index.html +110 -0
  789. package/coverage/lcov-report/test-utils/twelve/entities/member.ts.html +156 -0
  790. package/coverage/lcov-report/test-utils/twelve/entities/prompt.ts.html +189 -0
  791. package/coverage/lcov-report/test-utils/twelve/index.html +97 -0
  792. package/coverage/lcov-report/test-utils/twelve/models/index.html +110 -0
  793. package/coverage/lcov-report/test-utils/twelve/models/member.ts.html +150 -0
  794. package/coverage/lcov-report/test-utils/twelve/models/prompt.ts.html +189 -0
  795. package/coverage/lcov-report/test-utils/twelve/orm.js.html +99 -0
  796. package/coverage/lcov-report/test-utils/twelve/orm.ts.html +93 -0
  797. package/coverage/lcov-report/test-utils/two/index.html +97 -0
  798. package/coverage/lcov-report/test-utils/two/results.js.html +1035 -0
  799. package/coverage/lcov-report/util/helpers.js.html +153 -0
  800. package/coverage/lcov-report/util/index.html +97 -0
  801. package/coverage/lcov.info +4087 -0
  802. package/dist/example/app.d.ts +1 -0
  803. package/dist/example/app.js +14 -0
  804. package/dist/example/data-access/person.d.ts +2 -0
  805. package/dist/example/data-access/person.js +21 -0
  806. package/dist/example/factories/db.d.ts +2 -0
  807. package/dist/example/factories/db.js +16 -0
  808. package/dist/example/factories/orm.d.ts +47 -0
  809. package/dist/example/factories/orm.js +12 -0
  810. package/dist/example/models/employer.d.ts +23 -0
  811. package/dist/example/models/employer.js +25 -0
  812. package/dist/example/models/job.d.ts +35 -0
  813. package/dist/example/models/job.js +38 -0
  814. package/dist/example/models/person.d.ts +25 -0
  815. package/dist/example/models/person.js +31 -0
  816. package/dist/src/factory.d.ts +99 -0
  817. package/dist/src/factory.js +512 -0
  818. package/dist/src/factory.spec.d.ts +1 -0
  819. package/dist/src/factory.spec.js +566 -0
  820. package/dist/src/index.d.ts +1 -0
  821. package/dist/src/index.js +5 -0
  822. package/dist/test-utils/blog/models/article.d.ts +30 -0
  823. package/dist/test-utils/blog/models/article.js +49 -0
  824. package/dist/test-utils/blog/models/article.ts +65 -0
  825. package/dist/test-utils/blog/models/article_tag.d.ts +23 -0
  826. package/dist/test-utils/blog/models/article_tag.js +33 -0
  827. package/dist/test-utils/blog/models/article_tag.ts +41 -0
  828. package/dist/test-utils/blog/models/person.d.ts +43 -0
  829. package/dist/test-utils/blog/models/person.js +48 -0
  830. package/dist/test-utils/blog/models/person.ts +78 -0
  831. package/dist/test-utils/blog/models/tag.d.ts +19 -0
  832. package/dist/test-utils/blog/models/tag.js +25 -0
  833. package/dist/test-utils/blog/models/tag.ts +32 -0
  834. package/dist/test-utils/blog/orm.d.ts +2 -0
  835. package/dist/test-utils/blog/orm.js +12 -0
  836. package/dist/test-utils/blog/orm.ts +11 -0
  837. package/dist/test-utils/eight/results.json +128 -0
  838. package/dist/test-utils/eleven/results.json +818 -0
  839. package/dist/test-utils/five/models/line-item.d.ts +20 -0
  840. package/dist/test-utils/five/models/line-item.js +29 -0
  841. package/dist/test-utils/five/models/line-item.ts +35 -0
  842. package/dist/test-utils/five/models/order.d.ts +18 -0
  843. package/dist/test-utils/five/models/order.js +24 -0
  844. package/dist/test-utils/five/models/order.ts +29 -0
  845. package/dist/test-utils/five/models/parcel-event.d.ts +22 -0
  846. package/dist/test-utils/five/models/parcel-event.js +33 -0
  847. package/dist/test-utils/five/models/parcel-event.ts +41 -0
  848. package/dist/test-utils/five/models/parcel-line-item.d.ts +23 -0
  849. package/dist/test-utils/five/models/parcel-line-item.js +33 -0
  850. package/dist/test-utils/five/models/parcel-line-item.ts +41 -0
  851. package/dist/test-utils/five/models/parcel.d.ts +17 -0
  852. package/dist/test-utils/five/models/parcel.js +23 -0
  853. package/dist/test-utils/five/models/parcel.ts +27 -0
  854. package/dist/test-utils/five/orm.d.ts +47 -0
  855. package/dist/test-utils/five/orm.js +19 -0
  856. package/dist/test-utils/five/orm.ts +17 -0
  857. package/dist/test-utils/five/results.json +58 -0
  858. package/dist/test-utils/four/results.json +772 -0
  859. package/dist/test-utils/nine/models/feature-switch.d.ts +25 -0
  860. package/dist/test-utils/nine/models/feature-switch.js +26 -0
  861. package/dist/test-utils/nine/models/feature-switch.ts +38 -0
  862. package/dist/test-utils/nine/orm.d.ts +47 -0
  863. package/dist/test-utils/nine/orm.js +9 -0
  864. package/dist/test-utils/nine/orm.ts +7 -0
  865. package/dist/test-utils/nine/results.json +12 -0
  866. package/dist/test-utils/one/results.json +386 -0
  867. package/dist/test-utils/order/models/line-item.d.ts +31 -0
  868. package/dist/test-utils/order/models/line-item.js +50 -0
  869. package/dist/test-utils/order/models/line-item.ts +66 -0
  870. package/dist/test-utils/order/models/order.d.ts +42 -0
  871. package/dist/test-utils/order/models/order.js +79 -0
  872. package/dist/test-utils/order/models/order.ts +107 -0
  873. package/dist/test-utils/order/models/product-variant.d.ts +31 -0
  874. package/dist/test-utils/order/models/product-variant.js +51 -0
  875. package/dist/test-utils/order/models/product-variant.ts +68 -0
  876. package/dist/test-utils/order/models/product.d.ts +25 -0
  877. package/dist/test-utils/order/models/product.js +41 -0
  878. package/dist/test-utils/order/models/product.ts +53 -0
  879. package/dist/test-utils/order/models/utm-source.d.ts +20 -0
  880. package/dist/test-utils/order/models/utm-source.js +26 -0
  881. package/dist/test-utils/order/models/utm-source.ts +33 -0
  882. package/dist/test-utils/order/orm.d.ts +47 -0
  883. package/dist/test-utils/order/orm.js +19 -0
  884. package/dist/test-utils/order/orm.ts +18 -0
  885. package/dist/test-utils/order-more/models/actual-product-variant.d.ts +18 -0
  886. package/dist/test-utils/order-more/models/actual-product-variant.js +24 -0
  887. package/dist/test-utils/order-more/models/actual-product-variant.ts +31 -0
  888. package/dist/test-utils/order-more/models/color.d.ts +21 -0
  889. package/dist/test-utils/order-more/models/color.js +33 -0
  890. package/dist/test-utils/order-more/models/color.ts +41 -0
  891. package/dist/test-utils/order-more/models/customer.d.ts +18 -0
  892. package/dist/test-utils/order-more/models/customer.js +24 -0
  893. package/dist/test-utils/order-more/models/customer.ts +29 -0
  894. package/dist/test-utils/order-more/models/gender.d.ts +19 -0
  895. package/dist/test-utils/order-more/models/gender.js +25 -0
  896. package/dist/test-utils/order-more/models/gender.ts +31 -0
  897. package/dist/test-utils/order-more/models/inventory-level.d.ts +27 -0
  898. package/dist/test-utils/order-more/models/inventory-level.js +41 -0
  899. package/dist/test-utils/order-more/models/inventory-level.ts +54 -0
  900. package/dist/test-utils/order-more/models/line-item.d.ts +31 -0
  901. package/dist/test-utils/order-more/models/line-item.js +50 -0
  902. package/dist/test-utils/order-more/models/line-item.ts +66 -0
  903. package/dist/test-utils/order-more/models/order.d.ts +50 -0
  904. package/dist/test-utils/order-more/models/order.js +90 -0
  905. package/dist/test-utils/order-more/models/order.ts +124 -0
  906. package/dist/test-utils/order-more/models/parcel-event.d.ts +22 -0
  907. package/dist/test-utils/order-more/models/parcel-event.js +33 -0
  908. package/dist/test-utils/order-more/models/parcel-event.ts +41 -0
  909. package/dist/test-utils/order-more/models/parcel-line-item.d.ts +23 -0
  910. package/dist/test-utils/order-more/models/parcel-line-item.js +33 -0
  911. package/dist/test-utils/order-more/models/parcel-line-item.ts +41 -0
  912. package/dist/test-utils/order-more/models/parcel.d.ts +17 -0
  913. package/dist/test-utils/order-more/models/parcel.js +23 -0
  914. package/dist/test-utils/order-more/models/parcel.ts +27 -0
  915. package/dist/test-utils/order-more/models/physical-address.d.ts +27 -0
  916. package/dist/test-utils/order-more/models/physical-address.js +45 -0
  917. package/dist/test-utils/order-more/models/physical-address.ts +59 -0
  918. package/dist/test-utils/order-more/models/product-variant-image.d.ts +23 -0
  919. package/dist/test-utils/order-more/models/product-variant-image.js +35 -0
  920. package/dist/test-utils/order-more/models/product-variant-image.ts +44 -0
  921. package/dist/test-utils/order-more/models/product-variant.d.ts +41 -0
  922. package/dist/test-utils/order-more/models/product-variant.js +63 -0
  923. package/dist/test-utils/order-more/models/product-variant.ts +86 -0
  924. package/dist/test-utils/order-more/models/product.d.ts +26 -0
  925. package/dist/test-utils/order-more/models/product.js +43 -0
  926. package/dist/test-utils/order-more/models/product.ts +56 -0
  927. package/dist/test-utils/order-more/models/refund.d.ts +27 -0
  928. package/dist/test-utils/order-more/models/refund.js +43 -0
  929. package/dist/test-utils/order-more/models/refund.ts +56 -0
  930. package/dist/test-utils/order-more/models/shipment-actual-product-variant.d.ts +25 -0
  931. package/dist/test-utils/order-more/models/shipment-actual-product-variant.js +37 -0
  932. package/dist/test-utils/order-more/models/shipment-actual-product-variant.ts +49 -0
  933. package/dist/test-utils/order-more/models/shipment.d.ts +19 -0
  934. package/dist/test-utils/order-more/models/shipment.js +29 -0
  935. package/dist/test-utils/order-more/models/shipment.ts +35 -0
  936. package/dist/test-utils/order-more/models/size.d.ts +19 -0
  937. package/dist/test-utils/order-more/models/size.js +25 -0
  938. package/dist/test-utils/order-more/models/size.ts +31 -0
  939. package/dist/test-utils/order-more/models/utm-medium.d.ts +19 -0
  940. package/dist/test-utils/order-more/models/utm-medium.js +25 -0
  941. package/dist/test-utils/order-more/models/utm-medium.ts +31 -0
  942. package/dist/test-utils/order-more/models/utm-source.d.ts +20 -0
  943. package/dist/test-utils/order-more/models/utm-source.js +26 -0
  944. package/dist/test-utils/order-more/models/utm-source.ts +33 -0
  945. package/dist/test-utils/order-more/orm.d.ts +47 -0
  946. package/dist/test-utils/order-more/orm.js +49 -0
  947. package/dist/test-utils/order-more/orm.ts +48 -0
  948. package/dist/test-utils/seven/results.json +32 -0
  949. package/dist/test-utils/six/models/customer.d.ts +18 -0
  950. package/dist/test-utils/six/models/customer.js +24 -0
  951. package/dist/test-utils/six/models/customer.ts +29 -0
  952. package/dist/test-utils/six/models/line-item.d.ts +20 -0
  953. package/dist/test-utils/six/models/line-item.js +29 -0
  954. package/dist/test-utils/six/models/line-item.ts +35 -0
  955. package/dist/test-utils/six/models/order.d.ts +20 -0
  956. package/dist/test-utils/six/models/order.js +29 -0
  957. package/dist/test-utils/six/models/order.ts +35 -0
  958. package/dist/test-utils/six/models/parcel-line-item.d.ts +23 -0
  959. package/dist/test-utils/six/models/parcel-line-item.js +33 -0
  960. package/dist/test-utils/six/models/parcel-line-item.ts +41 -0
  961. package/dist/test-utils/six/models/parcel.d.ts +17 -0
  962. package/dist/test-utils/six/models/parcel.js +23 -0
  963. package/dist/test-utils/six/models/parcel.ts +27 -0
  964. package/dist/test-utils/six/orm.d.ts +47 -0
  965. package/dist/test-utils/six/orm.js +19 -0
  966. package/dist/test-utils/six/orm.ts +17 -0
  967. package/dist/test-utils/six/results.json +26 -0
  968. package/dist/test-utils/ten/results.json +899 -0
  969. package/dist/test-utils/thirteen/models/audience.d.ts +17 -0
  970. package/dist/test-utils/thirteen/models/audience.js +23 -0
  971. package/dist/test-utils/thirteen/models/audience.ts +27 -0
  972. package/dist/test-utils/thirteen/models/brand.d.ts +17 -0
  973. package/dist/test-utils/thirteen/models/brand.js +23 -0
  974. package/dist/test-utils/thirteen/models/brand.ts +27 -0
  975. package/dist/test-utils/thirteen/models/category.d.ts +17 -0
  976. package/dist/test-utils/thirteen/models/category.js +23 -0
  977. package/dist/test-utils/thirteen/models/category.ts +27 -0
  978. package/dist/test-utils/thirteen/models/member.d.ts +17 -0
  979. package/dist/test-utils/thirteen/models/member.js +23 -0
  980. package/dist/test-utils/thirteen/models/member.ts +27 -0
  981. package/dist/test-utils/thirteen/models/passion.d.ts +17 -0
  982. package/dist/test-utils/thirteen/models/passion.js +23 -0
  983. package/dist/test-utils/thirteen/models/passion.ts +27 -0
  984. package/dist/test-utils/thirteen/models/product.d.ts +20 -0
  985. package/dist/test-utils/thirteen/models/product.js +29 -0
  986. package/dist/test-utils/thirteen/models/product.ts +35 -0
  987. package/dist/test-utils/thirteen/models/recommendation-audience.d.ts +23 -0
  988. package/dist/test-utils/thirteen/models/recommendation-audience.js +33 -0
  989. package/dist/test-utils/thirteen/models/recommendation-audience.ts +43 -0
  990. package/dist/test-utils/thirteen/models/recommendation.d.ts +32 -0
  991. package/dist/test-utils/thirteen/models/recommendation.js +45 -0
  992. package/dist/test-utils/thirteen/models/recommendation.ts +60 -0
  993. package/dist/test-utils/thirteen/orm.d.ts +47 -0
  994. package/dist/test-utils/thirteen/orm.js +25 -0
  995. package/dist/test-utils/thirteen/orm.ts +23 -0
  996. package/dist/test-utils/thirteen/results.json +74 -0
  997. package/dist/test-utils/three/results.js +422 -0
  998. package/dist/test-utils/twelve/models/member.d.ts +17 -0
  999. package/dist/test-utils/twelve/models/member.js +23 -0
  1000. package/dist/test-utils/twelve/models/member.ts +27 -0
  1001. package/dist/test-utils/twelve/models/prompt.d.ts +22 -0
  1002. package/dist/test-utils/twelve/models/prompt.js +32 -0
  1003. package/dist/test-utils/twelve/models/prompt.ts +40 -0
  1004. package/dist/test-utils/twelve/orm.d.ts +47 -0
  1005. package/dist/test-utils/twelve/orm.js +10 -0
  1006. package/dist/test-utils/twelve/orm.ts +8 -0
  1007. package/dist/test-utils/twelve/results.json +8 -0
  1008. package/dist/test-utils/two/results.js +322 -0
  1009. package/example/README.md +3 -0
  1010. package/example/app.ts +12 -0
  1011. package/example/data-access/person.ts +16 -0
  1012. package/example/factories/db.ts +11 -0
  1013. package/example/factories/orm.ts +10 -0
  1014. package/example/models/employer.ts +36 -0
  1015. package/example/models/job.ts +59 -0
  1016. package/example/models/person.ts +42 -0
  1017. package/package.json +18 -7
  1018. package/src/factory.spec.ts +1048 -0
  1019. package/src/factory.ts +733 -0
  1020. package/src/index.ts +8 -0
  1021. package/test-utils/blog/models/article.ts +65 -0
  1022. package/test-utils/blog/models/article_tag.ts +41 -0
  1023. package/test-utils/blog/models/person.ts +78 -0
  1024. package/test-utils/blog/models/tag.ts +32 -0
  1025. package/test-utils/blog/orm.ts +11 -0
  1026. package/test-utils/five/models/line-item.ts +35 -0
  1027. package/test-utils/five/models/order.ts +29 -0
  1028. package/test-utils/five/models/parcel-event.ts +41 -0
  1029. package/test-utils/five/models/parcel-line-item.ts +41 -0
  1030. package/test-utils/five/models/parcel.ts +27 -0
  1031. package/test-utils/five/orm.ts +17 -0
  1032. package/test-utils/nine/models/feature-switch.ts +38 -0
  1033. package/test-utils/nine/orm.ts +7 -0
  1034. package/test-utils/order/models/line-item.ts +66 -0
  1035. package/test-utils/order/models/order.ts +107 -0
  1036. package/test-utils/order/models/product-variant.ts +68 -0
  1037. package/test-utils/order/models/product.ts +53 -0
  1038. package/test-utils/order/models/utm-source.ts +33 -0
  1039. package/test-utils/order/orm.ts +18 -0
  1040. package/test-utils/order-more/models/actual-product-variant.ts +31 -0
  1041. package/test-utils/order-more/models/color.ts +41 -0
  1042. package/test-utils/order-more/models/customer.ts +29 -0
  1043. package/test-utils/order-more/models/gender.ts +31 -0
  1044. package/test-utils/order-more/models/inventory-level.ts +54 -0
  1045. package/test-utils/order-more/models/line-item.ts +66 -0
  1046. package/test-utils/order-more/models/order.ts +124 -0
  1047. package/test-utils/order-more/models/parcel-event.ts +41 -0
  1048. package/test-utils/order-more/models/parcel-line-item.ts +41 -0
  1049. package/test-utils/order-more/models/parcel.ts +27 -0
  1050. package/test-utils/order-more/models/physical-address.ts +59 -0
  1051. package/test-utils/order-more/models/product-variant-image.ts +44 -0
  1052. package/test-utils/order-more/models/product-variant.ts +86 -0
  1053. package/test-utils/order-more/models/product.ts +56 -0
  1054. package/test-utils/order-more/models/refund.ts +56 -0
  1055. package/test-utils/order-more/models/shipment-actual-product-variant.ts +49 -0
  1056. package/test-utils/order-more/models/shipment.ts +35 -0
  1057. package/test-utils/order-more/models/size.ts +31 -0
  1058. package/test-utils/order-more/models/utm-medium.ts +31 -0
  1059. package/test-utils/order-more/models/utm-source.ts +33 -0
  1060. package/test-utils/order-more/orm.ts +48 -0
  1061. package/test-utils/six/models/customer.ts +29 -0
  1062. package/test-utils/six/models/line-item.ts +35 -0
  1063. package/test-utils/six/models/order.ts +35 -0
  1064. package/test-utils/six/models/parcel-line-item.ts +41 -0
  1065. package/test-utils/six/models/parcel.ts +27 -0
  1066. package/test-utils/six/orm.ts +17 -0
  1067. package/test-utils/thirteen/models/audience.ts +27 -0
  1068. package/test-utils/thirteen/models/brand.ts +27 -0
  1069. package/test-utils/thirteen/models/category.ts +27 -0
  1070. package/test-utils/thirteen/models/member.ts +27 -0
  1071. package/test-utils/thirteen/models/passion.ts +27 -0
  1072. package/test-utils/thirteen/models/product.ts +35 -0
  1073. package/test-utils/thirteen/models/recommendation-audience.ts +43 -0
  1074. package/test-utils/thirteen/models/recommendation.ts +60 -0
  1075. package/test-utils/thirteen/orm.ts +23 -0
  1076. package/test-utils/twelve/models/member.ts +27 -0
  1077. package/test-utils/twelve/models/prompt.ts +40 -0
  1078. package/test-utils/twelve/orm.ts +8 -0
  1079. package/tsconfig.json +15 -0
  1080. package/examples/basic/README.md +0 -3
  1081. package/examples/basic/bo/person.js +0 -14
  1082. package/examples/basic/dao/person.js +0 -20
  1083. package/examples/basic/db.js +0 -16
  1084. package/examples/basic/orm.js +0 -8
  1085. package/examples/blog/bo/article.js +0 -35
  1086. package/examples/blog/bo/article_tag.js +0 -27
  1087. package/examples/blog/bo/article_tags.js +0 -10
  1088. package/examples/blog/bo/articles.js +0 -10
  1089. package/examples/blog/bo/person.js +0 -28
  1090. package/examples/blog/bo/tag.js +0 -15
  1091. package/examples/blog/business-objects.js +0 -1
  1092. package/examples/blog/orm.js +0 -14
  1093. package/examples/order/bo/line-item.js +0 -36
  1094. package/examples/order/bo/line-items.js +0 -10
  1095. package/examples/order/bo/order.js +0 -47
  1096. package/examples/order/bo/orders.js +0 -10
  1097. package/examples/order/bo/product-variant.js +0 -36
  1098. package/examples/order/bo/product-variants.js +0 -10
  1099. package/examples/order/bo/product.js +0 -31
  1100. package/examples/order/bo/products.js +0 -10
  1101. package/examples/order/bo/utm-source.js +0 -15
  1102. package/examples/order/orm.js +0 -20
  1103. package/examples/order-more/bo/actual-product-variant.js +0 -28
  1104. package/examples/order-more/bo/actual-product-variants.js +0 -10
  1105. package/examples/order-more/bo/color.js +0 -21
  1106. package/examples/order-more/bo/colors.js +0 -10
  1107. package/examples/order-more/bo/customer.js +0 -21
  1108. package/examples/order-more/bo/customers.js +0 -10
  1109. package/examples/order-more/bo/gender.js +0 -21
  1110. package/examples/order-more/bo/genders.js +0 -10
  1111. package/examples/order-more/bo/inventory-level.js +0 -31
  1112. package/examples/order-more/bo/inventory-levels.js +0 -10
  1113. package/examples/order-more/bo/line-item.js +0 -36
  1114. package/examples/order-more/bo/line-items.js +0 -10
  1115. package/examples/order-more/bo/order.js +0 -52
  1116. package/examples/order-more/bo/orders.js +0 -10
  1117. package/examples/order-more/bo/parcel-event.js +0 -22
  1118. package/examples/order-more/bo/parcel-events.js +0 -10
  1119. package/examples/order-more/bo/parcel-line-item.js +0 -27
  1120. package/examples/order-more/bo/parcel-line-items.js +0 -10
  1121. package/examples/order-more/bo/parcel.js +0 -21
  1122. package/examples/order-more/bo/parcels.js +0 -10
  1123. package/examples/order-more/bo/physical-address.js +0 -33
  1124. package/examples/order-more/bo/physical-addresses.js +0 -13
  1125. package/examples/order-more/bo/product-variant-image.js +0 -28
  1126. package/examples/order-more/bo/product-variant-images.js +0 -10
  1127. package/examples/order-more/bo/product-variant.js +0 -42
  1128. package/examples/order-more/bo/product-variants.js +0 -10
  1129. package/examples/order-more/bo/product.js +0 -32
  1130. package/examples/order-more/bo/products.js +0 -10
  1131. package/examples/order-more/bo/refund.js +0 -31
  1132. package/examples/order-more/bo/refunds.js +0 -10
  1133. package/examples/order-more/bo/shipment-actual-product-variant.js +0 -29
  1134. package/examples/order-more/bo/shipment-actual-product-variants.js +0 -10
  1135. package/examples/order-more/bo/shipment.js +0 -21
  1136. package/examples/order-more/bo/shipments.js +0 -10
  1137. package/examples/order-more/bo/size.js +0 -21
  1138. package/examples/order-more/bo/sizes.js +0 -10
  1139. package/examples/order-more/bo/utm-medium.js +0 -15
  1140. package/examples/order-more/bo/utm-source.js +0 -15
  1141. package/examples/order-more/orm.js +0 -49
  1142. package/src/bo.js +0 -393
  1143. package/src/bo.spec.js +0 -583
  1144. package/src/factory.js +0 -167
  1145. package/src/factory.spec.js +0 -11
  1146. package/src/index.js +0 -50
  1147. package/test-utils/five/bo/base.js +0 -5
  1148. package/test-utils/five/bo/line-item.js +0 -22
  1149. package/test-utils/five/bo/line-items.js +0 -10
  1150. package/test-utils/five/bo/order.js +0 -21
  1151. package/test-utils/five/bo/orders.js +0 -10
  1152. package/test-utils/five/bo/parcel-event.js +0 -22
  1153. package/test-utils/five/bo/parcel-events.js +0 -10
  1154. package/test-utils/five/bo/parcel-line-item.js +0 -27
  1155. package/test-utils/five/bo/parcel-line-items.js +0 -10
  1156. package/test-utils/five/bo/parcel.js +0 -21
  1157. package/test-utils/five/bo/parcels.js +0 -10
  1158. package/test-utils/five/orm.js +0 -19
  1159. package/test-utils/nine/bo/base.js +0 -5
  1160. package/test-utils/nine/bo/feature-switch.js +0 -21
  1161. package/test-utils/nine/bo/feature-switches.js +0 -13
  1162. package/test-utils/nine/orm.js +0 -9
  1163. package/test-utils/six/bo/base.js +0 -5
  1164. package/test-utils/six/bo/customer.js +0 -21
  1165. package/test-utils/six/bo/customers.js +0 -10
  1166. package/test-utils/six/bo/line-item.js +0 -22
  1167. package/test-utils/six/bo/line-items.js +0 -10
  1168. package/test-utils/six/bo/order.js +0 -22
  1169. package/test-utils/six/bo/orders.js +0 -10
  1170. package/test-utils/six/bo/parcel-line-item.js +0 -27
  1171. package/test-utils/six/bo/parcel-line-items.js +0 -10
  1172. package/test-utils/six/bo/parcel.js +0 -21
  1173. package/test-utils/six/bo/parcels.js +0 -10
  1174. package/test-utils/six/orm.js +0 -19
  1175. package/test-utils/thirteen/bo/audience.js +0 -21
  1176. package/test-utils/thirteen/bo/audiences.js +0 -10
  1177. package/test-utils/thirteen/bo/base.js +0 -5
  1178. package/test-utils/thirteen/bo/brand.js +0 -21
  1179. package/test-utils/thirteen/bo/brands.js +0 -10
  1180. package/test-utils/thirteen/bo/categories.js +0 -13
  1181. package/test-utils/thirteen/bo/category.js +0 -21
  1182. package/test-utils/thirteen/bo/member.js +0 -21
  1183. package/test-utils/thirteen/bo/members.js +0 -10
  1184. package/test-utils/thirteen/bo/passion.js +0 -21
  1185. package/test-utils/thirteen/bo/passions.js +0 -10
  1186. package/test-utils/thirteen/bo/product.js +0 -22
  1187. package/test-utils/thirteen/bo/products.js +0 -10
  1188. package/test-utils/thirteen/bo/recommendation-audience.js +0 -27
  1189. package/test-utils/thirteen/bo/recommendation-audiences.js +0 -10
  1190. package/test-utils/thirteen/bo/recommendation.js +0 -33
  1191. package/test-utils/thirteen/bo/recommendations.js +0 -10
  1192. package/test-utils/thirteen/orm.js +0 -25
  1193. package/test-utils/twelve/bo/base.js +0 -5
  1194. package/test-utils/twelve/bo/member.js +0 -19
  1195. package/test-utils/twelve/bo/members.js +0 -10
  1196. package/test-utils/twelve/bo/prompt.js +0 -23
  1197. package/test-utils/twelve/bo/prompts.js +0 -10
  1198. package/test-utils/twelve/orm.js +0 -10
package/README.md CHANGED
@@ -29,138 +29,39 @@ The name _**pure**ORM_ reflects both of these points - that it is _pure_ ORM (th
29
29
 
30
30
  #### Concepts
31
31
 
32
- A **Business Object** (BO) is a pure javascript object corresponding to a table.
32
+ A **Model** is a pure javascript business object corresponding to a table.
33
33
 
34
+ - In PureORM these pure business objects are referred to as "models".
34
35
  - They represent a row of the table data, but as pure javascript objects.
35
36
  - They are not connected to the database.
36
37
  - They are the subject of the app's business logic.
37
38
  - They will be full of userland business logic methods.
38
39
  - Their purity allows them to be easy to test/use.
39
- - These are also referred to as "models".
40
40
 
41
- A **Business Object Collection** (BO Collection) is a group of pure javascript objects.
41
+ A **Collection** is a pure business object with a reference to a group of models.
42
42
 
43
- - If your query returns records for multiple business objects, a BO Collection will be created and returned.
44
- - You can create a BO Collection class for your business objects (in cases where it is useful to have business methods on the collection entity, not just each model entity).
43
+ - If your query returns records for multiple models, a Collection will be created and returned.
44
+ - You can create the Collection class (in cases where it is useful to have business methods on the collection object, not just each model object).
45
45
 
46
- A **Data Access Layer** (DAL) is a database-aware abstraction layer where native SQL is written.
46
+ A **Data Access Layer** is a database-aware abstraction layer where native SQL is written.
47
47
 
48
48
  - This is not an "expresion language" or "query builder". There are not hundreds of methods mapping the complexity, expressiveness, and nuance of SQL to class objects.
49
49
  - Rather, is a data access layer in which native SQL is written, and which returns business objects (properly nested and structured).
50
50
 
51
- ## Quick Example
52
-
53
- Using PureORM allows you to write code like this:
54
-
55
- ```javascript
56
- // ./dal/person.js
57
- const getPerson = ({ id }) => {
58
- const query = `
59
- SELECT
60
- ${orm.tables.person.columns},
61
- ${orm.tables.job.columns},
62
- ${orm.tables.employer.columns}
63
- FROM person
64
- JOIN job on person.id = job.person_id
65
- JOIN employer on job.employer_id = employer.id
66
- WHERE id = $(id)
67
- `;
68
- return orm.one(query, { id });
69
- };
70
-
71
- // ./controllers/rest/person.js
72
- const { getPerson } = require('./dal/person');
73
- const get = (req, res) => {
74
- const person = await getPerson({ id: req.params.id });
75
- res.json(person);
76
- };
77
- ```
78
-
79
- Which a GET to that controller would return
80
-
81
- ```javascript
82
- Person {
83
- id: 55,
84
- name: 'John Doe',
85
- jobs: JobsCollection {
86
- models: [
87
- Job {
88
- id: 277,
89
- personId: 55,
90
- employerId: 17,
91
- startDate: '2020-01-01',
92
- endDate: '2020-12-31',
93
- employer: Employer {
94
- id: 17,
95
- name: 'Good Corp',
96
- }
97
- },
98
- Job {
99
- id: 278,
100
- personId: 55,
101
- employerId: 26,
102
- startDate: '2021-01-01',
103
- endDate: '2021-12-31',
104
- employer: Employer {
105
- id: 26,
106
- name: 'Better Corp',
107
- }
108
- }
109
- ]
110
- }
111
- }
112
- ```
113
-
114
- > This is a quick showcase. To see how to wire up this code, see the full [Practical Example](#practical-example) below.
115
-
116
- ### Things to Note:
117
-
118
- - Our DAL function returns a single Person business object which is properly structured from the many relational row records!
119
- - Our query is executed with a `one` method. The ORM methods for `one`, `oneOrNone`, `many`, `any` ensure their count against the number of generated top level business objects - not the number of relational row records the sql expression returns!
120
- - Rather than manually specifying our columns in the sql select expression, we used the orm's getter for columns. This is purely a convenience method which namespaces each column with the table name prefix to ensure column names don't collide (for example, the person, job, and employer `id`s would collide if not namespaced, as would person and employer `name`s). You are welcome to do this by hand instead of using this convenience if you don't mind the tedium:
121
- ```javascript
122
- // ./dal/person.js
123
- const getPerson = ({ id }) => {
124
- // Example showing you can manually specify the select expression fields
125
- // instead of using the orm's columns getter.
126
- // Note: you must namespace the field with table name and hashtag.
127
- const query = `
128
- SELECT
129
- person.id as "person#id",
130
- person.name as "person#name",
131
- job.id as "job#id",
132
- job.person_id: "job#person_id",
133
- job.employer_id: "job#employer_id",
134
- job.start_date: "job#start_date",
135
- job.end_date: "job#end_date",
136
- employer.id as "employer#id",
137
- employer.name as "employer#name"
138
- FROM person
139
- JOIN job on person.id = job.person_id
140
- JOIN employer on job.employer_id = employer.id
141
- WHERE id = $(id)
142
- `;
143
- return orm.one(query, { id });
144
- };
145
- ```
146
-
147
- ## Usage
148
-
149
- The exports you'll use from pure-orm:
150
-
151
- - `create` is a factory to create your ORM. This factory function accepts an object with two properties.
152
- - `getBusinessObjects` which is a function that returns an array of all your business object classes (where each business object must implement static `table` and `sqlColumnsData` fields.
153
- - `db` which is an instance of the database driver.
154
-
155
51
  ## Practical Example
156
52
 
157
53
  Lets take a practical example to see all this in action. Lets fill in the backend for a tiny rest server for a person.
158
54
 
159
55
  Lets say we have a database with three tables: person, job, and employer. We want our rest server to return an payload like this for requests which the get method receive.
160
56
 
161
- ```javascript
162
- // ./controllers/rest/person.js
163
- const get = (req, res) => {
57
+ ```typescript
58
+ // app.ts
59
+ import express, { Express, Request, Response } from 'express';
60
+
61
+ const app: Express = express();
62
+ const port = process.env.PORT;
63
+
64
+ app.get('/rest/person', (req: Request, res: Response) => {
164
65
  const person = {
165
66
  id: 55,
166
67
  name: 'John Doe',
@@ -192,22 +93,43 @@ const get = (req, res) => {
192
93
  }
193
94
  };
194
95
  res.json(person);
195
- };
96
+ });
97
+
98
+ app.listen(port);
196
99
  ```
197
100
 
198
- Based on the tables, I know exactly how to query for this:
101
+ Based on the tables with this data:
102
+
103
+ **Person**
104
+ | id | name |
105
+ | --- | --- |
106
+ | 55 | John Doe |
107
+
108
+ **Employer**
109
+ | id | name |
110
+ | --- | --- |
111
+ | 17 | Good Corp |
112
+ | 26 | Better Corp |
113
+
114
+ **Job**
115
+ | id | personId | employerId | startDate | endDate |
116
+ | --- | --- | --- | --- | ---|
117
+ | 277 | 55 | 17 | 2020-01-01 | 2020-12-31 |
118
+ | 278 | 55 | 26 | 2021-01-01 | 2021-12-31 |
119
+
120
+ I know exactly how I want to query for it:
199
121
 
200
122
  ```sql
201
123
  SELECT *
202
124
  FROM person
203
125
  LEFT JOIN job on person.id = job.person_id
204
- JOIN employer on job.employer_id = employer.id
205
- WHERE id = 55;
126
+ LEFT JOIN employer on job.employer_id = employer.id
127
+ WHERE person.id = 55;
206
128
  ```
207
129
 
208
- I already know how to SQL, and don't want to spend the time mapping what I already know how to do onto a huge, niche, library-specific API.
130
+ I already know how SQL, and don't want to spend the time mapping what I already know how to do onto a huge, niche, library-specific API.
209
131
 
210
- However, using this query with a database driver would give me a bunch of flat result records, not one object that is properly structed/nested like I want in my code, and with collided fields (id from all three tables, name from person and employer, etc).
132
+ However, using this query with a database driver would give me a bunch of flat result records (not one object that is properly structed/nested) and with collided fields (id from all three tables, name from person and employer, etc).
211
133
 
212
134
  So, lets install PureORM and the database driver and get started!
213
135
 
@@ -220,14 +142,200 @@ npm install --save pure-orm
220
142
  npm install --save pg-promise
221
143
  ```
222
144
 
223
- ### Step 2: Writing the Controller Code
145
+ ### Step 2: Creating the Business Objects
146
+
147
+ Let's create a `/models` directory of business object classes for our database tables. These classes need to implement a static getter for `tableName` and `sqlColumnsData` to denote the database table and columns.
148
+
149
+ ```typescript
150
+ // models/person.ts
151
+ import { IModel, ICollection, IColumns, IEntity } from 'pure-orm';
152
+
153
+ export const tableName: string = 'person';
154
+
155
+ export const columns: IColumns = ['id', 'name'];
156
+
157
+ export class Person implements IModel {
158
+ id: number;
159
+ name: string;
160
+ constructor(props) {
161
+ this.id = props.id;
162
+ this.name = props.name;
163
+ }
164
+ // any business methods...
165
+ }
166
+
167
+ export const personEntity: IEntity = { tableName, columns, Model: Person };
168
+ ```
169
+
170
+ ```typescript
171
+ // models/job.ts
172
+ import { IModel, ICollection, IColumns, IEntity } from 'pure-orm';
173
+ import { Person } from './person';
174
+ import { Employer } from './employer';
175
+
176
+ export const tableName: string = 'job';
177
+
178
+ export const columns: IColumns = [
179
+ 'id',
180
+ { column: 'person_id', references: Person },
181
+ { column: 'employer_id', references: Employer },
182
+ 'start_date',
183
+ 'end_date'
184
+ ];
185
+
186
+ export class Job implements IModel {
187
+ id: number;
188
+ personId: number;
189
+ person?: Person;
190
+ employerId: number;
191
+ employer: Employer;
192
+ startDate: Date;
193
+ endDate: Date;
194
+ constructor(props) {
195
+ this.id = props.id;
196
+ this.personId = props.personId;
197
+ this.person = props.person;
198
+ this.employerId = props.employerId;
199
+ this.employer = props.employer;
200
+ this.startDate = props.startDate;
201
+ this.endDate = props.endDate;
202
+ }
203
+ // any business methods...
204
+ }
205
+
206
+ export const JobEntity: IEntity = { tableName, columns, Model: Job };
207
+ ```
208
+
209
+ ```typescript
210
+ // models/employer.ts
211
+ import { IModel, ICollection, IColumns, IEntity } from 'pure-orm';
212
+
213
+ export const tableName: string = 'employer';
214
+
215
+ export const columns: IColumns = ['id', 'name'];
216
+
217
+ export class Employer implements IModel {
218
+ id: number;
219
+ name: string;
220
+ constructor(props: IEmployerProps) {
221
+ this.id = props.id;
222
+ this.name = props.name;
223
+ }
224
+ // any business methods...
225
+ }
226
+
227
+ export const EmployerEntity: IEntity = { tableName, columns, Model: Employer };
228
+ ```
229
+
230
+ We've not got our three entities that relate our table data to our business objects.
224
231
 
225
- Lets remove our hardcoded example, and write our contoller code using functions we want to exist and will create.
232
+ ### Step 3: Creating our ORM
233
+
234
+ First we create our database driver:
235
+
236
+ ```typescript
237
+ // ./factories/db.ts
238
+ import pgPromise from 'pg-promise';
239
+ const pgp = pgPromise();
240
+ const connectionObject = {
241
+ host: process.env.DB_HOSTNAME,
242
+ port: process.env.DB_PORT,
243
+ database: process.env.DB_NAME,
244
+ user: process.env.DB_USERNAME,
245
+ password: process.env.DB_PASSWORD
246
+ };
247
+ export const db = pgp(connectionObject);
248
+ ```
249
+
250
+ We can now create our ORM, which layers atop the database driver to do the object relational mapping of raw sql row data to nest objects. (Besides using the `db` instance directly, the orm also offers access to the db directly (`orm.db`) for anytime this object relational mapping isn't desired.
251
+
252
+ ```typescript
253
+ // factories/orm.ts
254
+ import { create } from 'pure-orm';
255
+ import { db } from './db';
256
+ import { personEntity } from '../models/person';
257
+ import { jobEntity } from '../models/job';
258
+ import { employerEntity } from '../models/employer';
259
+ const orm = create({
260
+ getEntities: () => [personEntity, jobEntity, employerEntity],
261
+ db
262
+ });
263
+ export default orm;
264
+ ```
265
+
266
+ ### Step 4: Creating our Data Access Layer
267
+
268
+ Let's now create a data access directory with a person file for data access operations related to a person.
269
+
270
+ ```typescript
271
+ // data-access/person.ts
272
+ import orm from '../factories/orm';
273
+ import { Person } from '../models/person';
274
+
275
+ export const getPerson = (id: number): Person => {
276
+ const query = `
277
+ SELECT
278
+ ${orm.tables.person.columns},
279
+ ${orm.tables.job.columns},
280
+ ${orm.tables.employer.columns}
281
+ FROM person
282
+ LEFT JOIN job on person.id = job.person_id
283
+ LEFT JOIN employer on job.employer_id = employer.id
284
+ WHERE id = $(id)
285
+ `;
286
+ return orm.one(query, { id });
287
+ };
288
+ ```
289
+
290
+ Some things to note:
291
+
292
+ - Our data access function returns a single Person model which is properly structured from the many relational row records!
293
+ - Our query is executed with a `one` method. The ORM methods for `one`, `oneOrNone`, `many`, `any` ensure their count against the number of generated top level models - not the number of relational row records the sql expression returns!
294
+ - Rather than manually specifying our columns in the sql select expression, we used the orm's getter for columns. This is purely a convenience method which namespaces each column with the table name prefix to ensure column names don't collide (for example, the person, job, and employer `id`s would collide if not namespaced, as would person and employer `name`s). You are welcome to do this by hand instead of using this convenience if you don't mind the tedium:
295
+
296
+ ```typescript
297
+ // data-access/person.ts
298
+ import orm from '../factories/orm';
299
+ import { Person } from '../models/person';
300
+
301
+ const getPerson(id) {
302
+ // Example showing you can manually specify the select expression fields
303
+ // instead of using the orm's columns getter.
304
+ // Note: you must namespace the field with table name and hashtag.
305
+ const query = `
306
+ SELECT
307
+ person.id as "person#id",
308
+ person.name as "person#name",
309
+ job.id as "job#id",
310
+ job.person_id: "job#person_id",
311
+ job.employer_id: "job#employer_id",
312
+ job.start_date: "job#start_date",
313
+ job.end_date: "job#end_date",
314
+ employer.id as "employer#id",
315
+ employer.name as "employer#name"
316
+ FROM person
317
+ LEFT JOIN job on person.id = job.person_id
318
+ LEFT JOIN employer on job.employer_id = employer.id
319
+ WHERE id = $(id)
320
+ `;
321
+ return orm.one(query, { id });
322
+ }
323
+ module.exports = getPerson;
324
+ ```
325
+
326
+ ### Step 5: Writing the Controller Code
327
+
328
+ We can now return to our controller code, and use our person data access function.
226
329
 
227
330
  ```diff
228
- // ./controllers/rest/person.js
229
- +const { getPerson } = require('./dal/person');
230
- const renderProfile = (req, res) => {
331
+ // app.ts
332
+ import express, { Express, Request, Response } from 'express';
333
+ +import { getPerson } from './data-access/person';
334
+
335
+ const app: Express = express();
336
+ const port = process.env.PORT;
337
+
338
+ app.get('/rest/person', (req: Request, res: Response) => {
231
339
  - const person = {
232
340
  - id: 55,
233
341
  - name: 'John Doe',
@@ -241,7 +349,7 @@ const renderProfile = (req, res) => {
241
349
  - endDate: '2020-12-31',
242
350
  - employer: {
243
351
  - id: 17,
244
- - name: 'Good Corp',
352
+ - name: 'Good Corp'
245
353
  - }
246
354
  - },
247
355
  - {
@@ -252,185 +360,198 @@ const renderProfile = (req, res) => {
252
360
  - endDate: '2021-12-31',
253
361
  - employer: {
254
362
  - id: 26,
255
- - name: 'Better Corp',
363
+ - name: 'Better Corp'
256
364
  - }
257
365
  - }
258
366
  - ]
259
367
  - }
260
368
  - };
261
- + const person = getPerson({ id: req.params.id });
262
- res.render('profile.html', person);
263
- ```
264
-
265
- This looks nice, now let's create the necessary bo and function in the dal.
266
-
267
- ### Step 3: Creating the Business Objects
268
-
269
- Let's create a `/bo` directory and the classes we want.
270
-
271
- ```javascript
272
- // ./bo/person.js
273
- class Person {
274
- static tableName = 'person';
275
- static sqlColumnsData = ['id', 'name'];
276
- // any other business methods...
277
- }
278
- module.exports = Person;
279
- ```
369
+ + const person = getPerson(req.params.id);
370
+ res.json(person);
371
+ });
280
372
 
281
- ```javascript
282
- // ./bo/job.js
283
- const Person = require('./person');
284
- const Employer = require('./employer');
285
-
286
- class Job {
287
- static tableName = 'job';
288
- static sqlColumnsData = [
289
- 'id',
290
- { column: 'person_id', references: Person },
291
- { column: 'employer_id', references: Employer },
292
- 'start_date',
293
- 'end_date'
294
- ];
295
- // any other business methods...
296
- }
297
- module.exports = Job;
373
+ app.listen(port);
298
374
  ```
299
375
 
300
- ```javascript
301
- // ./bo/employer.js
302
- class Employer {
303
- static tableName = 'employer';
304
- static sqlColumnsData = ['id', 'name'];
305
- // any other business methods...
306
- }
307
- module.exports = Employer;
308
- ```
376
+ That's it! This controller code now works! The `getPerson` function returns a properly structured business object as we desire.
309
377
 
310
- We've not got our three business object classes. To review, each business object class has:
378
+ ## API
311
379
 
312
- - A static `tableName` property to denote which table results this class is for.
313
- - A static `sqlColumnsData` property to enumerate the table columns.
380
+ ### `create`
314
381
 
315
- ### Step 4: Creating our ORM
382
+ ```typescript
383
+ function create(options: {
384
+ getEntities: () => Array<IEntity>;
385
+ db: DataBaseDriver;
386
+ }): PureORM;
387
+ ```
316
388
 
317
- ```javascript
318
- // ./factories/orm.js
319
- const db = require('./db');
320
- const { create } = require('pure-orm');
321
- const Person = require('./person');
322
- const Job = require('./job');
323
- const Employer = require('./employer');
389
+ The factory function for creating your ORM.
324
390
 
325
- const orm = create({
326
- db,
327
- getBusinessObjects: () => [Person, Job, Employer]
328
- });
329
- module.exports = BaseBO;
330
- ```
391
+ **Parameters**
331
392
 
332
- ### Step 4: Creating the DAL function
393
+ - `getEntities: () => Array<IEntity>` - A function which returns an array of all the business object class entity configuration objects.
394
+ - `db: <DataBaseDriverInstance>` - A database driver instance.
333
395
 
334
- ```javascript
335
- // ./dal/person.js
336
- const orm = require('../factories/orm');
396
+ **Return Value**
337
397
 
338
- const getPerson({ id }) {
339
- const query = `
340
- SELECT
341
- ${Person.getSQLSelectClause()},
342
- ${Job.getSQLSelectClause()},
343
- ${Employer.getSQLSelectClause()}
344
- FROM person
345
- JOIN job on person.id = job.person_id
346
- JOIN employer on job.employer_id = employer.id
347
- WHERE id = $(id)
348
- `;
349
- return orm.one(query, { id });
398
+ Your `PureORM` instance, which is of this interface:
399
+
400
+ ```typescript
401
+ interface PureORM {
402
+ /* ------------------------------------------------------------------------*/
403
+ /* Query methods ----------------------------------------------------------*/
404
+ /* ------------------------------------------------------------------------*/
405
+
406
+ /* Note these query methods ensure their count against the number of
407
+ * generated top level business objects which are created - not the number
408
+ * of relational rows returned from the database driver! Thus, for example,
409
+ * `one` understands that there may be multiple result rows (which a
410
+ * database driver's `one` query method would throw at) but which correctly
411
+ * nest into one Model.)
412
+ */
413
+
414
+ // Execute a query returning a single model, or throws.
415
+ one: <T extends IModel>(
416
+ query: string,
417
+ values?: object,
418
+ errorHandler = defaultErrorHandler
419
+ ) => T;
420
+
421
+ // Execute a query returning either single model or undefined, or throws.
422
+ oneOrNone: <T extends IModel>(
423
+ query: string,
424
+ values?: object,
425
+ errorHandler = defaultErrorHandler
426
+ ) => T | void;
427
+
428
+ // Execute a query returning a Collection with at least one model, or throws.
429
+ many: <T extends ICollection<IModel>>(
430
+ query: string,
431
+ values?: object,
432
+ errorHandler = defaultErrorHandler
433
+ ) => T;
434
+
435
+ // Execute a query returning a Collection.
436
+ any: <T extends ICollection<IModel>>(
437
+ query: string,
438
+ values?: object,
439
+ errorHandler = defaultErrorHandler
440
+ ) => T | void;
441
+
442
+ // Execute a query returning null.
443
+ none: (
444
+ query: string,
445
+ values?: object,
446
+ errorHandler = defaultErrorHandler
447
+ ) => void;
448
+
449
+ /* ------------------------------------------------------------------------*/
450
+ /* Built-in basic CRUD functions ------------------------------------------*/
451
+ /* ------------------------------------------------------------------------*/
452
+
453
+ /* These are just provided because they are so common and straight-forward.
454
+ * While the goal of this library is foster writing SQL in your data access
455
+ * layer (which returns pure business objects) some CRUD operations are so
456
+ * common they are included in the ORM. Feel free to completely disregard
457
+ * if you want to write these in your data access layer yourself.
458
+ */
459
+
460
+ getMatching: <T extends IModel>(model: T) => T;
461
+ getOneOrNoneMatching: <T extends IModel>(model: T) => T | void;
462
+ getAnyMatching: <T extends ICollection<IModel>>(model: IModel) => T | void;
463
+ getAllMatching: <T extends ICollection<IModel>>(model: IModel) => T;
464
+ create: <T extends IModel>(model: T) => T;
465
+ update: <T extends IModel>(model: T, { on = 'id' } = {}) => T;
466
+ _delete: <T extends IModel>(model: T) => void;
467
+ deleteMatching: <T extends IModel>(model => T);
468
+
469
+ /* ------------------------------------------------------------------------*/
470
+ /* Built-in basic CRUD functions ------------------------------------------*/
471
+ /* ------------------------------------------------------------------------*/
472
+
473
+ /* The tables property gives access to the sql select clause string for
474
+ * each entity based on it's `displayName`. This property can be used when
475
+ * writing raw SQL as the select clause, which handles quoting column names
476
+ * and namespacing them to the table to avoid collisions and as required
477
+ * for PureORM mapping.
478
+ */
479
+
480
+ tables: { [key:string]: { [key: string]: string; }};
350
481
  }
351
- module.exports = getPerson;
352
482
  ```
353
483
 
354
- Notice that we're using `orm.one`, which is what we want. The DAO methods for `one`, `oneOrNone`, `many`, `any` ensure their count against the number of generated top level business objects - not the number of rows the sql expression returns!
484
+ ## FAQ
355
485
 
356
- ### Step 6: Creating the Database Driver Instance
486
+ ### Can you show the business objects of a more complex entity?
357
487
 
358
- The last step is creating the datebase driver, that we had imported up in `./factories/orm`.
488
+ ```typescript
489
+ import { IModel, ICollection, IColumns, IEntity } from 'pure-orm';
359
490
 
360
- ```javascript
361
- // ./factories/db.js
362
- const pgPromise = require('pg-promise');
363
- const pgp = pgPromise();
364
- module.exports = pgp({
365
- host: process.env.DB_HOSTNAME,
366
- port: process.env.DB_PORT,
367
- database: process.env.DB_NAME,
368
- user: process.env.DB_USERNAME,
369
- password: process.env.DB_PASSWORD
370
- });
371
- ```
491
+ export const tableName: string = 'library_v2';
372
492
 
373
- That's it! Our example controller code now works! The `getPerson` function in our data access layer now returns a properly structured business object as we desire.
493
+ export const columns: IColumns = [
494
+ 'id',
495
+ 'name',
496
+ { column: 'is_ala_member', property: 'isALAMember' },
497
+ { column: 'address_id', references: Address }
498
+ ];
374
499
 
375
- ## FAQ
500
+ export const displayName = 'library';
501
+ export const collectionDisplayName = 'libraries';
376
502
 
377
- ### Can you show a more complex business object and collection?
503
+ interface ILibraryProps {
504
+ id: number;
505
+ name: string;
506
+ isALAMember: string;
507
+ addressId: number;
508
+ address: Address;
509
+ }
378
510
 
379
- ```javascript
380
- // ./bo/library.js
381
- const Libraries = require('./libraries');
382
- class Library {
383
- get BoCollection() {
384
- return Libraries;
385
- }
386
- static get tableName() {
387
- return 'library_v2';
388
- }
389
- static get displayName() {
390
- // If we didn't provide this static field, in javascript an object
391
- // referencing a library bo would use `libraryV2` as the property name.
392
- return 'library';
393
- }
394
- static get sqlColumnsData() {
395
- return [
396
- 'id',
397
- 'name',
398
- { column: 'is_ala_member', property: 'isALAMember' },
399
- { column: 'address', references: Address }
400
- ];
511
+ export class Library implements IModel {
512
+ id: number;
513
+ name: string;
514
+ constructor(props: ILibraryProps) {
515
+ this.id = props.id;
516
+ this.name = props.name;
517
+ this.isALAMember = props.isALAMember;
518
+ this.addressId = props.addressId;
519
+ this.address = props.address;
401
520
  }
402
521
  aBussinessObjectMethod() {}
403
522
  anotherBussinessObjectMethod() {}
404
523
  }
405
- ```
406
524
 
407
- ```javascript
408
- // ./bo/libraries.js
409
- class Library {
410
- static get Bo() {
411
- return require('./person'); // eslint-disable-line
412
- }
413
- static get displayName() {
414
- // If we didn't provide this static field, in javascript an object
415
- // referencing this collection would use `librarys` as the property name.
416
- return 'libraries';
525
+ export class Persons implements ICollection<Person> {
526
+ models: Array<Person>;
527
+ constructor({ models }: any) {
528
+ this.models = models;
529
+ return this;
417
530
  }
418
531
  aCollectionMethod() {}
419
532
  anotherCollectionMethod() {}
420
533
  }
534
+
535
+ export const personEntity: IEntity = {
536
+ tableName,
537
+ displayName,
538
+ collectionDisplayName,
539
+ columns,
540
+ Model: Person,
541
+ Collection: Persons
542
+ };
421
543
  ```
422
544
 
423
545
  ### If I use PureORM do I have to re-invent all the super basic CRUD methods?
424
546
 
425
547
  The goal of PureORM is to foster writing SQL and receiving pure business objects. That said, some SQL is so common that we preload the created ORM with with some basic CRUD operations.
426
548
 
427
- For example, rather than every entity's DAL needing basic get, create, etc method, you can use:
549
+ For example, rather than every entity needing data access operatons for get, create, etc method, you can use built-in orm functions.
428
550
 
429
- ```javascript
430
- // ./controllers/rest/person.js
431
- const get = (req, res) => {
551
+ ```typescript
552
+ app.get('/rest/person', (req: Request, res: Response) => {
432
553
  if (req.params.id) {
433
- return res.json(await orm.get(new Person({ id })));
554
+ return res.json(await orm.getMatching(new Person({ id })));
434
555
  }
435
556
  if (req.query.name) {
436
557
  return res.json(
@@ -443,12 +564,12 @@ const get = (req, res) => {
443
564
  };
444
565
  ```
445
566
 
446
- At any point you can ditch these built-ins and write some SQL in a DAL function.
567
+ At any point you can ditch these built-ins and write some SQL in a data access function.
447
568
 
448
- ```javascript
449
- // ./controllers/rest/person.js
450
- const { getPerson, getPeopleWithName } = require('../../dal/person');
451
- const get = (req, res) => {
569
+ ```typescript
570
+ import { getPerson, getPeopleWithName } from '../../data-access/person';
571
+
572
+ app.get('/rest/person', (req: Request, res: Response) => {
452
573
  if (req.params.id) {
453
574
  return res.json(await getPerson(id));
454
575
  }
@@ -465,13 +586,13 @@ const get = (req, res) => {
465
586
 
466
587
  Traditional/stateful ORMs offer a dialetic-generic, chainable object api for expressing underlying SQL - thus solving for database "lock-in" as well the inability of string queries compose easily. PureORM takes the approach that the tradeoff of developers having to learn the huge surface area of of a query builder, and having to map the complexity and nuance of SQL to it, are simply not worth the cost, and so is premised on not using a query building library. PureORM sees writing straight SQL heaviliy as a feature, not a defect needing solved, and not eclipsed by the composibility of a query builder.
467
588
 
468
- ### Will I then have dozens of similar DAL functions, since strings aren't as composable as stateful ORM builder builder APIs?
589
+ ### Will I then have dozens of similar data access functions, since strings aren't as composable as stateful ORM builder builder APIs?
469
590
 
470
591
  There is still a lot of composibility possible with functions returning strings (someone create an Issue if you want to see examples used in the Kujo codebase), but in general yes, there is more repitition. Most of this remaining repitition is not something I think is a defect (though those obsessed with DRY would disagree). The only "defect" of this repitition is that there may be more than one similiar method (for example a "get" that does certain joins vs others), and differentiating the large query in a function name can be lengthy/annoying. In these cases where composing functions doesn't bring the number of similar functions methods to only one, rather than distilling these large queries into the function name (eg, getPersonWithJobsAndEmployers), I usually just opt for a small arbitrary hash at the end of the short name (eg, getXTW instead of getPersonWithJobsAndEmployers, getRJF instead of getPersonWithFriendsLocatedNearANewFriendRequest, etc).
471
592
 
472
593
  ### Does PureORM abstract away the database driver?
473
594
 
474
- No, the whole premise of PureORM is to offer a library to aid the use of writing SQL. The datebase driver is always available to you (at `orm.db`) if you wish to use it directly with no PureORM mappings, or just import it. In my experience, a small percentage of highly complex queries looking for sums or counts in my DAL use the database driver directly.
595
+ No, the whole premise of PureORM is to offer a library to aid the use of writing SQL. The datebase driver is always available to you (at `orm.db`) if you wish to use it directly with no PureORM mappings, or just import it. In my experience, a small percentage of highly complex queries looking for sums or counts in my data access layer use the database driver directly.
475
596
 
476
597
  The only difference is how the SQL is invoked: `orm.one(query, {})` vs `orm.db.one(query, {})`
477
598
 
@@ -483,7 +604,7 @@ Yes, if you'd like to get the mapping while also passing through some select exp
483
604
  const getBloggerPayout = ({ id, startDate, endDate }) => {
484
605
  const query = `
485
606
  SELECT
486
- ${Person.getSQLSelectClause()},
607
+ ${orm.tables.person.columns},
487
608
  COALESCE(SUM(article.blogger_payout), 0) as meta_amount
488
609
  FROM
489
610
  person
@@ -518,69 +639,6 @@ PureORM
518
639
  - PureORM is more than just the preference against the query builder portion of Stateful ORMs
519
640
  - PureORM is the preference against stateful, db-connected objects: PureORM resolves result rows to _pure_ business objects. This purity in business objects fosters a clean layer of the business layer from the data access layer, as well as ensuring the very best in performance (eg, the [N+1 problem](https://docs.sqlalchemy.org/en/13/glossary.html#term-n-plus-one-problem) can't exist with pure objects).
520
641
 
521
- ## API
522
-
523
- ### Interfaces
524
-
525
- #### `PureORMEntity`
526
-
527
- An interface which your business object classes need to implement.
528
-
529
- - `static get tableName(): string` - Returns the string table name which the business object associates with from the database.
530
- - `static get sqlColumnsData(): Array<string|ColumnData>` - Returns an array of the database column data. The type is either:
531
- - `ColumnData {column, property?, references?, primaryKey?}`
532
- - `column: string` - The sql column name
533
- - `propery: string` - The javascript property name for this column (defaults to camelCase of `column`)
534
- - `references: Bo` - The relationship to another Bo (defaults to null)
535
- - `primaryKey: boolean` - Is this column (part of) the primary key (defaults to false)
536
- - `string` - If a string, it is applied as the `column` value, with all others defaulted.
537
- - (Note: if there is no primary key, `id` is defaulted)
538
- - `get BoCollection()?: BoCollection` - (Optional) returns the business object collection class constructor.
539
- - `static get displayName()?: string` - (Optional) returns the string display name of the business object (defaults to camelcase of tableName)
540
-
541
- #### `PureORMCollection`
542
-
543
- An abstract class which is the base class your Bo Collection classes extend.
544
-
545
- - `static get Bo(): BO` - Returns the individual (singular) business object class constructor.
546
- - `get displayName()?: BO` - (Optional) returns the string display name of the business object collection (defaults to bo displayName with an "s")
547
-
548
- #### `create`
549
-
550
- The factory function for creating your ORM.
551
-
552
- **Parameters**
553
-
554
- - `getBusinessObjects: () => Array<BusinessObject>` - A function which returns an array of all the business objects.
555
- - `db: <DataBaseDriverInstance>` - A database driver instance.
556
-
557
- **Return Value**
558
-
559
- Your ORM.
560
-
561
- It has the following query methods:
562
-
563
- - `one(query: string, params: object)` - executes a query and returns a Bo, or throws.
564
- - `oneOrNone(query: string, params: object)` - executes a query and returns a Bo or undefined, or throws.
565
- - `many(query: string, params: object)` - executes a query and returns a BoCollection with at least one model, or throws.
566
- - `any(query: string, params: object)` - executes a query and returns a BoCollection.
567
- - `none(query: string, params: object)` - executes a query and returns null.
568
-
569
- (Note these orm query methods ensure their count against the number of generated top level business objects are created - not the number of relational rows returned from the database driver! Thus, for example, `one` understands that there may be multiple result rows (which a database driver's `one` query method would throw at) but which correctly nest into one BO.)
570
-
571
- Built-in "basic" / generic crud functions
572
-
573
- - `getMatching(bo: BaseBO)`
574
- - `getOneOrNoneMatching(bo: BaseBO)`
575
- - `getAnyMatching(bo: BaseBO)`
576
- - `getAllMatching(bo: BaseBO)`
577
- - `create(bo: BaseBO)`
578
- - `update(bo: BaseBO)`
579
- - `delete(bo: BaseBO)`
580
- - `deleteMatching(bo: BaseBO)`
581
-
582
- These are just provided because they are so common and straight-forward. While the goal of this library is foster writing SQL in your DAL (which returns pure business objects) some CRUD operations are so common they are included in the ORM. Feel free to completely disregard if you want to write these in your DAL yourself.
583
-
584
642
  ## Current Status
585
643
 
586
644
  #### Current Limitations (PRs welcome!)