breeze-client 2.1.6-mjs → 2.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapter-ajax-angularjs/{index.d.ts → breeze-client-adapter-ajax-angularjs.d.ts} +0 -1
- package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +1 -0
- package/adapter-ajax-angularjs/package.json +13 -0
- package/adapter-ajax-fetch/{index.d.ts → breeze-client-adapter-ajax-fetch.d.ts} +0 -1
- package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +1 -0
- package/adapter-ajax-fetch/package.json +13 -0
- package/adapter-ajax-httpclient/{index.d.ts → breeze-client-adapter-ajax-httpclient.d.ts} +0 -1
- package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +1 -0
- package/adapter-ajax-httpclient/package.json +13 -0
- package/adapter-ajax-jquery/{index.d.ts → breeze-client-adapter-ajax-jquery.d.ts} +0 -1
- package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +1 -0
- package/adapter-ajax-jquery/package.json +13 -0
- package/adapter-ajax-post/{index.d.ts → breeze-client-adapter-ajax-post.d.ts} +0 -1
- package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +1 -0
- package/adapter-ajax-post/package.json +13 -0
- package/adapter-data-service-odata/{index.d.ts → breeze-client-adapter-data-service-odata.d.ts} +0 -1
- package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +1 -0
- package/adapter-data-service-odata/package.json +13 -0
- package/adapter-data-service-webapi/{index.d.ts → breeze-client-adapter-data-service-webapi.d.ts} +0 -1
- package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +1 -0
- package/adapter-data-service-webapi/package.json +13 -0
- package/adapter-model-library-backing-store/{index.d.ts → breeze-client-adapter-model-library-backing-store.d.ts} +0 -1
- package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +1 -0
- package/adapter-model-library-backing-store/package.json +13 -0
- package/adapter-model-library-ko/{index.d.ts → breeze-client-adapter-model-library-ko.d.ts} +0 -1
- package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +1 -0
- package/adapter-model-library-ko/package.json +13 -0
- package/adapter-uri-builder-json/{index.d.ts → breeze-client-adapter-uri-builder-json.d.ts} +0 -1
- package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +1 -0
- package/adapter-uri-builder-json/package.json +13 -0
- package/adapter-uri-builder-odata/{index.d.ts → breeze-client-adapter-uri-builder-odata.d.ts} +0 -1
- package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +1 -0
- package/adapter-uri-builder-odata/package.json +13 -0
- package/breeze-client.d.ts +8 -0
- package/breeze-client.metadata.json +1 -0
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +190 -0
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-fetch.umd.js +190 -0
- package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +195 -0
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-jquery.umd.js +115 -0
- package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-post.umd.js +92 -0
- package/bundles/breeze-client-adapter-ajax-post.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-post.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-data-service-odata.umd.js +747 -0
- package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +16 -0
- package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-data-service-webapi.umd.js +333 -0
- package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +16 -0
- package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +280 -0
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-model-library-ko.umd.js +252 -0
- package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-uri-builder-json.umd.js +96 -0
- package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +262 -0
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +1 -0
- package/bundles/breeze-client-mixin-get-entity-graph.umd.js +258 -0
- package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +1 -0
- package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +2 -0
- package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +1 -0
- package/bundles/breeze-client-mixin-save-queuing.umd.js +579 -0
- package/bundles/breeze-client-mixin-save-queuing.umd.js.map +1 -0
- package/bundles/breeze-client-mixin-save-queuing.umd.min.js +16 -0
- package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +1 -0
- package/bundles/breeze-client.umd.js +14181 -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 +296 -0
- package/esm2015/src/array.js +4 -0
- package/esm2015/src/assert-param.js +312 -0
- package/esm2015/src/breeze.js +85 -0
- package/esm2015/src/complex-array.js +119 -0
- package/esm2015/src/config.js +223 -0
- package/esm2015/src/core.js +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 +503 -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 +996 -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 +302 -0
- package/esm5/src/array.js +4 -0
- package/esm5/src/assert-param.js +317 -0
- package/esm5/src/breeze.js +85 -0
- package/esm5/src/complex-array.js +119 -0
- package/esm5/src/config.js +228 -0
- package/esm5/src/core.js +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 +510 -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 +1023 -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 -2042
- package/fesm2015/breeze-client.js.map +1 -0
- package/fesm5/breeze-client-adapter-ajax-angularjs.js +186 -0
- package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +1 -0
- package/fesm5/breeze-client-adapter-ajax-fetch.js +186 -0
- package/fesm5/breeze-client-adapter-ajax-fetch.js.map +1 -0
- package/fesm5/breeze-client-adapter-ajax-httpclient.js +193 -0
- package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +1 -0
- package/fesm5/breeze-client-adapter-ajax-jquery.js +111 -0
- package/fesm5/breeze-client-adapter-ajax-jquery.js.map +1 -0
- package/fesm5/breeze-client-adapter-ajax-post.js +86 -0
- package/fesm5/breeze-client-adapter-ajax-post.js.map +1 -0
- package/fesm5/breeze-client-adapter-data-service-odata.js +523 -0
- package/fesm5/breeze-client-adapter-data-service-odata.js.map +1 -0
- package/fesm5/breeze-client-adapter-data-service-webapi.js +111 -0
- package/fesm5/breeze-client-adapter-data-service-webapi.js.map +1 -0
- package/fesm5/breeze-client-adapter-model-library-backing-store.js +276 -0
- package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +1 -0
- package/fesm5/breeze-client-adapter-model-library-ko.js +248 -0
- package/fesm5/breeze-client-adapter-model-library-ko.js.map +1 -0
- package/fesm5/breeze-client-adapter-uri-builder-json.js +92 -0
- package/fesm5/breeze-client-adapter-uri-builder-json.js.map +1 -0
- package/fesm5/breeze-client-adapter-uri-builder-odata.js +250 -0
- package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +1 -0
- package/fesm5/breeze-client-mixin-get-entity-graph.js +254 -0
- package/fesm5/breeze-client-mixin-get-entity-graph.js.map +1 -0
- package/fesm5/breeze-client-mixin-save-queuing.js +356 -0
- package/fesm5/breeze-client-mixin-save-queuing.js.map +1 -0
- package/fesm5/breeze-client.js +13903 -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 -294
- 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 -1005
- 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
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import { core } from './core';
|
|
2
|
+
import { config } from './config';
|
|
3
|
+
import { JsonResultsAdapter } from './data-service';
|
|
4
|
+
import { MetadataStore } from './entity-metadata';
|
|
5
|
+
/** For use by breeze plugin authors only. The class is used as the base class for most [[IDataServiceAdapter]] implementations
|
|
6
|
+
@adapter (see [[IDataServiceAdapter]])
|
|
7
|
+
@hidden
|
|
8
|
+
*/
|
|
9
|
+
export class AbstractDataServiceAdapter {
|
|
10
|
+
constructor() {
|
|
11
|
+
/**
|
|
12
|
+
Returns a constructor function for a "ChangeRequestInterceptor"
|
|
13
|
+
that can tweak the saveBundle both as it is built and when it is completed
|
|
14
|
+
by a concrete DataServiceAdapater.
|
|
15
|
+
|
|
16
|
+
Initialized with a default, no-op implementation that developers can replace with a
|
|
17
|
+
substantive implementation that changes the individual entity change requests
|
|
18
|
+
or aspects of the entire 'saveBundle' without having to write their own DataService adapters.
|
|
19
|
+
> let adapter = breeze.config.getAdapterInstance('dataService');
|
|
20
|
+
> adapter.changeRequestInterceptor = function (saveContext, saveBundle) {
|
|
21
|
+
> this.getRequest = function (request, entity, index) {
|
|
22
|
+
> // alter the request that the adapter prepared for this entity
|
|
23
|
+
> // based on the entity, saveContext, and saveBundle
|
|
24
|
+
> // e.g., add a custom header or prune the originalValuesMap
|
|
25
|
+
> return request;
|
|
26
|
+
> };
|
|
27
|
+
> this.done = function (requests) {
|
|
28
|
+
> // alter the array of requests representing the entire change-set
|
|
29
|
+
> // based on the saveContext and saveBundle
|
|
30
|
+
> };
|
|
31
|
+
> }
|
|
32
|
+
|
|
33
|
+
@param saveContext - The BreezeJS "context" for the save operation.
|
|
34
|
+
@param saveBundle - Contains the array of entities-to-be-saved (AKA, the entity change-set).
|
|
35
|
+
@return Constructor for a "ChangeRequestInterceptor".
|
|
36
|
+
**/
|
|
37
|
+
this.changeRequestInterceptor = DefaultChangeRequestInterceptor;
|
|
38
|
+
this.jsonResultsAdapter = new JsonResultsAdapter({
|
|
39
|
+
name: "noop",
|
|
40
|
+
visitNode: function ( /* node, mappingContext, nodeContext */) {
|
|
41
|
+
return {};
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
// TODO use interface
|
|
46
|
+
checkForRecomposition(interfaceInitializedArgs) {
|
|
47
|
+
if (interfaceInitializedArgs.interfaceName === "ajax" && interfaceInitializedArgs.isDefault) {
|
|
48
|
+
this.initialize();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
initialize() {
|
|
52
|
+
this.ajaxImpl = config.getAdapterInstance("ajax");
|
|
53
|
+
// don't cache 'ajax' because then we would need to ".bind" it, and don't want to because of brower support issues.
|
|
54
|
+
if (this.ajaxImpl && this.ajaxImpl.ajax) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
throw new Error("Unable to find ajax adapter for dataservice adapter '" + (this.name || '') + "'.");
|
|
58
|
+
}
|
|
59
|
+
fetchMetadata(metadataStore, dataService) {
|
|
60
|
+
let serviceName = dataService.serviceName;
|
|
61
|
+
let url = dataService.qualifyUrl("Metadata");
|
|
62
|
+
let promise = new Promise((resolve, reject) => {
|
|
63
|
+
this.ajaxImpl.ajax({
|
|
64
|
+
type: "GET",
|
|
65
|
+
url: url,
|
|
66
|
+
dataType: 'json',
|
|
67
|
+
success: (httpResponse) => {
|
|
68
|
+
// might have been fetched by another query
|
|
69
|
+
if (metadataStore.hasMetadataFor(serviceName)) {
|
|
70
|
+
return resolve("already fetched");
|
|
71
|
+
}
|
|
72
|
+
let data = httpResponse.data;
|
|
73
|
+
let metadata;
|
|
74
|
+
try {
|
|
75
|
+
metadata = typeof (data) === "string" ? JSON.parse(data) : data;
|
|
76
|
+
metadataStore.importMetadata(metadata);
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
79
|
+
let errMsg = "Unable to either parse or import metadata: " + e.message;
|
|
80
|
+
handleHttpError(reject, httpResponse, "Metadata query failed for: " + url + ". " + errMsg);
|
|
81
|
+
}
|
|
82
|
+
// import may have brought in the service.
|
|
83
|
+
if (!metadataStore.hasMetadataFor(serviceName)) {
|
|
84
|
+
metadataStore.addDataService(dataService);
|
|
85
|
+
}
|
|
86
|
+
resolve(metadata);
|
|
87
|
+
},
|
|
88
|
+
error: (httpResponse) => {
|
|
89
|
+
handleHttpError(reject, httpResponse, "Metadata query failed for: " + url);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
return promise;
|
|
94
|
+
}
|
|
95
|
+
executeQuery(mappingContext) {
|
|
96
|
+
mappingContext.adapter = this;
|
|
97
|
+
let promise = new Promise((resolve, reject) => {
|
|
98
|
+
let url = mappingContext.getUrl();
|
|
99
|
+
let params = {
|
|
100
|
+
type: "GET",
|
|
101
|
+
url: url,
|
|
102
|
+
params: mappingContext.query.parameters,
|
|
103
|
+
dataType: 'json',
|
|
104
|
+
success: function (httpResponse) {
|
|
105
|
+
let data = httpResponse.data;
|
|
106
|
+
try {
|
|
107
|
+
let rData;
|
|
108
|
+
let results = data && (data.results || data.Results);
|
|
109
|
+
if (results) {
|
|
110
|
+
rData = { results: results, inlineCount: data.inlineCount || data.InlineCount,
|
|
111
|
+
httpResponse: httpResponse, query: mappingContext.query };
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
rData = { results: data, httpResponse: httpResponse, query: mappingContext.query };
|
|
115
|
+
}
|
|
116
|
+
resolve(rData);
|
|
117
|
+
}
|
|
118
|
+
catch (e) {
|
|
119
|
+
if (e instanceof Error) {
|
|
120
|
+
reject(e);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
handleHttpError(reject, httpResponse);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
error: function (httpResponse) {
|
|
128
|
+
handleHttpError(reject, httpResponse);
|
|
129
|
+
},
|
|
130
|
+
crossDomain: false
|
|
131
|
+
};
|
|
132
|
+
if (mappingContext.dataService.useJsonp) {
|
|
133
|
+
params.dataType = 'jsonp';
|
|
134
|
+
params.crossDomain = true;
|
|
135
|
+
}
|
|
136
|
+
this.ajaxImpl.ajax(params);
|
|
137
|
+
});
|
|
138
|
+
return promise;
|
|
139
|
+
}
|
|
140
|
+
saveChanges(saveContext, saveBundle) {
|
|
141
|
+
let adapter = saveContext.adapter = this;
|
|
142
|
+
let saveBundleSer = adapter._prepareSaveBundle(saveContext, saveBundle);
|
|
143
|
+
let bundle = JSON.stringify(saveBundleSer);
|
|
144
|
+
let url = saveContext.dataService.qualifyUrl(saveContext.resourceName);
|
|
145
|
+
let promise = new Promise((resolve, reject) => {
|
|
146
|
+
this.ajaxImpl.ajax({
|
|
147
|
+
type: "POST",
|
|
148
|
+
url: url,
|
|
149
|
+
dataType: 'json',
|
|
150
|
+
contentType: "application/json",
|
|
151
|
+
data: bundle,
|
|
152
|
+
success: function (httpResponse) {
|
|
153
|
+
httpResponse.saveContext = saveContext;
|
|
154
|
+
let data = httpResponse.data;
|
|
155
|
+
if (data.Errors || data.errors) {
|
|
156
|
+
handleHttpError(reject, httpResponse);
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
let saveResult = adapter._prepareSaveResult(saveContext, data);
|
|
160
|
+
saveResult.httpResponse = httpResponse;
|
|
161
|
+
resolve(saveResult);
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
error: function (httpResponse) {
|
|
165
|
+
httpResponse.saveContext = saveContext;
|
|
166
|
+
handleHttpError(reject, httpResponse);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
return promise;
|
|
171
|
+
}
|
|
172
|
+
/** Abstract method that needs to be overwritten in any concrete DataServiceAdapter subclass.
|
|
173
|
+
The return value from this method should be a serializable object that will be sent to the server after calling JSON.stringify on it.
|
|
174
|
+
*/
|
|
175
|
+
_prepareSaveBundle(saveContext, saveBundle) {
|
|
176
|
+
// The implementor should call _createChangeRequestInterceptor
|
|
177
|
+
throw new Error("Need a concrete implementation of _prepareSaveBundle");
|
|
178
|
+
}
|
|
179
|
+
/** @hidden @internal */
|
|
180
|
+
_createChangeRequestInterceptor(saveContext, saveBundle) {
|
|
181
|
+
let adapter = saveContext.adapter;
|
|
182
|
+
let cri = adapter.changeRequestInterceptor;
|
|
183
|
+
let isFn = core.isFunction;
|
|
184
|
+
if (isFn(cri)) {
|
|
185
|
+
let pre = adapter.name + " DataServiceAdapter's ChangeRequestInterceptor";
|
|
186
|
+
let post = " is missing or not a function.";
|
|
187
|
+
let interceptor = new cri(saveContext, saveBundle);
|
|
188
|
+
if (!isFn(interceptor.getRequest)) {
|
|
189
|
+
throw new Error(pre + '.getRequest' + post);
|
|
190
|
+
}
|
|
191
|
+
if (!isFn(interceptor.done)) {
|
|
192
|
+
throw new Error(pre + '.done' + post);
|
|
193
|
+
}
|
|
194
|
+
return interceptor;
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
return new DefaultChangeRequestInterceptor(saveContext, saveBundle);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/** Abstract method that needs to be overwritten in any concrete DataServiceAdapter sublclass.
|
|
201
|
+
This method needs to take the result returned the server and convert it into an ISaveResult.
|
|
202
|
+
*/
|
|
203
|
+
_prepareSaveResult(saveContext, data) {
|
|
204
|
+
throw new Error("Need a concrete implementation of _prepareSaveResult");
|
|
205
|
+
}
|
|
206
|
+
/** Utility method that may be used in any concrete DataServiceAdapter sublclass to handle any
|
|
207
|
+
http connection issues.
|
|
208
|
+
*/
|
|
209
|
+
// Put this at the bottom of your http error analysis
|
|
210
|
+
static _catchNoConnectionError(err) {
|
|
211
|
+
if (err.status === 0 && err.message == null) {
|
|
212
|
+
err.message = "HTTP response status 0 and no message. " +
|
|
213
|
+
"Likely did not or could not reach server. Is the server running?";
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
function handleHttpError(reject, httpResponse, messagePrefix) {
|
|
218
|
+
let err = createError(httpResponse);
|
|
219
|
+
AbstractDataServiceAdapter._catchNoConnectionError(err);
|
|
220
|
+
if (messagePrefix) {
|
|
221
|
+
err.message = messagePrefix + "; " + err.message;
|
|
222
|
+
}
|
|
223
|
+
reject(err);
|
|
224
|
+
}
|
|
225
|
+
function createError(httpResponse) {
|
|
226
|
+
let err = new Error();
|
|
227
|
+
err.httpResponse = httpResponse;
|
|
228
|
+
err.status = httpResponse.status;
|
|
229
|
+
let errObj = httpResponse.data;
|
|
230
|
+
if (!errObj) {
|
|
231
|
+
err.message = httpResponse.error && httpResponse.error.toString();
|
|
232
|
+
return err;
|
|
233
|
+
}
|
|
234
|
+
// some ajax providers will convert errant result into an object (angularjs), others will not (jQuery)
|
|
235
|
+
// if not do it here.
|
|
236
|
+
if (typeof errObj === "string") {
|
|
237
|
+
try {
|
|
238
|
+
errObj = JSON.parse(errObj);
|
|
239
|
+
}
|
|
240
|
+
catch (e) {
|
|
241
|
+
// sometimes httpResponse.data is just the error message itself
|
|
242
|
+
err.message = errObj;
|
|
243
|
+
return err;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
let saveContext = httpResponse.saveContext;
|
|
247
|
+
// if any of the follow properties exist the source is .NET
|
|
248
|
+
let tmp = errObj.Message || errObj.ExceptionMessage || errObj.EntityErrors || errObj.Errors;
|
|
249
|
+
let isDotNet = !!tmp;
|
|
250
|
+
let message, entityErrors;
|
|
251
|
+
if (!isDotNet) {
|
|
252
|
+
message = errObj.message;
|
|
253
|
+
entityErrors = errObj.errors || errObj.entityErrors;
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
let tmp = errObj;
|
|
257
|
+
do {
|
|
258
|
+
// .NET exceptions can provide both ExceptionMessage and Message but ExceptionMethod if it
|
|
259
|
+
// exists has a more detailed message.
|
|
260
|
+
message = tmp.ExceptionMessage || tmp.Message;
|
|
261
|
+
tmp = tmp.InnerException;
|
|
262
|
+
} while (tmp);
|
|
263
|
+
// .EntityErrors will only occur as a result of an EntityErrorsException being deliberately thrown on the server
|
|
264
|
+
entityErrors = errObj.Errors || errObj.EntityErrors;
|
|
265
|
+
entityErrors = entityErrors && entityErrors.map(function (e) {
|
|
266
|
+
return {
|
|
267
|
+
errorName: e.ErrorName,
|
|
268
|
+
entityTypeName: MetadataStore.normalizeTypeName(e.EntityTypeName),
|
|
269
|
+
keyValues: e.KeyValues,
|
|
270
|
+
propertyName: e.PropertyName,
|
|
271
|
+
errorMessage: e.ErrorMessage,
|
|
272
|
+
custom: e.Custom
|
|
273
|
+
};
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
if (saveContext && entityErrors) {
|
|
277
|
+
let propNameFn = saveContext.entityManager.metadataStore.namingConvention.serverPropertyNameToClient;
|
|
278
|
+
entityErrors.forEach(function (e) {
|
|
279
|
+
e.propertyName = e.propertyName && propNameFn(e.propertyName);
|
|
280
|
+
});
|
|
281
|
+
err.entityErrors = entityErrors;
|
|
282
|
+
}
|
|
283
|
+
err.message = message || "Server side errors encountered - see the entityErrors collection on this object for more detail";
|
|
284
|
+
return err;
|
|
285
|
+
}
|
|
286
|
+
/** This is a default, no-op implementation that developers can replace. */
|
|
287
|
+
class DefaultChangeRequestInterceptor {
|
|
288
|
+
constructor(saveContext, saveBundle) {
|
|
289
|
+
}
|
|
290
|
+
getRequest(request, entity, index) {
|
|
291
|
+
return request;
|
|
292
|
+
}
|
|
293
|
+
done(requests) {
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGF0YS1zZXJ2aWNlLWFkYXB0ZXIuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9icmVlemUtY2xpZW50LyIsInNvdXJjZXMiOlsic3JjL2Fic3RyYWN0LWRhdGEtc2VydmljZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUtsQyxPQUFPLEVBQWUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVqRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFbEQ7OztFQUdFO0FBQ0YsTUFBTSxPQUFnQiwwQkFBMEI7SUFBaEQ7UUE0SkU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0F5Qkc7UUFDSCw2QkFBd0IsR0FBaUMsK0JBQStCLENBQUM7UUEyQ3pGLHVCQUFrQixHQUFHLElBQUksa0JBQWtCLENBQUM7WUFDMUMsSUFBSSxFQUFFLE1BQU07WUFFWixTQUFTLEVBQUUsV0FBVSx1Q0FBdUM7Z0JBQzFELE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFoT0MscUJBQXFCO0lBQ3JCLHFCQUFxQixDQUFDLHdCQUE2QjtRQUNqRCxJQUFJLHdCQUF3QixDQUFDLGFBQWEsS0FBSyxNQUFNLElBQUksd0JBQXdCLENBQUMsU0FBUyxFQUFFO1lBQzNGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQWMsTUFBTSxDQUFHLENBQUM7UUFFakUsbUhBQW1IO1FBQ25ILElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRTtZQUN2QyxPQUFPO1NBQ1I7UUFDRCxN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Q0FBQyxjQUFjLENBQUM7Z0JBQ2pFLFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBUztnQkFDdEIsWUFBWSxFQUFFLENBQUMsQ0FBQyxZQUFZO2dCQUM1QixZQUFZLEVBQUUsQ0FBQyxDQUFDLFlBQVk7Z0JBQzVCLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTTthQUNqQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7S0FDSjtJQUVELElBQUksV0FBVyxJQUFJLFlBQVksRUFBRTtRQUUvQixJQUFJLFVBQVUsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsQ0FBQztRQUNyRyxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUM5QixDQUFDLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxZQUFZLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNoRSxDQUFDLENBQUMsQ0FBQztRQUNGLEdBQTJCLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztLQUMxRDtJQUVELEdBQUcsQ0FBQyxPQUFPLEdBQUcsT0FBTyxJQUFJLGlHQUFpRyxDQUFDO0lBQzNILE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUdELDJFQUEyRTtBQUMzRSxNQUFNLCtCQUErQjtJQUNuQyxZQUFZLFdBQXdCLEVBQUUsVUFBc0I7SUFFNUQsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFZLEVBQUUsTUFBYyxFQUFFLEtBQWE7UUFDcEQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksQ0FBQyxRQUFrQjtJQUN2QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb3JlIH0gZnJvbSAnLi9jb3JlJztcclxuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xyXG5pbXBvcnQgeyBFbnRpdHlRdWVyeSB9IGZyb20gJy4vZW50aXR5LXF1ZXJ5JztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2VBZGFwdGVyLCBBamF4QWRhcHRlciwgQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yQ3RvciwgQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yIH0gZnJvbSAnLi9pbnRlcmZhY2UtcmVnaXN0cnknO1xyXG5pbXBvcnQgeyBFbnRpdHkgfSBmcm9tICcuL2VudGl0eS1hc3BlY3QnO1xyXG5pbXBvcnQgeyBNYXBwaW5nQ29udGV4dCB9IGZyb20gJy4vbWFwcGluZy1jb250ZXh0JztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2UsIEpzb25SZXN1bHRzQWRhcHRlciB9IGZyb20gJy4vZGF0YS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cFJlc3BvbnNlLCBTYXZlQ29udGV4dCwgU2F2ZUJ1bmRsZSwgU2VydmVyRXJyb3IsIFNhdmVSZXN1bHQsIFNhdmVFcnJvckZyb21TZXJ2ZXIsIFF1ZXJ5UmVzdWx0IH0gZnJvbSAnLi9lbnRpdHktbWFuYWdlcic7XHJcbmltcG9ydCB7IE1ldGFkYXRhU3RvcmUgfSBmcm9tICcuL2VudGl0eS1tZXRhZGF0YSc7XHJcblxyXG4vKiogRm9yIHVzZSBieSBicmVlemUgcGx1Z2luIGF1dGhvcnMgb25seS4gIFRoZSBjbGFzcyBpcyB1c2VkIGFzIHRoZSBiYXNlIGNsYXNzIGZvciBtb3N0IFtbSURhdGFTZXJ2aWNlQWRhcHRlcl1dIGltcGxlbWVudGF0aW9uc1xyXG5AYWRhcHRlciAoc2VlIFtbSURhdGFTZXJ2aWNlQWRhcHRlcl1dKSAgICBcclxuQGhpZGRlblxyXG4qL1xyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3REYXRhU2VydmljZUFkYXB0ZXIgaW1wbGVtZW50cyBEYXRhU2VydmljZUFkYXB0ZXIge1xyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIGRlY2xhcmUgXyRpbXBsPzogYW55O1xyXG4gIC8qKiBUaGUgbmFtZSBvZiB0aGlzIGFkYXB0ZXIuICovXHJcbiAgZGVjbGFyZSBuYW1lOiBzdHJpbmc7XHJcbiAgLyoqIFRoZSBbW0lBamF4QWRhcHRlcl1dIHVzZWQgYnkgdGhpcyBbW0lEYXRhU2VydmljZUFkYXB0ZXJdXS4gKi9cclxuICBkZWNsYXJlIGFqYXhJbXBsOiBBamF4QWRhcHRlcjtcclxuXHJcbiAgLy8gVE9ETyB1c2UgaW50ZXJmYWNlXHJcbiAgY2hlY2tGb3JSZWNvbXBvc2l0aW9uKGludGVyZmFjZUluaXRpYWxpemVkQXJnczogYW55KSB7XHJcbiAgICBpZiAoaW50ZXJmYWNlSW5pdGlhbGl6ZWRBcmdzLmludGVyZmFjZU5hbWUgPT09IFwiYWpheFwiICYmIGludGVyZmFjZUluaXRpYWxpemVkQXJncy5pc0RlZmF1bHQpIHtcclxuICAgICAgdGhpcy5pbml0aWFsaXplKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbml0aWFsaXplKCkge1xyXG4gICAgdGhpcy5hamF4SW1wbCA9IGNvbmZpZy5nZXRBZGFwdGVySW5zdGFuY2U8QWpheEFkYXB0ZXI+KFwiYWpheFwiKSAhO1xyXG5cclxuICAgIC8vIGRvbid0IGNhY2hlICdhamF4JyBiZWNhdXNlIHRoZW4gd2Ugd291bGQgbmVlZCB0byBcIi5iaW5kXCIgaXQsIGFuZCBkb24ndCB3YW50IHRvIGJlY2F1c2Ugb2YgYnJvd2VyIHN1cHBvcnQgaXNzdWVzLlxyXG4gICAgaWYgKHRoaXMuYWpheEltcGwgJiYgdGhpcy5hamF4SW1wbC5hamF4KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRocm93IG5ldyBFcnJvcihcIlVuYWJsZSB0byBmaW5kIGFqYXggYWRhcHRlciBmb3IgZGF0YXNlcnZpY2UgYWRhcHRlciAnXCIgKyAodGhpcy5uYW1lIHx8ICcnKSArIFwiJy5cIik7XHJcbiAgfVxyXG5cclxuICBmZXRjaE1ldGFkYXRhKG1ldGFkYXRhU3RvcmU6IE1ldGFkYXRhU3RvcmUsIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSkge1xyXG4gICAgbGV0IHNlcnZpY2VOYW1lID0gZGF0YVNlcnZpY2Uuc2VydmljZU5hbWU7XHJcbiAgICBsZXQgdXJsID0gZGF0YVNlcnZpY2UucXVhbGlmeVVybChcIk1ldGFkYXRhXCIpO1xyXG5cclxuICAgIGxldCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cclxuICAgICAgdGhpcy5hamF4SW1wbC5hamF4KHtcclxuICAgICAgICB0eXBlOiBcIkdFVFwiLFxyXG4gICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgIGRhdGFUeXBlOiAnanNvbicsXHJcbiAgICAgICAgc3VjY2VzczogKGh0dHBSZXNwb25zZTogSHR0cFJlc3BvbnNlKSA9PiB7XHJcblxyXG4gICAgICAgICAgLy8gbWlnaHQgaGF2ZSBiZWVuIGZldGNoZWQgYnkgYW5vdGhlciBxdWVyeVxyXG4gICAgICAgICAgaWYgKG1ldGFkYXRhU3RvcmUuaGFzTWV0YWRhdGFGb3Ioc2VydmljZU5hbWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKFwiYWxyZWFkeSBmZXRjaGVkXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGRhdGEgPSBodHRwUmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgIGxldCBtZXRhZGF0YTogYW55O1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbWV0YWRhdGEgPSB0eXBlb2YgKGRhdGEpID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShkYXRhKSA6IGRhdGE7XHJcbiAgICAgICAgICAgIG1ldGFkYXRhU3RvcmUuaW1wb3J0TWV0YWRhdGEobWV0YWRhdGEpO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBsZXQgZXJyTXNnID0gXCJVbmFibGUgdG8gZWl0aGVyIHBhcnNlIG9yIGltcG9ydCBtZXRhZGF0YTogXCIgKyBlLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIGhhbmRsZUh0dHBFcnJvcihyZWplY3QsIGh0dHBSZXNwb25zZSwgXCJNZXRhZGF0YSBxdWVyeSBmYWlsZWQgZm9yOiBcIiArIHVybCArIFwiLiBcIiArIGVyck1zZyk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gaW1wb3J0IG1heSBoYXZlIGJyb3VnaHQgaW4gdGhlIHNlcnZpY2UuXHJcbiAgICAgICAgICBpZiAoIW1ldGFkYXRhU3RvcmUuaGFzTWV0YWRhdGFGb3Ioc2VydmljZU5hbWUpKSB7XHJcbiAgICAgICAgICAgIG1ldGFkYXRhU3RvcmUuYWRkRGF0YVNlcnZpY2UoZGF0YVNlcnZpY2UpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIHJlc29sdmUobWV0YWRhdGEpO1xyXG5cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoaHR0cFJlc3BvbnNlOiBIdHRwUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGhhbmRsZUh0dHBFcnJvcihyZWplY3QsIGh0dHBSZXNwb25zZSwgXCJNZXRhZGF0YSBxdWVyeSBmYWlsZWQgZm9yOiBcIiArIHVybCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHByb21pc2U7XHJcbiAgfVxyXG5cclxuICBleGVjdXRlUXVlcnkobWFwcGluZ0NvbnRleHQ6IE1hcHBpbmdDb250ZXh0KSB7XHJcbiAgICBtYXBwaW5nQ29udGV4dC5hZGFwdGVyID0gdGhpcztcclxuICAgIGxldCBwcm9taXNlID0gbmV3IFByb21pc2U8UXVlcnlSZXN1bHQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgbGV0IHVybCA9IG1hcHBpbmdDb250ZXh0LmdldFVybCgpO1xyXG5cclxuICAgICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgICB0eXBlOiBcIkdFVFwiLFxyXG4gICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgIHBhcmFtczogKG1hcHBpbmdDb250ZXh0LnF1ZXJ5IGFzIEVudGl0eVF1ZXJ5KS5wYXJhbWV0ZXJzLFxyXG4gICAgICAgIGRhdGFUeXBlOiAnanNvbicsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGh0dHBSZXNwb25zZTogSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBsZXQgZGF0YSA9IGh0dHBSZXNwb25zZS5kYXRhO1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbGV0IHJEYXRhOiBRdWVyeVJlc3VsdDtcclxuICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBkYXRhICYmIChkYXRhLnJlc3VsdHMgfHwgZGF0YS5SZXN1bHRzKTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdHMpIHtcclxuICAgICAgICAgICAgICByRGF0YSA9IHsgcmVzdWx0czogcmVzdWx0cywgaW5saW5lQ291bnQ6IGRhdGEuaW5saW5lQ291bnQgfHwgZGF0YS5JbmxpbmVDb3VudCwgXHJcbiAgICAgICAgICAgICAgICBodHRwUmVzcG9uc2U6IGh0dHBSZXNwb25zZSwgcXVlcnk6IG1hcHBpbmdDb250ZXh0LnF1ZXJ5IH07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgckRhdGEgPSB7IHJlc3VsdHM6IGRhdGEsIGh0dHBSZXNwb25zZTogaHR0cFJlc3BvbnNlLCBxdWVyeTogbWFwcGluZ0NvbnRleHQucXVlcnkgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShyRGF0YSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgRXJyb3IpIHtcclxuICAgICAgICAgICAgICByZWplY3QoZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaGFuZGxlSHR0cEVycm9yKHJlamVjdCwgaHR0cFJlc3BvbnNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiBmdW5jdGlvbiAoaHR0cFJlc3BvbnNlOiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgICAgIGhhbmRsZUh0dHBFcnJvcihyZWplY3QsIGh0dHBSZXNwb25zZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjcm9zc0RvbWFpbjogZmFsc2VcclxuICAgICAgfTtcclxuICAgICAgaWYgKG1hcHBpbmdDb250ZXh0LmRhdGFTZXJ2aWNlLnVzZUpzb25wKSB7XHJcbiAgICAgICAgcGFyYW1zLmRhdGFUeXBlID0gJ2pzb25wJztcclxuICAgICAgICBwYXJhbXMuY3Jvc3NEb21haW4gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuYWpheEltcGwuYWpheChwYXJhbXMpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcHJvbWlzZTtcclxuICB9XHJcblxyXG4gIHNhdmVDaGFuZ2VzKHNhdmVDb250ZXh0OiBTYXZlQ29udGV4dCwgc2F2ZUJ1bmRsZTogU2F2ZUJ1bmRsZSkge1xyXG4gICAgbGV0IGFkYXB0ZXIgPSBzYXZlQ29udGV4dC5hZGFwdGVyID0gdGhpcztcclxuXHJcbiAgICBsZXQgc2F2ZUJ1bmRsZVNlciA9IGFkYXB0ZXIuX3ByZXBhcmVTYXZlQnVuZGxlKHNhdmVDb250ZXh0LCBzYXZlQnVuZGxlKTtcclxuICAgIGxldCBidW5kbGUgPSBKU09OLnN0cmluZ2lmeShzYXZlQnVuZGxlU2VyKTtcclxuXHJcbiAgICBsZXQgdXJsID0gc2F2ZUNvbnRleHQuZGF0YVNlcnZpY2UucXVhbGlmeVVybChzYXZlQ29udGV4dC5yZXNvdXJjZU5hbWUpO1xyXG4gICAgbGV0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxTYXZlUmVzdWx0PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHRoaXMuYWpheEltcGwuYWpheCh7XHJcbiAgICAgICAgdHlwZTogXCJQT1NUXCIsXHJcbiAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgZGF0YVR5cGU6ICdqc29uJyxcclxuICAgICAgICBjb250ZW50VHlwZTogXCJhcHBsaWNhdGlvbi9qc29uXCIsXHJcbiAgICAgICAgZGF0YTogYnVuZGxlLFxyXG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChodHRwUmVzcG9uc2U6IEh0dHBSZXNwb25zZSkge1xyXG4gICAgICAgICAgaHR0cFJlc3BvbnNlLnNhdmVDb250ZXh0ID0gc2F2ZUNvbnRleHQ7XHJcbiAgICAgICAgICBsZXQgZGF0YSA9IGh0dHBSZXNwb25zZS5kYXRhO1xyXG4gICAgICAgICAgaWYgKGRhdGEuRXJyb3JzIHx8IGRhdGEuZXJyb3JzKSB7XHJcbiAgICAgICAgICAgIGhhbmRsZUh0dHBFcnJvcihyZWplY3QsIGh0dHBSZXNwb25zZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgc2F2ZVJlc3VsdCA9IGFkYXB0ZXIuX3ByZXBhcmVTYXZlUmVzdWx0KHNhdmVDb250ZXh0LCBkYXRhKTtcclxuICAgICAgICAgICAgc2F2ZVJlc3VsdC5odHRwUmVzcG9uc2UgPSBodHRwUmVzcG9uc2U7XHJcbiAgICAgICAgICAgIHJlc29sdmUoc2F2ZVJlc3VsdCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogZnVuY3Rpb24gKGh0dHBSZXNwb25zZTogSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBodHRwUmVzcG9uc2Uuc2F2ZUNvbnRleHQgPSBzYXZlQ29udGV4dDtcclxuICAgICAgICAgIGhhbmRsZUh0dHBFcnJvcihyZWplY3QsIGh0dHBSZXNwb25zZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBwcm9taXNlO1xyXG4gIH1cclxuXHJcbiAgLyoqIEFic3RyYWN0IG1ldGhvZCB0aGF0IG5lZWRzIHRvIGJlIG92ZXJ3cml0dGVuIGluIGFueSBjb25jcmV0ZSBEYXRhU2VydmljZUFkYXB0ZXIgc3ViY2xhc3MuIFxyXG4gIFRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGlzIG1ldGhvZCBzaG91bGQgYmUgYSBzZXJpYWxpemFibGUgb2JqZWN0IHRoYXQgd2lsbCBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIgYWZ0ZXIgY2FsbGluZyBKU09OLnN0cmluZ2lmeSBvbiBpdC5cclxuICAqL1xyXG4gIF9wcmVwYXJlU2F2ZUJ1bmRsZShzYXZlQ29udGV4dDogU2F2ZUNvbnRleHQsIHNhdmVCdW5kbGU6IFNhdmVCdW5kbGUpOiBhbnkge1xyXG4gICAgLy8gVGhlIGltcGxlbWVudG9yIHNob3VsZCBjYWxsIF9jcmVhdGVDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3JcclxuICAgIHRocm93IG5ldyBFcnJvcihcIk5lZWQgYSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBfcHJlcGFyZVNhdmVCdW5kbGVcIik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIGEgY29uc3RydWN0b3IgZnVuY3Rpb24gZm9yIGEgXCJDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3JcIlxyXG4gIHRoYXQgY2FuIHR3ZWFrIHRoZSBzYXZlQnVuZGxlIGJvdGggYXMgaXQgaXMgYnVpbHQgYW5kIHdoZW4gaXQgaXMgY29tcGxldGVkXHJcbiAgYnkgYSBjb25jcmV0ZSBEYXRhU2VydmljZUFkYXBhdGVyLlxyXG5cclxuICBJbml0aWFsaXplZCB3aXRoIGEgZGVmYXVsdCwgbm8tb3AgaW1wbGVtZW50YXRpb24gdGhhdCBkZXZlbG9wZXJzIGNhbiByZXBsYWNlIHdpdGggYVxyXG4gIHN1YnN0YW50aXZlIGltcGxlbWVudGF0aW9uIHRoYXQgY2hhbmdlcyB0aGUgaW5kaXZpZHVhbCBlbnRpdHkgY2hhbmdlIHJlcXVlc3RzXHJcbiAgb3IgYXNwZWN0cyBvZiB0aGUgZW50aXJlICdzYXZlQnVuZGxlJyB3aXRob3V0IGhhdmluZyB0byB3cml0ZSB0aGVpciBvd24gRGF0YVNlcnZpY2UgYWRhcHRlcnMuXHJcbiAgPiAgICAgbGV0IGFkYXB0ZXIgPSBicmVlemUuY29uZmlnLmdldEFkYXB0ZXJJbnN0YW5jZSgnZGF0YVNlcnZpY2UnKTtcclxuICA+ICAgICBhZGFwdGVyLmNoYW5nZVJlcXVlc3RJbnRlcmNlcHRvciA9IGZ1bmN0aW9uIChzYXZlQ29udGV4dCwgc2F2ZUJ1bmRsZSkge1xyXG4gID4gICAgICAgICB0aGlzLmdldFJlcXVlc3QgPSBmdW5jdGlvbiAocmVxdWVzdCwgZW50aXR5LCBpbmRleCkge1xyXG4gID4gICAgICAgICAgICAvLyBhbHRlciB0aGUgcmVxdWVzdCB0aGF0IHRoZSBhZGFwdGVyIHByZXBhcmVkIGZvciB0aGlzIGVudGl0eVxyXG4gID4gICAgICAgICAgICAvLyBiYXNlZCBvbiB0aGUgZW50aXR5LCBzYXZlQ29udGV4dCwgYW5kIHNhdmVCdW5kbGVcclxuICA+ICAgICAgICAgICAgLy8gZS5nLiwgYWRkIGEgY3VzdG9tIGhlYWRlciBvciBwcnVuZSB0aGUgb3JpZ2luYWxWYWx1ZXNNYXBcclxuICA+ICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3Q7XHJcbiAgPiAgICAgICAgfTtcclxuICA+ICAgICAgICB0aGlzLmRvbmUgPSBmdW5jdGlvbiAocmVxdWVzdHMpIHtcclxuICA+ICAgICAgICAgICAgLy8gYWx0ZXIgdGhlIGFycmF5IG9mIHJlcXVlc3RzIHJlcHJlc2VudGluZyB0aGUgZW50aXJlIGNoYW5nZS1zZXRcclxuICA+ICAgICAgICAgICAgLy8gYmFzZWQgb24gdGhlIHNhdmVDb250ZXh0IGFuZCBzYXZlQnVuZGxlXHJcbiAgPiAgICAgICAgfTtcclxuICA+ICAgICB9XHJcblxyXG4gIEBwYXJhbSBzYXZlQ29udGV4dCAtIFRoZSBCcmVlemVKUyBcImNvbnRleHRcIiBmb3IgdGhlIHNhdmUgb3BlcmF0aW9uLlxyXG4gIEBwYXJhbSBzYXZlQnVuZGxlIC0gQ29udGFpbnMgdGhlIGFycmF5IG9mIGVudGl0aWVzLXRvLWJlLXNhdmVkIChBS0EsIHRoZSBlbnRpdHkgY2hhbmdlLXNldCkuXHJcbiAgQHJldHVybiBDb25zdHJ1Y3RvciBmb3IgYSBcIkNoYW5nZVJlcXVlc3RJbnRlcmNlcHRvclwiLlxyXG4gICoqL1xyXG4gIGNoYW5nZVJlcXVlc3RJbnRlcmNlcHRvcjogQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yQ3RvciA9IERlZmF1bHRDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3I7XHJcblxyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIF9jcmVhdGVDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3Ioc2F2ZUNvbnRleHQ6IFNhdmVDb250ZXh0LCBzYXZlQnVuZGxlOiBTYXZlQnVuZGxlKSB7XHJcbiAgICBsZXQgYWRhcHRlciA9IHNhdmVDb250ZXh0LmFkYXB0ZXIhO1xyXG4gICAgbGV0IGNyaSA9IGFkYXB0ZXIuY2hhbmdlUmVxdWVzdEludGVyY2VwdG9yO1xyXG4gICAgbGV0IGlzRm4gPSBjb3JlLmlzRnVuY3Rpb247XHJcblxyXG4gICAgaWYgKGlzRm4oY3JpKSkge1xyXG4gICAgICBsZXQgcHJlID0gYWRhcHRlci5uYW1lICsgXCIgRGF0YVNlcnZpY2VBZGFwdGVyJ3MgQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yXCI7XHJcbiAgICAgIGxldCBwb3N0ID0gXCIgaXMgbWlzc2luZyBvciBub3QgYSBmdW5jdGlvbi5cIjtcclxuICAgICAgbGV0IGludGVyY2VwdG9yID0gbmV3IGNyaShzYXZlQ29udGV4dCwgc2F2ZUJ1bmRsZSk7XHJcbiAgICAgIGlmICghaXNGbihpbnRlcmNlcHRvci5nZXRSZXF1ZXN0KSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihwcmUgKyAnLmdldFJlcXVlc3QnICsgcG9zdCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCFpc0ZuKGludGVyY2VwdG9yLmRvbmUpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHByZSArICcuZG9uZScgKyBwb3N0KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gaW50ZXJjZXB0b3I7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbmV3IERlZmF1bHRDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3Ioc2F2ZUNvbnRleHQsIHNhdmVCdW5kbGUpIGFzIENoYW5nZVJlcXVlc3RJbnRlcmNlcHRvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKiBBYnN0cmFjdCBtZXRob2QgdGhhdCBuZWVkcyB0byBiZSBvdmVyd3JpdHRlbiBpbiBhbnkgY29uY3JldGUgRGF0YVNlcnZpY2VBZGFwdGVyIHN1YmxjbGFzcy4gXHJcbiAgVGhpcyBtZXRob2QgbmVlZHMgdG8gdGFrZSB0aGUgcmVzdWx0IHJldHVybmVkIHRoZSBzZXJ2ZXIgYW5kIGNvbnZlcnQgaXQgaW50byBhbiBJU2F2ZVJlc3VsdC4gXHJcbiAgKi9cclxuICBfcHJlcGFyZVNhdmVSZXN1bHQoc2F2ZUNvbnRleHQ6IFNhdmVDb250ZXh0LCBkYXRhOiBhbnkpOiBTYXZlUmVzdWx0IHtcclxuICAgIHRocm93IG5ldyBFcnJvcihcIk5lZWQgYSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBfcHJlcGFyZVNhdmVSZXN1bHRcIik7XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqIFV0aWxpdHkgbWV0aG9kIHRoYXQgbWF5IGJlIHVzZWQgaW4gYW55IGNvbmNyZXRlIERhdGFTZXJ2aWNlQWRhcHRlciBzdWJsY2xhc3MgdG8gaGFuZGxlIGFueSBcclxuICBodHRwIGNvbm5lY3Rpb24gaXNzdWVzLiBcclxuICAqL1xyXG4gIC8vIFB1dCB0aGlzIGF0IHRoZSBib3R0b20gb2YgeW91ciBodHRwIGVycm9yIGFuYWx5c2lzXHJcbiAgc3RhdGljIF9jYXRjaE5vQ29ubmVjdGlvbkVycm9yKGVycjogU2VydmVyRXJyb3IpIHtcclxuICAgIGlmIChlcnIuc3RhdHVzID09PSAwICYmIGVyci5tZXNzYWdlID09IG51bGwpIHtcclxuICAgICAgZXJyLm1lc3NhZ2UgPSBcIkhUVFAgcmVzcG9uc2Ugc3RhdHVzIDAgYW5kIG5vIG1lc3NhZ2UuICBcIiArXHJcbiAgICAgICAgXCJMaWtlbHkgZGlkIG5vdCBvciBjb3VsZCBub3QgcmVhY2ggc2VydmVyLiBJcyB0aGUgc2VydmVyIHJ1bm5pbmc/XCI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBqc29uUmVzdWx0c0FkYXB0ZXIgPSBuZXcgSnNvblJlc3VsdHNBZGFwdGVyKHtcclxuICAgIG5hbWU6IFwibm9vcFwiLFxyXG5cclxuICAgIHZpc2l0Tm9kZTogZnVuY3Rpb24gKC8qIG5vZGUsIG1hcHBpbmdDb250ZXh0LCBub2RlQ29udGV4dCAqLykge1xyXG4gICAgICByZXR1cm4ge307XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhbmRsZUh0dHBFcnJvcihyZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQsIGh0dHBSZXNwb25zZTogSHR0cFJlc3BvbnNlLCBtZXNzYWdlUHJlZml4Pzogc3RyaW5nKSB7XHJcbiAgbGV0IGVyciA9IGNyZWF0ZUVycm9yKGh0dHBSZXNwb25zZSk7XHJcbiAgQWJzdHJhY3REYXRhU2VydmljZUFkYXB0ZXIuX2NhdGNoTm9Db25uZWN0aW9uRXJyb3IoZXJyKTtcclxuICBpZiAobWVzc2FnZVByZWZpeCkge1xyXG4gICAgZXJyLm1lc3NhZ2UgPSBtZXNzYWdlUHJlZml4ICsgXCI7IFwiICsgZXJyLm1lc3NhZ2U7XHJcbiAgfVxyXG4gIHJlamVjdChlcnIpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVFcnJvcihodHRwUmVzcG9uc2U6IEh0dHBSZXNwb25zZSkge1xyXG4gIGxldCBlcnIgPSBuZXcgRXJyb3IoKSBhcyBTZXJ2ZXJFcnJvcjtcclxuICBlcnIuaHR0cFJlc3BvbnNlID0gaHR0cFJlc3BvbnNlO1xyXG4gIGVyci5zdGF0dXMgPSBodHRwUmVzcG9uc2Uuc3RhdHVzO1xyXG5cclxuICBsZXQgZXJyT2JqID0gaHR0cFJlc3BvbnNlLmRhdGE7XHJcblxyXG4gIGlmICghZXJyT2JqKSB7XHJcbiAgICBlcnIubWVzc2FnZSA9IGh0dHBSZXNwb25zZS5lcnJvciAmJiBodHRwUmVzcG9uc2UuZXJyb3IudG9TdHJpbmcoKTtcclxuICAgIHJldHVybiBlcnI7XHJcbiAgfVxyXG5cclxuICAvLyBzb21lIGFqYXggcHJvdmlkZXJzIHdpbGwgY29udmVydCBlcnJhbnQgcmVzdWx0IGludG8gYW4gb2JqZWN0IChhbmd1bGFyanMpLCBvdGhlcnMgd2lsbCBub3QgKGpRdWVyeSlcclxuICAvLyBpZiBub3QgZG8gaXQgaGVyZS5cclxuICBpZiAodHlwZW9mIGVyck9iaiA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgdHJ5IHtcclxuICAgICAgZXJyT2JqID0gSlNPTi5wYXJzZShlcnJPYmopO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyBzb21ldGltZXMgaHR0cFJlc3BvbnNlLmRhdGEgaXMganVzdCB0aGUgZXJyb3IgbWVzc2FnZSBpdHNlbGZcclxuICAgICAgZXJyLm1lc3NhZ2UgPSBlcnJPYmo7XHJcbiAgICAgIHJldHVybiBlcnI7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsZXQgc2F2ZUNvbnRleHQgPSBodHRwUmVzcG9uc2Uuc2F2ZUNvbnRleHQ7XHJcblxyXG4gIC8vIGlmIGFueSBvZiB0aGUgZm9sbG93IHByb3BlcnRpZXMgZXhpc3QgdGhlIHNvdXJjZSBpcyAuTkVUXHJcbiAgbGV0IHRtcCA9IGVyck9iai5NZXNzYWdlIHx8IGVyck9iai5FeGNlcHRpb25NZXNzYWdlIHx8IGVyck9iai5FbnRpdHlFcnJvcnMgfHwgZXJyT2JqLkVycm9ycztcclxuICBsZXQgaXNEb3ROZXQgPSAhIXRtcDtcclxuICBsZXQgbWVzc2FnZTogc3RyaW5nLCBlbnRpdHlFcnJvcnM6IGFueVtdO1xyXG4gIGlmICghaXNEb3ROZXQpIHtcclxuICAgIG1lc3NhZ2UgPSBlcnJPYmoubWVzc2FnZTtcclxuICAgIGVudGl0eUVycm9ycyA9IGVyck9iai5lcnJvcnMgfHwgZXJyT2JqLmVudGl0eUVycm9ycztcclxuICB9IGVsc2Uge1xyXG4gICAgbGV0IHRtcCA9IGVyck9iajtcclxuICAgIGRvIHtcclxuICAgICAgLy8gLk5FVCBleGNlcHRpb25zIGNhbiBwcm92aWRlIGJvdGggRXhjZXB0aW9uTWVzc2FnZSBhbmQgTWVzc2FnZSBidXQgRXhjZXB0aW9uTWV0aG9kIGlmIGl0XHJcbiAgICAgIC8vIGV4aXN0cyBoYXMgYSBtb3JlIGRldGFpbGVkIG1lc3NhZ2UuXHJcbiAgICAgIG1lc3NhZ2UgPSB0bXAuRXhjZXB0aW9uTWVzc2FnZSB8fCB0bXAuTWVzc2FnZTtcclxuICAgICAgdG1wID0gdG1wLklubmVyRXhjZXB0aW9uO1xyXG4gICAgfSB3aGlsZSAodG1wKTtcclxuICAgIC8vIC5FbnRpdHlFcnJvcnMgd2lsbCBvbmx5IG9jY3VyIGFzIGEgcmVzdWx0IG9mIGFuIEVudGl0eUVycm9yc0V4Y2VwdGlvbiBiZWluZyBkZWxpYmVyYXRlbHkgdGhyb3duIG9uIHRoZSBzZXJ2ZXJcclxuICAgIGVudGl0eUVycm9ycyA9IGVyck9iai5FcnJvcnMgfHwgZXJyT2JqLkVudGl0eUVycm9ycztcclxuICAgIGVudGl0eUVycm9ycyA9IGVudGl0eUVycm9ycyAmJiBlbnRpdHlFcnJvcnMubWFwKGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgZXJyb3JOYW1lOiBlLkVycm9yTmFtZSxcclxuICAgICAgICBlbnRpdHlUeXBlTmFtZTogTWV0YWRhdGFTdG9yZS5ub3JtYWxpemVUeXBlTmFtZShlLkVudGl0eVR5cGVOYW1lKSxcclxuICAgICAgICBrZXlWYWx1ZXM6IGUuS2V5VmFsdWVzLFxyXG4gICAgICAgIHByb3BlcnR5TmFtZTogZS5Qcm9wZXJ0eU5hbWUsXHJcbiAgICAgICAgZXJyb3JNZXNzYWdlOiBlLkVycm9yTWVzc2FnZSxcclxuICAgICAgICBjdXN0b206IGUuQ3VzdG9tXHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGlmIChzYXZlQ29udGV4dCAmJiBlbnRpdHlFcnJvcnMpIHtcclxuXHJcbiAgICBsZXQgcHJvcE5hbWVGbiA9IHNhdmVDb250ZXh0LmVudGl0eU1hbmFnZXIubWV0YWRhdGFTdG9yZS5uYW1pbmdDb252ZW50aW9uLnNlcnZlclByb3BlcnR5TmFtZVRvQ2xpZW50O1xyXG4gICAgZW50aXR5RXJyb3JzLmZvckVhY2goZnVuY3Rpb24gKGUpIHtcclxuICAgICAgZS5wcm9wZXJ0eU5hbWUgPSBlLnByb3BlcnR5TmFtZSAmJiBwcm9wTmFtZUZuKGUucHJvcGVydHlOYW1lKTtcclxuICAgIH0pO1xyXG4gICAgKGVyciBhcyBTYXZlRXJyb3JGcm9tU2VydmVyKS5lbnRpdHlFcnJvcnMgPSBlbnRpdHlFcnJvcnM7XHJcbiAgfVxyXG5cclxuICBlcnIubWVzc2FnZSA9IG1lc3NhZ2UgfHwgXCJTZXJ2ZXIgc2lkZSBlcnJvcnMgZW5jb3VudGVyZWQgLSBzZWUgdGhlIGVudGl0eUVycm9ycyBjb2xsZWN0aW9uIG9uIHRoaXMgb2JqZWN0IGZvciBtb3JlIGRldGFpbFwiO1xyXG4gIHJldHVybiBlcnI7XHJcbn1cclxuXHJcblxyXG4vKiogVGhpcyBpcyBhIGRlZmF1bHQsIG5vLW9wIGltcGxlbWVudGF0aW9uIHRoYXQgZGV2ZWxvcGVycyBjYW4gcmVwbGFjZS4gKi9cclxuY2xhc3MgRGVmYXVsdENoYW5nZVJlcXVlc3RJbnRlcmNlcHRvciB7XHJcbiAgY29uc3RydWN0b3Ioc2F2ZUNvbnRleHQ6IFNhdmVDb250ZXh0LCBzYXZlQnVuZGxlOiBTYXZlQnVuZGxlKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgZ2V0UmVxdWVzdChyZXF1ZXN0OiBhbnksIGVudGl0eTogRW50aXR5LCBpbmRleDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gcmVxdWVzdDtcclxuICB9XHJcblxyXG4gIGRvbmUocmVxdWVzdHM6IE9iamVjdFtdKSB7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { makeRelationArray } from './relation-array';
|
|
2
|
+
export { makeComplexArray } from './complex-array';
|
|
3
|
+
export { makePrimitiveArray } from './primitive-array';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9icmVlemUtY2xpZW50LyIsInNvdXJjZXMiOlsic3JjL2FycmF5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgbWFrZVJlbGF0aW9uQXJyYXkgfSBmcm9tICcuL3JlbGF0aW9uLWFycmF5JztcclxuZXhwb3J0IHsgbWFrZUNvbXBsZXhBcnJheSB9IGZyb20gJy4vY29tcGxleC1hcnJheSc7XHJcbmV4cG9ydCB7IG1ha2VQcmltaXRpdmVBcnJheSB9IGZyb20gJy4vcHJpbWl0aXZlLWFycmF5JztcclxuIl19
|