breeze-client 2.1.3-mjs → 2.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -5
- package/adapter-ajax-angularjs/{index.d.ts → breeze-client-adapter-ajax-angularjs.d.ts} +0 -1
- package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +1 -0
- package/adapter-ajax-angularjs/package.json +13 -0
- package/adapter-ajax-fetch/{index.d.ts → breeze-client-adapter-ajax-fetch.d.ts} +0 -1
- package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +1 -0
- package/adapter-ajax-fetch/package.json +13 -0
- package/adapter-ajax-httpclient/{index.d.ts → breeze-client-adapter-ajax-httpclient.d.ts} +0 -1
- package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +1 -0
- package/adapter-ajax-httpclient/package.json +13 -0
- package/adapter-ajax-jquery/{index.d.ts → breeze-client-adapter-ajax-jquery.d.ts} +0 -1
- package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +1 -0
- package/adapter-ajax-jquery/package.json +13 -0
- package/adapter-ajax-post/{index.d.ts → breeze-client-adapter-ajax-post.d.ts} +0 -1
- package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +1 -0
- package/adapter-ajax-post/package.json +13 -0
- package/adapter-data-service-odata/{index.d.ts → breeze-client-adapter-data-service-odata.d.ts} +0 -1
- package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +1 -0
- package/adapter-data-service-odata/package.json +13 -0
- package/adapter-data-service-webapi/{index.d.ts → breeze-client-adapter-data-service-webapi.d.ts} +0 -1
- package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +1 -0
- package/adapter-data-service-webapi/package.json +13 -0
- package/adapter-model-library-backing-store/{index.d.ts → breeze-client-adapter-model-library-backing-store.d.ts} +0 -1
- package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +1 -0
- package/adapter-model-library-backing-store/package.json +13 -0
- package/adapter-model-library-ko/{index.d.ts → breeze-client-adapter-model-library-ko.d.ts} +0 -1
- package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +1 -0
- package/adapter-model-library-ko/package.json +13 -0
- package/adapter-uri-builder-json/{index.d.ts → breeze-client-adapter-uri-builder-json.d.ts} +0 -1
- package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +1 -0
- package/adapter-uri-builder-json/package.json +13 -0
- package/adapter-uri-builder-odata/{index.d.ts → breeze-client-adapter-uri-builder-odata.d.ts} +0 -1
- package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +1 -0
- package/adapter-uri-builder-odata/package.json +13 -0
- package/breeze-client.d.ts +8 -0
- package/breeze-client.metadata.json +1 -0
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +190 -0
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-fetch.umd.js +190 -0
- package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +195 -0
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-jquery.umd.js +115 -0
- package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-post.umd.js +92 -0
- package/bundles/breeze-client-adapter-ajax-post.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-post.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-data-service-odata.umd.js +743 -0
- package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +16 -0
- package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-data-service-webapi.umd.js +326 -0
- package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +16 -0
- package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +280 -0
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-model-library-ko.umd.js +252 -0
- package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-uri-builder-json.umd.js +96 -0
- package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +262 -0
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +1 -0
- package/bundles/breeze-client-mixin-get-entity-graph.umd.js +258 -0
- package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +1 -0
- package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +2 -0
- package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +1 -0
- package/bundles/breeze-client-mixin-save-queuing.umd.js +579 -0
- package/bundles/breeze-client-mixin-save-queuing.umd.js.map +1 -0
- package/bundles/breeze-client-mixin-save-queuing.umd.min.js +16 -0
- package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +1 -0
- package/bundles/breeze-client.umd.js +14098 -0
- package/bundles/breeze-client.umd.js.map +1 -0
- package/bundles/breeze-client.umd.min.js +16 -0
- package/bundles/breeze-client.umd.min.js.map +1 -0
- package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +130 -0
- package/esm2015/adapter-ajax-angularjs/adapter-core.js +49 -0
- package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +5 -0
- package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +130 -0
- package/esm2015/adapter-ajax-fetch/adapter-core.js +49 -0
- package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +5 -0
- package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +137 -0
- package/esm2015/adapter-ajax-httpclient/adapter-core.js +49 -0
- package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +5 -0
- package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +103 -0
- package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +5 -0
- package/esm2015/adapter-ajax-post/adapter-ajax-post.js +77 -0
- package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +5 -0
- package/esm2015/adapter-data-service-odata/adapter-core.js +49 -0
- package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +459 -0
- package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +5 -0
- package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +93 -0
- package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +5 -0
- package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +268 -0
- package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +5 -0
- package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +240 -0
- package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +5 -0
- package/esm2015/adapter-uri-builder-json/adapter-core.js +49 -0
- package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +36 -0
- package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +5 -0
- package/esm2015/adapter-uri-builder-odata/adapter-core.js +49 -0
- package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +192 -0
- package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +5 -0
- package/esm2015/breeze-client.js +9 -0
- package/esm2015/index.js +2 -0
- package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +5 -0
- package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +269 -0
- package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +5 -0
- package/esm2015/mixin-save-queuing/mixin-save-queuing.js +400 -0
- package/esm2015/src/abstract-data-service-adapter.js +296 -0
- package/esm2015/src/array.js +4 -0
- package/esm2015/src/assert-param.js +312 -0
- package/esm2015/src/breeze.js +85 -0
- package/esm2015/src/complex-array.js +119 -0
- package/esm2015/src/config.js +223 -0
- package/esm2015/src/core.js +709 -0
- package/esm2015/src/csdl-metadata-parser.js +385 -0
- package/esm2015/src/data-service.js +203 -0
- package/esm2015/src/data-type.js +444 -0
- package/esm2015/src/default-property-interceptor.js +460 -0
- package/esm2015/src/entity-action.js +45 -0
- package/esm2015/src/entity-aspect.js +806 -0
- package/esm2015/src/entity-group.js +187 -0
- package/esm2015/src/entity-key.js +116 -0
- package/esm2015/src/entity-manager.js +2094 -0
- package/esm2015/src/entity-metadata.js +2109 -0
- package/esm2015/src/entity-query.js +996 -0
- package/esm2015/src/entity-state.js +99 -0
- package/esm2015/src/enum.js +141 -0
- package/esm2015/src/event.js +256 -0
- package/esm2015/src/interface-registry.js +41 -0
- package/esm2015/src/key-generator.js +108 -0
- package/esm2015/src/local-query-comparison-options.js +65 -0
- package/esm2015/src/mapping-context.js +405 -0
- package/esm2015/src/naming-convention.js +88 -0
- package/esm2015/src/observable-array.js +185 -0
- package/esm2015/src/predicate.js +1235 -0
- package/esm2015/src/primitive-array.js +87 -0
- package/esm2015/src/query-options.js +152 -0
- package/esm2015/src/relation-array.js +175 -0
- package/esm2015/src/save-options.js +41 -0
- package/esm2015/src/unattached-children-map.js +58 -0
- package/esm2015/src/validate.js +991 -0
- package/esm2015/src/validation-options.js +64 -0
- package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +132 -0
- package/esm5/adapter-ajax-angularjs/adapter-core.js +49 -0
- package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +5 -0
- package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +132 -0
- package/esm5/adapter-ajax-fetch/adapter-core.js +49 -0
- package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +5 -0
- package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +139 -0
- package/esm5/adapter-ajax-httpclient/adapter-core.js +49 -0
- package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +5 -0
- package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +105 -0
- package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +5 -0
- package/esm5/adapter-ajax-post/adapter-ajax-post.js +81 -0
- package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +5 -0
- package/esm5/adapter-data-service-odata/adapter-core.js +49 -0
- package/esm5/adapter-data-service-odata/adapter-data-service-odata.js +466 -0
- package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +5 -0
- package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +98 -0
- package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +5 -0
- package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +270 -0
- package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +5 -0
- package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +242 -0
- package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +5 -0
- package/esm5/adapter-uri-builder-json/adapter-core.js +49 -0
- package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +38 -0
- package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +5 -0
- package/esm5/adapter-uri-builder-odata/adapter-core.js +49 -0
- package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +197 -0
- package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +5 -0
- package/esm5/breeze-client.js +9 -0
- package/esm5/index.js +2 -0
- package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +5 -0
- package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +269 -0
- package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +5 -0
- package/esm5/mixin-save-queuing/mixin-save-queuing.js +412 -0
- package/esm5/src/abstract-data-service-adapter.js +302 -0
- package/esm5/src/array.js +4 -0
- package/esm5/src/assert-param.js +317 -0
- package/esm5/src/breeze.js +85 -0
- package/esm5/src/complex-array.js +119 -0
- package/esm5/src/config.js +228 -0
- package/esm5/src/core.js +717 -0
- package/esm5/src/csdl-metadata-parser.js +385 -0
- package/esm5/src/data-service.js +207 -0
- package/esm5/src/data-type.js +451 -0
- package/esm5/src/default-property-interceptor.js +460 -0
- package/esm5/src/entity-action.js +52 -0
- package/esm5/src/entity-aspect.js +812 -0
- package/esm5/src/entity-group.js +189 -0
- package/esm5/src/entity-key.js +118 -0
- package/esm5/src/entity-manager.js +2112 -0
- package/esm5/src/entity-metadata.js +2144 -0
- package/esm5/src/entity-query.js +1023 -0
- package/esm5/src/entity-state.js +106 -0
- package/esm5/src/enum.js +144 -0
- package/esm5/src/event.js +259 -0
- package/esm5/src/interface-registry.js +43 -0
- package/esm5/src/key-generator.js +111 -0
- package/esm5/src/local-query-comparison-options.js +67 -0
- package/esm5/src/mapping-context.js +407 -0
- package/esm5/src/naming-convention.js +90 -0
- package/esm5/src/observable-array.js +201 -0
- package/esm5/src/predicate.js +1300 -0
- package/esm5/src/primitive-array.js +87 -0
- package/esm5/src/query-options.js +167 -0
- package/esm5/src/relation-array.js +175 -0
- package/esm5/src/save-options.js +43 -0
- package/esm5/src/unattached-children-map.js +60 -0
- package/esm5/src/validate.js +996 -0
- package/esm5/src/validation-options.js +66 -0
- package/fesm2015/{breeze-client-adapter-ajax-angularjs.mjs → breeze-client-adapter-ajax-angularjs.js} +1 -1
- package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +1 -0
- package/fesm2015/{breeze-client-adapter-ajax-fetch.mjs → breeze-client-adapter-ajax-fetch.js} +3 -5
- package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +1 -0
- package/fesm2015/{breeze-client-adapter-ajax-httpclient.mjs → breeze-client-adapter-ajax-httpclient.js} +1 -1
- package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +1 -0
- package/fesm2015/{breeze-client-adapter-ajax-jquery.mjs → breeze-client-adapter-ajax-jquery.js} +2 -2
- package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +1 -0
- package/{fesm2020/breeze-client-adapter-ajax-post.mjs → fesm2015/breeze-client-adapter-ajax-post.js} +1 -1
- package/fesm2015/breeze-client-adapter-ajax-post.js.map +1 -0
- package/fesm2015/{breeze-client-adapter-data-service-odata.mjs → breeze-client-adapter-data-service-odata.js} +22 -20
- package/fesm2015/breeze-client-adapter-data-service-odata.js.map +1 -0
- package/fesm2015/{breeze-client-adapter-data-service-webapi.mjs → breeze-client-adapter-data-service-webapi.js} +13 -13
- package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +1 -0
- package/{fesm2020/breeze-client-adapter-model-library-backing-store.mjs → fesm2015/breeze-client-adapter-model-library-backing-store.js} +13 -13
- package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +1 -0
- package/{fesm2020/breeze-client-adapter-model-library-ko.mjs → fesm2015/breeze-client-adapter-model-library-ko.js} +13 -13
- package/fesm2015/breeze-client-adapter-model-library-ko.js.map +1 -0
- package/{fesm2020/breeze-client-adapter-uri-builder-json.mjs → fesm2015/breeze-client-adapter-uri-builder-json.js} +8 -8
- package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +1 -0
- package/{fesm2020/breeze-client-adapter-uri-builder-odata.mjs → fesm2015/breeze-client-adapter-uri-builder-odata.js} +86 -85
- package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +1 -0
- package/fesm2015/{breeze-client-mixin-get-entity-graph.mjs → breeze-client-mixin-get-entity-graph.js} +1 -1
- package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +1 -0
- package/fesm2015/{breeze-client-mixin-save-queuing.mjs → breeze-client-mixin-save-queuing.js} +1 -1
- package/fesm2015/breeze-client-mixin-save-queuing.js.map +1 -0
- package/fesm2015/{breeze-client.mjs → breeze-client.js} +418 -409
- package/fesm2015/breeze-client.js.map +1 -0
- package/{fesm2020/breeze-client-adapter-ajax-angularjs.mjs → fesm5/breeze-client-adapter-ajax-angularjs.js} +42 -41
- package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +1 -0
- package/{fesm2020/breeze-client-adapter-ajax-fetch.mjs → fesm5/breeze-client-adapter-ajax-fetch.js} +43 -44
- package/fesm5/breeze-client-adapter-ajax-fetch.js.map +1 -0
- package/{fesm2020/breeze-client-adapter-ajax-httpclient.mjs → fesm5/breeze-client-adapter-ajax-httpclient.js} +44 -43
- package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +1 -0
- package/{fesm2020/breeze-client-adapter-ajax-jquery.mjs → fesm5/breeze-client-adapter-ajax-jquery.js} +19 -18
- package/fesm5/breeze-client-adapter-ajax-jquery.js.map +1 -0
- package/{fesm2015/breeze-client-adapter-ajax-post.mjs → fesm5/breeze-client-adapter-ajax-post.js} +11 -8
- package/fesm5/breeze-client-adapter-ajax-post.js.map +1 -0
- package/{fesm2020/breeze-client-adapter-data-service-odata.mjs → fesm5/breeze-client-adapter-data-service-odata.js} +134 -126
- package/fesm5/breeze-client-adapter-data-service-odata.js.map +1 -0
- package/{fesm2020/breeze-client-adapter-data-service-webapi.mjs → fesm5/breeze-client-adapter-data-service-webapi.js} +42 -38
- package/fesm5/breeze-client-adapter-data-service-webapi.js.map +1 -0
- package/{fesm2015/breeze-client-adapter-model-library-backing-store.mjs → fesm5/breeze-client-adapter-model-library-backing-store.js} +64 -63
- package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +1 -0
- package/{fesm2015/breeze-client-adapter-model-library-ko.mjs → fesm5/breeze-client-adapter-model-library-ko.js} +58 -57
- package/fesm5/breeze-client-adapter-model-library-ko.js.map +1 -0
- package/fesm5/breeze-client-adapter-uri-builder-json.js +92 -0
- package/fesm5/breeze-client-adapter-uri-builder-json.js.map +1 -0
- package/fesm5/breeze-client-adapter-uri-builder-odata.js +250 -0
- package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +1 -0
- package/{fesm2020/breeze-client-mixin-get-entity-graph.mjs → fesm5/breeze-client-mixin-get-entity-graph.js} +45 -45
- package/fesm5/breeze-client-mixin-get-entity-graph.js.map +1 -0
- package/{fesm2020/breeze-client-mixin-save-queuing.mjs → fesm5/breeze-client-mixin-save-queuing.js} +126 -116
- package/fesm5/breeze-client-mixin-save-queuing.js.map +1 -0
- package/{fesm2020/breeze-client.mjs → fesm5/breeze-client.js} +3630 -3414
- package/fesm5/breeze-client.js.map +1 -0
- package/mixin-get-entity-graph/{index.d.ts → breeze-client-mixin-get-entity-graph.d.ts} +0 -1
- package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +1 -0
- package/mixin-get-entity-graph/package.json +13 -0
- package/mixin-save-queuing/{index.d.ts → breeze-client-mixin-save-queuing.d.ts} +0 -1
- package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +1 -0
- package/mixin-save-queuing/package.json +13 -0
- package/package.json +12 -126
- package/src/entity-metadata.d.ts +4 -6
- package/src/entity-query.d.ts +1 -1
- package/esm2020/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +0 -130
- package/esm2020/adapter-ajax-angularjs/adapter-core.mjs +0 -49
- package/esm2020/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +0 -5
- package/esm2020/adapter-ajax-fetch/adapter-ajax-fetch.mjs +0 -132
- package/esm2020/adapter-ajax-fetch/adapter-core.mjs +0 -49
- package/esm2020/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +0 -5
- package/esm2020/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +0 -137
- package/esm2020/adapter-ajax-httpclient/adapter-core.mjs +0 -49
- package/esm2020/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +0 -5
- package/esm2020/adapter-ajax-jquery/adapter-ajax-jquery.mjs +0 -103
- package/esm2020/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +0 -5
- package/esm2020/adapter-ajax-post/adapter-ajax-post.mjs +0 -77
- package/esm2020/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +0 -5
- package/esm2020/adapter-data-service-odata/adapter-core.mjs +0 -49
- package/esm2020/adapter-data-service-odata/adapter-data-service-odata.mjs +0 -456
- package/esm2020/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +0 -5
- package/esm2020/adapter-data-service-webapi/adapter-data-service-webapi.mjs +0 -93
- package/esm2020/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +0 -5
- package/esm2020/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +0 -268
- package/esm2020/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +0 -5
- package/esm2020/adapter-model-library-ko/adapter-model-library-ko.mjs +0 -240
- package/esm2020/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +0 -5
- package/esm2020/adapter-uri-builder-json/adapter-core.mjs +0 -49
- package/esm2020/adapter-uri-builder-json/adapter-uri-builder-json.mjs +0 -36
- package/esm2020/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +0 -5
- package/esm2020/adapter-uri-builder-odata/adapter-core.mjs +0 -49
- package/esm2020/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +0 -190
- package/esm2020/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +0 -5
- package/esm2020/breeze-client.mjs +0 -5
- package/esm2020/index.mjs +0 -2
- package/esm2020/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +0 -5
- package/esm2020/mixin-get-entity-graph/mixin-get-entity-graph.mjs +0 -269
- package/esm2020/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +0 -5
- package/esm2020/mixin-save-queuing/mixin-save-queuing.mjs +0 -400
- package/esm2020/src/abstract-data-service-adapter.mjs +0 -296
- package/esm2020/src/array.mjs +0 -4
- package/esm2020/src/assert-param.mjs +0 -312
- package/esm2020/src/breeze.mjs +0 -85
- package/esm2020/src/complex-array.mjs +0 -117
- package/esm2020/src/config.mjs +0 -223
- package/esm2020/src/core.mjs +0 -707
- package/esm2020/src/csdl-metadata-parser.mjs +0 -385
- package/esm2020/src/data-service.mjs +0 -203
- package/esm2020/src/data-type.mjs +0 -444
- package/esm2020/src/default-property-interceptor.mjs +0 -460
- package/esm2020/src/entity-action.mjs +0 -45
- package/esm2020/src/entity-aspect.mjs +0 -806
- package/esm2020/src/entity-group.mjs +0 -187
- package/esm2020/src/entity-key.mjs +0 -116
- package/esm2020/src/entity-manager.mjs +0 -2094
- package/esm2020/src/entity-metadata.mjs +0 -2109
- package/esm2020/src/entity-query.mjs +0 -996
- package/esm2020/src/entity-state.mjs +0 -99
- package/esm2020/src/enum.mjs +0 -141
- package/esm2020/src/event.mjs +0 -256
- package/esm2020/src/interface-registry.mjs +0 -41
- package/esm2020/src/key-generator.mjs +0 -108
- package/esm2020/src/local-query-comparison-options.mjs +0 -65
- package/esm2020/src/mapping-context.mjs +0 -405
- package/esm2020/src/naming-convention.mjs +0 -88
- package/esm2020/src/observable-array.mjs +0 -183
- package/esm2020/src/predicate.mjs +0 -1232
- package/esm2020/src/primitive-array.mjs +0 -85
- package/esm2020/src/query-options.mjs +0 -152
- package/esm2020/src/relation-array.mjs +0 -173
- package/esm2020/src/save-options.mjs +0 -41
- package/esm2020/src/unattached-children-map.mjs +0 -58
- package/esm2020/src/validate.mjs +0 -988
- package/esm2020/src/validation-options.mjs +0 -64
- package/fesm2015/breeze-client-adapter-ajax-angularjs.mjs.map +0 -1
- package/fesm2015/breeze-client-adapter-ajax-fetch.mjs.map +0 -1
- package/fesm2015/breeze-client-adapter-ajax-httpclient.mjs.map +0 -1
- package/fesm2015/breeze-client-adapter-ajax-jquery.mjs.map +0 -1
- package/fesm2015/breeze-client-adapter-ajax-post.mjs.map +0 -1
- package/fesm2015/breeze-client-adapter-data-service-odata.mjs.map +0 -1
- package/fesm2015/breeze-client-adapter-data-service-webapi.mjs.map +0 -1
- package/fesm2015/breeze-client-adapter-model-library-backing-store.mjs.map +0 -1
- package/fesm2015/breeze-client-adapter-model-library-ko.mjs.map +0 -1
- package/fesm2015/breeze-client-adapter-uri-builder-json.mjs +0 -91
- package/fesm2015/breeze-client-adapter-uri-builder-json.mjs.map +0 -1
- package/fesm2015/breeze-client-adapter-uri-builder-odata.mjs +0 -245
- package/fesm2015/breeze-client-adapter-uri-builder-odata.mjs.map +0 -1
- package/fesm2015/breeze-client-mixin-get-entity-graph.mjs.map +0 -1
- package/fesm2015/breeze-client-mixin-save-queuing.mjs.map +0 -1
- package/fesm2015/breeze-client.mjs.map +0 -1
- package/fesm2020/breeze-client-adapter-ajax-angularjs.mjs.map +0 -1
- package/fesm2020/breeze-client-adapter-ajax-fetch.mjs.map +0 -1
- package/fesm2020/breeze-client-adapter-ajax-httpclient.mjs.map +0 -1
- package/fesm2020/breeze-client-adapter-ajax-jquery.mjs.map +0 -1
- package/fesm2020/breeze-client-adapter-ajax-post.mjs.map +0 -1
- package/fesm2020/breeze-client-adapter-data-service-odata.mjs.map +0 -1
- package/fesm2020/breeze-client-adapter-data-service-webapi.mjs.map +0 -1
- package/fesm2020/breeze-client-adapter-model-library-backing-store.mjs.map +0 -1
- package/fesm2020/breeze-client-adapter-model-library-ko.mjs.map +0 -1
- package/fesm2020/breeze-client-adapter-uri-builder-json.mjs.map +0 -1
- package/fesm2020/breeze-client-adapter-uri-builder-odata.mjs.map +0 -1
- package/fesm2020/breeze-client-mixin-get-entity-graph.mjs.map +0 -1
- package/fesm2020/breeze-client-mixin-save-queuing.mjs.map +0 -1
- package/fesm2020/breeze-client.mjs.map +0 -1
package/{fesm2020/breeze-client-mixin-save-queuing.mjs → fesm5/breeze-client-mixin-save-queuing.js}
RENAMED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import { __extends } from 'tslib';
|
|
1
2
|
import { EntityState, breeze } from 'breeze-client';
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
function enableSaveQueuing(em, enable) {
|
|
5
|
+
if (enable === void 0) { enable = true; }
|
|
6
|
+
var saveQueuing = em['_saveQueueing'] ||
|
|
6
7
|
(em['_saveQueuing'] = new SaveQueuing(em));
|
|
7
8
|
enable = (enable === undefined) ? true : enable;
|
|
8
9
|
saveQueuing._isEnabled = enable;
|
|
@@ -22,7 +23,7 @@ function enableSaveQueuing(em, enable = true) {
|
|
|
22
23
|
function saveChangesWithQueuing(entities, saveOptions) {
|
|
23
24
|
try {
|
|
24
25
|
// `this` is an EntityManager
|
|
25
|
-
|
|
26
|
+
var saveQueuing = this._saveQueuing;
|
|
26
27
|
if (saveQueuing.isSaving) {
|
|
27
28
|
// save in progress; queue the save for later
|
|
28
29
|
return saveQueuing.queueSaveChanges(entities);
|
|
@@ -39,62 +40,62 @@ function saveChangesWithQueuing(entities, saveOptions) {
|
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
///////// SaveQueuing /////////
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
var SaveQueuing = /** @class */ (function () {
|
|
44
|
+
function SaveQueuing(entityManager) {
|
|
44
45
|
this.entityManager = entityManager;
|
|
45
46
|
this.baseSaveChanges = entityManager.saveChanges;
|
|
46
47
|
this.isSaving = false;
|
|
47
48
|
}
|
|
48
|
-
isEnabled() {
|
|
49
|
+
SaveQueuing.prototype.isEnabled = function () {
|
|
49
50
|
return this._isEnabled;
|
|
50
|
-
}
|
|
51
|
-
getSavedNothingResult() {
|
|
51
|
+
};
|
|
52
|
+
SaveQueuing.prototype.getSavedNothingResult = function () {
|
|
52
53
|
return { entities: [], keyMappings: [] };
|
|
53
|
-
}
|
|
54
|
-
queueSaveChanges(entities) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
};
|
|
55
|
+
SaveQueuing.prototype.queueSaveChanges = function (entities) {
|
|
56
|
+
var self = this; // `this` is a SaveQueuing
|
|
57
|
+
var em = self.entityManager;
|
|
58
|
+
var changes = entities || em.getChanges();
|
|
58
59
|
if (changes.length === 0) {
|
|
59
60
|
return Promise.resolve(this.getSavedNothingResult());
|
|
60
61
|
}
|
|
61
|
-
|
|
62
|
+
var valError = em.saveChangesValidateOnClient(changes);
|
|
62
63
|
if (valError) {
|
|
63
64
|
return Promise.reject(valError);
|
|
64
65
|
}
|
|
65
|
-
|
|
66
|
+
var saveMemo = self.nextSaveMemo || (self.nextSaveMemo = new SaveMemo());
|
|
66
67
|
memoizeChanges();
|
|
67
|
-
|
|
68
|
+
var deferred = self.nextSaveDeferred || (self.nextSaveDeferred = new Deferred());
|
|
68
69
|
return deferred.promise;
|
|
69
70
|
function memoizeChanges() {
|
|
70
71
|
if (changes.length === 0) {
|
|
71
72
|
return;
|
|
72
73
|
}
|
|
73
|
-
|
|
74
|
-
changes.forEach(e
|
|
74
|
+
var queuedChanges = saveMemo.queuedChanges;
|
|
75
|
+
changes.forEach(function (e) {
|
|
75
76
|
if (!e.entityAspect.isBeingSaved && queuedChanges.indexOf(e) === -1) {
|
|
76
77
|
queuedChanges.push(e);
|
|
77
78
|
}
|
|
78
79
|
});
|
|
79
80
|
saveMemo.updateEntityMemos(changes);
|
|
80
81
|
}
|
|
81
|
-
}
|
|
82
|
-
saveChanges(entities, saveOptions) {
|
|
83
|
-
|
|
84
|
-
|
|
82
|
+
};
|
|
83
|
+
SaveQueuing.prototype.saveChanges = function (entities, saveOptions) {
|
|
84
|
+
var self = this; // `this` is a SaveQueuing
|
|
85
|
+
var promise = self.baseSaveChanges.call(self.entityManager, entities, saveOptions || self.saveOptions)
|
|
85
86
|
.then(function (saveResult) { return self.saveSucceeded(saveResult); })
|
|
86
87
|
.then(null, function (error) { console.log(error); return self.saveFailed(error); });
|
|
87
88
|
rememberAddedOriginalValues(entities); // do it after ... so don't send OrigValues to the server
|
|
88
89
|
return promise;
|
|
89
90
|
function rememberAddedOriginalValues(entities) {
|
|
90
91
|
// added entities normally don't have original values but these will now
|
|
91
|
-
|
|
92
|
+
var added = entities ?
|
|
92
93
|
entities.filter(function (e) { return e.entityAspect.entityState.isAdded(); }) :
|
|
93
94
|
self.entityManager.getEntities(null, EntityState.Added);
|
|
94
|
-
added.forEach(entity
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
props.forEach(dp
|
|
95
|
+
added.forEach(function (entity) {
|
|
96
|
+
var props = entity.entityType.dataProperties;
|
|
97
|
+
var originalValues = entity.entityAspect.originalValues;
|
|
98
|
+
props.forEach(function (dp) {
|
|
98
99
|
if (dp.isPartOfKey) {
|
|
99
100
|
return;
|
|
100
101
|
}
|
|
@@ -102,12 +103,12 @@ class SaveQueuing {
|
|
|
102
103
|
});
|
|
103
104
|
});
|
|
104
105
|
}
|
|
105
|
-
}
|
|
106
|
-
saveSucceeded(saveResult) {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
106
|
+
};
|
|
107
|
+
SaveQueuing.prototype.saveSucceeded = function (saveResult) {
|
|
108
|
+
var self = this; // `this` is a SaveQueueing
|
|
109
|
+
var activeSaveDeferred = self.activeSaveDeferred;
|
|
110
|
+
var nextSaveDeferred = self.nextSaveDeferred;
|
|
111
|
+
var nextSaveMemo = self.nextSaveMemo;
|
|
111
112
|
// prepare as if nothing queued or left to save
|
|
112
113
|
self.isSaving = false;
|
|
113
114
|
self.activeSaveDeferred = null;
|
|
@@ -119,7 +120,7 @@ class SaveQueuing {
|
|
|
119
120
|
nextSaveMemo.pkFixup(saveResult.keyMappings);
|
|
120
121
|
nextSaveMemo.applyToSavedEntities(self.entityManager, saveResult.entities);
|
|
121
122
|
// remove detached entities from queuedChanges
|
|
122
|
-
|
|
123
|
+
var queuedChanges = nextSaveMemo.queuedChanges.filter(function (e) {
|
|
123
124
|
return !e.entityAspect.entityState.isDetached();
|
|
124
125
|
});
|
|
125
126
|
if (queuedChanges.length > 0) {
|
|
@@ -138,12 +139,12 @@ class SaveQueuing {
|
|
|
138
139
|
activeSaveDeferred.resolve(saveResult);
|
|
139
140
|
}
|
|
140
141
|
return saveResult; // for the current promise chain
|
|
141
|
-
}
|
|
142
|
-
saveFailed(error) {
|
|
143
|
-
|
|
142
|
+
};
|
|
143
|
+
SaveQueuing.prototype.saveFailed = function (error) {
|
|
144
|
+
var self = this; // `this` is a SaveQueueing
|
|
144
145
|
error = new QueuedSaveFailedError(error, self);
|
|
145
|
-
|
|
146
|
-
|
|
146
|
+
var activeSaveDeferred = self.activeSaveDeferred;
|
|
147
|
+
var nextSaveDeferred = self.nextSaveDeferred;
|
|
147
148
|
self.isSaving = false;
|
|
148
149
|
self.activeSaveDeferred = null;
|
|
149
150
|
self.activeSaveMemo = null;
|
|
@@ -156,54 +157,60 @@ class SaveQueuing {
|
|
|
156
157
|
nextSaveDeferred.reject(error);
|
|
157
158
|
}
|
|
158
159
|
return Promise.reject(error); // let promise chain hear error
|
|
159
|
-
}
|
|
160
|
-
|
|
160
|
+
};
|
|
161
|
+
return SaveQueuing;
|
|
162
|
+
}());
|
|
161
163
|
/// for backward compat with older Promise implementation
|
|
162
|
-
|
|
163
|
-
|
|
164
|
+
var Deferred = /** @class */ (function () {
|
|
165
|
+
function Deferred() {
|
|
164
166
|
this.promise = new Promise(function (resolve, reject) {
|
|
165
167
|
this.resolve = resolve;
|
|
166
168
|
this.reject = reject;
|
|
167
169
|
}.bind(this));
|
|
168
170
|
}
|
|
169
|
-
|
|
171
|
+
return Deferred;
|
|
172
|
+
}());
|
|
170
173
|
////////// QueuedSaveFailedError /////////
|
|
171
174
|
// Error sub-class thrown when rejecting queued saves.
|
|
172
|
-
|
|
175
|
+
var QueuedSaveFailedError = /** @class */ (function (_super) {
|
|
176
|
+
__extends(QueuedSaveFailedError, _super);
|
|
173
177
|
// Error sub-class thrown when rejecting queued saves.
|
|
174
178
|
// `innerError` is the actual save error
|
|
175
179
|
// `failedSaveMemo` is the saveMemo that prompted this save
|
|
176
180
|
// `nextSaveMemo` holds queued changes accumulated since that save.
|
|
177
181
|
// You may try to recover using this info. Good luck with that.
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
182
|
+
function QueuedSaveFailedError(errObject, saveQueuing) {
|
|
183
|
+
var _this = _super.call(this) || this;
|
|
184
|
+
_this.name = "QueuedSaveFailedError";
|
|
185
|
+
_this.innerError = errObject;
|
|
186
|
+
_this.message = "Queued save failed: " + errObject.message;
|
|
187
|
+
_this.failedSaveMemo = saveQueuing.activeSaveMemo;
|
|
188
|
+
_this.nextSaveMemo = saveQueuing.nextSaveMemo;
|
|
189
|
+
return _this;
|
|
185
190
|
}
|
|
186
|
-
|
|
191
|
+
return QueuedSaveFailedError;
|
|
192
|
+
}(Error));
|
|
187
193
|
////////// SaveMemo ////////////////
|
|
188
194
|
// SaveMemo is a record of changes for a queued save, consisting of:
|
|
189
195
|
// entityMemos: info about entities that are being saved and
|
|
190
196
|
// have been changed since the save started
|
|
191
197
|
// queuedChanges: entities that are queued for save but
|
|
192
198
|
// are not currently being saved
|
|
193
|
-
|
|
194
|
-
|
|
199
|
+
var SaveMemo = /** @class */ (function () {
|
|
200
|
+
function SaveMemo() {
|
|
195
201
|
this.entityMemos = {};
|
|
196
202
|
this.queuedChanges = [];
|
|
197
203
|
}
|
|
198
|
-
applyToSavedEntities(entityManager, savedEntities) {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
204
|
+
SaveMemo.prototype.applyToSavedEntities = function (entityManager, savedEntities) {
|
|
205
|
+
var _this = this;
|
|
206
|
+
var entityMemos = this.entityMemos; // `this` is a SaveMemo
|
|
207
|
+
var queuedChanges = this.queuedChanges;
|
|
208
|
+
var restorePublishing = this.disableManagerPublishing(entityManager);
|
|
202
209
|
try {
|
|
203
|
-
savedEntities.forEach(saved
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
210
|
+
savedEntities.forEach(function (saved) {
|
|
211
|
+
var key = _this.makeEntityMemoKey(saved);
|
|
212
|
+
var entityMemo = entityMemos[key];
|
|
213
|
+
var resave = entityMemo && entityMemo.applyToSavedEntity(saved);
|
|
207
214
|
if (resave) {
|
|
208
215
|
queuedChanges.push(saved);
|
|
209
216
|
}
|
|
@@ -212,64 +219,66 @@ class SaveMemo {
|
|
|
212
219
|
finally {
|
|
213
220
|
restorePublishing();
|
|
214
221
|
// D#2651 hasChanges will be wrong if changes made while save in progress
|
|
215
|
-
|
|
222
|
+
var hasChanges = queuedChanges.length > 0;
|
|
216
223
|
// Must use breeze internal method to properly set this flag true
|
|
217
224
|
if (hasChanges) {
|
|
218
225
|
entityManager._setHasChanges(true);
|
|
219
226
|
}
|
|
220
227
|
}
|
|
221
|
-
}
|
|
222
|
-
disableManagerPublishing(manager) {
|
|
223
|
-
|
|
228
|
+
};
|
|
229
|
+
SaveMemo.prototype.disableManagerPublishing = function (manager) {
|
|
230
|
+
var Event = breeze.Event;
|
|
224
231
|
Event.enable('entityChanged', manager, false);
|
|
225
232
|
Event.enable('hasChangesChanged', manager, false);
|
|
226
233
|
return function restorePublishing() {
|
|
227
234
|
Event.enable('entityChanged', manager, true);
|
|
228
235
|
Event.enable('hasChangesChanged', manager, true);
|
|
229
236
|
};
|
|
230
|
-
}
|
|
231
|
-
pkFixup(keyMappings) {
|
|
232
|
-
|
|
233
|
-
keyMappings.forEach(km
|
|
234
|
-
|
|
235
|
-
|
|
237
|
+
};
|
|
238
|
+
SaveMemo.prototype.pkFixup = function (keyMappings) {
|
|
239
|
+
var entityMemos = this.entityMemos; // `this` is a SaveMemo
|
|
240
|
+
keyMappings.forEach(function (km) {
|
|
241
|
+
var type = km.entityTypeName;
|
|
242
|
+
var tempKey = type + '|' + km.tempValue;
|
|
236
243
|
if (entityMemos[tempKey]) {
|
|
237
244
|
entityMemos[type + '|' + km.realValue] = entityMemos[tempKey];
|
|
238
245
|
delete entityMemos[tempKey];
|
|
239
246
|
}
|
|
240
|
-
for (
|
|
247
|
+
for (var memoKey in entityMemos) {
|
|
241
248
|
entityMemos[memoKey].fkFixup(km);
|
|
242
249
|
}
|
|
243
250
|
});
|
|
244
|
-
}
|
|
245
|
-
makeEntityMemoKey(entity) {
|
|
246
|
-
|
|
251
|
+
};
|
|
252
|
+
SaveMemo.prototype.makeEntityMemoKey = function (entity) {
|
|
253
|
+
var entityKey = entity.entityAspect.getKey();
|
|
247
254
|
return entityKey.entityType.name + '|' + entityKey.values;
|
|
248
|
-
}
|
|
249
|
-
updateEntityMemos(changes) {
|
|
250
|
-
|
|
251
|
-
|
|
255
|
+
};
|
|
256
|
+
SaveMemo.prototype.updateEntityMemos = function (changes) {
|
|
257
|
+
var _this = this;
|
|
258
|
+
var entityMemos = this.entityMemos; // `this` is a SaveMemo
|
|
259
|
+
changes.forEach(function (change) {
|
|
252
260
|
// only update entityMemo for entity being save
|
|
253
261
|
if (!change.entityAspect.isBeingSaved) {
|
|
254
262
|
return;
|
|
255
263
|
}
|
|
256
|
-
|
|
257
|
-
|
|
264
|
+
var key = _this.makeEntityMemoKey(change);
|
|
265
|
+
var entityMemo = entityMemos[key] || (entityMemos[key] = new EntityMemo(change));
|
|
258
266
|
entityMemo.update();
|
|
259
267
|
});
|
|
260
|
-
}
|
|
261
|
-
|
|
268
|
+
};
|
|
269
|
+
return SaveMemo;
|
|
270
|
+
}());
|
|
262
271
|
///////// EntityMemo Type ///////////////
|
|
263
272
|
// Information about an entity that is being saved
|
|
264
273
|
// and which has been changed since that save started
|
|
265
|
-
|
|
266
|
-
|
|
274
|
+
var EntityMemo = /** @class */ (function () {
|
|
275
|
+
function EntityMemo(entity) {
|
|
267
276
|
this.entity = entity;
|
|
268
277
|
this.pendingChanges = {};
|
|
269
278
|
}
|
|
270
|
-
applyToSavedEntity(saved) {
|
|
271
|
-
|
|
272
|
-
|
|
279
|
+
EntityMemo.prototype.applyToSavedEntity = function (saved) {
|
|
280
|
+
var entityMemo = this;
|
|
281
|
+
var aspect = saved.entityAspect;
|
|
273
282
|
if (aspect.entityState.isDetached()) {
|
|
274
283
|
return false;
|
|
275
284
|
}
|
|
@@ -278,48 +287,48 @@ class EntityMemo {
|
|
|
278
287
|
return true;
|
|
279
288
|
}
|
|
280
289
|
// treat entity with pending changes as modified
|
|
281
|
-
|
|
290
|
+
var props = Object.keys(entityMemo.pendingChanges);
|
|
282
291
|
if (props.length === 0) {
|
|
283
292
|
return false;
|
|
284
293
|
}
|
|
285
|
-
|
|
286
|
-
props.forEach(name
|
|
294
|
+
var originalValues = aspect.originalValues;
|
|
295
|
+
props.forEach(function (name) {
|
|
287
296
|
originalValues[name] = saved.getProperty(name);
|
|
288
297
|
saved.setProperty(name, entityMemo.pendingChanges[name]);
|
|
289
298
|
});
|
|
290
299
|
aspect.setModified();
|
|
291
300
|
return true;
|
|
292
|
-
}
|
|
293
|
-
fkFixup(keyMapping) {
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
fkProps.forEach(fkProp
|
|
301
|
+
};
|
|
302
|
+
EntityMemo.prototype.fkFixup = function (keyMapping) {
|
|
303
|
+
var entityMemo = this;
|
|
304
|
+
var type = entityMemo.entity.entityType;
|
|
305
|
+
var fkProps = type.foreignKeyProperties;
|
|
306
|
+
fkProps.forEach(function (fkProp) {
|
|
298
307
|
if (fkProp.parentType.name === keyMapping.entityTypeName &&
|
|
299
308
|
entityMemo.pendingChanges[fkProp.name] === keyMapping.tempValue) {
|
|
300
309
|
entityMemo.pendingChanges[fkProp.name] = keyMapping.realValue;
|
|
301
310
|
}
|
|
302
311
|
});
|
|
303
|
-
}
|
|
312
|
+
};
|
|
304
313
|
// update the entityMemo of changes to an entity being saved
|
|
305
314
|
// so that we know how to save it again later
|
|
306
|
-
update() {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
315
|
+
EntityMemo.prototype.update = function () {
|
|
316
|
+
var entityMemo = this;
|
|
317
|
+
var props;
|
|
318
|
+
var entity = entityMemo.entity;
|
|
319
|
+
var aspect = entity.entityAspect;
|
|
320
|
+
var stateName = aspect.entityState.name;
|
|
312
321
|
switch (stateName) {
|
|
313
322
|
case 'Added':
|
|
314
|
-
|
|
323
|
+
var originalValues_1 = aspect.originalValues;
|
|
315
324
|
props = entity.entityType.dataProperties;
|
|
316
|
-
props.forEach(dp
|
|
325
|
+
props.forEach(function (dp) {
|
|
317
326
|
if (dp.isPartOfKey) {
|
|
318
327
|
return;
|
|
319
328
|
}
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
if (
|
|
329
|
+
var name = dp.name;
|
|
330
|
+
var value = entity.getProperty(name);
|
|
331
|
+
if (originalValues_1[name] !== value) {
|
|
323
332
|
entityMemo.pendingChanges[name] = value;
|
|
324
333
|
}
|
|
325
334
|
});
|
|
@@ -330,17 +339,18 @@ class EntityMemo {
|
|
|
330
339
|
break;
|
|
331
340
|
case 'Modified':
|
|
332
341
|
props = Object.keys(aspect.originalValues);
|
|
333
|
-
props.forEach(name
|
|
342
|
+
props.forEach(function (name) {
|
|
334
343
|
entityMemo.pendingChanges[name] = entity.getProperty(name);
|
|
335
344
|
});
|
|
336
345
|
break;
|
|
337
346
|
}
|
|
338
|
-
}
|
|
339
|
-
|
|
347
|
+
};
|
|
348
|
+
return EntityMemo;
|
|
349
|
+
}());
|
|
340
350
|
|
|
341
351
|
/**
|
|
342
352
|
* Generated bundle index. Do not edit.
|
|
343
353
|
*/
|
|
344
354
|
|
|
345
355
|
export { QueuedSaveFailedError, enableSaveQueuing };
|
|
346
|
-
//# sourceMappingURL=breeze-client-mixin-save-queuing.
|
|
356
|
+
//# sourceMappingURL=breeze-client-mixin-save-queuing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breeze-client-mixin-save-queuing.js","sources":["ng://breeze-client/mixin-save-queuing/mixin-save-queuing.ts","ng://breeze-client/mixin-save-queuing/breeze-client-mixin-save-queuing.ts"],"sourcesContent":["//#region Copyright, Version, and Description\r\n/*\r\n * Copyright 2015-2021 IdeaBlade, Inc. All Rights Reserved.\r\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\r\n * conditions of the IdeaBlade Breeze license, available at http://www.breezejs.com/license\r\n *\r\n * Author: Ward Bell\r\n * Version: 2.0.6 Steve Schmitt - convert to TypeScript, move to breeze-client repo, change enableSaveQueuing function\r\n * Version: 2.0.5 Ward Bell\r\n * --------------------------------------------------------------------------------\r\n * Adds \"Save Queuing\" capability to new EntityManagers\r\n *\r\n * Save Queuing automatically queues and defers an EntityManager.saveChanges call\r\n * when another save is in progress for that manager and the server has not yet responded.\r\n * This feature is helpful when your app needs to allow rapid, continuous changes\r\n * to entities that may be in the process of being saved.\r\n *\r\n * Without \"Save Queuing\", an EntityManager will throw an exception\r\n * when you call saveChanges for an entity which is currently being saved.\r\n *\r\n * !!! Use with caution !!!\r\n * It is usually better to disable user input while a save is in progress.\r\n * Save Queuing may be appropriate for simple \"auto-save\" scenarios\r\n * when the save latency is \"short\" (under a few seconds).\r\n *\r\n * Save Queuing is NOT intended for occassionally disconnected or offline scenarios.\r\n *\r\n * Save Queuing is experimental. It will not become a part of BreezeJS core\r\n * but might become an official Breeze plugin in future\r\n * although not necessarily in this form or with this API\r\n *\r\n * Must call EntityManager.enableSaveQueuing(true) to turn it on;\r\n * EntityManager.enableSaveQueuing(false) restores the manager's original\r\n * saveChanges method as it was at the time saveQueuing was first enabled.\r\n *\r\n * This module adds \"enableSaveQueuing\" to the EntityManager prototype.\r\n * Calling \"enableSaveQueuing(true)\" adds a new _saveQueuing object\r\n * to the manager instance.\r\n *\r\n * See DocCode:saveQueuingTests.js\r\n * https://github.com/Breeze/breeze.js.samples/blob/master/net/DocCode/DocCode/tests/saveQueuingTests.js\r\n *\r\n * LIMITATIONS\r\n * - Can't handle changes to the primary key (dangerous in any case)\r\n * - Assumes promises. Does not support the (deprecated) success and fail callbacks\r\n * - Does not queue saveOptions. The first one is re-used for all queued saves.\r\n * - Does not deal with export/import of entities while save is inflight\r\n * - Does not deal with rejectChanges while save is in flight\r\n * - Does not support parallel saves even when the change-sets are independent.\r\n * The native saveChanges allows such saves.\r\n * SaveQueuing does not; too complex and doesn't fit the primary scenario anyway.\r\n * - The resolved saveResult is the saveResult of the last completed save\r\n * - A queued save that might have succeeded if saved immediately\r\n * may fail because the server no longer accepts it later\r\n * - Prior to Breeze v.1.5.3, a queued save that might have succeeded\r\n * if saved immediately will fail if subsequently attempt to save\r\n * an invalid entity. Can detect and circumvent after v.1.5.3.\r\n *\r\n * All members of EntityManager._saveQueuing are internal;\r\n * touch them at your own risk.\r\n */\r\n//#endregion\r\nimport { Entity, EntityManager, KeyMapping, EntityState, SaveResult, breeze } from 'breeze-client';\r\n\r\n\r\nexport function enableSaveQueuing(em: EntityManager, enable: boolean = true) {\r\n let saveQueuing = em['_saveQueueing'] ||\r\n (em['_saveQueuing'] = new SaveQueuing(em));\r\n\r\n enable = (enable === undefined) ? true : enable;\r\n saveQueuing._isEnabled = enable;\r\n if (enable) {\r\n // delegate to save changes queuing\r\n em.saveChanges = saveChangesWithQueuing;\r\n } else {\r\n // revert to the native EntityManager.saveChanges\r\n em.saveChanges = em['_saveQueuing'].baseSaveChanges;\r\n }\r\n}\r\n\r\n/**\r\n * Replacement for EntityManager.saveChanges\r\n * This version queues saveChanges calls while a real save is in progress\r\n **/\r\nfunction saveChangesWithQueuing(entities: Entity[] | null, saveOptions: any) {\r\n try {\r\n // `this` is an EntityManager\r\n let saveQueuing = this._saveQueuing;\r\n if (saveQueuing.isSaving) {\r\n // save in progress; queue the save for later\r\n return saveQueuing.queueSaveChanges(entities);\r\n } else {\r\n // note that save is in progress; then save\r\n saveQueuing.isSaving = true;\r\n saveQueuing.saveOptions = saveOptions;\r\n return saveQueuing.saveChanges(entities, saveOptions);\r\n }\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n}\r\n\r\n///////// SaveQueuing /////////\r\nclass SaveQueuing {\r\n entityManager: EntityManager;\r\n baseSaveChanges: () => Promise<any>;\r\n isSaving: boolean;\r\n _isEnabled: boolean;\r\n activeSaveDeferred: Deferred<SaveResult>;\r\n nextSaveDeferred: Deferred<SaveResult>;\r\n activeSaveMemo: SaveMemo;\r\n nextSaveMemo: SaveMemo;\r\n saveOptions: any;\r\n\r\n constructor(entityManager: EntityManager) {\r\n this.entityManager = entityManager;\r\n this.baseSaveChanges = entityManager.saveChanges;\r\n this.isSaving = false;\r\n }\r\n\r\n isEnabled() {\r\n return this._isEnabled;\r\n }\r\n\r\n getSavedNothingResult(): SaveResult {\r\n return { entities: [] as Entity[], keyMappings: [] as KeyMapping[] };\r\n }\r\n\r\n queueSaveChanges(entities: Entity[]) {\r\n let self = this; // `this` is a SaveQueuing\r\n let em = self.entityManager;\r\n\r\n let changes = entities || em.getChanges();\r\n if (changes.length === 0) {\r\n return Promise.resolve(this.getSavedNothingResult());\r\n }\r\n\r\n let valError = em.saveChangesValidateOnClient(changes);\r\n if (valError) {\r\n return Promise.reject(valError);\r\n }\r\n\r\n let saveMemo = self.nextSaveMemo || (self.nextSaveMemo = new SaveMemo());\r\n memoizeChanges();\r\n let deferred = self.nextSaveDeferred || (self.nextSaveDeferred = new Deferred<SaveResult>());\r\n return deferred.promise;\r\n\r\n function memoizeChanges() {\r\n if (changes.length === 0) { return; }\r\n let queuedChanges = saveMemo.queuedChanges;\r\n changes.forEach(e => {\r\n if (!e.entityAspect.isBeingSaved && queuedChanges.indexOf(e) === -1) {\r\n queuedChanges.push(e);\r\n }\r\n });\r\n\r\n saveMemo.updateEntityMemos(changes);\r\n }\r\n }\r\n\r\n saveChanges(entities: Entity[], saveOptions: any) {\r\n let self = this; // `this` is a SaveQueuing\r\n let promise = self.baseSaveChanges.call(self.entityManager, entities, saveOptions || self.saveOptions)\r\n .then(function (saveResult: SaveResult) { return self.saveSucceeded(saveResult); })\r\n .then(null, function (error: Error) { console.log(error); return self.saveFailed(error); });\r\n rememberAddedOriginalValues(entities); // do it after ... so don't send OrigValues to the server\r\n return promise;\r\n\r\n function rememberAddedOriginalValues(entities: Entity[]) {\r\n // added entities normally don't have original values but these will now\r\n let added = entities ?\r\n entities.filter(function (e) { return e.entityAspect.entityState.isAdded(); }) :\r\n self.entityManager.getEntities(null, EntityState.Added);\r\n added.forEach(entity => {\r\n let props = entity.entityType.dataProperties;\r\n let originalValues = entity.entityAspect.originalValues;\r\n props.forEach(dp => {\r\n if (dp.isPartOfKey) { return; }\r\n originalValues[dp.name] = entity.getProperty(dp.name);\r\n });\r\n });\r\n }\r\n }\r\n\r\n\r\n saveSucceeded(saveResult: SaveResult) {\r\n let self = this; // `this` is a SaveQueueing\r\n let activeSaveDeferred = self.activeSaveDeferred;\r\n let nextSaveDeferred = self.nextSaveDeferred;\r\n let nextSaveMemo = self.nextSaveMemo;\r\n\r\n\r\n // prepare as if nothing queued or left to save\r\n self.isSaving = false;\r\n self.activeSaveDeferred = null;\r\n self.activeSaveMemo = null;\r\n self.nextSaveDeferred = null;\r\n self.nextSaveMemo = null;\r\n\r\n if (nextSaveMemo) {\r\n // a save was queued since last save returned\r\n nextSaveMemo.pkFixup(saveResult.keyMappings);\r\n nextSaveMemo.applyToSavedEntities(self.entityManager, saveResult.entities);\r\n // remove detached entities from queuedChanges\r\n let queuedChanges = nextSaveMemo.queuedChanges.filter(e => {\r\n return !e.entityAspect.entityState.isDetached();\r\n });\r\n\r\n if (queuedChanges.length > 0) {\r\n // save again\r\n self.isSaving = true;\r\n // remember the queued changes that triggered this save\r\n self.activeSaveDeferred = nextSaveDeferred;\r\n self.activeSaveMemo = nextSaveMemo;\r\n self.saveChanges(queuedChanges, this.saveOptions);\r\n } else if (nextSaveDeferred) {\r\n nextSaveDeferred.resolve(this.getSavedNothingResult());\r\n }\r\n }\r\n\r\n if (activeSaveDeferred) { activeSaveDeferred.resolve(saveResult); }\r\n return saveResult; // for the current promise chain\r\n }\r\n\r\n saveFailed(error: Error) {\r\n let self = this; // `this` is a SaveQueueing\r\n error = new QueuedSaveFailedError(error, self);\r\n\r\n let activeSaveDeferred = self.activeSaveDeferred;\r\n let nextSaveDeferred = self.nextSaveDeferred;\r\n\r\n self.isSaving = false;\r\n self.activeSaveDeferred = null;\r\n self.activeSaveMemo = null;\r\n self.nextSaveDeferred = null;\r\n self.nextSaveMemo = null;\r\n\r\n if (activeSaveDeferred) { activeSaveDeferred.reject(error); }\r\n if (nextSaveDeferred) { nextSaveDeferred.reject(error); }\r\n\r\n return Promise.reject(error); // let promise chain hear error\r\n }\r\n}\r\n\r\n/// for backward compat with older Promise implementation\r\nclass Deferred<T> {\r\n resolve: (val: any) => void;\r\n reject: (err: any) => void;\r\n promise: Promise<T>;\r\n constructor() {\r\n this.promise = new Promise<T>(function (resolve: (val: any) => void, reject: (err: any) => void) {\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n }.bind(this));\r\n }\r\n}\r\n\r\n\r\n////////// QueuedSaveFailedError /////////\r\n// Error sub-class thrown when rejecting queued saves.\r\nexport class QueuedSaveFailedError extends Error {\r\n name = \"QueuedSaveFailedError\";\r\n innerError: Error;\r\n message: string;\r\n failedSaveMemo: SaveMemo;\r\n nextSaveMemo: SaveMemo;\r\n\r\n // Error sub-class thrown when rejecting queued saves.\r\n // `innerError` is the actual save error\r\n // `failedSaveMemo` is the saveMemo that prompted this save\r\n // `nextSaveMemo` holds queued changes accumulated since that save.\r\n // You may try to recover using this info. Good luck with that.\r\n constructor(errObject: Error, saveQueuing: any) {\r\n super();\r\n this.innerError = errObject;\r\n this.message = \"Queued save failed: \" + errObject.message;\r\n this.failedSaveMemo = saveQueuing.activeSaveMemo;\r\n this.nextSaveMemo = saveQueuing.nextSaveMemo;\r\n }\r\n}\r\n\r\n////////// SaveMemo ////////////////\r\n// SaveMemo is a record of changes for a queued save, consisting of:\r\n// entityMemos: info about entities that are being saved and\r\n// have been changed since the save started\r\n// queuedChanges: entities that are queued for save but\r\n// are not currently being saved\r\nclass SaveMemo {\r\n entityMemos: { [key: string]: EntityMemo };\r\n queuedChanges: Entity[];\r\n constructor() {\r\n this.entityMemos = {};\r\n this.queuedChanges = [];\r\n }\r\n\r\n applyToSavedEntities(entityManager: EntityManager, savedEntities: Entity[]) {\r\n let entityMemos = this.entityMemos; // `this` is a SaveMemo\r\n let queuedChanges = this.queuedChanges;\r\n let restorePublishing = this.disableManagerPublishing(entityManager);\r\n try {\r\n savedEntities.forEach(saved => {\r\n let key = this.makeEntityMemoKey(saved);\r\n let entityMemo = entityMemos[key];\r\n let resave = entityMemo && entityMemo.applyToSavedEntity(saved);\r\n if (resave) {\r\n queuedChanges.push(saved);\r\n }\r\n });\r\n } finally {\r\n restorePublishing();\r\n // D#2651 hasChanges will be wrong if changes made while save in progress\r\n let hasChanges = queuedChanges.length > 0;\r\n // Must use breeze internal method to properly set this flag true\r\n if (hasChanges) { entityManager._setHasChanges(true); }\r\n }\r\n }\r\n\r\n private disableManagerPublishing(manager: EntityManager) {\r\n let Event = breeze.Event;\r\n Event.enable('entityChanged', manager, false);\r\n Event.enable('hasChangesChanged', manager, false);\r\n\r\n return function restorePublishing() {\r\n Event.enable('entityChanged', manager, true);\r\n Event.enable('hasChangesChanged', manager, true);\r\n };\r\n }\r\n\r\n pkFixup(keyMappings: KeyMapping[]) {\r\n let entityMemos = this.entityMemos; // `this` is a SaveMemo\r\n keyMappings.forEach(km => {\r\n let type = km.entityTypeName;\r\n let tempKey = type + '|' + km.tempValue;\r\n if (entityMemos[tempKey]) {\r\n entityMemos[type + '|' + km.realValue] = entityMemos[tempKey];\r\n delete entityMemos[tempKey];\r\n }\r\n for (let memoKey in entityMemos) {\r\n entityMemos[memoKey].fkFixup(km);\r\n }\r\n });\r\n }\r\n\r\n makeEntityMemoKey(entity: Entity) {\r\n let entityKey = entity.entityAspect.getKey();\r\n return entityKey.entityType.name + '|' + entityKey.values;\r\n }\r\n\r\n updateEntityMemos(changes: Entity[]) {\r\n let entityMemos = this.entityMemos; // `this` is a SaveMemo\r\n changes.forEach(change => {\r\n // only update entityMemo for entity being save\r\n if (!change.entityAspect.isBeingSaved) { return; }\r\n\r\n let key = this.makeEntityMemoKey(change);\r\n let entityMemo = entityMemos[key] || (entityMemos[key] = new EntityMemo(change));\r\n entityMemo.update();\r\n });\r\n }\r\n\r\n}\r\n\r\n\r\n\r\n///////// EntityMemo Type ///////////////\r\n// Information about an entity that is being saved\r\n// and which has been changed since that save started\r\nclass EntityMemo {\r\n entity: Entity;\r\n pendingChanges: any;\r\n isDeleted: boolean;\r\n constructor(entity: Entity) {\r\n this.entity = entity;\r\n this.pendingChanges = {};\r\n }\r\n\r\n\r\n applyToSavedEntity(saved: Entity) {\r\n let entityMemo = this;\r\n let aspect = saved.entityAspect;\r\n if (aspect.entityState.isDetached()) {\r\n return false;\r\n } else if (entityMemo.isDeleted) {\r\n aspect.setDeleted();\r\n return true;\r\n }\r\n // treat entity with pending changes as modified\r\n let props = Object.keys(entityMemo.pendingChanges);\r\n if (props.length === 0) {\r\n return false;\r\n }\r\n let originalValues = aspect.originalValues;\r\n props.forEach(name => {\r\n originalValues[name] = saved.getProperty(name);\r\n saved.setProperty(name, entityMemo.pendingChanges[name]);\r\n });\r\n aspect.setModified();\r\n return true;\r\n }\r\n\r\n fkFixup(keyMapping: KeyMapping) {\r\n let entityMemo = this;\r\n let type = entityMemo.entity.entityType;\r\n let fkProps = type.foreignKeyProperties;\r\n fkProps.forEach(fkProp => {\r\n if (fkProp.parentType.name === keyMapping.entityTypeName &&\r\n entityMemo.pendingChanges[fkProp.name] === keyMapping.tempValue) {\r\n entityMemo.pendingChanges[fkProp.name] = keyMapping.realValue;\r\n }\r\n });\r\n }\r\n\r\n // update the entityMemo of changes to an entity being saved\r\n // so that we know how to save it again later\r\n update() {\r\n let entityMemo = this;\r\n let props;\r\n let entity = entityMemo.entity;\r\n let aspect = entity.entityAspect;\r\n let stateName = aspect.entityState.name;\r\n switch (stateName) {\r\n case 'Added':\r\n let originalValues = aspect.originalValues;\r\n props = entity.entityType.dataProperties;\r\n props.forEach(dp => {\r\n if (dp.isPartOfKey) { return; }\r\n let name = dp.name;\r\n let value = entity.getProperty(name);\r\n if (originalValues[name] !== value) {\r\n entityMemo.pendingChanges[name] = value;\r\n }\r\n });\r\n break;\r\n\r\n case 'Deleted':\r\n entityMemo.isDeleted = true;\r\n entityMemo.pendingChanges = {};\r\n break;\r\n\r\n case 'Modified':\r\n props = Object.keys(aspect.originalValues);\r\n props.forEach(name => {\r\n entityMemo.pendingChanges[name] = entity.getProperty(name);\r\n });\r\n break;\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './mixin-save-queuing';\n"],"names":[],"mappings":"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"}
|