pure-orm 4.0.0-5 → 4.0.0-8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -20
- package/coverage/clover.xml +375 -577
- package/coverage/coverage-final.json +18 -20
- package/coverage/lcov-report/dist/src/core.js.html +1038 -0
- package/coverage/lcov-report/dist/src/drivers/index.html +97 -0
- package/coverage/lcov-report/dist/src/drivers/pgp.js.html +240 -0
- package/coverage/lcov-report/dist/src/factory.js.html +293 -197
- package/coverage/lcov-report/dist/src/index.html +20 -33
- package/coverage/lcov-report/dist/src/index.js.html +16 -10
- package/coverage/lcov-report/dist/src/orm.js.html +645 -0
- package/coverage/lcov-report/dist/test-utils/blog/entities.js.html +108 -0
- package/coverage/lcov-report/dist/test-utils/blog/index.html +6 -6
- package/coverage/lcov-report/dist/test-utils/blog/models/article.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/blog/models/article_tag.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/blog/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/blog/models/person.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/blog/models/tag.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/blog/orm.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/entities.js.html +114 -0
- package/coverage/lcov-report/dist/test-utils/five/index.html +6 -6
- package/coverage/lcov-report/dist/test-utils/five/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/models/line-item.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/models/order.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/models/parcel-event.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/models/parcel-line-item.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/models/parcel.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/five/orm.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/nine/entities.js.html +84 -0
- package/coverage/lcov-report/dist/test-utils/nine/index.html +6 -6
- package/coverage/lcov-report/dist/test-utils/nine/models/feature-switch.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/nine/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/nine/orm.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order/entities.js.html +114 -0
- package/coverage/lcov-report/dist/test-utils/order/index.html +6 -6
- package/coverage/lcov-report/dist/test-utils/order/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order/models/line-item.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order/models/order.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order/models/product-variant.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order/models/product.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order/models/utm-source.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order/orm.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/entities.js.html +204 -0
- package/coverage/lcov-report/dist/test-utils/order-more/index.html +6 -6
- package/coverage/lcov-report/dist/test-utils/order-more/models/actual-product-variant.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/color.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/customer.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/gender.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/inventory-level.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/line-item.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/order.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/parcel-event.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/parcel-line-item.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/parcel.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/physical-address.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/product-variant-image.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/product-variant.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/product.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/refund.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/shipment-actual-product-variant.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/shipment.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/size.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/utm-medium.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/models/utm-source.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/order-more/orm.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/six/entities.js.html +114 -0
- package/coverage/lcov-report/dist/test-utils/six/index.html +6 -6
- package/coverage/lcov-report/dist/test-utils/six/models/customer.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/six/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/six/models/line-item.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/six/models/order.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/six/models/parcel-line-item.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/six/models/parcel.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/six/orm.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/entities.js.html +132 -0
- package/coverage/lcov-report/dist/test-utils/thirteen/index.html +6 -6
- package/coverage/lcov-report/dist/test-utils/thirteen/models/audience.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/brand.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/category.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/member.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/passion.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/product.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/recommendation-audience.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/models/recommendation.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/thirteen/orm.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/three/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/three/results.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/twelve/entities.js.html +87 -0
- package/coverage/lcov-report/dist/test-utils/twelve/index.html +6 -6
- package/coverage/lcov-report/dist/test-utils/twelve/models/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/twelve/models/member.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/twelve/models/prompt.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/twelve/orm.js.html +1 -1
- package/coverage/lcov-report/dist/test-utils/two/index.html +1 -1
- package/coverage/lcov-report/dist/test-utils/two/results.js.html +1 -1
- package/coverage/lcov-report/index.html +47 -47
- package/coverage/lcov-report/src/core.ts.html +1593 -0
- package/coverage/lcov-report/src/drivers/index.html +97 -0
- package/coverage/lcov-report/src/drivers/pgp.ts.html +516 -0
- package/coverage/lcov-report/src/factory.ts.html +436 -250
- package/coverage/lcov-report/src/index.html +20 -33
- package/coverage/lcov-report/src/index.ts.html +23 -5
- package/coverage/lcov-report/src/orm.ts.html +954 -0
- package/coverage/lcov-report/test-utils/blog/entities.ts.html +102 -0
- package/coverage/lcov-report/test-utils/blog/index.html +6 -6
- package/coverage/lcov-report/test-utils/blog/models/article.ts.html +1 -1
- package/coverage/lcov-report/test-utils/blog/models/article_tag.ts.html +1 -1
- package/coverage/lcov-report/test-utils/blog/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/blog/models/person.ts.html +1 -1
- package/coverage/lcov-report/test-utils/blog/models/tag.ts.html +1 -1
- package/coverage/lcov-report/test-utils/blog/orm.ts.html +1 -1
- package/coverage/lcov-report/test-utils/five/entities.ts.html +105 -0
- package/coverage/lcov-report/test-utils/five/index.html +2 -2
- package/coverage/lcov-report/test-utils/five/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/five/models/line-item.ts.html +1 -1
- package/coverage/lcov-report/test-utils/five/models/order.ts.html +1 -1
- package/coverage/lcov-report/test-utils/five/models/parcel-event.ts.html +1 -1
- package/coverage/lcov-report/test-utils/five/models/parcel-line-item.ts.html +1 -1
- package/coverage/lcov-report/test-utils/five/models/parcel.ts.html +1 -1
- package/coverage/lcov-report/test-utils/five/orm.ts.html +1 -1
- package/coverage/lcov-report/test-utils/nine/entities.ts.html +75 -0
- package/coverage/lcov-report/test-utils/nine/index.html +2 -2
- package/coverage/lcov-report/test-utils/nine/models/feature-switch.ts.html +1 -1
- package/coverage/lcov-report/test-utils/nine/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/nine/orm.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order/entities.ts.html +108 -0
- package/coverage/lcov-report/test-utils/order/index.html +2 -2
- package/coverage/lcov-report/test-utils/order/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/order/models/line-item.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order/models/order.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order/models/product-variant.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order/models/product.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order/models/utm-source.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order/orm.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/entities.ts.html +198 -0
- package/coverage/lcov-report/test-utils/order-more/index.html +2 -2
- package/coverage/lcov-report/test-utils/order-more/models/actual-product-variant.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/color.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/customer.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/gender.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/inventory-level.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/line-item.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/order.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/parcel-event.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/parcel-line-item.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/parcel.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/physical-address.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/product-variant-image.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/product-variant.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/product.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/refund.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/shipment-actual-product-variant.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/shipment.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/size.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/utm-medium.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/models/utm-source.ts.html +1 -1
- package/coverage/lcov-report/test-utils/order-more/orm.ts.html +1 -1
- package/coverage/lcov-report/test-utils/six/entities.ts.html +105 -0
- package/coverage/lcov-report/test-utils/six/index.html +2 -2
- package/coverage/lcov-report/test-utils/six/models/customer.ts.html +1 -1
- package/coverage/lcov-report/test-utils/six/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/six/models/line-item.ts.html +1 -1
- package/coverage/lcov-report/test-utils/six/models/order.ts.html +1 -1
- package/coverage/lcov-report/test-utils/six/models/parcel-line-item.ts.html +1 -1
- package/coverage/lcov-report/test-utils/six/models/parcel.ts.html +1 -1
- package/coverage/lcov-report/test-utils/six/orm.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/entities.ts.html +123 -0
- package/coverage/lcov-report/test-utils/thirteen/index.html +2 -2
- package/coverage/lcov-report/test-utils/thirteen/models/audience.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/brand.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/category.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/member.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/passion.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/product.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/recommendation-audience.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/models/recommendation.ts.html +1 -1
- package/coverage/lcov-report/test-utils/thirteen/orm.ts.html +1 -1
- package/coverage/lcov-report/test-utils/three/index.html +1 -1
- package/coverage/lcov-report/test-utils/three/results.js.html +1 -1
- package/coverage/lcov-report/test-utils/twelve/entities.ts.html +78 -0
- package/coverage/lcov-report/test-utils/twelve/index.html +2 -2
- package/coverage/lcov-report/test-utils/twelve/models/index.html +1 -1
- package/coverage/lcov-report/test-utils/twelve/models/member.ts.html +1 -1
- package/coverage/lcov-report/test-utils/twelve/models/prompt.ts.html +1 -1
- package/coverage/lcov-report/test-utils/twelve/orm.ts.html +1 -1
- package/coverage/lcov-report/test-utils/two/index.html +1 -1
- package/coverage/lcov-report/test-utils/two/results.js.html +1 -1
- package/coverage/lcov.info +726 -1143
- package/dist/example/factories/orm.d.ts +1 -47
- package/dist/example/models/employer.d.ts +1 -1
- package/dist/example/models/job.d.ts +1 -1
- package/dist/example/models/person.d.ts +1 -1
- package/dist/src/core.d.ts +66 -0
- package/dist/src/{factory.js → core.js} +51 -245
- package/dist/src/{factory.spec.d.ts → core.spec.d.ts} +0 -0
- package/dist/src/{factory.spec.js → core.spec.js} +56 -43
- package/dist/src/driver-integrations/index.d.ts +13 -0
- package/dist/src/driver-integrations/index.js +2 -0
- package/dist/src/driver-integrations/pgp.d.ts +2 -0
- package/dist/src/driver-integrations/pgp.js +57 -0
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.js +5 -3
- package/dist/src/orm.d.ts +20 -0
- package/dist/src/orm.js +190 -0
- package/dist/test-utils/blog/entities.d.ts +1 -0
- package/dist/test-utils/blog/{orm.js → entities.js} +7 -6
- package/dist/test-utils/blog/{orm.ts → entities.ts} +6 -6
- package/dist/test-utils/blog/models/article.d.ts +1 -1
- package/dist/test-utils/blog/models/article_tag.d.ts +1 -1
- package/dist/test-utils/blog/models/person.d.ts +1 -1
- package/dist/test-utils/blog/models/tag.d.ts +1 -1
- package/dist/test-utils/five/entities.d.ts +6 -0
- package/dist/test-utils/five/{orm.js → entities.js} +8 -12
- package/dist/test-utils/five/{orm.ts → entities.ts} +7 -12
- package/dist/test-utils/five/models/line-item.d.ts +1 -1
- package/dist/test-utils/five/models/order.d.ts +1 -1
- package/dist/test-utils/five/models/parcel-event.d.ts +1 -1
- package/dist/test-utils/five/models/parcel-line-item.d.ts +1 -1
- package/dist/test-utils/five/models/parcel.d.ts +1 -1
- package/dist/test-utils/nine/entities.d.ts +6 -0
- package/dist/test-utils/nine/entities.js +5 -0
- package/dist/test-utils/nine/entities.ts +2 -0
- package/dist/test-utils/nine/models/feature-switch.d.ts +1 -1
- package/dist/test-utils/order/entities.d.ts +26 -0
- package/dist/test-utils/order/{orm.js → entities.js} +8 -12
- package/{test-utils/order/orm.ts → dist/test-utils/order/entities.ts} +7 -12
- package/dist/test-utils/order/models/line-item.d.ts +1 -1
- package/dist/test-utils/order/models/order.d.ts +1 -1
- package/dist/test-utils/order/models/product-variant.d.ts +1 -1
- package/dist/test-utils/order/models/product.d.ts +1 -1
- package/dist/test-utils/order/models/utm-source.d.ts +1 -1
- package/dist/test-utils/order-more/entities.d.ts +6 -0
- package/dist/test-utils/order-more/{orm.js → entities.js} +23 -27
- package/dist/test-utils/order-more/{orm.ts → entities.ts} +22 -27
- package/dist/test-utils/order-more/models/actual-product-variant.d.ts +1 -1
- package/dist/test-utils/order-more/models/color.d.ts +1 -1
- package/dist/test-utils/order-more/models/customer.d.ts +1 -1
- package/dist/test-utils/order-more/models/gender.d.ts +1 -1
- package/dist/test-utils/order-more/models/inventory-level.d.ts +1 -1
- package/dist/test-utils/order-more/models/line-item.d.ts +1 -1
- package/dist/test-utils/order-more/models/order.d.ts +1 -1
- package/dist/test-utils/order-more/models/parcel-event.d.ts +1 -1
- package/dist/test-utils/order-more/models/parcel-line-item.d.ts +1 -1
- package/dist/test-utils/order-more/models/parcel.d.ts +1 -1
- package/dist/test-utils/order-more/models/physical-address.d.ts +1 -1
- package/dist/test-utils/order-more/models/product-variant-image.d.ts +1 -1
- package/dist/test-utils/order-more/models/product-variant.d.ts +1 -1
- package/dist/test-utils/order-more/models/product.d.ts +1 -1
- package/dist/test-utils/order-more/models/refund.d.ts +1 -1
- package/dist/test-utils/order-more/models/shipment-actual-product-variant.d.ts +1 -1
- package/dist/test-utils/order-more/models/shipment.d.ts +1 -1
- package/dist/test-utils/order-more/models/size.d.ts +1 -1
- package/dist/test-utils/order-more/models/utm-medium.d.ts +1 -1
- package/dist/test-utils/order-more/models/utm-source.d.ts +1 -1
- package/dist/test-utils/six/entities.d.ts +6 -0
- package/dist/test-utils/six/{orm.js → entities.js} +8 -12
- package/{test-utils/six/orm.ts → dist/test-utils/six/entities.ts} +7 -12
- package/dist/test-utils/six/models/customer.d.ts +1 -1
- package/dist/test-utils/six/models/line-item.d.ts +1 -1
- package/dist/test-utils/six/models/order.d.ts +1 -1
- package/dist/test-utils/six/models/parcel-line-item.d.ts +1 -1
- package/dist/test-utils/six/models/parcel.d.ts +1 -1
- package/dist/test-utils/thirteen/entities.d.ts +6 -0
- package/dist/test-utils/thirteen/{orm.js → entities.js} +11 -15
- package/dist/test-utils/thirteen/{orm.ts → entities.ts} +10 -15
- package/dist/test-utils/thirteen/models/audience.d.ts +1 -1
- package/dist/test-utils/thirteen/models/brand.d.ts +1 -1
- package/dist/test-utils/thirteen/models/category.d.ts +1 -1
- package/dist/test-utils/thirteen/models/member.d.ts +1 -1
- package/dist/test-utils/thirteen/models/passion.d.ts +1 -1
- package/dist/test-utils/thirteen/models/product.d.ts +1 -1
- package/dist/test-utils/thirteen/models/recommendation-audience.d.ts +1 -1
- package/dist/test-utils/thirteen/models/recommendation.d.ts +1 -1
- package/dist/test-utils/twelve/entities.d.ts +6 -0
- package/dist/test-utils/twelve/entities.js +6 -0
- package/dist/test-utils/twelve/entities.ts +3 -0
- package/dist/test-utils/twelve/models/member.d.ts +1 -1
- package/dist/test-utils/twelve/models/prompt.d.ts +1 -1
- package/package.json +4 -3
- package/src/{factory.spec.ts → core.spec.ts} +55 -41
- package/src/{factory.ts → core.ts} +102 -338
- package/src/driver-integrations/index.ts +56 -0
- package/src/driver-integrations/pgp.ts +92 -0
- package/src/index.ts +5 -3
- package/src/orm.ts +291 -0
- package/test-utils/blog/{orm.ts → entities.ts} +6 -6
- package/test-utils/five/{orm.ts → entities.ts} +7 -12
- package/test-utils/nine/entities.ts +2 -0
- package/{dist/test-utils/order/orm.ts → test-utils/order/entities.ts} +7 -12
- package/test-utils/order-more/{orm.ts → entities.ts} +22 -27
- package/{dist/test-utils/six/orm.ts → test-utils/six/entities.ts} +7 -12
- package/test-utils/thirteen/{orm.ts → entities.ts} +10 -15
- package/test-utils/twelve/entities.ts +3 -0
- package/dist/src/factory.d.ts +0 -100
- package/dist/test-utils/blog/orm.d.ts +0 -2
- package/dist/test-utils/five/orm.d.ts +0 -48
- package/dist/test-utils/nine/orm.d.ts +0 -48
- package/dist/test-utils/nine/orm.js +0 -9
- package/dist/test-utils/nine/orm.ts +0 -7
- package/dist/test-utils/order/orm.d.ts +0 -48
- package/dist/test-utils/order-more/orm.d.ts +0 -48
- package/dist/test-utils/six/orm.d.ts +0 -48
- package/dist/test-utils/thirteen/orm.d.ts +0 -48
- package/dist/test-utils/twelve/orm.d.ts +0 -48
- package/dist/test-utils/twelve/orm.js +0 -10
- package/dist/test-utils/twelve/orm.ts +0 -8
- package/test-utils/nine/orm.ts +0 -7
- package/test-utils/twelve/orm.ts +0 -8
|
@@ -0,0 +1,1593 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<title>Code coverage report for src/core.ts</title>
|
|
5
|
+
<meta charset="utf-8" />
|
|
6
|
+
<link rel="stylesheet" href="../prettify.css" />
|
|
7
|
+
<link rel="stylesheet" href="../base.css" />
|
|
8
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
9
|
+
<style type='text/css'>
|
|
10
|
+
.coverage-summary .sorter {
|
|
11
|
+
background-image: url(../sort-arrow-sprite.png);
|
|
12
|
+
}
|
|
13
|
+
</style>
|
|
14
|
+
</head>
|
|
15
|
+
<body>
|
|
16
|
+
<div class='wrapper'>
|
|
17
|
+
<div class='pad1'>
|
|
18
|
+
<h1>
|
|
19
|
+
<a href="../index.html">All files</a> / <a href="index.html">src</a> core.ts
|
|
20
|
+
</h1>
|
|
21
|
+
<div class='clearfix'>
|
|
22
|
+
<div class='fl pad1y space-right2'>
|
|
23
|
+
<span class="strong">88.27% </span>
|
|
24
|
+
<span class="quiet">Statements</span>
|
|
25
|
+
<span class='fraction'>158/179</span>
|
|
26
|
+
</div>
|
|
27
|
+
<div class='fl pad1y space-right2'>
|
|
28
|
+
<span class="strong">70.1% </span>
|
|
29
|
+
<span class="quiet">Branches</span>
|
|
30
|
+
<span class='fraction'>68/97</span>
|
|
31
|
+
</div>
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">91.49% </span>
|
|
34
|
+
<span class="quiet">Functions</span>
|
|
35
|
+
<span class='fraction'>43/47</span>
|
|
36
|
+
</div>
|
|
37
|
+
<div class='fl pad1y space-right2'>
|
|
38
|
+
<span class="strong">88.37% </span>
|
|
39
|
+
<span class="quiet">Lines</span>
|
|
40
|
+
<span class='fraction'>152/172</span>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
<p class="quiet">
|
|
44
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
45
|
+
</p>
|
|
46
|
+
</div>
|
|
47
|
+
<div class='status-line high'></div>
|
|
48
|
+
<pre><table class="coverage">
|
|
49
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
50
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
51
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
52
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
53
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
54
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
55
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
56
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
57
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
58
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
59
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
60
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
61
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
62
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
63
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
64
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
65
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
66
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
67
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
68
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
69
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
70
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
71
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
72
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
73
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
74
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
75
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
76
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
77
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
78
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
79
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
80
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
81
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
82
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
83
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
84
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
85
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
86
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
87
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
88
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
89
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
90
|
+
<a name='L42'></a><a href='#L42'>42</a>
|
|
91
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
|
92
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
|
93
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
94
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
95
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
96
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
97
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
98
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
99
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
|
100
|
+
<a name='L52'></a><a href='#L52'>52</a>
|
|
101
|
+
<a name='L53'></a><a href='#L53'>53</a>
|
|
102
|
+
<a name='L54'></a><a href='#L54'>54</a>
|
|
103
|
+
<a name='L55'></a><a href='#L55'>55</a>
|
|
104
|
+
<a name='L56'></a><a href='#L56'>56</a>
|
|
105
|
+
<a name='L57'></a><a href='#L57'>57</a>
|
|
106
|
+
<a name='L58'></a><a href='#L58'>58</a>
|
|
107
|
+
<a name='L59'></a><a href='#L59'>59</a>
|
|
108
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
109
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
110
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
111
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
112
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
113
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
114
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
115
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
116
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
117
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
118
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
119
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
120
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
121
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
122
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
123
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
124
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
125
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
126
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
127
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
128
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
129
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
130
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
131
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
132
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
133
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
134
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
135
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
136
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
137
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
138
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
139
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
140
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
141
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
142
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
143
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
144
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
145
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
146
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
147
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
148
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
149
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
150
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
151
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
152
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
153
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
154
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
155
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
156
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
157
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
158
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
159
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
160
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
161
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
162
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
163
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
164
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
165
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
166
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
167
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
168
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
169
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
170
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
171
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
172
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
173
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
174
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
175
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
176
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
177
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
178
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
179
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
180
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
181
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
182
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
183
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
184
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
185
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
186
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
187
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
188
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
189
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
190
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
191
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
192
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
193
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
194
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
195
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
196
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
197
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
198
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
199
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
200
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
201
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
202
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
203
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
204
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
205
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
206
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
207
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
208
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
209
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
210
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
211
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
212
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
213
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
214
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
215
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
216
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
217
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
218
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
219
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
220
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
221
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
222
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
223
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
224
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
225
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
226
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
227
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
228
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
229
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
230
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
231
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
232
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
233
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
234
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
235
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
236
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
237
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
238
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
239
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
240
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
241
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
242
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
243
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
244
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
245
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
246
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
247
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
248
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
249
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
250
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
251
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
252
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
253
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
254
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
255
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
256
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
257
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
258
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
259
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
260
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
261
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
262
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
263
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
264
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
265
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
266
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
267
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
268
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
269
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
270
|
+
<a name='L222'></a><a href='#L222'>222</a>
|
|
271
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
272
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
273
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
274
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
275
|
+
<a name='L227'></a><a href='#L227'>227</a>
|
|
276
|
+
<a name='L228'></a><a href='#L228'>228</a>
|
|
277
|
+
<a name='L229'></a><a href='#L229'>229</a>
|
|
278
|
+
<a name='L230'></a><a href='#L230'>230</a>
|
|
279
|
+
<a name='L231'></a><a href='#L231'>231</a>
|
|
280
|
+
<a name='L232'></a><a href='#L232'>232</a>
|
|
281
|
+
<a name='L233'></a><a href='#L233'>233</a>
|
|
282
|
+
<a name='L234'></a><a href='#L234'>234</a>
|
|
283
|
+
<a name='L235'></a><a href='#L235'>235</a>
|
|
284
|
+
<a name='L236'></a><a href='#L236'>236</a>
|
|
285
|
+
<a name='L237'></a><a href='#L237'>237</a>
|
|
286
|
+
<a name='L238'></a><a href='#L238'>238</a>
|
|
287
|
+
<a name='L239'></a><a href='#L239'>239</a>
|
|
288
|
+
<a name='L240'></a><a href='#L240'>240</a>
|
|
289
|
+
<a name='L241'></a><a href='#L241'>241</a>
|
|
290
|
+
<a name='L242'></a><a href='#L242'>242</a>
|
|
291
|
+
<a name='L243'></a><a href='#L243'>243</a>
|
|
292
|
+
<a name='L244'></a><a href='#L244'>244</a>
|
|
293
|
+
<a name='L245'></a><a href='#L245'>245</a>
|
|
294
|
+
<a name='L246'></a><a href='#L246'>246</a>
|
|
295
|
+
<a name='L247'></a><a href='#L247'>247</a>
|
|
296
|
+
<a name='L248'></a><a href='#L248'>248</a>
|
|
297
|
+
<a name='L249'></a><a href='#L249'>249</a>
|
|
298
|
+
<a name='L250'></a><a href='#L250'>250</a>
|
|
299
|
+
<a name='L251'></a><a href='#L251'>251</a>
|
|
300
|
+
<a name='L252'></a><a href='#L252'>252</a>
|
|
301
|
+
<a name='L253'></a><a href='#L253'>253</a>
|
|
302
|
+
<a name='L254'></a><a href='#L254'>254</a>
|
|
303
|
+
<a name='L255'></a><a href='#L255'>255</a>
|
|
304
|
+
<a name='L256'></a><a href='#L256'>256</a>
|
|
305
|
+
<a name='L257'></a><a href='#L257'>257</a>
|
|
306
|
+
<a name='L258'></a><a href='#L258'>258</a>
|
|
307
|
+
<a name='L259'></a><a href='#L259'>259</a>
|
|
308
|
+
<a name='L260'></a><a href='#L260'>260</a>
|
|
309
|
+
<a name='L261'></a><a href='#L261'>261</a>
|
|
310
|
+
<a name='L262'></a><a href='#L262'>262</a>
|
|
311
|
+
<a name='L263'></a><a href='#L263'>263</a>
|
|
312
|
+
<a name='L264'></a><a href='#L264'>264</a>
|
|
313
|
+
<a name='L265'></a><a href='#L265'>265</a>
|
|
314
|
+
<a name='L266'></a><a href='#L266'>266</a>
|
|
315
|
+
<a name='L267'></a><a href='#L267'>267</a>
|
|
316
|
+
<a name='L268'></a><a href='#L268'>268</a>
|
|
317
|
+
<a name='L269'></a><a href='#L269'>269</a>
|
|
318
|
+
<a name='L270'></a><a href='#L270'>270</a>
|
|
319
|
+
<a name='L271'></a><a href='#L271'>271</a>
|
|
320
|
+
<a name='L272'></a><a href='#L272'>272</a>
|
|
321
|
+
<a name='L273'></a><a href='#L273'>273</a>
|
|
322
|
+
<a name='L274'></a><a href='#L274'>274</a>
|
|
323
|
+
<a name='L275'></a><a href='#L275'>275</a>
|
|
324
|
+
<a name='L276'></a><a href='#L276'>276</a>
|
|
325
|
+
<a name='L277'></a><a href='#L277'>277</a>
|
|
326
|
+
<a name='L278'></a><a href='#L278'>278</a>
|
|
327
|
+
<a name='L279'></a><a href='#L279'>279</a>
|
|
328
|
+
<a name='L280'></a><a href='#L280'>280</a>
|
|
329
|
+
<a name='L281'></a><a href='#L281'>281</a>
|
|
330
|
+
<a name='L282'></a><a href='#L282'>282</a>
|
|
331
|
+
<a name='L283'></a><a href='#L283'>283</a>
|
|
332
|
+
<a name='L284'></a><a href='#L284'>284</a>
|
|
333
|
+
<a name='L285'></a><a href='#L285'>285</a>
|
|
334
|
+
<a name='L286'></a><a href='#L286'>286</a>
|
|
335
|
+
<a name='L287'></a><a href='#L287'>287</a>
|
|
336
|
+
<a name='L288'></a><a href='#L288'>288</a>
|
|
337
|
+
<a name='L289'></a><a href='#L289'>289</a>
|
|
338
|
+
<a name='L290'></a><a href='#L290'>290</a>
|
|
339
|
+
<a name='L291'></a><a href='#L291'>291</a>
|
|
340
|
+
<a name='L292'></a><a href='#L292'>292</a>
|
|
341
|
+
<a name='L293'></a><a href='#L293'>293</a>
|
|
342
|
+
<a name='L294'></a><a href='#L294'>294</a>
|
|
343
|
+
<a name='L295'></a><a href='#L295'>295</a>
|
|
344
|
+
<a name='L296'></a><a href='#L296'>296</a>
|
|
345
|
+
<a name='L297'></a><a href='#L297'>297</a>
|
|
346
|
+
<a name='L298'></a><a href='#L298'>298</a>
|
|
347
|
+
<a name='L299'></a><a href='#L299'>299</a>
|
|
348
|
+
<a name='L300'></a><a href='#L300'>300</a>
|
|
349
|
+
<a name='L301'></a><a href='#L301'>301</a>
|
|
350
|
+
<a name='L302'></a><a href='#L302'>302</a>
|
|
351
|
+
<a name='L303'></a><a href='#L303'>303</a>
|
|
352
|
+
<a name='L304'></a><a href='#L304'>304</a>
|
|
353
|
+
<a name='L305'></a><a href='#L305'>305</a>
|
|
354
|
+
<a name='L306'></a><a href='#L306'>306</a>
|
|
355
|
+
<a name='L307'></a><a href='#L307'>307</a>
|
|
356
|
+
<a name='L308'></a><a href='#L308'>308</a>
|
|
357
|
+
<a name='L309'></a><a href='#L309'>309</a>
|
|
358
|
+
<a name='L310'></a><a href='#L310'>310</a>
|
|
359
|
+
<a name='L311'></a><a href='#L311'>311</a>
|
|
360
|
+
<a name='L312'></a><a href='#L312'>312</a>
|
|
361
|
+
<a name='L313'></a><a href='#L313'>313</a>
|
|
362
|
+
<a name='L314'></a><a href='#L314'>314</a>
|
|
363
|
+
<a name='L315'></a><a href='#L315'>315</a>
|
|
364
|
+
<a name='L316'></a><a href='#L316'>316</a>
|
|
365
|
+
<a name='L317'></a><a href='#L317'>317</a>
|
|
366
|
+
<a name='L318'></a><a href='#L318'>318</a>
|
|
367
|
+
<a name='L319'></a><a href='#L319'>319</a>
|
|
368
|
+
<a name='L320'></a><a href='#L320'>320</a>
|
|
369
|
+
<a name='L321'></a><a href='#L321'>321</a>
|
|
370
|
+
<a name='L322'></a><a href='#L322'>322</a>
|
|
371
|
+
<a name='L323'></a><a href='#L323'>323</a>
|
|
372
|
+
<a name='L324'></a><a href='#L324'>324</a>
|
|
373
|
+
<a name='L325'></a><a href='#L325'>325</a>
|
|
374
|
+
<a name='L326'></a><a href='#L326'>326</a>
|
|
375
|
+
<a name='L327'></a><a href='#L327'>327</a>
|
|
376
|
+
<a name='L328'></a><a href='#L328'>328</a>
|
|
377
|
+
<a name='L329'></a><a href='#L329'>329</a>
|
|
378
|
+
<a name='L330'></a><a href='#L330'>330</a>
|
|
379
|
+
<a name='L331'></a><a href='#L331'>331</a>
|
|
380
|
+
<a name='L332'></a><a href='#L332'>332</a>
|
|
381
|
+
<a name='L333'></a><a href='#L333'>333</a>
|
|
382
|
+
<a name='L334'></a><a href='#L334'>334</a>
|
|
383
|
+
<a name='L335'></a><a href='#L335'>335</a>
|
|
384
|
+
<a name='L336'></a><a href='#L336'>336</a>
|
|
385
|
+
<a name='L337'></a><a href='#L337'>337</a>
|
|
386
|
+
<a name='L338'></a><a href='#L338'>338</a>
|
|
387
|
+
<a name='L339'></a><a href='#L339'>339</a>
|
|
388
|
+
<a name='L340'></a><a href='#L340'>340</a>
|
|
389
|
+
<a name='L341'></a><a href='#L341'>341</a>
|
|
390
|
+
<a name='L342'></a><a href='#L342'>342</a>
|
|
391
|
+
<a name='L343'></a><a href='#L343'>343</a>
|
|
392
|
+
<a name='L344'></a><a href='#L344'>344</a>
|
|
393
|
+
<a name='L345'></a><a href='#L345'>345</a>
|
|
394
|
+
<a name='L346'></a><a href='#L346'>346</a>
|
|
395
|
+
<a name='L347'></a><a href='#L347'>347</a>
|
|
396
|
+
<a name='L348'></a><a href='#L348'>348</a>
|
|
397
|
+
<a name='L349'></a><a href='#L349'>349</a>
|
|
398
|
+
<a name='L350'></a><a href='#L350'>350</a>
|
|
399
|
+
<a name='L351'></a><a href='#L351'>351</a>
|
|
400
|
+
<a name='L352'></a><a href='#L352'>352</a>
|
|
401
|
+
<a name='L353'></a><a href='#L353'>353</a>
|
|
402
|
+
<a name='L354'></a><a href='#L354'>354</a>
|
|
403
|
+
<a name='L355'></a><a href='#L355'>355</a>
|
|
404
|
+
<a name='L356'></a><a href='#L356'>356</a>
|
|
405
|
+
<a name='L357'></a><a href='#L357'>357</a>
|
|
406
|
+
<a name='L358'></a><a href='#L358'>358</a>
|
|
407
|
+
<a name='L359'></a><a href='#L359'>359</a>
|
|
408
|
+
<a name='L360'></a><a href='#L360'>360</a>
|
|
409
|
+
<a name='L361'></a><a href='#L361'>361</a>
|
|
410
|
+
<a name='L362'></a><a href='#L362'>362</a>
|
|
411
|
+
<a name='L363'></a><a href='#L363'>363</a>
|
|
412
|
+
<a name='L364'></a><a href='#L364'>364</a>
|
|
413
|
+
<a name='L365'></a><a href='#L365'>365</a>
|
|
414
|
+
<a name='L366'></a><a href='#L366'>366</a>
|
|
415
|
+
<a name='L367'></a><a href='#L367'>367</a>
|
|
416
|
+
<a name='L368'></a><a href='#L368'>368</a>
|
|
417
|
+
<a name='L369'></a><a href='#L369'>369</a>
|
|
418
|
+
<a name='L370'></a><a href='#L370'>370</a>
|
|
419
|
+
<a name='L371'></a><a href='#L371'>371</a>
|
|
420
|
+
<a name='L372'></a><a href='#L372'>372</a>
|
|
421
|
+
<a name='L373'></a><a href='#L373'>373</a>
|
|
422
|
+
<a name='L374'></a><a href='#L374'>374</a>
|
|
423
|
+
<a name='L375'></a><a href='#L375'>375</a>
|
|
424
|
+
<a name='L376'></a><a href='#L376'>376</a>
|
|
425
|
+
<a name='L377'></a><a href='#L377'>377</a>
|
|
426
|
+
<a name='L378'></a><a href='#L378'>378</a>
|
|
427
|
+
<a name='L379'></a><a href='#L379'>379</a>
|
|
428
|
+
<a name='L380'></a><a href='#L380'>380</a>
|
|
429
|
+
<a name='L381'></a><a href='#L381'>381</a>
|
|
430
|
+
<a name='L382'></a><a href='#L382'>382</a>
|
|
431
|
+
<a name='L383'></a><a href='#L383'>383</a>
|
|
432
|
+
<a name='L384'></a><a href='#L384'>384</a>
|
|
433
|
+
<a name='L385'></a><a href='#L385'>385</a>
|
|
434
|
+
<a name='L386'></a><a href='#L386'>386</a>
|
|
435
|
+
<a name='L387'></a><a href='#L387'>387</a>
|
|
436
|
+
<a name='L388'></a><a href='#L388'>388</a>
|
|
437
|
+
<a name='L389'></a><a href='#L389'>389</a>
|
|
438
|
+
<a name='L390'></a><a href='#L390'>390</a>
|
|
439
|
+
<a name='L391'></a><a href='#L391'>391</a>
|
|
440
|
+
<a name='L392'></a><a href='#L392'>392</a>
|
|
441
|
+
<a name='L393'></a><a href='#L393'>393</a>
|
|
442
|
+
<a name='L394'></a><a href='#L394'>394</a>
|
|
443
|
+
<a name='L395'></a><a href='#L395'>395</a>
|
|
444
|
+
<a name='L396'></a><a href='#L396'>396</a>
|
|
445
|
+
<a name='L397'></a><a href='#L397'>397</a>
|
|
446
|
+
<a name='L398'></a><a href='#L398'>398</a>
|
|
447
|
+
<a name='L399'></a><a href='#L399'>399</a>
|
|
448
|
+
<a name='L400'></a><a href='#L400'>400</a>
|
|
449
|
+
<a name='L401'></a><a href='#L401'>401</a>
|
|
450
|
+
<a name='L402'></a><a href='#L402'>402</a>
|
|
451
|
+
<a name='L403'></a><a href='#L403'>403</a>
|
|
452
|
+
<a name='L404'></a><a href='#L404'>404</a>
|
|
453
|
+
<a name='L405'></a><a href='#L405'>405</a>
|
|
454
|
+
<a name='L406'></a><a href='#L406'>406</a>
|
|
455
|
+
<a name='L407'></a><a href='#L407'>407</a>
|
|
456
|
+
<a name='L408'></a><a href='#L408'>408</a>
|
|
457
|
+
<a name='L409'></a><a href='#L409'>409</a>
|
|
458
|
+
<a name='L410'></a><a href='#L410'>410</a>
|
|
459
|
+
<a name='L411'></a><a href='#L411'>411</a>
|
|
460
|
+
<a name='L412'></a><a href='#L412'>412</a>
|
|
461
|
+
<a name='L413'></a><a href='#L413'>413</a>
|
|
462
|
+
<a name='L414'></a><a href='#L414'>414</a>
|
|
463
|
+
<a name='L415'></a><a href='#L415'>415</a>
|
|
464
|
+
<a name='L416'></a><a href='#L416'>416</a>
|
|
465
|
+
<a name='L417'></a><a href='#L417'>417</a>
|
|
466
|
+
<a name='L418'></a><a href='#L418'>418</a>
|
|
467
|
+
<a name='L419'></a><a href='#L419'>419</a>
|
|
468
|
+
<a name='L420'></a><a href='#L420'>420</a>
|
|
469
|
+
<a name='L421'></a><a href='#L421'>421</a>
|
|
470
|
+
<a name='L422'></a><a href='#L422'>422</a>
|
|
471
|
+
<a name='L423'></a><a href='#L423'>423</a>
|
|
472
|
+
<a name='L424'></a><a href='#L424'>424</a>
|
|
473
|
+
<a name='L425'></a><a href='#L425'>425</a>
|
|
474
|
+
<a name='L426'></a><a href='#L426'>426</a>
|
|
475
|
+
<a name='L427'></a><a href='#L427'>427</a>
|
|
476
|
+
<a name='L428'></a><a href='#L428'>428</a>
|
|
477
|
+
<a name='L429'></a><a href='#L429'>429</a>
|
|
478
|
+
<a name='L430'></a><a href='#L430'>430</a>
|
|
479
|
+
<a name='L431'></a><a href='#L431'>431</a>
|
|
480
|
+
<a name='L432'></a><a href='#L432'>432</a>
|
|
481
|
+
<a name='L433'></a><a href='#L433'>433</a>
|
|
482
|
+
<a name='L434'></a><a href='#L434'>434</a>
|
|
483
|
+
<a name='L435'></a><a href='#L435'>435</a>
|
|
484
|
+
<a name='L436'></a><a href='#L436'>436</a>
|
|
485
|
+
<a name='L437'></a><a href='#L437'>437</a>
|
|
486
|
+
<a name='L438'></a><a href='#L438'>438</a>
|
|
487
|
+
<a name='L439'></a><a href='#L439'>439</a>
|
|
488
|
+
<a name='L440'></a><a href='#L440'>440</a>
|
|
489
|
+
<a name='L441'></a><a href='#L441'>441</a>
|
|
490
|
+
<a name='L442'></a><a href='#L442'>442</a>
|
|
491
|
+
<a name='L443'></a><a href='#L443'>443</a>
|
|
492
|
+
<a name='L444'></a><a href='#L444'>444</a>
|
|
493
|
+
<a name='L445'></a><a href='#L445'>445</a>
|
|
494
|
+
<a name='L446'></a><a href='#L446'>446</a>
|
|
495
|
+
<a name='L447'></a><a href='#L447'>447</a>
|
|
496
|
+
<a name='L448'></a><a href='#L448'>448</a>
|
|
497
|
+
<a name='L449'></a><a href='#L449'>449</a>
|
|
498
|
+
<a name='L450'></a><a href='#L450'>450</a>
|
|
499
|
+
<a name='L451'></a><a href='#L451'>451</a>
|
|
500
|
+
<a name='L452'></a><a href='#L452'>452</a>
|
|
501
|
+
<a name='L453'></a><a href='#L453'>453</a>
|
|
502
|
+
<a name='L454'></a><a href='#L454'>454</a>
|
|
503
|
+
<a name='L455'></a><a href='#L455'>455</a>
|
|
504
|
+
<a name='L456'></a><a href='#L456'>456</a>
|
|
505
|
+
<a name='L457'></a><a href='#L457'>457</a>
|
|
506
|
+
<a name='L458'></a><a href='#L458'>458</a>
|
|
507
|
+
<a name='L459'></a><a href='#L459'>459</a>
|
|
508
|
+
<a name='L460'></a><a href='#L460'>460</a>
|
|
509
|
+
<a name='L461'></a><a href='#L461'>461</a>
|
|
510
|
+
<a name='L462'></a><a href='#L462'>462</a>
|
|
511
|
+
<a name='L463'></a><a href='#L463'>463</a>
|
|
512
|
+
<a name='L464'></a><a href='#L464'>464</a>
|
|
513
|
+
<a name='L465'></a><a href='#L465'>465</a>
|
|
514
|
+
<a name='L466'></a><a href='#L466'>466</a>
|
|
515
|
+
<a name='L467'></a><a href='#L467'>467</a>
|
|
516
|
+
<a name='L468'></a><a href='#L468'>468</a>
|
|
517
|
+
<a name='L469'></a><a href='#L469'>469</a>
|
|
518
|
+
<a name='L470'></a><a href='#L470'>470</a>
|
|
519
|
+
<a name='L471'></a><a href='#L471'>471</a>
|
|
520
|
+
<a name='L472'></a><a href='#L472'>472</a>
|
|
521
|
+
<a name='L473'></a><a href='#L473'>473</a>
|
|
522
|
+
<a name='L474'></a><a href='#L474'>474</a>
|
|
523
|
+
<a name='L475'></a><a href='#L475'>475</a>
|
|
524
|
+
<a name='L476'></a><a href='#L476'>476</a>
|
|
525
|
+
<a name='L477'></a><a href='#L477'>477</a>
|
|
526
|
+
<a name='L478'></a><a href='#L478'>478</a>
|
|
527
|
+
<a name='L479'></a><a href='#L479'>479</a>
|
|
528
|
+
<a name='L480'></a><a href='#L480'>480</a>
|
|
529
|
+
<a name='L481'></a><a href='#L481'>481</a>
|
|
530
|
+
<a name='L482'></a><a href='#L482'>482</a>
|
|
531
|
+
<a name='L483'></a><a href='#L483'>483</a>
|
|
532
|
+
<a name='L484'></a><a href='#L484'>484</a>
|
|
533
|
+
<a name='L485'></a><a href='#L485'>485</a>
|
|
534
|
+
<a name='L486'></a><a href='#L486'>486</a>
|
|
535
|
+
<a name='L487'></a><a href='#L487'>487</a>
|
|
536
|
+
<a name='L488'></a><a href='#L488'>488</a>
|
|
537
|
+
<a name='L489'></a><a href='#L489'>489</a>
|
|
538
|
+
<a name='L490'></a><a href='#L490'>490</a>
|
|
539
|
+
<a name='L491'></a><a href='#L491'>491</a>
|
|
540
|
+
<a name='L492'></a><a href='#L492'>492</a>
|
|
541
|
+
<a name='L493'></a><a href='#L493'>493</a>
|
|
542
|
+
<a name='L494'></a><a href='#L494'>494</a>
|
|
543
|
+
<a name='L495'></a><a href='#L495'>495</a>
|
|
544
|
+
<a name='L496'></a><a href='#L496'>496</a>
|
|
545
|
+
<a name='L497'></a><a href='#L497'>497</a>
|
|
546
|
+
<a name='L498'></a><a href='#L498'>498</a>
|
|
547
|
+
<a name='L499'></a><a href='#L499'>499</a>
|
|
548
|
+
<a name='L500'></a><a href='#L500'>500</a>
|
|
549
|
+
<a name='L501'></a><a href='#L501'>501</a>
|
|
550
|
+
<a name='L502'></a><a href='#L502'>502</a>
|
|
551
|
+
<a name='L503'></a><a href='#L503'>503</a>
|
|
552
|
+
<a name='L504'></a><a href='#L504'>504</a>
|
|
553
|
+
<a name='L505'></a><a href='#L505'>505</a>
|
|
554
|
+
<a name='L506'></a><a href='#L506'>506</a>
|
|
555
|
+
<a name='L507'></a><a href='#L507'>507</a>
|
|
556
|
+
<a name='L508'></a><a href='#L508'>508</a>
|
|
557
|
+
<a name='L509'></a><a href='#L509'>509</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
558
|
+
<span class="cline-any cline-neutral"> </span>
|
|
559
|
+
<span class="cline-any cline-neutral"> </span>
|
|
560
|
+
<span class="cline-any cline-neutral"> </span>
|
|
561
|
+
<span class="cline-any cline-neutral"> </span>
|
|
562
|
+
<span class="cline-any cline-neutral"> </span>
|
|
563
|
+
<span class="cline-any cline-neutral"> </span>
|
|
564
|
+
<span class="cline-any cline-neutral"> </span>
|
|
565
|
+
<span class="cline-any cline-neutral"> </span>
|
|
566
|
+
<span class="cline-any cline-neutral"> </span>
|
|
567
|
+
<span class="cline-any cline-neutral"> </span>
|
|
568
|
+
<span class="cline-any cline-neutral"> </span>
|
|
569
|
+
<span class="cline-any cline-neutral"> </span>
|
|
570
|
+
<span class="cline-any cline-neutral"> </span>
|
|
571
|
+
<span class="cline-any cline-neutral"> </span>
|
|
572
|
+
<span class="cline-any cline-neutral"> </span>
|
|
573
|
+
<span class="cline-any cline-neutral"> </span>
|
|
574
|
+
<span class="cline-any cline-neutral"> </span>
|
|
575
|
+
<span class="cline-any cline-neutral"> </span>
|
|
576
|
+
<span class="cline-any cline-neutral"> </span>
|
|
577
|
+
<span class="cline-any cline-neutral"> </span>
|
|
578
|
+
<span class="cline-any cline-neutral"> </span>
|
|
579
|
+
<span class="cline-any cline-neutral"> </span>
|
|
580
|
+
<span class="cline-any cline-neutral"> </span>
|
|
581
|
+
<span class="cline-any cline-neutral"> </span>
|
|
582
|
+
<span class="cline-any cline-neutral"> </span>
|
|
583
|
+
<span class="cline-any cline-neutral"> </span>
|
|
584
|
+
<span class="cline-any cline-neutral"> </span>
|
|
585
|
+
<span class="cline-any cline-neutral"> </span>
|
|
586
|
+
<span class="cline-any cline-neutral"> </span>
|
|
587
|
+
<span class="cline-any cline-neutral"> </span>
|
|
588
|
+
<span class="cline-any cline-neutral"> </span>
|
|
589
|
+
<span class="cline-any cline-neutral"> </span>
|
|
590
|
+
<span class="cline-any cline-neutral"> </span>
|
|
591
|
+
<span class="cline-any cline-neutral"> </span>
|
|
592
|
+
<span class="cline-any cline-neutral"> </span>
|
|
593
|
+
<span class="cline-any cline-neutral"> </span>
|
|
594
|
+
<span class="cline-any cline-neutral"> </span>
|
|
595
|
+
<span class="cline-any cline-neutral"> </span>
|
|
596
|
+
<span class="cline-any cline-neutral"> </span>
|
|
597
|
+
<span class="cline-any cline-neutral"> </span>
|
|
598
|
+
<span class="cline-any cline-neutral"> </span>
|
|
599
|
+
<span class="cline-any cline-neutral"> </span>
|
|
600
|
+
<span class="cline-any cline-neutral"> </span>
|
|
601
|
+
<span class="cline-any cline-neutral"> </span>
|
|
602
|
+
<span class="cline-any cline-neutral"> </span>
|
|
603
|
+
<span class="cline-any cline-neutral"> </span>
|
|
604
|
+
<span class="cline-any cline-neutral"> </span>
|
|
605
|
+
<span class="cline-any cline-neutral"> </span>
|
|
606
|
+
<span class="cline-any cline-neutral"> </span>
|
|
607
|
+
<span class="cline-any cline-neutral"> </span>
|
|
608
|
+
<span class="cline-any cline-neutral"> </span>
|
|
609
|
+
<span class="cline-any cline-neutral"> </span>
|
|
610
|
+
<span class="cline-any cline-neutral"> </span>
|
|
611
|
+
<span class="cline-any cline-neutral"> </span>
|
|
612
|
+
<span class="cline-any cline-neutral"> </span>
|
|
613
|
+
<span class="cline-any cline-neutral"> </span>
|
|
614
|
+
<span class="cline-any cline-neutral"> </span>
|
|
615
|
+
<span class="cline-any cline-neutral"> </span>
|
|
616
|
+
<span class="cline-any cline-neutral"> </span>
|
|
617
|
+
<span class="cline-any cline-neutral"> </span>
|
|
618
|
+
<span class="cline-any cline-neutral"> </span>
|
|
619
|
+
<span class="cline-any cline-neutral"> </span>
|
|
620
|
+
<span class="cline-any cline-neutral"> </span>
|
|
621
|
+
<span class="cline-any cline-neutral"> </span>
|
|
622
|
+
<span class="cline-any cline-neutral"> </span>
|
|
623
|
+
<span class="cline-any cline-neutral"> </span>
|
|
624
|
+
<span class="cline-any cline-neutral"> </span>
|
|
625
|
+
<span class="cline-any cline-neutral"> </span>
|
|
626
|
+
<span class="cline-any cline-neutral"> </span>
|
|
627
|
+
<span class="cline-any cline-neutral"> </span>
|
|
628
|
+
<span class="cline-any cline-neutral"> </span>
|
|
629
|
+
<span class="cline-any cline-neutral"> </span>
|
|
630
|
+
<span class="cline-any cline-neutral"> </span>
|
|
631
|
+
<span class="cline-any cline-neutral"> </span>
|
|
632
|
+
<span class="cline-any cline-neutral"> </span>
|
|
633
|
+
<span class="cline-any cline-neutral"> </span>
|
|
634
|
+
<span class="cline-any cline-neutral"> </span>
|
|
635
|
+
<span class="cline-any cline-neutral"> </span>
|
|
636
|
+
<span class="cline-any cline-neutral"> </span>
|
|
637
|
+
<span class="cline-any cline-neutral"> </span>
|
|
638
|
+
<span class="cline-any cline-neutral"> </span>
|
|
639
|
+
<span class="cline-any cline-neutral"> </span>
|
|
640
|
+
<span class="cline-any cline-neutral"> </span>
|
|
641
|
+
<span class="cline-any cline-neutral"> </span>
|
|
642
|
+
<span class="cline-any cline-neutral"> </span>
|
|
643
|
+
<span class="cline-any cline-neutral"> </span>
|
|
644
|
+
<span class="cline-any cline-neutral"> </span>
|
|
645
|
+
<span class="cline-any cline-neutral"> </span>
|
|
646
|
+
<span class="cline-any cline-neutral"> </span>
|
|
647
|
+
<span class="cline-any cline-neutral"> </span>
|
|
648
|
+
<span class="cline-any cline-neutral"> </span>
|
|
649
|
+
<span class="cline-any cline-neutral"> </span>
|
|
650
|
+
<span class="cline-any cline-neutral"> </span>
|
|
651
|
+
<span class="cline-any cline-neutral"> </span>
|
|
652
|
+
<span class="cline-any cline-neutral"> </span>
|
|
653
|
+
<span class="cline-any cline-neutral"> </span>
|
|
654
|
+
<span class="cline-any cline-yes">1x</span>
|
|
655
|
+
<span class="cline-any cline-neutral"> </span>
|
|
656
|
+
<span class="cline-any cline-neutral"> </span>
|
|
657
|
+
<span class="cline-any cline-yes">14x</span>
|
|
658
|
+
<span class="cline-any cline-neutral"> </span>
|
|
659
|
+
<span class="cline-any cline-yes">139x</span>
|
|
660
|
+
<span class="cline-any cline-yes">139x</span>
|
|
661
|
+
<span class="cline-any cline-neutral"> </span>
|
|
662
|
+
<span class="cline-any cline-yes">139x</span>
|
|
663
|
+
<span class="cline-any cline-yes">139x</span>
|
|
664
|
+
<span class="cline-any cline-neutral"> </span>
|
|
665
|
+
<span class="cline-any cline-neutral"> </span>
|
|
666
|
+
<span class="cline-any cline-yes">899x</span>
|
|
667
|
+
<span class="cline-any cline-yes">767x</span>
|
|
668
|
+
<span class="cline-any cline-neutral"> </span>
|
|
669
|
+
<span class="cline-any cline-neutral"> </span>
|
|
670
|
+
<span class="cline-any cline-neutral"> </span>
|
|
671
|
+
<span class="cline-any cline-neutral"> </span>
|
|
672
|
+
<span class="cline-any cline-neutral"> </span>
|
|
673
|
+
<span class="cline-any cline-yes">132x</span>
|
|
674
|
+
<span class="cline-any cline-neutral"> </span>
|
|
675
|
+
<span class="cline-any cline-neutral"> </span>
|
|
676
|
+
<span class="cline-any cline-neutral"> </span>
|
|
677
|
+
<span class="cline-any cline-neutral"> </span>
|
|
678
|
+
<span class="cline-any cline-neutral"> </span>
|
|
679
|
+
<span class="cline-any cline-neutral"> </span>
|
|
680
|
+
<span class="cline-any cline-yes">139x</span>
|
|
681
|
+
<span class="cline-any cline-yes">899x</span>
|
|
682
|
+
<span class="cline-any cline-neutral"> </span>
|
|
683
|
+
<span class="cline-any cline-yes">899x</span>
|
|
684
|
+
<span class="cline-any cline-yes">139x</span>
|
|
685
|
+
<span class="cline-any cline-yes">899x</span>
|
|
686
|
+
<span class="cline-any cline-neutral"> </span>
|
|
687
|
+
<span class="cline-any cline-yes">139x</span>
|
|
688
|
+
<span class="cline-any cline-yes">139x</span>
|
|
689
|
+
<span class="cline-any cline-neutral"> </span>
|
|
690
|
+
<span class="cline-any cline-yes">139x</span>
|
|
691
|
+
<span class="cline-any cline-yes">899x</span>
|
|
692
|
+
<span class="cline-any cline-neutral"> </span>
|
|
693
|
+
<span class="cline-any cline-yes">139x</span>
|
|
694
|
+
<span class="cline-any cline-yes">139x</span>
|
|
695
|
+
<span class="cline-any cline-neutral"> </span>
|
|
696
|
+
<span class="cline-any cline-neutral"> </span>
|
|
697
|
+
<span class="cline-any cline-yes">139x</span>
|
|
698
|
+
<span class="cline-any cline-yes">2379x</span>
|
|
699
|
+
<span class="cline-any cline-yes">2379x</span>
|
|
700
|
+
<span class="cline-any cline-neutral"> </span>
|
|
701
|
+
<span class="cline-any cline-neutral"> </span>
|
|
702
|
+
<span class="cline-any cline-neutral"> </span>
|
|
703
|
+
<span class="cline-any cline-yes">139x</span>
|
|
704
|
+
<span class="cline-any cline-yes">899x</span>
|
|
705
|
+
<span class="cline-any cline-neutral"> </span>
|
|
706
|
+
<span class="cline-any cline-neutral"> </span>
|
|
707
|
+
<span class="cline-any cline-yes">132x</span>
|
|
708
|
+
<span class="cline-any cline-neutral"> </span>
|
|
709
|
+
<span class="cline-any cline-neutral"> </span>
|
|
710
|
+
<span class="cline-any cline-neutral"> </span>
|
|
711
|
+
<span class="cline-any cline-neutral"> </span>
|
|
712
|
+
<span class="cline-any cline-neutral"> </span>
|
|
713
|
+
<span class="cline-any cline-yes">139x</span>
|
|
714
|
+
<span class="cline-any cline-neutral"> </span>
|
|
715
|
+
<span class="cline-any cline-neutral"> </span>
|
|
716
|
+
<span class="cline-any cline-yes">899x</span>
|
|
717
|
+
<span class="cline-any cline-neutral"> </span>
|
|
718
|
+
<span class="cline-any cline-neutral"> </span>
|
|
719
|
+
<span class="cline-any cline-neutral"> </span>
|
|
720
|
+
<span class="cline-any cline-yes">139x</span>
|
|
721
|
+
<span class="cline-any cline-neutral"> </span>
|
|
722
|
+
<span class="cline-any cline-neutral"> </span>
|
|
723
|
+
<span class="cline-any cline-neutral"> </span>
|
|
724
|
+
<span class="cline-any cline-neutral"> </span>
|
|
725
|
+
<span class="cline-any cline-neutral"> </span>
|
|
726
|
+
<span class="cline-any cline-neutral"> </span>
|
|
727
|
+
<span class="cline-any cline-neutral"> </span>
|
|
728
|
+
<span class="cline-any cline-neutral"> </span>
|
|
729
|
+
<span class="cline-any cline-neutral"> </span>
|
|
730
|
+
<span class="cline-any cline-neutral"> </span>
|
|
731
|
+
<span class="cline-any cline-neutral"> </span>
|
|
732
|
+
<span class="cline-any cline-neutral"> </span>
|
|
733
|
+
<span class="cline-any cline-neutral"> </span>
|
|
734
|
+
<span class="cline-any cline-neutral"> </span>
|
|
735
|
+
<span class="cline-any cline-neutral"> </span>
|
|
736
|
+
<span class="cline-any cline-neutral"> </span>
|
|
737
|
+
<span class="cline-any cline-neutral"> </span>
|
|
738
|
+
<span class="cline-any cline-yes">14x</span>
|
|
739
|
+
<span class="cline-any cline-neutral"> </span>
|
|
740
|
+
<span class="cline-any cline-neutral"> </span>
|
|
741
|
+
<span class="cline-any cline-neutral"> </span>
|
|
742
|
+
<span class="cline-any cline-neutral"> </span>
|
|
743
|
+
<span class="cline-any cline-yes">139x</span>
|
|
744
|
+
<span class="cline-any cline-yes">139x</span>
|
|
745
|
+
<span class="cline-any cline-neutral"> </span>
|
|
746
|
+
<span class="cline-any cline-neutral"> </span>
|
|
747
|
+
<span class="cline-any cline-neutral"> </span>
|
|
748
|
+
<span class="cline-any cline-neutral"> </span>
|
|
749
|
+
<span class="cline-any cline-yes">14x</span>
|
|
750
|
+
<span class="cline-any cline-yes">1104x</span>
|
|
751
|
+
<span class="cline-any cline-yes">1104x</span>
|
|
752
|
+
<span class="cline-any cline-no"> </span>
|
|
753
|
+
<span class="cline-any cline-neutral"> </span>
|
|
754
|
+
<span class="cline-any cline-yes">1104x</span>
|
|
755
|
+
<span class="cline-any cline-neutral"> </span>
|
|
756
|
+
<span class="cline-any cline-neutral"> </span>
|
|
757
|
+
<span class="cline-any cline-yes">14x</span>
|
|
758
|
+
<span class="cline-any cline-neutral"> </span>
|
|
759
|
+
<span class="cline-any cline-neutral"> </span>
|
|
760
|
+
<span class="cline-any cline-neutral"> </span>
|
|
761
|
+
<span class="cline-any cline-neutral"> </span>
|
|
762
|
+
<span class="cline-any cline-yes">139x</span>
|
|
763
|
+
<span class="cline-any cline-yes">139x</span>
|
|
764
|
+
<span class="cline-any cline-neutral"> </span>
|
|
765
|
+
<span class="cline-any cline-neutral"> </span>
|
|
766
|
+
<span class="cline-any cline-neutral"> </span>
|
|
767
|
+
<span class="cline-any cline-neutral"> </span>
|
|
768
|
+
<span class="cline-any cline-yes">14x</span>
|
|
769
|
+
<span class="cline-any cline-yes">38207x</span>
|
|
770
|
+
<span class="cline-any cline-yes">38207x</span>
|
|
771
|
+
<span class="cline-any cline-no"> </span>
|
|
772
|
+
<span class="cline-any cline-neutral"> </span>
|
|
773
|
+
<span class="cline-any cline-yes">38207x</span>
|
|
774
|
+
<span class="cline-any cline-neutral"> </span>
|
|
775
|
+
<span class="cline-any cline-neutral"> </span>
|
|
776
|
+
<span class="cline-any cline-neutral"> </span>
|
|
777
|
+
<span class="cline-any cline-neutral"> </span>
|
|
778
|
+
<span class="cline-any cline-neutral"> </span>
|
|
779
|
+
<span class="cline-any cline-neutral"> </span>
|
|
780
|
+
<span class="cline-any cline-neutral"> </span>
|
|
781
|
+
<span class="cline-any cline-neutral"> </span>
|
|
782
|
+
<span class="cline-any cline-neutral"> </span>
|
|
783
|
+
<span class="cline-any cline-neutral"> </span>
|
|
784
|
+
<span class="cline-any cline-neutral"> </span>
|
|
785
|
+
<span class="cline-any cline-yes">14x</span>
|
|
786
|
+
<span class="cline-any cline-yes">111x</span>
|
|
787
|
+
<span class="cline-any cline-yes">26x</span>
|
|
788
|
+
<span class="cline-any cline-yes">26x</span>
|
|
789
|
+
<span class="cline-any cline-yes">1104x</span>
|
|
790
|
+
<span class="cline-any cline-neutral"> </span>
|
|
791
|
+
<span class="cline-any cline-yes">26x</span>
|
|
792
|
+
<span class="cline-any cline-neutral"> </span>
|
|
793
|
+
<span class="cline-any cline-yes">26x</span>
|
|
794
|
+
<span class="cline-any cline-neutral"> </span>
|
|
795
|
+
<span class="cline-any cline-neutral"> </span>
|
|
796
|
+
<span class="cline-any cline-yes">26x</span>
|
|
797
|
+
<span class="cline-any cline-yes">111x</span>
|
|
798
|
+
<span class="cline-any cline-yes">993x</span>
|
|
799
|
+
<span class="cline-any cline-neutral"> </span>
|
|
800
|
+
<span class="cline-any cline-yes">18827x</span>
|
|
801
|
+
<span class="cline-any cline-neutral"> </span>
|
|
802
|
+
<span class="cline-any cline-neutral"> </span>
|
|
803
|
+
<span class="cline-any cline-neutral"> </span>
|
|
804
|
+
<span class="cline-any cline-yes">993x</span>
|
|
805
|
+
<span class="cline-any cline-yes">993x</span>
|
|
806
|
+
<span class="cline-any cline-yes">993x</span>
|
|
807
|
+
<span class="cline-any cline-yes">27484x</span>
|
|
808
|
+
<span class="cline-any cline-neutral"> </span>
|
|
809
|
+
<span class="cline-any cline-yes">26688x</span>
|
|
810
|
+
<span class="cline-any cline-neutral"> </span>
|
|
811
|
+
<span class="cline-any cline-yes">26688x</span>
|
|
812
|
+
<span class="cline-any cline-yes">27484x</span>
|
|
813
|
+
<span class="cline-any cline-yes">26812x</span>
|
|
814
|
+
<span class="cline-any cline-neutral"> </span>
|
|
815
|
+
<span class="cline-any cline-yes">672x</span>
|
|
816
|
+
<span class="cline-any cline-yes">673x</span>
|
|
817
|
+
<span class="cline-any cline-neutral"> </span>
|
|
818
|
+
<span class="cline-any cline-neutral"> </span>
|
|
819
|
+
<span class="cline-any cline-yes">673x</span>
|
|
820
|
+
<span class="cline-any cline-yes">646x</span>
|
|
821
|
+
<span class="cline-any cline-neutral"> </span>
|
|
822
|
+
<span class="cline-any cline-neutral"> </span>
|
|
823
|
+
<span class="cline-any cline-yes">26x</span>
|
|
824
|
+
<span class="cline-any cline-neutral"> </span>
|
|
825
|
+
<span class="cline-any cline-neutral"> </span>
|
|
826
|
+
<span class="cline-any cline-neutral"> </span>
|
|
827
|
+
<span class="cline-any cline-neutral"> </span>
|
|
828
|
+
<span class="cline-any cline-yes">993x</span>
|
|
829
|
+
<span class="cline-any cline-yes">11737x</span>
|
|
830
|
+
<span class="cline-any cline-yes">9876x</span>
|
|
831
|
+
<span class="cline-any cline-neutral"> </span>
|
|
832
|
+
<span class="cline-any cline-yes">1861x</span>
|
|
833
|
+
<span class="cline-any cline-yes">48580x</span>
|
|
834
|
+
<span class="cline-any cline-neutral"> </span>
|
|
835
|
+
<span class="cline-any cline-yes">1861x</span>
|
|
836
|
+
<span class="cline-any cline-yes">963x</span>
|
|
837
|
+
<span class="cline-any cline-neutral"> </span>
|
|
838
|
+
<span class="cline-any cline-yes">898x</span>
|
|
839
|
+
<span class="cline-any cline-neutral"> </span>
|
|
840
|
+
<span class="cline-any cline-yes">993x</span>
|
|
841
|
+
<span class="cline-any cline-neutral"> </span>
|
|
842
|
+
<span class="cline-any cline-neutral"> </span>
|
|
843
|
+
<span class="cline-any cline-neutral"> </span>
|
|
844
|
+
<span class="cline-any cline-yes">993x</span>
|
|
845
|
+
<span class="cline-any cline-yes">5858x</span>
|
|
846
|
+
<span class="cline-any cline-neutral"> </span>
|
|
847
|
+
<span class="cline-any cline-neutral"> </span>
|
|
848
|
+
<span class="cline-any cline-yes">5858x</span>
|
|
849
|
+
<span class="cline-any cline-yes">5526x</span>
|
|
850
|
+
<span class="cline-any cline-neutral"> </span>
|
|
851
|
+
<span class="cline-any cline-yes">332x</span>
|
|
852
|
+
<span class="cline-any cline-neutral"> </span>
|
|
853
|
+
<span class="cline-any cline-neutral"> </span>
|
|
854
|
+
<span class="cline-any cline-yes">332x</span>
|
|
855
|
+
<span class="cline-any cline-neutral"> </span>
|
|
856
|
+
<span class="cline-any cline-yes">993x</span>
|
|
857
|
+
<span class="cline-any cline-yes">538x</span>
|
|
858
|
+
<span class="cline-any cline-yes">75x</span>
|
|
859
|
+
<span class="cline-any cline-yes">75x</span>
|
|
860
|
+
<span class="cline-any cline-neutral"> </span>
|
|
861
|
+
<span class="cline-any cline-neutral"> </span>
|
|
862
|
+
<span class="cline-any cline-neutral"> </span>
|
|
863
|
+
<span class="cline-any cline-neutral"> </span>
|
|
864
|
+
<span class="cline-any cline-neutral"> </span>
|
|
865
|
+
<span class="cline-any cline-neutral"> </span>
|
|
866
|
+
<span class="cline-any cline-yes">463x</span>
|
|
867
|
+
<span class="cline-any cline-neutral"> </span>
|
|
868
|
+
<span class="cline-any cline-yes">463x</span>
|
|
869
|
+
<span class="cline-any cline-neutral"> </span>
|
|
870
|
+
<span class="cline-any cline-neutral"> </span>
|
|
871
|
+
<span class="cline-any cline-neutral"> </span>
|
|
872
|
+
<span class="cline-any cline-yes">463x</span>
|
|
873
|
+
<span class="cline-any cline-yes">61x</span>
|
|
874
|
+
<span class="cline-any cline-yes">61x</span>
|
|
875
|
+
<span class="cline-any cline-neutral"> </span>
|
|
876
|
+
<span class="cline-any cline-neutral"> </span>
|
|
877
|
+
<span class="cline-any cline-neutral"> </span>
|
|
878
|
+
<span class="cline-any cline-yes">857x</span>
|
|
879
|
+
<span class="cline-any cline-yes">585x</span>
|
|
880
|
+
<span class="cline-any cline-yes">272x</span>
|
|
881
|
+
<span class="cline-any cline-neutral"> </span>
|
|
882
|
+
<span class="cline-any cline-yes">151x</span>
|
|
883
|
+
<span class="cline-any cline-yes">151x</span>
|
|
884
|
+
<span class="cline-any cline-yes">85x</span>
|
|
885
|
+
<span class="cline-any cline-neutral"> </span>
|
|
886
|
+
<span class="cline-any cline-yes">66x</span>
|
|
887
|
+
<span class="cline-any cline-yes">66x</span>
|
|
888
|
+
<span class="cline-any cline-neutral"> </span>
|
|
889
|
+
<span class="cline-any cline-neutral"> </span>
|
|
890
|
+
<span class="cline-any cline-neutral"> </span>
|
|
891
|
+
<span class="cline-any cline-neutral"> </span>
|
|
892
|
+
<span class="cline-any cline-neutral"> </span>
|
|
893
|
+
<span class="cline-any cline-yes">121x</span>
|
|
894
|
+
<span class="cline-any cline-neutral"> </span>
|
|
895
|
+
<span class="cline-any cline-yes">121x</span>
|
|
896
|
+
<span class="cline-any cline-neutral"> </span>
|
|
897
|
+
<span class="cline-any cline-no"> </span>
|
|
898
|
+
<span class="cline-any cline-neutral"> </span>
|
|
899
|
+
<span class="cline-any cline-neutral"> </span>
|
|
900
|
+
<span class="cline-any cline-neutral"> </span>
|
|
901
|
+
<span class="cline-any cline-neutral"> </span>
|
|
902
|
+
<span class="cline-any cline-neutral"> </span>
|
|
903
|
+
<span class="cline-any cline-yes">736x</span>
|
|
904
|
+
<span class="cline-any cline-neutral"> </span>
|
|
905
|
+
<span class="cline-any cline-neutral"> </span>
|
|
906
|
+
<span class="cline-any cline-neutral"> </span>
|
|
907
|
+
<span class="cline-any cline-yes">26x</span>
|
|
908
|
+
<span class="cline-any cline-neutral"> </span>
|
|
909
|
+
<span class="cline-any cline-neutral"> </span>
|
|
910
|
+
<span class="cline-any cline-neutral"> </span>
|
|
911
|
+
<span class="cline-any cline-neutral"> </span>
|
|
912
|
+
<span class="cline-any cline-neutral"> </span>
|
|
913
|
+
<span class="cline-any cline-neutral"> </span>
|
|
914
|
+
<span class="cline-any cline-neutral"> </span>
|
|
915
|
+
<span class="cline-any cline-neutral"> </span>
|
|
916
|
+
<span class="cline-any cline-neutral"> </span>
|
|
917
|
+
<span class="cline-any cline-neutral"> </span>
|
|
918
|
+
<span class="cline-any cline-neutral"> </span>
|
|
919
|
+
<span class="cline-any cline-neutral"> </span>
|
|
920
|
+
<span class="cline-any cline-neutral"> </span>
|
|
921
|
+
<span class="cline-any cline-neutral"> </span>
|
|
922
|
+
<span class="cline-any cline-neutral"> </span>
|
|
923
|
+
<span class="cline-any cline-neutral"> </span>
|
|
924
|
+
<span class="cline-any cline-neutral"> </span>
|
|
925
|
+
<span class="cline-any cline-neutral"> </span>
|
|
926
|
+
<span class="cline-any cline-neutral"> </span>
|
|
927
|
+
<span class="cline-any cline-neutral"> </span>
|
|
928
|
+
<span class="cline-any cline-neutral"> </span>
|
|
929
|
+
<span class="cline-any cline-yes">14x</span>
|
|
930
|
+
<span class="cline-any cline-neutral"> </span>
|
|
931
|
+
<span class="cline-any cline-neutral"> </span>
|
|
932
|
+
<span class="cline-any cline-yes">13x</span>
|
|
933
|
+
<span class="cline-any cline-yes">13x</span>
|
|
934
|
+
<span class="cline-any cline-yes">13x</span>
|
|
935
|
+
<span class="cline-any cline-yes">111x</span>
|
|
936
|
+
<span class="cline-any cline-neutral"> </span>
|
|
937
|
+
<span class="cline-any cline-neutral"> </span>
|
|
938
|
+
<span class="cline-any cline-yes">111x</span>
|
|
939
|
+
<span class="cline-any cline-neutral"> </span>
|
|
940
|
+
<span class="cline-any cline-neutral"> </span>
|
|
941
|
+
<span class="cline-any cline-yes">111x</span>
|
|
942
|
+
<span class="cline-any cline-yes">85x</span>
|
|
943
|
+
<span class="cline-any cline-neutral"> </span>
|
|
944
|
+
<span class="cline-any cline-yes">26x</span>
|
|
945
|
+
<span class="cline-any cline-neutral"> </span>
|
|
946
|
+
<span class="cline-any cline-yes">111x</span>
|
|
947
|
+
<span class="cline-any cline-neutral"> </span>
|
|
948
|
+
<span class="cline-any cline-yes">13x</span>
|
|
949
|
+
<span class="cline-any cline-neutral"> </span>
|
|
950
|
+
<span class="cline-any cline-neutral"> </span>
|
|
951
|
+
<span class="cline-any cline-yes">14x</span>
|
|
952
|
+
<span class="cline-any cline-yes">111x</span>
|
|
953
|
+
<span class="cline-any cline-yes">1104x</span>
|
|
954
|
+
<span class="cline-any cline-yes">1104x</span>
|
|
955
|
+
<span class="cline-any cline-neutral"> </span>
|
|
956
|
+
<span class="cline-any cline-neutral"> </span>
|
|
957
|
+
<span class="cline-any cline-yes">3703x</span>
|
|
958
|
+
<span class="cline-any cline-yes">3703x</span>
|
|
959
|
+
<span class="cline-any cline-no"> </span>
|
|
960
|
+
<span class="cline-any cline-no"> </span>
|
|
961
|
+
<span class="cline-any cline-neutral"> </span>
|
|
962
|
+
<span class="cline-any cline-no"> </span>
|
|
963
|
+
<span class="cline-any cline-neutral"> </span>
|
|
964
|
+
<span class="cline-any cline-neutral"> </span>
|
|
965
|
+
<span class="cline-any cline-neutral"> </span>
|
|
966
|
+
<span class="cline-any cline-neutral"> </span>
|
|
967
|
+
<span class="cline-any cline-yes">3703x</span>
|
|
968
|
+
<span class="cline-any cline-yes">3703x</span>
|
|
969
|
+
<span class="cline-any cline-neutral"> </span>
|
|
970
|
+
<span class="cline-any cline-neutral"> </span>
|
|
971
|
+
<span class="cline-any cline-neutral"> </span>
|
|
972
|
+
<span class="cline-any cline-yes">1104x</span>
|
|
973
|
+
<span class="cline-any cline-neutral"> </span>
|
|
974
|
+
<span class="cline-any cline-neutral"> </span>
|
|
975
|
+
<span class="cline-any cline-neutral"> </span>
|
|
976
|
+
<span class="cline-any cline-neutral"> </span>
|
|
977
|
+
<span class="cline-any cline-neutral"> </span>
|
|
978
|
+
<span class="cline-any cline-neutral"> </span>
|
|
979
|
+
<span class="cline-any cline-neutral"> </span>
|
|
980
|
+
<span class="cline-any cline-yes">14x</span>
|
|
981
|
+
<span class="cline-any cline-yes">111x</span>
|
|
982
|
+
<span class="cline-any cline-yes">3703x</span>
|
|
983
|
+
<span class="cline-any cline-yes">3703x</span>
|
|
984
|
+
<span class="cline-any cline-yes">3703x</span>
|
|
985
|
+
<span class="cline-any cline-no"> </span>
|
|
986
|
+
<span class="cline-any cline-neutral"> </span>
|
|
987
|
+
<span class="cline-any cline-yes">3703x</span>
|
|
988
|
+
<span class="cline-any cline-yes">3703x</span>
|
|
989
|
+
<span class="cline-any cline-yes">3703x</span>
|
|
990
|
+
<span class="cline-any cline-neutral"> </span>
|
|
991
|
+
<span class="cline-any cline-neutral"> </span>
|
|
992
|
+
<span class="cline-any cline-neutral"> </span>
|
|
993
|
+
<span class="cline-any cline-yes">14x</span>
|
|
994
|
+
<span class="cline-any cline-yes">13x</span>
|
|
995
|
+
<span class="cline-any cline-yes">13x</span>
|
|
996
|
+
<span class="cline-any cline-yes">13x</span>
|
|
997
|
+
<span class="cline-any cline-yes">13x</span>
|
|
998
|
+
<span class="cline-any cline-yes">13x</span>
|
|
999
|
+
<span class="cline-any cline-yes">26x</span>
|
|
1000
|
+
<span class="cline-any cline-yes">13x</span>
|
|
1001
|
+
<span class="cline-any cline-yes">13x</span>
|
|
1002
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1003
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1004
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1005
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1006
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1007
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1008
|
+
<span class="cline-any cline-no"> </span>
|
|
1009
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1010
|
+
<span class="cline-any cline-no"> </span>
|
|
1011
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1012
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1013
|
+
<span class="cline-any cline-no"> </span>
|
|
1014
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1015
|
+
<span class="cline-any cline-no"> </span>
|
|
1016
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1017
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1018
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1019
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1020
|
+
<span class="cline-any cline-no"> </span>
|
|
1021
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1022
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1023
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1024
|
+
<span class="cline-any cline-no"> </span>
|
|
1025
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1026
|
+
<span class="cline-any cline-no"> </span>
|
|
1027
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1028
|
+
<span class="cline-any cline-yes">4x</span>
|
|
1029
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1030
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1031
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1032
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1033
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1034
|
+
<span class="cline-any cline-no"> </span>
|
|
1035
|
+
<span class="cline-any cline-no"> </span>
|
|
1036
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1037
|
+
<span class="cline-any cline-no"> </span>
|
|
1038
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1039
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1040
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1041
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1042
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1043
|
+
<span class="cline-any cline-no"> </span>
|
|
1044
|
+
<span class="cline-any cline-no"> </span>
|
|
1045
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1046
|
+
<span class="cline-any cline-no"> </span>
|
|
1047
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1048
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1049
|
+
<span class="cline-any cline-yes">14x</span>
|
|
1050
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1051
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1052
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1053
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1054
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1055
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1056
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1057
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1058
|
+
<span class="cline-any cline-yes">139x</span>
|
|
1059
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1060
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1061
|
+
<span class="cline-any cline-yes">139x</span>
|
|
1062
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1063
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1064
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1065
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import camelCase from 'camelcase';
|
|
1066
|
+
|
|
1067
|
+
export interface IColumnData {
|
|
1068
|
+
column: string;
|
|
1069
|
+
property?: string;
|
|
1070
|
+
references?: IModelClass;
|
|
1071
|
+
primaryKey?: boolean;
|
|
1072
|
+
}
|
|
1073
|
+
export type IColumn = IColumnData | string;
|
|
1074
|
+
export type IColumns = Array<IColumn> | (() => Array<IColumn>);
|
|
1075
|
+
|
|
1076
|
+
export interface IColumnInternalData {
|
|
1077
|
+
column: string;
|
|
1078
|
+
property: string;
|
|
1079
|
+
references?: IModelClass;
|
|
1080
|
+
primaryKey: boolean;
|
|
1081
|
+
}
|
|
1082
|
+
export type IColumnInternal = IColumnInternalData;
|
|
1083
|
+
export type IColumnsInternal = Array<IColumnInternal>;
|
|
1084
|
+
|
|
1085
|
+
export interface IModel {
|
|
1086
|
+
[key: string]: any;
|
|
1087
|
+
}
|
|
1088
|
+
// IModel used as a type refers to an instance of IModel;
|
|
1089
|
+
// IModelClass used as a type refers to the class itself
|
|
1090
|
+
export type IModelClass = new (props: any) => IModel;
|
|
1091
|
+
export interface ICollection<T extends IModel> {
|
|
1092
|
+
models: Array<T>;
|
|
1093
|
+
}
|
|
1094
|
+
export interface IEntity<T extends IModel> {
|
|
1095
|
+
tableName: string;
|
|
1096
|
+
displayName?: string;
|
|
1097
|
+
collectionDisplayName?: string;
|
|
1098
|
+
columns: IColumns;
|
|
1099
|
+
Model: new (props: any) => T;
|
|
1100
|
+
Collection: new ({ models }: any) => ICollection<T>;
|
|
1101
|
+
}
|
|
1102
|
+
export type IEntities<T extends IModel> = Array<IEntity<T>>;
|
|
1103
|
+
|
|
1104
|
+
export interface IEntityInternal<T extends IModel> {
|
|
1105
|
+
tableName: string;
|
|
1106
|
+
displayName: string;
|
|
1107
|
+
collectionDisplayName: string;
|
|
1108
|
+
columns: IColumnsInternal;
|
|
1109
|
+
propertyNames: Array<string>;
|
|
1110
|
+
Model: new (props: any) => T;
|
|
1111
|
+
Collection: new ({ models }: any) => ICollection<T>;
|
|
1112
|
+
columnNames: Array<string>;
|
|
1113
|
+
prefixedColumnNames: Array<string>;
|
|
1114
|
+
primaryKeys: Array<string>;
|
|
1115
|
+
references: object;
|
|
1116
|
+
selectColumnsClause: string;
|
|
1117
|
+
getPkId: (model: IModel) => string;
|
|
1118
|
+
}
|
|
1119
|
+
export type IEntitiesInternal<T extends IModel> = Array<IEntityInternal<T>>;
|
|
1120
|
+
|
|
1121
|
+
export interface ICreateCoreOptions {
|
|
1122
|
+
entities: IEntities<IModel>;
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
export interface ICore {
|
|
1126
|
+
/* ------------------------------------------------------------------------*/
|
|
1127
|
+
/* Object Relational Mapping methods --------------------------------------*/
|
|
1128
|
+
/* ------------------------------------------------------------------------*/
|
|
1129
|
+
|
|
1130
|
+
/* Note these construction methods ensure their count against the number of
|
|
1131
|
+
* generated top level business objects - independent of the number of
|
|
1132
|
+
* relational rows passed in as a result from a database driver query.
|
|
1133
|
+
* Thus, for example, `one` understands that there may be multiple result
|
|
1134
|
+
* rows (which a database driver's `one` query method would throw at) but
|
|
1135
|
+
* which correctly nest into one Model.)
|
|
1136
|
+
*/
|
|
1137
|
+
|
|
1138
|
+
createFromDatabase: <T extends ICollection<IModel>>(rows: any) => T;
|
|
1139
|
+
createAnyFromDatabase: <T extends ICollection<IModel>>(
|
|
1140
|
+
rows: any,
|
|
1141
|
+
rootKey: string | IModel
|
|
1142
|
+
) => T;
|
|
1143
|
+
createOneFromDatabase: <T extends IModel>(rows: any) => T;
|
|
1144
|
+
createOneOrNoneFromDatabase: <T extends IModel>(rows: any) => T | void;
|
|
1145
|
+
createManyFromDatabase: <T extends ICollection<IModel>>(rows: any) => T;
|
|
1146
|
+
|
|
1147
|
+
/* ------------------------------------------------------------------------*/
|
|
1148
|
+
/* Helpful Properties -----------------------------------------------------*/
|
|
1149
|
+
/* ------------------------------------------------------------------------*/
|
|
1150
|
+
|
|
1151
|
+
/* The tables property gives access to the sql select clause string for
|
|
1152
|
+
* each entity based on it's `displayName`. This property can be used when
|
|
1153
|
+
* writing raw SQL as the select clause, which handles quoting column names
|
|
1154
|
+
* and namespacing them to the table to avoid collisions and as required
|
|
1155
|
+
* for PureORM mapping.
|
|
1156
|
+
*/
|
|
1157
|
+
tables: { [key: string]: { columns: string } };
|
|
1158
|
+
getEntityByModel: (model: IModel) => IEntityInternal<IModel>;
|
|
1159
|
+
getEntityByTableName: (tableName: string) => IEntityInternal<IModel>;
|
|
1160
|
+
}
|
|
1161
|
+
|
|
1162
|
+
export const createCore = ({
|
|
1163
|
+
entities: externalEntities
|
|
1164
|
+
}: ICreateCoreOptions): ICore => {
|
|
1165
|
+
const entities: IEntitiesInternal<IModel> = externalEntities.map(
|
|
1166
|
+
(d: IEntity<IModel>) => {
|
|
1167
|
+
const tableName = d.tableName;
|
|
1168
|
+
const displayName = d.displayName || camelCase(d.tableName);
|
|
1169
|
+
const collectionDisplayName =
|
|
1170
|
+
d.collectionDisplayName || `${displayName}s`;
|
|
1171
|
+
const columns = (
|
|
1172
|
+
typeof d.columns === 'function' ? <span class="branch-0 cbranch-no" title="branch not covered" >d.columns() </span>: d.columns
|
|
1173
|
+
).map((d: IColumn) => {
|
|
1174
|
+
if (typeof d === 'string') {
|
|
1175
|
+
return {
|
|
1176
|
+
column: d,
|
|
1177
|
+
property: camelCase(d),
|
|
1178
|
+
primaryKey: false
|
|
1179
|
+
};
|
|
1180
|
+
}
|
|
1181
|
+
return {
|
|
1182
|
+
column: d.column,
|
|
1183
|
+
property: d.property || camelCase(d.column),
|
|
1184
|
+
primaryKey: d.primaryKey || false,
|
|
1185
|
+
...(d.references ? { references: d.references } : <span class="branch-1 cbranch-no" title="branch not covered" >{})</span>
|
|
1186
|
+
};
|
|
1187
|
+
});
|
|
1188
|
+
const propertyNames = columns.map(
|
|
1189
|
+
(x: IColumnInternal): string => x.property
|
|
1190
|
+
);
|
|
1191
|
+
const columnNames = columns.map((x: IColumnInternal): string => x.column);
|
|
1192
|
+
const prefixedColumnNames = columnNames.map(
|
|
1193
|
+
(col: string) => `${tableName}#${col}`
|
|
1194
|
+
);
|
|
1195
|
+
const Model = d.Model;
|
|
1196
|
+
const Collection = d.Collection;
|
|
1197
|
+
|
|
1198
|
+
const pkColumnsData = columns.filter(
|
|
1199
|
+
(x: IColumnInternal) => x.primaryKey
|
|
1200
|
+
);
|
|
1201
|
+
const _primaryKeys = pkColumnsData.map(<span class="fstat-no" title="function not covered" >(x</span>: IColumnInternal) => <span class="cstat-no" title="statement not covered" >x.column)</span>;
|
|
1202
|
+
const primaryKeys = _primaryKeys.length > 0 ? <span class="branch-0 cbranch-no" title="branch not covered" >_primaryKeys </span>: ['id'];
|
|
1203
|
+
|
|
1204
|
+
// Returns unique identifier of model (the values of the primary keys)
|
|
1205
|
+
const getPkId = (model: IModel): string => {
|
|
1206
|
+
return primaryKeys
|
|
1207
|
+
.map((key: string) => model[key as keyof typeof model])
|
|
1208
|
+
.join('');
|
|
1209
|
+
};
|
|
1210
|
+
|
|
1211
|
+
const references = columns
|
|
1212
|
+
.filter((x: IColumnInternal) => x.references)
|
|
1213
|
+
.reduce(
|
|
1214
|
+
(accum: any, item: IColumnInternal) =>
|
|
1215
|
+
Object.assign({}, accum, {
|
|
1216
|
+
[item.property]: item.references
|
|
1217
|
+
}),
|
|
1218
|
+
{}
|
|
1219
|
+
);
|
|
1220
|
+
|
|
1221
|
+
const selectColumnsClause = prefixedColumnNames
|
|
1222
|
+
.map(
|
|
1223
|
+
(prefixed: string, index: number) =>
|
|
1224
|
+
`"${tableName}".${columnNames[index]} as "${prefixed}"`
|
|
1225
|
+
)
|
|
1226
|
+
.join(', ');
|
|
1227
|
+
|
|
1228
|
+
return {
|
|
1229
|
+
tableName,
|
|
1230
|
+
displayName,
|
|
1231
|
+
collectionDisplayName,
|
|
1232
|
+
columns,
|
|
1233
|
+
propertyNames,
|
|
1234
|
+
Model,
|
|
1235
|
+
Collection,
|
|
1236
|
+
columnNames,
|
|
1237
|
+
prefixedColumnNames,
|
|
1238
|
+
primaryKeys,
|
|
1239
|
+
references,
|
|
1240
|
+
selectColumnsClause,
|
|
1241
|
+
getPkId
|
|
1242
|
+
};
|
|
1243
|
+
}
|
|
1244
|
+
);
|
|
1245
|
+
|
|
1246
|
+
const tableNameToEntityMap = entities.reduce(
|
|
1247
|
+
(
|
|
1248
|
+
map: Map<string, IEntityInternal<IModel>>,
|
|
1249
|
+
entity: IEntityInternal<IModel>
|
|
1250
|
+
) => {
|
|
1251
|
+
map.set(entity.tableName, entity);
|
|
1252
|
+
return map;
|
|
1253
|
+
},
|
|
1254
|
+
new Map()
|
|
1255
|
+
);
|
|
1256
|
+
|
|
1257
|
+
const getEntityByTableName = (tableName: string): IEntityInternal<IModel> => {
|
|
1258
|
+
const entity = tableNameToEntityMap.get(tableName);
|
|
1259
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!entity) {
|
|
1260
|
+
<span class="cstat-no" title="statement not covered" > throw new Error(`Could not find entity for table ${tableName}`);</span>
|
|
1261
|
+
}
|
|
1262
|
+
return entity;
|
|
1263
|
+
};
|
|
1264
|
+
|
|
1265
|
+
const modelToEntityMap = entities.reduce(
|
|
1266
|
+
(
|
|
1267
|
+
map: Map<IModel, IEntityInternal<IModel>>,
|
|
1268
|
+
entity: IEntityInternal<IModel>
|
|
1269
|
+
) => {
|
|
1270
|
+
map.set(entity.Model, entity);
|
|
1271
|
+
return map;
|
|
1272
|
+
},
|
|
1273
|
+
new Map()
|
|
1274
|
+
);
|
|
1275
|
+
|
|
1276
|
+
const getEntityByModel = (model: IModel): IEntityInternal<IModel> => {
|
|
1277
|
+
const entity = modelToEntityMap.get(model.constructor);
|
|
1278
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!entity) {
|
|
1279
|
+
<span class="cstat-no" title="statement not covered" > throw new Error(`Could not find entity for class ${model.constructor}`);</span>
|
|
1280
|
+
}
|
|
1281
|
+
return entity;
|
|
1282
|
+
};
|
|
1283
|
+
|
|
1284
|
+
/*
|
|
1285
|
+
* In:
|
|
1286
|
+
* [
|
|
1287
|
+
* [Article {id: 32}, ArticleTag {id: 54}]
|
|
1288
|
+
* [Article {id: 32}, ArticleTag {id: 55}]
|
|
1289
|
+
* ]
|
|
1290
|
+
* Out:
|
|
1291
|
+
* Article {id: 32, ArticleTags articleTags: [ArticleTag {id: 54}, ArticleTag {id: 55}]
|
|
1292
|
+
*/
|
|
1293
|
+
const nestClump = (clump: Array<Array<IModel>>): object => {
|
|
1294
|
+
clump = clump.map((x: Array<IModel>) => Object.values(x));
|
|
1295
|
+
const root = clump[0][0];
|
|
1296
|
+
clump = clump.map((row: Array<IModel>) =>
|
|
1297
|
+
row.filter((item: IModel, index: number) => index !== 0)
|
|
1298
|
+
);
|
|
1299
|
+
const built = { [getEntityByModel(root).displayName]: root };
|
|
1300
|
+
|
|
1301
|
+
let nodes = [root];
|
|
1302
|
+
|
|
1303
|
+
// Wowzer is this both CPU and Memory inefficient
|
|
1304
|
+
clump.forEach((array: Array<IModel>) => {
|
|
1305
|
+
array.forEach((_model: IModel) => {
|
|
1306
|
+
const nodeAlreadySeen = nodes.find(
|
|
1307
|
+
(x: IModel) =>
|
|
1308
|
+
x.constructor.name === _model.constructor.name &&
|
|
1309
|
+
getEntityByModel(x).getPkId(x) ===
|
|
1310
|
+
getEntityByModel(_model).getPkId(_model)
|
|
1311
|
+
);
|
|
1312
|
+
const model = nodeAlreadySeen || _model;
|
|
1313
|
+
const isNodeAlreadySeen = !!nodeAlreadySeen;
|
|
1314
|
+
const nodePointingToIt = nodes.find((node) => {
|
|
1315
|
+
const indexes = Object.values(getEntityByModel(node).references)
|
|
1316
|
+
.map((x: IModelClass, i: number) =>
|
|
1317
|
+
x === model.constructor ? i : null
|
|
1318
|
+
)
|
|
1319
|
+
.filter((x: number | null, i) => x != null) as Array<number>;
|
|
1320
|
+
if (!indexes.length) {
|
|
1321
|
+
return false;
|
|
1322
|
+
}
|
|
1323
|
+
for (const index of indexes) {
|
|
1324
|
+
const property = Object.keys(getEntityByModel(node).references)[
|
|
1325
|
+
index
|
|
1326
|
+
];
|
|
1327
|
+
if (node[property] === model.id) {
|
|
1328
|
+
return true;
|
|
1329
|
+
}
|
|
1330
|
+
}
|
|
1331
|
+
return false;
|
|
1332
|
+
});
|
|
1333
|
+
// For first obj type which is has an instance in nodes array,
|
|
1334
|
+
// get its index in nodes array
|
|
1335
|
+
const indexOfOldestParent =
|
|
1336
|
+
array.reduce((answer: number | null, obj: IModel) => {
|
|
1337
|
+
if (answer != null) {
|
|
1338
|
+
return answer;
|
|
1339
|
+
}
|
|
1340
|
+
const index = nodes.findIndex(
|
|
1341
|
+
(n) => n.constructor === obj.constructor
|
|
1342
|
+
);
|
|
1343
|
+
if (index !== -1) {
|
|
1344
|
+
return index;
|
|
1345
|
+
}
|
|
1346
|
+
return null;
|
|
1347
|
+
}, null) || 0;
|
|
1348
|
+
const parentHeirarchy = [
|
|
1349
|
+
root,
|
|
1350
|
+
...nodes.slice(0, indexOfOldestParent + 1).reverse()
|
|
1351
|
+
];
|
|
1352
|
+
const nodeItPointsTo = parentHeirarchy.find((parent) => {
|
|
1353
|
+
const index = Object.values(
|
|
1354
|
+
getEntityByModel(model).references
|
|
1355
|
+
).indexOf(parent.constructor);
|
|
1356
|
+
if (index === -1) {
|
|
1357
|
+
return false;
|
|
1358
|
+
}
|
|
1359
|
+
const property = Object.keys(getEntityByModel(model).references)[
|
|
1360
|
+
index
|
|
1361
|
+
];
|
|
1362
|
+
return model[property as keyof typeof model] === parent.id;
|
|
1363
|
+
});
|
|
1364
|
+
if (isNodeAlreadySeen) {
|
|
1365
|
+
if (nodeItPointsTo && !nodePointingToIt) {
|
|
1366
|
+
nodes = [model, ...nodes];
|
|
1367
|
+
return;
|
|
1368
|
+
}
|
|
1369
|
+
// If the nodePointingToIt (eg, parcel_event) is part of an
|
|
1370
|
+
// existing collection on this node (eg, parcel) which is a
|
|
1371
|
+
// nodeAlreadySeen, early return so we don't create it (parcel) on
|
|
1372
|
+
// the nodePointingToIt (parcel_event), since it (parcel) has been
|
|
1373
|
+
// shown to be the parent (of parcel_events).
|
|
1374
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (nodePointingToIt) {
|
|
1375
|
+
const ec =
|
|
1376
|
+
model[
|
|
1377
|
+
getEntityByModel(nodePointingToIt)
|
|
1378
|
+
.collectionDisplayName as keyof typeof model
|
|
1379
|
+
];
|
|
1380
|
+
if (ec && ec.models.find((m: IModel) => m === nodePointingToIt)) {
|
|
1381
|
+
nodes = [model, ...nodes];
|
|
1382
|
+
return;
|
|
1383
|
+
}
|
|
1384
|
+
}
|
|
1385
|
+
}
|
|
1386
|
+
if (nodePointingToIt) {
|
|
1387
|
+
nodePointingToIt[getEntityByModel(model).displayName] = model;
|
|
1388
|
+
} else if (nodeItPointsTo) {
|
|
1389
|
+
let collection =
|
|
1390
|
+
nodeItPointsTo[getEntityByModel(model).collectionDisplayName];
|
|
1391
|
+
if (collection) {
|
|
1392
|
+
collection.models.push(model);
|
|
1393
|
+
} else {
|
|
1394
|
+
const Collection = getEntityByModel(model).Collection;
|
|
1395
|
+
nodeItPointsTo[getEntityByModel(model).collectionDisplayName] =
|
|
1396
|
+
new Collection({
|
|
1397
|
+
models: [model]
|
|
1398
|
+
});
|
|
1399
|
+
}
|
|
1400
|
+
} else {
|
|
1401
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (!getEntityByModel(model).getPkId(model)) {
|
|
1402
|
+
// If the join is fruitless; todo: add a test for this path
|
|
1403
|
+
return;
|
|
1404
|
+
}
|
|
1405
|
+
<span class="cstat-no" title="statement not covered" > throw Error(</span>
|
|
1406
|
+
`Could not find how this BO fits: ${JSON.stringify(model)} ${
|
|
1407
|
+
getEntityByModel(model).tableName
|
|
1408
|
+
}`
|
|
1409
|
+
);
|
|
1410
|
+
}
|
|
1411
|
+
nodes = [model, ...nodes];
|
|
1412
|
+
});
|
|
1413
|
+
});
|
|
1414
|
+
|
|
1415
|
+
return built;
|
|
1416
|
+
};
|
|
1417
|
+
|
|
1418
|
+
/*
|
|
1419
|
+
* Clump array of flat objects into groups based on id of root
|
|
1420
|
+
* In:
|
|
1421
|
+
* [
|
|
1422
|
+
* [Article {id: 32}, ArticleTag {id: 54}]
|
|
1423
|
+
* [Article {id: 32}, ArticleTag {id: 55}]
|
|
1424
|
+
* [Article {id: 33}, ArticleTag {id: 56}]
|
|
1425
|
+
* ]
|
|
1426
|
+
* Out:
|
|
1427
|
+
* [
|
|
1428
|
+
* [
|
|
1429
|
+
* [Article {id: 32}, ArticleTag {id: 54}]
|
|
1430
|
+
* [Article {id: 32}, ArticleTag {id: 55}]
|
|
1431
|
+
* ]
|
|
1432
|
+
* [
|
|
1433
|
+
* [Article {id: 33}, ArticleTag {id: 56}]
|
|
1434
|
+
* ]
|
|
1435
|
+
* ]
|
|
1436
|
+
*/
|
|
1437
|
+
const clumpIntoGroups = (
|
|
1438
|
+
processed: Array<Array<IModel>>
|
|
1439
|
+
): Array<Array<Array<IModel>>> => {
|
|
1440
|
+
const root = processed[0][0];
|
|
1441
|
+
const rootBo = root.constructor;
|
|
1442
|
+
const clumps = processed.reduce((accum: any, item: Array<IModel>) => {
|
|
1443
|
+
const id = getEntityByModel(root)
|
|
1444
|
+
.primaryKeys.map(
|
|
1445
|
+
(key: string) =>
|
|
1446
|
+
item.find((x: IModel) => x.constructor === rootBo)?.[key]
|
|
1447
|
+
)
|
|
1448
|
+
.join('@');
|
|
1449
|
+
if (accum.has(id)) {
|
|
1450
|
+
accum.set(id, [...accum.get(id), item]);
|
|
1451
|
+
} else {
|
|
1452
|
+
accum.set(id, [item]);
|
|
1453
|
+
}
|
|
1454
|
+
return accum;
|
|
1455
|
+
}, new Map());
|
|
1456
|
+
return [...clumps.values()];
|
|
1457
|
+
};
|
|
1458
|
+
|
|
1459
|
+
const mapToBos = (objectified: any) => {
|
|
1460
|
+
return Object.keys(objectified).map((tableName) => {
|
|
1461
|
+
const entity = getEntityByTableName(tableName);
|
|
1462
|
+
const propified = Object.keys(objectified[tableName]).reduce(
|
|
1463
|
+
(obj: any, column) => {
|
|
1464
|
+
let propertyName =
|
|
1465
|
+
entity.propertyNames[entity.columnNames.indexOf(column)];
|
|
1466
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!propertyName) {
|
|
1467
|
+
<span class="cstat-no" title="statement not covered" > if (column.startsWith('meta_')) {</span>
|
|
1468
|
+
<span class="cstat-no" title="statement not covered" > propertyName = camelCase(column);</span>
|
|
1469
|
+
} else {
|
|
1470
|
+
<span class="cstat-no" title="statement not covered" > throw Error(</span>
|
|
1471
|
+
`No property name for "${column}" in business object "${entity.displayName}". Non-spec'd columns must begin with "meta_".`
|
|
1472
|
+
);
|
|
1473
|
+
}
|
|
1474
|
+
}
|
|
1475
|
+
obj[propertyName] = objectified[tableName][column];
|
|
1476
|
+
return obj;
|
|
1477
|
+
},
|
|
1478
|
+
{}
|
|
1479
|
+
);
|
|
1480
|
+
return new entity.Model(propified);
|
|
1481
|
+
});
|
|
1482
|
+
};
|
|
1483
|
+
|
|
1484
|
+
/*
|
|
1485
|
+
* Make objects (based on special table#column names) from flat database
|
|
1486
|
+
* return value.
|
|
1487
|
+
*/
|
|
1488
|
+
const objectifyDatabaseResult = (result: object) => {
|
|
1489
|
+
return Object.keys(result).reduce((obj: any, text: string) => {
|
|
1490
|
+
const tableName = text.split('#')[0];
|
|
1491
|
+
const column = text.split('#')[1];
|
|
1492
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!tableName || !column) {
|
|
1493
|
+
<span class="cstat-no" title="statement not covered" > throw new Error('Column names must be namespaced to table');</span>
|
|
1494
|
+
}
|
|
1495
|
+
obj[tableName] = obj[tableName] || {};
|
|
1496
|
+
obj[tableName][column] = result[text as keyof typeof result];
|
|
1497
|
+
return obj;
|
|
1498
|
+
}, {});
|
|
1499
|
+
};
|
|
1500
|
+
|
|
1501
|
+
const createFromDatabase = <T extends ICollection<IModel>>(rows: any): T => {
|
|
1502
|
+
const result = Array.isArray(rows) ? rows : <span class="branch-1 cbranch-no" title="branch not covered" >[rows];</span>
|
|
1503
|
+
const objectified = result.map(objectifyDatabaseResult);
|
|
1504
|
+
const boified = objectified.map(mapToBos);
|
|
1505
|
+
const clumps = clumpIntoGroups(boified);
|
|
1506
|
+
const nested = clumps.map(nestClump);
|
|
1507
|
+
const models = nested.map((n) => Object.values(n)[0]);
|
|
1508
|
+
const Collection = getEntityByModel(models[0]).Collection;
|
|
1509
|
+
return <T>new Collection({ models });
|
|
1510
|
+
};
|
|
1511
|
+
|
|
1512
|
+
const createAnyFromDatabase = <span class="fstat-no" title="function not covered" ><T</span> extends ICollection<IModel>>(
|
|
1513
|
+
rows: any,
|
|
1514
|
+
rootKey: string | IModel
|
|
1515
|
+
): T => {
|
|
1516
|
+
<span class="cstat-no" title="statement not covered" > if (!rows || !rows.length) {</span>
|
|
1517
|
+
const Collection =
|
|
1518
|
+
<span class="cstat-no" title="statement not covered" > typeof rootKey === 'string'</span>
|
|
1519
|
+
? getEntityByTableName(rootKey).Collection
|
|
1520
|
+
: getEntityByModel(rootKey).Collection;
|
|
1521
|
+
<span class="cstat-no" title="statement not covered" > return new Collection({ models: [] }) as T;</span>
|
|
1522
|
+
}
|
|
1523
|
+
<span class="cstat-no" title="statement not covered" > return <T>createFromDatabase<T>(rows);</span>
|
|
1524
|
+
};
|
|
1525
|
+
|
|
1526
|
+
const createOneFromDatabase = <T extends IModel>(rows: any): T => {
|
|
1527
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!rows || !rows.length) {
|
|
1528
|
+
<span class="cstat-no" title="statement not covered" > throw Error('Did not get one.');</span>
|
|
1529
|
+
}
|
|
1530
|
+
const collection = createFromDatabase<ICollection<IModel>>(rows);
|
|
1531
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (!collection || !collection.models || collection.models.length === 0) {
|
|
1532
|
+
<span class="cstat-no" title="statement not covered" > throw Error('Did not get one.');</span>
|
|
1533
|
+
} else <span class="missing-if-branch" title="if path not taken" >I</span>if (collection.models.length > 1) {
|
|
1534
|
+
<span class="cstat-no" title="statement not covered" > throw Error('Got more than one.');</span>
|
|
1535
|
+
}
|
|
1536
|
+
return <T>collection.models[0];
|
|
1537
|
+
};
|
|
1538
|
+
|
|
1539
|
+
const createOneOrNoneFromDatabase = <span class="fstat-no" title="function not covered" ><T</span> extends IModel>(
|
|
1540
|
+
rows: any
|
|
1541
|
+
): T | void => {
|
|
1542
|
+
<span class="cstat-no" title="statement not covered" > if (!rows || !rows.length) {</span>
|
|
1543
|
+
<span class="cstat-no" title="statement not covered" > return void 0;</span>
|
|
1544
|
+
}
|
|
1545
|
+
<span class="cstat-no" title="statement not covered" > return <T>createOneFromDatabase(rows);</span>
|
|
1546
|
+
};
|
|
1547
|
+
|
|
1548
|
+
const createManyFromDatabase = <span class="fstat-no" title="function not covered" ><T</span> extends ICollection<IModel>>(
|
|
1549
|
+
rows: any
|
|
1550
|
+
): T => {
|
|
1551
|
+
<span class="cstat-no" title="statement not covered" > if (!rows || !rows.length) {</span>
|
|
1552
|
+
<span class="cstat-no" title="statement not covered" > throw Error('Did not get at least one.');</span>
|
|
1553
|
+
}
|
|
1554
|
+
<span class="cstat-no" title="statement not covered" > return <T>createFromDatabase(rows);</span>
|
|
1555
|
+
};
|
|
1556
|
+
|
|
1557
|
+
return {
|
|
1558
|
+
getEntityByModel,
|
|
1559
|
+
getEntityByTableName,
|
|
1560
|
+
createFromDatabase,
|
|
1561
|
+
createAnyFromDatabase,
|
|
1562
|
+
createOneFromDatabase,
|
|
1563
|
+
createOneOrNoneFromDatabase,
|
|
1564
|
+
createManyFromDatabase,
|
|
1565
|
+
tables: entities.reduce((accum: any, data: IEntityInternal<IModel>) => {
|
|
1566
|
+
accum[data.displayName] = {
|
|
1567
|
+
columns: data.selectColumnsClause
|
|
1568
|
+
};
|
|
1569
|
+
return accum;
|
|
1570
|
+
}, {})
|
|
1571
|
+
};
|
|
1572
|
+
};
|
|
1573
|
+
</pre></td></tr>
|
|
1574
|
+
</table></pre>
|
|
1575
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
1576
|
+
</div><!-- /wrapper -->
|
|
1577
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
1578
|
+
Code coverage
|
|
1579
|
+
generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Tue May 10 2022 08:39:04 GMT-0400 (Eastern Daylight Time)
|
|
1580
|
+
</div>
|
|
1581
|
+
</div>
|
|
1582
|
+
<script src="../prettify.js"></script>
|
|
1583
|
+
<script>
|
|
1584
|
+
window.onload = function () {
|
|
1585
|
+
if (typeof prettyPrint === 'function') {
|
|
1586
|
+
prettyPrint();
|
|
1587
|
+
}
|
|
1588
|
+
};
|
|
1589
|
+
</script>
|
|
1590
|
+
<script src="../sorter.js"></script>
|
|
1591
|
+
<script src="../block-navigation.js"></script>
|
|
1592
|
+
</body>
|
|
1593
|
+
</html>
|