breeze-client 2.2.0 → 2.2.1-cjs
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/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 +747 -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 +333 -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 +14234 -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 +463 -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 +100 -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 +327 -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 +714 -0
- package/esm2015/src/csdl-metadata-parser.js +385 -0
- package/esm2015/src/data-service.js +203 -0
- package/esm2015/src/data-type.js +506 -0
- package/esm2015/src/default-property-interceptor.js +460 -0
- package/{esm2022/src/entity-action.mjs → esm2015/src/entity-action.js} +25 -25
- package/esm2015/src/entity-aspect.js +804 -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 +1015 -0
- package/esm2015/src/entity-state.js +107 -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 +411 -0
- package/esm2015/src/naming-convention.js +88 -0
- package/esm2015/src/observable-array.js +185 -0
- package/esm2015/src/predicate.js +1242 -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/{esm2022/adapter-data-service-odata/adapter-data-service-odata.mjs → esm5/adapter-data-service-odata/adapter-data-service-odata.js} +147 -138
- 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 +105 -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 +333 -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 +722 -0
- package/esm5/src/csdl-metadata-parser.js +385 -0
- package/esm5/src/data-service.js +207 -0
- package/esm5/src/data-type.js +513 -0
- package/esm5/src/default-property-interceptor.js +460 -0
- package/esm5/src/entity-action.js +52 -0
- package/esm5/src/entity-aspect.js +810 -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 +1042 -0
- package/esm5/src/entity-state.js +114 -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 +413 -0
- package/esm5/src/naming-convention.js +90 -0
- package/esm5/src/observable-array.js +201 -0
- package/esm5/src/predicate.js +1307 -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/{esm2022/src/validate.mjs → esm5/src/validate.js} +110 -116
- package/esm5/src/validation-options.js +66 -0
- package/{fesm2022/breeze-client-adapter-ajax-angularjs.mjs → fesm2015/breeze-client-adapter-ajax-angularjs.js} +1 -6
- package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-ajax-fetch.mjs → fesm2015/breeze-client-adapter-ajax-fetch.js} +4 -9
- package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-ajax-httpclient.mjs → fesm2015/breeze-client-adapter-ajax-httpclient.js} +4 -6
- package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-ajax-jquery.mjs → fesm2015/breeze-client-adapter-ajax-jquery.js} +2 -6
- package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +1 -0
- package/{fesm2022/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/{fesm2022/breeze-client-adapter-data-service-odata.mjs → fesm2015/breeze-client-adapter-data-service-odata.js} +69 -68
- package/fesm2015/breeze-client-adapter-data-service-odata.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-data-service-webapi.mjs → fesm2015/breeze-client-adapter-data-service-webapi.js} +30 -30
- package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-model-library-backing-store.mjs → fesm2015/breeze-client-adapter-model-library-backing-store.js} +13 -14
- package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-model-library-ko.mjs → fesm2015/breeze-client-adapter-model-library-ko.js} +13 -14
- package/fesm2015/breeze-client-adapter-model-library-ko.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-uri-builder-json.mjs → fesm2015/breeze-client-adapter-uri-builder-json.js} +8 -9
- package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-uri-builder-odata.mjs → fesm2015/breeze-client-adapter-uri-builder-odata.js} +86 -86
- package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +1 -0
- package/{fesm2022/breeze-client-mixin-get-entity-graph.mjs → fesm2015/breeze-client-mixin-get-entity-graph.js} +1 -1
- package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +1 -0
- package/{fesm2022/breeze-client-mixin-save-queuing.mjs → fesm2015/breeze-client-mixin-save-queuing.js} +2 -23
- package/fesm2015/breeze-client-mixin-save-queuing.js.map +1 -0
- package/{fesm2022/breeze-client.mjs → fesm2015/breeze-client.js} +1543 -2042
- package/fesm2015/breeze-client.js.map +1 -0
- package/fesm5/breeze-client-adapter-ajax-angularjs.js +186 -0
- package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +1 -0
- package/fesm5/breeze-client-adapter-ajax-fetch.js +186 -0
- package/fesm5/breeze-client-adapter-ajax-fetch.js.map +1 -0
- package/fesm5/breeze-client-adapter-ajax-httpclient.js +193 -0
- package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +1 -0
- package/fesm5/breeze-client-adapter-ajax-jquery.js +111 -0
- package/fesm5/breeze-client-adapter-ajax-jquery.js.map +1 -0
- package/fesm5/breeze-client-adapter-ajax-post.js +86 -0
- package/fesm5/breeze-client-adapter-ajax-post.js.map +1 -0
- package/fesm5/breeze-client-adapter-data-service-odata.js +523 -0
- package/fesm5/breeze-client-adapter-data-service-odata.js.map +1 -0
- package/fesm5/breeze-client-adapter-data-service-webapi.js +111 -0
- package/fesm5/breeze-client-adapter-data-service-webapi.js.map +1 -0
- package/fesm5/breeze-client-adapter-model-library-backing-store.js +276 -0
- package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +1 -0
- package/fesm5/breeze-client-adapter-model-library-ko.js +248 -0
- 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/fesm5/breeze-client-mixin-get-entity-graph.js +254 -0
- package/fesm5/breeze-client-mixin-get-entity-graph.js.map +1 -0
- package/fesm5/breeze-client-mixin-save-queuing.js +356 -0
- package/fesm5/breeze-client-mixin-save-queuing.js.map +1 -0
- package/fesm5/breeze-client.js +13956 -0
- 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 -94
- package/src/config.d.ts +1 -1
- package/src/core.d.ts +1 -1
- package/src/entity-aspect.d.ts +1 -1
- package/src/entity-metadata.d.ts +6 -8
- package/src/entity-query.d.ts +1 -1
- package/esm2022/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +0 -135
- package/esm2022/adapter-ajax-angularjs/adapter-core.mjs +0 -49
- package/esm2022/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +0 -5
- package/esm2022/adapter-ajax-fetch/adapter-ajax-fetch.mjs +0 -135
- package/esm2022/adapter-ajax-fetch/adapter-core.mjs +0 -49
- package/esm2022/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +0 -5
- package/esm2022/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +0 -139
- package/esm2022/adapter-ajax-httpclient/adapter-core.mjs +0 -49
- package/esm2022/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +0 -5
- package/esm2022/adapter-ajax-jquery/adapter-ajax-jquery.mjs +0 -107
- package/esm2022/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +0 -5
- package/esm2022/adapter-ajax-post/adapter-ajax-post.mjs +0 -77
- package/esm2022/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +0 -5
- package/esm2022/adapter-data-service-odata/adapter-core.mjs +0 -49
- package/esm2022/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +0 -5
- package/esm2022/adapter-data-service-webapi/adapter-data-service-webapi.mjs +0 -100
- package/esm2022/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +0 -5
- package/esm2022/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +0 -269
- package/esm2022/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +0 -5
- package/esm2022/adapter-model-library-ko/adapter-model-library-ko.mjs +0 -241
- package/esm2022/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +0 -5
- package/esm2022/adapter-uri-builder-json/adapter-core.mjs +0 -49
- package/esm2022/adapter-uri-builder-json/adapter-uri-builder-json.mjs +0 -37
- package/esm2022/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +0 -5
- package/esm2022/adapter-uri-builder-odata/adapter-core.mjs +0 -49
- package/esm2022/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +0 -191
- package/esm2022/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +0 -5
- package/esm2022/breeze-client.mjs +0 -5
- package/esm2022/index.mjs +0 -2
- package/esm2022/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +0 -5
- package/esm2022/mixin-get-entity-graph/mixin-get-entity-graph.mjs +0 -269
- package/esm2022/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +0 -5
- package/esm2022/mixin-save-queuing/mixin-save-queuing.mjs +0 -421
- package/esm2022/src/abstract-data-service-adapter.mjs +0 -325
- package/esm2022/src/array.mjs +0 -4
- package/esm2022/src/assert-param.mjs +0 -330
- package/esm2022/src/breeze.mjs +0 -85
- package/esm2022/src/complex-array.mjs +0 -117
- package/esm2022/src/config.mjs +0 -232
- package/esm2022/src/core.mjs +0 -712
- package/esm2022/src/csdl-metadata-parser.mjs +0 -385
- package/esm2022/src/data-service.mjs +0 -239
- package/esm2022/src/data-type.mjs +0 -510
- package/esm2022/src/default-property-interceptor.mjs +0 -460
- package/esm2022/src/entity-aspect.mjs +0 -897
- package/esm2022/src/entity-group.mjs +0 -192
- package/esm2022/src/entity-key.mjs +0 -127
- package/esm2022/src/entity-manager.mjs +0 -2183
- package/esm2022/src/entity-metadata.mjs +0 -2242
- package/esm2022/src/entity-query.mjs +0 -1024
- package/esm2022/src/entity-state.mjs +0 -107
- package/esm2022/src/enum.mjs +0 -143
- package/esm2022/src/event.mjs +0 -264
- package/esm2022/src/interface-registry.mjs +0 -39
- package/esm2022/src/key-generator.mjs +0 -110
- package/esm2022/src/local-query-comparison-options.mjs +0 -75
- package/esm2022/src/mapping-context.mjs +0 -422
- package/esm2022/src/naming-convention.mjs +0 -96
- package/esm2022/src/observable-array.mjs +0 -183
- package/esm2022/src/predicate.mjs +0 -1259
- package/esm2022/src/primitive-array.mjs +0 -85
- package/esm2022/src/query-options.mjs +0 -160
- package/esm2022/src/relation-array.mjs +0 -173
- package/esm2022/src/save-options.mjs +0 -51
- package/esm2022/src/unattached-children-map.mjs +0 -56
- package/esm2022/src/validation-options.mjs +0 -78
- package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-ajax-fetch.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-ajax-jquery.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-ajax-post.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-data-service-odata.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-data-service-webapi.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-model-library-ko.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-uri-builder-json.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs.map +0 -1
- package/fesm2022/breeze-client-mixin-get-entity-graph.mjs.map +0 -1
- package/fesm2022/breeze-client-mixin-save-queuing.mjs.map +0 -1
- package/fesm2022/breeze-client.mjs.map +0 -1
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Functions to enable Breeze to use POST for queries when
|
|
3
|
-
* special parameters are passed using the .withParameters function.
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2015-2021 IdeaBlade, Inc. All Rights Reserved.
|
|
6
|
-
* Use, reproduction, distribution, and modification of this code is subject to the terms and
|
|
7
|
-
* conditions of the IdeaBlade Breeze license, available at http://www.breezejs.com/license
|
|
8
|
-
*
|
|
9
|
-
* Author: Steve Schmitt
|
|
10
|
-
* Version:
|
|
11
|
-
* 1.2.0 - Moved into breeze-client repo and npm package
|
|
12
|
-
* 1.1.0 - revised: eliminated return object, configAjaxAdapter method; add ajaxPostEnabled flag
|
|
13
|
-
* 1.0.6 - original
|
|
14
|
-
*
|
|
15
|
-
* Special parameters:
|
|
16
|
-
* $method: ‘POST’ or ‘GET’ (the default)
|
|
17
|
-
* $encoding: ‘JSON’ or x-www-form-urlencoded (the default)
|
|
18
|
-
* $data: contains the data to be sent to the server
|
|
19
|
-
*
|
|
20
|
-
* Installation:
|
|
21
|
-
* var ajaxAdapter = config.initializeAdapterInstance('ajax', adapterName, true);
|
|
22
|
-
* AjaxPostWrapper.wrapAjax(ajaxAdapter);
|
|
23
|
-
*
|
|
24
|
-
* Example:
|
|
25
|
-
* var query = breeze.EntityQuery.from('SimilarCustomersPOST')
|
|
26
|
-
* .withParameters({
|
|
27
|
-
* $method: 'POST',
|
|
28
|
-
* $encoding: 'JSON',
|
|
29
|
-
* $data: { CompanyName: 'Hilo Hattie', ContactName: 'Donald', City: 'Duck', Country: 'USA', Phone: '808-234-5678' }
|
|
30
|
-
* });
|
|
31
|
-
*
|
|
32
|
-
**/
|
|
33
|
-
export class AjaxPostWrapper {
|
|
34
|
-
static wrapAjax(ajaxAdapter) {
|
|
35
|
-
if (ajaxAdapter.ajaxPostEnabled) {
|
|
36
|
-
return; // already wrapped it.
|
|
37
|
-
}
|
|
38
|
-
let ajaxFunction = ajaxAdapter.ajax;
|
|
39
|
-
if (ajaxFunction) {
|
|
40
|
-
ajaxAdapter.ajax = function (settings) {
|
|
41
|
-
processSettings(settings);
|
|
42
|
-
return ajaxFunction.call(ajaxAdapter, settings);
|
|
43
|
-
};
|
|
44
|
-
ajaxAdapter.ajaxPostEnabled = true;
|
|
45
|
-
}
|
|
46
|
-
// Handle the POST-specific properties in the settings - $method, $data, $encoding
|
|
47
|
-
function processSettings(settings) {
|
|
48
|
-
let parameters = settings && settings.params;
|
|
49
|
-
if (!parameters)
|
|
50
|
-
return settings;
|
|
51
|
-
// wrapped data; handle the special properties
|
|
52
|
-
settings.type = parameters.$method || settings.type; // GET is default method
|
|
53
|
-
let data = parameters.$data;
|
|
54
|
-
if (data) {
|
|
55
|
-
// if $data exists, assume all of other parameters are guidance for building a POST
|
|
56
|
-
if (parameters.$encoding === 'JSON') {
|
|
57
|
-
// JSON encoding
|
|
58
|
-
settings.processData = false; // don't let JQuery form-encode it
|
|
59
|
-
settings.contentType = "application/json; charset=UTF-8";
|
|
60
|
-
if (typeof (data) === 'object') {
|
|
61
|
-
settings.data = JSON.stringify(data); // encode parameters as JSON
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
settings.data = data;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
settings.data = data;
|
|
69
|
-
}
|
|
70
|
-
// must be null or jQuery ajax adapter won't see settings.data
|
|
71
|
-
settings.params = null;
|
|
72
|
-
}
|
|
73
|
-
return settings;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci1hamF4LXBvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRhcHRlci1hamF4LXBvc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUErQkk7QUFDSixNQUFNLE9BQU8sZUFBZTtJQUUxQixNQUFNLENBQUMsUUFBUSxDQUFDLFdBQStCO1FBRTdDLElBQUssV0FBbUIsQ0FBQyxlQUFlLEVBQUU7WUFDeEMsT0FBTyxDQUFDLHNCQUFzQjtTQUMvQjtRQUVELElBQUksWUFBWSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUM7UUFDcEMsSUFBSSxZQUFZLEVBQUU7WUFDaEIsV0FBVyxDQUFDLElBQUksR0FBRyxVQUFVLFFBQVE7Z0JBQ25DLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUIsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNsRCxDQUFDLENBQUM7WUFDRCxXQUFtQixDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7U0FDN0M7UUFHRCxrRkFBa0Y7UUFDbEYsU0FBUyxlQUFlLENBQUMsUUFBYTtZQUNwQyxJQUFJLFVBQVUsR0FBRyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUM3QyxJQUFJLENBQUMsVUFBVTtnQkFBRSxPQUFPLFFBQVEsQ0FBQztZQUVqQyw4Q0FBOEM7WUFDOUMsUUFBUSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsT0FBTyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyx3QkFBd0I7WUFFN0UsSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUM1QixJQUFJLElBQUksRUFBRTtnQkFDUixtRkFBbUY7Z0JBQ25GLElBQUksVUFBVSxDQUFDLFNBQVMsS0FBSyxNQUFNLEVBQUU7b0JBQ25DLGdCQUFnQjtvQkFDaEIsUUFBUSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxrQ0FBa0M7b0JBQ2hFLFFBQVEsQ0FBQyxXQUFXLEdBQUcsaUNBQWlDLENBQUM7b0JBRXpELElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLFFBQVEsRUFBRTt3QkFDOUIsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsNEJBQTRCO3FCQUNuRTt5QkFBTTt3QkFDTCxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztxQkFDdEI7aUJBQ0Y7cUJBQU07b0JBQ0wsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7aUJBQ3RCO2dCQUNELDhEQUE4RDtnQkFDOUQsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7YUFDeEI7WUFFRCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO0lBQ0gsQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYnJlZXplIGZyb20gJ2JyZWV6ZS1jbGllbnQnO1xyXG5cclxuLyoqXHJcbiAqICBGdW5jdGlvbnMgdG8gZW5hYmxlIEJyZWV6ZSB0byB1c2UgUE9TVCBmb3IgcXVlcmllcyB3aGVuXHJcbiAqICBzcGVjaWFsIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCB1c2luZyB0aGUgLndpdGhQYXJhbWV0ZXJzIGZ1bmN0aW9uLlxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIxIElkZWFCbGFkZSwgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICogVXNlLCByZXByb2R1Y3Rpb24sIGRpc3RyaWJ1dGlvbiwgYW5kIG1vZGlmaWNhdGlvbiBvZiB0aGlzIGNvZGUgaXMgc3ViamVjdCB0byB0aGUgdGVybXMgYW5kXHJcbiAqIGNvbmRpdGlvbnMgb2YgdGhlIElkZWFCbGFkZSBCcmVlemUgbGljZW5zZSwgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuYnJlZXplanMuY29tL2xpY2Vuc2VcclxuICpcclxuICogQXV0aG9yOiBTdGV2ZSBTY2htaXR0XHJcbiAqIFZlcnNpb246IFxyXG4gKiAgMS4yLjAgLSBNb3ZlZCBpbnRvIGJyZWV6ZS1jbGllbnQgcmVwbyBhbmQgbnBtIHBhY2thZ2VcclxuICogIDEuMS4wIC0gcmV2aXNlZDogZWxpbWluYXRlZCByZXR1cm4gb2JqZWN0LCBjb25maWdBamF4QWRhcHRlciBtZXRob2Q7IGFkZCBhamF4UG9zdEVuYWJsZWQgZmxhZ1xyXG4gKiAgMS4wLjYgLSBvcmlnaW5hbFxyXG4gKlxyXG4gKiBTcGVjaWFsIHBhcmFtZXRlcnM6XHJcbiAqICAkbWV0aG9kOiDigJhQT1NU4oCZIG9yIOKAmEdFVOKAmSAodGhlIGRlZmF1bHQpXHJcbiAqICAkZW5jb2Rpbmc6IOKAmEpTT07igJkgb3IgeC13d3ctZm9ybS11cmxlbmNvZGVkICh0aGUgZGVmYXVsdClcclxuICogICRkYXRhOiBjb250YWlucyB0aGUgZGF0YSB0byBiZSBzZW50IHRvIHRoZSBzZXJ2ZXJcclxuICpcclxuICogSW5zdGFsbGF0aW9uOlxyXG4gKiAgICB2YXIgYWpheEFkYXB0ZXIgPSBjb25maWcuaW5pdGlhbGl6ZUFkYXB0ZXJJbnN0YW5jZSgnYWpheCcsIGFkYXB0ZXJOYW1lLCB0cnVlKTtcclxuICogICAgQWpheFBvc3RXcmFwcGVyLndyYXBBamF4KGFqYXhBZGFwdGVyKTtcclxuICpcclxuICogRXhhbXBsZTpcclxuICogICB2YXIgcXVlcnkgPSBicmVlemUuRW50aXR5UXVlcnkuZnJvbSgnU2ltaWxhckN1c3RvbWVyc1BPU1QnKVxyXG4gKiAgICAgICAgICAgIC53aXRoUGFyYW1ldGVycyh7XHJcbiAqICAgICAgICAgICAgICAgICRtZXRob2Q6ICdQT1NUJyxcclxuICogICAgICAgICAgICAgICAgJGVuY29kaW5nOiAnSlNPTicsXHJcbiAqICAgICAgICAgICAgICAgJGRhdGE6IHsgQ29tcGFueU5hbWU6ICdIaWxvIEhhdHRpZScsIENvbnRhY3ROYW1lOiAnRG9uYWxkJywgQ2l0eTogJ0R1Y2snLCBDb3VudHJ5OiAnVVNBJywgUGhvbmU6ICc4MDgtMjM0LTU2NzgnIH1cclxuICogICAgICAgICAgIH0pO1xyXG4gKlxyXG4gKiovXHJcbmV4cG9ydCBjbGFzcyBBamF4UG9zdFdyYXBwZXIge1xyXG5cclxuICBzdGF0aWMgd3JhcEFqYXgoYWpheEFkYXB0ZXI6IGJyZWV6ZS5BamF4QWRhcHRlcikge1xyXG5cclxuICAgIGlmICgoYWpheEFkYXB0ZXIgYXMgYW55KS5hamF4UG9zdEVuYWJsZWQpIHtcclxuICAgICAgcmV0dXJuOyAvLyBhbHJlYWR5IHdyYXBwZWQgaXQuXHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGFqYXhGdW5jdGlvbiA9IGFqYXhBZGFwdGVyLmFqYXg7XHJcbiAgICBpZiAoYWpheEZ1bmN0aW9uKSB7XHJcbiAgICAgIGFqYXhBZGFwdGVyLmFqYXggPSBmdW5jdGlvbiAoc2V0dGluZ3MpIHtcclxuICAgICAgICBwcm9jZXNzU2V0dGluZ3Moc2V0dGluZ3MpO1xyXG4gICAgICAgIHJldHVybiBhamF4RnVuY3Rpb24uY2FsbChhamF4QWRhcHRlciwgc2V0dGluZ3MpO1xyXG4gICAgICB9O1xyXG4gICAgICAoYWpheEFkYXB0ZXIgYXMgYW55KS5hamF4UG9zdEVuYWJsZWQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyBIYW5kbGUgdGhlIFBPU1Qtc3BlY2lmaWMgcHJvcGVydGllcyBpbiB0aGUgc2V0dGluZ3MgLSAkbWV0aG9kLCAkZGF0YSwgJGVuY29kaW5nXHJcbiAgICBmdW5jdGlvbiBwcm9jZXNzU2V0dGluZ3Moc2V0dGluZ3M6IGFueSkge1xyXG4gICAgICBsZXQgcGFyYW1ldGVycyA9IHNldHRpbmdzICYmIHNldHRpbmdzLnBhcmFtcztcclxuICAgICAgaWYgKCFwYXJhbWV0ZXJzKSByZXR1cm4gc2V0dGluZ3M7XHJcblxyXG4gICAgICAvLyB3cmFwcGVkIGRhdGE7IGhhbmRsZSB0aGUgc3BlY2lhbCBwcm9wZXJ0aWVzXHJcbiAgICAgIHNldHRpbmdzLnR5cGUgPSBwYXJhbWV0ZXJzLiRtZXRob2QgfHwgc2V0dGluZ3MudHlwZTsgLy8gR0VUIGlzIGRlZmF1bHQgbWV0aG9kXHJcblxyXG4gICAgICBsZXQgZGF0YSA9IHBhcmFtZXRlcnMuJGRhdGE7XHJcbiAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgLy8gaWYgJGRhdGEgZXhpc3RzLCBhc3N1bWUgYWxsIG9mIG90aGVyIHBhcmFtZXRlcnMgYXJlIGd1aWRhbmNlIGZvciBidWlsZGluZyBhIFBPU1RcclxuICAgICAgICBpZiAocGFyYW1ldGVycy4kZW5jb2RpbmcgPT09ICdKU09OJykge1xyXG4gICAgICAgICAgLy8gSlNPTiBlbmNvZGluZ1xyXG4gICAgICAgICAgc2V0dGluZ3MucHJvY2Vzc0RhdGEgPSBmYWxzZTsgLy8gZG9uJ3QgbGV0IEpRdWVyeSBmb3JtLWVuY29kZSBpdFxyXG4gICAgICAgICAgc2V0dGluZ3MuY29udGVudFR5cGUgPSBcImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLThcIjtcclxuXHJcbiAgICAgICAgICBpZiAodHlwZW9mIChkYXRhKSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgc2V0dGluZ3MuZGF0YSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpOyAvLyBlbmNvZGUgcGFyYW1ldGVycyBhcyBKU09OXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzZXR0aW5ncy5kYXRhID0gZGF0YTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc2V0dGluZ3MuZGF0YSA9IGRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIG11c3QgYmUgbnVsbCBvciBqUXVlcnkgYWpheCBhZGFwdGVyIHdvbid0IHNlZSBzZXR0aW5ncy5kYXRhXHJcbiAgICAgICAgc2V0dGluZ3MucGFyYW1zID0gbnVsbDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHNldHRpbmdzO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG59Il19
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './adapter-ajax-post';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlZXplLWNsaWVudC1hZGFwdGVyLWFqYXgtcG9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9icmVlemUtY2xpZW50LWFkYXB0ZXItYWpheC1wb3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9hZGFwdGVyLWFqYXgtcG9zdCc7XG4iXX0=
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/** Appends parameter to url, with appropriate delimiter */
|
|
2
|
-
export function appendQueryStringParameter(url, parameter) {
|
|
3
|
-
if (!parameter)
|
|
4
|
-
return url;
|
|
5
|
-
let separator = url.endsWith("?") ? "" : url.includes("?") ? "&" : "?";
|
|
6
|
-
return url + separator + parameter;
|
|
7
|
-
}
|
|
8
|
-
/** Encodes the object into query string parameters */
|
|
9
|
-
export function encodeParams(obj) {
|
|
10
|
-
let query = '';
|
|
11
|
-
let subValue, innerObj, fullSubName;
|
|
12
|
-
for (let name in obj) {
|
|
13
|
-
if (!obj.hasOwnProperty(name)) {
|
|
14
|
-
continue;
|
|
15
|
-
}
|
|
16
|
-
let value = obj[name];
|
|
17
|
-
if (value instanceof Array) {
|
|
18
|
-
for (let i = 0; i < value.length; ++i) {
|
|
19
|
-
subValue = value[i];
|
|
20
|
-
fullSubName = name + '[' + i + ']';
|
|
21
|
-
innerObj = {};
|
|
22
|
-
innerObj[fullSubName] = subValue;
|
|
23
|
-
query += encodeParams(innerObj) + '&';
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
else if (value && value.toISOString) { // a feature of Date-like things
|
|
27
|
-
query += encodeURIComponent(name) + '=' + encodeURIComponent(value.toISOString()) + '&';
|
|
28
|
-
}
|
|
29
|
-
else if (value instanceof Object) {
|
|
30
|
-
for (let subName in value) {
|
|
31
|
-
if (obj.hasOwnProperty(name)) {
|
|
32
|
-
subValue = value[subName];
|
|
33
|
-
fullSubName = name + '[' + subName + ']';
|
|
34
|
-
innerObj = {};
|
|
35
|
-
innerObj[fullSubName] = subValue;
|
|
36
|
-
query += encodeParams(innerObj) + '&';
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
else if (value === null) {
|
|
41
|
-
query += encodeURIComponent(name) + '=&';
|
|
42
|
-
}
|
|
43
|
-
else if (value !== undefined) {
|
|
44
|
-
query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return query.length ? query.substr(0, query.length - 1) : query;
|
|
48
|
-
}
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci1jb3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkYXB0ZXItY29yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyREFBMkQ7QUFDM0QsTUFBTSxVQUFVLDBCQUEwQixDQUFDLEdBQVcsRUFBRSxTQUFpQjtJQUN2RSxJQUFJLENBQUMsU0FBUztRQUFFLE9BQU8sR0FBRyxDQUFDO0lBRTNCLElBQUksU0FBUyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7SUFFdkUsT0FBTyxHQUFHLEdBQUcsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUNyQyxDQUFDO0FBRUQsc0RBQXNEO0FBQ3RELE1BQU0sVUFBVSxZQUFZLENBQUMsR0FBTztJQUNsQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDZixJQUFJLFFBQWEsRUFBRSxRQUFhLEVBQUUsV0FBZ0IsQ0FBQztJQUVuRCxLQUFLLElBQUksSUFBSSxJQUFJLEdBQUcsRUFBRTtRQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUFFLFNBQVM7U0FBRTtRQUU1QyxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEIsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFO1lBQzFCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNwQixXQUFXLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO2dCQUNuQyxRQUFRLEdBQUcsRUFBRSxDQUFDO2dCQUNkLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxRQUFRLENBQUM7Z0JBQ2pDLEtBQUssSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDO2FBQ3ZDO1NBQ0Y7YUFBTSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLEVBQUUsZ0NBQWdDO1lBQ3ZFLEtBQUssSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQ3pGO2FBQU0sSUFBSSxLQUFLLFlBQVksTUFBTSxFQUFFO1lBQ2xDLEtBQUssSUFBSSxPQUFPLElBQUksS0FBSyxFQUFFO2dCQUN6QixJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzVCLFFBQVEsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQzFCLFdBQVcsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLE9BQU8sR0FBRyxHQUFHLENBQUM7b0JBQ3pDLFFBQVEsR0FBRyxFQUFFLENBQUM7b0JBQ2QsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFFBQVEsQ0FBQztvQkFDakMsS0FBSyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUM7aUJBQ3ZDO2FBQ0Y7U0FDRjthQUFNLElBQUksS0FBSyxLQUFLLElBQUksRUFBRTtZQUN6QixLQUFLLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO1NBQzFDO2FBQU0sSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQzlCLEtBQUssSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQzNFO0tBQ0Y7SUFFRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNsRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIEFwcGVuZHMgcGFyYW1ldGVyIHRvIHVybCwgd2l0aCBhcHByb3ByaWF0ZSBkZWxpbWl0ZXIgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGFwcGVuZFF1ZXJ5U3RyaW5nUGFyYW1ldGVyKHVybDogc3RyaW5nLCBwYXJhbWV0ZXI6IHN0cmluZykge1xyXG4gIGlmICghcGFyYW1ldGVyKSByZXR1cm4gdXJsO1xyXG5cclxuICBsZXQgc2VwYXJhdG9yID0gdXJsLmVuZHNXaXRoKFwiP1wiKSA/IFwiXCIgOiB1cmwuaW5jbHVkZXMoXCI/XCIpID8gXCImXCIgOiBcIj9cIjtcclxuXHJcbiAgcmV0dXJuIHVybCArIHNlcGFyYXRvciArIHBhcmFtZXRlcjtcclxufVxyXG5cclxuLyoqIEVuY29kZXMgdGhlIG9iamVjdCBpbnRvIHF1ZXJ5IHN0cmluZyBwYXJhbWV0ZXJzICovXHJcbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVQYXJhbXMob2JqOiB7fSkge1xyXG4gIGxldCBxdWVyeSA9ICcnO1xyXG4gIGxldCBzdWJWYWx1ZTogYW55LCBpbm5lck9iajogYW55LCBmdWxsU3ViTmFtZTogYW55O1xyXG5cclxuICBmb3IgKGxldCBuYW1lIGluIG9iaikge1xyXG4gICAgaWYgKCFvYmouaGFzT3duUHJvcGVydHkobmFtZSkpIHsgY29udGludWU7IH1cclxuXHJcbiAgICBsZXQgdmFsdWUgPSBvYmpbbmFtZV07XHJcblxyXG4gICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgQXJyYXkpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgIHN1YlZhbHVlID0gdmFsdWVbaV07XHJcbiAgICAgICAgZnVsbFN1Yk5hbWUgPSBuYW1lICsgJ1snICsgaSArICddJztcclxuICAgICAgICBpbm5lck9iaiA9IHt9O1xyXG4gICAgICAgIGlubmVyT2JqW2Z1bGxTdWJOYW1lXSA9IHN1YlZhbHVlO1xyXG4gICAgICAgIHF1ZXJ5ICs9IGVuY29kZVBhcmFtcyhpbm5lck9iaikgKyAnJic7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodmFsdWUgJiYgdmFsdWUudG9JU09TdHJpbmcpIHsgLy8gYSBmZWF0dXJlIG9mIERhdGUtbGlrZSB0aGluZ3NcclxuICAgICAgcXVlcnkgKz0gZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlLnRvSVNPU3RyaW5nKCkpICsgJyYnO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIE9iamVjdCkge1xyXG4gICAgICBmb3IgKGxldCBzdWJOYW1lIGluIHZhbHVlKSB7XHJcbiAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xyXG4gICAgICAgICAgc3ViVmFsdWUgPSB2YWx1ZVtzdWJOYW1lXTtcclxuICAgICAgICAgIGZ1bGxTdWJOYW1lID0gbmFtZSArICdbJyArIHN1Yk5hbWUgKyAnXSc7XHJcbiAgICAgICAgICBpbm5lck9iaiA9IHt9O1xyXG4gICAgICAgICAgaW5uZXJPYmpbZnVsbFN1Yk5hbWVdID0gc3ViVmFsdWU7XHJcbiAgICAgICAgICBxdWVyeSArPSBlbmNvZGVQYXJhbXMoaW5uZXJPYmopICsgJyYnO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xyXG4gICAgICBxdWVyeSArPSBlbmNvZGVVUklDb21wb25lbnQobmFtZSkgKyAnPSYnO1xyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHF1ZXJ5ICs9IGVuY29kZVVSSUNvbXBvbmVudChuYW1lKSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkgKyAnJic7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gcXVlcnkubGVuZ3RoID8gcXVlcnkuc3Vic3RyKDAsIHF1ZXJ5Lmxlbmd0aCAtIDEpIDogcXVlcnk7XHJcbn1cclxuIl19
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './adapter-data-service-odata';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlZXplLWNsaWVudC1hZGFwdGVyLWRhdGEtc2VydmljZS1vZGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9icmVlemUtY2xpZW50LWFkYXB0ZXItZGF0YS1zZXJ2aWNlLW9kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyw4QkFBOEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9hZGFwdGVyLWRhdGEtc2VydmljZS1vZGF0YSc7XG4iXX0=
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import * as breeze from 'breeze-client';
|
|
2
|
-
// import { JsonResultsAdapter, KeyMapping } from './breeze';
|
|
3
|
-
/** @hidden */
|
|
4
|
-
export class DataServiceWebApiAdapter extends breeze.AbstractDataServiceAdapter {
|
|
5
|
-
constructor() {
|
|
6
|
-
super();
|
|
7
|
-
this.name = "webApi";
|
|
8
|
-
}
|
|
9
|
-
static register(config) {
|
|
10
|
-
config = config || breeze.config;
|
|
11
|
-
config.registerAdapter("dataService", DataServiceWebApiAdapter);
|
|
12
|
-
return config.initializeAdapterInstance("dataService", "webApi", true);
|
|
13
|
-
}
|
|
14
|
-
/** @hidden @internal */
|
|
15
|
-
_prepareSaveBundle(saveContext, saveBundle) {
|
|
16
|
-
let changeRequestInterceptor = this._createChangeRequestInterceptor(saveContext, saveBundle);
|
|
17
|
-
let em = saveContext.entityManager;
|
|
18
|
-
let metadataStore = em.metadataStore;
|
|
19
|
-
let helper = em.helper;
|
|
20
|
-
let serSaveBundle = {};
|
|
21
|
-
serSaveBundle.entities = saveBundle.entities.map(function (e, ix) {
|
|
22
|
-
let rawEntity = helper.unwrapInstance(e, transformValue);
|
|
23
|
-
let autoGeneratedKey;
|
|
24
|
-
if (e.entityType.autoGeneratedKeyType !== breeze.AutoGeneratedKeyType.None) {
|
|
25
|
-
autoGeneratedKey = {
|
|
26
|
-
propertyName: e.entityType.keyProperties[0].nameOnServer,
|
|
27
|
-
autoGeneratedKeyType: e.entityType.autoGeneratedKeyType.name
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
let originalValuesOnServer = helper.unwrapOriginalValues(e, metadataStore);
|
|
31
|
-
rawEntity.entityAspect = {
|
|
32
|
-
entityTypeName: e.entityType.name,
|
|
33
|
-
defaultResourceName: e.entityType.defaultResourceName,
|
|
34
|
-
entityState: e.entityAspect.entityState.name,
|
|
35
|
-
originalValuesMap: originalValuesOnServer,
|
|
36
|
-
autoGeneratedKey: autoGeneratedKey
|
|
37
|
-
};
|
|
38
|
-
rawEntity = changeRequestInterceptor.getRequest(rawEntity, e, ix);
|
|
39
|
-
return rawEntity;
|
|
40
|
-
});
|
|
41
|
-
serSaveBundle.saveOptions = { tag: saveBundle.saveOptions.tag };
|
|
42
|
-
changeRequestInterceptor.done(serSaveBundle.entities);
|
|
43
|
-
return serSaveBundle;
|
|
44
|
-
}
|
|
45
|
-
/** @hidden @internal */
|
|
46
|
-
_prepareSaveResult(saveContext, data) {
|
|
47
|
-
// use the jsonResultAdapter to extractResults and extractKeyMappings
|
|
48
|
-
let jra = saveContext.dataService.jsonResultsAdapter || this.jsonResultsAdapter;
|
|
49
|
-
let entities = jra.extractSaveResults(data) || [];
|
|
50
|
-
let keyMappings = jra.extractKeyMappings(data) || [];
|
|
51
|
-
let deletedKeys = jra.extractDeletedKeys ? (jra.extractDeletedKeys(data)) || [] : [];
|
|
52
|
-
if (keyMappings.length) {
|
|
53
|
-
// HACK: need to change the 'case' of properties in the saveResult
|
|
54
|
-
// but KeyMapping properties internally are still ucase. ugh...
|
|
55
|
-
keyMappings = keyMappings.map(function (km) {
|
|
56
|
-
if (km.entityTypeName)
|
|
57
|
-
return km; // it's already lower case
|
|
58
|
-
let kmHack = km;
|
|
59
|
-
let entityTypeName = breeze.MetadataStore.normalizeTypeName(kmHack.EntityTypeName);
|
|
60
|
-
return { entityTypeName: entityTypeName, tempValue: kmHack.TempValue, realValue: kmHack.RealValue };
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
if (deletedKeys.length) {
|
|
64
|
-
deletedKeys = deletedKeys.map(function (dk) {
|
|
65
|
-
if (dk.entityTypeName)
|
|
66
|
-
return dk; // it's already lower case
|
|
67
|
-
let entityTypeName = breeze.MetadataStore.normalizeTypeName(dk.EntityTypeName);
|
|
68
|
-
// NOTE the dk.KeyValue => keyValues transition - needed because we are deserializing an .NET EntityKey
|
|
69
|
-
return { entityTypeName: entityTypeName, keyValues: dk.KeyValue };
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
return { entities: entities, keyMappings: keyMappings, deletedKeys: deletedKeys };
|
|
73
|
-
}
|
|
74
|
-
jsonResultsAdapter = new breeze.JsonResultsAdapter({
|
|
75
|
-
name: "webApi_default",
|
|
76
|
-
visitNode: function (node, mappingContext, nodeContext) {
|
|
77
|
-
if (node == null)
|
|
78
|
-
return {};
|
|
79
|
-
let entityTypeName = breeze.MetadataStore.normalizeTypeName(node.$type);
|
|
80
|
-
let entityType = entityTypeName && mappingContext.entityManager.metadataStore.getEntityType(entityTypeName, true);
|
|
81
|
-
let propertyName = nodeContext.propertyName;
|
|
82
|
-
let ignore = propertyName && propertyName.substr(0, 1) === "$";
|
|
83
|
-
return {
|
|
84
|
-
entityType: entityType,
|
|
85
|
-
nodeId: node.$id,
|
|
86
|
-
nodeRefId: node.$ref,
|
|
87
|
-
ignore: ignore
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
/** Transform data properties while unwrapping entities before save */
|
|
93
|
-
function transformValue(prop, val) {
|
|
94
|
-
if (prop.dataType === breeze.DataType.DateOnly) {
|
|
95
|
-
val = breeze.DataType.toDateOnlyString(val);
|
|
96
|
-
}
|
|
97
|
-
return val;
|
|
98
|
-
}
|
|
99
|
-
breeze.config.registerAdapter("dataService", DataServiceWebApiAdapter);
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci1kYXRhLXNlcnZpY2Utd2ViYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FkYXB0ZXItZGF0YS1zZXJ2aWNlLXdlYmFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQztBQUN4Qyw2REFBNkQ7QUFFN0QsY0FBYztBQUNkLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxNQUFNLENBQUMsMEJBQTBCO0lBRTdFO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUE0QjtRQUMxQyxNQUFNLEdBQUcsTUFBTSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUM7UUFDakMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztRQUNoRSxPQUFPLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxhQUFhLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBNkIsQ0FBQztJQUNyRyxDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCLGtCQUFrQixDQUFDLFdBQStCLEVBQUUsVUFBNkI7UUFDL0UsSUFBSSx3QkFBd0IsR0FBRyxJQUFJLENBQUMsK0JBQStCLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzdGLElBQUksRUFBRSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUM7UUFDbkMsSUFBSSxhQUFhLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUNyQyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ3ZCLElBQUksYUFBYSxHQUFRLEVBQUUsQ0FBQztRQUM1QixhQUFhLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUU7WUFDOUQsSUFBSSxTQUFTLEdB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S0FFRixDQUFDLENBQUM7Q0FFSjtBQUVELHNFQUFzRTtBQUN0RSxTQUFTLGNBQWMsQ0FBQyxJQUF5QixFQUFFLEdBQVE7SUFDekQsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFO1FBQzlDLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzdDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBR0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLHdCQUF3QixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBicmVlemUgZnJvbSAnYnJlZXplLWNsaWVudCc7XHJcbi8vIGltcG9ydCB7IEpzb25SZXN1bHRzQWRhcHRlciwgS2V5TWFwcGluZyB9IGZyb20gJy4vYnJlZXplJztcclxuXHJcbi8qKiBAaGlkZGVuICovXHJcbmV4cG9ydCBjbGFzcyBEYXRhU2VydmljZVdlYkFwaUFkYXB0ZXIgZXh0ZW5kcyBicmVlemUuQWJzdHJhY3REYXRhU2VydmljZUFkYXB0ZXIge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgICB0aGlzLm5hbWUgPSBcIndlYkFwaVwiO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHJlZ2lzdGVyKGNvbmZpZz86IGJyZWV6ZS5CcmVlemVDb25maWcpIHtcclxuICAgIGNvbmZpZyA9IGNvbmZpZyB8fCBicmVlemUuY29uZmlnO1xyXG4gICAgY29uZmlnLnJlZ2lzdGVyQWRhcHRlcihcImRhdGFTZXJ2aWNlXCIsIERhdGFTZXJ2aWNlV2ViQXBpQWRhcHRlcik7XHJcbiAgICByZXR1cm4gY29uZmlnLmluaXRpYWxpemVBZGFwdGVySW5zdGFuY2UoXCJkYXRhU2VydmljZVwiLCBcIndlYkFwaVwiLCB0cnVlKSBhcyBEYXRhU2VydmljZVdlYkFwaUFkYXB0ZXI7XHJcbiAgfVxyXG5cclxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICBfcHJlcGFyZVNhdmVCdW5kbGUoc2F2ZUNvbnRleHQ6IGJyZWV6ZS5TYXZlQ29udGV4dCwgc2F2ZUJ1bmRsZTogYnJlZXplLlNhdmVCdW5kbGUpIHtcclxuICAgIGxldCBjaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3IgPSB0aGlzLl9jcmVhdGVDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3Ioc2F2ZUNvbnRleHQsIHNhdmVCdW5kbGUpO1xyXG4gICAgbGV0IGVtID0gc2F2ZUNvbnRleHQuZW50aXR5TWFuYWdlcjtcclxuICAgIGxldCBtZXRhZGF0YVN0b3JlID0gZW0ubWV0YWRhdGFTdG9yZTtcclxuICAgIGxldCBoZWxwZXIgPSBlbS5oZWxwZXI7XHJcbiAgICBsZXQgc2VyU2F2ZUJ1bmRsZTogYW55ID0ge307XHJcbiAgICBzZXJTYXZlQnVuZGxlLmVudGl0aWVzID0gc2F2ZUJ1bmRsZS5lbnRpdGllcy5tYXAoZnVuY3Rpb24gKGUsIGl4KSB7XHJcbiAgICAgIGxldCByYXdFbnRpdHkgPSBoZWxwZXIudW53cmFwSW5zdGFuY2UoZSwgdHJhbnNmb3JtVmFsdWUpO1xyXG5cclxuICAgICAgbGV0IGF1dG9HZW5lcmF0ZWRLZXk6IE9iamVjdCB8IHVuZGVmaW5lZDtcclxuICAgICAgaWYgKGUuZW50aXR5VHlwZS5hdXRvR2VuZXJhdGVkS2V5VHlwZSAhPT0gYnJlZXplLkF1dG9HZW5lcmF0ZWRLZXlUeXBlLk5vbmUpIHtcclxuICAgICAgICBhdXRvR2VuZXJhdGVkS2V5ID0ge1xyXG4gICAgICAgICAgcHJvcGVydHlOYW1lOiBlLmVudGl0eVR5cGUua2V5UHJvcGVydGllc1swXS5uYW1lT25TZXJ2ZXIsXHJcbiAgICAgICAgICBhdXRvR2VuZXJhdGVkS2V5VHlwZTogZS5lbnRpdHlUeXBlLmF1dG9HZW5lcmF0ZWRLZXlUeXBlLm5hbWVcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgb3JpZ2luYWxWYWx1ZXNPblNlcnZlciA9IGhlbHBlci51bndyYXBPcmlnaW5hbFZhbHVlcyhlLCBtZXRhZGF0YVN0b3JlKTtcclxuICAgICAgcmF3RW50aXR5LmVudGl0eUFzcGVjdCA9IHtcclxuICAgICAgICBlbnRpdHlUeXBlTmFtZTogZS5lbnRpdHlUeXBlLm5hbWUsXHJcbiAgICAgICAgZGVmYXVsdFJlc291cmNlTmFtZTogZS5lbnRpdHlUeXBlLmRlZmF1bHRSZXNvdXJjZU5hbWUsXHJcbiAgICAgICAgZW50aXR5U3RhdGU6IGUuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlLm5hbWUsXHJcbiAgICAgICAgb3JpZ2luYWxWYWx1ZXNNYXA6IG9yaWdpbmFsVmFsdWVzT25TZXJ2ZXIsXHJcbiAgICAgICAgYXV0b0dlbmVyYXRlZEtleTogYXV0b0dlbmVyYXRlZEtleVxyXG4gICAgICB9O1xyXG4gICAgICByYXdFbnRpdHkgPSBjaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3IuZ2V0UmVxdWVzdChyYXdFbnRpdHksIGUsIGl4KTtcclxuICAgICAgcmV0dXJuIHJhd0VudGl0eTtcclxuICAgIH0pO1xyXG5cclxuICAgIHNlclNhdmVCdW5kbGUuc2F2ZU9wdGlvbnMgPSB7IHRhZzogc2F2ZUJ1bmRsZS5zYXZlT3B0aW9ucy50YWcgfTtcclxuICAgIGNoYW5nZVJlcXVlc3RJbnRlcmNlcHRvci5kb25lKHNlclNhdmVCdW5kbGUuZW50aXRpZXMpO1xyXG4gICAgcmV0dXJuIHNlclNhdmVCdW5kbGU7XHJcbiAgfVxyXG5cclxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICBfcHJlcGFyZVNhdmVSZXN1bHQoc2F2ZUNvbnRleHQ6IGJyZWV6ZS5TYXZlQ29udGV4dCwgZGF0YTogYW55KSB7XHJcbiAgICAvLyB1c2UgdGhlIGpzb25SZXN1bHRBZGFwdGVyIHRvIGV4dHJhY3RSZXN1bHRzIGFuZCBleHRyYWN0S2V5TWFwcGluZ3NcclxuICAgIGxldCBqcmEgPSBzYXZlQ29udGV4dC5kYXRhU2VydmljZS5qc29uUmVzdWx0c0FkYXB0ZXIgfHwgdGhpcy5qc29uUmVzdWx0c0FkYXB0ZXI7XHJcbiAgICBsZXQgZW50aXRpZXMgPSBqcmEuZXh0cmFjdFNhdmVSZXN1bHRzKGRhdGEpIHx8IFtdO1xyXG4gICAgbGV0IGtleU1hcHBpbmdzOiBicmVlemUuS2V5TWFwcGluZ1tdID0ganJhLmV4dHJhY3RLZXlNYXBwaW5ncyhkYXRhKSB8fCBbXTtcclxuICAgIGxldCBkZWxldGVkS2V5cyA9IGpyYS5leHRyYWN0RGVsZXRlZEtleXMgPyAoanJhLmV4dHJhY3REZWxldGVkS2V5cyhkYXRhKSkgfHwgW10gOiBbXTtcclxuXHJcbiAgICBpZiAoa2V5TWFwcGluZ3MubGVuZ3RoKSB7XHJcbiAgICAgIC8vIEhBQ0s6IG5lZWQgdG8gY2hhbmdlIHRoZSAnY2FzZScgb2YgcHJvcGVydGllcyBpbiB0aGUgc2F2ZVJlc3VsdFxyXG4gICAgICAvLyBidXQgS2V5TWFwcGluZyBwcm9wZXJ0aWVzIGludGVybmFsbHkgYXJlIHN0aWxsIHVjYXNlLiB1Z2guLi5cclxuICAgICAga2V5TWFwcGluZ3MgPSBrZXlNYXBwaW5ncy5tYXAoZnVuY3Rpb24gKGttKSB7XHJcbiAgICAgICAgaWYgKGttLmVudGl0eVR5cGVOYW1lKSByZXR1cm4ga207IC8vIGl0J3MgYWxyZWFkeSBsb3dlciBjYXNlXHJcbiAgICAgICAgbGV0IGttSGFjayA9IGttIGFzIGFueTtcclxuICAgICAgICBsZXQgZW50aXR5VHlwZU5hbWUgPSBicmVlemUuTWV0YWRhdGFTdG9yZS5ub3JtYWxpemVUeXBlTmFtZShrbUhhY2suRW50aXR5VHlwZU5hbWUpO1xyXG4gICAgICAgIHJldHVybiB7IGVudGl0eVR5cGVOYW1lOiBlbnRpdHlUeXBlTmFtZSwgdGVtcFZhbHVlOiBrbUhhY2suVGVtcFZhbHVlLCByZWFsVmFsdWU6IGttSGFjay5SZWFsVmFsdWUgfTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRlbGV0ZWRLZXlzLmxlbmd0aCkge1xyXG4gICAgICBkZWxldGVkS2V5cyA9IGRlbGV0ZWRLZXlzLm1hcChmdW5jdGlvbiAoZGspIHtcclxuICAgICAgICBpZiAoZGsuZW50aXR5VHlwZU5hbWUpIHJldHVybiBkazsgLy8gaXQncyBhbHJlYWR5IGxvd2VyIGNhc2VcclxuICAgICAgICBsZXQgZW50aXR5VHlwZU5hbWUgPSBicmVlemUuTWV0YWRhdGFTdG9yZS5ub3JtYWxpemVUeXBlTmFtZShkay5FbnRpdHlUeXBlTmFtZSk7XHJcbiAgICAgICAgLy8gTk9URSB0aGUgZGsuS2V5VmFsdWUgPT4ga2V5VmFsdWVzIHRyYW5zaXRpb24gLSBuZWVkZWQgYmVjYXVzZSB3ZSBhcmUgZGVzZXJpYWxpemluZyBhbiAuTkVUIEVudGl0eUtleVxyXG4gICAgICAgIHJldHVybiB7IGVudGl0eVR5cGVOYW1lOiBlbnRpdHlUeXBlTmFtZSwga2V5VmFsdWVzOiBkay5LZXlWYWx1ZSB9O1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4geyBlbnRpdGllczogZW50aXRpZXMsIGtleU1hcHBpbmdzOiBrZXlNYXBwaW5ncywgZGVsZXRlZEtleXM6IGRlbGV0ZWRLZXlzIH07XHJcblxyXG4gIH1cclxuXHJcbiAganNvblJlc3VsdHNBZGFwdGVyOiBicmVlemUuSnNvblJlc3VsdHNBZGFwdGVyID0gbmV3IGJyZWV6ZS5Kc29uUmVzdWx0c0FkYXB0ZXIoe1xyXG5cclxuICAgIG5hbWU6IFwid2ViQXBpX2RlZmF1bHRcIixcclxuXHJcbiAgICB2aXNpdE5vZGU6IGZ1bmN0aW9uIChub2RlOiBhbnksIG1hcHBpbmdDb250ZXh0OiBicmVlemUuTWFwcGluZ0NvbnRleHQsIG5vZGVDb250ZXh0OiBicmVlemUuTm9kZUNvbnRleHQpIHtcclxuICAgICAgaWYgKG5vZGUgPT0gbnVsbCkgcmV0dXJuIHt9O1xyXG4gICAgICBsZXQgZW50aXR5VHlwZU5hbWUgPSBicmVlemUuTWV0YWRhdGFTdG9yZS5ub3JtYWxpemVUeXBlTmFtZShub2RlLiR0eXBlKTtcclxuICAgICAgbGV0IGVudGl0eVR5cGUgPSBlbnRpdHlUeXBlTmFtZSAmJiBtYXBwaW5nQ29udGV4dC5lbnRpdHlNYW5hZ2VyLm1ldGFkYXRhU3RvcmUuZ2V0RW50aXR5VHlwZShlbnRpdHlUeXBlTmFtZSwgdHJ1ZSk7XHJcbiAgICAgIGxldCBwcm9wZXJ0eU5hbWUgPSBub2RlQ29udGV4dC5wcm9wZXJ0eU5hbWU7XHJcbiAgICAgIGxldCBpZ25vcmUgPSBwcm9wZXJ0eU5hbWUgJiYgcHJvcGVydHlOYW1lLnN1YnN0cigwLCAxKSA9PT0gXCIkXCI7XHJcblxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGVudGl0eVR5cGU6IGVudGl0eVR5cGUsXHJcbiAgICAgICAgbm9kZUlkOiBub2RlLiRpZCxcclxuICAgICAgICBub2RlUmVmSWQ6IG5vZGUuJHJlZixcclxuICAgICAgICBpZ25vcmU6IGlnbm9yZVxyXG4gICAgICB9IGFzIGFueTtcclxuICAgIH1cclxuXHJcbiAgfSk7XHJcblxyXG59XHJcblxyXG4vKiogVHJhbnNmb3JtIGRhdGEgcHJvcGVydGllcyB3aGlsZSB1bndyYXBwaW5nIGVudGl0aWVzIGJlZm9yZSBzYXZlICovXHJcbmZ1bmN0aW9uIHRyYW5zZm9ybVZhbHVlKHByb3A6IGJyZWV6ZS5EYXRhUHJvcGVydHksIHZhbDogYW55KSB7XHJcbiAgaWYgKHByb3AuZGF0YVR5cGUgPT09IGJyZWV6ZS5EYXRhVHlwZS5EYXRlT25seSkge1xyXG4gICAgdmFsID0gYnJlZXplLkRhdGFUeXBlLnRvRGF0ZU9ubHlTdHJpbmcodmFsKTtcclxuICB9XHJcbiAgcmV0dXJuIHZhbDtcclxufVxyXG5cclxuXHJcbmJyZWV6ZS5jb25maWcucmVnaXN0ZXJBZGFwdGVyKFwiZGF0YVNlcnZpY2VcIiwgRGF0YVNlcnZpY2VXZWJBcGlBZGFwdGVyKTtcclxuIl19
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './adapter-data-service-webapi';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlZXplLWNsaWVudC1hZGFwdGVyLWRhdGEtc2VydmljZS13ZWJhcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYnJlZXplLWNsaWVudC1hZGFwdGVyLWRhdGEtc2VydmljZS13ZWJhcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2FkYXB0ZXItZGF0YS1zZXJ2aWNlLXdlYmFwaSc7XG4iXX0=
|
|
@@ -1,269 +0,0 @@
|
|
|
1
|
-
import * as breeze from 'breeze-client';
|
|
2
|
-
let core = breeze.core;
|
|
3
|
-
export class ModelLibraryBackingStoreAdapter {
|
|
4
|
-
name;
|
|
5
|
-
constructor() {
|
|
6
|
-
this.name = "backingStore";
|
|
7
|
-
}
|
|
8
|
-
static register(config) {
|
|
9
|
-
config = config || breeze.config;
|
|
10
|
-
config.registerAdapter("modelLibrary", ModelLibraryBackingStoreAdapter);
|
|
11
|
-
return config.initializeAdapterInstance("modelLibrary", "backingStore", true);
|
|
12
|
-
}
|
|
13
|
-
initialize() {
|
|
14
|
-
}
|
|
15
|
-
getTrackablePropertyNames(entity) {
|
|
16
|
-
let names = [];
|
|
17
|
-
for (let p in entity) {
|
|
18
|
-
if (p === "entityAspect" || p === "entityType")
|
|
19
|
-
continue;
|
|
20
|
-
if (p === "_$typeName" || p === "_pendingSets" || p === "_backingStore")
|
|
21
|
-
continue;
|
|
22
|
-
let val = entity[p];
|
|
23
|
-
if (!core.isFunction(val)) {
|
|
24
|
-
names.push(p);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
return names;
|
|
28
|
-
}
|
|
29
|
-
// This method is called during Metadata initialization
|
|
30
|
-
initializeEntityPrototype(proto) {
|
|
31
|
-
proto.getProperty = function (propertyName) {
|
|
32
|
-
return this[propertyName];
|
|
33
|
-
};
|
|
34
|
-
proto.setProperty = function (propertyName, value) {
|
|
35
|
-
//if (!this._backingStore.hasOwnProperty(propertyName)) {
|
|
36
|
-
// throw new Error("Unknown property name:" + propertyName);
|
|
37
|
-
//}
|
|
38
|
-
this[propertyName] = value;
|
|
39
|
-
// allow setProperty chaining.
|
|
40
|
-
return this;
|
|
41
|
-
};
|
|
42
|
-
movePropDefsToProto(proto);
|
|
43
|
-
}
|
|
44
|
-
// This method is called when an EntityAspect is first created - this will occur as part of the entityType.createEntity call.
|
|
45
|
-
// which can be called either directly or via standard query materialization
|
|
46
|
-
// entity is either an entity or a complexObject
|
|
47
|
-
startTracking(entity, proto) {
|
|
48
|
-
// can't touch the normal property sets within this method - access the backingStore directly instead.
|
|
49
|
-
let bs = movePropsToBackingStore(entity);
|
|
50
|
-
// assign default values to the entity
|
|
51
|
-
let stype = breeze.EntityAspect.isEntity(entity) ? entity.entityType : entity.complexType;
|
|
52
|
-
stype.getProperties().forEach(function (prop) {
|
|
53
|
-
let propName = prop.name;
|
|
54
|
-
let val = entity[propName];
|
|
55
|
-
if (prop instanceof breeze.DataProperty) {
|
|
56
|
-
if (prop.isComplexProperty) {
|
|
57
|
-
if (prop.isScalar) {
|
|
58
|
-
val = prop.dataType._createInstanceCore(entity, prop);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
val = breeze.makeComplexArray([], entity, prop);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
else if (!prop.isScalar) {
|
|
65
|
-
val = breeze.makePrimitiveArray([], entity, prop);
|
|
66
|
-
}
|
|
67
|
-
else if (val === undefined) {
|
|
68
|
-
val = prop.defaultValue;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
else if (prop.isNavigationProperty) {
|
|
72
|
-
if (val !== undefined && val !== null) {
|
|
73
|
-
throw new Error("Cannot assign a navigation property in an entity ctor.: " + propName);
|
|
74
|
-
}
|
|
75
|
-
if (prop.isScalar) {
|
|
76
|
-
// TODO: change this to nullstob later.
|
|
77
|
-
val = null;
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
val = breeze.makeRelationArray([], entity, prop);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
throw new Error("unknown property: " + propName);
|
|
85
|
-
}
|
|
86
|
-
// can't touch the normal property sets within this method (IE9 Bug) - so we access the backingStore directly instead.
|
|
87
|
-
// otherwise we could just do
|
|
88
|
-
// entity[propName] = val
|
|
89
|
-
// after all of the interception logic had been injected.
|
|
90
|
-
if (prop.isSettable || prop.isNavigationProperty) {
|
|
91
|
-
bs[propName] = val;
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
breeze.config.registerAdapter("modelLibrary", ModelLibraryBackingStoreAdapter);
|
|
97
|
-
// private methods
|
|
98
|
-
// This method is called during Metadata initialization to correctly "wrap" properties.
|
|
99
|
-
function movePropDefsToProto(proto) {
|
|
100
|
-
let stype = (proto.entityType || proto.complexType);
|
|
101
|
-
let extra = stype._extra;
|
|
102
|
-
let alreadyWrapped = extra.alreadyWrappedProps || {};
|
|
103
|
-
stype.getProperties().forEach(function (prop) {
|
|
104
|
-
let propName = prop.name;
|
|
105
|
-
// we only want to wrap props that haven't already been wrapped
|
|
106
|
-
if (alreadyWrapped[propName])
|
|
107
|
-
return;
|
|
108
|
-
// If property is already defined on the prototype then wrap it in another propertyDescriptor.
|
|
109
|
-
// otherwise create a propDescriptor for it.
|
|
110
|
-
let descr;
|
|
111
|
-
if (propName in proto) {
|
|
112
|
-
descr = wrapPropDescription(proto, prop);
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
descr = makePropDescription(proto, prop);
|
|
116
|
-
}
|
|
117
|
-
// descr will be null for a wrapped descr that is not configurable
|
|
118
|
-
if (descr != null) {
|
|
119
|
-
Object.defineProperty(proto, propName, descr);
|
|
120
|
-
}
|
|
121
|
-
alreadyWrapped[propName] = true;
|
|
122
|
-
});
|
|
123
|
-
extra.alreadyWrappedProps = alreadyWrapped;
|
|
124
|
-
}
|
|
125
|
-
// This method is called when an instance is first created via materialization or createEntity.
|
|
126
|
-
// this method cannot be called while a 'defineProperty' accessor is executing
|
|
127
|
-
// because of IE bug mentioned above.
|
|
128
|
-
function movePropsToBackingStore(instance) {
|
|
129
|
-
let bs = getBackingStore(instance);
|
|
130
|
-
let proto = Object.getPrototypeOf(instance);
|
|
131
|
-
let stype = (proto.entityType || proto.complexType);
|
|
132
|
-
stype.getProperties().forEach(function (prop) {
|
|
133
|
-
let propName = prop.name;
|
|
134
|
-
if (prop.isUnmapped) {
|
|
135
|
-
// insure that any unmapped properties that were added after entityType
|
|
136
|
-
// was first created are wrapped with a property descriptor.
|
|
137
|
-
if (!core.getPropertyDescriptor(proto, propName)) {
|
|
138
|
-
let descr = makePropDescription(proto, prop);
|
|
139
|
-
Object.defineProperty(proto, propName, descr);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
if (!instance.hasOwnProperty(propName))
|
|
143
|
-
return;
|
|
144
|
-
// pulls off the value, removes the instance property and then rewrites it via ES5 accessor
|
|
145
|
-
let value = instance[propName];
|
|
146
|
-
delete instance[propName];
|
|
147
|
-
instance[propName] = value;
|
|
148
|
-
});
|
|
149
|
-
return bs;
|
|
150
|
-
}
|
|
151
|
-
function makePropDescription(proto, property) {
|
|
152
|
-
let propName = property.name;
|
|
153
|
-
let pendingStores = proto._pendingBackingStores;
|
|
154
|
-
if (!pendingStores) {
|
|
155
|
-
pendingStores = [];
|
|
156
|
-
proto._pendingBackingStores = pendingStores;
|
|
157
|
-
}
|
|
158
|
-
let descr = {
|
|
159
|
-
get: function () {
|
|
160
|
-
let bs = this._backingStore || getBackingStore(this);
|
|
161
|
-
return bs[propName];
|
|
162
|
-
},
|
|
163
|
-
set: function (value) {
|
|
164
|
-
// IE9 cannot touch instance._backingStore here
|
|
165
|
-
let bs = this._backingStore || getPendingBackingStore(this);
|
|
166
|
-
let accessorFn = getAccessorFn(bs, propName);
|
|
167
|
-
this._$interceptor(property, value, accessorFn);
|
|
168
|
-
},
|
|
169
|
-
enumerable: true,
|
|
170
|
-
configurable: true
|
|
171
|
-
};
|
|
172
|
-
descr.set.rawSet = function (value) {
|
|
173
|
-
let bs = this._backingStore || getPendingBackingStore(this);
|
|
174
|
-
let accessorFn = getAccessorFn(bs, propName);
|
|
175
|
-
accessorFn(value);
|
|
176
|
-
};
|
|
177
|
-
return descr;
|
|
178
|
-
}
|
|
179
|
-
function getAccessorFn(bs, propName) {
|
|
180
|
-
return function () {
|
|
181
|
-
if (arguments.length === 0) {
|
|
182
|
-
return bs[propName];
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
bs[propName] = arguments[0];
|
|
186
|
-
return undefined;
|
|
187
|
-
}
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
function wrapPropDescription(proto, property) {
|
|
191
|
-
if (!proto.hasOwnProperty(property.name)) {
|
|
192
|
-
let nextProto = Object.getPrototypeOf(proto);
|
|
193
|
-
return wrapPropDescription(nextProto, property);
|
|
194
|
-
}
|
|
195
|
-
let propDescr = Object.getOwnPropertyDescriptor(proto, property.name);
|
|
196
|
-
if (!propDescr)
|
|
197
|
-
return undefined;
|
|
198
|
-
// if not configurable; we can't touch it - so leave.
|
|
199
|
-
if (!propDescr.configurable)
|
|
200
|
-
return undefined;
|
|
201
|
-
// if a data descriptor - don't change it - this is basically a static property - i.e. defined on every instance of the type with the same value.
|
|
202
|
-
if (propDescr.value)
|
|
203
|
-
return undefined;
|
|
204
|
-
// if a read only property descriptor - no need to change it.
|
|
205
|
-
if (!propDescr.set)
|
|
206
|
-
return undefined;
|
|
207
|
-
let localAccessorFn = function (entity) {
|
|
208
|
-
return function () {
|
|
209
|
-
if (!propDescr)
|
|
210
|
-
return undefined;
|
|
211
|
-
if (arguments.length === 0) {
|
|
212
|
-
return propDescr.get.bind(entity)();
|
|
213
|
-
}
|
|
214
|
-
else {
|
|
215
|
-
let set = propDescr.set;
|
|
216
|
-
let rawSet = set.rawSet || set;
|
|
217
|
-
rawSet.bind(entity)(arguments[0]);
|
|
218
|
-
return undefined;
|
|
219
|
-
}
|
|
220
|
-
};
|
|
221
|
-
};
|
|
222
|
-
let newDescr = {
|
|
223
|
-
get: function () {
|
|
224
|
-
if (!propDescr)
|
|
225
|
-
return undefined;
|
|
226
|
-
return propDescr.get.bind(this)();
|
|
227
|
-
},
|
|
228
|
-
set: function (value) {
|
|
229
|
-
this._$interceptor(property, value, localAccessorFn(this));
|
|
230
|
-
},
|
|
231
|
-
enumerable: propDescr.enumerable,
|
|
232
|
-
configurable: true
|
|
233
|
-
};
|
|
234
|
-
newDescr.set.rawSet = propDescr.set;
|
|
235
|
-
return newDescr;
|
|
236
|
-
}
|
|
237
|
-
function getBackingStore(instance) {
|
|
238
|
-
let proto = Object.getPrototypeOf(instance);
|
|
239
|
-
processPendingStores(proto);
|
|
240
|
-
let bs = instance._backingStore;
|
|
241
|
-
if (!bs) {
|
|
242
|
-
bs = {};
|
|
243
|
-
instance._backingStore = bs;
|
|
244
|
-
}
|
|
245
|
-
return bs;
|
|
246
|
-
}
|
|
247
|
-
// workaround for IE9 bug where instance properties cannot be changed when executing a property 'set' method.
|
|
248
|
-
function getPendingBackingStore(instance) {
|
|
249
|
-
let proto = Object.getPrototypeOf(instance);
|
|
250
|
-
let pendingStores = proto._pendingBackingStores;
|
|
251
|
-
let pending = core.arrayFirst(pendingStores, function (pending) {
|
|
252
|
-
return pending.entity === instance;
|
|
253
|
-
});
|
|
254
|
-
if (pending)
|
|
255
|
-
return pending.backingStore;
|
|
256
|
-
let bs = {};
|
|
257
|
-
pendingStores.push({ entity: instance, backingStore: bs });
|
|
258
|
-
return bs;
|
|
259
|
-
}
|
|
260
|
-
function processPendingStores(proto) {
|
|
261
|
-
let pendingStores = proto._pendingBackingStores;
|
|
262
|
-
if (pendingStores) {
|
|
263
|
-
pendingStores.forEach(function (pending) {
|
|
264
|
-
pending.entity._backingStore = pending.backingStore;
|
|
265
|
-
});
|
|
266
|
-
pendingStores.length = 0;
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci1tb2RlbC1saWJyYXJ5LWJhY2tpbmctc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWRhcHRlci1tb2RlbC1saWJyYXJ5LWJhY2tpbmctc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFFeEMsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQztBQUV2QixNQUFNLE9BQU8sK0JBQStCO0lBQzFDLElBQUksQ0FBUztJQUViO1FBQ0UsSUFBSSxDQUFDLElBQUksR0FBRyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBNEI7UUFDMUMsTUFBTSxHQUFHLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxlQUFlLENBQUMsY0FBYyxFQUFFLCtCQUErQixDQUFDLENBQUM7UUFDeEUsT0FBTyxNQUFNLENBQUMseUJBQXlCLENBQUMsY0FBYyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQW9DLENBQUM7SUFDbkgsQ0FBQztJQUVELFVBQVU7SUFDVixDQUFDO0lBRUQseUJBQXlCLENBQUMsTUFBcUI7UUFDN0MsSUFBSSxLQUFLLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLEtBQUssSUFBSSxDQUFDLElBQUksTUFBTSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxLQUFLLGNBQWMsSUFBSSxDQUFDLEtBQUssWUFBWTtnQkFBRSxTQUFTO1lBQ3pELElBQUksQ0FBQyxLQUFLLFlBQVksSUFBSSxDQUFDLEtBQUssY0FBYyxJQUFJLENBQUMsS0FBSyxlQUFlO2dCQUFFLFNBQVM7WUFDbEYsSUFBSSxHQUFHLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUN6QixLQUFLLENBQUMs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RztBQUM3RyxTQUFTLHNCQUFzQixDQUFDLFFBQWE7SUFDM0MsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM1QyxJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUMscUJBQXFCLENBQUM7SUFDaEQsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsVUFBVSxPQUFPO1FBQzVELE9BQU8sT0FBTyxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUM7SUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDSCxJQUFJLE9BQU87UUFBRSxPQUFRLE9BQWUsQ0FBQyxZQUFZLENBQUM7SUFDbEQsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ1osYUFBYSxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0QsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxLQUFVO0lBQ3RDLElBQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQztJQUNoRCxJQUFJLGFBQWEsRUFBRTtRQUNqQixhQUFhLENBQUMsT0FBTyxDQUFDLFVBQVUsT0FBWTtZQUMxQyxPQUFPLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ0gsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7S0FDMUI7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYnJlZXplIGZyb20gJ2JyZWV6ZS1jbGllbnQnO1xyXG5cclxubGV0IGNvcmUgPSBicmVlemUuY29yZTtcclxuXHJcbmV4cG9ydCBjbGFzcyBNb2RlbExpYnJhcnlCYWNraW5nU3RvcmVBZGFwdGVyIGltcGxlbWVudHMgYnJlZXplLk1vZGVsTGlicmFyeUFkYXB0ZXIge1xyXG4gIG5hbWU6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLm5hbWUgPSBcImJhY2tpbmdTdG9yZVwiO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHJlZ2lzdGVyKGNvbmZpZz86IGJyZWV6ZS5CcmVlemVDb25maWcpIHtcclxuICAgIGNvbmZpZyA9IGNvbmZpZyB8fCBicmVlemUuY29uZmlnO1xyXG4gICAgY29uZmlnLnJlZ2lzdGVyQWRhcHRlcihcIm1vZGVsTGlicmFyeVwiLCBNb2RlbExpYnJhcnlCYWNraW5nU3RvcmVBZGFwdGVyKTtcclxuICAgIHJldHVybiBjb25maWcuaW5pdGlhbGl6ZUFkYXB0ZXJJbnN0YW5jZShcIm1vZGVsTGlicmFyeVwiLCBcImJhY2tpbmdTdG9yZVwiLCB0cnVlKSBhcyBNb2RlbExpYnJhcnlCYWNraW5nU3RvcmVBZGFwdGVyO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZSgpIHtcclxuICB9XHJcblxyXG4gIGdldFRyYWNrYWJsZVByb3BlcnR5TmFtZXMoZW50aXR5OiBicmVlemUuRW50aXR5KSB7XHJcbiAgICBsZXQgbmFtZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICBmb3IgKGxldCBwIGluIGVudGl0eSkge1xyXG4gICAgICBpZiAocCA9PT0gXCJlbnRpdHlBc3BlY3RcIiB8fCBwID09PSBcImVudGl0eVR5cGVcIikgY29udGludWU7XHJcbiAgICAgIGlmIChwID09PSBcIl8kdHlwZU5hbWVcIiB8fCBwID09PSBcIl9wZW5kaW5nU2V0c1wiIHx8IHAgPT09IFwiX2JhY2tpbmdTdG9yZVwiKSBjb250aW51ZTtcclxuICAgICAgbGV0IHZhbCA9IGVudGl0eVtwXTtcclxuICAgICAgaWYgKCFjb3JlLmlzRnVuY3Rpb24odmFsKSkge1xyXG4gICAgICAgIG5hbWVzLnB1c2gocCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBuYW1lcztcclxuICB9XHJcblxyXG4gIC8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBkdXJpbmcgTWV0YWRhdGEgaW5pdGlhbGl6YXRpb25cclxuICBpbml0aWFsaXplRW50aXR5UHJvdG90eXBlKHByb3RvOiBhbnkpIHtcclxuXHJcbiAgICBwcm90by5nZXRQcm9wZXJ0eSA9IGZ1bmN0aW9uIChwcm9wZXJ0eU5hbWU6IHN0cmluZykge1xyXG4gICAgICByZXR1cm4gdGhpc1twcm9wZXJ0eU5hbWVdO1xyXG4gICAgfTtcclxuXHJcbiAgICBwcm90by5zZXRQcm9wZXJ0eSA9IGZ1bmN0aW9uIChwcm9wZXJ0eU5hbWU6IHN0cmluZywgdmFsdWU6IGFueSkge1xyXG4gICAgICAvL2lmICghdGhpcy5fYmFja2luZ1N0b3JlLmhhc093blByb3BlcnR5KHByb3BlcnR5TmFtZSkpIHtcclxuICAgICAgLy8gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBwcm9wZXJ0eSBuYW1lOlwiICsgcHJvcGVydHlOYW1lKTtcclxuICAgICAgLy99XHJcbiAgICAgIHRoaXNbcHJvcGVydHlOYW1lXSA9IHZhbHVlO1xyXG4gICAgICAvLyBhbGxvdyBzZXRQcm9wZXJ0eSBjaGFpbmluZy5cclxuICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9O1xyXG5cclxuICAgIG1vdmVQcm9wRGVmc1RvUHJvdG8ocHJvdG8pO1xyXG4gIH1cclxuXHJcbiAgLy8gVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gRW50aXR5QXNwZWN0IGlzIGZpcnN0IGNyZWF0ZWQgLSB0aGlzIHdpbGwgb2NjdXIgYXMgcGFydCBvZiB0aGUgZW50aXR5VHlwZS5jcmVhdGVFbnRpdHkgY2FsbC5cclxuICAvLyB3aGljaCBjYW4gYmUgY2FsbGVkIGVpdGhlciBkaXJlY3RseSBvciB2aWEgc3RhbmRhcmQgcXVlcnkgbWF0ZXJpYWxpemF0aW9uXHJcblxyXG4gIC8vIGVudGl0eSBpcyBlaXRoZXIgYW4gZW50aXR5IG9yIGEgY29tcGxleE9iamVjdFxyXG4gIHN0YXJ0VHJhY2tpbmcoZW50aXR5OiBicmVlemUuU3RydWN0dXJhbE9iamVjdCwgcHJvdG86IGFueSkge1xyXG4gICAgLy8gY2FuJ3QgdG91Y2ggdGhlIG5vcm1hbCBwcm9wZXJ0eSBzZXRzIHdpdGhpbiB0aGlzIG1ldGhvZCAtIGFjY2VzcyB0aGUgYmFja2luZ1N0b3JlIGRpcmVjdGx5IGluc3RlYWQuXHJcbiAgICBsZXQgYnMgPSBtb3ZlUHJvcHNUb0JhY2tpbmdTdG9yZShlbnRpdHkpO1xyXG5cclxuICAgIC8vIGFzc2lnbiBkZWZhdWx0IHZhbHVlcyB0byB0aGUgZW50aXR5XHJcbiAgICBsZXQgc3R5cGUgPSBicmVlemUuRW50aXR5QXNwZWN0LmlzRW50aXR5KGVudGl0eSkgPyBlbnRpdHkuZW50aXR5VHlwZSA6IGVudGl0eS5jb21wbGV4VHlwZTtcclxuICAgIHN0eXBlLmdldFByb3BlcnRpZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XHJcblxyXG4gICAgICBsZXQgcHJvcE5hbWUgPSBwcm9wLm5hbWU7XHJcbiAgICAgIGxldCB2YWwgPSBlbnRpdHlbcHJvcE5hbWVdO1xyXG5cclxuICAgICAgaWYgKHByb3AgaW5zdGFuY2VvZiBicmVlemUuRGF0YVByb3BlcnR5KSB7XHJcbiAgICAgICAgaWYgKHByb3AuaXNDb21wbGV4UHJvcGVydHkpIHtcclxuICAgICAgICAgIGlmIChwcm9wLmlzU2NhbGFyKSB7XHJcbiAgICAgICAgICAgIHZhbCA9IChwcm9wLmRhdGFUeXBlIGFzIGJyZWV6ZS5Db21wbGV4VHlwZSkuX2NyZWF0ZUluc3RhbmNlQ29yZShlbnRpdHksIHByb3ApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFsID0gYnJlZXplLm1ha2VDb21wbGV4QXJyYXkoW10sIGVudGl0eSwgcHJvcCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICghcHJvcC5pc1NjYWxhcikge1xyXG4gICAgICAgICAgdmFsID0gYnJlZXplLm1ha2VQcmltaXRpdmVBcnJheShbXSwgZW50aXR5LCBwcm9wKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHZhbCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICB2YWwgPSBwcm9wLmRlZmF1bHRWYWx1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9IGVsc2UgaWYgKHByb3AuaXNOYXZpZ2F0aW9uUHJvcGVydHkpIHtcclxuICAgICAgICBpZiAodmFsICE9PSB1bmRlZmluZWQgJiYgdmFsICE9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgYXNzaWduIGEgbmF2aWdhdGlvbiBwcm9wZXJ0eSBpbiBhbiBlbnRpdHkgY3Rvci46IFwiICsgcHJvcE5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocHJvcC5pc1NjYWxhcikge1xyXG4gICAgICAgICAgLy8gVE9ETzogY2hhbmdlIHRoaXMgdG8gbnVsbHN0b2IgbGF0ZXIuXHJcbiAgICAgICAgICB2YWwgPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YWwgPSBicmVlemUubWFrZVJlbGF0aW9uQXJyYXkoW10sIGVudGl0eSBhcyBicmVlemUuRW50aXR5LCBwcm9wKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidW5rbm93biBwcm9wZXJ0eTogXCIgKyBwcm9wTmFtZSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gY2FuJ3QgdG91Y2ggdGhlIG5vcm1hbCBwcm9wZXJ0eSBzZXRzIHdpdGhpbiB0aGlzIG1ldGhvZCAoSUU5IEJ1ZykgLSBzbyB3ZSBhY2Nlc3MgdGhlIGJhY2tpbmdTdG9yZSBkaXJlY3RseSBpbnN0ZWFkLlxyXG4gICAgICAvLyBvdGhlcndpc2Ugd2UgY291bGQganVzdCBkb1xyXG4gICAgICAvLyBlbnRpdHlbcHJvcE5hbWVdID0gdmFsXHJcbiAgICAgIC8vIGFmdGVyIGFsbCBvZiB0aGUgaW50ZXJjZXB0aW9uIGxvZ2ljIGhhZCBiZWVuIGluamVjdGVkLlxyXG4gICAgICBpZiAoKHByb3AgYXMgYnJlZXplLkRhdGFQcm9wZXJ0eSkuaXNTZXR0YWJsZSB8fCBwcm9wLmlzTmF2aWdhdGlvblByb3BlcnR5KSB7XHJcbiAgICAgICAgYnNbcHJvcE5hbWVdID0gdmFsO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmJyZWV6ZS5jb25maWcucmVnaXN0ZXJBZGFwdGVyKFwibW9kZWxMaWJyYXJ5XCIsIE1vZGVsTGlicmFyeUJhY2tpbmdTdG9yZUFkYXB0ZXIpO1xyXG5cclxuLy8gcHJpdmF0ZSBtZXRob2RzXHJcblxyXG4vLyBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgZHVyaW5nIE1ldGFkYXRhIGluaXRpYWxpemF0aW9uIHRvIGNvcnJlY3RseSBcIndyYXBcIiBwcm9wZXJ0aWVzLlxyXG5mdW5jdGlvbiBtb3ZlUHJvcERlZnNUb1Byb3RvKHByb3RvOiBhbnkpIHtcclxuICBsZXQgc3R5cGUgPSAocHJvdG8uZW50aXR5VHlwZSB8fCBwcm90by5jb21wbGV4VHlwZSkgYXMgYnJlZXplLlN0cnVjdHVyYWxUeXBlO1xyXG4gIGxldCBleHRyYSA9IHN0eXBlLl9leHRyYTtcclxuXHJcbiAgbGV0IGFscmVhZHlXcmFwcGVkID0gZXh0cmEuYWxyZWFkeVdyYXBwZWRQcm9wcyB8fCB7fTtcclxuXHJcbiAgc3R5cGUuZ2V0UHJvcGVydGllcygpLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcclxuICAgIGxldCBwcm9wTmFtZSA9IHByb3AubmFtZTtcclxuICAgIC8vIHdlIG9ubHkgd2FudCB0byB3cmFwIHByb3BzIHRoYXQgaGF2ZW4ndCBhbHJlYWR5IGJlZW4gd3JhcHBlZFxyXG4gICAgaWYgKGFscmVhZHlXcmFwcGVkW3Byb3BOYW1lXSkgcmV0dXJuO1xyXG5cclxuICAgIC8vIElmIHByb3BlcnR5IGlzIGFscmVhZHkgZGVmaW5lZCBvbiB0aGUgcHJvdG90eXBlIHRoZW4gd3JhcCBpdCBpbiBhbm90aGVyIHByb3BlcnR5RGVzY3JpcHRvci5cclxuICAgIC8vIG90aGVyd2lzZSBjcmVhdGUgYSBwcm9wRGVzY3JpcHRvciBmb3IgaXQuXHJcbiAgICBsZXQgZGVzY3I6IGFueTtcclxuICAgIGlmIChwcm9wTmFtZSBpbiBwcm90bykge1xyXG4gICAgICBkZXNjciA9IHdyYXBQcm9wRGVzY3JpcHRpb24ocHJvdG8sIHByb3ApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGVzY3IgPSBtYWtlUHJvcERlc2NyaXB0aW9uKHByb3RvLCBwcm9wKTtcclxuICAgIH1cclxuICAgIC8vIGRlc2NyIHdpbGwgYmUgbnVsbCBmb3IgYSB3cmFwcGVkIGRlc2NyIHRoYXQgaXMgbm90IGNvbmZpZ3VyYWJsZVxyXG4gICAgaWYgKGRlc2NyICE9IG51bGwpIHtcclxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3RvLCBwcm9wTmFtZSwgZGVzY3IpO1xyXG4gICAgfVxyXG4gICAgYWxyZWFkeVdyYXBwZWRbcHJvcE5hbWVdID0gdHJ1ZTtcclxuICB9KTtcclxuICBleHRyYS5hbHJlYWR5V3JhcHBlZFByb3BzID0gYWxyZWFkeVdyYXBwZWQ7XHJcbn1cclxuXHJcbi8vIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGluc3RhbmNlIGlzIGZpcnN0IGNyZWF0ZWQgdmlhIG1hdGVyaWFsaXphdGlvbiBvciBjcmVhdGVFbnRpdHkuXHJcbi8vIHRoaXMgbWV0aG9kIGNhbm5vdCBiZSBjYWxsZWQgd2hpbGUgYSAnZGVmaW5lUHJvcGVydHknIGFjY2Vzc29yIGlzIGV4ZWN1dGluZ1xyXG4vLyBiZWNhdXNlIG9mIElFIGJ1ZyBtZW50aW9uZWQgYWJvdmUuXHJcblxyXG5mdW5jdGlvbiBtb3ZlUHJvcHNUb0JhY2tpbmdTdG9yZShpbnN0YW5jZTogYW55KSB7XHJcblxyXG4gIGxldCBicyA9IGdldEJhY2tpbmdTdG9yZShpbnN0YW5jZSk7XHJcbiAgbGV0IHByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mKGluc3RhbmNlKTtcclxuICBsZXQgc3R5cGUgPSAocHJvdG8uZW50aXR5VHlwZSB8fCBwcm90by5jb21wbGV4VHlwZSkgYXMgYnJlZXplLlN0cnVjdHVyYWxUeXBlO1xyXG4gIHN0eXBlLmdldFByb3BlcnRpZXMoKS5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wKSB7XHJcbiAgICBsZXQgcHJvcE5hbWUgPSBwcm9wLm5hbWU7XHJcbiAgICBpZiAocHJvcC5pc1VubWFwcGVkKSB7XHJcbiAgICAgIC8vIGluc3VyZSB0aGF0IGFueSB1bm1hcHBlZCBwcm9wZXJ0aWVzIHRoYXQgd2VyZSBhZGRlZCBhZnRlciBlbnRpdHlUeXBlXHJcbiAgICAgIC8vIHdhcyBmaXJzdCBjcmVhdGVkIGFyZSB3cmFwcGVkIHdpdGggYSBwcm9wZXJ0eSBkZXNjcmlwdG9yLlxyXG4gICAgICBpZiAoIWNvcmUuZ2V0UHJvcGVydHlEZXNjcmlwdG9yKHByb3RvLCBwcm9wTmFtZSkpIHtcclxuICAgICAgICBsZXQgZGVzY3IgPSBtYWtlUHJvcERlc2NyaXB0aW9uKHByb3RvLCBwcm9wKTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvdG8sIHByb3BOYW1lLCBkZXNjcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghaW5zdGFuY2UuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSByZXR1cm47XHJcbiAgICAvLyBwdWxscyBvZmYgdGhlIHZhbHVlLCByZW1vdmVzIHRoZSBpbnN0YW5jZSBwcm9wZXJ0eSBhbmQgdGhlbiByZXdyaXRlcyBpdCB2aWEgRVM1IGFjY2Vzc29yXHJcbiAgICBsZXQgdmFsdWUgPSBpbnN0YW5jZVtwcm9wTmFtZV07XHJcbiAgICBkZWxldGUgaW5zdGFuY2VbcHJvcE5hbWVdO1xyXG4gICAgaW5zdGFuY2VbcHJvcE5hbWVdID0gdmFsdWU7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIGJzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBtYWtlUHJvcERlc2NyaXB0aW9uKHByb3RvOiBhbnksIHByb3BlcnR5OiBicmVlemUuRW50aXR5UHJvcGVydHkpIHtcclxuICBsZXQgcHJvcE5hbWUgPSBwcm9wZXJ0eS5uYW1lO1xyXG4gIGxldCBwZW5kaW5nU3RvcmVzID0gcHJvdG8uX3BlbmRpbmdCYWNraW5nU3RvcmVzO1xyXG4gIGlmICghcGVuZGluZ1N0b3Jlcykge1xyXG4gICAgcGVuZGluZ1N0b3JlcyA9IFtdO1xyXG4gICAgcHJvdG8uX3BlbmRpbmdCYWNraW5nU3RvcmVzID0gcGVuZGluZ1N0b3JlcztcclxuICB9XHJcbiAgbGV0IGRlc2NyID0ge1xyXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGxldCBicyA9IHRoaXMuX2JhY2tpbmdTdG9yZSB8fCBnZXRCYWNraW5nU3RvcmUodGhpcyk7XHJcbiAgICAgIHJldHVybiBic1twcm9wTmFtZV07XHJcbiAgICB9LFxyXG4gICAgc2V0OiBmdW5jdGlvbiAodmFsdWU6IGFueSkge1xyXG4gICAgICAvLyBJRTkgY2Fubm90IHRvdWNoIGluc3RhbmNlLl9iYWNraW5nU3RvcmUgaGVyZVxyXG4gICAgICBsZXQgYnMgPSB0aGlzLl9iYWNraW5nU3RvcmUgfHwgZ2V0UGVuZGluZ0JhY2tpbmdTdG9yZSh0aGlzKTtcclxuICAgICAgbGV0IGFjY2Vzc29yRm4gPSBnZXRBY2Nlc3NvckZuKGJzLCBwcm9wTmFtZSk7XHJcbiAgICAgIHRoaXMuXyRpbnRlcmNlcHRvcihwcm9wZXJ0eSwgdmFsdWUsIGFjY2Vzc29yRm4pO1xyXG4gICAgfSxcclxuICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICBjb25maWd1cmFibGU6IHRydWVcclxuICB9O1xyXG5cclxuICAoZGVzY3Iuc2V0IGFzIGFueSkucmF3U2V0ID0gZnVuY3Rpb24gKHZhbHVlOiBhbnkpIHtcclxuICAgIGxldCBicyA9IHRoaXMuX2JhY2tpbmdTdG9yZSB8fCBnZXRQZW5kaW5nQmFja2luZ1N0b3JlKHRoaXMpO1xyXG4gICAgbGV0IGFjY2Vzc29yRm4gPSBnZXRBY2Nlc3NvckZuKGJzLCBwcm9wTmFtZSk7XHJcbiAgICBhY2Nlc3NvckZuKHZhbHVlKTtcclxuICB9O1xyXG4gIHJldHVybiBkZXNjcjtcclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEFjY2Vzc29yRm4oYnM6IHt9LCBwcm9wTmFtZTogc3RyaW5nKTogYW55IHtcclxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIGJzW3Byb3BOYW1lXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGJzW3Byb3BOYW1lXSA9IGFyZ3VtZW50c1swXTtcclxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiB3cmFwUHJvcERlc2NyaXB0aW9uKHByb3RvOiBhbnksIHByb3BlcnR5OiBicmVlemUuRW50aXR5UHJvcGVydHkpOiBhbnkge1xyXG4gIGlmICghcHJvdG8uaGFzT3duUHJvcGVydHkocHJvcGVydHkubmFtZSkpIHtcclxuICAgIGxldCBuZXh0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YocHJvdG8pO1xyXG4gICAgcmV0dXJuIHdyYXBQcm9wRGVzY3JpcHRpb24obmV4dFByb3RvLCBwcm9wZXJ0eSk7XHJcbiAgfVxyXG5cclxuICBsZXQgcHJvcERlc2NyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm90bywgcHJvcGVydHkubmFtZSk7XHJcbiAgaWYgKCFwcm9wRGVzY3IpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgLy8gaWYgbm90IGNvbmZpZ3VyYWJsZTsgd2UgY2FuJ3QgdG91Y2ggaXQgLSBzbyBsZWF2ZS5cclxuICBpZiAoIXByb3BEZXNjci5jb25maWd1cmFibGUpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgLy8gaWYgYSBkYXRhIGRlc2NyaXB0b3IgLSBkb24ndCBjaGFuZ2UgaXQgLSB0aGlzIGlzIGJhc2ljYWxseSBhIHN0YXRpYyBwcm9wZXJ0eSAtIGkuZS4gZGVmaW5lZCBvbiBldmVyeSBpbnN0YW5jZSBvZiB0aGUgdHlwZSB3aXRoIHRoZSBzYW1lIHZhbHVlLlxyXG4gIGlmIChwcm9wRGVzY3IudmFsdWUpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgLy8gaWYgYSByZWFkIG9ubHkgcHJvcGVydHkgZGVzY3JpcHRvciAtIG5vIG5lZWQgdG8gY2hhbmdlIGl0LlxyXG4gIGlmICghcHJvcERlc2NyLnNldCkgcmV0dXJuIHVuZGVmaW5lZDtcclxuXHJcbiAgbGV0IGxvY2FsQWNjZXNzb3JGbiA9IGZ1bmN0aW9uIChlbnRpdHk6IGFueSkge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcclxuICAgICAgaWYgKCFwcm9wRGVzY3IpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuIHByb3BEZXNjci5nZXQhLmJpbmQoZW50aXR5KSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBzZXQgPSBwcm9wRGVzY3Iuc2V0O1xyXG4gICAgICAgIGxldCByYXdTZXQgPSAoc2V0IGFzIGFueSkucmF3U2V0IHx8IHNldDtcclxuICAgICAgICByYXdTZXQuYmluZChlbnRpdHkpKGFyZ3VtZW50c1swXSk7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9O1xyXG5cclxuICBsZXQgbmV3RGVzY3IgPSB7XHJcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgaWYgKCFwcm9wRGVzY3IpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgIHJldHVybiBwcm9wRGVzY3IuZ2V0IS5iaW5kKHRoaXMpKCk7XHJcbiAgICB9LFxyXG4gICAgc2V0OiBmdW5jdGlvbiAodmFsdWU6IGFueSkge1xyXG4gICAgICB0aGlzLl8kaW50ZXJjZXB0b3IocHJvcGVydHksIHZhbHVlLCBsb2NhbEFjY2Vzc29yRm4odGhpcykpO1xyXG4gICAgfSxcclxuICAgIGVudW1lcmFibGU6IHByb3BEZXNjci5lbnVtZXJhYmxlLFxyXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXHJcbiAgfTtcclxuICAobmV3RGVzY3Iuc2V0IGFzIGFueSkucmF3U2V0ID0gcHJvcERlc2NyLnNldDtcclxuICByZXR1cm4gbmV3RGVzY3I7XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBnZXRCYWNraW5nU3RvcmUoaW5zdGFuY2U6IGFueSkge1xyXG4gIGxldCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihpbnN0YW5jZSk7XHJcbiAgcHJvY2Vzc1BlbmRpbmdTdG9yZXMocHJvdG8pO1xyXG4gIGxldCBicyA9IGluc3RhbmNlLl9iYWNraW5nU3RvcmU7XHJcbiAgaWYgKCFicykge1xyXG4gICAgYnMgPSB7fTtcclxuICAgIGluc3RhbmNlLl9iYWNraW5nU3RvcmUgPSBicztcclxuICB9XHJcbiAgcmV0dXJuIGJzO1xyXG59XHJcblxyXG4vLyB3b3JrYXJvdW5kIGZvciBJRTkgYnVnIHdoZXJlIGluc3RhbmNlIHByb3BlcnRpZXMgY2Fubm90IGJlIGNoYW5nZWQgd2hlbiBleGVjdXRpbmcgYSBwcm9wZXJ0eSAnc2V0JyBtZXRob2QuXHJcbmZ1bmN0aW9uIGdldFBlbmRpbmdCYWNraW5nU3RvcmUoaW5zdGFuY2U6IGFueSkge1xyXG4gIGxldCBwcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZihpbnN0YW5jZSk7XHJcbiAgbGV0IHBlbmRpbmdTdG9yZXMgPSBwcm90by5fcGVuZGluZ0JhY2tpbmdTdG9yZXM7XHJcbiAgbGV0IHBlbmRpbmcgPSBjb3JlLmFycmF5Rmlyc3QocGVuZGluZ1N0b3JlcywgZnVuY3Rpb24gKHBlbmRpbmcpIHtcclxuICAgIHJldHVybiBwZW5kaW5nLmVudGl0eSA9PT0gaW5zdGFuY2U7XHJcbiAgfSk7XHJcbiAgaWYgKHBlbmRpbmcpIHJldHVybiAocGVuZGluZyBhcyBhbnkpLmJhY2tpbmdTdG9yZTtcclxuICBsZXQgYnMgPSB7fTtcclxuICBwZW5kaW5nU3RvcmVzLnB1c2goeyBlbnRpdHk6IGluc3RhbmNlLCBiYWNraW5nU3RvcmU6IGJzIH0pO1xyXG4gIHJldHVybiBicztcclxufVxyXG5cclxuZnVuY3Rpb24gcHJvY2Vzc1BlbmRpbmdTdG9yZXMocHJvdG86IGFueSkge1xyXG4gIGxldCBwZW5kaW5nU3RvcmVzID0gcHJvdG8uX3BlbmRpbmdCYWNraW5nU3RvcmVzO1xyXG4gIGlmIChwZW5kaW5nU3RvcmVzKSB7XHJcbiAgICBwZW5kaW5nU3RvcmVzLmZvckVhY2goZnVuY3Rpb24gKHBlbmRpbmc6IGFueSkge1xyXG4gICAgICBwZW5kaW5nLmVudGl0eS5fYmFja2luZ1N0b3JlID0gcGVuZGluZy5iYWNraW5nU3RvcmU7XHJcbiAgICB9KTtcclxuICAgIHBlbmRpbmdTdG9yZXMubGVuZ3RoID0gMDtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './adapter-model-library-backing-store';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlZXplLWNsaWVudC1hZGFwdGVyLW1vZGVsLWxpYnJhcnktYmFja2luZy1zdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9icmVlemUtY2xpZW50LWFkYXB0ZXItbW9kZWwtbGlicmFyeS1iYWNraW5nLXN0b3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyx1Q0FBdUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9hZGFwdGVyLW1vZGVsLWxpYnJhcnktYmFja2luZy1zdG9yZSc7XG4iXX0=
|