breeze-client 2.1.2 → 2.1.3-mjs
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/LICENSE +1 -1
- package/adapter-ajax-angularjs/{breeze-client-adapter-ajax-angularjs.d.ts → index.d.ts} +1 -0
- package/adapter-ajax-fetch/{breeze-client-adapter-ajax-fetch.d.ts → index.d.ts} +1 -0
- package/adapter-ajax-httpclient/{breeze-client-adapter-ajax-httpclient.d.ts → index.d.ts} +1 -0
- package/adapter-ajax-jquery/{breeze-client-adapter-ajax-jquery.d.ts → index.d.ts} +1 -0
- package/adapter-ajax-post/{breeze-client-adapter-ajax-post.d.ts → index.d.ts} +1 -0
- package/adapter-data-service-odata/{breeze-client-adapter-data-service-odata.d.ts → index.d.ts} +1 -0
- package/adapter-data-service-webapi/{breeze-client-adapter-data-service-webapi.d.ts → index.d.ts} +1 -0
- package/adapter-model-library-backing-store/{breeze-client-adapter-model-library-backing-store.d.ts → index.d.ts} +1 -0
- package/adapter-model-library-ko/{breeze-client-adapter-model-library-ko.d.ts → index.d.ts} +1 -0
- package/adapter-uri-builder-json/{breeze-client-adapter-uri-builder-json.d.ts → index.d.ts} +1 -0
- package/adapter-uri-builder-odata/{breeze-client-adapter-uri-builder-odata.d.ts → index.d.ts} +1 -0
- package/esm2020/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +130 -0
- package/esm2020/adapter-ajax-angularjs/adapter-core.mjs +49 -0
- package/esm2020/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +5 -0
- package/esm2020/adapter-ajax-fetch/adapter-ajax-fetch.mjs +132 -0
- package/esm2020/adapter-ajax-fetch/adapter-core.mjs +49 -0
- package/esm2020/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +5 -0
- package/esm2020/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +137 -0
- package/esm2020/adapter-ajax-httpclient/adapter-core.mjs +49 -0
- package/esm2020/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +5 -0
- package/esm2020/adapter-ajax-jquery/adapter-ajax-jquery.mjs +103 -0
- package/esm2020/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +5 -0
- package/esm2020/adapter-ajax-post/adapter-ajax-post.mjs +77 -0
- package/esm2020/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +5 -0
- package/esm2020/adapter-data-service-odata/adapter-core.mjs +49 -0
- package/esm2020/adapter-data-service-odata/adapter-data-service-odata.mjs +456 -0
- package/esm2020/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +5 -0
- package/esm2020/adapter-data-service-webapi/adapter-data-service-webapi.mjs +93 -0
- package/esm2020/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +5 -0
- package/esm2020/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +268 -0
- package/esm2020/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +5 -0
- package/esm2020/adapter-model-library-ko/adapter-model-library-ko.mjs +240 -0
- package/esm2020/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +5 -0
- package/esm2020/adapter-uri-builder-json/adapter-core.mjs +49 -0
- package/esm2020/adapter-uri-builder-json/adapter-uri-builder-json.mjs +36 -0
- package/esm2020/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +5 -0
- package/esm2020/adapter-uri-builder-odata/adapter-core.mjs +49 -0
- package/esm2020/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +190 -0
- package/esm2020/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +5 -0
- package/esm2020/breeze-client.mjs +5 -0
- package/esm2020/index.mjs +2 -0
- package/esm2020/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +5 -0
- package/esm2020/mixin-get-entity-graph/mixin-get-entity-graph.mjs +269 -0
- package/esm2020/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +5 -0
- package/esm2020/mixin-save-queuing/mixin-save-queuing.mjs +400 -0
- package/esm2020/src/abstract-data-service-adapter.mjs +296 -0
- package/esm2020/src/array.mjs +4 -0
- package/esm2020/src/assert-param.mjs +312 -0
- package/esm2020/src/breeze.mjs +85 -0
- package/esm2020/src/complex-array.mjs +117 -0
- package/esm2020/src/config.mjs +223 -0
- package/esm2020/src/core.mjs +707 -0
- package/esm2020/src/csdl-metadata-parser.mjs +385 -0
- package/esm2020/src/data-service.mjs +203 -0
- package/esm2020/src/data-type.mjs +444 -0
- package/esm2020/src/default-property-interceptor.mjs +460 -0
- package/esm2020/src/entity-action.mjs +45 -0
- package/esm2020/src/entity-aspect.mjs +806 -0
- package/esm2020/src/entity-group.mjs +187 -0
- package/esm2020/src/entity-key.mjs +116 -0
- package/esm2020/src/entity-manager.mjs +2094 -0
- package/esm2020/src/entity-metadata.mjs +2109 -0
- package/esm2020/src/entity-query.mjs +996 -0
- package/esm2020/src/entity-state.mjs +99 -0
- package/esm2020/src/enum.mjs +141 -0
- package/esm2020/src/event.mjs +256 -0
- package/esm2020/src/interface-registry.mjs +41 -0
- package/esm2020/src/key-generator.mjs +108 -0
- package/esm2020/src/local-query-comparison-options.mjs +65 -0
- package/esm2020/src/mapping-context.mjs +405 -0
- package/esm2020/src/naming-convention.mjs +88 -0
- package/esm2020/src/observable-array.mjs +183 -0
- package/esm2020/src/predicate.mjs +1232 -0
- package/esm2020/src/primitive-array.mjs +85 -0
- package/esm2020/src/query-options.mjs +152 -0
- package/esm2020/src/relation-array.mjs +173 -0
- package/esm2020/src/save-options.mjs +41 -0
- package/esm2020/src/unattached-children-map.mjs +58 -0
- package/esm2020/src/validate.mjs +988 -0
- package/esm2020/src/validation-options.mjs +64 -0
- package/fesm2015/{breeze-client-adapter-ajax-angularjs.js → breeze-client-adapter-ajax-angularjs.mjs} +1 -1
- package/fesm2015/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
- package/fesm2015/{breeze-client-adapter-ajax-fetch.js → breeze-client-adapter-ajax-fetch.mjs} +5 -3
- package/fesm2015/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
- package/fesm2015/{breeze-client-adapter-ajax-httpclient.js → breeze-client-adapter-ajax-httpclient.mjs} +1 -1
- package/fesm2015/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
- package/fesm2015/{breeze-client-adapter-ajax-jquery.js → breeze-client-adapter-ajax-jquery.mjs} +2 -2
- package/fesm2015/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
- package/fesm2015/{breeze-client-adapter-ajax-post.js → breeze-client-adapter-ajax-post.mjs} +1 -1
- package/fesm2015/breeze-client-adapter-ajax-post.mjs.map +1 -0
- package/fesm2015/{breeze-client-adapter-data-service-odata.js → breeze-client-adapter-data-service-odata.mjs} +20 -22
- package/fesm2015/breeze-client-adapter-data-service-odata.mjs.map +1 -0
- package/fesm2015/{breeze-client-adapter-data-service-webapi.js → breeze-client-adapter-data-service-webapi.mjs} +13 -13
- package/fesm2015/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
- package/fesm2015/{breeze-client-adapter-model-library-backing-store.js → breeze-client-adapter-model-library-backing-store.mjs} +13 -13
- package/fesm2015/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
- package/fesm2015/{breeze-client-adapter-model-library-ko.js → breeze-client-adapter-model-library-ko.mjs} +13 -13
- package/fesm2015/breeze-client-adapter-model-library-ko.mjs.map +1 -0
- package/fesm2015/{breeze-client-adapter-uri-builder-json.js → breeze-client-adapter-uri-builder-json.mjs} +8 -8
- package/fesm2015/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
- package/fesm2015/{breeze-client-adapter-uri-builder-odata.js → breeze-client-adapter-uri-builder-odata.mjs} +85 -86
- package/fesm2015/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
- package/fesm2015/{breeze-client-mixin-get-entity-graph.js → breeze-client-mixin-get-entity-graph.mjs} +1 -1
- package/fesm2015/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
- package/fesm2015/{breeze-client-mixin-save-queuing.js → breeze-client-mixin-save-queuing.mjs} +1 -1
- package/fesm2015/breeze-client-mixin-save-queuing.mjs.map +1 -0
- package/fesm2015/{breeze-client.js → breeze-client.mjs} +417 -422
- package/fesm2015/breeze-client.mjs.map +1 -0
- package/{fesm5/breeze-client-adapter-ajax-angularjs.js → fesm2020/breeze-client-adapter-ajax-angularjs.mjs} +41 -42
- package/fesm2020/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
- package/{fesm5/breeze-client-adapter-ajax-fetch.js → fesm2020/breeze-client-adapter-ajax-fetch.mjs} +44 -43
- package/fesm2020/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
- package/{fesm5/breeze-client-adapter-ajax-httpclient.js → fesm2020/breeze-client-adapter-ajax-httpclient.mjs} +43 -44
- package/fesm2020/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
- package/{fesm5/breeze-client-adapter-ajax-jquery.js → fesm2020/breeze-client-adapter-ajax-jquery.mjs} +18 -19
- package/fesm2020/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
- package/{fesm5/breeze-client-adapter-ajax-post.js → fesm2020/breeze-client-adapter-ajax-post.mjs} +8 -11
- package/fesm2020/breeze-client-adapter-ajax-post.mjs.map +1 -0
- package/{fesm5/breeze-client-adapter-data-service-odata.js → fesm2020/breeze-client-adapter-data-service-odata.mjs} +126 -134
- package/fesm2020/breeze-client-adapter-data-service-odata.mjs.map +1 -0
- package/{fesm5/breeze-client-adapter-data-service-webapi.js → fesm2020/breeze-client-adapter-data-service-webapi.mjs} +38 -42
- package/fesm2020/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
- package/{fesm5/breeze-client-adapter-model-library-backing-store.js → fesm2020/breeze-client-adapter-model-library-backing-store.mjs} +63 -64
- package/fesm2020/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
- package/{fesm5/breeze-client-adapter-model-library-ko.js → fesm2020/breeze-client-adapter-model-library-ko.mjs} +57 -58
- package/fesm2020/breeze-client-adapter-model-library-ko.mjs.map +1 -0
- package/fesm2020/breeze-client-adapter-uri-builder-json.mjs +91 -0
- package/fesm2020/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
- package/fesm2020/breeze-client-adapter-uri-builder-odata.mjs +245 -0
- package/fesm2020/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
- package/{fesm5/breeze-client-mixin-get-entity-graph.js → fesm2020/breeze-client-mixin-get-entity-graph.mjs} +45 -45
- package/fesm2020/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
- package/{fesm5/breeze-client-mixin-save-queuing.js → fesm2020/breeze-client-mixin-save-queuing.mjs} +116 -126
- package/fesm2020/breeze-client-mixin-save-queuing.mjs.map +1 -0
- package/{fesm5/breeze-client.js → fesm2020/breeze-client.mjs} +3403 -3615
- package/fesm2020/breeze-client.mjs.map +1 -0
- package/mixin-get-entity-graph/{breeze-client-mixin-get-entity-graph.d.ts → index.d.ts} +1 -0
- package/mixin-save-queuing/{breeze-client-mixin-save-queuing.d.ts → index.d.ts} +1 -0
- package/package.json +126 -12
- package/src/entity-metadata.d.ts +6 -4
- package/src/entity-query.d.ts +1 -1
- package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +0 -1
- package/adapter-ajax-angularjs/package.json +0 -13
- package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +0 -1
- package/adapter-ajax-fetch/package.json +0 -13
- package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +0 -1
- package/adapter-ajax-httpclient/package.json +0 -17
- package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +0 -1
- package/adapter-ajax-jquery/package.json +0 -13
- package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +0 -1
- package/adapter-ajax-post/package.json +0 -13
- package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +0 -1
- package/adapter-data-service-odata/package.json +0 -13
- package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +0 -1
- package/adapter-data-service-webapi/package.json +0 -13
- package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +0 -1
- package/adapter-model-library-backing-store/package.json +0 -13
- package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +0 -1
- package/adapter-model-library-ko/package.json +0 -13
- package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +0 -1
- package/adapter-uri-builder-json/package.json +0 -13
- package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +0 -1
- package/adapter-uri-builder-odata/package.json +0 -13
- package/breeze-client.d.ts +0 -8
- package/breeze-client.metadata.json +0 -1
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +0 -190
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-fetch.umd.js +0 -190
- package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +0 -195
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-jquery.umd.js +0 -115
- package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-post.umd.js +0 -92
- package/bundles/breeze-client-adapter-ajax-post.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-ajax-post.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-data-service-odata.umd.js +0 -743
- package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +0 -16
- package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-data-service-webapi.umd.js +0 -326
- package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +0 -16
- package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +0 -280
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-model-library-ko.umd.js +0 -252
- package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-uri-builder-json.umd.js +0 -96
- package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +0 -1
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +0 -262
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +0 -1
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +0 -2
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +0 -1
- package/bundles/breeze-client-mixin-get-entity-graph.umd.js +0 -258
- package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +0 -1
- package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +0 -2
- package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +0 -1
- package/bundles/breeze-client-mixin-save-queuing.umd.js +0 -579
- package/bundles/breeze-client-mixin-save-queuing.umd.js.map +0 -1
- package/bundles/breeze-client-mixin-save-queuing.umd.min.js +0 -16
- package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +0 -1
- package/bundles/breeze-client.umd.js +0 -14094
- package/bundles/breeze-client.umd.js.map +0 -1
- package/bundles/breeze-client.umd.min.js +0 -16
- package/bundles/breeze-client.umd.min.js.map +0 -1
- package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -130
- package/esm2015/adapter-ajax-angularjs/adapter-core.js +0 -49
- package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
- package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -130
- package/esm2015/adapter-ajax-fetch/adapter-core.js +0 -49
- package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
- package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -137
- package/esm2015/adapter-ajax-httpclient/adapter-core.js +0 -49
- package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
- package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -103
- package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
- package/esm2015/adapter-ajax-post/adapter-ajax-post.js +0 -77
- package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
- package/esm2015/adapter-data-service-odata/adapter-core.js +0 -49
- package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +0 -459
- package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
- package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -93
- package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
- package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -268
- package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
- package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +0 -240
- package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
- package/esm2015/adapter-uri-builder-json/adapter-core.js +0 -49
- package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -36
- package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
- package/esm2015/adapter-uri-builder-odata/adapter-core.js +0 -49
- package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -192
- package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
- package/esm2015/breeze-client.js +0 -9
- package/esm2015/index.js +0 -2
- package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
- package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
- package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
- package/esm2015/mixin-save-queuing/mixin-save-queuing.js +0 -400
- package/esm2015/public_api.js +0 -2
- package/esm2015/src/abstract-data-service-adapter.js +0 -296
- package/esm2015/src/array.js +0 -4
- package/esm2015/src/assert-param.js +0 -312
- package/esm2015/src/breeze.js +0 -85
- package/esm2015/src/complex-array.js +0 -119
- package/esm2015/src/config.js +0 -223
- package/esm2015/src/core.js +0 -706
- package/esm2015/src/csdl-metadata-parser.js +0 -385
- package/esm2015/src/data-service.js +0 -203
- package/esm2015/src/data-type.js +0 -444
- package/esm2015/src/default-property-interceptor.js +0 -459
- package/esm2015/src/entity-action.js +0 -45
- package/esm2015/src/entity-aspect.js +0 -806
- package/esm2015/src/entity-group.js +0 -187
- package/esm2015/src/entity-key.js +0 -116
- package/esm2015/src/entity-manager.js +0 -2094
- package/esm2015/src/entity-metadata.js +0 -2109
- package/esm2015/src/entity-query.js +0 -996
- package/esm2015/src/entity-state.js +0 -99
- package/esm2015/src/enum.js +0 -141
- package/esm2015/src/event.js +0 -256
- package/esm2015/src/interface-registry.js +0 -41
- package/esm2015/src/key-generator.js +0 -108
- package/esm2015/src/local-query-comparison-options.js +0 -65
- package/esm2015/src/mapping-context.js +0 -405
- package/esm2015/src/naming-convention.js +0 -88
- package/esm2015/src/observable-array.js +0 -185
- package/esm2015/src/predicate.js +0 -1235
- package/esm2015/src/primitive-array.js +0 -87
- package/esm2015/src/query-options.js +0 -152
- package/esm2015/src/relation-array.js +0 -175
- package/esm2015/src/save-options.js +0 -41
- package/esm2015/src/unattached-children-map.js +0 -58
- package/esm2015/src/validate.js +0 -991
- package/esm2015/src/validation-options.js +0 -64
- package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -132
- package/esm5/adapter-ajax-angularjs/adapter-core.js +0 -49
- package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
- package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -132
- package/esm5/adapter-ajax-fetch/adapter-core.js +0 -49
- package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
- package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -139
- package/esm5/adapter-ajax-httpclient/adapter-core.js +0 -49
- package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
- package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -105
- package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
- package/esm5/adapter-ajax-post/adapter-ajax-post.js +0 -81
- package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
- package/esm5/adapter-data-service-odata/adapter-core.js +0 -49
- package/esm5/adapter-data-service-odata/adapter-data-service-odata.js +0 -466
- package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
- package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -98
- package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
- package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -270
- package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
- package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +0 -242
- package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
- package/esm5/adapter-uri-builder-json/adapter-core.js +0 -49
- package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -38
- package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
- package/esm5/adapter-uri-builder-odata/adapter-core.js +0 -49
- package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -197
- package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
- package/esm5/breeze-client.js +0 -9
- package/esm5/index.js +0 -2
- package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
- package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
- package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
- package/esm5/mixin-save-queuing/mixin-save-queuing.js +0 -412
- package/esm5/public_api.js +0 -2
- package/esm5/src/abstract-data-service-adapter.js +0 -302
- package/esm5/src/array.js +0 -4
- package/esm5/src/assert-param.js +0 -317
- package/esm5/src/breeze.js +0 -85
- package/esm5/src/complex-array.js +0 -119
- package/esm5/src/config.js +0 -228
- package/esm5/src/core.js +0 -714
- package/esm5/src/csdl-metadata-parser.js +0 -385
- package/esm5/src/data-service.js +0 -207
- package/esm5/src/data-type.js +0 -451
- package/esm5/src/default-property-interceptor.js +0 -459
- package/esm5/src/entity-action.js +0 -52
- package/esm5/src/entity-aspect.js +0 -812
- package/esm5/src/entity-group.js +0 -189
- package/esm5/src/entity-key.js +0 -118
- package/esm5/src/entity-manager.js +0 -2112
- package/esm5/src/entity-metadata.js +0 -2144
- package/esm5/src/entity-query.js +0 -1023
- package/esm5/src/entity-state.js +0 -106
- package/esm5/src/enum.js +0 -144
- package/esm5/src/event.js +0 -259
- package/esm5/src/interface-registry.js +0 -43
- package/esm5/src/key-generator.js +0 -111
- package/esm5/src/local-query-comparison-options.js +0 -67
- package/esm5/src/mapping-context.js +0 -407
- package/esm5/src/naming-convention.js +0 -90
- package/esm5/src/observable-array.js +0 -201
- package/esm5/src/predicate.js +0 -1300
- package/esm5/src/primitive-array.js +0 -87
- package/esm5/src/query-options.js +0 -167
- package/esm5/src/relation-array.js +0 -175
- package/esm5/src/save-options.js +0 -43
- package/esm5/src/unattached-children-map.js +0 -60
- package/esm5/src/validate.js +0 -996
- package/esm5/src/validation-options.js +0 -66
- package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +0 -1
- package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +0 -1
- package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +0 -1
- package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +0 -1
- package/fesm2015/breeze-client-adapter-ajax-post.js.map +0 -1
- package/fesm2015/breeze-client-adapter-data-service-odata.js.map +0 -1
- package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +0 -1
- package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +0 -1
- package/fesm2015/breeze-client-adapter-model-library-ko.js.map +0 -1
- package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +0 -1
- package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +0 -1
- package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +0 -1
- package/fesm2015/breeze-client-mixin-save-queuing.js.map +0 -1
- package/fesm2015/breeze-client.js.map +0 -1
- package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +0 -1
- package/fesm5/breeze-client-adapter-ajax-fetch.js.map +0 -1
- package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +0 -1
- package/fesm5/breeze-client-adapter-ajax-jquery.js.map +0 -1
- package/fesm5/breeze-client-adapter-ajax-post.js.map +0 -1
- package/fesm5/breeze-client-adapter-data-service-odata.js.map +0 -1
- package/fesm5/breeze-client-adapter-data-service-webapi.js.map +0 -1
- package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +0 -1
- package/fesm5/breeze-client-adapter-model-library-ko.js.map +0 -1
- package/fesm5/breeze-client-adapter-uri-builder-json.js +0 -92
- package/fesm5/breeze-client-adapter-uri-builder-json.js.map +0 -1
- package/fesm5/breeze-client-adapter-uri-builder-odata.js +0 -250
- package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +0 -1
- package/fesm5/breeze-client-mixin-get-entity-graph.js.map +0 -1
- package/fesm5/breeze-client-mixin-save-queuing.js.map +0 -1
- package/fesm5/breeze-client.js.map +0 -1
- package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +0 -1
- package/mixin-get-entity-graph/package.json +0 -13
- package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +0 -1
- package/mixin-save-queuing/package.json +0 -13
- package/public_api.d.ts +0 -1
|
@@ -1,39 +1,38 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { core as core$1, JsonResultsAdapter, MetadataStore, config, AutoGeneratedKeyType, DataProperty, AbstractDataServiceAdapter, DataType } from 'breeze-client';
|
|
1
|
+
import * as breeze from 'breeze-client';
|
|
3
2
|
|
|
4
3
|
/** Appends parameter to url, with appropriate delimiter */
|
|
5
4
|
function appendQueryStringParameter(url, parameter) {
|
|
6
5
|
if (!parameter)
|
|
7
6
|
return url;
|
|
8
|
-
|
|
7
|
+
let separator = url.endsWith("?") ? "" : url.includes("?") ? "&" : "?";
|
|
9
8
|
return url + separator + parameter;
|
|
10
9
|
}
|
|
11
10
|
/** Encodes the object into query string parameters */
|
|
12
11
|
function encodeParams(obj) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
for (
|
|
16
|
-
if (!obj.hasOwnProperty(
|
|
12
|
+
let query = '';
|
|
13
|
+
let subValue, innerObj, fullSubName;
|
|
14
|
+
for (let name in obj) {
|
|
15
|
+
if (!obj.hasOwnProperty(name)) {
|
|
17
16
|
continue;
|
|
18
17
|
}
|
|
19
|
-
|
|
18
|
+
let value = obj[name];
|
|
20
19
|
if (value instanceof Array) {
|
|
21
|
-
for (
|
|
20
|
+
for (let i = 0; i < value.length; ++i) {
|
|
22
21
|
subValue = value[i];
|
|
23
|
-
fullSubName =
|
|
22
|
+
fullSubName = name + '[' + i + ']';
|
|
24
23
|
innerObj = {};
|
|
25
24
|
innerObj[fullSubName] = subValue;
|
|
26
25
|
query += encodeParams(innerObj) + '&';
|
|
27
26
|
}
|
|
28
27
|
}
|
|
29
28
|
else if (value && value.toISOString) { // a feature of Date-like things
|
|
30
|
-
query += encodeURIComponent(
|
|
29
|
+
query += encodeURIComponent(name) + '=' + encodeURIComponent(value.toISOString()) + '&';
|
|
31
30
|
}
|
|
32
31
|
else if (value instanceof Object) {
|
|
33
|
-
for (
|
|
34
|
-
if (obj.hasOwnProperty(
|
|
32
|
+
for (let subName in value) {
|
|
33
|
+
if (obj.hasOwnProperty(name)) {
|
|
35
34
|
subValue = value[subName];
|
|
36
|
-
fullSubName =
|
|
35
|
+
fullSubName = name + '[' + subName + ']';
|
|
37
36
|
innerObj = {};
|
|
38
37
|
innerObj[fullSubName] = subValue;
|
|
39
38
|
query += encodeParams(innerObj) + '&';
|
|
@@ -41,36 +40,35 @@ function encodeParams(obj) {
|
|
|
41
40
|
}
|
|
42
41
|
}
|
|
43
42
|
else if (value === null) {
|
|
44
|
-
query += encodeURIComponent(
|
|
43
|
+
query += encodeURIComponent(name) + '=&';
|
|
45
44
|
}
|
|
46
45
|
else if (value !== undefined) {
|
|
47
|
-
query += encodeURIComponent(
|
|
46
|
+
query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';
|
|
48
47
|
}
|
|
49
48
|
}
|
|
50
49
|
return query.length ? query.substr(0, query.length - 1) : query;
|
|
51
50
|
}
|
|
52
51
|
|
|
53
|
-
|
|
52
|
+
let core = breeze.core;
|
|
54
53
|
/** @hidden */
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
var _this = _super.call(this) || this;
|
|
54
|
+
class DataServiceODataAdapter extends breeze.AbstractDataServiceAdapter {
|
|
55
|
+
constructor() {
|
|
56
|
+
super();
|
|
59
57
|
// _catchNoConnectionError = abstractDsaProto._catchNoConnectionError;
|
|
60
58
|
// changeRequestInterceptor = abstractDsaProto.changeRequestInterceptor;
|
|
61
59
|
// _createChangeRequestInterceptor = abstractDsaProto._createChangeRequestInterceptor;
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
this.headers = { "DataServiceVersion": "2.0" };
|
|
61
|
+
this.jsonResultsAdapter = new breeze.JsonResultsAdapter({
|
|
64
62
|
name: "OData_default",
|
|
65
63
|
visitNode: function (node, mappingContext, nodeContext) {
|
|
66
|
-
|
|
64
|
+
let result = {};
|
|
67
65
|
if (node == null)
|
|
68
66
|
return result;
|
|
69
|
-
|
|
67
|
+
let metadata = node.__metadata;
|
|
70
68
|
if (metadata != null) {
|
|
71
69
|
// TODO: may be able to make this more efficient by caching of the previous value.
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
let entityTypeName = breeze.MetadataStore.normalizeTypeName(metadata.type);
|
|
71
|
+
let et = entityTypeName && mappingContext.entityManager.metadataStore.getEntityType(entityTypeName, true);
|
|
74
72
|
// OData response doesn't distinguish a projection from a whole entity.
|
|
75
73
|
// We'll assume that whole-entity data would have at least as many properties (<=)
|
|
76
74
|
// as the EntityType has mapped properties on the basis that
|
|
@@ -79,11 +77,11 @@ var DataServiceODataAdapter = /** @class */ (function (_super) {
|
|
|
79
77
|
if (et && et._mappedPropertiesCount <= Object.keys(node).length - 1) {
|
|
80
78
|
// if (et && et._mappedPropertiesCount === Object.keys(node).length - 1) { // OLD
|
|
81
79
|
result.entityType = et;
|
|
82
|
-
|
|
80
|
+
let uriKey = metadata.uri || metadata.id;
|
|
83
81
|
if (uriKey) {
|
|
84
82
|
// Strip baseUri to make uriKey a relative uri
|
|
85
83
|
// Todo: why is this necessary when absolute works for every OData source tested?
|
|
86
|
-
|
|
84
|
+
let re = new RegExp('^' + mappingContext.dataService.serviceName, 'i');
|
|
87
85
|
uriKey = uriKey.replace(re, '');
|
|
88
86
|
}
|
|
89
87
|
result.extraMetadata = {
|
|
@@ -96,25 +94,24 @@ var DataServiceODataAdapter = /** @class */ (function (_super) {
|
|
|
96
94
|
if (node.results) {
|
|
97
95
|
result.node = node.results;
|
|
98
96
|
}
|
|
99
|
-
|
|
97
|
+
let propertyName = nodeContext.propertyName;
|
|
100
98
|
result.ignore = node.__deferred != null || propertyName === "__metadata" ||
|
|
101
99
|
// EntityKey properties can be produced by EDMX models
|
|
102
100
|
(propertyName === "EntityKey" && node.$type && core.stringStartsWith(node.$type, "System.Data"));
|
|
103
101
|
return result;
|
|
104
102
|
}
|
|
105
103
|
});
|
|
106
|
-
|
|
107
|
-
return _this;
|
|
104
|
+
this.name = "OData";
|
|
108
105
|
}
|
|
109
|
-
|
|
110
|
-
config
|
|
111
|
-
config
|
|
112
|
-
return config
|
|
113
|
-
}
|
|
114
|
-
|
|
106
|
+
static register(config) {
|
|
107
|
+
config = config || breeze.config;
|
|
108
|
+
config.registerAdapter("dataService", DataServiceODataAdapter);
|
|
109
|
+
return config.initializeAdapterInstance("dataService", "OData", true);
|
|
110
|
+
}
|
|
111
|
+
initialize() {
|
|
115
112
|
OData = core.requireLib("OData", "Needed to support remote OData services");
|
|
116
113
|
OData.jsonHandler.recognizeDates = true;
|
|
117
|
-
}
|
|
114
|
+
}
|
|
118
115
|
// Absolute URL is the default as of Breeze 1.5.5.
|
|
119
116
|
// To use relative URL (like pre-1.5.5), add adapterInstance.relativeUrl = true:
|
|
120
117
|
//
|
|
@@ -128,9 +125,9 @@ var DataServiceODataAdapter = /** @class */ (function (_super) {
|
|
|
128
125
|
// return somehowConvert(url);
|
|
129
126
|
// }
|
|
130
127
|
//
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
128
|
+
fetchMetadata(metadataStore, dataService) {
|
|
129
|
+
let serviceName = dataService.serviceName;
|
|
130
|
+
let url;
|
|
134
131
|
if (this.relativeUrl === true) {
|
|
135
132
|
url = dataService.qualifyUrl('$metadata');
|
|
136
133
|
}
|
|
@@ -140,9 +137,9 @@ var DataServiceODataAdapter = /** @class */ (function (_super) {
|
|
|
140
137
|
else {
|
|
141
138
|
url = this.getAbsoluteUrl(dataService, '$metadata');
|
|
142
139
|
}
|
|
143
|
-
|
|
140
|
+
let mheaders = core.extend({}, this.headers);
|
|
144
141
|
mheaders.Accept = 'application/*; odata.metadata=full';
|
|
145
|
-
|
|
142
|
+
let promise = new Promise((resolve, reject) => {
|
|
146
143
|
// OData.read(url,
|
|
147
144
|
OData.read({
|
|
148
145
|
requestUri: url,
|
|
@@ -152,10 +149,10 @@ var DataServiceODataAdapter = /** @class */ (function (_super) {
|
|
|
152
149
|
// data.dataServices.schema is an array of schemas. with properties of
|
|
153
150
|
// entityContainer[], association[], entityType[], and namespace.
|
|
154
151
|
if (!data || !data.dataServices) {
|
|
155
|
-
|
|
152
|
+
let error = new Error("Metadata query failed for: " + url);
|
|
156
153
|
return reject(error);
|
|
157
154
|
}
|
|
158
|
-
|
|
155
|
+
let csdlMetadata = data.dataServices;
|
|
159
156
|
// might have been fetched by another query
|
|
160
157
|
if (!metadataStore.hasMetadataFor(serviceName)) {
|
|
161
158
|
try {
|
|
@@ -168,16 +165,15 @@ var DataServiceODataAdapter = /** @class */ (function (_super) {
|
|
|
168
165
|
}
|
|
169
166
|
return resolve(csdlMetadata);
|
|
170
167
|
}, function (error) {
|
|
171
|
-
|
|
168
|
+
let err = createError(error, url);
|
|
172
169
|
err.message = "Metadata query failed for: " + url + "; " + (err.message || "");
|
|
173
170
|
return reject(err);
|
|
174
171
|
}, OData.metadataHandler);
|
|
175
172
|
});
|
|
176
173
|
return promise;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
var url;
|
|
174
|
+
}
|
|
175
|
+
executeQuery(mappingContext) {
|
|
176
|
+
let url;
|
|
181
177
|
if (this.relativeUrl === true) {
|
|
182
178
|
url = mappingContext.getUrl();
|
|
183
179
|
}
|
|
@@ -188,17 +184,17 @@ var DataServiceODataAdapter = /** @class */ (function (_super) {
|
|
|
188
184
|
url = this.getAbsoluteUrl(mappingContext.dataService, mappingContext.getUrl());
|
|
189
185
|
}
|
|
190
186
|
// Add query params if .withParameters was used
|
|
191
|
-
|
|
187
|
+
let query = mappingContext.query;
|
|
192
188
|
if (!core.isEmpty(query.parameters)) {
|
|
193
|
-
|
|
189
|
+
let paramString = toQueryString(query.parameters);
|
|
194
190
|
url = appendQueryStringParameter(url, paramString);
|
|
195
191
|
}
|
|
196
|
-
|
|
192
|
+
let promise = new Promise((resolve, reject) => {
|
|
197
193
|
OData.read({
|
|
198
194
|
requestUri: url,
|
|
199
|
-
headers: core.extend({},
|
|
195
|
+
headers: core.extend({}, this.headers)
|
|
200
196
|
}, function (data, response) {
|
|
201
|
-
|
|
197
|
+
let inlineCount;
|
|
202
198
|
if (data.__count) {
|
|
203
199
|
// OData can return data.__count as a string
|
|
204
200
|
inlineCount = parseInt(data.__count, 10);
|
|
@@ -206,7 +202,7 @@ var DataServiceODataAdapter = /** @class */ (function (_super) {
|
|
|
206
202
|
// Odata returns different result structure when it returns multiple entities (data.results) vs single entity (data directly).
|
|
207
203
|
// @see http://www.odata.org/documentation/odata-version-2-0/json-format/#RepresentingCollectionsOfEntries
|
|
208
204
|
// and http://www.odata.org/documentation/odata-version-2-0/json-format/#RepresentingEntries
|
|
209
|
-
|
|
205
|
+
let results;
|
|
210
206
|
if (data.results) {
|
|
211
207
|
results = data.results;
|
|
212
208
|
}
|
|
@@ -219,12 +215,11 @@ var DataServiceODataAdapter = /** @class */ (function (_super) {
|
|
|
219
215
|
});
|
|
220
216
|
});
|
|
221
217
|
return promise;
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
var url;
|
|
218
|
+
}
|
|
219
|
+
saveChanges(odataSaveContext, saveBundle) {
|
|
220
|
+
let adapter = odataSaveContext.adapter = this;
|
|
221
|
+
let saveContext = odataSaveContext;
|
|
222
|
+
let url;
|
|
228
223
|
if (this.relativeUrl === true) {
|
|
229
224
|
saveContext.routePrefix = adapter.getRoutePrefix(saveContext.dataService);
|
|
230
225
|
url = saveContext.dataService.qualifyUrl("$batch");
|
|
@@ -237,48 +232,48 @@ var DataServiceODataAdapter = /** @class */ (function (_super) {
|
|
|
237
232
|
saveContext.routePrefix = adapter.getAbsoluteUrl(saveContext.dataService, '');
|
|
238
233
|
url = saveContext.routePrefix + '$batch';
|
|
239
234
|
}
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
235
|
+
let requestData = createChangeRequests(saveContext, saveBundle);
|
|
236
|
+
let tempKeys = saveContext.tempKeys;
|
|
237
|
+
let contentKeys = saveContext.contentKeys;
|
|
238
|
+
let promise = new Promise((resolve, reject) => {
|
|
244
239
|
OData.request({
|
|
245
|
-
headers: core.extend({},
|
|
240
|
+
headers: core.extend({}, this.headers),
|
|
246
241
|
requestUri: url,
|
|
247
242
|
method: "POST",
|
|
248
243
|
data: requestData
|
|
249
244
|
}, function (data, response) {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
245
|
+
let entities = [];
|
|
246
|
+
let keyMappings = [];
|
|
247
|
+
let saveResult = { entities: entities, keyMappings: keyMappings };
|
|
253
248
|
data.__batchResponses.forEach(function (br) {
|
|
254
249
|
br.__changeResponses.forEach(function (cr) {
|
|
255
|
-
|
|
256
|
-
|
|
250
|
+
let response = cr.response || cr;
|
|
251
|
+
let statusCode = response.statusCode;
|
|
257
252
|
if ((!statusCode) || statusCode >= 400) {
|
|
258
253
|
reject(createError(cr, url));
|
|
259
254
|
return;
|
|
260
255
|
}
|
|
261
|
-
|
|
256
|
+
let contentId = cr.headers["Content-ID"];
|
|
262
257
|
// Olingo sends different case of 'ID' for the header name.
|
|
263
258
|
if (!contentId) {
|
|
264
259
|
contentId = cr.headers["Content-Id"];
|
|
265
260
|
}
|
|
266
|
-
|
|
261
|
+
let rawEntity = cr.data;
|
|
267
262
|
if (rawEntity) {
|
|
268
|
-
|
|
263
|
+
let tempKey = tempKeys[contentId];
|
|
269
264
|
if (tempKey) {
|
|
270
|
-
|
|
271
|
-
if (entityType.autoGeneratedKeyType !== AutoGeneratedKeyType.None) {
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
265
|
+
let entityType = tempKey.entityType;
|
|
266
|
+
if (entityType.autoGeneratedKeyType !== breeze.AutoGeneratedKeyType.None) {
|
|
267
|
+
let tempValue = tempKey.values[0];
|
|
268
|
+
let realKey = entityType.getEntityKeyFromRawEntity(rawEntity, breeze.DataProperty.getRawValueFromServer);
|
|
269
|
+
let keyMapping = { entityTypeName: entityType.name, tempValue: tempValue, realValue: realKey.values[0] };
|
|
275
270
|
keyMappings.push(keyMapping);
|
|
276
271
|
}
|
|
277
272
|
}
|
|
278
273
|
entities.push(rawEntity);
|
|
279
274
|
}
|
|
280
275
|
else {
|
|
281
|
-
|
|
276
|
+
let origEntity = contentKeys[contentId];
|
|
282
277
|
entities.push(origEntity);
|
|
283
278
|
}
|
|
284
279
|
});
|
|
@@ -289,11 +284,11 @@ var DataServiceODataAdapter = /** @class */ (function (_super) {
|
|
|
289
284
|
}, OData.batchHandler);
|
|
290
285
|
});
|
|
291
286
|
return promise;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
|
|
287
|
+
}
|
|
288
|
+
getAbsoluteUrl(dataService, url) {
|
|
289
|
+
let serviceName = dataService.qualifyUrl('');
|
|
295
290
|
// only prefix with serviceName if not already on the url
|
|
296
|
-
|
|
291
|
+
let base = (core.stringStartsWith(url, serviceName)) ? '' : serviceName;
|
|
297
292
|
// If no protocol, turn base into an absolute URI
|
|
298
293
|
if (window && serviceName.indexOf('//') < 0) {
|
|
299
294
|
// no protocol; make it absolute
|
|
@@ -302,14 +297,14 @@ var DataServiceODataAdapter = /** @class */ (function (_super) {
|
|
|
302
297
|
base;
|
|
303
298
|
}
|
|
304
299
|
return base + url;
|
|
305
|
-
}
|
|
306
|
-
|
|
300
|
+
}
|
|
301
|
+
getRoutePrefix(dataService) {
|
|
307
302
|
// Get the routePrefix from a Web API OData service name.
|
|
308
303
|
// The routePrefix is presumed to be the pathname within the dataService.serviceName
|
|
309
304
|
// Examples of servicename -> routePrefix:
|
|
310
305
|
// 'http://localhost:55802/odata/' -> 'odata/'
|
|
311
306
|
// 'http://198.154.121.75/service/odata/' -> 'service/odata/'
|
|
312
|
-
|
|
307
|
+
let parser;
|
|
313
308
|
if (typeof document === 'object') { // browser
|
|
314
309
|
parser = document.createElement('a');
|
|
315
310
|
parser.href = dataService.serviceName;
|
|
@@ -319,7 +314,7 @@ var DataServiceODataAdapter = /** @class */ (function (_super) {
|
|
|
319
314
|
// assumes existence of node's url.parse method.
|
|
320
315
|
parser = url.parse(dataService.serviceName);
|
|
321
316
|
}
|
|
322
|
-
|
|
317
|
+
let prefix = parser.pathname;
|
|
323
318
|
if (prefix[0] === '/') {
|
|
324
319
|
prefix = prefix.substr(1);
|
|
325
320
|
} // drop leading '/' (all but IE)
|
|
@@ -327,13 +322,12 @@ var DataServiceODataAdapter = /** @class */ (function (_super) {
|
|
|
327
322
|
prefix += '/';
|
|
328
323
|
} // ensure trailing '/'
|
|
329
324
|
return prefix;
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
}(AbstractDataServiceAdapter));
|
|
325
|
+
}
|
|
326
|
+
}
|
|
333
327
|
// crude serializer. Doesn't recurse
|
|
334
328
|
function toQueryString(obj) {
|
|
335
|
-
|
|
336
|
-
for (
|
|
329
|
+
let parts = [];
|
|
330
|
+
for (let i in obj) {
|
|
337
331
|
if (obj.hasOwnProperty(i)) {
|
|
338
332
|
parts.push(encodeURIComponent(i) + "=" + encodeURIComponent(obj[i]));
|
|
339
333
|
}
|
|
@@ -343,7 +337,7 @@ function toQueryString(obj) {
|
|
|
343
337
|
function transformValue(prop, val) {
|
|
344
338
|
if (prop.isUnmapped)
|
|
345
339
|
return undefined;
|
|
346
|
-
if (prop.dataType === DataType.DateTimeOffset) {
|
|
340
|
+
if (prop.dataType === breeze.DataType.DateTimeOffset) {
|
|
347
341
|
// The datajs lib tries to treat client dateTimes that are defined as DateTimeOffset on the server differently
|
|
348
342
|
// from other dateTimes. This fix compensates before the save.
|
|
349
343
|
val = val && new Date(val.getTime() - (val.getTimezoneOffset() * 60000));
|
|
@@ -354,18 +348,18 @@ function transformValue(prop, val) {
|
|
|
354
348
|
return val;
|
|
355
349
|
}
|
|
356
350
|
function createChangeRequests(saveContext, saveBundle) {
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
351
|
+
let changeRequestInterceptor = saveContext.adapter._createChangeRequestInterceptor(saveContext, saveBundle);
|
|
352
|
+
let changeRequests = [];
|
|
353
|
+
let tempKeys = [];
|
|
354
|
+
let contentKeys = [];
|
|
355
|
+
let entityManager = saveContext.entityManager;
|
|
356
|
+
let helper = entityManager.helper;
|
|
357
|
+
let id = 0;
|
|
358
|
+
let routePrefix = saveContext.routePrefix;
|
|
365
359
|
saveBundle.entities.forEach(function (entity, index) {
|
|
366
|
-
|
|
360
|
+
let aspect = entity.entityAspect;
|
|
367
361
|
id = id + 1; // we are deliberately skipping id=0 because Content-ID = 0 seems to be ignored.
|
|
368
|
-
|
|
362
|
+
let request = { headers: { "Content-ID": id, "DataServiceVersion": "2.0" } };
|
|
369
363
|
contentKeys[id] = entity;
|
|
370
364
|
if (aspect.entityState.isAdded()) {
|
|
371
365
|
request.requestUri = routePrefix + entity.entityType.defaultResourceName;
|
|
@@ -401,8 +395,8 @@ function createChangeRequests(saveContext, saveBundle) {
|
|
|
401
395
|
};
|
|
402
396
|
}
|
|
403
397
|
function updateDeleteMergeRequest(request, aspect, routePrefix) {
|
|
404
|
-
|
|
405
|
-
|
|
398
|
+
let uriKey;
|
|
399
|
+
let extraMetadata = aspect.extraMetadata;
|
|
406
400
|
if (extraMetadata == null) {
|
|
407
401
|
uriKey = getUriKey(aspect);
|
|
408
402
|
aspect.extraMetadata = {
|
|
@@ -420,18 +414,18 @@ function updateDeleteMergeRequest(request, aspect, routePrefix) {
|
|
|
420
414
|
uriKey.indexOf('//') > 0 ? uriKey : routePrefix + uriKey;
|
|
421
415
|
}
|
|
422
416
|
function getUriKey(aspect) {
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
417
|
+
let entityType = aspect.entity.entityType;
|
|
418
|
+
let resourceName = entityType.defaultResourceName;
|
|
419
|
+
let kps = entityType.keyProperties;
|
|
420
|
+
let uriKey = resourceName + "(";
|
|
427
421
|
if (kps.length === 1) {
|
|
428
422
|
uriKey = uriKey + fmtProperty(kps[0], aspect) + ")";
|
|
429
423
|
}
|
|
430
424
|
else {
|
|
431
|
-
|
|
425
|
+
let delim = "";
|
|
432
426
|
kps.forEach(function (kp) {
|
|
433
|
-
uriKey = uriKey +
|
|
434
|
-
|
|
427
|
+
uriKey = uriKey + delim + kp.nameOnServer + "=" + fmtProperty(kp, aspect);
|
|
428
|
+
delim = ",";
|
|
435
429
|
});
|
|
436
430
|
uriKey = uriKey + ")";
|
|
437
431
|
}
|
|
@@ -443,8 +437,8 @@ function fmtProperty(prop, aspect) {
|
|
|
443
437
|
function createError(error, url) {
|
|
444
438
|
// OData errors can have the message buried very deeply - and nonobviously
|
|
445
439
|
// this code is tricky so be careful changing the response.body parsing.
|
|
446
|
-
|
|
447
|
-
|
|
440
|
+
let result = new Error();
|
|
441
|
+
let response = error && error.response;
|
|
448
442
|
if (!response) {
|
|
449
443
|
// in case DataJS returns "No handler for this data"
|
|
450
444
|
result.message = error;
|
|
@@ -459,15 +453,15 @@ function createError(error, url) {
|
|
|
459
453
|
result.url = url;
|
|
460
454
|
result.body = response.body;
|
|
461
455
|
if (response.body) {
|
|
462
|
-
|
|
456
|
+
let nextErr;
|
|
463
457
|
try {
|
|
464
|
-
|
|
458
|
+
let body = JSON.parse(response.body);
|
|
465
459
|
result.body = body;
|
|
466
460
|
// OData v3 logic
|
|
467
461
|
if (body['odata.error']) {
|
|
468
462
|
body = body['odata.error'];
|
|
469
463
|
}
|
|
470
|
-
|
|
464
|
+
let msg = "";
|
|
471
465
|
do {
|
|
472
466
|
nextErr = body.error || body.innererror;
|
|
473
467
|
if (!nextErr)
|
|
@@ -482,38 +476,36 @@ function createError(error, url) {
|
|
|
482
476
|
catch (e) {
|
|
483
477
|
}
|
|
484
478
|
}
|
|
485
|
-
AbstractDataServiceAdapter._catchNoConnectionError(result);
|
|
479
|
+
breeze.AbstractDataServiceAdapter._catchNoConnectionError(result);
|
|
486
480
|
return result;
|
|
487
481
|
}
|
|
488
482
|
function getMessage(body) {
|
|
489
|
-
|
|
483
|
+
let msg = body.message || "";
|
|
490
484
|
return ((typeof (msg) === "string") ? msg : msg.value) + "; ";
|
|
491
485
|
}
|
|
492
|
-
config.registerAdapter("dataService", DataServiceODataAdapter);
|
|
493
|
-
|
|
486
|
+
breeze.config.registerAdapter("dataService", DataServiceODataAdapter);
|
|
487
|
+
let webApiODataCtor = function () {
|
|
494
488
|
this.name = "webApiOData";
|
|
495
489
|
};
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
config.registerAdapter("dataService", webApiODataCtor);
|
|
490
|
+
breeze.core.extend(webApiODataCtor.prototype, DataServiceODataAdapter.prototype);
|
|
491
|
+
breeze.config.registerAdapter("dataService", webApiODataCtor);
|
|
499
492
|
// OData 4 adapter
|
|
500
|
-
|
|
493
|
+
let webApiOData4Ctor = function () {
|
|
501
494
|
this.name = "webApiOData4";
|
|
502
495
|
};
|
|
503
|
-
|
|
504
|
-
core$1.extend(webApiOData4Ctor.prototype, webApiODataCtor.prototype);
|
|
496
|
+
breeze.core.extend(webApiOData4Ctor.prototype, webApiODataCtor.prototype);
|
|
505
497
|
webApiOData4Ctor.prototype.initialize = function () {
|
|
506
498
|
// Aargh... they moved the cheese.
|
|
507
|
-
|
|
499
|
+
let datajs = core.requireLib("datajs", "Needed to support remote OData v4 services");
|
|
508
500
|
OData = datajs.V4.oData;
|
|
509
501
|
OData.json.jsonHandler.recognizeDates = true;
|
|
510
502
|
};
|
|
511
503
|
webApiOData4Ctor.prototype.headers = { "OData-Version": "4.0" };
|
|
512
|
-
config.registerAdapter("dataService", webApiOData4Ctor);
|
|
504
|
+
breeze.config.registerAdapter("dataService", webApiOData4Ctor);
|
|
513
505
|
|
|
514
506
|
/**
|
|
515
507
|
* Generated bundle index. Do not edit.
|
|
516
508
|
*/
|
|
517
509
|
|
|
518
|
-
export { DataServiceODataAdapter
|
|
519
|
-
//# sourceMappingURL=breeze-client-adapter-data-service-odata.
|
|
510
|
+
export { DataServiceODataAdapter };
|
|
511
|
+
//# sourceMappingURL=breeze-client-adapter-data-service-odata.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"breeze-client-adapter-data-service-odata.mjs","sources":["../../src/adapter-core.ts","../../src/adapter-data-service-odata.ts","../../src/breeze-client-adapter-data-service-odata.ts"],"sourcesContent":["/** Appends parameter to url, with appropriate delimiter */\r\nexport function appendQueryStringParameter(url: string, parameter: string) {\r\n if (!parameter) return url;\r\n\r\n let separator = url.endsWith(\"?\") ? \"\" : url.includes(\"?\") ? \"&\" : \"?\";\r\n\r\n return url + separator + parameter;\r\n}\r\n\r\n/** Encodes the object into query string parameters */\r\nexport function encodeParams(obj: {}) {\r\n let query = '';\r\n let subValue: any, innerObj: any, fullSubName: any;\r\n\r\n for (let name in obj) {\r\n if (!obj.hasOwnProperty(name)) { continue; }\r\n\r\n let value = obj[name];\r\n\r\n if (value instanceof Array) {\r\n for (let i = 0; i < value.length; ++i) {\r\n subValue = value[i];\r\n fullSubName = name + '[' + i + ']';\r\n innerObj = {};\r\n innerObj[fullSubName] = subValue;\r\n query += encodeParams(innerObj) + '&';\r\n }\r\n } else if (value && value.toISOString) { // a feature of Date-like things\r\n query += encodeURIComponent(name) + '=' + encodeURIComponent(value.toISOString()) + '&';\r\n } else if (value instanceof Object) {\r\n for (let subName in value) {\r\n if (obj.hasOwnProperty(name)) {\r\n subValue = value[subName];\r\n fullSubName = name + '[' + subName + ']';\r\n innerObj = {};\r\n innerObj[fullSubName] = subValue;\r\n query += encodeParams(innerObj) + '&';\r\n }\r\n }\r\n } else if (value === null) {\r\n query += encodeURIComponent(name) + '=&';\r\n } else if (value !== undefined) {\r\n query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';\r\n }\r\n }\r\n\r\n return query.length ? query.substr(0, query.length - 1) : query;\r\n}\r\n","import * as breeze from 'breeze-client';\r\nimport { appendQueryStringParameter } from './adapter-core';\r\n\r\nlet core = breeze.core;\r\n\r\ndeclare var window: any;\r\ndeclare var document: any;\r\ndeclare var url: any; // needed to access node's url.parse\r\ndeclare var OData: any;\r\n\r\ninterface ODataSaveContext extends breeze.SaveContext {\r\n tempKeys: breeze.EntityKey[];\r\n contentKeys: breeze.Entity[];\r\n}\r\n\r\n/** @hidden */\r\nexport class DataServiceODataAdapter extends breeze.AbstractDataServiceAdapter {\r\n name: string;\r\n relativeUrl: boolean | ((ds: breeze.DataService, url: string) => string);\r\n // _catchNoConnectionError = abstractDsaProto._catchNoConnectionError;\r\n // changeRequestInterceptor = abstractDsaProto.changeRequestInterceptor;\r\n // _createChangeRequestInterceptor = abstractDsaProto._createChangeRequestInterceptor;\r\n headers = { \"DataServiceVersion\": \"2.0\" };\r\n\r\n constructor() {\r\n super();\r\n this.name = \"OData\";\r\n }\r\n\r\n static register(config?: breeze.BreezeConfig) {\r\n config = config || breeze.config;\r\n config.registerAdapter(\"dataService\", DataServiceODataAdapter);\r\n return config.initializeAdapterInstance(\"dataService\", \"OData\", true) as DataServiceODataAdapter;\r\n }\r\n\r\n initialize() {\r\n OData = core.requireLib(\"OData\", \"Needed to support remote OData services\");\r\n OData.jsonHandler.recognizeDates = true;\r\n }\r\n\r\n\r\n // Absolute URL is the default as of Breeze 1.5.5. \r\n // To use relative URL (like pre-1.5.5), add adapterInstance.relativeUrl = true:\r\n //\r\n // let ds = breeze.config.initializeAdapterInstance(\"dataService\", \"webApiOData\");\r\n // ds.relativeUrl = true; \r\n //\r\n // To use custom url construction, add adapterInstance.relativeUrl = myfunction(dataService, url):\r\n //\r\n // let ds = breeze.config.initializeAdapterInstance(\"dataService\", \"webApiOData\");\r\n // ds.relativeUrl = function(dataService, url) {\r\n // return somehowConvert(url);\r\n // }\r\n //\r\n\r\n fetchMetadata(metadataStore: breeze.MetadataStore, dataService: breeze.DataService) {\r\n let serviceName = dataService.serviceName;\r\n\r\n let url: string;\r\n if (this.relativeUrl === true) {\r\n url = dataService.qualifyUrl('$metadata');\r\n } else if (core.isFunction(this.relativeUrl)) {\r\n url = (this.relativeUrl as any)(dataService, '$metadata');\r\n } else {\r\n url = this.getAbsoluteUrl(dataService, '$metadata');\r\n }\r\n\r\n let mheaders = core.extend({}, this.headers);\r\n (mheaders as any).Accept = 'application/*; odata.metadata=full';\r\n\r\n let promise = new Promise((resolve, reject) => {\r\n // OData.read(url,\r\n OData.read({\r\n requestUri: url,\r\n // headers: { \"Accept\": \"application/json\"}\r\n headers: mheaders\r\n },\r\n function (data: any) {\r\n // data.dataServices.schema is an array of schemas. with properties of\r\n // entityContainer[], association[], entityType[], and namespace.\r\n if (!data || !data.dataServices) {\r\n let error = new Error(\"Metadata query failed for: \" + url);\r\n return reject(error);\r\n }\r\n let csdlMetadata = data.dataServices;\r\n\r\n // might have been fetched by another query\r\n if (!metadataStore.hasMetadataFor(serviceName)) {\r\n try {\r\n metadataStore.importMetadata(csdlMetadata);\r\n } catch (e) {\r\n return reject(new Error(\"Metadata query failed for \" + url + \"; Unable to process returned metadata: \" + e.message));\r\n }\r\n\r\n metadataStore.addDataService(dataService);\r\n }\r\n\r\n return resolve(csdlMetadata);\r\n\r\n }, function (error: any) {\r\n let err = createError(error, url);\r\n err.message = \"Metadata query failed for: \" + url + \"; \" + (err.message || \"\");\r\n return reject(err);\r\n },\r\n OData.metadataHandler\r\n );\r\n });\r\n\r\n return promise;\r\n }\r\n\r\n\r\n\r\n executeQuery(mappingContext: breeze.MappingContext) {\r\n let url: string;\r\n if (this.relativeUrl === true) {\r\n url = mappingContext.getUrl();\r\n } else if (core.isFunction(this.relativeUrl)) {\r\n url = (this.relativeUrl as any)(mappingContext.dataService, mappingContext.getUrl());\r\n } else {\r\n url = this.getAbsoluteUrl(mappingContext.dataService, mappingContext.getUrl());\r\n }\r\n\r\n // Add query params if .withParameters was used\r\n let query = mappingContext.query as breeze.EntityQuery;\r\n if (!core.isEmpty(query.parameters)) {\r\n let paramString = toQueryString(query.parameters);\r\n url = appendQueryStringParameter(url, paramString);\r\n }\r\n\r\n let promise = new Promise<breeze.QueryResult>((resolve, reject) => {\r\n OData.read({\r\n requestUri: url,\r\n headers: core.extend({}, this.headers)\r\n },\r\n function (data: any, response: any) {\r\n let inlineCount: any;\r\n if (data.__count) {\r\n // OData can return data.__count as a string\r\n inlineCount = parseInt(data.__count, 10);\r\n }\r\n // Odata returns different result structure when it returns multiple entities (data.results) vs single entity (data directly).\r\n // @see http://www.odata.org/documentation/odata-version-2-0/json-format/#RepresentingCollectionsOfEntries\r\n // and http://www.odata.org/documentation/odata-version-2-0/json-format/#RepresentingEntries\r\n let results: any;\r\n if (data.results) {\r\n results = data.results;\r\n } else {\r\n results = data;\r\n }\r\n return resolve({ results: results, inlineCount: inlineCount, httpResponse: response, query: query });\r\n },\r\n function (error: any) {\r\n return reject(createError(error, url));\r\n }\r\n );\r\n });\r\n return promise;\r\n }\r\n\r\n\r\n saveChanges(odataSaveContext: breeze.SaveContext, saveBundle: breeze.SaveBundle): Promise<breeze.SaveResult> {\r\n let adapter = odataSaveContext.adapter = this;\r\n let saveContext = odataSaveContext as ODataSaveContext;\r\n let url: string;\r\n if (this.relativeUrl === true) {\r\n saveContext.routePrefix = adapter.getRoutePrefix(saveContext.dataService);\r\n url = saveContext.dataService.qualifyUrl(\"$batch\");\r\n } else if (core.isFunction(adapter.relativeUrl)) {\r\n saveContext.routePrefix = (adapter.relativeUrl as Function)(saveContext.dataService, '');\r\n url = saveContext.routePrefix + '$batch';\r\n } else {\r\n saveContext.routePrefix = adapter.getAbsoluteUrl(saveContext.dataService, '');\r\n url = saveContext.routePrefix + '$batch';\r\n }\r\n\r\n let requestData = createChangeRequests(saveContext, saveBundle);\r\n let tempKeys = saveContext.tempKeys;\r\n let contentKeys = saveContext.contentKeys;\r\n let promise = new Promise<breeze.SaveResult>((resolve, reject) => {\r\n OData.request({\r\n headers: core.extend({}, this.headers),\r\n requestUri: url,\r\n method: \"POST\",\r\n data: requestData\r\n }, function (data: any, response: any) {\r\n let entities: any[] = [];\r\n let keyMappings: breeze.KeyMapping[] = [];\r\n let saveResult: breeze.SaveResult = { entities: entities, keyMappings: keyMappings };\r\n data.__batchResponses.forEach(function (br: any) {\r\n br.__changeResponses.forEach(function (cr: any) {\r\n let response = cr.response || cr;\r\n let statusCode = response.statusCode;\r\n if ((!statusCode) || statusCode >= 400) {\r\n reject(createError(cr, url));\r\n return;\r\n }\r\n\r\n let contentId = cr.headers[\"Content-ID\"];\r\n // Olingo sends different case of 'ID' for the header name.\r\n if (!contentId) {\r\n contentId = cr.headers[\"Content-Id\"];\r\n }\r\n\r\n let rawEntity = cr.data;\r\n if (rawEntity) {\r\n let tempKey = tempKeys[contentId];\r\n if (tempKey) {\r\n let entityType = tempKey.entityType;\r\n if (entityType.autoGeneratedKeyType !== breeze.AutoGeneratedKeyType.None) {\r\n let tempValue = tempKey.values[0];\r\n let realKey = entityType.getEntityKeyFromRawEntity(rawEntity, breeze.DataProperty.getRawValueFromServer);\r\n let keyMapping = { entityTypeName: entityType.name, tempValue: tempValue, realValue: realKey.values[0] };\r\n keyMappings.push(keyMapping);\r\n }\r\n }\r\n entities.push(rawEntity);\r\n } else {\r\n let origEntity = contentKeys[contentId];\r\n entities.push(origEntity);\r\n }\r\n });\r\n });\r\n return resolve(saveResult);\r\n }, function (err: any) {\r\n return reject(createError(err, url));\r\n }, OData.batchHandler);\r\n });\r\n return promise;\r\n\r\n }\r\n\r\n jsonResultsAdapter: breeze.JsonResultsAdapter = new breeze.JsonResultsAdapter({\r\n name: \"OData_default\",\r\n\r\n visitNode: function (node: any, mappingContext: breeze.MappingContext, nodeContext: breeze.NodeContext) {\r\n let result: any = {};\r\n if (node == null) return result;\r\n let metadata = node.__metadata;\r\n if (metadata != null) {\r\n // TODO: may be able to make this more efficient by caching of the previous value.\r\n let entityTypeName = breeze.MetadataStore.normalizeTypeName(metadata.type);\r\n let et = entityTypeName && mappingContext.entityManager.metadataStore.getEntityType(entityTypeName, true);\r\n // OData response doesn't distinguish a projection from a whole entity.\r\n // We'll assume that whole-entity data would have at least as many properties (<=)\r\n // as the EntityType has mapped properties on the basis that\r\n // most projections remove properties rather than add them.\r\n // If not, assume it's a projection and do NOT treat as an entity\r\n if (et && et._mappedPropertiesCount <= Object.keys(node).length - 1) {\r\n // if (et && et._mappedPropertiesCount === Object.keys(node).length - 1) { // OLD\r\n result.entityType = et;\r\n let uriKey = metadata.uri || metadata.id;\r\n if (uriKey) {\r\n // Strip baseUri to make uriKey a relative uri\r\n // Todo: why is this necessary when absolute works for every OData source tested?\r\n let re = new RegExp('^' + mappingContext.dataService.serviceName, 'i');\r\n uriKey = uriKey.replace(re, '');\r\n }\r\n result.extraMetadata = {\r\n uriKey: uriKey,\r\n etag: metadata.etag\r\n };\r\n }\r\n }\r\n // OData v3 - projection arrays will be enclosed in a results array\r\n if (node.results) {\r\n result.node = node.results;\r\n }\r\n\r\n let propertyName = nodeContext.propertyName;\r\n result.ignore = node.__deferred != null || propertyName === \"__metadata\" ||\r\n // EntityKey properties can be produced by EDMX models\r\n (propertyName === \"EntityKey\" && node.$type && core.stringStartsWith(node.$type, \"System.Data\"));\r\n return result;\r\n }\r\n\r\n });\r\n\r\n getAbsoluteUrl(dataService: breeze.DataService, url: string) {\r\n let serviceName = dataService.qualifyUrl('');\r\n // only prefix with serviceName if not already on the url\r\n let base = (core.stringStartsWith(url, serviceName)) ? '' : serviceName;\r\n // If no protocol, turn base into an absolute URI\r\n if (window && serviceName.indexOf('//') < 0) {\r\n // no protocol; make it absolute\r\n base = window.location.protocol + '//' + window.location.host +\r\n (core.stringStartsWith(serviceName, '/') ? '' : '/') +\r\n base;\r\n }\r\n return base + url;\r\n }\r\n\r\n getRoutePrefix(dataService: breeze.DataService) {\r\n // Get the routePrefix from a Web API OData service name.\r\n // The routePrefix is presumed to be the pathname within the dataService.serviceName\r\n // Examples of servicename -> routePrefix:\r\n // 'http://localhost:55802/odata/' -> 'odata/'\r\n // 'http://198.154.121.75/service/odata/' -> 'service/odata/'\r\n let parser: any;\r\n if (typeof document === 'object') { // browser\r\n parser = document.createElement('a');\r\n parser.href = dataService.serviceName;\r\n } else { // node\r\n // TODO: how to best handle this\r\n // assumes existence of node's url.parse method.\r\n parser = url.parse(dataService.serviceName);\r\n }\r\n let prefix = parser.pathname;\r\n if (prefix[0] === '/') {\r\n prefix = prefix.substr(1);\r\n } // drop leading '/' (all but IE)\r\n if (prefix.substr(-1) !== '/') {\r\n prefix += '/';\r\n } // ensure trailing '/'\r\n return prefix;\r\n }\r\n\r\n}\r\n\r\n// crude serializer. Doesn't recurse\r\nfunction toQueryString(obj: Object) {\r\n let parts: string[] = [];\r\n for (let i in obj) {\r\n if (obj.hasOwnProperty(i)) {\r\n parts.push(encodeURIComponent(i) + \"=\" + encodeURIComponent(obj[i]));\r\n }\r\n }\r\n return parts.join(\"&\");\r\n}\r\n\r\nfunction transformValue(prop: breeze.DataProperty, val: any) {\r\n if (prop.isUnmapped) return undefined;\r\n if (prop.dataType === breeze.DataType.DateTimeOffset) {\r\n // The datajs lib tries to treat client dateTimes that are defined as DateTimeOffset on the server differently\r\n // from other dateTimes. This fix compensates before the save.\r\n val = val && new Date(val.getTime() - (val.getTimezoneOffset() * 60000));\r\n } else if ((prop.dataType as breeze.DataType).quoteJsonOData) {\r\n val = val != null ? val.toString() : val;\r\n }\r\n return val;\r\n}\r\n\r\nfunction createChangeRequests(saveContext: ODataSaveContext, saveBundle: breeze.SaveBundle) {\r\n let changeRequestInterceptor = (saveContext.adapter as DataServiceODataAdapter)._createChangeRequestInterceptor(saveContext, saveBundle);\r\n let changeRequests: any[] = [];\r\n let tempKeys: breeze.EntityKey[] = [];\r\n let contentKeys: breeze.Entity[] = [];\r\n let entityManager = saveContext.entityManager;\r\n let helper = entityManager.helper;\r\n let id = 0;\r\n let routePrefix = saveContext.routePrefix;\r\n\r\n saveBundle.entities.forEach(function (entity, index) {\r\n let aspect = entity.entityAspect;\r\n id = id + 1; // we are deliberately skipping id=0 because Content-ID = 0 seems to be ignored.\r\n let request = { headers: { \"Content-ID\": id, \"DataServiceVersion\": \"2.0\" } } as any;\r\n contentKeys[id] = entity;\r\n if (aspect.entityState.isAdded()) {\r\n request.requestUri = routePrefix + entity.entityType.defaultResourceName;\r\n request.method = \"POST\";\r\n request.data = helper.unwrapInstance(entity, transformValue);\r\n tempKeys[id] = aspect.getKey();\r\n } else if (aspect.entityState.isModified()) {\r\n updateDeleteMergeRequest(request, aspect, routePrefix!);\r\n request.method = \"MERGE\";\r\n request.data = helper.unwrapChangedValues(entity, entityManager.metadataStore, transformValue);\r\n // should be a PATCH/MERGE\r\n } else if (aspect.entityState.isDeleted()) {\r\n updateDeleteMergeRequest(request, aspect, routePrefix!);\r\n request.method = \"DELETE\";\r\n } else {\r\n return;\r\n }\r\n request = changeRequestInterceptor.getRequest(request, entity, index);\r\n changeRequests.push(request);\r\n });\r\n saveContext.contentKeys = contentKeys;\r\n saveContext.tempKeys = tempKeys;\r\n changeRequestInterceptor.done(changeRequests);\r\n return {\r\n __batchRequests: [\r\n {\r\n __changeRequests: changeRequests\r\n }\r\n ]\r\n };\r\n\r\n}\r\n\r\nfunction updateDeleteMergeRequest(request: any, aspect: breeze.EntityAspect, routePrefix: string) {\r\n let uriKey: string;\r\n let extraMetadata = aspect.extraMetadata;\r\n if (extraMetadata == null) {\r\n uriKey = getUriKey(aspect);\r\n aspect.extraMetadata = {\r\n uriKey: uriKey\r\n };\r\n } else {\r\n uriKey = extraMetadata.uriKey;\r\n if (extraMetadata.etag) {\r\n request.headers[\"If-Match\"] = extraMetadata.etag;\r\n }\r\n }\r\n request.requestUri =\r\n // use routePrefix if uriKey lacks protocol (i.e., relative uri)\r\n uriKey.indexOf('//') > 0 ? uriKey : routePrefix + uriKey;\r\n}\r\n\r\nfunction getUriKey(aspect: breeze.EntityAspect) {\r\n let entityType = aspect.entity!.entityType;\r\n let resourceName = entityType.defaultResourceName;\r\n let kps = entityType.keyProperties;\r\n let uriKey = resourceName + \"(\";\r\n if (kps.length === 1) {\r\n uriKey = uriKey + fmtProperty(kps[0], aspect) + \")\";\r\n } else {\r\n let delim = \"\";\r\n kps.forEach(function (kp) {\r\n uriKey = uriKey + delim + kp.nameOnServer + \"=\" + fmtProperty(kp, aspect);\r\n delim = \",\";\r\n });\r\n uriKey = uriKey + \")\";\r\n }\r\n return uriKey;\r\n}\r\n\r\nfunction fmtProperty(prop: breeze.DataProperty, aspect: breeze.EntityAspect) {\r\n return (prop.dataType as breeze.DataType).fmtOData!(aspect.getPropertyValue(prop.name));\r\n}\r\n\r\nfunction createError(error: any, url: string) {\r\n // OData errors can have the message buried very deeply - and nonobviously\r\n // this code is tricky so be careful changing the response.body parsing.\r\n let result = new Error() as breeze.ServerError;\r\n let response = error && error.response;\r\n if (!response) {\r\n // in case DataJS returns \"No handler for this data\"\r\n result.message = error;\r\n result.statusText = error;\r\n return result;\r\n }\r\n result.message = response.statusText;\r\n result.statusText = response.statusText;\r\n result.status = response.statusCode;\r\n // non std\r\n if (url) result.url = url;\r\n result.body = response.body;\r\n if (response.body) {\r\n let nextErr: any;\r\n try {\r\n let body = JSON.parse(response.body);\r\n result.body = body;\r\n // OData v3 logic\r\n if (body['odata.error']) {\r\n body = body['odata.error'];\r\n }\r\n let msg = \"\";\r\n do {\r\n nextErr = body.error || body.innererror;\r\n if (!nextErr) msg = msg + getMessage(body);\r\n nextErr = nextErr || body.internalexception;\r\n body = nextErr || body;\r\n } while (nextErr);\r\n if (msg.length > 0) {\r\n result.message = msg;\r\n }\r\n } catch (e) {\r\n\r\n }\r\n }\r\n breeze.AbstractDataServiceAdapter._catchNoConnectionError(result);\r\n return result;\r\n}\r\n\r\nfunction getMessage(body: any) {\r\n let msg = body.message || \"\";\r\n return ((typeof (msg) === \"string\") ? msg : msg.value) + \"; \";\r\n}\r\n\r\nbreeze.config.registerAdapter(\"dataService\", DataServiceODataAdapter);\r\n\r\n\r\nlet webApiODataCtor = function () {\r\n this.name = \"webApiOData\";\r\n};\r\n\r\nbreeze.core.extend(webApiODataCtor.prototype, DataServiceODataAdapter.prototype);\r\n\r\nbreeze.config.registerAdapter(\"dataService\", webApiODataCtor as any);\r\n// OData 4 adapter\r\nlet webApiOData4Ctor = function () {\r\n this.name = \"webApiOData4\";\r\n};\r\nbreeze.core.extend(webApiOData4Ctor.prototype, webApiODataCtor.prototype);\r\nwebApiOData4Ctor.prototype.initialize = function () {\r\n // Aargh... they moved the cheese.\r\n let datajs = core.requireLib(\"datajs\", \"Needed to support remote OData v4 services\");\r\n OData = datajs.V4.oData;\r\n OData.json.jsonHandler.recognizeDates = true;\r\n};\r\nwebApiOData4Ctor.prototype.headers = { \"OData-Version\": \"4.0\" };\r\nbreeze.config.registerAdapter(\"dataService\", webApiOData4Ctor as any);\r\n\r\n\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './adapter-data-service-odata';\n"],"names":[],"mappings":"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"}
|