breeze-client 2.2.0-cjs → 2.2.0
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/{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/esm2022/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +135 -0
- package/esm2022/adapter-ajax-angularjs/adapter-core.mjs +49 -0
- package/esm2022/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +5 -0
- package/esm2022/adapter-ajax-fetch/adapter-ajax-fetch.mjs +135 -0
- package/esm2022/adapter-ajax-fetch/adapter-core.mjs +49 -0
- package/esm2022/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +5 -0
- package/esm2022/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +139 -0
- package/esm2022/adapter-ajax-httpclient/adapter-core.mjs +49 -0
- package/esm2022/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +5 -0
- package/esm2022/adapter-ajax-jquery/adapter-ajax-jquery.mjs +107 -0
- package/esm2022/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +5 -0
- package/esm2022/adapter-ajax-post/adapter-ajax-post.mjs +77 -0
- package/esm2022/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +5 -0
- package/esm2022/adapter-data-service-odata/adapter-core.mjs +49 -0
- package/{esm5/adapter-data-service-odata/adapter-data-service-odata.js → esm2022/adapter-data-service-odata/adapter-data-service-odata.mjs} +138 -147
- package/esm2022/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +5 -0
- package/esm2022/adapter-data-service-webapi/adapter-data-service-webapi.mjs +100 -0
- package/esm2022/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +5 -0
- package/esm2022/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +269 -0
- package/esm2022/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +5 -0
- package/esm2022/adapter-model-library-ko/adapter-model-library-ko.mjs +241 -0
- package/esm2022/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +5 -0
- package/esm2022/adapter-uri-builder-json/adapter-core.mjs +49 -0
- package/esm2022/adapter-uri-builder-json/adapter-uri-builder-json.mjs +37 -0
- package/esm2022/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +5 -0
- package/esm2022/adapter-uri-builder-odata/adapter-core.mjs +49 -0
- package/esm2022/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +191 -0
- package/esm2022/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +5 -0
- package/esm2022/breeze-client.mjs +5 -0
- package/esm2022/index.mjs +2 -0
- package/esm2022/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +5 -0
- package/esm2022/mixin-get-entity-graph/mixin-get-entity-graph.mjs +269 -0
- package/esm2022/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +5 -0
- package/esm2022/mixin-save-queuing/mixin-save-queuing.mjs +421 -0
- package/esm2022/src/abstract-data-service-adapter.mjs +325 -0
- package/esm2022/src/array.mjs +4 -0
- package/esm2022/src/assert-param.mjs +330 -0
- package/esm2022/src/breeze.mjs +85 -0
- package/esm2022/src/complex-array.mjs +117 -0
- package/esm2022/src/config.mjs +232 -0
- package/esm2022/src/core.mjs +712 -0
- package/esm2022/src/csdl-metadata-parser.mjs +385 -0
- package/esm2022/src/data-service.mjs +239 -0
- package/esm2022/src/data-type.mjs +510 -0
- package/esm2022/src/default-property-interceptor.mjs +460 -0
- package/{esm2015/src/entity-action.js → esm2022/src/entity-action.mjs} +25 -25
- package/esm2022/src/entity-aspect.mjs +897 -0
- package/esm2022/src/entity-group.mjs +192 -0
- package/esm2022/src/entity-key.mjs +127 -0
- package/esm2022/src/entity-manager.mjs +2183 -0
- package/esm2022/src/entity-metadata.mjs +2242 -0
- package/esm2022/src/entity-query.mjs +1024 -0
- package/esm2022/src/entity-state.mjs +107 -0
- package/esm2022/src/enum.mjs +143 -0
- package/esm2022/src/event.mjs +264 -0
- package/esm2022/src/interface-registry.mjs +39 -0
- package/esm2022/src/key-generator.mjs +110 -0
- package/esm2022/src/local-query-comparison-options.mjs +75 -0
- package/esm2022/src/mapping-context.mjs +422 -0
- package/{esm5/src/naming-convention.js → esm2022/src/naming-convention.mjs} +35 -29
- package/esm2022/src/observable-array.mjs +183 -0
- package/esm2022/src/predicate.mjs +1259 -0
- package/esm2022/src/primitive-array.mjs +85 -0
- package/esm2022/src/query-options.mjs +160 -0
- package/esm2022/src/relation-array.mjs +173 -0
- package/esm2022/src/save-options.mjs +51 -0
- package/esm2022/src/unattached-children-map.mjs +56 -0
- package/{esm5/src/validate.js → esm2022/src/validate.mjs} +116 -110
- package/esm2022/src/validation-options.mjs +78 -0
- package/{fesm2015/breeze-client-adapter-ajax-angularjs.js → fesm2022/breeze-client-adapter-ajax-angularjs.mjs} +6 -1
- package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-ajax-fetch.js → fesm2022/breeze-client-adapter-ajax-fetch.mjs} +9 -4
- package/fesm2022/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-ajax-httpclient.js → fesm2022/breeze-client-adapter-ajax-httpclient.mjs} +6 -4
- package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-ajax-jquery.js → fesm2022/breeze-client-adapter-ajax-jquery.mjs} +6 -2
- package/fesm2022/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-ajax-post.js → fesm2022/breeze-client-adapter-ajax-post.mjs} +1 -1
- package/fesm2022/breeze-client-adapter-ajax-post.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-data-service-odata.js → fesm2022/breeze-client-adapter-data-service-odata.mjs} +68 -69
- package/fesm2022/breeze-client-adapter-data-service-odata.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-data-service-webapi.js → fesm2022/breeze-client-adapter-data-service-webapi.mjs} +30 -30
- package/fesm2022/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-model-library-backing-store.js → fesm2022/breeze-client-adapter-model-library-backing-store.mjs} +14 -13
- package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-model-library-ko.js → fesm2022/breeze-client-adapter-model-library-ko.mjs} +14 -13
- package/fesm2022/breeze-client-adapter-model-library-ko.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-uri-builder-json.js → fesm2022/breeze-client-adapter-uri-builder-json.mjs} +9 -8
- package/fesm2022/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
- package/{fesm2015/breeze-client-adapter-uri-builder-odata.js → fesm2022/breeze-client-adapter-uri-builder-odata.mjs} +86 -86
- package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
- package/{fesm2015/breeze-client-mixin-get-entity-graph.js → fesm2022/breeze-client-mixin-get-entity-graph.mjs} +1 -1
- package/fesm2022/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
- package/{fesm2015/breeze-client-mixin-save-queuing.js → fesm2022/breeze-client-mixin-save-queuing.mjs} +23 -2
- package/fesm2022/breeze-client-mixin-save-queuing.mjs.map +1 -0
- package/{fesm2015/breeze-client.js → fesm2022/breeze-client.mjs} +2034 -1535
- package/fesm2022/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 +94 -12
- 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 +8 -6
- 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 -13
- 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 -747
- 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 -333
- 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 -14234
- 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 -463
- 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 -100
- 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/src/abstract-data-service-adapter.js +0 -327
- 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 -714
- package/esm2015/src/csdl-metadata-parser.js +0 -385
- package/esm2015/src/data-service.js +0 -203
- package/esm2015/src/data-type.js +0 -506
- package/esm2015/src/default-property-interceptor.js +0 -460
- package/esm2015/src/entity-aspect.js +0 -804
- 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 -1015
- package/esm2015/src/entity-state.js +0 -107
- 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 -411
- package/esm2015/src/naming-convention.js +0 -88
- package/esm2015/src/observable-array.js +0 -185
- package/esm2015/src/predicate.js +0 -1242
- 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/breeze-client-adapter-data-service-odata.js +0 -5
- package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -105
- 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/src/abstract-data-service-adapter.js +0 -333
- 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 -722
- package/esm5/src/csdl-metadata-parser.js +0 -385
- package/esm5/src/data-service.js +0 -207
- package/esm5/src/data-type.js +0 -513
- package/esm5/src/default-property-interceptor.js +0 -460
- package/esm5/src/entity-action.js +0 -52
- package/esm5/src/entity-aspect.js +0 -810
- 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 -1042
- package/esm5/src/entity-state.js +0 -114
- 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 -413
- package/esm5/src/observable-array.js +0 -201
- package/esm5/src/predicate.js +0 -1307
- 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/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 +0 -186
- package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +0 -1
- package/fesm5/breeze-client-adapter-ajax-fetch.js +0 -186
- package/fesm5/breeze-client-adapter-ajax-fetch.js.map +0 -1
- package/fesm5/breeze-client-adapter-ajax-httpclient.js +0 -193
- package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +0 -1
- package/fesm5/breeze-client-adapter-ajax-jquery.js +0 -111
- package/fesm5/breeze-client-adapter-ajax-jquery.js.map +0 -1
- package/fesm5/breeze-client-adapter-ajax-post.js +0 -86
- package/fesm5/breeze-client-adapter-ajax-post.js.map +0 -1
- package/fesm5/breeze-client-adapter-data-service-odata.js +0 -523
- package/fesm5/breeze-client-adapter-data-service-odata.js.map +0 -1
- package/fesm5/breeze-client-adapter-data-service-webapi.js +0 -111
- package/fesm5/breeze-client-adapter-data-service-webapi.js.map +0 -1
- package/fesm5/breeze-client-adapter-model-library-backing-store.js +0 -276
- package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +0 -1
- package/fesm5/breeze-client-adapter-model-library-ko.js +0 -248
- 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 +0 -254
- package/fesm5/breeze-client-mixin-get-entity-graph.js.map +0 -1
- package/fesm5/breeze-client-mixin-save-queuing.js +0 -356
- package/fesm5/breeze-client-mixin-save-queuing.js.map +0 -1
- package/fesm5/breeze-client.js +0 -13956
- 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
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
import { DataProperty } from './entity-metadata';
|
|
2
|
-
import { EntityKey } from './entity-key';
|
|
3
|
-
import { EntityState } from './entity-state';
|
|
4
|
-
import { MergeStrategy } from './query-options';
|
|
5
|
-
/** @hidden @internal */
|
|
6
|
-
export class EntityGroup {
|
|
7
|
-
constructor(entityManager, entityType) {
|
|
8
|
-
this.entityManager = entityManager;
|
|
9
|
-
this.entityType = entityType;
|
|
10
|
-
// freeze the entityType after the first instance of this type is either created or queried.
|
|
11
|
-
this.entityType.isFrozen = true;
|
|
12
|
-
this._indexMap = {};
|
|
13
|
-
this._entities = [];
|
|
14
|
-
this._emptyIndexes = [];
|
|
15
|
-
}
|
|
16
|
-
attachEntity(entity, entityState, mergeStrategy) {
|
|
17
|
-
// entity should already have an aspect.
|
|
18
|
-
let aspect = entity.entityAspect;
|
|
19
|
-
if (!aspect._initialized) {
|
|
20
|
-
this.entityType._initializeInstance(entity);
|
|
21
|
-
}
|
|
22
|
-
delete aspect._initialized;
|
|
23
|
-
let keyInGroup = aspect.getKey()._keyInGroup;
|
|
24
|
-
let ix = this._indexMap[keyInGroup];
|
|
25
|
-
if (ix >= 0) {
|
|
26
|
-
// safecast because key was found not ix will not return a null
|
|
27
|
-
let targetEntity = this._entities[ix];
|
|
28
|
-
let targetEntityState = targetEntity.entityAspect.entityState;
|
|
29
|
-
let wasUnchanged = targetEntityState.isUnchanged();
|
|
30
|
-
if (targetEntity === entity) {
|
|
31
|
-
aspect.entityState = entityState;
|
|
32
|
-
}
|
|
33
|
-
else if (mergeStrategy === MergeStrategy.Disallowed) {
|
|
34
|
-
throw new Error("A MergeStrategy of 'Disallowed' does not allow you to attach an entity when an entity with the same key is already attached: " + aspect.getKey());
|
|
35
|
-
}
|
|
36
|
-
else if (mergeStrategy === MergeStrategy.OverwriteChanges || (mergeStrategy === MergeStrategy.PreserveChanges && wasUnchanged)) {
|
|
37
|
-
// unwrapInstance returns an entity with server side property names - so we need to use DataProperty.getRawValueFromServer these when we apply
|
|
38
|
-
// the property values back to the target.
|
|
39
|
-
let rawServerEntity = this.entityManager.helper.unwrapInstance(entity);
|
|
40
|
-
this.entityType._updateTargetFromRaw(targetEntity, rawServerEntity, DataProperty.getRawValueFromServer);
|
|
41
|
-
targetEntity.entityAspect.setEntityState(entityState);
|
|
42
|
-
}
|
|
43
|
-
return targetEntity;
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
if (this._emptyIndexes.length === 0) {
|
|
47
|
-
ix = this._entities.push(entity) - 1;
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
ix = this._emptyIndexes.pop();
|
|
51
|
-
this._entities[ix] = entity;
|
|
52
|
-
}
|
|
53
|
-
this._indexMap[keyInGroup] = ix;
|
|
54
|
-
aspect.entityState = entityState;
|
|
55
|
-
aspect.entityGroup = this;
|
|
56
|
-
aspect.entityManager = this.entityManager;
|
|
57
|
-
return entity;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
detachEntity(entity) {
|
|
61
|
-
// by this point we have already determined that this entity
|
|
62
|
-
// belongs to this group.
|
|
63
|
-
let aspect = entity.entityAspect;
|
|
64
|
-
let keyInGroup = aspect.getKey()._keyInGroup;
|
|
65
|
-
let ix = this._indexMap[keyInGroup];
|
|
66
|
-
if (ix === undefined) {
|
|
67
|
-
// shouldn't happen.
|
|
68
|
-
throw new Error("internal error - entity cannot be found in group");
|
|
69
|
-
}
|
|
70
|
-
delete this._indexMap[keyInGroup];
|
|
71
|
-
this._emptyIndexes.push(ix);
|
|
72
|
-
this._entities[ix] = null;
|
|
73
|
-
return entity;
|
|
74
|
-
}
|
|
75
|
-
// returns entity based on an entity key defined either as an array of key values or an EntityKey
|
|
76
|
-
findEntityByKey(entityKey) {
|
|
77
|
-
let keyInGroup;
|
|
78
|
-
if (entityKey instanceof EntityKey) {
|
|
79
|
-
keyInGroup = entityKey._keyInGroup;
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
keyInGroup = EntityKey.createKeyString(entityKey);
|
|
83
|
-
}
|
|
84
|
-
let ix = this._indexMap[keyInGroup];
|
|
85
|
-
// can't use just (ix) below because 0 is valid
|
|
86
|
-
let r = (ix !== undefined) ? this._entities[ix] : undefined;
|
|
87
|
-
// coerce null to undefined
|
|
88
|
-
return r == null ? undefined : r;
|
|
89
|
-
}
|
|
90
|
-
hasChanges() {
|
|
91
|
-
let entities = this._entities;
|
|
92
|
-
let unchanged = EntityState.Unchanged;
|
|
93
|
-
for (let i = 0, len = entities.length; i < len; i++) {
|
|
94
|
-
let e = entities[i];
|
|
95
|
-
if (e && e.entityAspect.entityState !== unchanged) {
|
|
96
|
-
return true;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
return false;
|
|
100
|
-
}
|
|
101
|
-
getChanges() {
|
|
102
|
-
let entities = this._entities;
|
|
103
|
-
let unchanged = EntityState.Unchanged;
|
|
104
|
-
let changes = [];
|
|
105
|
-
for (let i = 0, len = entities.length; i < len; i++) {
|
|
106
|
-
let e = entities[i];
|
|
107
|
-
if (e && e.entityAspect.entityState !== unchanged) {
|
|
108
|
-
changes.push(e);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
return changes;
|
|
112
|
-
}
|
|
113
|
-
getEntities(entityStates) {
|
|
114
|
-
let filter = getFilter(entityStates);
|
|
115
|
-
return this._entities.filter(filter);
|
|
116
|
-
}
|
|
117
|
-
_checkOperation(operationName) {
|
|
118
|
-
this._entities.forEach(function (entity) {
|
|
119
|
-
entity && entity.entityAspect._checkOperation(operationName);
|
|
120
|
-
});
|
|
121
|
-
// for chaining;
|
|
122
|
-
return this;
|
|
123
|
-
}
|
|
124
|
-
// do not expose this method. It is doing a special purpose INCOMPLETE fast detach operation
|
|
125
|
-
// just for the entityManager clear method - the entityGroup will be in an inconsistent state
|
|
126
|
-
// after this op, which is ok because it will be thrown away.
|
|
127
|
-
// TODO: rename this to be clear that it is UNSAFE...
|
|
128
|
-
_clear() {
|
|
129
|
-
this._entities.forEach(function (entity) {
|
|
130
|
-
if (entity != null) {
|
|
131
|
-
entity.entityAspect._detach();
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
this._entities = null;
|
|
135
|
-
this._indexMap = null;
|
|
136
|
-
this._emptyIndexes = null;
|
|
137
|
-
}
|
|
138
|
-
_updateFkVal(fkProp, oldValue, newValue) {
|
|
139
|
-
let fkPropName = fkProp.name;
|
|
140
|
-
this._entities.forEach(function (entity) {
|
|
141
|
-
if (entity != null) {
|
|
142
|
-
if (entity.getProperty(fkPropName) === oldValue) {
|
|
143
|
-
entity.setProperty(fkPropName, newValue);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
_fixupKey(tempValue, realValue) {
|
|
149
|
-
// single part keys appear directly in map
|
|
150
|
-
let ix = this._indexMap[tempValue];
|
|
151
|
-
if (ix === undefined) {
|
|
152
|
-
throw new Error("Internal Error in key fixup - unable to locate entity");
|
|
153
|
-
}
|
|
154
|
-
let entity = this._entities[ix];
|
|
155
|
-
let keyPropName = entity.entityType.keyProperties[0].name;
|
|
156
|
-
// fks on related entities will automatically get updated by this as well
|
|
157
|
-
entity.setProperty(keyPropName, realValue);
|
|
158
|
-
delete entity.entityAspect.hasTempKey;
|
|
159
|
-
delete this._indexMap[tempValue];
|
|
160
|
-
this._indexMap[realValue] = ix;
|
|
161
|
-
}
|
|
162
|
-
_replaceKey(oldKey, newKey) {
|
|
163
|
-
let ix = this._indexMap[oldKey._keyInGroup];
|
|
164
|
-
delete this._indexMap[oldKey._keyInGroup];
|
|
165
|
-
this._indexMap[newKey._keyInGroup] = ix;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
function getFilter(entityStates) {
|
|
169
|
-
if (entityStates.length === 0) {
|
|
170
|
-
return function (e) {
|
|
171
|
-
return !!e;
|
|
172
|
-
};
|
|
173
|
-
}
|
|
174
|
-
else if (entityStates.length === 1) {
|
|
175
|
-
let entityState = entityStates[0];
|
|
176
|
-
return function (e) {
|
|
177
|
-
return !!e && e.entityAspect.entityState === entityState;
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
else {
|
|
181
|
-
return function (e) {
|
|
182
|
-
return !!e && -1 !== entityStates.indexOf(e.entityAspect.entityState);
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
// do not expose EntityGroup - internal only
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWdyb3VwLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC8iLCJzb3VyY2VzIjpbInNyYy9lbnRpdHktZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFjLFlBQVksRUFBRyxNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRCx3QkFBd0I7QUFDeEIsTUFBTSxPQUFPLFdBQVc7SUFPdEIsWUFBWSxhQUE0QixFQUFFLFVBQXNCO1FBQzlELElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLDRGQUE0RjtRQUM1RixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUdELFlBQVksQ0FBQyxNQUFjLEVBQUUsV0FBd0IsRUFBRSxhQUE2QjtRQUNsRix3Q0FBd0M7UUFDeEMsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUVqQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRTtZQUN4QixJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzdDO1FBQ0QsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBRTNCLElBQUksVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxXQUFXLENBQUM7UUFDN0MsSUFBSSxF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R0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0NBRUY7QUFFRCxTQUFTLFNBQVMsQ0FBQyxZQUEyQjtJQUM1QyxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQzdCLE9BQU8sVUFBVSxDQUFTO1lBQ3hCLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNiLENBQUMsQ0FBQztLQUNIO1NBQU0sSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUNwQyxJQUFJLFdBQVcsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsT0FBTyxVQUFVLENBQVM7WUFDeEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQztRQUMzRCxDQUFDLENBQUM7S0FDSDtTQUFNO1FBQ0wsT0FBTyxVQUFVLENBQVM7WUFDeEIsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RSxDQUFDLENBQUM7S0FDSDtBQUNILENBQUM7QUFHRCw0Q0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHkgfSBmcm9tICcuL2VudGl0eS1hc3BlY3QnO1xyXG5pbXBvcnQgeyBFbnRpdHlUeXBlLCBEYXRhUHJvcGVydHkgIH0gZnJvbSAnLi9lbnRpdHktbWV0YWRhdGEnO1xyXG5pbXBvcnQgeyBFbnRpdHlLZXkgfSBmcm9tICcuL2VudGl0eS1rZXknO1xyXG5pbXBvcnQgeyBFbnRpdHlTdGF0ZSB9IGZyb20gJy4vZW50aXR5LXN0YXRlJztcclxuaW1wb3J0IHsgRW50aXR5TWFuYWdlciB9IGZyb20gJy4vZW50aXR5LW1hbmFnZXInO1xyXG5pbXBvcnQgeyBNZXJnZVN0cmF0ZWd5IH0gZnJvbSAnLi9xdWVyeS1vcHRpb25zJztcclxuXHJcbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG5leHBvcnQgY2xhc3MgRW50aXR5R3JvdXAge1xyXG4gIGVudGl0eU1hbmFnZXI6IEVudGl0eU1hbmFnZXI7XHJcbiAgZW50aXR5VHlwZTogRW50aXR5VHlwZTtcclxuICBfaW5kZXhNYXA6IHsgW2luZGV4OiBzdHJpbmddOiBudW1iZXIgfTtcclxuICBfZW50aXRpZXM6IChFbnRpdHkgfCBudWxsKVtdO1xyXG4gIF9lbXB0eUluZGV4ZXM6IG51bWJlcltdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihlbnRpdHlNYW5hZ2VyOiBFbnRpdHlNYW5hZ2VyLCBlbnRpdHlUeXBlOiBFbnRpdHlUeXBlKSB7XHJcbiAgICB0aGlzLmVudGl0eU1hbmFnZXIgPSBlbnRpdHlNYW5hZ2VyO1xyXG4gICAgdGhpcy5lbnRpdHlUeXBlID0gZW50aXR5VHlwZTtcclxuICAgIC8vIGZyZWV6ZSB0aGUgZW50aXR5VHlwZSBhZnRlciB0aGUgZmlyc3QgaW5zdGFuY2Ugb2YgdGhpcyB0eXBlIGlzIGVpdGhlciBjcmVhdGVkIG9yIHF1ZXJpZWQuXHJcbiAgICB0aGlzLmVudGl0eVR5cGUuaXNGcm96ZW4gPSB0cnVlO1xyXG4gICAgdGhpcy5faW5kZXhNYXAgPSB7fTtcclxuICAgIHRoaXMuX2VudGl0aWVzID0gW107XHJcbiAgICB0aGlzLl9lbXB0eUluZGV4ZXMgPSBbXTtcclxuICB9XHJcblxyXG5cclxuICBhdHRhY2hFbnRpdHkoZW50aXR5OiBFbnRpdHksIGVudGl0eVN0YXRlOiBFbnRpdHlTdGF0ZSwgbWVyZ2VTdHJhdGVneT86IE1lcmdlU3RyYXRlZ3kpIHtcclxuICAgIC8vIGVudGl0eSBzaG91bGQgYWxyZWFkeSBoYXZlIGFuIGFzcGVjdC5cclxuICAgIGxldCBhc3BlY3QgPSBlbnRpdHkuZW50aXR5QXNwZWN0O1xyXG5cclxuICAgIGlmICghYXNwZWN0Ll9pbml0aWFsaXplZCkge1xyXG4gICAgICB0aGlzLmVudGl0eVR5cGUuX2luaXRpYWxpemVJbnN0YW5jZShlbnRpdHkpO1xyXG4gICAgfVxyXG4gICAgZGVsZXRlIGFzcGVjdC5faW5pdGlhbGl6ZWQ7XHJcblxyXG4gICAgbGV0IGtleUluR3JvdXAgPSBhc3BlY3QuZ2V0S2V5KCkuX2tleUluR3JvdXA7XHJcbiAgICBsZXQgaXggPSB0aGlzLl9pbmRleE1hcFtrZXlJbkdyb3VwXTtcclxuICAgIGlmIChpeCA+PSAwKSB7XHJcbiAgICAgIC8vIHNhZmVjYXN0IGJlY2F1c2Uga2V5IHdhcyBmb3VuZCBub3QgaXggd2lsbCBub3QgcmV0dXJuIGEgbnVsbFxyXG4gICAgICBsZXQgdGFyZ2V0RW50aXR5ID0gdGhpcy5fZW50aXRpZXNbaXhdIGFzIEVudGl0eTtcclxuICAgICAgbGV0IHRhcmdldEVudGl0eVN0YXRlID0gdGFyZ2V0RW50aXR5LmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZTtcclxuICAgICAgbGV0IHdhc1VuY2hhbmdlZCA9IHRhcmdldEVudGl0eVN0YXRlLmlzVW5jaGFuZ2VkKCk7XHJcbiAgICAgIGlmICh0YXJnZXRFbnRpdHkgPT09IGVudGl0eSkge1xyXG4gICAgICAgIGFzcGVjdC5lbnRpdHlTdGF0ZSA9IGVudGl0eVN0YXRlO1xyXG4gICAgICB9IGVsc2UgaWYgKG1lcmdlU3RyYXRlZ3kgPT09IE1lcmdlU3RyYXRlZ3kuRGlzYWxsb3dlZCkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkEgTWVyZ2VTdHJhdGVneSBvZiAnRGlzYWxsb3dlZCcgZG9lcyBub3QgYWxsb3cgeW91IHRvIGF0dGFjaCBhbiBlbnRpdHkgd2hlbiBhbiBlbnRpdHkgd2l0aCB0aGUgc2FtZSBrZXkgaXMgYWxyZWFkeSBhdHRhY2hlZDogXCIgKyBhc3BlY3QuZ2V0S2V5KCkpO1xyXG4gICAgICB9IGVsc2UgaWYgKG1lcmdlU3RyYXRlZ3kgPT09IE1lcmdlU3RyYXRlZ3kuT3ZlcndyaXRlQ2hhbmdlcyB8fCAobWVyZ2VTdHJhdGVneSA9PT0gTWVyZ2VTdHJhdGVneS5QcmVzZXJ2ZUNoYW5nZXMgJiYgd2FzVW5jaGFuZ2VkKSkge1xyXG4gICAgICAgIC8vIHVud3JhcEluc3RhbmNlIHJldHVybnMgYW4gZW50aXR5IHdpdGggc2VydmVyIHNpZGUgcHJvcGVydHkgbmFtZXMgLSBzbyB3ZSBuZWVkIHRvIHVzZSBEYXRhUHJvcGVydHkuZ2V0UmF3VmFsdWVGcm9tU2VydmVyIHRoZXNlIHdoZW4gd2UgYXBwbHlcclxuICAgICAgICAvLyB0aGUgcHJvcGVydHkgdmFsdWVzIGJhY2sgdG8gdGhlIHRhcmdldC5cclxuICAgICAgICBsZXQgcmF3U2VydmVyRW50aXR5ID0gdGhpcy5lbnRpdHlNYW5hZ2VyLmhlbHBlci51bndyYXBJbnN0YW5jZShlbnRpdHkpO1xyXG4gICAgICAgIHRoaXMuZW50aXR5VHlwZS5fdXBkYXRlVGFyZ2V0RnJvbVJhdyh0YXJnZXRFbnRpdHksIHJhd1NlcnZlckVudGl0eSwgRGF0YVByb3BlcnR5LmdldFJhd1ZhbHVlRnJvbVNlcnZlcik7XHJcbiAgICAgICAgdGFyZ2V0RW50aXR5LmVudGl0eUFzcGVjdC5zZXRFbnRpdHlTdGF0ZShlbnRpdHlTdGF0ZSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRhcmdldEVudGl0eTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLl9lbXB0eUluZGV4ZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgaXggPSB0aGlzLl9lbnRpdGllcy5wdXNoKGVudGl0eSkgLSAxO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGl4ID0gdGhpcy5fZW1wdHlJbmRleGVzLnBvcCgpO1xyXG4gICAgICAgIHRoaXMuX2VudGl0aWVzW2l4XSA9IGVudGl0eTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLl9pbmRleE1hcFtrZXlJbkdyb3VwXSA9IGl4O1xyXG4gICAgICBhc3BlY3QuZW50aXR5U3RhdGUgPSBlbnRpdHlTdGF0ZTtcclxuICAgICAgYXNwZWN0LmVudGl0eUdyb3VwID0gdGhpcztcclxuICAgICAgYXNwZWN0LmVudGl0eU1hbmFnZXIgPSB0aGlzLmVudGl0eU1hbmFnZXI7XHJcbiAgICAgIHJldHVybiBlbnRpdHk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZXRhY2hFbnRpdHkoZW50aXR5OiBFbnRpdHkpIHtcclxuICAgIC8vIGJ5IHRoaXMgcG9pbnQgd2UgaGF2ZSBhbHJlYWR5IGRldGVybWluZWQgdGhhdCB0aGlzIGVudGl0eVxyXG4gICAgLy8gYmVsb25ncyB0byB0aGlzIGdyb3VwLlxyXG4gICAgbGV0IGFzcGVjdCA9IGVudGl0eS5lbnRpdHlBc3BlY3Q7XHJcbiAgICBsZXQga2V5SW5Hcm91cCA9IGFzcGVjdC5nZXRLZXkoKS5fa2V5SW5Hcm91cDtcclxuICAgIGxldCBpeCA9IHRoaXMuX2luZGV4TWFwW2tleUluR3JvdXBdO1xyXG4gICAgaWYgKGl4ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgLy8gc2hvdWxkbid0IGhhcHBlbi5cclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW50ZXJuYWwgZXJyb3IgLSBlbnRpdHkgY2Fubm90IGJlIGZvdW5kIGluIGdyb3VwXCIpO1xyXG4gICAgfVxyXG4gICAgZGVsZXRlIHRoaXMuX2luZGV4TWFwW2tleUluR3JvdXBdO1xyXG4gICAgdGhpcy5fZW1wdHlJbmRleGVzLnB1c2goaXgpO1xyXG4gICAgdGhpcy5fZW50aXRpZXNbaXhdID0gbnVsbDtcclxuICAgIHJldHVybiBlbnRpdHk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gcmV0dXJucyBlbnRpdHkgYmFzZWQgb24gYW4gZW50aXR5IGtleSBkZWZpbmVkIGVpdGhlciBhcyBhbiBhcnJheSBvZiBrZXkgdmFsdWVzIG9yIGFuIEVudGl0eUtleVxyXG4gIGZpbmRFbnRpdHlCeUtleShlbnRpdHlLZXk6IEVudGl0eUtleSkge1xyXG4gICAgbGV0IGtleUluR3JvdXA6IHN0cmluZztcclxuICAgIGlmIChlbnRpdHlLZXkgaW5zdGFuY2VvZiBFbnRpdHlLZXkpIHtcclxuICAgICAga2V5SW5Hcm91cCA9IGVudGl0eUtleS5fa2V5SW5Hcm91cDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGtleUluR3JvdXAgPSBFbnRpdHlLZXkuY3JlYXRlS2V5U3RyaW5nKGVudGl0eUtleSk7XHJcbiAgICB9XHJcbiAgICBsZXQgaXggPSB0aGlzLl9pbmRleE1hcFtrZXlJbkdyb3VwXTtcclxuICAgIC8vIGNhbid0IHVzZSBqdXN0IChpeCkgYmVsb3cgYmVjYXVzZSAwIGlzIHZhbGlkXHJcbiAgICBsZXQgciA9IChpeCAhPT0gdW5kZWZpbmVkKSA/IHRoaXMuX2VudGl0aWVzW2l4XSA6IHVuZGVmaW5lZDtcclxuICAgIC8vIGNvZXJjZSBudWxsIHRvIHVuZGVmaW5lZFxyXG4gICAgcmV0dXJuIHIgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IHI7XHJcbiAgfVxyXG5cclxuICBoYXNDaGFuZ2VzKCkge1xyXG4gICAgbGV0IGVudGl0aWVzID0gdGhpcy5fZW50aXRpZXM7XHJcbiAgICBsZXQgdW5jaGFuZ2VkID0gRW50aXR5U3RhdGUuVW5jaGFuZ2VkO1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGVudGl0aWVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIGxldCBlID0gZW50aXRpZXNbaV07XHJcbiAgICAgIGlmIChlICYmIGUuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlICE9PSB1bmNoYW5nZWQpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q2hhbmdlcygpIHtcclxuICAgIGxldCBlbnRpdGllcyA9IHRoaXMuX2VudGl0aWVzO1xyXG4gICAgbGV0IHVuY2hhbmdlZCA9IEVudGl0eVN0YXRlLlVuY2hhbmdlZDtcclxuICAgIGxldCBjaGFuZ2VzOiBFbnRpdHlbXSA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGVudGl0aWVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIGxldCBlID0gZW50aXRpZXNbaV07XHJcbiAgICAgIGlmIChlICYmIGUuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlICE9PSB1bmNoYW5nZWQpIHtcclxuICAgICAgICBjaGFuZ2VzLnB1c2goZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBjaGFuZ2VzO1xyXG4gIH1cclxuXHJcbiAgZ2V0RW50aXRpZXMoZW50aXR5U3RhdGVzOiBFbnRpdHlTdGF0ZVtdKSB7XHJcbiAgICBsZXQgZmlsdGVyID0gZ2V0RmlsdGVyKGVudGl0eVN0YXRlcyk7XHJcbiAgICByZXR1cm4gdGhpcy5fZW50aXRpZXMuZmlsdGVyKGZpbHRlcikgYXMgRW50aXR5W107XHJcbiAgfVxyXG5cclxuICBfY2hlY2tPcGVyYXRpb24ob3BlcmF0aW9uTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9lbnRpdGllcy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRpdHkpIHtcclxuICAgICAgZW50aXR5ICYmIGVudGl0eS5lbnRpdHlBc3BlY3QuX2NoZWNrT3BlcmF0aW9uKG9wZXJhdGlvbk5hbWUpO1xyXG4gICAgfSk7XHJcbiAgICAvLyBmb3IgY2hhaW5pbmc7XHJcbiAgICByZXR1cm4gdGhpcztcclxuICB9XHJcblxyXG4gIC8vIGRvIG5vdCBleHBvc2UgdGhpcyBtZXRob2QuIEl0IGlzIGRvaW5nIGEgc3BlY2lhbCBwdXJwb3NlIElOQ09NUExFVEUgZmFzdCBkZXRhY2ggb3BlcmF0aW9uXHJcbiAgLy8ganVzdCBmb3IgdGhlIGVudGl0eU1hbmFnZXIgY2xlYXIgbWV0aG9kIC0gdGhlIGVudGl0eUdyb3VwIHdpbGwgYmUgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlXHJcbiAgLy8gYWZ0ZXIgdGhpcyBvcCwgd2hpY2ggaXMgb2sgYmVjYXVzZSBpdCB3aWxsIGJlIHRocm93biBhd2F5LlxyXG4gIC8vIFRPRE86IHJlbmFtZSB0aGlzIHRvIGJlIGNsZWFyIHRoYXQgaXQgaXMgVU5TQUZFLi4uXHJcbiAgX2NsZWFyKCkge1xyXG4gICAgdGhpcy5fZW50aXRpZXMuZm9yRWFjaChmdW5jdGlvbiAoZW50aXR5KSB7XHJcbiAgICAgIGlmIChlbnRpdHkgIT0gbnVsbCkge1xyXG4gICAgICAgIGVudGl0eS5lbnRpdHlBc3BlY3QuX2RldGFjaCgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgICh0aGlzIGFzIGFueSkuX2VudGl0aWVzID0gbnVsbDtcclxuICAgICh0aGlzIGFzIGFueSkuX2luZGV4TWFwID0gbnVsbDtcclxuICAgICh0aGlzIGFzIGFueSkuX2VtcHR5SW5kZXhlcyA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBfdXBkYXRlRmtWYWwoZmtQcm9wOiBEYXRhUHJvcGVydHksIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcclxuICAgIGxldCBma1Byb3BOYW1lID0gZmtQcm9wLm5hbWU7XHJcbiAgICB0aGlzLl9lbnRpdGllcy5mb3JFYWNoKGZ1bmN0aW9uIChlbnRpdHkpIHtcclxuICAgICAgaWYgKGVudGl0eSAhPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGVudGl0eS5nZXRQcm9wZXJ0eShma1Byb3BOYW1lKSA9PT0gb2xkVmFsdWUpIHtcclxuICAgICAgICAgIGVudGl0eS5zZXRQcm9wZXJ0eShma1Byb3BOYW1lLCBuZXdWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIF9maXh1cEtleSh0ZW1wVmFsdWU6IGFueSwgcmVhbFZhbHVlOiBhbnkpIHtcclxuICAgIC8vIHNpbmdsZSBwYXJ0IGtleXMgYXBwZWFyIGRpcmVjdGx5IGluIG1hcFxyXG4gICAgbGV0IGl4ID0gdGhpcy5faW5kZXhNYXBbdGVtcFZhbHVlXTtcclxuICAgIGlmIChpeCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkludGVybmFsIEVycm9yIGluIGtleSBmaXh1cCAtIHVuYWJsZSB0byBsb2NhdGUgZW50aXR5XCIpO1xyXG4gICAgfVxyXG4gICAgbGV0IGVudGl0eSA9IHRoaXMuX2VudGl0aWVzW2l4XSBhcyBFbnRpdHk7XHJcbiAgICBsZXQga2V5UHJvcE5hbWUgPSBlbnRpdHkuZW50aXR5VHlwZS5rZXlQcm9wZXJ0aWVzWzBdLm5hbWU7XHJcbiAgICAvLyBma3Mgb24gcmVsYXRlZCBlbnRpdGllcyB3aWxsIGF1dG9tYXRpY2FsbHkgZ2V0IHVwZGF0ZWQgYnkgdGhpcyBhcyB3ZWxsXHJcbiAgICBlbnRpdHkuc2V0UHJvcGVydHkoa2V5UHJvcE5hbWUsIHJlYWxWYWx1ZSk7XHJcbiAgICBkZWxldGUgZW50aXR5LmVudGl0eUFzcGVjdC5oYXNUZW1wS2V5O1xyXG4gICAgZGVsZXRlIHRoaXMuX2luZGV4TWFwW3RlbXBWYWx1ZV07XHJcbiAgICB0aGlzLl9pbmRleE1hcFtyZWFsVmFsdWVdID0gaXg7XHJcbiAgfVxyXG5cclxuICBfcmVwbGFjZUtleShvbGRLZXk6IEVudGl0eUtleSwgbmV3S2V5OiBFbnRpdHlLZXkpIHtcclxuICAgIGxldCBpeCA9IHRoaXMuX2luZGV4TWFwW29sZEtleS5fa2V5SW5Hcm91cF07XHJcbiAgICBkZWxldGUgdGhpcy5faW5kZXhNYXBbb2xkS2V5Ll9rZXlJbkdyb3VwXTtcclxuICAgIHRoaXMuX2luZGV4TWFwW25ld0tleS5fa2V5SW5Hcm91cF0gPSBpeDtcclxuICB9XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRGaWx0ZXIoZW50aXR5U3RhdGVzOiBFbnRpdHlTdGF0ZVtdKSB7XHJcbiAgaWYgKGVudGl0eVN0YXRlcy5sZW5ndGggPT09IDApIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoZTogRW50aXR5KSB7XHJcbiAgICAgIHJldHVybiAhIWU7XHJcbiAgICB9O1xyXG4gIH0gZWxzZSBpZiAoZW50aXR5U3RhdGVzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgbGV0IGVudGl0eVN0YXRlID0gZW50aXR5U3RhdGVzWzBdO1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlOiBFbnRpdHkpIHtcclxuICAgICAgcmV0dXJuICEhZSAmJiBlLmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZSA9PT0gZW50aXR5U3RhdGU7XHJcbiAgICB9O1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKGU6IEVudGl0eSkge1xyXG4gICAgICByZXR1cm4gISFlICYmIC0xICE9PSBlbnRpdHlTdGF0ZXMuaW5kZXhPZihlLmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZSk7XHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG5cclxuXHJcbi8vIGRvIG5vdCBleHBvc2UgRW50aXR5R3JvdXAgLSBpbnRlcm5hbCBvbmx5XHJcblxyXG5cclxuIl19
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { core } from './core';
|
|
2
|
-
import { assertParam } from './assert-param';
|
|
3
|
-
import { EntityType } from './entity-metadata';
|
|
4
|
-
import { DataType } from './data-type';
|
|
5
|
-
/**
|
|
6
|
-
An EntityKey is an object that represents the unique identity of an entity. EntityKey's are immutable.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
**/
|
|
10
|
-
export class EntityKey {
|
|
11
|
-
/**
|
|
12
|
-
Constructs a new EntityKey. Each entity within an EntityManager will have a unique EntityKey.
|
|
13
|
-
> // assume em1 is an EntityManager containing a number of existing entities.
|
|
14
|
-
> var empType = em1.metadataStore.getEntityType("Employee");
|
|
15
|
-
> var entityKey = new EntityKey(empType, 1);
|
|
16
|
-
|
|
17
|
-
EntityKey's may also be found by calling EntityAspect.getKey()
|
|
18
|
-
> // assume employee1 is an existing Employee entity
|
|
19
|
-
> var empKey = employee1.entityAspect.getKey();
|
|
20
|
-
|
|
21
|
-
Multipart keys are created by passing an array as the 'keyValues' parameter
|
|
22
|
-
> var empTerrType = em1.metadataStore.getEntityType("EmployeeTerritory");
|
|
23
|
-
> var empTerrKey = new EntityKey(empTerrType, [ 1, 77]);
|
|
24
|
-
> // The order of the properties in the 'keyValues' array must be the same as that
|
|
25
|
-
> // returned by empTerrType.keyProperties
|
|
26
|
-
@param entityType - The [[EntityType]] of the entity.
|
|
27
|
-
@param keyValues - A single value or an array of values.
|
|
28
|
-
*/
|
|
29
|
-
constructor(entityType, keyValues) {
|
|
30
|
-
assertParam(entityType, "entityType").isInstanceOf(EntityType).check();
|
|
31
|
-
let subtypes = entityType.getSelfAndSubtypes();
|
|
32
|
-
if (subtypes.length > 1) {
|
|
33
|
-
this._subtypes = subtypes.filter(function (st) {
|
|
34
|
-
return st.isAbstract === false;
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
if (!Array.isArray(keyValues)) {
|
|
38
|
-
keyValues = [keyValues];
|
|
39
|
-
}
|
|
40
|
-
this.entityType = entityType;
|
|
41
|
-
entityType.keyProperties.forEach(function (kp, i) {
|
|
42
|
-
// insure that guid keys are comparable.
|
|
43
|
-
if (kp.dataType === DataType.Guid) {
|
|
44
|
-
keyValues[i] = keyValues[i] && keyValues[i].toLowerCase ? keyValues[i].toLowerCase() : keyValues[i];
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
this.values = keyValues;
|
|
48
|
-
this._keyInGroup = EntityKey.createKeyString(keyValues);
|
|
49
|
-
}
|
|
50
|
-
toJSON() {
|
|
51
|
-
return {
|
|
52
|
-
entityType: this.entityType.name,
|
|
53
|
-
values: this.values
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
static fromJSON(json, metadataStore) {
|
|
57
|
-
let et = metadataStore._getStructuralType(json.entityType, true);
|
|
58
|
-
return new EntityKey(et, json.values);
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
Used to compare EntityKeys are determine if they refer to the same Entity.
|
|
62
|
-
There is also an static version of 'equals' with the same functionality.
|
|
63
|
-
|
|
64
|
-
> // assume em1 is an EntityManager containing a number of existing entities.
|
|
65
|
-
> var empType = em1.metadataStore.getEntityType("Employee");
|
|
66
|
-
> var empKey1 = new EntityKey(empType, 1);
|
|
67
|
-
> // assume employee1 is an existing Employee entity
|
|
68
|
-
> var empKey2 = employee1.entityAspect.getKey();
|
|
69
|
-
> if (empKey1.equals(empKey2)) {
|
|
70
|
-
> // do something ...
|
|
71
|
-
> }
|
|
72
|
-
**/
|
|
73
|
-
equals(entityKey) {
|
|
74
|
-
if (!(entityKey instanceof EntityKey))
|
|
75
|
-
return false;
|
|
76
|
-
return (this.entityType === entityKey.entityType) &&
|
|
77
|
-
core.arrayEquals(this.values, entityKey.values);
|
|
78
|
-
}
|
|
79
|
-
/*
|
|
80
|
-
Returns a human readable representation of this EntityKey.
|
|
81
|
-
*/
|
|
82
|
-
toString(altEntityType) {
|
|
83
|
-
return (altEntityType || this.entityType).name + '-' + this._keyInGroup;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
Used to compare EntityKeys are determine if they refer to the same Entity.
|
|
87
|
-
There is also an instance version of 'equals' with the same functionality.
|
|
88
|
-
> // assume em1 is an EntityManager containing a number of existing entities.
|
|
89
|
-
> var empType = em1.metadataStore.getEntityType("Employee");
|
|
90
|
-
> var empKey1 = new EntityKey(empType, 1);
|
|
91
|
-
> // assume employee1 is an existing Employee entity
|
|
92
|
-
> var empKey2 = employee1.entityAspect.getKey();
|
|
93
|
-
> if (EntityKey.equals(empKey1, empKey2)) {
|
|
94
|
-
> // do something ...
|
|
95
|
-
> }
|
|
96
|
-
**/
|
|
97
|
-
static equals(k1, k2) {
|
|
98
|
-
if (!(k1 instanceof EntityKey))
|
|
99
|
-
return false;
|
|
100
|
-
return k1.equals(k2);
|
|
101
|
-
}
|
|
102
|
-
/** @hidden @internal */
|
|
103
|
-
// TODO: we may want to compare to default values later.
|
|
104
|
-
_isEmpty() {
|
|
105
|
-
return this.values.join("").length === 0;
|
|
106
|
-
}
|
|
107
|
-
/** hidden */
|
|
108
|
-
// TODO: think about giving _ prefix or documenting.
|
|
109
|
-
static createKeyString(keyValues) {
|
|
110
|
-
return keyValues.join(EntityKey.ENTITY_KEY_DELIMITER);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
/** @hidden @internal */
|
|
114
|
-
EntityKey.ENTITY_KEY_DELIMITER = ":::";
|
|
115
|
-
EntityKey.prototype._$typeName = "EntityKey";
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWtleS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2JyZWV6ZS1jbGllbnQvIiwic291cmNlcyI6WyJzcmMvZW50aXR5LWtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsVUFBVSxFQUFpQixNQUFNLG1CQUFtQixDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdkM7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBZXBCOzs7Ozs7Ozs7Ozs7Ozs7OztNQWlCRTtJQUNGLFlBQVksVUFBc0IsRUFBRSxTQUFjO1FBQ2hELFdBQVcsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZFLElBQUksUUFBUSxHQUFHLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQy9DLElBQUksUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRTtnQkFDM0MsT0FBTyxFQUFFLENBQUMsVUFBVSxLQUFLLEtBQUssQ0FBQztZQUNqQyxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDN0IsU0FBUyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDekI7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixVQUFVLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQzlDLHdDQUF3QztZQUN4QyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLElBQUksRUFBRTtnQkFDakMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyRztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7UUFDeEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRTFELENBQUM7SUFHRCxNQUFNO1FBQ0osT0FBTztZQUNMLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUk7WUFDaEMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1NBQ3BCLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFTLEVBQUUsYUFBNEI7UUFDckQsSUFBSSxFQUFFLEdBQUcsYUFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFlLENBQUM7UUFDL0UsT0FBTyxJQUFJLFNBQVMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxNQUFNLENBQUMsU0FBb0I7UUFDekIsSUFBSSxDQUFDLENBQUMsU0FBUyxZQUFZLFNBQVMsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3BELE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FBQyxVQUFVLENBQUM7WUFDL0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O01BRUU7SUFDRixRQUFRLENBQUMsYUFBMEI7UUFDakMsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBYSxFQUFFLEVBQWE7UUFDeEMsSUFBSSxDQUFDLENBQUMsRUFBRSxZQUFZLFNBQVMsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzdDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCLHdEQUF3RDtJQUN4RCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCxhQUFhO0lBQ2Isb0RBQW9EO0lBQ3BELE1BQU0sQ0FBQyxlQUFlLENBQUMsU0FBZ0I7UUFDckMsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3hELENBQUM7O0FBMUhELHdCQUF3QjtBQUNqQiw4QkFBb0IsR0FBRyxLQUFLLENBQUM7QUE0SHRDLFNBQVMsQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvcmUgfSBmcm9tICcuL2NvcmUnO1xyXG5pbXBvcnQgeyBhc3NlcnRQYXJhbSB9IGZyb20gJy4vYXNzZXJ0LXBhcmFtJztcclxuaW1wb3J0IHsgRW50aXR5VHlwZSwgTWV0YWRhdGFTdG9yZSB9IGZyb20gJy4vZW50aXR5LW1ldGFkYXRhJztcclxuaW1wb3J0IHsgRGF0YVR5cGUgfSBmcm9tICcuL2RhdGEtdHlwZSc7XHJcblxyXG4vKipcclxuQW4gRW50aXR5S2V5IGlzIGFuIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIHVuaXF1ZSBpZGVudGl0eSBvZiBhbiBlbnRpdHkuICBFbnRpdHlLZXkncyBhcmUgaW1tdXRhYmxlLlxyXG5cclxuXHJcbioqL1xyXG5leHBvcnQgY2xhc3MgRW50aXR5S2V5IHtcclxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICBfJHR5cGVOYW1lOiBzdHJpbmc7IC8vIGFjdHVhbGx5IHBsYWNlZCBvbiBwcm90b3R5cGVcclxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICBzdGF0aWMgRU5USVRZX0tFWV9ERUxJTUlURVIgPSBcIjo6OlwiO1xyXG4gIC8qKiAgVGhlICdFbnRpdHlUeXBlJyB0aGF0IHRoaXMgaXMgYSBrZXkgZm9yLiBfX1JlYWQgT25seV9fICovXHJcbiAgZW50aXR5VHlwZTogRW50aXR5VHlwZTtcclxuICAvKiogIEFuIGFycmF5IG9mIHRoZSB2YWx1ZXMgZm9yIHRoaXMga2V5LiBUaGlzIHdpbGwgdXN1YWxseSBvbmx5IGhhdmUgYSBzaW5nbGUgZWxlbWVudCwgXHJcbiAgdW5sZXNzIHRoZSBlbnRpdHkgdHlwZSBoYXMgYSBtdWx0aXBhcnQga2V5LiBfX1JlYWQgT25seV9fICovXHJcbiAgdmFsdWVzOiBhbnlbXTtcclxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICBfa2V5SW5Hcm91cDogc3RyaW5nO1xyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIF9zdWJ0eXBlczogRW50aXR5VHlwZVtdO1xyXG5cclxuICAvKipcclxuICBDb25zdHJ1Y3RzIGEgbmV3IEVudGl0eUtleS4gIEVhY2ggZW50aXR5IHdpdGhpbiBhbiBFbnRpdHlNYW5hZ2VyIHdpbGwgaGF2ZSBhIHVuaXF1ZSBFbnRpdHlLZXkuXHJcbiAgPiAgICAgLy8gYXNzdW1lIGVtMSBpcyBhbiBFbnRpdHlNYW5hZ2VyIGNvbnRhaW5pbmcgYSBudW1iZXIgb2YgZXhpc3RpbmcgZW50aXRpZXMuXHJcbiAgPiAgICAgdmFyIGVtcFR5cGUgPSBlbTEubWV0YWRhdGFTdG9yZS5nZXRFbnRpdHlUeXBlKFwiRW1wbG95ZWVcIik7XHJcbiAgPiAgICAgdmFyIGVudGl0eUtleSA9IG5ldyBFbnRpdHlLZXkoZW1wVHlwZSwgMSk7XHJcblxyXG4gIEVudGl0eUtleSdzIG1heSBhbHNvIGJlIGZvdW5kIGJ5IGNhbGxpbmcgRW50aXR5QXNwZWN0LmdldEtleSgpXHJcbiAgPiAgICAgLy8gYXNzdW1lIGVtcGxveWVlMSBpcyBhbiBleGlzdGluZyBFbXBsb3llZSBlbnRpdHlcclxuICA+ICAgICB2YXIgZW1wS2V5ID0gZW1wbG95ZWUxLmVudGl0eUFzcGVjdC5nZXRLZXkoKTtcclxuXHJcbiAgTXVsdGlwYXJ0IGtleXMgYXJlIGNyZWF0ZWQgYnkgcGFzc2luZyBhbiBhcnJheSBhcyB0aGUgJ2tleVZhbHVlcycgcGFyYW1ldGVyXHJcbiAgPiAgICAgdmFyIGVtcFRlcnJUeXBlID0gZW0xLm1ldGFkYXRhU3RvcmUuZ2V0RW50aXR5VHlwZShcIkVtcGxveWVlVGVycml0b3J5XCIpO1xyXG4gID4gICAgIHZhciBlbXBUZXJyS2V5ID0gbmV3IEVudGl0eUtleShlbXBUZXJyVHlwZSwgWyAxLCA3N10pO1xyXG4gID4gICAgIC8vIFRoZSBvcmRlciBvZiB0aGUgcHJvcGVydGllcyBpbiB0aGUgJ2tleVZhbHVlcycgYXJyYXkgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGF0XHJcbiAgPiAgICAgLy8gcmV0dXJuZWQgYnkgZW1wVGVyclR5cGUua2V5UHJvcGVydGllc1xyXG4gIEBwYXJhbSBlbnRpdHlUeXBlIC0gVGhlIFtbRW50aXR5VHlwZV1dIG9mIHRoZSBlbnRpdHkuXHJcbiAgQHBhcmFtIGtleVZhbHVlcyAtIEEgc2luZ2xlIHZhbHVlIG9yIGFuIGFycmF5IG9mIHZhbHVlcy4gXHJcbiAgKi9cclxuICBjb25zdHJ1Y3RvcihlbnRpdHlUeXBlOiBFbnRpdHlUeXBlLCBrZXlWYWx1ZXM6IGFueSkge1xyXG4gICAgYXNzZXJ0UGFyYW0oZW50aXR5VHlwZSwgXCJlbnRpdHlUeXBlXCIpLmlzSW5zdGFuY2VPZihFbnRpdHlUeXBlKS5jaGVjaygpO1xyXG4gICAgbGV0IHN1YnR5cGVzID0gZW50aXR5VHlwZS5nZXRTZWxmQW5kU3VidHlwZXMoKTtcclxuICAgIGlmIChzdWJ0eXBlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgIHRoaXMuX3N1YnR5cGVzID0gc3VidHlwZXMuZmlsdGVyKGZ1bmN0aW9uIChzdCkge1xyXG4gICAgICAgIHJldHVybiBzdC5pc0Fic3RyYWN0ID09PSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGtleVZhbHVlcykpIHtcclxuICAgICAga2V5VmFsdWVzID0gW2tleVZhbHVlc107XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5lbnRpdHlUeXBlID0gZW50aXR5VHlwZTtcclxuICAgIGVudGl0eVR5cGUua2V5UHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChrcCwgaSkge1xyXG4gICAgICAvLyBpbnN1cmUgdGhhdCBndWlkIGtleXMgYXJlIGNvbXBhcmFibGUuXHJcbiAgICAgIGlmIChrcC5kYXRhVHlwZSA9PT0gRGF0YVR5cGUuR3VpZCkge1xyXG4gICAgICAgIGtleVZhbHVlc1tpXSA9IGtleVZhbHVlc1tpXSAmJiBrZXlWYWx1ZXNbaV0udG9Mb3dlckNhc2UgPyBrZXlWYWx1ZXNbaV0udG9Mb3dlckNhc2UoKSA6IGtleVZhbHVlc1tpXTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy52YWx1ZXMgPSBrZXlWYWx1ZXM7XHJcbiAgICB0aGlzLl9rZXlJbkdyb3VwID0gRW50aXR5S2V5LmNyZWF0ZUtleVN0cmluZyhrZXlWYWx1ZXMpO1xyXG5cclxuICB9XHJcblxyXG5cclxuICB0b0pTT04oKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBlbnRpdHlUeXBlOiB0aGlzLmVudGl0eVR5cGUubmFtZSxcclxuICAgICAgdmFsdWVzOiB0aGlzLnZhbHVlc1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uOiBhbnksIG1ldGFkYXRhU3RvcmU6IE1ldGFkYXRhU3RvcmUpIHtcclxuICAgIGxldCBldCA9IG1ldGFkYXRhU3RvcmUuX2dldFN0cnVjdHVyYWxUeXBlKGpzb24uZW50aXR5VHlwZSwgdHJ1ZSkgYXMgRW50aXR5VHlwZTtcclxuICAgIHJldHVybiBuZXcgRW50aXR5S2V5KGV0LCBqc29uLnZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBVc2VkIHRvIGNvbXBhcmUgRW50aXR5S2V5cyBhcmUgZGV0ZXJtaW5lIGlmIHRoZXkgcmVmZXIgdG8gdGhlIHNhbWUgRW50aXR5LlxyXG4gIFRoZXJlIGlzIGFsc28gYW4gc3RhdGljIHZlcnNpb24gb2YgJ2VxdWFscycgd2l0aCB0aGUgc2FtZSBmdW5jdGlvbmFsaXR5LlxyXG4gIFxyXG4gID4gICAgICAvLyBhc3N1bWUgZW0xIGlzIGFuIEVudGl0eU1hbmFnZXIgY29udGFpbmluZyBhIG51bWJlciBvZiBleGlzdGluZyBlbnRpdGllcy5cclxuICA+ICAgICAgdmFyIGVtcFR5cGUgPSBlbTEubWV0YWRhdGFTdG9yZS5nZXRFbnRpdHlUeXBlKFwiRW1wbG95ZWVcIik7XHJcbiAgPiAgICAgIHZhciBlbXBLZXkxID0gbmV3IEVudGl0eUtleShlbXBUeXBlLCAxKTtcclxuICA+ICAgICAgLy8gYXNzdW1lIGVtcGxveWVlMSBpcyBhbiBleGlzdGluZyBFbXBsb3llZSBlbnRpdHlcclxuICA+ICAgICAgdmFyIGVtcEtleTIgPSBlbXBsb3llZTEuZW50aXR5QXNwZWN0LmdldEtleSgpO1xyXG4gID4gICAgICBpZiAoZW1wS2V5MS5lcXVhbHMoZW1wS2V5MikpIHtcclxuICA+ICAgICAgICAgIC8vIGRvIHNvbWV0aGluZyAgLi4uXHJcbiAgPiAgICAgIH1cclxuICAqKi9cclxuICBlcXVhbHMoZW50aXR5S2V5OiBFbnRpdHlLZXkpOiBib29sZWFuIHtcclxuICAgIGlmICghKGVudGl0eUtleSBpbnN0YW5jZW9mIEVudGl0eUtleSkpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiAodGhpcy5lbnRpdHlUeXBlID09PSBlbnRpdHlLZXkuZW50aXR5VHlwZSkgJiZcclxuICAgICAgY29yZS5hcnJheUVxdWFscyh0aGlzLnZhbHVlcywgZW50aXR5S2V5LnZhbHVlcyk7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gIFJldHVybnMgYSBodW1hbiByZWFkYWJsZSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEVudGl0eUtleS5cclxuICAqL1xyXG4gIHRvU3RyaW5nKGFsdEVudGl0eVR5cGU/OiBFbnRpdHlUeXBlKSB7XHJcbiAgICByZXR1cm4gKGFsdEVudGl0eVR5cGUgfHwgdGhpcy5lbnRpdHlUeXBlKS5uYW1lICsgJy0nICsgdGhpcy5fa2V5SW5Hcm91cDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFVzZWQgdG8gY29tcGFyZSBFbnRpdHlLZXlzIGFyZSBkZXRlcm1pbmUgaWYgdGhleSByZWZlciB0byB0aGUgc2FtZSBFbnRpdHkuXHJcbiAgVGhlcmUgaXMgYWxzbyBhbiBpbnN0YW5jZSB2ZXJzaW9uIG9mICdlcXVhbHMnIHdpdGggdGhlIHNhbWUgZnVuY3Rpb25hbGl0eS5cclxuICA+ICAgICAgLy8gYXNzdW1lIGVtMSBpcyBhbiBFbnRpdHlNYW5hZ2VyIGNvbnRhaW5pbmcgYSBudW1iZXIgb2YgZXhpc3RpbmcgZW50aXRpZXMuXHJcbiAgPiAgICAgIHZhciBlbXBUeXBlID0gZW0xLm1ldGFkYXRhU3RvcmUuZ2V0RW50aXR5VHlwZShcIkVtcGxveWVlXCIpO1xyXG4gID4gICAgICB2YXIgZW1wS2V5MSA9IG5ldyBFbnRpdHlLZXkoZW1wVHlwZSwgMSk7XHJcbiAgPiAgICAgIC8vIGFzc3VtZSBlbXBsb3llZTEgaXMgYW4gZXhpc3RpbmcgRW1wbG95ZWUgZW50aXR5XHJcbiAgPiAgICAgIHZhciBlbXBLZXkyID0gZW1wbG95ZWUxLmVudGl0eUFzcGVjdC5nZXRLZXkoKTtcclxuICA+ICAgICAgaWYgKEVudGl0eUtleS5lcXVhbHMoZW1wS2V5MSwgZW1wS2V5MikpIHtcclxuICA+ICAgICAgICAgIC8vIGRvIHNvbWV0aGluZyAgLi4uXHJcbiAgPiAgICAgIH1cclxuICAqKi9cclxuICBzdGF0aWMgZXF1YWxzKGsxOiBFbnRpdHlLZXksIGsyOiBFbnRpdHlLZXkpIHtcclxuICAgIGlmICghKGsxIGluc3RhbmNlb2YgRW50aXR5S2V5KSkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuIGsxLmVxdWFscyhrMik7XHJcbiAgfVxyXG5cclxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICAvLyBUT0RPOiB3ZSBtYXkgd2FudCB0byBjb21wYXJlIHRvIGRlZmF1bHQgdmFsdWVzIGxhdGVyLlxyXG4gIF9pc0VtcHR5KCkge1xyXG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmpvaW4oXCJcIikubGVuZ3RoID09PSAwO1xyXG4gIH1cclxuXHJcbiAgLyoqIGhpZGRlbiAqL1xyXG4gIC8vIFRPRE86IHRoaW5rIGFib3V0IGdpdmluZyBfIHByZWZpeCBvciBkb2N1bWVudGluZy5cclxuICBzdGF0aWMgY3JlYXRlS2V5U3RyaW5nKGtleVZhbHVlczogYW55W10pIHtcclxuICAgIHJldHVybiBrZXlWYWx1ZXMuam9pbihFbnRpdHlLZXkuRU5USVRZX0tFWV9ERUxJTUlURVIpO1xyXG4gIH1cclxuXHJcbn1cclxuRW50aXR5S2V5LnByb3RvdHlwZS5fJHR5cGVOYW1lID0gXCJFbnRpdHlLZXlcIjtcclxuXHJcblxyXG4iXX0=
|