breeze-client 2.1.7-mjs → 2.2.0-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/README.md +8 -4
- 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/{esm2022/src/naming-convention.mjs → esm5/src/naming-convention.js} +29 -35
- 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 -2039
- 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 +11 -93
- 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 -507
- 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/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,330 +0,0 @@
|
|
|
1
|
-
import { core } from './core';
|
|
2
|
-
/** @hidden @internal */
|
|
3
|
-
export class Param {
|
|
4
|
-
// The %1 parameter
|
|
5
|
-
// is required
|
|
6
|
-
// must be a %2
|
|
7
|
-
// must be an instance of %2
|
|
8
|
-
// must be an instance of the %2 enumeration
|
|
9
|
-
// must have a %2 property
|
|
10
|
-
// must be an array where each element
|
|
11
|
-
// is optional or
|
|
12
|
-
v;
|
|
13
|
-
name;
|
|
14
|
-
defaultValue;
|
|
15
|
-
parent;
|
|
16
|
-
/** @hidden @internal */
|
|
17
|
-
_context;
|
|
18
|
-
/** @hidden @internal */
|
|
19
|
-
_contexts;
|
|
20
|
-
constructor(v, name) {
|
|
21
|
-
this.v = v;
|
|
22
|
-
this.name = name;
|
|
23
|
-
this._contexts = [null];
|
|
24
|
-
}
|
|
25
|
-
isObject() {
|
|
26
|
-
return this.isTypeOf('object');
|
|
27
|
-
}
|
|
28
|
-
isBoolean() {
|
|
29
|
-
return this.isTypeOf('boolean');
|
|
30
|
-
}
|
|
31
|
-
isString() {
|
|
32
|
-
return this.isTypeOf('string');
|
|
33
|
-
}
|
|
34
|
-
isNumber() {
|
|
35
|
-
return this.isTypeOf('number');
|
|
36
|
-
}
|
|
37
|
-
isFunction() {
|
|
38
|
-
return this.isTypeOf('function');
|
|
39
|
-
}
|
|
40
|
-
isNonEmptyString() {
|
|
41
|
-
return addContext(this, {
|
|
42
|
-
fn: isNonEmptyString,
|
|
43
|
-
msg: "must be a nonEmpty string"
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
isTypeOf(typeName) {
|
|
47
|
-
return addContext(this, {
|
|
48
|
-
fn: isTypeOf,
|
|
49
|
-
typeName: typeName,
|
|
50
|
-
msg: "must be a '" + typeName + "'"
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
isInstanceOf(type, typeName) {
|
|
54
|
-
typeName = typeName || type.prototype._$typeName;
|
|
55
|
-
return addContext(this, {
|
|
56
|
-
fn: isInstanceOf,
|
|
57
|
-
type: type,
|
|
58
|
-
typeName: typeName,
|
|
59
|
-
msg: "must be an instance of '" + typeName + "'"
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
hasProperty(propertyName) {
|
|
63
|
-
return addContext(this, {
|
|
64
|
-
fn: hasProperty,
|
|
65
|
-
propertyName: propertyName,
|
|
66
|
-
msg: "must have a '" + propertyName + "' property"
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
isEnumOf(enumType) {
|
|
70
|
-
return addContext(this, {
|
|
71
|
-
fn: isEnumOf,
|
|
72
|
-
enumType: enumType,
|
|
73
|
-
msg: "must be an instance of the '" + (enumType.name || 'unknown') + "' enumeration"
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
isRequired(allowNull = false) {
|
|
77
|
-
return addContext(this, {
|
|
78
|
-
fn: isRequired,
|
|
79
|
-
allowNull: allowNull,
|
|
80
|
-
msg: "is required"
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
isOptional() {
|
|
84
|
-
let context = {
|
|
85
|
-
fn: isOptional,
|
|
86
|
-
prevContext: null,
|
|
87
|
-
msg: isOptionalMessage
|
|
88
|
-
};
|
|
89
|
-
return addContext(this, context);
|
|
90
|
-
}
|
|
91
|
-
isNonEmptyArray() {
|
|
92
|
-
return this.isArray(true);
|
|
93
|
-
}
|
|
94
|
-
isArray(mustNotBeEmpty) {
|
|
95
|
-
let context = {
|
|
96
|
-
fn: isArray,
|
|
97
|
-
mustNotBeEmpty: mustNotBeEmpty,
|
|
98
|
-
prevContext: null,
|
|
99
|
-
msg: isArrayMessage
|
|
100
|
-
};
|
|
101
|
-
return addContext(this, context);
|
|
102
|
-
}
|
|
103
|
-
or() {
|
|
104
|
-
this._contexts.push(null);
|
|
105
|
-
this._context = null;
|
|
106
|
-
return this;
|
|
107
|
-
}
|
|
108
|
-
check(defaultValue) {
|
|
109
|
-
let ok = exec(this);
|
|
110
|
-
if (ok === undefined)
|
|
111
|
-
return;
|
|
112
|
-
if (!ok) {
|
|
113
|
-
throw new Error(this.getMessage());
|
|
114
|
-
}
|
|
115
|
-
if (this.v !== undefined) {
|
|
116
|
-
return this.v;
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
return defaultValue;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
/** @hidden @internal */
|
|
123
|
-
// called from outside this file.
|
|
124
|
-
_addContext(context) {
|
|
125
|
-
return addContext(this, context);
|
|
126
|
-
}
|
|
127
|
-
getMessage() {
|
|
128
|
-
let that = this;
|
|
129
|
-
let message = this._contexts.map(function (context) {
|
|
130
|
-
return getMessage(context, that.v);
|
|
131
|
-
}).join(", or it ");
|
|
132
|
-
return core.formatString(this.MESSAGE_PREFIX, this.name) + " " + message;
|
|
133
|
-
}
|
|
134
|
-
withDefault(defaultValue) {
|
|
135
|
-
this.defaultValue = defaultValue;
|
|
136
|
-
return this;
|
|
137
|
-
}
|
|
138
|
-
whereParam(propName) {
|
|
139
|
-
return this.parent.whereParam(propName);
|
|
140
|
-
}
|
|
141
|
-
applyAll(instance, checkOnly = false) {
|
|
142
|
-
let parentTypeName = instance._$typeName;
|
|
143
|
-
let allowUnknownProperty = (parentTypeName && this.parent.config._$typeName === parentTypeName);
|
|
144
|
-
let clone = core.extend({}, this.parent.config);
|
|
145
|
-
this.parent.params.forEach(function (p) {
|
|
146
|
-
if (!allowUnknownProperty)
|
|
147
|
-
delete clone[p.name];
|
|
148
|
-
try {
|
|
149
|
-
p.check();
|
|
150
|
-
}
|
|
151
|
-
catch (e) {
|
|
152
|
-
throwConfigError(instance, e.message);
|
|
153
|
-
}
|
|
154
|
-
(!checkOnly) && p._applyOne(instance);
|
|
155
|
-
});
|
|
156
|
-
// should be no properties left in the clone
|
|
157
|
-
if (!allowUnknownProperty) {
|
|
158
|
-
for (let key in clone) {
|
|
159
|
-
// allow props with an undefined value
|
|
160
|
-
if (clone[key] !== undefined) {
|
|
161
|
-
throwConfigError(instance, core.formatString("Unknown property: '%1'.", key));
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
/** @hidden @internal */
|
|
167
|
-
_applyOne = function (instance) {
|
|
168
|
-
if (this.v !== undefined) {
|
|
169
|
-
instance[this.name] = this.v;
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
if (this.defaultValue !== undefined) {
|
|
173
|
-
instance[this.name] = this.defaultValue;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
};
|
|
177
|
-
MESSAGE_PREFIX = "The '%1' parameter ";
|
|
178
|
-
}
|
|
179
|
-
/** @hidden @internal */
|
|
180
|
-
export let assertParam = function (v, name) {
|
|
181
|
-
return new Param(v, name);
|
|
182
|
-
};
|
|
183
|
-
function isTypeOf(context, v) {
|
|
184
|
-
if (v == null)
|
|
185
|
-
return false;
|
|
186
|
-
if (typeof (v) === context.typeName)
|
|
187
|
-
return true;
|
|
188
|
-
return false;
|
|
189
|
-
}
|
|
190
|
-
function isNonEmptyString(context, v) {
|
|
191
|
-
if (v == null)
|
|
192
|
-
return false;
|
|
193
|
-
return (typeof (v) === 'string') && v.length > 0;
|
|
194
|
-
}
|
|
195
|
-
function isInstanceOf(context, v) {
|
|
196
|
-
if (v == null || context.type == null)
|
|
197
|
-
return false;
|
|
198
|
-
return (v instanceof context.type);
|
|
199
|
-
}
|
|
200
|
-
function isEnumOf(context, v) {
|
|
201
|
-
if (v == null || context.enumType == null)
|
|
202
|
-
return false;
|
|
203
|
-
return context.enumType.contains(v);
|
|
204
|
-
}
|
|
205
|
-
function hasProperty(context, v) {
|
|
206
|
-
if (v == null || context.propertyName == null)
|
|
207
|
-
return false;
|
|
208
|
-
return (v[context.propertyName] !== undefined);
|
|
209
|
-
}
|
|
210
|
-
function isRequired(context, v) {
|
|
211
|
-
if (context.allowNull) {
|
|
212
|
-
return v !== undefined;
|
|
213
|
-
}
|
|
214
|
-
else {
|
|
215
|
-
return v != null;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
function isOptional(context, v) {
|
|
219
|
-
if (v == null)
|
|
220
|
-
return true;
|
|
221
|
-
let prevContext = context.prevContext;
|
|
222
|
-
if (prevContext && prevContext.fn) {
|
|
223
|
-
return prevContext.fn(prevContext, v);
|
|
224
|
-
}
|
|
225
|
-
else {
|
|
226
|
-
return true;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
function isOptionalMessage(context, v) {
|
|
230
|
-
let prevContext = context.prevContext;
|
|
231
|
-
let element = prevContext ? " or it " + getMessage(prevContext, v) : "";
|
|
232
|
-
return "is optional" + element;
|
|
233
|
-
}
|
|
234
|
-
function isArray(context, v) {
|
|
235
|
-
if (!Array.isArray(v)) {
|
|
236
|
-
return false;
|
|
237
|
-
}
|
|
238
|
-
if (context.mustNotBeEmpty) {
|
|
239
|
-
if (v.length === 0)
|
|
240
|
-
return false;
|
|
241
|
-
}
|
|
242
|
-
// allow standalone is array call.
|
|
243
|
-
let prevContext = context.prevContext;
|
|
244
|
-
if (!prevContext)
|
|
245
|
-
return true;
|
|
246
|
-
let pc = prevContext;
|
|
247
|
-
return v.every(function (v1) {
|
|
248
|
-
return pc.fn && pc.fn(pc, v1);
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
function isArrayMessage(context, v) {
|
|
252
|
-
let arrayDescr = context.mustNotBeEmpty ? "a nonEmpty array" : "an array";
|
|
253
|
-
let prevContext = context.prevContext;
|
|
254
|
-
let element = prevContext ? " where each element " + getMessage(prevContext, v) : "";
|
|
255
|
-
return " must be " + arrayDescr + element;
|
|
256
|
-
}
|
|
257
|
-
function getMessage(context, v) {
|
|
258
|
-
let msg = context.msg;
|
|
259
|
-
if (typeof (msg) === "function") {
|
|
260
|
-
msg = msg(context, v);
|
|
261
|
-
}
|
|
262
|
-
return msg;
|
|
263
|
-
}
|
|
264
|
-
function addContext(that, context) {
|
|
265
|
-
if (that._context) {
|
|
266
|
-
let curContext = that._context;
|
|
267
|
-
while (curContext.prevContext != null) {
|
|
268
|
-
curContext = curContext.prevContext;
|
|
269
|
-
}
|
|
270
|
-
if (curContext.prevContext === null) {
|
|
271
|
-
curContext.prevContext = context;
|
|
272
|
-
// just update the prevContext but don't change the curContext.
|
|
273
|
-
return that;
|
|
274
|
-
}
|
|
275
|
-
else if (context.prevContext == null) {
|
|
276
|
-
context.prevContext = that._context;
|
|
277
|
-
}
|
|
278
|
-
else {
|
|
279
|
-
throw new Error("Illegal construction - use 'or' to combine checks");
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
return setContext(that, context);
|
|
283
|
-
}
|
|
284
|
-
function setContext(that, context) {
|
|
285
|
-
that._contexts[that._contexts.length - 1] = context;
|
|
286
|
-
that._context = context;
|
|
287
|
-
return that;
|
|
288
|
-
}
|
|
289
|
-
function exec(self) {
|
|
290
|
-
// clear off last one if null
|
|
291
|
-
let contexts = self._contexts;
|
|
292
|
-
if (contexts[contexts.length - 1] == null) {
|
|
293
|
-
contexts.pop();
|
|
294
|
-
}
|
|
295
|
-
if (contexts.length === 0) {
|
|
296
|
-
return undefined;
|
|
297
|
-
}
|
|
298
|
-
return contexts.some(function (context) {
|
|
299
|
-
return context.fn ? context.fn(context, self.v) : false;
|
|
300
|
-
});
|
|
301
|
-
}
|
|
302
|
-
function throwConfigError(instance, message) {
|
|
303
|
-
throw new Error(core.formatString("Error configuring an instance of '%1'. %2", (instance && instance._$typeName) || "object", message));
|
|
304
|
-
}
|
|
305
|
-
class ConfigParam {
|
|
306
|
-
config;
|
|
307
|
-
params;
|
|
308
|
-
constructor(config) {
|
|
309
|
-
if (typeof (config) !== "object") {
|
|
310
|
-
throw new Error("Configuration parameter should be an object, instead it is a: " + typeof (config));
|
|
311
|
-
}
|
|
312
|
-
this.config = config;
|
|
313
|
-
this.params = [];
|
|
314
|
-
}
|
|
315
|
-
whereParam(propName) {
|
|
316
|
-
let param = new Param(this.config[propName], propName);
|
|
317
|
-
param.parent = this;
|
|
318
|
-
this.params.push(param);
|
|
319
|
-
return param;
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
/** @hidden @internal */
|
|
323
|
-
export let assertConfig = function (config) {
|
|
324
|
-
return new ConfigParam(config);
|
|
325
|
-
};
|
|
326
|
-
// Param is exposed so that additional 'is' methods can be added to the prototype.
|
|
327
|
-
core.Param = Param;
|
|
328
|
-
core.assertParam = assertParam;
|
|
329
|
-
core.assertConfig = assertConfig;
|
|
330
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0LXBhcmFtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Fzc2VydC1wYXJhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsSUFBSSxFQUFHLE1BQU0sUUFBUSxDQUFDO0FBc0IvQix3QkFBd0I7QUFDeEIsTUFBTSxPQUFPLEtBQUs7SUFDZCxtQkFBbUI7SUFDbkIsY0FBYztJQUNkLGVBQWU7SUFDZiw0QkFBNEI7SUFDNUIsNENBQTRDO0lBQzVDLDBCQUEwQjtJQUMxQixzQ0FBc0M7SUFDdEMsaUJBQWlCO0lBRWpCLENBQUMsQ0FBTTtJQUNQLElBQUksQ0FBUztJQUNiLFlBQVksQ0FBTTtJQUNsQixNQUFNLENBQWU7SUFDckIsd0JBQXdCO0lBQ3hCLFFBQVEsQ0FBZ0I7SUFDeEIsd0JBQXdCO0lBQ3hCLFNBQVMsQ0FBa0I7SUFFM0IsWUFBWSxDQUFNLEVBQUUsSUFBWTtRQUM1QixJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBTSxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsUUFBUTtRQUNKLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsU0FBUztRQUNMLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsUUFBUTtRQUNKLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsUUFBUTtRQUNKLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsVUFBVTtRQUNOLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lB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LENBQUM7Q0FDSjtBQUVELHdCQUF3QjtBQUN4QixNQUFNLENBQUMsSUFBSSxZQUFZLEdBQUcsVUFBVSxNQUFjO0lBQzlDLE9BQU8sSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFpQixDQUFDO0FBQ25ELENBQUMsQ0FBQztBQUdGLGtGQUFrRjtBQUNqRixJQUFZLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUMzQixJQUFZLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztBQUN2QyxJQUFZLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWV6ZUVudW0gfSBmcm9tICcuL2VudW0nO1xyXG5pbXBvcnQgeyBjb3JlICB9IGZyb20gJy4vY29yZSc7XHJcblxyXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuZXhwb3J0IGludGVyZmFjZSBJUGFyYW1Db250ZXh0IHtcclxuICAgIHR5cGVOYW1lPzogc3RyaW5nO1xyXG4gICAgdHlwZT86IEZ1bmN0aW9uO1xyXG4gICAgcHJldkNvbnRleHQ/OiBJUGFyYW1Db250ZXh0O1xyXG4gICAgbXNnPzogc3RyaW5nIHwgKChjb250ZXh0OiBJUGFyYW1Db250ZXh0LCB2OiBhbnkpID0+IHN0cmluZyk7XHJcbiAgICBtdXN0Tm90QmVFbXB0eT86IGJvb2xlYW47XHJcbiAgICBlbnVtVHlwZT86IEJyZWV6ZUVudW07XHJcbiAgICBwcm9wZXJ0eU5hbWU/OiBzdHJpbmc7XHJcbiAgICBhbGxvd051bGw/OiBib29sZWFuO1xyXG4gICAgZm4/KGNvbnRleHQ6IElQYXJhbUNvbnRleHQsIHY6IGFueSk6IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElDb25maWdQYXJhbSB7XHJcbiAgICBjb25maWc6IGFueTtcclxuICAgIHBhcmFtczogUGFyYW1bXTtcclxuICAgIHdoZXJlUGFyYW06IChwcm9wTmFtZTogc3RyaW5nKSA9PiBQYXJhbTtcclxufVxyXG5cclxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbmV4cG9ydCBjbGFzcyBQYXJhbSB7XHJcbiAgICAvLyBUaGUgJTEgcGFyYW1ldGVyXHJcbiAgICAvLyBpcyByZXF1aXJlZFxyXG4gICAgLy8gbXVzdCBiZSBhICUyXHJcbiAgICAvLyBtdXN0IGJlIGFuIGluc3RhbmNlIG9mICUyXHJcbiAgICAvLyBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIHRoZSAlMiBlbnVtZXJhdGlvblxyXG4gICAgLy8gbXVzdCBoYXZlIGEgJTIgcHJvcGVydHlcclxuICAgIC8vIG11c3QgYmUgYW4gYXJyYXkgd2hlcmUgZWFjaCBlbGVtZW50XHJcbiAgICAvLyBpcyBvcHRpb25hbCBvclxyXG5cclxuICAgIHY6IGFueTtcclxuICAgIG5hbWU6IHN0cmluZztcclxuICAgIGRlZmF1bHRWYWx1ZTogYW55O1xyXG4gICAgcGFyZW50OiBJQ29uZmlnUGFyYW07XHJcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICAgIF9jb250ZXh0OiBJUGFyYW1Db250ZXh0O1xyXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgICBfY29udGV4dHM6IElQYXJhbUNvbnRleHRbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcih2OiBhbnksIG5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMudiA9IHY7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgICAgICB0aGlzLl9jb250ZXh0cyA9IFs8YW55Pm51bGxdO1xyXG4gICAgfVxyXG5cclxuICAgIGlzT2JqZWN0KCk6IFBhcmFtIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1R5cGVPZignb2JqZWN0Jyk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNCb29sZWFuKCk6IFBhcmFtIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1R5cGVPZignYm9vbGVhbicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzU3RyaW5nKCk6IFBhcmFtIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1R5cGVPZignc3RyaW5nJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNOdW1iZXIoKTogUGFyYW0ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzVHlwZU9mKCdudW1iZXInKTtcclxuICAgIH1cclxuXHJcbiAgICBpc0Z1bmN0aW9uKCk6IFBhcmFtIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc1R5cGVPZignZnVuY3Rpb24nKTtcclxuICAgIH1cclxuXHJcbiAgICBpc05vbkVtcHR5U3RyaW5nKCk6IFBhcmFtIHtcclxuICAgICAgICByZXR1cm4gYWRkQ29udGV4dCh0aGlzLCB7XHJcbiAgICAgICAgICAgIGZuOiBpc05vbkVtcHR5U3RyaW5nLFxyXG4gICAgICAgICAgICBtc2c6IFwibXVzdCBiZSBhIG5vbkVtcHR5IHN0cmluZ1wiXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlzVHlwZU9mKHR5cGVOYW1lOiBzdHJpbmcpOiBQYXJhbSB7XHJcbiAgICAgICAgcmV0dXJuIGFkZENvbnRleHQodGhpcywge1xyXG4gICAgICAgICAgICBmbjogaXNUeXBlT2YsXHJcbiAgICAgICAgICAgIHR5cGVOYW1lOiB0eXBlTmFtZSxcclxuICAgICAgICAgICAgbXNnOiBcIm11c3QgYmUgYSAnXCIgKyB0eXBlTmFtZSArIFwiJ1wiXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlzSW5zdGFuY2VPZih0eXBlOiBGdW5jdGlvbiwgdHlwZU5hbWU/OiBzdHJpbmcpOiBQYXJhbSB7XHJcbiAgICAgICAgdHlwZU5hbWUgPSB0eXBlTmFtZSB8fCB0eXBlLnByb3RvdHlwZS5fJHR5cGVOYW1lO1xyXG4gICAgICAgIHJldHVybiBhZGRDb250ZXh0KHRoaXMsIHtcclxuICAgICAgICAgICAgZm46IGlzSW5zdGFuY2VPZixcclxuICAgICAgICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgICAgICAgdHlwZU5hbWU6IHR5cGVOYW1lLFxyXG4gICAgICAgICAgICBtc2c6IFwibXVzdCBiZSBhbiBpbnN0YW5jZSBvZiAnXCIgKyB0eXBlTmFtZSArIFwiJ1wiXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGhhc1Byb3BlcnR5KHByb3BlcnR5TmFtZTogc3RyaW5nKTogUGFyYW0ge1xyXG4gICAgICAgIHJldHVybiBhZGRDb250ZXh0KHRoaXMsIHtcclxuICAgICAgICAgICAgZm46IGhhc1Byb3BlcnR5LFxyXG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWU6IHByb3BlcnR5TmFtZSxcclxuICAgICAgICAgICAgbXNnOiBcIm11c3QgaGF2ZSBhICdcIiArIHByb3BlcnR5TmFtZSArIFwiJyBwcm9wZXJ0eVwiXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGlzRW51bU9mKGVudW1UeXBlOiBhbnkpOiBQYXJhbSB7XHJcbiAgICAgICAgcmV0dXJuIGFkZENvbnRleHQodGhpcywge1xyXG4gICAgICAgICAgICBmbjogaXNFbnVtT2YsXHJcbiAgICAgICAgICAgIGVudW1UeXBlOiBlbnVtVHlwZSxcclxuICAgICAgICAgICAgbXNnOiBcIm11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgdGhlICdcIiArIChlbnVtVHlwZS5uYW1lIHx8ICd1bmtub3duJykgKyBcIicgZW51bWVyYXRpb25cIlxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlzUmVxdWlyZWQoYWxsb3dOdWxsOiBib29sZWFuID0gZmFsc2UpOiBQYXJhbSB7XHJcbiAgICAgICAgcmV0dXJuIGFkZENvbnRleHQodGhpcywge1xyXG4gICAgICAgICAgICBmbjogaXNSZXF1aXJlZCxcclxuICAgICAgICAgICAgYWxsb3dOdWxsOiBhbGxvd051bGwsXHJcbiAgICAgICAgICAgIG1zZzogXCJpcyByZXF1aXJlZFwiXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNPcHRpb25hbCgpOiBQYXJhbSB7XHJcbiAgICAgICAgbGV0IGNvbnRleHQgPSB7XHJcbiAgICAgICAgICAgIGZuOiBpc09wdGlvbmFsLFxyXG4gICAgICAgICAgICBwcmV2Q29udGV4dDogPGFueT5udWxsLFxyXG4gICAgICAgICAgICBtc2c6IGlzT3B0aW9uYWxNZXNzYWdlXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gYWRkQ29udGV4dCh0aGlzLCBjb250ZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBpc05vbkVtcHR5QXJyYXkoKTogUGFyYW0ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzQXJyYXkodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNBcnJheShtdXN0Tm90QmVFbXB0eT86IGJvb2xlYW4pOiBQYXJhbSB7XHJcbiAgICAgICAgbGV0IGNvbnRleHQgPSB7XHJcbiAgICAgICAgICAgIGZuOiBpc0FycmF5LFxyXG4gICAgICAgICAgICBtdXN0Tm90QmVFbXB0eTogbXVzdE5vdEJlRW1wdHksXHJcbiAgICAgICAgICAgIHByZXZDb250ZXh0OiA8YW55Pm51bGwsXHJcbiAgICAgICAgICAgIG1zZzogaXNBcnJheU1lc3NhZ2VcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBhZGRDb250ZXh0KHRoaXMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG5cclxuICAgIG9yKCkge1xyXG4gICAgICAgIHRoaXMuX2NvbnRleHRzLnB1c2goPGFueT5udWxsKTtcclxuICAgICAgICB0aGlzLl9jb250ZXh0ID0gPGFueT5udWxsO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrKGRlZmF1bHRWYWx1ZT86IGFueSkge1xyXG4gICAgICAgIGxldCBvayA9IGV4ZWModGhpcyk7XHJcbiAgICAgICAgaWYgKG9rID09PSB1bmRlZmluZWQpIHJldHVybjtcclxuICAgICAgICBpZiAoIW9rKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmdldE1lc3NhZ2UoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy52ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICAgIC8vIGNhbGxlZCBmcm9tIG91dHNpZGUgdGhpcyBmaWxlLlxyXG4gICAgX2FkZENvbnRleHQoY29udGV4dDogSVBhcmFtQ29udGV4dCkge1xyXG4gICAgICAgIHJldHVybiBhZGRDb250ZXh0KHRoaXMsIGNvbnRleHQpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE1lc3NhZ2UoKSB7XHJcbiAgICAgICAgbGV0IHRoYXQgPSB0aGlzO1xyXG4gICAgICAgIGxldCBtZXNzYWdlID0gdGhpcy5fY29udGV4dHMubWFwKGZ1bmN0aW9uIChjb250ZXh0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRNZXNzYWdlKGNvbnRleHQsIHRoYXQudik7XHJcbiAgICAgICAgfSkuam9pbihcIiwgb3IgaXQgXCIpO1xyXG4gICAgICAgIHJldHVybiBjb3JlLmZvcm1hdFN0cmluZyh0aGlzLk1FU1NBR0VfUFJFRklYLCB0aGlzLm5hbWUpICsgXCIgXCIgKyBtZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIHdpdGhEZWZhdWx0KGRlZmF1bHRWYWx1ZTogYW55KSB7XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgd2hlcmVQYXJhbShwcm9wTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LndoZXJlUGFyYW0ocHJvcE5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIGFwcGx5QWxsKGluc3RhbmNlOiBhbnksIGNoZWNrT25seTogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgbGV0IHBhcmVudFR5cGVOYW1lID0gaW5zdGFuY2UuXyR0eXBlTmFtZTtcclxuICAgICAgICBsZXQgYWxsb3dVbmtub3duUHJvcGVydHkgPSAocGFyZW50VHlwZU5hbWUgJiYgdGhpcy5wYXJlbnQuY29uZmlnLl8kdHlwZU5hbWUgPT09IHBhcmVudFR5cGVOYW1lKTtcclxuXHJcbiAgICAgICAgbGV0IGNsb25lID0gY29yZS5leHRlbmQoe30sIHRoaXMucGFyZW50LmNvbmZpZyk7XHJcbiAgICAgICAgdGhpcy5wYXJlbnQucGFyYW1zLmZvckVhY2goZnVuY3Rpb24gKHApIHtcclxuICAgICAgICAgICAgaWYgKCFhbGxvd1Vua25vd25Qcm9wZXJ0eSkgZGVsZXRlIGNsb25lW3AubmFtZV07XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBwLmNoZWNrKCk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHRocm93Q29uZmlnRXJyb3IoaW5zdGFuY2UsIGUubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKCFjaGVja09ubHkpICYmIHAuX2FwcGx5T25lKGluc3RhbmNlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBzaG91bGQgYmUgbm8gcHJvcGVydGllcyBsZWZ0IGluIHRoZSBjbG9uZVxyXG4gICAgICAgIGlmICghYWxsb3dVbmtub3duUHJvcGVydHkpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQga2V5IGluIGNsb25lKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBhbGxvdyBwcm9wcyB3aXRoIGFuIHVuZGVmaW5lZCB2YWx1ZVxyXG4gICAgICAgICAgICAgICAgaWYgKGNsb25lW2tleV0gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93Q29uZmlnRXJyb3IoaW5zdGFuY2UsIGNvcmUuZm9ybWF0U3RyaW5nKFwiVW5rbm93biBwcm9wZXJ0eTogJyUxJy5cIiwga2V5KSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgICBfYXBwbHlPbmUgPSBmdW5jdGlvbiAodGhpczogUGFyYW0sIGluc3RhbmNlOiBhbnkpIHtcclxuICAgICAgICBpZiAodGhpcy52ICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgaW5zdGFuY2VbdGhpcy5uYW1lXSA9IHRoaXMudjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgaW5zdGFuY2VbdGhpcy5uYW1lXSA9IHRoaXMuZGVmYXVsdFZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBNRVNTQUdFX1BSRUZJWCA9IFwiVGhlICclMScgcGFyYW1ldGVyIFwiO1xyXG5cclxufVxyXG5cclxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbmV4cG9ydCBsZXQgYXNzZXJ0UGFyYW0gPSBmdW5jdGlvbiAodjogYW55LCBuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiBuZXcgUGFyYW0odiwgbmFtZSk7XHJcbn07XHJcblxyXG5mdW5jdGlvbiBpc1R5cGVPZihjb250ZXh0OiBJUGFyYW1Db250ZXh0LCB2OiBhbnkpIHtcclxuICAgIGlmICh2ID09IG51bGwpIHJldHVybiBmYWxzZTtcclxuICAgIGlmICh0eXBlb2YgKHYpID09PSBjb250ZXh0LnR5cGVOYW1lKSByZXR1cm4gdHJ1ZTtcclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNOb25FbXB0eVN0cmluZyhjb250ZXh0OiBJUGFyYW1Db250ZXh0LCB2OiBhbnkpIHtcclxuICAgIGlmICh2ID09IG51bGwpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiAodHlwZW9mICh2KSA9PT0gJ3N0cmluZycpICYmIHYubGVuZ3RoID4gMDtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNJbnN0YW5jZU9mKGNvbnRleHQ6IElQYXJhbUNvbnRleHQsIHY6IGFueSkge1xyXG4gICAgaWYgKHYgPT0gbnVsbCB8fCBjb250ZXh0LnR5cGUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuICh2IGluc3RhbmNlb2YgY29udGV4dC50eXBlKTtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNFbnVtT2YoY29udGV4dDogSVBhcmFtQ29udGV4dCwgdjogYW55KSB7XHJcbiAgICBpZiAodiA9PSBudWxsIHx8IGNvbnRleHQuZW51bVR5cGUgPT0gbnVsbCApIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiAoY29udGV4dC5lbnVtVHlwZSBhcyBhbnkpLmNvbnRhaW5zKHYpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBoYXNQcm9wZXJ0eShjb250ZXh0OiBJUGFyYW1Db250ZXh0LCB2OiBhbnkpIHtcclxuICAgIGlmICh2ID09IG51bGwgfHwgY29udGV4dC5wcm9wZXJ0eU5hbWUgPT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgcmV0dXJuICh2W2NvbnRleHQucHJvcGVydHlOYW1lXSAhPT0gdW5kZWZpbmVkKTtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNSZXF1aXJlZChjb250ZXh0OiBJUGFyYW1Db250ZXh0LCB2OiBhbnkpIHtcclxuICAgIGlmIChjb250ZXh0LmFsbG93TnVsbCkge1xyXG4gICAgICAgIHJldHVybiB2ICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB2ICE9IG51bGw7XHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzT3B0aW9uYWwoY29udGV4dDogSVBhcmFtQ29udGV4dCwgdjogYW55KSB7XHJcbiAgICBpZiAodiA9PSBudWxsKSByZXR1cm4gdHJ1ZTtcclxuICAgIGxldCBwcmV2Q29udGV4dCA9IGNvbnRleHQucHJldkNvbnRleHQ7XHJcbiAgICBpZiAocHJldkNvbnRleHQgJiYgcHJldkNvbnRleHQuZm4pIHtcclxuICAgICAgICByZXR1cm4gcHJldkNvbnRleHQuZm4ocHJldkNvbnRleHQsIHYpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaXNPcHRpb25hbE1lc3NhZ2UoY29udGV4dDogSVBhcmFtQ29udGV4dCwgdjogYW55KSB7XHJcbiAgICBsZXQgcHJldkNvbnRleHQgPSBjb250ZXh0LnByZXZDb250ZXh0O1xyXG4gICAgbGV0IGVsZW1lbnQgPSBwcmV2Q29udGV4dCA/IFwiIG9yIGl0IFwiICsgZ2V0TWVzc2FnZShwcmV2Q29udGV4dCwgdikgOiBcIlwiO1xyXG4gICAgcmV0dXJuIFwiaXMgb3B0aW9uYWxcIiArIGVsZW1lbnQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzQXJyYXkoY29udGV4dDogSVBhcmFtQ29udGV4dCwgdjogYW55KSB7XHJcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodikpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAoY29udGV4dC5tdXN0Tm90QmVFbXB0eSkge1xyXG4gICAgICAgIGlmICh2Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgLy8gYWxsb3cgc3RhbmRhbG9uZSBpcyBhcnJheSBjYWxsLlxyXG4gICAgbGV0IHByZXZDb250ZXh0ID0gY29udGV4dC5wcmV2Q29udGV4dDtcclxuICAgIGlmICghcHJldkNvbnRleHQpIHJldHVybiB0cnVlO1xyXG5cclxuICAgIGxldCBwYyA9IDxhbnk+cHJldkNvbnRleHQ7XHJcbiAgICByZXR1cm4gdi5ldmVyeShmdW5jdGlvbiAodjE6IGFueSkge1xyXG4gICAgICAgIHJldHVybiBwYy5mbiAmJiBwYy5mbihwYywgdjEpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzQXJyYXlNZXNzYWdlKGNvbnRleHQ6IElQYXJhbUNvbnRleHQsIHY6IGFueSkge1xyXG4gICAgbGV0IGFycmF5RGVzY3IgPSBjb250ZXh0Lm11c3ROb3RCZUVtcHR5ID8gXCJhIG5vbkVtcHR5IGFycmF5XCIgOiBcImFuIGFycmF5XCI7XHJcbiAgICBsZXQgcHJldkNvbnRleHQgPSBjb250ZXh0LnByZXZDb250ZXh0O1xyXG4gICAgbGV0IGVsZW1lbnQgPSBwcmV2Q29udGV4dCA/IFwiIHdoZXJlIGVhY2ggZWxlbWVudCBcIiArIGdldE1lc3NhZ2UocHJldkNvbnRleHQsIHYpIDogXCJcIjtcclxuICAgIHJldHVybiBcIiBtdXN0IGJlIFwiICsgYXJyYXlEZXNjciArIGVsZW1lbnQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldE1lc3NhZ2UoY29udGV4dDogSVBhcmFtQ29udGV4dCwgdjogYW55KSB7XHJcbiAgICBsZXQgbXNnID0gY29udGV4dC5tc2c7XHJcbiAgICBpZiAodHlwZW9mIChtc2cpID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBtc2cgPSAoPGFueT5tc2cpKGNvbnRleHQsIHYpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG1zZztcclxufVxyXG5cclxuZnVuY3Rpb24gYWRkQ29udGV4dCh0aGF0OiBQYXJhbSwgY29udGV4dDogSVBhcmFtQ29udGV4dCkge1xyXG4gICAgaWYgKHRoYXQuX2NvbnRleHQpIHtcclxuICAgICAgICBsZXQgY3VyQ29udGV4dCA9IHRoYXQuX2NvbnRleHQ7XHJcblxyXG4gICAgICAgIHdoaWxlIChjdXJDb250ZXh0LnByZXZDb250ZXh0ICE9IG51bGwpIHtcclxuICAgICAgICAgICAgY3VyQ29udGV4dCA9IGN1ckNvbnRleHQucHJldkNvbnRleHQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY3VyQ29udGV4dC5wcmV2Q29udGV4dCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICBjdXJDb250ZXh0LnByZXZDb250ZXh0ID0gY29udGV4dDtcclxuICAgICAgICAgICAgLy8ganVzdCB1cGRhdGUgdGhlIHByZXZDb250ZXh0IGJ1dCBkb24ndCBjaGFuZ2UgdGhlIGN1ckNvbnRleHQuXHJcbiAgICAgICAgICAgIHJldHVybiB0aGF0O1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY29udGV4dC5wcmV2Q29udGV4dCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQucHJldkNvbnRleHQgPSB0aGF0Ll9jb250ZXh0O1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIklsbGVnYWwgY29uc3RydWN0aW9uIC0gdXNlICdvcicgdG8gY29tYmluZSBjaGVja3NcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHNldENvbnRleHQodGhhdCwgY29udGV4dCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNldENvbnRleHQodGhhdDogUGFyYW0sIGNvbnRleHQ6IElQYXJhbUNvbnRleHQpIHtcclxuICAgIHRoYXQuX2NvbnRleHRzW3RoYXQuX2NvbnRleHRzLmxlbmd0aCAtIDFdID0gY29udGV4dDtcclxuICAgIHRoYXQuX2NvbnRleHQgPSBjb250ZXh0O1xyXG4gICAgcmV0dXJuIHRoYXQ7XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBleGVjKHNlbGY6IFBhcmFtKSB7XHJcbiAgICAvLyBjbGVhciBvZmYgbGFzdCBvbmUgaWYgbnVsbFxyXG4gICAgbGV0IGNvbnRleHRzID0gc2VsZi5fY29udGV4dHM7XHJcbiAgICBpZiAoY29udGV4dHNbY29udGV4dHMubGVuZ3RoIC0gMV0gPT0gbnVsbCkge1xyXG4gICAgICAgIGNvbnRleHRzLnBvcCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGNvbnRleHRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY29udGV4dHMuc29tZShmdW5jdGlvbiAoY29udGV4dDogSVBhcmFtQ29udGV4dCkge1xyXG4gICAgICAgIHJldHVybiBjb250ZXh0LmZuID8gY29udGV4dC5mbihjb250ZXh0LCBzZWxmLnYpIDogZmFsc2U7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gdGhyb3dDb25maWdFcnJvcihpbnN0YW5jZTogYW55LCBtZXNzYWdlOiBzdHJpbmcpIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihjb3JlLmZvcm1hdFN0cmluZyhcIkVycm9yIGNvbmZpZ3VyaW5nIGFuIGluc3RhbmNlIG9mICclMScuICUyXCIsIChpbnN0YW5jZSAmJiBpbnN0YW5jZS5fJHR5cGVOYW1lKSB8fCBcIm9iamVjdFwiLCBtZXNzYWdlKSk7XHJcbn1cclxuXHJcbmNsYXNzIENvbmZpZ1BhcmFtIHtcclxuICAgIGNvbmZpZzogYW55O1xyXG4gICAgcGFyYW1zOiBQYXJhbVtdO1xyXG4gICAgY29uc3RydWN0b3IoY29uZmlnOiBPYmplY3QpIHtcclxuICAgICAgICBpZiAodHlwZW9mIChjb25maWcpICE9PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIHNob3VsZCBiZSBhbiBvYmplY3QsIGluc3RlYWQgaXQgaXMgYTogXCIgKyB0eXBlb2YgKGNvbmZpZykpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcclxuICAgICAgICB0aGlzLnBhcmFtcyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIHdoZXJlUGFyYW0ocHJvcE5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIGxldCBwYXJhbSA9IG5ldyBQYXJhbSh0aGlzLmNvbmZpZ1twcm9wTmFtZV0sIHByb3BOYW1lKTtcclxuICAgICAgICBwYXJhbS5wYXJlbnQgPSB0aGlzO1xyXG4gICAgICAgIHRoaXMucGFyYW1zLnB1c2gocGFyYW0pO1xyXG4gICAgICAgIHJldHVybiBwYXJhbTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbmV4cG9ydCBsZXQgYXNzZXJ0Q29uZmlnID0gZnVuY3Rpb24gKGNvbmZpZzogT2JqZWN0KSB7XHJcbiAgICByZXR1cm4gbmV3IENvbmZpZ1BhcmFtKGNvbmZpZykgYXMgSUNvbmZpZ1BhcmFtO1xyXG59O1xyXG5cclxuXHJcbi8vIFBhcmFtIGlzIGV4cG9zZWQgc28gdGhhdCBhZGRpdGlvbmFsICdpcycgbWV0aG9kcyBjYW4gYmUgYWRkZWQgdG8gdGhlIHByb3RvdHlwZS5cclxuKGNvcmUgYXMgYW55KS5QYXJhbSA9IFBhcmFtO1xyXG4oY29yZSBhcyBhbnkpLmFzc2VydFBhcmFtID0gYXNzZXJ0UGFyYW07XHJcbihjb3JlIGFzIGFueSkuYXNzZXJ0Q29uZmlnID0gYXNzZXJ0Q29uZmlnO1xyXG4iXX0=
|
package/esm2022/src/breeze.mjs
DELETED
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { AbstractDataServiceAdapter } from './abstract-data-service-adapter';
|
|
2
|
-
import { assertParam, assertConfig, Param } from './assert-param';
|
|
3
|
-
import { BreezeConfig } from './config';
|
|
4
|
-
import { BreezeEnum } from './enum';
|
|
5
|
-
import { BreezeEvent } from './event';
|
|
6
|
-
import { DataService, JsonResultsAdapter } from './data-service';
|
|
7
|
-
import { DataType } from './data-type';
|
|
8
|
-
import { EntityAction } from './entity-action';
|
|
9
|
-
import { EntityAspect, ComplexAspect } from './entity-aspect';
|
|
10
|
-
import { EntityKey } from './entity-key';
|
|
11
|
-
import { EntityManager } from './entity-manager';
|
|
12
|
-
import { EntityQuery, FilterQueryOp, BooleanQueryOp, OrderByClause, ExpandClause, SelectClause } from './entity-query';
|
|
13
|
-
import { EntityState } from './entity-state';
|
|
14
|
-
import { InterfaceRegistry } from './interface-registry';
|
|
15
|
-
import { KeyGenerator } from './key-generator';
|
|
16
|
-
import { LocalQueryComparisonOptions } from './local-query-comparison-options';
|
|
17
|
-
import { MappingContext } from './mapping-context';
|
|
18
|
-
import { MetadataStore, EntityType, ComplexType, DataProperty, NavigationProperty, AutoGeneratedKeyType } from './entity-metadata';
|
|
19
|
-
import { NamingConvention } from './naming-convention';
|
|
20
|
-
import { Predicate, UnaryPredicate, BinaryPredicate, AnyAllPredicate, AndOrPredicate, LitExpr, FnExpr, PropExpr } from './predicate';
|
|
21
|
-
import { QueryOptions, FetchStrategy, MergeStrategy } from './query-options';
|
|
22
|
-
import { SaveOptions } from './save-options';
|
|
23
|
-
import { ValidationError, Validator } from './validate';
|
|
24
|
-
import { ValidationOptions } from './validation-options';
|
|
25
|
-
import { config } from './config';
|
|
26
|
-
import { core } from './core';
|
|
27
|
-
import { makeRelationArray, makePrimitiveArray, makeComplexArray } from './array';
|
|
28
|
-
export { BreezeConfig };
|
|
29
|
-
export { AbstractDataServiceAdapter, AndOrPredicate, AnyAllPredicate, assertConfig, assertParam, AutoGeneratedKeyType, BinaryPredicate, BreezeEnum, BreezeEvent, ComplexAspect, ComplexType, config, core, DataProperty, DataService, DataType, EntityAction, EntityAspect, EntityKey, EntityManager, EntityQuery, EntityState, EntityType, ExpandClause, FetchStrategy, FilterQueryOp, FnExpr, InterfaceRegistry, JsonResultsAdapter, KeyGenerator, LitExpr, LocalQueryComparisonOptions, makeComplexArray, makePrimitiveArray, makeRelationArray, MappingContext, MergeStrategy, MetadataStore, NamingConvention, NavigationProperty, OrderByClause, Predicate, PropExpr, QueryOptions, SaveOptions, SelectClause, UnaryPredicate, ValidationError, ValidationOptions, Validator, };
|
|
30
|
-
// create a breeze variable here
|
|
31
|
-
export const breeze = {
|
|
32
|
-
AbstractDataServiceAdapter: AbstractDataServiceAdapter,
|
|
33
|
-
assertConfig: null,
|
|
34
|
-
assertParam: null,
|
|
35
|
-
AutoGeneratedKeyType: AutoGeneratedKeyType,
|
|
36
|
-
BooleanQueryOp: BooleanQueryOp,
|
|
37
|
-
ComplexAspect: ComplexAspect,
|
|
38
|
-
ComplexType: ComplexType,
|
|
39
|
-
config: config,
|
|
40
|
-
core: core,
|
|
41
|
-
DataProperty: DataProperty,
|
|
42
|
-
DataService: DataService,
|
|
43
|
-
DataType: DataType,
|
|
44
|
-
EntityAction: EntityAction,
|
|
45
|
-
EntityAspect: EntityAspect,
|
|
46
|
-
EntityKey: EntityKey,
|
|
47
|
-
EntityManager: EntityManager,
|
|
48
|
-
EntityQuery: EntityQuery,
|
|
49
|
-
EntityState: EntityState,
|
|
50
|
-
EntityType: EntityType,
|
|
51
|
-
Event: BreezeEvent,
|
|
52
|
-
FetchStrategy: FetchStrategy,
|
|
53
|
-
FilterQueryOp: FilterQueryOp,
|
|
54
|
-
InterfaceRegistry: InterfaceRegistry,
|
|
55
|
-
JsonResultsAdapter: JsonResultsAdapter,
|
|
56
|
-
KeyGenerator: KeyGenerator,
|
|
57
|
-
LocalQueryComparisonOptions: LocalQueryComparisonOptions,
|
|
58
|
-
makeComplexArray: makeComplexArray,
|
|
59
|
-
makePrimitiveArray: makePrimitiveArray,
|
|
60
|
-
makeRelationArray: makeRelationArray,
|
|
61
|
-
MergeStrategy: MergeStrategy,
|
|
62
|
-
MetadataStore: MetadataStore,
|
|
63
|
-
NamingConvention: NamingConvention,
|
|
64
|
-
NavigationProperty: NavigationProperty,
|
|
65
|
-
OrderByClause: OrderByClause,
|
|
66
|
-
Param,
|
|
67
|
-
Predicate: Predicate,
|
|
68
|
-
QueryOptions: QueryOptions,
|
|
69
|
-
SaveOptions: SaveOptions,
|
|
70
|
-
ValidationError: ValidationError,
|
|
71
|
-
ValidationOptions: ValidationOptions,
|
|
72
|
-
Validator: Validator,
|
|
73
|
-
version: "2.1.5"
|
|
74
|
-
};
|
|
75
|
-
/** @hidden @internal */
|
|
76
|
-
let win;
|
|
77
|
-
try {
|
|
78
|
-
win = window ? window : (global ? global.window : undefined);
|
|
79
|
-
}
|
|
80
|
-
catch (e) {
|
|
81
|
-
}
|
|
82
|
-
if (win) {
|
|
83
|
-
win.breeze = breeze;
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlZXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2JyZWV6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsMEJBQTBCLEVBQUMsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFDbkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUV0QyxPQUFPLEVBQUUsV0FBVyxFQUFxQixrQkFBa0IsRUFBbUQsTUFBTSxnQkFBZ0IsQ0FBQztBQUNySSxPQUFPLEVBQUUsUUFBUSxFQUFHLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBcUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNqSSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxhQUFhLEVBQW1OLE1BQU0sa0JBQWtCLENBQUM7QUFDbFEsT0FBTyxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxpQkFBaUIsRUFBa0ssTUFBTSxzQkFBc0IsQ0FBQztBQUN6TixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDL0UsT0FBTyxF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RSxZQUFZO0lBQzFCLDJCQUEyQixFQUFFLDJCQUEyQjtJQUN4RCxnQkFBZ0IsRUFBRSxnQkFBZ0I7SUFDbEMsa0JBQWtCLEVBQUUsa0JBQWtCO0lBQ3RDLGlCQUFpQixFQUFFLGlCQUFpQjtJQUNwQyxhQUFhLEVBQUUsYUFBYTtJQUM1QixhQUFhLEVBQUUsYUFBYTtJQUM1QixnQkFBZ0IsRUFBRSxnQkFBZ0I7SUFDbEMsa0JBQWtCLEVBQUUsa0JBQWtCO0lBQ3RDLGFBQWEsRUFBRSxhQUFhO0lBQzVCLEtBQUs7SUFDTCxTQUFTLEVBQUUsU0FBUztJQUNwQixZQUFZLEVBQUUsWUFBWTtJQUMxQixXQUFXLEVBQUUsV0FBVztJQUN4QixlQUFlLEVBQUUsZUFBZTtJQUNoQyxpQkFBaUIsRUFBRSxpQkFBaUI7SUFDcEMsU0FBUyxFQUFFLFNBQVM7SUFDcEIsT0FBTyxFQUFFLE9BQU87Q0FDakIsQ0FBQztBQWdCRix3QkFBd0I7QUFDeEIsSUFBSSxHQUFRLENBQUM7QUFDYixJQUFJO0lBQ0YsR0FBRyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7Q0FDOUQ7QUFBQyxPQUFPLENBQUMsRUFBRTtDQUVYO0FBQ0QsSUFBSSxHQUFHLEVBQUU7SUFDUCxHQUFHLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztDQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBBYnN0cmFjdERhdGFTZXJ2aWNlQWRhcHRlcn0gZnJvbSAnLi9hYnN0cmFjdC1kYXRhLXNlcnZpY2UtYWRhcHRlcic7XHJcbmltcG9ydCB7IGFzc2VydFBhcmFtLCBhc3NlcnRDb25maWcsIFBhcmFtIH0gZnJvbSAnLi9hc3NlcnQtcGFyYW0nO1xyXG5pbXBvcnQgeyBCcmVlemVDb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XHJcbmltcG9ydCB7IEJyZWV6ZUVudW19IGZyb20gJy4vZW51bSc7XHJcbmltcG9ydCB7IEJyZWV6ZUV2ZW50IH0gZnJvbSAnLi9ldmVudCc7XHJcbmltcG9ydCB7IENvbXBsZXhBcnJheSB9IGZyb20gJy4vY29tcGxleC1hcnJheSc7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlLCBEYXRhU2VydmljZUNvbmZpZywgSnNvblJlc3VsdHNBZGFwdGVyLCBKc29uUmVzdWx0c0FkYXB0ZXJDb25maWcsIE5vZGVDb250ZXh0LCBOb2RlTWV0YSB9IGZyb20gJy4vZGF0YS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGF0YVR5cGUgIH0gZnJvbSAnLi9kYXRhLXR5cGUnO1xyXG5pbXBvcnQgeyBFbnRpdHlBY3Rpb24gfSBmcm9tICcuL2VudGl0eS1hY3Rpb24nO1xyXG5pbXBvcnQgeyBFbnRpdHlBc3BlY3QsIENvbXBsZXhBc3BlY3QsIEVudGl0eSwgQ29tcGxleE9iamVjdCwgU3RydWN0dXJhbE9iamVjdCwgUHJvcGVydHlDaGFuZ2VkRXZlbnRBcmdzIH0gZnJvbSAnLi9lbnRpdHktYXNwZWN0JztcclxuaW1wb3J0IHsgRW50aXR5S2V5IH0gZnJvbSAnLi9lbnRpdHkta2V5JztcclxuaW1wb3J0IHsgRW50aXR5TWFuYWdlciwgRW50aXR5TWFuYWdlckNvbmZpZywgRW50aXR5RXJyb3IsIEVudGl0eUNoYW5nZWRFdmVudEFyZ3MsIFNhdmVDb250ZXh0LCBTYXZlQnVuZGxlLCBIdHRwUmVzcG9uc2UsIEtleU1hcHBpbmcsIFNlcnZlckVycm9yLCBTYXZlUmVzdWx0LCBRdWVyeVJlc3VsdCwgVmFsaWRhdGlvbkVycm9yc0NoYW5nZWRFdmVudEFyZ3MsIEhhc0NoYW5nZXNDaGFuZ2VkRXZlbnRBcmdzIH0gZnJvbSAnLi9lbnRpdHktbWFuYWdlcic7XHJcbmltcG9ydCB7IEVudGl0eVF1ZXJ5LCBGaWx0ZXJRdWVyeU9wLCBCb29sZWFuUXVlcnlPcCwgT3JkZXJCeUNsYXVzZSwgRXhwYW5kQ2xhdXNlLCBTZWxlY3RDbGF1c2UgfSBmcm9tICcuL2VudGl0eS1xdWVyeSc7XHJcbmltcG9ydCB7IEVudGl0eVN0YXRlIH0gZnJvbSAnLi9lbnRpdHktc3RhdGUnO1xyXG5pbXBvcnQgeyBJbnRlcmZhY2VSZWdpc3RyeSwgQWpheEFkYXB0ZXIsIEFqYXhDb25maWcsIERhdGFTZXJ2aWNlQWRhcHRlciwgTW9kZWxMaWJyYXJ5QWRhcHRlciwgQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yLCBVcmlCdWlsZGVyQWRhcHRlciwgSW50ZXJmYWNlUmVnaXN0cnlDb25maWcsIEFqYXhSZXF1ZXN0SW50ZXJjZXB0b3IgfSBmcm9tICcuL2ludGVyZmFjZS1yZWdpc3RyeSc7XHJcbmltcG9ydCB7IEtleUdlbmVyYXRvciB9IGZyb20gJy4va2V5LWdlbmVyYXRvcic7XHJcbmltcG9ydCB7IExvY2FsUXVlcnlDb21wYXJpc29uT3B0aW9ucyB9IGZyb20gJy4vbG9jYWwtcXVlcnktY29tcGFyaXNvbi1vcHRpb25zJztcclxuaW1wb3J0IHsgTWFwcGluZ0NvbnRleHQgfSBmcm9tICcuL21hcHBpbmctY29udGV4dCc7XHJcbmltcG9ydCB7IE1ldGFkYXRhU3RvcmUsIEVudGl0eVR5cGUsIENvbXBsZXhUeXBlLCBTdHJ1Y3R1cmFsVHlwZSwgRGF0YVByb3BlcnR5LCBFbnRpdHlQcm9wZXJ0eSwgTmF2aWdhdGlvblByb3BlcnR5LCBBdXRvR2VuZXJhdGVkS2V5VHlwZSAgIH0gZnJvbSAnLi9lbnRpdHktbWV0YWRhdGEnO1xyXG5pbXBvcnQgeyBOYW1pbmdDb252ZW50aW9uIH0gZnJvbSAnLi9uYW1pbmctY29udmVudGlvbic7XHJcbmltcG9ydCB7IFByZWRpY2F0ZSwgVmlzaXRDb250ZXh0LCBWaXNpdG9yLCBFeHByZXNzaW9uQ29udGV4dCwgVW5hcnlQcmVkaWNhdGUsIEJpbmFyeVByZWRpY2F0ZSwgQW55QWxsUHJlZGljYXRlLCBBbmRPclByZWRpY2F0ZSwgTGl0RXhwciwgRm5FeHByLCBQcm9wRXhwciB9IGZyb20gJy4vcHJlZGljYXRlJztcclxuaW1wb3J0IHsgUXVlcnlPcHRpb25zLCAgRmV0Y2hTdHJhdGVneSwgTWVyZ2VTdHJhdGVneSB9IGZyb20gJy4vcXVlcnktb3B0aW9ucyc7XHJcbmltcG9ydCB7IFNhdmVPcHRpb25zIH0gZnJvbSAnLi9zYXZlLW9wdGlvbnMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uRXJyb3IsIFZhbGlkYXRvciB9IGZyb20gJy4vdmFsaWRhdGUnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uT3B0aW9ucyB9IGZyb20gJy4vdmFsaWRhdGlvbi1vcHRpb25zJztcclxuXHJcbmltcG9ydCB7IGNvbmZpZywgQmFzZUFkYXB0ZXIgfSBmcm9tICcuL2NvbmZpZyc7XHJcbmltcG9ydCB7IGNvcmUsIENhbGxiYWNrLCBFcnJvckNhbGxiYWNrIH0gZnJvbSAnLi9jb3JlJztcclxuaW1wb3J0IHsgbWFrZVJlbGF0aW9uQXJyYXksIG1ha2VQcmltaXRpdmVBcnJheSwgbWFrZUNvbXBsZXhBcnJheSB9IGZyb20gJy4vYXJyYXknO1xyXG5cclxuaW1wb3J0IHsgUmVsYXRpb25BcnJheSB9IGZyb20gJy4vcmVsYXRpb24tYXJyYXknO1xyXG5pbXBvcnQgeyBBcnJheUNoYW5nZWRBcmdzIH0gZnJvbSAnLi9vYnNlcnZhYmxlLWFycmF5JztcclxuZXhwb3J0IHsgQnJlZXplQ29uZmlnLCBDb21wbGV4QXJyYXksIFJlbGF0aW9uQXJyYXkgfTtcclxuXHJcbmV4cG9ydCB7XHJcbiAgQWJzdHJhY3REYXRhU2VydmljZUFkYXB0ZXIsXHJcbiAgQWpheEFkYXB0ZXIsXHJcbiAgQWpheENvbmZpZyxcclxuICBBamF4UmVxdWVzdEludGVyY2VwdG9yLFxyXG4gIEFuZE9yUHJlZGljYXRlLFxyXG4gIEFueUFsbFByZWRpY2F0ZSxcclxuICBBcnJheUNoYW5nZWRBcmdzLFxyXG4gIGFzc2VydENvbmZpZyxcclxuICBhc3NlcnRQYXJhbSxcclxuICBBdXRvR2VuZXJhdGVkS2V5VHlwZSxcclxuICBCYXNlQWRhcHRlcixcclxuICBCaW5hcnlQcmVkaWNhdGUsXHJcbiAgQnJlZXplRW51bSxcclxuICBCcmVlemVFdmVudCwgXHJcbiAgQ2FsbGJhY2ssXHJcbiAgQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yLFxyXG4gIENvbXBsZXhBc3BlY3QsXHJcbiAgQ29tcGxleE9iamVjdCxcclxuICBDb21wbGV4VHlwZSxcclxuICBjb25maWcsXHJcbiAgY29yZSxcclxuICBEYXRhUHJvcGVydHksXHJcbiAgRGF0YVNlcnZpY2UsXHJcbiAgRGF0YVNlcnZpY2VBZGFwdGVyLFxyXG4gIERhdGFTZXJ2aWNlQ29uZmlnLFxyXG4gIERhdGFUeXBlLFxyXG4gIEVudGl0eSxcclxuICBFbnRpdHlBY3Rpb24sXHJcbiAgRW50aXR5QXNwZWN0LFxyXG4gIEVudGl0eUNoYW5nZWRFdmVudEFyZ3MsXHJcbiAgRW50aXR5RXJyb3IsXHJcbiAgRW50aXR5S2V5LFxyXG4gIEVudGl0eU1hbmFnZXIsXHJcbiAgRW50aXR5TWFuYWdlckNvbmZpZyxcclxuICBFbnRpdHlQcm9wZXJ0eSxcclxuICBFbnRpdHlRdWVyeSxcclxuICBFbnRpdHlTdGF0ZSxcclxuICBFbnRpdHlUeXBlLFxyXG4gIEVycm9yQ2FsbGJhY2ssXHJcbiAgRXhwYW5kQ2xhdXNlLFxyXG4gIEV4cHJlc3Npb25Db250ZXh0LFxyXG4gIEZldGNoU3RyYXRlZ3ksXHJcbiAgRmlsdGVyUXVlcnlPcCxcclxuICBGbkV4cHIsXHJcbiAgSGFzQ2hhbmdlc0NoYW5nZWRFdmVudEFyZ3MsXHJcbiAgSHR0cFJlc3BvbnNlLFxyXG4gIEludGVyZmFjZVJlZ2lzdHJ5LFxyXG4gIEludGVyZmFjZVJlZ2lzdHJ5Q29uZmlnLFxyXG4gIEpzb25SZXN1bHRzQWRhcHRlcixcclxuICBKc29uUmVzdWx0c0FkYXB0ZXJDb25maWcsXHJcbiAgS2V5R2VuZXJhdG9yLFxyXG4gIEtleU1hcHBpbmcsXHJcbiAgTGl0RXhwcixcclxuICBMb2NhbFF1ZXJ5Q29tcGFyaXNvbk9wdGlvbnMsXHJcbiAgbWFrZUNvbXBsZXhBcnJheSxcclxuICBtYWtlUHJpbWl0aXZlQXJyYXksXHJcbiAgbWFrZVJlbGF0aW9uQXJyYXksXHJcbiAgTWFwcGluZ0NvbnRleHQsXHJcbiAgTWVyZ2VTdHJhdGVneSxcclxuICBNZXRhZGF0YVN0b3JlLFxyXG4gIE1vZGVsTGlicmFyeUFkYXB0ZXIsXHJcbiAgTmFtaW5nQ29udmVudGlvbixcclxuICBOYXZpZ2F0aW9uUHJvcGVydHksXHJcbiAgTm9kZUNvbnRleHQsXHJcbiAgTm9kZU1ldGEsXHJcbiAgT3JkZXJCeUNsYXVzZSxcclxuICBQcmVkaWNhdGUsXHJcbiAgUHJvcGVydHlDaGFuZ2VkRXZlbnRBcmdzLFxyXG4gIFByb3BFeHByLFxyXG4gIFF1ZXJ5T3B0aW9ucyxcclxuICBRdWVyeVJlc3VsdCxcclxuICBTYXZlQnVuZGxlLFxyXG4gIFNhdmVDb250ZXh0LFxyXG4gIFNhdmVPcHRpb25zLFxyXG4gIFNhdmVSZXN1bHQsXHJcbiAgU2VsZWN0Q2xhdXNlLFxyXG4gIFNlcnZlckVycm9yLFxyXG4gIFN0cnVjdHVyYWxPYmplY3QsXHJcbiAgU3RydWN0dXJhbFR5cGUsXHJcbiAgVW5hcnlQcmVkaWNhdGUsXHJcbiAgVXJpQnVpbGRlckFkYXB0ZXIsXHJcbiAgVmFsaWRhdGlvbkVycm9yc0NoYW5nZWRFdmVudEFyZ3MsXHJcbiAgVmFsaWRhdGlvbkVycm9yLFxyXG4gIFZhbGlkYXRpb25PcHRpb25zLFxyXG4gIFZhbGlkYXRvcixcclxuICBWaXNpdENvbnRleHQsXHJcbiAgVmlzaXRvcixcclxufTtcclxuXHJcbi8vIGNyZWF0ZSBhIGJyZWV6ZSB2YXJpYWJsZSBoZXJlXHJcbmV4cG9ydCBjb25zdCBicmVlemUgPSB7XHJcbiAgQWJzdHJhY3REYXRhU2VydmljZUFkYXB0ZXI6IEFic3RyYWN0RGF0YVNlcnZpY2VBZGFwdGVyLFxyXG4gIGFzc2VydENvbmZpZzogbnVsbCBhcyBhbnksXHJcbiAgYXNzZXJ0UGFyYW06IG51bGwgYXMgYW55LFxyXG4gIEF1dG9HZW5lcmF0ZWRLZXlUeXBlOiBBdXRvR2VuZXJhdGVkS2V5VHlwZSxcclxuICBCb29sZWFuUXVlcnlPcDogQm9vbGVhblF1ZXJ5T3AsXHJcbiAgQ29tcGxleEFzcGVjdDogQ29tcGxleEFzcGVjdCxcclxuICBDb21wbGV4VHlwZTogQ29tcGxleFR5cGUsXHJcbiAgY29uZmlnOiBjb25maWcsXHJcbiAgY29yZTogY29yZSxcclxuICBEYXRhUHJvcGVydHk6IERhdGFQcm9wZXJ0eSxcclxuICBEYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXHJcbiAgRGF0YVR5cGU6IERhdGFUeXBlLFxyXG4gIEVudGl0eUFjdGlvbjogRW50aXR5QWN0aW9uLFxyXG4gIEVudGl0eUFzcGVjdDogRW50aXR5QXNwZWN0LFxyXG4gIEVudGl0eUtleTogRW50aXR5S2V5LFxyXG4gIEVudGl0eU1hbmFnZXI6IEVudGl0eU1hbmFnZXIsXHJcbiAgRW50aXR5UXVlcnk6IEVudGl0eVF1ZXJ5LFxyXG4gIEVudGl0eVN0YXRlOiBFbnRpdHlTdGF0ZSxcclxuICBFbnRpdHlUeXBlOiBFbnRpdHlUeXBlLFxyXG4gIEV2ZW50OiBCcmVlemVFdmVudCxcclxuICBGZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5LFxyXG4gIEZpbHRlclF1ZXJ5T3A6IEZpbHRlclF1ZXJ5T3AsXHJcbiAgSW50ZXJmYWNlUmVnaXN0cnk6IEludGVyZmFjZVJlZ2lzdHJ5LFxyXG4gIEpzb25SZXN1bHRzQWRhcHRlcjogSnNvblJlc3VsdHNBZGFwdGVyLFxyXG4gIEtleUdlbmVyYXRvcjogS2V5R2VuZXJhdG9yLFxyXG4gIExvY2FsUXVlcnlDb21wYXJpc29uT3B0aW9uczogTG9jYWxRdWVyeUNvbXBhcmlzb25PcHRpb25zLFxyXG4gIG1ha2VDb21wbGV4QXJyYXk6IG1ha2VDb21wbGV4QXJyYXksXHJcbiAgbWFrZVByaW1pdGl2ZUFycmF5OiBtYWtlUHJpbWl0aXZlQXJyYXksXHJcbiAgbWFrZVJlbGF0aW9uQXJyYXk6IG1ha2VSZWxhdGlvbkFycmF5LFxyXG4gIE1lcmdlU3RyYXRlZ3k6IE1lcmdlU3RyYXRlZ3ksXHJcbiAgTWV0YWRhdGFTdG9yZTogTWV0YWRhdGFTdG9yZSxcclxuICBOYW1pbmdDb252ZW50aW9uOiBOYW1pbmdDb252ZW50aW9uLFxyXG4gIE5hdmlnYXRpb25Qcm9wZXJ0eTogTmF2aWdhdGlvblByb3BlcnR5LFxyXG4gIE9yZGVyQnlDbGF1c2U6IE9yZGVyQnlDbGF1c2UsIC8vIGZvciB0ZXN0aW5nIG9ubHlcclxuICBQYXJhbSxcclxuICBQcmVkaWNhdGU6IFByZWRpY2F0ZSxcclxuICBRdWVyeU9wdGlvbnM6IFF1ZXJ5T3B0aW9ucyxcclxuICBTYXZlT3B0aW9uczogU2F2ZU9wdGlvbnMsXHJcbiAgVmFsaWRhdGlvbkVycm9yOiBWYWxpZGF0aW9uRXJyb3IsXHJcbiAgVmFsaWRhdGlvbk9wdGlvbnM6IFZhbGlkYXRpb25PcHRpb25zLFxyXG4gIFZhbGlkYXRvcjogVmFsaWRhdG9yLFxyXG4gIHZlcnNpb246IFwiMi4xLjVcIlxyXG59O1xyXG5cclxuLy8gYnJlZXplLmFzc2VydENvbmZpZyA9IGFzc2VydENvbmZpZyBhcyBhbnk7XHJcbi8vIGJyZWV6ZS5hc3NlcnRQYXJhbSA9IGFzc2VydFBhcmFtIGFzIGFueTtcclxuXHJcbmV4cG9ydCBuYW1lc3BhY2UgcHJvbWlzZXMge1xyXG4gIC8qKiBuby1vcCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIGJyZWV6ZS1icmlkZ2UyLWFuZ3VsYXIgKi9cclxuICBleHBvcnQgaW50ZXJmYWNlIElQcm9taXNlU2VydmljZSB7fVxyXG59XHJcblxyXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuZGVjbGFyZSB2YXIgd2luZG93OiBhbnk7XHJcblxyXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuZGVjbGFyZSB2YXIgZ2xvYmFsOiBhbnk7XHJcblxyXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxubGV0IHdpbjogYW55O1xyXG50cnkge1xyXG4gIHdpbiA9IHdpbmRvdyA/IHdpbmRvdyA6IChnbG9iYWwgPyBnbG9iYWwud2luZG93IDogdW5kZWZpbmVkKTtcclxufSBjYXRjaCAoZSkge1xyXG5cclxufVxyXG5pZiAod2luKSB7XHJcbiAgd2luLmJyZWV6ZSA9IGJyZWV6ZTtcclxufVxyXG4iXX0=
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
import { core } from './core';
|
|
2
|
-
import { observableArray } from './observable-array';
|
|
3
|
-
import { BreezeEvent } from './event';
|
|
4
|
-
let complexArrayMixin = {
|
|
5
|
-
// complexArray will have the following props
|
|
6
|
-
// parent
|
|
7
|
-
// propertyPath
|
|
8
|
-
// parentProperty
|
|
9
|
-
// addedItems - only if modified
|
|
10
|
-
// removedItems - only if modified
|
|
11
|
-
// each complexAspect of any entity within a complexArray
|
|
12
|
-
// will have its own _complexState = "A/M";
|
|
13
|
-
/**
|
|
14
|
-
Complex arrays are not actually classes, they are objects that mimic arrays. A complex array is collection of
|
|
15
|
-
complexTypes associated with a data property on a single entity or other complex object. i.e. customer.orders or order.orderDetails.
|
|
16
|
-
This collection looks like an array in that the basic methods on arrays such as 'push', 'pop', 'shift', 'unshift', 'splice'
|
|
17
|
-
are all provided as well as several special purpose methods.
|
|
18
|
-
@class {complexArray}
|
|
19
|
-
**/
|
|
20
|
-
/**
|
|
21
|
-
An [[Event]] that fires whenever the contents of this array changed. This event
|
|
22
|
-
is fired any time a new entity is attached or added to the EntityManager and happens to belong to this collection.
|
|
23
|
-
Adds that occur as a result of query or import operations are batched so that all of the adds or removes to any individual
|
|
24
|
-
collections are collected into a single notification event for each relation array.
|
|
25
|
-
@example
|
|
26
|
-
// assume order is an order entity attached to an EntityManager.
|
|
27
|
-
orders.arrayChanged.subscribe(
|
|
28
|
-
function (arrayChangedArgs) {
|
|
29
|
-
var addedEntities = arrayChangedArgs.added;
|
|
30
|
-
var removedEntities = arrayChanged.removed;
|
|
31
|
-
});
|
|
32
|
-
@event arrayChanged
|
|
33
|
-
@param added {Array of Entity} An array of all of the entities added to this collection.
|
|
34
|
-
@param removed {Array of Entity} An array of all of the removed from this collection.
|
|
35
|
-
@readOnly
|
|
36
|
-
**/
|
|
37
|
-
// virtual impls
|
|
38
|
-
_getGoodAdds: function (adds) {
|
|
39
|
-
return getGoodAdds(this, adds);
|
|
40
|
-
},
|
|
41
|
-
_beforeChange: function () {
|
|
42
|
-
observableArray.updateEntityState(this);
|
|
43
|
-
},
|
|
44
|
-
_processAdds: function (adds) {
|
|
45
|
-
processAdds(this, adds);
|
|
46
|
-
},
|
|
47
|
-
_processRemoves: function (removes) {
|
|
48
|
-
processRemoves(this, removes);
|
|
49
|
-
},
|
|
50
|
-
_rejectChanges: function () {
|
|
51
|
-
if (!this._origValues)
|
|
52
|
-
return;
|
|
53
|
-
let that = this;
|
|
54
|
-
this.forEach(function (co) {
|
|
55
|
-
clearAspect(co, that);
|
|
56
|
-
});
|
|
57
|
-
this.length = 0;
|
|
58
|
-
this._origValues.forEach(function (co) {
|
|
59
|
-
that.push(co);
|
|
60
|
-
});
|
|
61
|
-
},
|
|
62
|
-
_acceptChanges: function () {
|
|
63
|
-
this._origValues = null;
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
// local functions
|
|
67
|
-
function getGoodAdds(complexArray, adds) {
|
|
68
|
-
// remove any that are already added here
|
|
69
|
-
return adds.filter(function (a) {
|
|
70
|
-
// return a.parent !== complexArray.parent; // TODO: check if this is actually a bug in original breezejs ???
|
|
71
|
-
return a.complexAspect == null || a.complexAspect.parent !== complexArray.parent;
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
function processAdds(complexArray, adds) {
|
|
75
|
-
adds.forEach(function (a) {
|
|
76
|
-
// if (a.parent != null) { // TODO: check if this is actually a bug in original breezejs ???
|
|
77
|
-
if (a.complexAspect && a.complexAspect.parent != null) {
|
|
78
|
-
throw new Error("The complexObject is already attached. Either clone it or remove it from its current owner");
|
|
79
|
-
}
|
|
80
|
-
setAspect(a, complexArray);
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
function processRemoves(complexArray, removes) {
|
|
84
|
-
removes.forEach(function (a) {
|
|
85
|
-
clearAspect(a, complexArray);
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
function clearAspect(co, arr) {
|
|
89
|
-
let coAspect = co.complexAspect;
|
|
90
|
-
// if not already attached - exit
|
|
91
|
-
if (coAspect.parent !== arr.parent)
|
|
92
|
-
return null;
|
|
93
|
-
coAspect.parent = undefined;
|
|
94
|
-
coAspect.parentProperty = undefined;
|
|
95
|
-
return coAspect;
|
|
96
|
-
}
|
|
97
|
-
function setAspect(co, arr) {
|
|
98
|
-
let coAspect = co.complexAspect;
|
|
99
|
-
// if already attached - exit
|
|
100
|
-
if (coAspect.parent === arr.parent)
|
|
101
|
-
return null;
|
|
102
|
-
coAspect.parent = arr.parent;
|
|
103
|
-
coAspect.parentProperty = arr.parentProperty;
|
|
104
|
-
return coAspect;
|
|
105
|
-
}
|
|
106
|
-
/** For use by breeze plugin authors only. The class is for use in building a [[IModelLibraryAdapter]] implementation.
|
|
107
|
-
@adapter (see [[IModelLibraryAdapter]])
|
|
108
|
-
@hidden
|
|
109
|
-
*/
|
|
110
|
-
export function makeComplexArray(arr, parent, parentProperty) {
|
|
111
|
-
let arrX = arr;
|
|
112
|
-
observableArray.initializeParent(arrX, parent, parentProperty);
|
|
113
|
-
arrX.arrayChanged = new BreezeEvent("arrayChanged", arrX);
|
|
114
|
-
core.extend(arrX, observableArray.mixin);
|
|
115
|
-
return core.extend(arrX, complexArrayMixin);
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxleC1hcnJheS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wbGV4LWFycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUcsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxFQUFtQixlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBWXRDLElBQUksaUJBQWlCLEdBQUc7SUFFdEIsNkNBQTZDO0lBQzdDLFlBQVk7SUFDWixrQkFBa0I7SUFDbEIsb0JBQW9CO0lBQ3BCLG9DQUFvQztJQUNwQyxzQ0FBc0M7SUFDdEMsMERBQTBEO0lBQzFELDRDQUE0QztJQUU1Qzs7Ozs7O1FBTUk7SUFFSjs7Ozs7Ozs7Ozs7Ozs7OztPQWdCRztJQUVELGdCQUFnQjtJQUNsQixZQUFZLEVBQUUsVUFBUyxJQUFXO1FBQ2hDLE9BQU8sV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsYUFBYSxFQUFFO1FBQ2IsZUFBZSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxZQUFZLEVBQUUsVUFBUyxJQUFXO1FBQ2hDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELGVBQWUsRUFBRSxVQUFTLE9BQWM7UUFDdEMsY0FBYyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsY0FBYyxFQUFFO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUM5QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7UUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQWlCO1lBQ3RDLFdBQVcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEIs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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb3JlICB9IGZyb20gJy4vY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGVBcnJheSwgb2JzZXJ2YWJsZUFycmF5IH0gZnJvbSAnLi9vYnNlcnZhYmxlLWFycmF5JztcclxuaW1wb3J0IHsgQnJlZXplRXZlbnQgfSBmcm9tICcuL2V2ZW50JztcclxuaW1wb3J0IHsgQ29tcGxleE9iamVjdCwgU3RydWN0dXJhbE9iamVjdCB9IGZyb20gJy4vZW50aXR5LWFzcGVjdCc7XHJcbmltcG9ydCB7IERhdGFQcm9wZXJ0eSB9IGZyb20gJy4vZW50aXR5LW1ldGFkYXRhJztcclxuXHJcbi8vIFRPRE86IG1peGluIGltcGwgaXMgbm90IHZlcnkgdHlwZXNhZmVcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ29tcGxleEFycmF5IGV4dGVuZHMgT2JzZXJ2YWJsZUFycmF5IHtcclxuICBbaW5kZXg6IG51bWJlcl06IENvbXBsZXhPYmplY3Q7XHJcbiAgcGFyZW50PzogU3RydWN0dXJhbE9iamVjdDtcclxuICBwYXJlbnRQcm9wZXJ0eT86IERhdGFQcm9wZXJ0eTtcclxufVxyXG5cclxubGV0IGNvbXBsZXhBcnJheU1peGluID0ge1xyXG5cclxuICAvLyBjb21wbGV4QXJyYXkgd2lsbCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcHNcclxuICAvLyAgICBwYXJlbnRcclxuICAvLyAgICBwcm9wZXJ0eVBhdGhcclxuICAvLyAgICBwYXJlbnRQcm9wZXJ0eVxyXG4gIC8vICAgIGFkZGVkSXRlbXMgIC0gb25seSBpZiBtb2RpZmllZFxyXG4gIC8vICAgIHJlbW92ZWRJdGVtcyAgLSBvbmx5IGlmIG1vZGlmaWVkXHJcbiAgLy8gIGVhY2ggY29tcGxleEFzcGVjdCBvZiBhbnkgZW50aXR5IHdpdGhpbiBhIGNvbXBsZXhBcnJheVxyXG4gIC8vICB3aWxsIGhhdmUgaXRzIG93biBfY29tcGxleFN0YXRlID0gXCJBL01cIjtcclxuXHJcbiAgLyoqXHJcbiAgIENvbXBsZXggYXJyYXlzIGFyZSBub3QgYWN0dWFsbHkgY2xhc3NlcywgdGhleSBhcmUgb2JqZWN0cyB0aGF0IG1pbWljIGFycmF5cy4gQSBjb21wbGV4IGFycmF5IGlzIGNvbGxlY3Rpb24gb2ZcclxuICAgY29tcGxleFR5cGVzIGFzc29jaWF0ZWQgd2l0aCBhIGRhdGEgcHJvcGVydHkgb24gYSBzaW5nbGUgZW50aXR5IG9yIG90aGVyIGNvbXBsZXggb2JqZWN0LiBpLmUuIGN1c3RvbWVyLm9yZGVycyBvciBvcmRlci5vcmRlckRldGFpbHMuXHJcbiAgIFRoaXMgY29sbGVjdGlvbiBsb29rcyBsaWtlIGFuIGFycmF5IGluIHRoYXQgdGhlIGJhc2ljIG1ldGhvZHMgb24gYXJyYXlzIHN1Y2ggYXMgJ3B1c2gnLCAncG9wJywgJ3NoaWZ0JywgJ3Vuc2hpZnQnLCAnc3BsaWNlJ1xyXG4gICBhcmUgYWxsIHByb3ZpZGVkIGFzIHdlbGwgYXMgc2V2ZXJhbCBzcGVjaWFsIHB1cnBvc2UgbWV0aG9kcy5cclxuICAgQGNsYXNzIHtjb21wbGV4QXJyYXl9XHJcbiAgICoqL1xyXG5cclxuICAvKipcclxuICBBbiBbW0V2ZW50XV0gdGhhdCBmaXJlcyB3aGVuZXZlciB0aGUgY29udGVudHMgb2YgdGhpcyBhcnJheSBjaGFuZ2VkLiAgVGhpcyBldmVudFxyXG4gIGlzIGZpcmVkIGFueSB0aW1lIGEgbmV3IGVudGl0eSBpcyBhdHRhY2hlZCBvciBhZGRlZCB0byB0aGUgRW50aXR5TWFuYWdlciBhbmQgaGFwcGVucyB0byBiZWxvbmcgdG8gdGhpcyBjb2xsZWN0aW9uLlxyXG4gIEFkZHMgdGhhdCBvY2N1ciBhcyBhIHJlc3VsdCBvZiBxdWVyeSBvciBpbXBvcnQgb3BlcmF0aW9ucyBhcmUgYmF0Y2hlZCBzbyB0aGF0IGFsbCBvZiB0aGUgYWRkcyBvciByZW1vdmVzIHRvIGFueSBpbmRpdmlkdWFsXHJcbiAgY29sbGVjdGlvbnMgYXJlIGNvbGxlY3RlZCBpbnRvIGEgc2luZ2xlIG5vdGlmaWNhdGlvbiBldmVudCBmb3IgZWFjaCByZWxhdGlvbiBhcnJheS5cclxuICBAZXhhbXBsZVxyXG4gICAgICAvLyBhc3N1bWUgb3JkZXIgaXMgYW4gb3JkZXIgZW50aXR5IGF0dGFjaGVkIHRvIGFuIEVudGl0eU1hbmFnZXIuXHJcbiAgICAgIG9yZGVycy5hcnJheUNoYW5nZWQuc3Vic2NyaWJlKFxyXG4gICAgICBmdW5jdGlvbiAoYXJyYXlDaGFuZ2VkQXJncykge1xyXG4gICAgICAgICAgdmFyIGFkZGVkRW50aXRpZXMgPSBhcnJheUNoYW5nZWRBcmdzLmFkZGVkO1xyXG4gICAgICAgICAgdmFyIHJlbW92ZWRFbnRpdGllcyA9IGFycmF5Q2hhbmdlZC5yZW1vdmVkO1xyXG4gICAgICB9KTtcclxuICBAZXZlbnQgYXJyYXlDaGFuZ2VkXHJcbiAgQHBhcmFtIGFkZGVkIHtBcnJheSBvZiBFbnRpdHl9IEFuIGFycmF5IG9mIGFsbCBvZiB0aGUgZW50aXRpZXMgYWRkZWQgdG8gdGhpcyBjb2xsZWN0aW9uLlxyXG4gIEBwYXJhbSByZW1vdmVkIHtBcnJheSBvZiBFbnRpdHl9IEFuIGFycmF5IG9mIGFsbCBvZiB0aGUgcmVtb3ZlZCBmcm9tIHRoaXMgY29sbGVjdGlvbi5cclxuICBAcmVhZE9ubHlcclxuICAqKi9cclxuXHJcbiAgICAvLyB2aXJ0dWFsIGltcGxzXHJcbiAgX2dldEdvb2RBZGRzOiBmdW5jdGlvbihhZGRzOiBhbnlbXSkge1xyXG4gICAgcmV0dXJuIGdldEdvb2RBZGRzKHRoaXMsIGFkZHMpO1xyXG4gIH0sXHJcblxyXG4gIF9iZWZvcmVDaGFuZ2U6IGZ1bmN0aW9uKCkge1xyXG4gICAgb2JzZXJ2YWJsZUFycmF5LnVwZGF0ZUVudGl0eVN0YXRlKHRoaXMpO1xyXG4gIH0sXHJcblxyXG4gIF9wcm9jZXNzQWRkczogZnVuY3Rpb24oYWRkczogYW55W10pIHtcclxuICAgIHByb2Nlc3NBZGRzKHRoaXMsIGFkZHMpO1xyXG4gIH0sXHJcblxyXG4gIF9wcm9jZXNzUmVtb3ZlczogZnVuY3Rpb24ocmVtb3ZlczogYW55W10pIHtcclxuICAgIHByb2Nlc3NSZW1vdmVzKHRoaXMsIHJlbW92ZXMpO1xyXG4gIH0sXHJcblxyXG4gIF9yZWplY3RDaGFuZ2VzOiBmdW5jdGlvbigpIHtcclxuICAgIGlmICghdGhpcy5fb3JpZ1ZhbHVlcykgcmV0dXJuO1xyXG4gICAgbGV0IHRoYXQgPSB0aGlzO1xyXG4gICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uIChjbzogQ29tcGxleE9iamVjdCkge1xyXG4gICAgICBjbGVhckFzcGVjdChjbywgdGhhdCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuX29yaWdWYWx1ZXMuZm9yRWFjaChmdW5jdGlvbiAoY286IENvbXBsZXhPYmplY3QpIHtcclxuICAgICAgdGhhdC5wdXNoKGNvKTtcclxuICAgIH0pO1xyXG4gIH0sXHJcblxyXG4gIF9hY2NlcHRDaGFuZ2VzOiBmdW5jdGlvbigpIHtcclxuICAgIHRoaXMuX29yaWdWYWx1ZXMgPSBudWxsO1xyXG4gIH1cclxufTtcclxuXHJcbi8vIGxvY2FsIGZ1bmN0aW9uc1xyXG5cclxuXHJcbmZ1bmN0aW9uIGdldEdvb2RBZGRzKGNvbXBsZXhBcnJheTogQ29tcGxleEFycmF5LCBhZGRzOiBDb21wbGV4T2JqZWN0W10pIHtcclxuICAvLyByZW1vdmUgYW55IHRoYXQgYXJlIGFscmVhZHkgYWRkZWQgaGVyZVxyXG4gIHJldHVybiBhZGRzLmZpbHRlcihmdW5jdGlvbiAoYSkge1xyXG4gICAgLy8gcmV0dXJuIGEucGFyZW50ICE9PSBjb21wbGV4QXJyYXkucGFyZW50OyAgLy8gVE9ETzogY2hlY2sgaWYgdGhpcyBpcyBhY3R1YWxseSBhIGJ1ZyBpbiBvcmlnaW5hbCBicmVlemVqcyA/Pz9cclxuICAgIHJldHVybiBhLmNvbXBsZXhBc3BlY3QgPT0gbnVsbCB8fCBhLmNvbXBsZXhBc3BlY3QucGFyZW50ICE9PSBjb21wbGV4QXJyYXkucGFyZW50O1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBwcm9jZXNzQWRkcyhjb21wbGV4QXJyYXk6IENvbXBsZXhBcnJheSwgYWRkczogQ29tcGxleE9iamVjdFtdKSB7XHJcbiAgYWRkcy5mb3JFYWNoKGZ1bmN0aW9uIChhKSB7XHJcbiAgICAvLyBpZiAoYS5wYXJlbnQgIT0gbnVsbCkgeyAvLyBUT0RPOiBjaGVjayBpZiB0aGlzIGlzIGFjdHVhbGx5IGEgYnVnIGluIG9yaWdpbmFsIGJyZWV6ZWpzID8/P1xyXG4gICAgaWYgKGEuY29tcGxleEFzcGVjdCAmJiBhLmNvbXBsZXhBc3BlY3QucGFyZW50ICE9IG51bGwpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVGhlIGNvbXBsZXhPYmplY3QgaXMgYWxyZWFkeSBhdHRhY2hlZC4gRWl0aGVyIGNsb25lIGl0IG9yIHJlbW92ZSBpdCBmcm9tIGl0cyBjdXJyZW50IG93bmVyXCIpO1xyXG4gICAgfVxyXG4gICAgc2V0QXNwZWN0KGEsIGNvbXBsZXhBcnJheSk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHByb2Nlc3NSZW1vdmVzKGNvbXBsZXhBcnJheTogQ29tcGxleEFycmF5LCByZW1vdmVzOiBDb21wbGV4T2JqZWN0W10pIHtcclxuICByZW1vdmVzLmZvckVhY2goZnVuY3Rpb24gKGEpIHtcclxuICAgIGNsZWFyQXNwZWN0KGEsIGNvbXBsZXhBcnJheSk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNsZWFyQXNwZWN0KGNvOiBDb21wbGV4T2JqZWN0LCBhcnI6IENvbXBsZXhBcnJheSkge1xyXG4gIGxldCBjb0FzcGVjdCA9IGNvLmNvbXBsZXhBc3BlY3Q7XHJcbiAgLy8gaWYgbm90IGFscmVhZHkgYXR0YWNoZWQgLSBleGl0XHJcbiAgaWYgKGNvQXNwZWN0LnBhcmVudCAhPT0gYXJyLnBhcmVudCkgcmV0dXJuIG51bGw7XHJcblxyXG4gIGNvQXNwZWN0LnBhcmVudCA9IHVuZGVmaW5lZDtcclxuICBjb0FzcGVjdC5wYXJlbnRQcm9wZXJ0eSA9IHVuZGVmaW5lZDtcclxuICByZXR1cm4gY29Bc3BlY3Q7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNldEFzcGVjdChjbzogQ29tcGxleE9iamVjdCwgYXJyOiBDb21wbGV4QXJyYXkpIHtcclxuICBsZXQgY29Bc3BlY3QgPSBjby5jb21wbGV4QXNwZWN0O1xyXG4gIC8vIGlmIGFscmVhZHkgYXR0YWNoZWQgLSBleGl0XHJcbiAgaWYgKGNvQXNwZWN0LnBhcmVudCA9PT0gYXJyLnBhcmVudCkgcmV0dXJuIG51bGw7XHJcbiAgY29Bc3BlY3QucGFyZW50ID0gYXJyLnBhcmVudDtcclxuICBjb0FzcGVjdC5wYXJlbnRQcm9wZXJ0eSA9IGFyci5wYXJlbnRQcm9wZXJ0eTtcclxuXHJcbiAgcmV0dXJuIGNvQXNwZWN0O1xyXG59XHJcblxyXG5cclxuLyoqIEZvciB1c2UgYnkgYnJlZXplIHBsdWdpbiBhdXRob3JzIG9ubHkuIFRoZSBjbGFzcyBpcyBmb3IgdXNlIGluIGJ1aWxkaW5nIGEgW1tJTW9kZWxMaWJyYXJ5QWRhcHRlcl1dIGltcGxlbWVudGF0aW9uLiBcclxuQGFkYXB0ZXIgKHNlZSBbW0lNb2RlbExpYnJhcnlBZGFwdGVyXV0pICAgIFxyXG5AaGlkZGVuIFxyXG4qL1xyXG5leHBvcnQgZnVuY3Rpb24gbWFrZUNvbXBsZXhBcnJheShhcnI6IGFueVtdLCBwYXJlbnQ6IFN0cnVjdHVyYWxPYmplY3QsIHBhcmVudFByb3BlcnR5OiBEYXRhUHJvcGVydHkpIHtcclxuICBsZXQgYXJyWCA9IGFyciBhcyBhbnk7XHJcbiAgb2JzZXJ2YWJsZUFycmF5LmluaXRpYWxpemVQYXJlbnQoYXJyWCwgcGFyZW50LCBwYXJlbnRQcm9wZXJ0eSk7XHJcbiAgYXJyWC5hcnJheUNoYW5nZWQgPSBuZXcgQnJlZXplRXZlbnQoXCJhcnJheUNoYW5nZWRcIiwgYXJyWCk7XHJcbiAgY29yZS5leHRlbmQoYXJyWCwgb2JzZXJ2YWJsZUFycmF5Lm1peGluKTtcclxuICByZXR1cm4gY29yZS5leHRlbmQoYXJyWCwgY29tcGxleEFycmF5TWl4aW4pIGFzIENvbXBsZXhBcnJheTtcclxufVxyXG5cclxuIl19
|