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