breeze-client 2.2.0 → 2.2.1-cjs
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapter-ajax-angularjs/{index.d.ts → breeze-client-adapter-ajax-angularjs.d.ts} +0 -1
- package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +1 -0
- package/adapter-ajax-angularjs/package.json +13 -0
- package/adapter-ajax-fetch/{index.d.ts → breeze-client-adapter-ajax-fetch.d.ts} +0 -1
- package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +1 -0
- package/adapter-ajax-fetch/package.json +13 -0
- package/adapter-ajax-httpclient/{index.d.ts → breeze-client-adapter-ajax-httpclient.d.ts} +0 -1
- package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +1 -0
- package/adapter-ajax-httpclient/package.json +13 -0
- package/adapter-ajax-jquery/{index.d.ts → breeze-client-adapter-ajax-jquery.d.ts} +0 -1
- package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +1 -0
- package/adapter-ajax-jquery/package.json +13 -0
- package/adapter-ajax-post/{index.d.ts → breeze-client-adapter-ajax-post.d.ts} +0 -1
- package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +1 -0
- package/adapter-ajax-post/package.json +13 -0
- package/adapter-data-service-odata/{index.d.ts → breeze-client-adapter-data-service-odata.d.ts} +0 -1
- package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +1 -0
- package/adapter-data-service-odata/package.json +13 -0
- package/adapter-data-service-webapi/{index.d.ts → breeze-client-adapter-data-service-webapi.d.ts} +0 -1
- package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +1 -0
- package/adapter-data-service-webapi/package.json +13 -0
- package/adapter-model-library-backing-store/{index.d.ts → breeze-client-adapter-model-library-backing-store.d.ts} +0 -1
- package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +1 -0
- package/adapter-model-library-backing-store/package.json +13 -0
- package/adapter-model-library-ko/{index.d.ts → breeze-client-adapter-model-library-ko.d.ts} +0 -1
- package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +1 -0
- package/adapter-model-library-ko/package.json +13 -0
- package/adapter-uri-builder-json/{index.d.ts → breeze-client-adapter-uri-builder-json.d.ts} +0 -1
- package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +1 -0
- package/adapter-uri-builder-json/package.json +13 -0
- package/adapter-uri-builder-odata/{index.d.ts → breeze-client-adapter-uri-builder-odata.d.ts} +0 -1
- package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +1 -0
- package/adapter-uri-builder-odata/package.json +13 -0
- package/breeze-client.d.ts +8 -0
- package/breeze-client.metadata.json +1 -0
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +190 -0
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-fetch.umd.js +190 -0
- package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +195 -0
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-jquery.umd.js +115 -0
- package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-post.umd.js +92 -0
- package/bundles/breeze-client-adapter-ajax-post.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-ajax-post.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-data-service-odata.umd.js +747 -0
- package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +16 -0
- package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-data-service-webapi.umd.js +333 -0
- package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +16 -0
- package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +280 -0
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-model-library-ko.umd.js +252 -0
- package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-uri-builder-json.umd.js +96 -0
- package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +1 -0
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +262 -0
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +1 -0
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +2 -0
- package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +1 -0
- package/bundles/breeze-client-mixin-get-entity-graph.umd.js +258 -0
- package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +1 -0
- package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +2 -0
- package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +1 -0
- package/bundles/breeze-client-mixin-save-queuing.umd.js +579 -0
- package/bundles/breeze-client-mixin-save-queuing.umd.js.map +1 -0
- package/bundles/breeze-client-mixin-save-queuing.umd.min.js +16 -0
- package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +1 -0
- package/bundles/breeze-client.umd.js +14234 -0
- package/bundles/breeze-client.umd.js.map +1 -0
- package/bundles/breeze-client.umd.min.js +16 -0
- package/bundles/breeze-client.umd.min.js.map +1 -0
- package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +130 -0
- package/esm2015/adapter-ajax-angularjs/adapter-core.js +49 -0
- package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +5 -0
- package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +130 -0
- package/esm2015/adapter-ajax-fetch/adapter-core.js +49 -0
- package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +5 -0
- package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +137 -0
- package/esm2015/adapter-ajax-httpclient/adapter-core.js +49 -0
- package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +5 -0
- package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +103 -0
- package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +5 -0
- package/esm2015/adapter-ajax-post/adapter-ajax-post.js +77 -0
- package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +5 -0
- package/esm2015/adapter-data-service-odata/adapter-core.js +49 -0
- package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +463 -0
- package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +5 -0
- package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +100 -0
- package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +5 -0
- package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +268 -0
- package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +5 -0
- package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +240 -0
- package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +5 -0
- package/esm2015/adapter-uri-builder-json/adapter-core.js +49 -0
- package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +36 -0
- package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +5 -0
- package/esm2015/adapter-uri-builder-odata/adapter-core.js +49 -0
- package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +192 -0
- package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +5 -0
- package/esm2015/breeze-client.js +9 -0
- package/esm2015/index.js +2 -0
- package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +5 -0
- package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +269 -0
- package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +5 -0
- package/esm2015/mixin-save-queuing/mixin-save-queuing.js +400 -0
- package/esm2015/src/abstract-data-service-adapter.js +327 -0
- package/esm2015/src/array.js +4 -0
- package/esm2015/src/assert-param.js +312 -0
- package/esm2015/src/breeze.js +85 -0
- package/esm2015/src/complex-array.js +119 -0
- package/esm2015/src/config.js +223 -0
- package/esm2015/src/core.js +714 -0
- package/esm2015/src/csdl-metadata-parser.js +385 -0
- package/esm2015/src/data-service.js +203 -0
- package/esm2015/src/data-type.js +506 -0
- package/esm2015/src/default-property-interceptor.js +460 -0
- package/{esm2022/src/entity-action.mjs → esm2015/src/entity-action.js} +25 -25
- package/esm2015/src/entity-aspect.js +804 -0
- package/esm2015/src/entity-group.js +187 -0
- package/esm2015/src/entity-key.js +116 -0
- package/esm2015/src/entity-manager.js +2094 -0
- package/esm2015/src/entity-metadata.js +2109 -0
- package/esm2015/src/entity-query.js +1015 -0
- package/esm2015/src/entity-state.js +107 -0
- package/esm2015/src/enum.js +141 -0
- package/esm2015/src/event.js +256 -0
- package/esm2015/src/interface-registry.js +41 -0
- package/esm2015/src/key-generator.js +108 -0
- package/esm2015/src/local-query-comparison-options.js +65 -0
- package/esm2015/src/mapping-context.js +411 -0
- package/esm2015/src/naming-convention.js +88 -0
- package/esm2015/src/observable-array.js +185 -0
- package/esm2015/src/predicate.js +1242 -0
- package/esm2015/src/primitive-array.js +87 -0
- package/esm2015/src/query-options.js +152 -0
- package/esm2015/src/relation-array.js +175 -0
- package/esm2015/src/save-options.js +41 -0
- package/esm2015/src/unattached-children-map.js +58 -0
- package/esm2015/src/validate.js +991 -0
- package/esm2015/src/validation-options.js +64 -0
- package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +132 -0
- package/esm5/adapter-ajax-angularjs/adapter-core.js +49 -0
- package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +5 -0
- package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +132 -0
- package/esm5/adapter-ajax-fetch/adapter-core.js +49 -0
- package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +5 -0
- package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +139 -0
- package/esm5/adapter-ajax-httpclient/adapter-core.js +49 -0
- package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +5 -0
- package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +105 -0
- package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +5 -0
- package/esm5/adapter-ajax-post/adapter-ajax-post.js +81 -0
- package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +5 -0
- package/esm5/adapter-data-service-odata/adapter-core.js +49 -0
- package/{esm2022/adapter-data-service-odata/adapter-data-service-odata.mjs → esm5/adapter-data-service-odata/adapter-data-service-odata.js} +147 -138
- package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +5 -0
- package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +105 -0
- package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +5 -0
- package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +270 -0
- package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +5 -0
- package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +242 -0
- package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +5 -0
- package/esm5/adapter-uri-builder-json/adapter-core.js +49 -0
- package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +38 -0
- package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +5 -0
- package/esm5/adapter-uri-builder-odata/adapter-core.js +49 -0
- package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +197 -0
- package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +5 -0
- package/esm5/breeze-client.js +9 -0
- package/esm5/index.js +2 -0
- package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +5 -0
- package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +269 -0
- package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +5 -0
- package/esm5/mixin-save-queuing/mixin-save-queuing.js +412 -0
- package/esm5/src/abstract-data-service-adapter.js +333 -0
- package/esm5/src/array.js +4 -0
- package/esm5/src/assert-param.js +317 -0
- package/esm5/src/breeze.js +85 -0
- package/esm5/src/complex-array.js +119 -0
- package/esm5/src/config.js +228 -0
- package/esm5/src/core.js +722 -0
- package/esm5/src/csdl-metadata-parser.js +385 -0
- package/esm5/src/data-service.js +207 -0
- package/esm5/src/data-type.js +513 -0
- package/esm5/src/default-property-interceptor.js +460 -0
- package/esm5/src/entity-action.js +52 -0
- package/esm5/src/entity-aspect.js +810 -0
- package/esm5/src/entity-group.js +189 -0
- package/esm5/src/entity-key.js +118 -0
- package/esm5/src/entity-manager.js +2112 -0
- package/esm5/src/entity-metadata.js +2144 -0
- package/esm5/src/entity-query.js +1042 -0
- package/esm5/src/entity-state.js +114 -0
- package/esm5/src/enum.js +144 -0
- package/esm5/src/event.js +259 -0
- package/esm5/src/interface-registry.js +43 -0
- package/esm5/src/key-generator.js +111 -0
- package/esm5/src/local-query-comparison-options.js +67 -0
- package/esm5/src/mapping-context.js +413 -0
- package/esm5/src/naming-convention.js +90 -0
- package/esm5/src/observable-array.js +201 -0
- package/esm5/src/predicate.js +1307 -0
- package/esm5/src/primitive-array.js +87 -0
- package/esm5/src/query-options.js +167 -0
- package/esm5/src/relation-array.js +175 -0
- package/esm5/src/save-options.js +43 -0
- package/esm5/src/unattached-children-map.js +60 -0
- package/{esm2022/src/validate.mjs → esm5/src/validate.js} +110 -116
- package/esm5/src/validation-options.js +66 -0
- package/{fesm2022/breeze-client-adapter-ajax-angularjs.mjs → fesm2015/breeze-client-adapter-ajax-angularjs.js} +1 -6
- package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-ajax-fetch.mjs → fesm2015/breeze-client-adapter-ajax-fetch.js} +4 -9
- package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-ajax-httpclient.mjs → fesm2015/breeze-client-adapter-ajax-httpclient.js} +4 -6
- package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-ajax-jquery.mjs → fesm2015/breeze-client-adapter-ajax-jquery.js} +2 -6
- package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-ajax-post.mjs → fesm2015/breeze-client-adapter-ajax-post.js} +1 -1
- package/fesm2015/breeze-client-adapter-ajax-post.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-data-service-odata.mjs → fesm2015/breeze-client-adapter-data-service-odata.js} +69 -68
- package/fesm2015/breeze-client-adapter-data-service-odata.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-data-service-webapi.mjs → fesm2015/breeze-client-adapter-data-service-webapi.js} +30 -30
- package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-model-library-backing-store.mjs → fesm2015/breeze-client-adapter-model-library-backing-store.js} +13 -14
- package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-model-library-ko.mjs → fesm2015/breeze-client-adapter-model-library-ko.js} +13 -14
- package/fesm2015/breeze-client-adapter-model-library-ko.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-uri-builder-json.mjs → fesm2015/breeze-client-adapter-uri-builder-json.js} +8 -9
- package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +1 -0
- package/{fesm2022/breeze-client-adapter-uri-builder-odata.mjs → fesm2015/breeze-client-adapter-uri-builder-odata.js} +86 -86
- package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +1 -0
- package/{fesm2022/breeze-client-mixin-get-entity-graph.mjs → fesm2015/breeze-client-mixin-get-entity-graph.js} +1 -1
- package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +1 -0
- package/{fesm2022/breeze-client-mixin-save-queuing.mjs → fesm2015/breeze-client-mixin-save-queuing.js} +2 -23
- package/fesm2015/breeze-client-mixin-save-queuing.js.map +1 -0
- package/{fesm2022/breeze-client.mjs → fesm2015/breeze-client.js} +1543 -2042
- package/fesm2015/breeze-client.js.map +1 -0
- package/fesm5/breeze-client-adapter-ajax-angularjs.js +186 -0
- package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +1 -0
- package/fesm5/breeze-client-adapter-ajax-fetch.js +186 -0
- package/fesm5/breeze-client-adapter-ajax-fetch.js.map +1 -0
- package/fesm5/breeze-client-adapter-ajax-httpclient.js +193 -0
- package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +1 -0
- package/fesm5/breeze-client-adapter-ajax-jquery.js +111 -0
- package/fesm5/breeze-client-adapter-ajax-jquery.js.map +1 -0
- package/fesm5/breeze-client-adapter-ajax-post.js +86 -0
- package/fesm5/breeze-client-adapter-ajax-post.js.map +1 -0
- package/fesm5/breeze-client-adapter-data-service-odata.js +523 -0
- package/fesm5/breeze-client-adapter-data-service-odata.js.map +1 -0
- package/fesm5/breeze-client-adapter-data-service-webapi.js +111 -0
- package/fesm5/breeze-client-adapter-data-service-webapi.js.map +1 -0
- package/fesm5/breeze-client-adapter-model-library-backing-store.js +276 -0
- package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +1 -0
- package/fesm5/breeze-client-adapter-model-library-ko.js +248 -0
- package/fesm5/breeze-client-adapter-model-library-ko.js.map +1 -0
- package/fesm5/breeze-client-adapter-uri-builder-json.js +92 -0
- package/fesm5/breeze-client-adapter-uri-builder-json.js.map +1 -0
- package/fesm5/breeze-client-adapter-uri-builder-odata.js +250 -0
- package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +1 -0
- package/fesm5/breeze-client-mixin-get-entity-graph.js +254 -0
- package/fesm5/breeze-client-mixin-get-entity-graph.js.map +1 -0
- package/fesm5/breeze-client-mixin-save-queuing.js +356 -0
- package/fesm5/breeze-client-mixin-save-queuing.js.map +1 -0
- package/fesm5/breeze-client.js +13956 -0
- package/fesm5/breeze-client.js.map +1 -0
- package/mixin-get-entity-graph/{index.d.ts → breeze-client-mixin-get-entity-graph.d.ts} +0 -1
- package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +1 -0
- package/mixin-get-entity-graph/package.json +13 -0
- package/mixin-save-queuing/{index.d.ts → breeze-client-mixin-save-queuing.d.ts} +0 -1
- package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +1 -0
- package/mixin-save-queuing/package.json +13 -0
- package/package.json +12 -94
- package/src/config.d.ts +1 -1
- package/src/core.d.ts +1 -1
- package/src/entity-aspect.d.ts +1 -1
- package/src/entity-metadata.d.ts +6 -8
- package/src/entity-query.d.ts +1 -1
- package/esm2022/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +0 -135
- package/esm2022/adapter-ajax-angularjs/adapter-core.mjs +0 -49
- package/esm2022/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +0 -5
- package/esm2022/adapter-ajax-fetch/adapter-ajax-fetch.mjs +0 -135
- package/esm2022/adapter-ajax-fetch/adapter-core.mjs +0 -49
- package/esm2022/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +0 -5
- package/esm2022/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +0 -139
- package/esm2022/adapter-ajax-httpclient/adapter-core.mjs +0 -49
- package/esm2022/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +0 -5
- package/esm2022/adapter-ajax-jquery/adapter-ajax-jquery.mjs +0 -107
- package/esm2022/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +0 -5
- package/esm2022/adapter-ajax-post/adapter-ajax-post.mjs +0 -77
- package/esm2022/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +0 -5
- package/esm2022/adapter-data-service-odata/adapter-core.mjs +0 -49
- package/esm2022/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +0 -5
- package/esm2022/adapter-data-service-webapi/adapter-data-service-webapi.mjs +0 -100
- package/esm2022/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +0 -5
- package/esm2022/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +0 -269
- package/esm2022/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +0 -5
- package/esm2022/adapter-model-library-ko/adapter-model-library-ko.mjs +0 -241
- package/esm2022/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +0 -5
- package/esm2022/adapter-uri-builder-json/adapter-core.mjs +0 -49
- package/esm2022/adapter-uri-builder-json/adapter-uri-builder-json.mjs +0 -37
- package/esm2022/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +0 -5
- package/esm2022/adapter-uri-builder-odata/adapter-core.mjs +0 -49
- package/esm2022/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +0 -191
- package/esm2022/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +0 -5
- package/esm2022/breeze-client.mjs +0 -5
- package/esm2022/index.mjs +0 -2
- package/esm2022/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +0 -5
- package/esm2022/mixin-get-entity-graph/mixin-get-entity-graph.mjs +0 -269
- package/esm2022/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +0 -5
- package/esm2022/mixin-save-queuing/mixin-save-queuing.mjs +0 -421
- package/esm2022/src/abstract-data-service-adapter.mjs +0 -325
- package/esm2022/src/array.mjs +0 -4
- package/esm2022/src/assert-param.mjs +0 -330
- package/esm2022/src/breeze.mjs +0 -85
- package/esm2022/src/complex-array.mjs +0 -117
- package/esm2022/src/config.mjs +0 -232
- package/esm2022/src/core.mjs +0 -712
- package/esm2022/src/csdl-metadata-parser.mjs +0 -385
- package/esm2022/src/data-service.mjs +0 -239
- package/esm2022/src/data-type.mjs +0 -510
- package/esm2022/src/default-property-interceptor.mjs +0 -460
- package/esm2022/src/entity-aspect.mjs +0 -897
- package/esm2022/src/entity-group.mjs +0 -192
- package/esm2022/src/entity-key.mjs +0 -127
- package/esm2022/src/entity-manager.mjs +0 -2183
- package/esm2022/src/entity-metadata.mjs +0 -2242
- package/esm2022/src/entity-query.mjs +0 -1024
- package/esm2022/src/entity-state.mjs +0 -107
- package/esm2022/src/enum.mjs +0 -143
- package/esm2022/src/event.mjs +0 -264
- package/esm2022/src/interface-registry.mjs +0 -39
- package/esm2022/src/key-generator.mjs +0 -110
- package/esm2022/src/local-query-comparison-options.mjs +0 -75
- package/esm2022/src/mapping-context.mjs +0 -422
- package/esm2022/src/naming-convention.mjs +0 -96
- package/esm2022/src/observable-array.mjs +0 -183
- package/esm2022/src/predicate.mjs +0 -1259
- package/esm2022/src/primitive-array.mjs +0 -85
- package/esm2022/src/query-options.mjs +0 -160
- package/esm2022/src/relation-array.mjs +0 -173
- package/esm2022/src/save-options.mjs +0 -51
- package/esm2022/src/unattached-children-map.mjs +0 -56
- package/esm2022/src/validation-options.mjs +0 -78
- package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-ajax-fetch.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-ajax-jquery.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-ajax-post.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-data-service-odata.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-data-service-webapi.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-model-library-ko.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-uri-builder-json.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs.map +0 -1
- package/fesm2022/breeze-client-mixin-get-entity-graph.mjs.map +0 -1
- package/fesm2022/breeze-client-mixin-save-queuing.mjs.map +0 -1
- package/fesm2022/breeze-client.mjs.map +0 -1
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { config, core } from 'breeze-client';
|
|
2
|
+
import { appendQueryStringParameter, encodeParams } from './adapter-core';
|
|
3
|
+
export class AjaxAngularjsAdapter {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.name = "angularjs";
|
|
6
|
+
this.defaultSettings = {};
|
|
7
|
+
this.requestInterceptor = undefined;
|
|
8
|
+
// Will set:
|
|
9
|
+
// this.$http;
|
|
10
|
+
// this.$rootScope;
|
|
11
|
+
}
|
|
12
|
+
static register(breezeConfig) {
|
|
13
|
+
breezeConfig = breezeConfig || config;
|
|
14
|
+
breezeConfig.registerAdapter("ajax", AjaxAngularjsAdapter);
|
|
15
|
+
return breezeConfig.initializeAdapterInstance("ajax", "angularjs", true);
|
|
16
|
+
}
|
|
17
|
+
initialize() {
|
|
18
|
+
let ng = core.requireLib("angular");
|
|
19
|
+
if (ng) {
|
|
20
|
+
let $injector = ng.injector(['ng']);
|
|
21
|
+
let http, rootScope;
|
|
22
|
+
$injector.invoke(['$http', '$rootScope', function ($http, $rootScope) {
|
|
23
|
+
http = $http;
|
|
24
|
+
rootScope = $rootScope;
|
|
25
|
+
}]);
|
|
26
|
+
this.$http = http;
|
|
27
|
+
this.$rootScope = rootScope;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
setHttp(http) {
|
|
31
|
+
this.$http = http;
|
|
32
|
+
this.$rootScope = null; // to suppress $rootScope.digest
|
|
33
|
+
}
|
|
34
|
+
ajax(config) {
|
|
35
|
+
if (!this.$http) {
|
|
36
|
+
throw new Error("Unable to locate angularjs for ajax adapter");
|
|
37
|
+
}
|
|
38
|
+
let ngConfig = {
|
|
39
|
+
method: config.type,
|
|
40
|
+
url: config.url,
|
|
41
|
+
dataType: config.dataType,
|
|
42
|
+
contentType: config.contentType,
|
|
43
|
+
crossDomain: config.crossDomain,
|
|
44
|
+
headers: config.headers || {},
|
|
45
|
+
data: undefined
|
|
46
|
+
};
|
|
47
|
+
if (config.params) {
|
|
48
|
+
// Hack: because of the way that Angular handles writing parameters out to the url.
|
|
49
|
+
// so this approach takes over the url param writing completely.
|
|
50
|
+
// See: http://victorblog.com/2012/12/20/make-angularjs-http-service-behave-like-jquery-ajax/
|
|
51
|
+
ngConfig.url = appendQueryStringParameter(ngConfig.url, encodeParams(config.params));
|
|
52
|
+
}
|
|
53
|
+
if (config.data) {
|
|
54
|
+
ngConfig.data = config.data;
|
|
55
|
+
}
|
|
56
|
+
if (!core.isEmpty(this.defaultSettings)) {
|
|
57
|
+
let compositeConfig = core.extend({}, this.defaultSettings);
|
|
58
|
+
ngConfig = core.extend(compositeConfig, ngConfig);
|
|
59
|
+
// extend is shallow; extend headers separately
|
|
60
|
+
let headers = core.extend({}, this.defaultSettings.headers); // copy default headers 1st
|
|
61
|
+
ngConfig.headers = core.extend(headers, ngConfig.headers);
|
|
62
|
+
}
|
|
63
|
+
let requestInfo = {
|
|
64
|
+
adapter: this,
|
|
65
|
+
config: ngConfig,
|
|
66
|
+
dsaConfig: config,
|
|
67
|
+
success: successFn,
|
|
68
|
+
error: errorFn,
|
|
69
|
+
responseSuccess: responseSuccessFn,
|
|
70
|
+
responseError: responseErrorFn // adapter's error callback (ng 1.6+)
|
|
71
|
+
};
|
|
72
|
+
if (core.isFunction(this.requestInterceptor)) {
|
|
73
|
+
let ri = this.requestInterceptor;
|
|
74
|
+
ri(requestInfo);
|
|
75
|
+
if (ri.oneTime) {
|
|
76
|
+
this.requestInterceptor = undefined;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (requestInfo.config) { // exists unless requestInterceptor killed it.
|
|
80
|
+
let prom = this.$http(requestInfo.config);
|
|
81
|
+
if (prom.success) {
|
|
82
|
+
// response for ng < 1.6
|
|
83
|
+
prom.success(requestInfo.success).error(requestInfo.error);
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
// response for ng 1.6+
|
|
87
|
+
prom.then(requestInfo.responseSuccess).catch(requestInfo.responseError);
|
|
88
|
+
}
|
|
89
|
+
this.$rootScope && this.$rootScope.$digest();
|
|
90
|
+
}
|
|
91
|
+
function responseSuccessFn(response) {
|
|
92
|
+
return successFn(response.data, response.status, response.headers, response.config, response.statusText);
|
|
93
|
+
}
|
|
94
|
+
function successFn(data, status, headers, xconfig, statusText) {
|
|
95
|
+
// HACK: because $http returns a server side null as a string containing "null" - this is WRONG.
|
|
96
|
+
if (data === "null")
|
|
97
|
+
data = null;
|
|
98
|
+
let httpResponse = {
|
|
99
|
+
config: config,
|
|
100
|
+
data: data,
|
|
101
|
+
getHeaders: headers,
|
|
102
|
+
ngConfig: xconfig,
|
|
103
|
+
status: status,
|
|
104
|
+
statusText: statusText
|
|
105
|
+
};
|
|
106
|
+
config.success(httpResponse);
|
|
107
|
+
}
|
|
108
|
+
function responseErrorFn(response) {
|
|
109
|
+
return errorFn(response.data, response.status, response.headers, response.config, response.statusText);
|
|
110
|
+
}
|
|
111
|
+
function errorFn(data, status, headers, xconfig, statusText) {
|
|
112
|
+
// Timeout appears as an error with status===0 and no data.
|
|
113
|
+
// Make it better
|
|
114
|
+
if (status === 0 && data == null) {
|
|
115
|
+
data = 'timeout';
|
|
116
|
+
}
|
|
117
|
+
let httpResponse = {
|
|
118
|
+
config: config,
|
|
119
|
+
data: data,
|
|
120
|
+
getHeaders: headers,
|
|
121
|
+
ngConfig: xconfig,
|
|
122
|
+
status: status,
|
|
123
|
+
statusText: statusText
|
|
124
|
+
};
|
|
125
|
+
config.error(httpResponse);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
config.registerAdapter("ajax", AjaxAngularjsAdapter);
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci1hamF4LWFuZ3VsYXJqcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2JyZWV6ZS1jbGllbnQvYWRhcHRlci1hamF4LWFuZ3VsYXJqcy8iLCJzb3VyY2VzIjpbImFkYXB0ZXItYWpheC1hbmd1bGFyanMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxRCxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRSxNQUFNLE9BQU8sb0JBQW9CO0lBTS9CO1FBQ0UsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7UUFDeEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLFNBQVMsQ0FBQztRQUNwQyxZQUFZO1FBQ1osZ0JBQWdCO1FBQ2hCLHFCQUFxQjtJQUN2QixDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxZQUEyQjtRQUN6QyxZQUFZLEdBQUcsWUFBWSxJQUFJLE1BQU0sQ0FBQztRQUN0QyxZQUFZLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO1FBQzNELE9BQU8sWUFBWSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUF5QixDQUFDO0lBQ25HLENBQUM7SUFFRCxVQUFVO1FBRVIsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwQyxJQUFJLEVBQUUsRUFBRTtZQUNOLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLElBQUksSUFBUyxFQUFFLFNBQWMsQ0FBQztZQUM5QixTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEtB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LE1BQU0sRUFBRSxRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pHLENBQUM7UUFFRCxTQUFTLE9BQU8sQ0FBQyxJQUFTLEVBQUUsTUFBVyxFQUFFLE9BQVksRUFBRSxPQUFZLEVBQUUsVUFBa0I7WUFDckYsMkRBQTJEO1lBQzNELGlCQUFpQjtZQUNqQixJQUFJLE1BQU0sS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtnQkFDaEMsSUFBSSxHQUFHLFNBQVMsQ0FBQzthQUNsQjtZQUNELElBQUksWUFBWSxHQUFHO2dCQUNqQixNQUFNLEVBQUUsTUFBTTtnQkFDZCxJQUFJLEVBQUUsSUFBSTtnQkFDVixVQUFVLEVBQUUsT0FBTztnQkFDbkIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFVBQVUsRUFBRSxVQUFVO2FBQ3ZCLENBQUM7WUFDRixNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWpheEFkYXB0ZXIsIEFqYXhSZXF1ZXN0SW50ZXJjZXB0b3IsIEJyZWV6ZUNvbmZpZywgY29uZmlnLCBjb3JlIH0gZnJvbSAnYnJlZXplLWNsaWVudCc7XHJcbmltcG9ydCB7IGFwcGVuZFF1ZXJ5U3RyaW5nUGFyYW1ldGVyLCBlbmNvZGVQYXJhbXMgfSBmcm9tICcuL2FkYXB0ZXItY29yZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgQWpheEFuZ3VsYXJqc0FkYXB0ZXIgaW1wbGVtZW50cyBBamF4QWRhcHRlciB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGRlZmF1bHRTZXR0aW5nczogeyBoZWFkZXJzPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH0gfTtcclxuICByZXF1ZXN0SW50ZXJjZXB0b3I/OiBBamF4UmVxdWVzdEludGVyY2VwdG9yO1xyXG4gICRodHRwOiBhbnk7XHJcbiAgJHJvb3RTY29wZTogYW55O1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5uYW1lID0gXCJhbmd1bGFyanNcIjtcclxuICAgIHRoaXMuZGVmYXVsdFNldHRpbmdzID0ge307XHJcbiAgICB0aGlzLnJlcXVlc3RJbnRlcmNlcHRvciA9IHVuZGVmaW5lZDtcclxuICAgIC8vIFdpbGwgc2V0OlxyXG4gICAgLy8gICB0aGlzLiRodHRwO1xyXG4gICAgLy8gICB0aGlzLiRyb290U2NvcGU7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgcmVnaXN0ZXIoYnJlZXplQ29uZmlnPzogQnJlZXplQ29uZmlnKSB7XHJcbiAgICBicmVlemVDb25maWcgPSBicmVlemVDb25maWcgfHwgY29uZmlnO1xyXG4gICAgYnJlZXplQ29uZmlnLnJlZ2lzdGVyQWRhcHRlcihcImFqYXhcIiwgQWpheEFuZ3VsYXJqc0FkYXB0ZXIpO1xyXG4gICAgcmV0dXJuIGJyZWV6ZUNvbmZpZy5pbml0aWFsaXplQWRhcHRlckluc3RhbmNlKFwiYWpheFwiLCBcImFuZ3VsYXJqc1wiLCB0cnVlKSBhcyBBamF4QW5ndWxhcmpzQWRhcHRlcjtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpemUoKSB7XHJcblxyXG4gICAgbGV0IG5nID0gY29yZS5yZXF1aXJlTGliKFwiYW5ndWxhclwiKTtcclxuICAgIGlmIChuZykge1xyXG4gICAgICBsZXQgJGluamVjdG9yID0gbmcuaW5qZWN0b3IoWyduZyddKTtcclxuICAgICAgbGV0IGh0dHA6IGFueSwgcm9vdFNjb3BlOiBhbnk7XHJcbiAgICAgICRpbmplY3Rvci5pbnZva2UoWyckaHR0cCcsICckcm9vdFNjb3BlJywgZnVuY3Rpb24gKCRodHRwOiBhbnksICRyb290U2NvcGU6IGFueSkge1xyXG4gICAgICAgIGh0dHAgPSAkaHR0cDtcclxuICAgICAgICByb290U2NvcGUgPSAkcm9vdFNjb3BlO1xyXG4gICAgICB9XSk7XHJcbiAgICAgIHRoaXMuJGh0dHAgPSBodHRwO1xyXG4gICAgICB0aGlzLiRyb290U2NvcGUgPSByb290U2NvcGU7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgc2V0SHR0cChodHRwOiBhbnkpIHtcclxuICAgIHRoaXMuJGh0dHAgPSBodHRwO1xyXG4gICAgdGhpcy4kcm9vdFNjb3BlID0gbnVsbDsgLy8gdG8gc3VwcHJlc3MgJHJvb3RTY29wZS5kaWdlc3RcclxuICB9XHJcblxyXG5cclxuICBhamF4KGNvbmZpZzogYW55KSB7XHJcbiAgICBpZiAoIXRoaXMuJGh0dHApIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGxvY2F0ZSBhbmd1bGFyanMgZm9yIGFqYXggYWRhcHRlclwiKTtcclxuICAgIH1cclxuICAgIGxldCBuZ0NvbmZpZyA9IHtcclxuICAgICAgbWV0aG9kOiBjb25maWcudHlwZSxcclxuICAgICAgdXJsOiBjb25maWcudXJsLFxyXG4gICAgICBkYXRhVHlwZTogY29uZmlnLmRhdGFUeXBlLFxyXG4gICAgICBjb250ZW50VHlwZTogY29uZmlnLmNvbnRlbnRUeXBlLFxyXG4gICAgICBjcm9zc0RvbWFpbjogY29uZmlnLmNyb3NzRG9tYWluLFxyXG4gICAgICBoZWFkZXJzOiBjb25maWcuaGVhZGVycyB8fCB7fSxcclxuICAgICAgZGF0YTogdW5kZWZpbmVkIGFzIGFueVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoY29uZmlnLnBhcmFtcykge1xyXG4gICAgICAvLyBIYWNrOiBiZWNhdXNlIG9mIHRoZSB3YXkgdGhhdCBBbmd1bGFyIGhhbmRsZXMgd3JpdGluZyBwYXJhbWV0ZXJzIG91dCB0byB0aGUgdXJsLlxyXG4gICAgICAvLyBzbyB0aGlzIGFwcHJvYWNoIHRha2VzIG92ZXIgdGhlIHVybCBwYXJhbSB3cml0aW5nIGNvbXBsZXRlbHkuXHJcbiAgICAgIC8vIFNlZTogaHR0cDovL3ZpY3RvcmJsb2cuY29tLzIwMTIvMTIvMjAvbWFrZS1hbmd1bGFyanMtaHR0cC1zZXJ2aWNlLWJlaGF2ZS1saWtlLWpxdWVyeS1hamF4L1xyXG4gICAgICBuZ0NvbmZpZy51cmwgPSBhcHBlbmRRdWVyeVN0cmluZ1BhcmFtZXRlcihuZ0NvbmZpZy51cmwsIGVuY29kZVBhcmFtcyhjb25maWcucGFyYW1zKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNvbmZpZy5kYXRhKSB7XHJcbiAgICAgIG5nQ29uZmlnLmRhdGEgPSBjb25maWcuZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWNvcmUuaXNFbXB0eSh0aGlzLmRlZmF1bHRTZXR0aW5ncykpIHtcclxuICAgICAgbGV0IGNvbXBvc2l0ZUNvbmZpZyA9IGNvcmUuZXh0ZW5kKHt9LCB0aGlzLmRlZmF1bHRTZXR0aW5ncyk7XHJcbiAgICAgIG5nQ29uZmlnID0gY29yZS5leHRlbmQoY29tcG9zaXRlQ29uZmlnLCBuZ0NvbmZpZykgYXMgYW55O1xyXG4gICAgICAvLyBleHRlbmQgaXMgc2hhbGxvdzsgZXh0ZW5kIGhlYWRlcnMgc2VwYXJhdGVseVxyXG4gICAgICBsZXQgaGVhZGVycyA9IGNvcmUuZXh0ZW5kKHt9LCB0aGlzLmRlZmF1bHRTZXR0aW5ncy5oZWFkZXJzKTsgLy8gY29weSBkZWZhdWx0IGhlYWRlcnMgMXN0XHJcbiAgICAgIG5nQ29uZmlnLmhlYWRlcnMgPSBjb3JlLmV4dGVuZChoZWFkZXJzLCBuZ0NvbmZpZy5oZWFkZXJzKTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcmVxdWVzdEluZm8gPSB7XHJcbiAgICAgIGFkYXB0ZXI6IHRoaXMsICAgICAgLy8gdGhpcyBhZGFwdGVyXHJcbiAgICAgIGNvbmZpZzogbmdDb25maWcsICAgLy8gYW5ndWxhcidzICRodHRwIGNvbmZpZ3VyYXRpb24gb2JqZWN0XHJcbiAgICAgIGRzYUNvbmZpZzogY29uZmlnLCAgLy8gdGhlIGNvbmZpZyBhcmcgZnJvbSB0aGUgY2FsbGluZyBCcmVlemUgRGF0YVNlcnZpY2VBZGFwdGVyXHJcbiAgICAgIHN1Y2Nlc3M6IHN1Y2Nlc3NGbiwgLy8gYWRhcHRlcidzIHN1Y2Nlc3MgY2FsbGJhY2tcclxuICAgICAgZXJyb3I6IGVycm9yRm4sICAgICAgLy8gYWRhcHRlcidzIGVycm9yIGNhbGxiYWNrXHJcbiAgICAgIHJlc3BvbnNlU3VjY2VzczogcmVzcG9uc2VTdWNjZXNzRm4sIC8vIGFkYXB0ZXIncyBzdWNjZXNzIGNhbGxiYWNrIChuZyAxLjYrKVxyXG4gICAgICByZXNwb25zZUVycm9yOiByZXNwb25zZUVycm9yRm4gICAgICAvLyBhZGFwdGVyJ3MgZXJyb3IgY2FsbGJhY2sgKG5nIDEuNispXHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChjb3JlLmlzRnVuY3Rpb24odGhpcy5yZXF1ZXN0SW50ZXJjZXB0b3IpKSB7XHJcbiAgICAgIGxldCByaSA9IHRoaXMucmVxdWVzdEludGVyY2VwdG9yIGFzIGFueTtcclxuICAgICAgcmkocmVxdWVzdEluZm8pO1xyXG4gICAgICBpZiAocmkub25lVGltZSkge1xyXG4gICAgICAgIHRoaXMucmVxdWVzdEludGVyY2VwdG9yID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHJlcXVlc3RJbmZvLmNvbmZpZykgeyAvLyBleGlzdHMgdW5sZXNzIHJlcXVlc3RJbnRlcmNlcHRvciBraWxsZWQgaXQuXHJcbiAgICAgIGxldCBwcm9tID0gdGhpcy4kaHR0cChyZXF1ZXN0SW5mby5jb25maWcpO1xyXG4gICAgICBpZiAocHJvbS5zdWNjZXNzKSB7XHJcbiAgICAgICAgLy8gcmVzcG9uc2UgZm9yIG5nIDwgMS42ICAgICAgICBcclxuICAgICAgICBwcm9tLnN1Y2Nlc3MocmVxdWVzdEluZm8uc3VjY2VzcykuZXJyb3IocmVxdWVzdEluZm8uZXJyb3IpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIHJlc3BvbnNlIGZvciBuZyAxLjYrXHJcbiAgICAgICAgcHJvbS50aGVuKHJlcXVlc3RJbmZvLnJlc3BvbnNlU3VjY2VzcykuY2F0Y2gocmVxdWVzdEluZm8ucmVzcG9uc2VFcnJvcik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy4kcm9vdFNjb3BlICYmIHRoaXMuJHJvb3RTY29wZS4kZGlnZXN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gcmVzcG9uc2VTdWNjZXNzRm4ocmVzcG9uc2U6IGFueSkge1xyXG4gICAgICByZXR1cm4gc3VjY2Vzc0ZuKHJlc3BvbnNlLmRhdGEsIHJlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2UuaGVhZGVycywgcmVzcG9uc2UuY29uZmlnLCByZXNwb25zZS5zdGF0dXNUZXh0KTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBzdWNjZXNzRm4oZGF0YTogYW55LCBzdGF0dXM6IGFueSwgaGVhZGVyczogYW55LCB4Y29uZmlnOiBhbnksIHN0YXR1c1RleHQ6IHN0cmluZykge1xyXG4gICAgICAvLyBIQUNLOiBiZWNhdXNlICRodHRwIHJldHVybnMgYSBzZXJ2ZXIgc2lkZSBudWxsIGFzIGEgc3RyaW5nIGNvbnRhaW5pbmcgXCJudWxsXCIgLSB0aGlzIGlzIFdST05HLlxyXG4gICAgICBpZiAoZGF0YSA9PT0gXCJudWxsXCIpIGRhdGEgPSBudWxsO1xyXG4gICAgICBsZXQgaHR0cFJlc3BvbnNlID0ge1xyXG4gICAgICAgIGNvbmZpZzogY29uZmlnLFxyXG4gICAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgICAgZ2V0SGVhZGVyczogaGVhZGVycyxcclxuICAgICAgICBuZ0NvbmZpZzogeGNvbmZpZyxcclxuICAgICAgICBzdGF0dXM6IHN0YXR1cyxcclxuICAgICAgICBzdGF0dXNUZXh0OiBzdGF0dXNUZXh0XHJcbiAgICAgIH07XHJcbiAgICAgIGNvbmZpZy5zdWNjZXNzKGh0dHBSZXNwb25zZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gcmVzcG9uc2VFcnJvckZuKHJlc3BvbnNlOiBhbnkpIHtcclxuICAgICAgcmV0dXJuIGVycm9yRm4ocmVzcG9uc2UuZGF0YSwgcmVzcG9uc2Uuc3RhdHVzLCByZXNwb25zZS5oZWFkZXJzLCByZXNwb25zZS5jb25maWcsIHJlc3BvbnNlLnN0YXR1c1RleHQpO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGVycm9yRm4oZGF0YTogYW55LCBzdGF0dXM6IGFueSwgaGVhZGVyczogYW55LCB4Y29uZmlnOiBhbnksIHN0YXR1c1RleHQ6IHN0cmluZykge1xyXG4gICAgICAvLyBUaW1lb3V0IGFwcGVhcnMgYXMgYW4gZXJyb3Igd2l0aCBzdGF0dXM9PT0wIGFuZCBubyBkYXRhLlxyXG4gICAgICAvLyBNYWtlIGl0IGJldHRlclxyXG4gICAgICBpZiAoc3RhdHVzID09PSAwICYmIGRhdGEgPT0gbnVsbCkge1xyXG4gICAgICAgIGRhdGEgPSAndGltZW91dCc7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGh0dHBSZXNwb25zZSA9IHtcclxuICAgICAgICBjb25maWc6IGNvbmZpZyxcclxuICAgICAgICBkYXRhOiBkYXRhLFxyXG4gICAgICAgIGdldEhlYWRlcnM6IGhlYWRlcnMsXHJcbiAgICAgICAgbmdDb25maWc6IHhjb25maWcsXHJcbiAgICAgICAgc3RhdHVzOiBzdGF0dXMsXHJcbiAgICAgICAgc3RhdHVzVGV4dDogc3RhdHVzVGV4dFxyXG4gICAgICB9O1xyXG4gICAgICBjb25maWcuZXJyb3IoaHR0cFJlc3BvbnNlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmNvbmZpZy5yZWdpc3RlckFkYXB0ZXIoXCJhamF4XCIsIEFqYXhBbmd1bGFyanNBZGFwdGVyKTtcclxuIl19
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/** Appends parameter to url, with appropriate delimiter */
|
|
2
|
+
export function appendQueryStringParameter(url, parameter) {
|
|
3
|
+
if (!parameter)
|
|
4
|
+
return url;
|
|
5
|
+
let separator = url.endsWith("?") ? "" : url.includes("?") ? "&" : "?";
|
|
6
|
+
return url + separator + parameter;
|
|
7
|
+
}
|
|
8
|
+
/** Encodes the object into query string parameters */
|
|
9
|
+
export function encodeParams(obj) {
|
|
10
|
+
let query = '';
|
|
11
|
+
let subValue, innerObj, fullSubName;
|
|
12
|
+
for (let name in obj) {
|
|
13
|
+
if (!obj.hasOwnProperty(name)) {
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
let value = obj[name];
|
|
17
|
+
if (value instanceof Array) {
|
|
18
|
+
for (let i = 0; i < value.length; ++i) {
|
|
19
|
+
subValue = value[i];
|
|
20
|
+
fullSubName = name + '[' + i + ']';
|
|
21
|
+
innerObj = {};
|
|
22
|
+
innerObj[fullSubName] = subValue;
|
|
23
|
+
query += encodeParams(innerObj) + '&';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else if (value && value.toISOString) { // a feature of Date-like things
|
|
27
|
+
query += encodeURIComponent(name) + '=' + encodeURIComponent(value.toISOString()) + '&';
|
|
28
|
+
}
|
|
29
|
+
else if (value instanceof Object) {
|
|
30
|
+
for (let subName in value) {
|
|
31
|
+
if (obj.hasOwnProperty(name)) {
|
|
32
|
+
subValue = value[subName];
|
|
33
|
+
fullSubName = name + '[' + subName + ']';
|
|
34
|
+
innerObj = {};
|
|
35
|
+
innerObj[fullSubName] = subValue;
|
|
36
|
+
query += encodeParams(innerObj) + '&';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else if (value === null) {
|
|
41
|
+
query += encodeURIComponent(name) + '=&';
|
|
42
|
+
}
|
|
43
|
+
else if (value !== undefined) {
|
|
44
|
+
query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return query.length ? query.substr(0, query.length - 1) : query;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci1jb3JlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC9hZGFwdGVyLWFqYXgtYW5ndWxhcmpzLyIsInNvdXJjZXMiOlsiYWRhcHRlci1jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDJEQUEyRDtBQUMzRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsR0FBVyxFQUFFLFNBQWlCO0lBQ3ZFLElBQUksQ0FBQyxTQUFTO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFFM0IsSUFBSSxTQUFTLEdBQUcsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztJQUV2RSxPQUFPLEdBQUcsR0FBRyxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQ3JDLENBQUM7QUFFRCxzREFBc0Q7QUFDdEQsTUFBTSxVQUFVLFlBQVksQ0FBQyxHQUFPO0lBQ2xDLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNmLElBQUksUUFBYSxFQUFFLFFBQWEsRUFBRSxXQUFnQixDQUFDO0lBRW5ELEtBQUssSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFO1FBQ3BCLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQUUsU0FBUztTQUFFO1FBRTVDLElBQUksS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0QixJQUFJLEtBQUssWUFBWSxLQUFLLEVBQUU7WUFDMUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLFdBQVcsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQ25DLFFBQVEsR0FBRyxFQUFFLENBQUM7Z0JBQ2QsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFFBQVEsQ0FBQztnQkFDakMsS0FBSyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUM7YUFDdkM7U0FDRjthQUFNLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxnQ0FBZ0M7WUFDdkUsS0FBSyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDekY7YUFBTSxJQUFJLEtBQUssWUFBWSxNQUFNLEVBQUU7WUFDbEMsS0FBSyxJQUFJLE9BQU8sSUFBSSxLQUFLLEVBQUU7Z0JBQ3pCLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDNUIsUUFBUSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDMUIsV0FBVyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsT0FBTyxHQUFHLEdBQUcsQ0FBQztvQkFDekMsUUFBUSxHQUFHLEVBQUUsQ0FBQztvQkFDZCxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsUUFBUSxDQUFDO29CQUNqQyxLQUFLLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQztpQkFDdkM7YUFDRjtTQUNGO2FBQU0sSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO1lBQ3pCLEtBQUssSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDMUM7YUFBTSxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDOUIsS0FBSyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7U0FDM0U7S0FDRjtJQUVELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ2xFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQXBwZW5kcyBwYXJhbWV0ZXIgdG8gdXJsLCB3aXRoIGFwcHJvcHJpYXRlIGRlbGltaXRlciAqL1xyXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kUXVlcnlTdHJpbmdQYXJhbWV0ZXIodXJsOiBzdHJpbmcsIHBhcmFtZXRlcjogc3RyaW5nKSB7XHJcbiAgaWYgKCFwYXJhbWV0ZXIpIHJldHVybiB1cmw7XHJcblxyXG4gIGxldCBzZXBhcmF0b3IgPSB1cmwuZW5kc1dpdGgoXCI/XCIpID8gXCJcIiA6IHVybC5pbmNsdWRlcyhcIj9cIikgPyBcIiZcIiA6IFwiP1wiO1xyXG5cclxuICByZXR1cm4gdXJsICsgc2VwYXJhdG9yICsgcGFyYW1ldGVyO1xyXG59XHJcblxyXG4vKiogRW5jb2RlcyB0aGUgb2JqZWN0IGludG8gcXVlcnkgc3RyaW5nIHBhcmFtZXRlcnMgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGVuY29kZVBhcmFtcyhvYmo6IHt9KSB7XHJcbiAgbGV0IHF1ZXJ5ID0gJyc7XHJcbiAgbGV0IHN1YlZhbHVlOiBhbnksIGlubmVyT2JqOiBhbnksIGZ1bGxTdWJOYW1lOiBhbnk7XHJcblxyXG4gIGZvciAobGV0IG5hbWUgaW4gb2JqKSB7XHJcbiAgICBpZiAoIW9iai5oYXNPd25Qcm9wZXJ0eShuYW1lKSkgeyBjb250aW51ZTsgfVxyXG5cclxuICAgIGxldCB2YWx1ZSA9IG9ialtuYW1lXTtcclxuXHJcbiAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgKytpKSB7XHJcbiAgICAgICAgc3ViVmFsdWUgPSB2YWx1ZVtpXTtcclxuICAgICAgICBmdWxsU3ViTmFtZSA9IG5hbWUgKyAnWycgKyBpICsgJ10nO1xyXG4gICAgICAgIGlubmVyT2JqID0ge307XHJcbiAgICAgICAgaW5uZXJPYmpbZnVsbFN1Yk5hbWVdID0gc3ViVmFsdWU7XHJcbiAgICAgICAgcXVlcnkgKz0gZW5jb2RlUGFyYW1zKGlubmVyT2JqKSArICcmJztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh2YWx1ZSAmJiB2YWx1ZS50b0lTT1N0cmluZykgeyAvLyBhIGZlYXR1cmUgb2YgRGF0ZS1saWtlIHRoaW5nc1xyXG4gICAgICBxdWVyeSArPSBlbmNvZGVVUklDb21wb25lbnQobmFtZSkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUudG9JU09TdHJpbmcoKSkgKyAnJic7XHJcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgT2JqZWN0KSB7XHJcbiAgICAgIGZvciAobGV0IHN1Yk5hbWUgaW4gdmFsdWUpIHtcclxuICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KG5hbWUpKSB7XHJcbiAgICAgICAgICBzdWJWYWx1ZSA9IHZhbHVlW3N1Yk5hbWVdO1xyXG4gICAgICAgICAgZnVsbFN1Yk5hbWUgPSBuYW1lICsgJ1snICsgc3ViTmFtZSArICddJztcclxuICAgICAgICAgIGlubmVyT2JqID0ge307XHJcbiAgICAgICAgICBpbm5lck9ialtmdWxsU3ViTmFtZV0gPSBzdWJWYWx1ZTtcclxuICAgICAgICAgIHF1ZXJ5ICs9IGVuY29kZVBhcmFtcyhpbm5lck9iaikgKyAnJic7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHZhbHVlID09PSBudWxsKSB7XHJcbiAgICAgIHF1ZXJ5ICs9IGVuY29kZVVSSUNvbXBvbmVudChuYW1lKSArICc9Jic7XHJcbiAgICB9IGVsc2UgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgcXVlcnkgKz0gZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSArICcmJztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBxdWVyeS5sZW5ndGggPyBxdWVyeS5zdWJzdHIoMCwgcXVlcnkubGVuZ3RoIC0gMSkgOiBxdWVyeTtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './adapter-ajax-angularjs';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlZXplLWNsaWVudC1hZGFwdGVyLWFqYXgtYW5ndWxhcmpzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC9hZGFwdGVyLWFqYXgtYW5ndWxhcmpzLyIsInNvdXJjZXMiOlsiYnJlZXplLWNsaWVudC1hZGFwdGVyLWFqYXgtYW5ndWxhcmpzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9hZGFwdGVyLWFqYXgtYW5ndWxhcmpzJztcbiJdfQ==
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { config, core } from 'breeze-client';
|
|
2
|
+
import { appendQueryStringParameter, encodeParams } from './adapter-core';
|
|
3
|
+
/** Breeze AJAX adapter using fetch API
|
|
4
|
+
* See https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
|
|
5
|
+
*/
|
|
6
|
+
export class AjaxFetchAdapter {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.name = AjaxFetchAdapter.adapterName;
|
|
9
|
+
this.defaultSettings = {};
|
|
10
|
+
this.requestInterceptor = undefined;
|
|
11
|
+
}
|
|
12
|
+
static register(breezeConfig) {
|
|
13
|
+
breezeConfig = breezeConfig || config;
|
|
14
|
+
breezeConfig.registerAdapter("ajax", AjaxFetchAdapter);
|
|
15
|
+
return breezeConfig.initializeAdapterInstance("ajax", AjaxFetchAdapter.adapterName, true);
|
|
16
|
+
}
|
|
17
|
+
initialize() {
|
|
18
|
+
}
|
|
19
|
+
ajax(config) {
|
|
20
|
+
if (!fetch) {
|
|
21
|
+
throw new Error("fetch API not supported in this browser");
|
|
22
|
+
}
|
|
23
|
+
let init = {
|
|
24
|
+
method: config.type,
|
|
25
|
+
mode: 'cors',
|
|
26
|
+
cache: 'no-cache',
|
|
27
|
+
credentials: 'include',
|
|
28
|
+
headers: {
|
|
29
|
+
'Content-Type': config.contentType || 'application/json',
|
|
30
|
+
},
|
|
31
|
+
redirect: 'follow',
|
|
32
|
+
referrer: 'client',
|
|
33
|
+
};
|
|
34
|
+
if (config.type !== "GET" && config.type !== "HEAD") {
|
|
35
|
+
// body data type must match "Content-Type" header
|
|
36
|
+
// let data = config.params || config.data;
|
|
37
|
+
let data = config.data;
|
|
38
|
+
if (typeof (data) !== "string") {
|
|
39
|
+
data = JSON.stringify(data);
|
|
40
|
+
}
|
|
41
|
+
init.body = data;
|
|
42
|
+
}
|
|
43
|
+
let url = config.url;
|
|
44
|
+
if (!core.isEmpty(config.params)) {
|
|
45
|
+
// Hack: Not sure how Fetch handles writing 'search' parameters to the url.
|
|
46
|
+
// so this approach takes over the url param writing completely.
|
|
47
|
+
url = appendQueryStringParameter(url, encodeParams(config.params));
|
|
48
|
+
}
|
|
49
|
+
if (!core.isEmpty(this.defaultSettings)) {
|
|
50
|
+
let compositeConfig = core.extend({}, this.defaultSettings);
|
|
51
|
+
init = core.extend(compositeConfig, init);
|
|
52
|
+
// extend is shallow; extend headers separately
|
|
53
|
+
let headers = core.extend({}, this.defaultSettings.headers); // copy default headers 1st
|
|
54
|
+
init.headers = core.extend(headers, init.headers);
|
|
55
|
+
}
|
|
56
|
+
let requestInfo = {
|
|
57
|
+
adapter: this,
|
|
58
|
+
config: init,
|
|
59
|
+
dsaConfig: config,
|
|
60
|
+
success: successFn,
|
|
61
|
+
error: errorFn,
|
|
62
|
+
};
|
|
63
|
+
if (core.isFunction(this.requestInterceptor)) {
|
|
64
|
+
let ri = this.requestInterceptor;
|
|
65
|
+
ri(requestInfo);
|
|
66
|
+
if (ri.oneTime) {
|
|
67
|
+
this.requestInterceptor = undefined;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (requestInfo.config) { // exists unless requestInterceptor killed it.
|
|
71
|
+
fetch(url, requestInfo.config).then(response => {
|
|
72
|
+
if (!response.ok) {
|
|
73
|
+
response.text().then(s => {
|
|
74
|
+
requestInfo.error(response.status, response.statusText, s, response, null);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
response.json().then(j => {
|
|
79
|
+
requestInfo.success(j, response.statusText, response);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}).catch(err => {
|
|
83
|
+
requestInfo.error(0, err && err.message || err, null, null, err);
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
function successFn(data, statusText, response) {
|
|
87
|
+
let httpResponse = {
|
|
88
|
+
config: config,
|
|
89
|
+
data: data,
|
|
90
|
+
getHeaders: getHeadersFn(response),
|
|
91
|
+
status: response.status,
|
|
92
|
+
statusText: statusText
|
|
93
|
+
};
|
|
94
|
+
config.success(httpResponse);
|
|
95
|
+
}
|
|
96
|
+
function errorFn(status, statusText, body, response, errorThrown) {
|
|
97
|
+
let httpResponse = {
|
|
98
|
+
config: config,
|
|
99
|
+
data: body,
|
|
100
|
+
error: errorThrown || statusText,
|
|
101
|
+
getHeaders: getHeadersFn(response),
|
|
102
|
+
status: status,
|
|
103
|
+
statusText: statusText
|
|
104
|
+
};
|
|
105
|
+
config.error(httpResponse);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
AjaxFetchAdapter.adapterName = "fetch";
|
|
110
|
+
config.registerAdapter("ajax", AjaxFetchAdapter);
|
|
111
|
+
function getHeadersFn(response) {
|
|
112
|
+
if (!response || response.status === 0) { // timeout or abort; no headers
|
|
113
|
+
return function (headerName) {
|
|
114
|
+
return (headerName && headerName.length > 0) ? "" : {};
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
return function (headerName) {
|
|
119
|
+
if (headerName && headerName.length > 0) {
|
|
120
|
+
return response.headers.get(headerName);
|
|
121
|
+
}
|
|
122
|
+
let hob = {};
|
|
123
|
+
response.headers.forEach((val, key) => {
|
|
124
|
+
hob[key] = val;
|
|
125
|
+
});
|
|
126
|
+
return hob;
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci1hamF4LWZldGNoLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC9hZGFwdGVyLWFqYXgtZmV0Y2gvIiwic291cmNlcyI6WyJhZGFwdGVyLWFqYXgtZmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVHLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRTs7RUFFRTtBQUNGLE1BQU0sT0FBTyxnQkFBZ0I7SUFNM0I7UUFDRSxJQUFJLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztRQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUcsQ0FBQztRQUMzQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFlBQTJCO1FBQ3pDLFlBQVksR0FBRyxZQUFZLElBQUksTUFBTSxDQUFDO1FBQ3RDLFlBQVksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDdkQsT0FBTyxZQUFZLENBQUMseUJBQXlCLENBQUMsTUFBTSxFQUFFLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQXFCLENBQUM7SUFDaEgsQ0FBQztJQUVELFVBQVU7SUFDVixDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQWtCO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDVixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7U0FDNUQ7UUFFRCxJQUFJLElBQUksR0FBZ0I7WUFDdEIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ25CLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLFVBQVU7WUFDakIsV0FBVyxFQUFFLFNBQVM7WUFDdEIsT0FBTyxFQUFFO2dCQUNQLGNB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Q3RDLElBQUksQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsRUFBRSwrQkFBK0I7UUFDdkUsT0FBTyxVQUFVLFVBQWtCO1lBQ2pDLE9BQU8sQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDekQsQ0FBQyxDQUFDO0tBQ0g7U0FBTTtRQUNMLE9BQU8sVUFBVSxVQUFrQjtZQUNqQyxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDdkMsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QztZQUNELElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNiLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO2dCQUNwQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1lBQ2pCLENBQUMsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUM7S0FDSDtBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBamF4QWRhcHRlciwgQWpheENvbmZpZywgQWpheFJlcXVlc3RJbnRlcmNlcHRvciwgQnJlZXplQ29uZmlnLCBjb25maWcsIGNvcmUgfSBmcm9tICdicmVlemUtY2xpZW50JztcclxuaW1wb3J0IHsgYXBwZW5kUXVlcnlTdHJpbmdQYXJhbWV0ZXIsIGVuY29kZVBhcmFtcyB9IGZyb20gJy4vYWRhcHRlci1jb3JlJztcclxuXHJcbi8qKiBCcmVlemUgQUpBWCBhZGFwdGVyIHVzaW5nIGZldGNoIEFQSSBcclxuICogU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9GZXRjaF9BUEkvVXNpbmdfRmV0Y2hcclxuKi9cclxuZXhwb3J0IGNsYXNzIEFqYXhGZXRjaEFkYXB0ZXIgaW1wbGVtZW50cyBBamF4QWRhcHRlciB7XHJcbiAgc3RhdGljIGFkYXB0ZXJOYW1lID0gXCJmZXRjaFwiO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBkZWZhdWx0U2V0dGluZ3M6IHsgaGVhZGVycz86IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9IH07XHJcbiAgcmVxdWVzdEludGVyY2VwdG9yPzogQWpheFJlcXVlc3RJbnRlcmNlcHRvcjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLm5hbWUgPSBBamF4RmV0Y2hBZGFwdGVyLmFkYXB0ZXJOYW1lO1xyXG4gICAgdGhpcy5kZWZhdWx0U2V0dGluZ3MgPSB7IH07XHJcbiAgICB0aGlzLnJlcXVlc3RJbnRlcmNlcHRvciA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyByZWdpc3RlcihicmVlemVDb25maWc/OiBCcmVlemVDb25maWcpIHtcclxuICAgIGJyZWV6ZUNvbmZpZyA9IGJyZWV6ZUNvbmZpZyB8fCBjb25maWc7XHJcbiAgICBicmVlemVDb25maWcucmVnaXN0ZXJBZGFwdGVyKFwiYWpheFwiLCBBamF4RmV0Y2hBZGFwdGVyKTtcclxuICAgIHJldHVybiBicmVlemVDb25maWcuaW5pdGlhbGl6ZUFkYXB0ZXJJbnN0YW5jZShcImFqYXhcIiwgQWpheEZldGNoQWRhcHRlci5hZGFwdGVyTmFtZSwgdHJ1ZSkgYXMgQWpheEZldGNoQWRhcHRlcjtcclxuICB9XHJcblxyXG4gIGluaXRpYWxpemUoKSB7XHJcbiAgfVxyXG5cclxuICBhamF4KGNvbmZpZzogQWpheENvbmZpZykge1xyXG4gICAgaWYgKCFmZXRjaCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmZXRjaCBBUEkgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXJcIik7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGluaXQ6IFJlcXVlc3RJbml0ID0ge1xyXG4gICAgICBtZXRob2Q6IGNvbmZpZy50eXBlLCAvLyAqR0VULCBQT1NULCBQVVQsIERFTEVURSwgZXRjLlxyXG4gICAgICBtb2RlOiAnY29ycycsIC8vIG5vLWNvcnMsICpjb3JzLCBzYW1lLW9yaWdpblxyXG4gICAgICBjYWNoZTogJ25vLWNhY2hlJywgLy8gKmRlZmF1bHQsIG5vLWNhY2hlLCByZWxvYWQsIGZvcmNlLWNhY2hlLCBvbmx5LWlmLWNhY2hlZFxyXG4gICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLCAvLyBpbmNsdWRlLCAqc2FtZS1vcmlnaW4sIG9taXRcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICdDb250ZW50LVR5cGUnOiBjb25maWcuY29udGVudFR5cGUgfHwgJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgIC8vIC4uLmNvbmZpZy5oZWFkZXJzXHJcbiAgICAgICAgLy8gJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxyXG4gICAgICB9LFxyXG4gICAgICByZWRpcmVjdDogJ2ZvbGxvdycsIC8vIG1hbnVhbCwgKmZvbGxvdywgZXJyb3JcclxuICAgICAgcmVmZXJyZXI6ICdjbGllbnQnLCAvLyBuby1yZWZlcnJlciwgKmNsaWVudFxyXG4gICAgfTtcclxuICAgIGlmIChjb25maWcudHlwZSAhPT0gXCJHRVRcIiAmJiBjb25maWcudHlwZSAhPT0gXCJIRUFEXCIpIHtcclxuICAgICAgLy8gYm9keSBkYXRhIHR5cGUgbXVzdCBtYXRjaCBcIkNvbnRlbnQtVHlwZVwiIGhlYWRlclxyXG4gICAgICAvLyBsZXQgZGF0YSA9IGNvbmZpZy5wYXJhbXMgfHwgY29uZmlnLmRhdGE7XHJcbiAgICAgIGxldCBkYXRhID0gY29uZmlnLmRhdGE7XHJcbiAgICAgIGlmICh0eXBlb2YoZGF0YSkgIT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICBkYXRhID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XHJcbiAgICAgIH1cclxuICAgICAgaW5pdC5ib2R5ID0gZGF0YTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgdXJsID0gY29uZmlnLnVybDtcclxuICAgIGlmICghY29yZS5pc0VtcHR5KGNvbmZpZy5wYXJhbXMpKSB7XHJcbiAgICAgIC8vIEhhY2s6IE5vdCBzdXJlIGhvdyBGZXRjaCBoYW5kbGVzIHdyaXRpbmcgJ3NlYXJjaCcgcGFyYW1ldGVycyB0byB0aGUgdXJsLlxyXG4gICAgICAvLyBzbyB0aGlzIGFwcHJvYWNoIHRha2VzIG92ZXIgdGhlIHVybCBwYXJhbSB3cml0aW5nIGNvbXBsZXRlbHkuXHJcbiAgICAgIHVybCA9IGFwcGVuZFF1ZXJ5U3RyaW5nUGFyYW1ldGVyKHVybCwgZW5jb2RlUGFyYW1zKGNvbmZpZy5wYXJhbXMpKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWNvcmUuaXNFbXB0eSh0aGlzLmRlZmF1bHRTZXR0aW5ncykpIHtcclxuICAgICAgbGV0IGNvbXBvc2l0ZUNvbmZpZyA9IGNvcmUuZXh0ZW5kKHt9LCB0aGlzLmRlZmF1bHRTZXR0aW5ncyk7XHJcbiAgICAgIGluaXQgPSBjb3JlLmV4dGVuZChjb21wb3NpdGVDb25maWcsIGluaXQpIGFzIGFueTtcclxuICAgICAgLy8gZXh0ZW5kIGlzIHNoYWxsb3c7IGV4dGVuZCBoZWFkZXJzIHNlcGFyYXRlbHlcclxuICAgICAgbGV0IGhlYWRlcnMgPSBjb3JlLmV4dGVuZCh7fSwgdGhpcy5kZWZhdWx0U2V0dGluZ3MuaGVhZGVycyk7IC8vIGNvcHkgZGVmYXVsdCBoZWFkZXJzIDFzdFxyXG4gICAgICBpbml0LmhlYWRlcnMgPSBjb3JlLmV4dGVuZChoZWFkZXJzLCBpbml0LmhlYWRlcnMpIGFzIGFueTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcmVxdWVzdEluZm8gPSB7XHJcbiAgICAgIGFkYXB0ZXI6IHRoaXMsICAgICAgLy8gdGhpcyBhZGFwdGVyXHJcbiAgICAgIGNvbmZpZzogaW5pdCwgICAvLyBmZXRjaCBhcGkgJ2luaXQnIG9iamVjdFxyXG4gICAgICBkc2FDb25maWc6IGNvbmZpZywgIC8vIHRoZSBjb25maWcgYXJnIGZyb20gdGhlIGNhbGxpbmcgQnJlZXplIERhdGFTZXJ2aWNlQWRhcHRlclxyXG4gICAgICBzdWNjZXNzOiBzdWNjZXNzRm4sIC8vIGFkYXB0ZXIncyBzdWNjZXNzIGNhbGxiYWNrXHJcbiAgICAgIGVycm9yOiBlcnJvckZuLCAgICAgIC8vIGFkYXB0ZXIncyBlcnJvciBjYWxsYmFja1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoY29yZS5pc0Z1bmN0aW9uKHRoaXMucmVxdWVzdEludGVyY2VwdG9yKSkge1xyXG4gICAgICBsZXQgcmkgPSB0aGlzLnJlcXVlc3RJbnRlcmNlcHRvciBhcyBhbnk7XHJcbiAgICAgIHJpKHJlcXVlc3RJbmZvKTtcclxuICAgICAgaWYgKHJpLm9uZVRpbWUpIHtcclxuICAgICAgICB0aGlzLnJlcXVlc3RJbnRlcmNlcHRvciA9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZXF1ZXN0SW5mby5jb25maWcpIHsgLy8gZXhpc3RzIHVubGVzcyByZXF1ZXN0SW50ZXJjZXB0b3Iga2lsbGVkIGl0LlxyXG4gICAgICBmZXRjaCh1cmwsIHJlcXVlc3RJbmZvLmNvbmZpZykudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xyXG4gICAgICAgICAgcmVzcG9uc2UudGV4dCgpLnRoZW4ocyA9PiB7XHJcbiAgICAgICAgICAgIHJlcXVlc3RJbmZvLmVycm9yKHJlc3BvbnNlLnN0YXR1cywgcmVzcG9uc2Uuc3RhdHVzVGV4dCwgcywgcmVzcG9uc2UsIG51bGwpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc3BvbnNlLmpzb24oKS50aGVuKGogPT4ge1xyXG4gICAgICAgICAgICByZXF1ZXN0SW5mby5zdWNjZXNzKGosIHJlc3BvbnNlLnN0YXR1c1RleHQsIHJlc3BvbnNlKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkuY2F0Y2goZXJyID0+IHtcclxuICAgICAgICByZXF1ZXN0SW5mby5lcnJvcigwLCBlcnIgJiYgZXJyLm1lc3NhZ2UgfHwgZXJyLCBudWxsLCBudWxsLCBlcnIpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBzdWNjZXNzRm4oZGF0YTogYW55LCBzdGF0dXNUZXh0OiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSkge1xyXG4gICAgICBsZXQgaHR0cFJlc3BvbnNlID0ge1xyXG4gICAgICAgIGNvbmZpZzogY29uZmlnLFxyXG4gICAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgICAgZ2V0SGVhZGVyczogZ2V0SGVhZGVyc0ZuKHJlc3BvbnNlKSxcclxuICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLnN0YXR1cyxcclxuICAgICAgICBzdGF0dXNUZXh0OiBzdGF0dXNUZXh0XHJcbiAgICAgIH07XHJcbiAgICAgIGNvbmZpZy5zdWNjZXNzKGh0dHBSZXNwb25zZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZXJyb3JGbihzdGF0dXM6IG51bWJlciwgc3RhdHVzVGV4dDogc3RyaW5nLCBib2R5OiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSwgZXJyb3JUaHJvd246IGFueSkge1xyXG4gICAgICBsZXQgaHR0cFJlc3BvbnNlID0ge1xyXG4gICAgICAgIGNvbmZpZzogY29uZmlnLFxyXG4gICAgICAgIGRhdGE6IGJvZHksXHJcbiAgICAgICAgZXJyb3I6IGVycm9yVGhyb3duIHx8IHN0YXR1c1RleHQsXHJcbiAgICAgICAgZ2V0SGVhZGVyczogZ2V0SGVhZGVyc0ZuKHJlc3BvbnNlKSxcclxuICAgICAgICBzdGF0dXM6IHN0YXR1cyxcclxuICAgICAgICBzdGF0dXNUZXh0OiBzdGF0dXNUZXh0XHJcbiAgICAgIH07XHJcbiAgICAgIGNvbmZpZy5lcnJvcihodHRwUmVzcG9uc2UpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuY29uZmlnLnJlZ2lzdGVyQWRhcHRlcihcImFqYXhcIiwgQWpheEZldGNoQWRhcHRlcik7XHJcblxyXG5mdW5jdGlvbiBnZXRIZWFkZXJzRm4ocmVzcG9uc2U6IFJlc3BvbnNlKTogYW55IHtcclxuICBpZiAoIXJlc3BvbnNlIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gMCkgeyAvLyB0aW1lb3V0IG9yIGFib3J0OyBubyBoZWFkZXJzXHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKGhlYWRlck5hbWU6IHN0cmluZykge1xyXG4gICAgICByZXR1cm4gKGhlYWRlck5hbWUgJiYgaGVhZGVyTmFtZS5sZW5ndGggPiAwKSA/IFwiXCIgOiB7fTtcclxuICAgIH07XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAoaGVhZGVyTmFtZTogc3RyaW5nKSB7XHJcbiAgICAgIGlmIChoZWFkZXJOYW1lICYmIGhlYWRlck5hbWUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZS5oZWFkZXJzLmdldChoZWFkZXJOYW1lKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgaG9iID0ge307XHJcbiAgICAgIHJlc3BvbnNlLmhlYWRlcnMuZm9yRWFjaCgodmFsLCBrZXkpID0+IHtcclxuICAgICAgICBob2Jba2V5XSA9IHZhbDtcclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiBob2I7XHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/** Appends parameter to url, with appropriate delimiter */
|
|
2
|
+
export function appendQueryStringParameter(url, parameter) {
|
|
3
|
+
if (!parameter)
|
|
4
|
+
return url;
|
|
5
|
+
let separator = url.endsWith("?") ? "" : url.includes("?") ? "&" : "?";
|
|
6
|
+
return url + separator + parameter;
|
|
7
|
+
}
|
|
8
|
+
/** Encodes the object into query string parameters */
|
|
9
|
+
export function encodeParams(obj) {
|
|
10
|
+
let query = '';
|
|
11
|
+
let subValue, innerObj, fullSubName;
|
|
12
|
+
for (let name in obj) {
|
|
13
|
+
if (!obj.hasOwnProperty(name)) {
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
let value = obj[name];
|
|
17
|
+
if (value instanceof Array) {
|
|
18
|
+
for (let i = 0; i < value.length; ++i) {
|
|
19
|
+
subValue = value[i];
|
|
20
|
+
fullSubName = name + '[' + i + ']';
|
|
21
|
+
innerObj = {};
|
|
22
|
+
innerObj[fullSubName] = subValue;
|
|
23
|
+
query += encodeParams(innerObj) + '&';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else if (value && value.toISOString) { // a feature of Date-like things
|
|
27
|
+
query += encodeURIComponent(name) + '=' + encodeURIComponent(value.toISOString()) + '&';
|
|
28
|
+
}
|
|
29
|
+
else if (value instanceof Object) {
|
|
30
|
+
for (let subName in value) {
|
|
31
|
+
if (obj.hasOwnProperty(name)) {
|
|
32
|
+
subValue = value[subName];
|
|
33
|
+
fullSubName = name + '[' + subName + ']';
|
|
34
|
+
innerObj = {};
|
|
35
|
+
innerObj[fullSubName] = subValue;
|
|
36
|
+
query += encodeParams(innerObj) + '&';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else if (value === null) {
|
|
41
|
+
query += encodeURIComponent(name) + '=&';
|
|
42
|
+
}
|
|
43
|
+
else if (value !== undefined) {
|
|
44
|
+
query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return query.length ? query.substr(0, query.length - 1) : query;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci1jb3JlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vYnJlZXplLWNsaWVudC9hZGFwdGVyLWFqYXgtZmV0Y2gvIiwic291cmNlcyI6WyJhZGFwdGVyLWNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkRBQTJEO0FBQzNELE1BQU0sVUFBVSwwQkFBMEIsQ0FBQyxHQUFXLEVBQUUsU0FBaUI7SUFDdkUsSUFBSSxDQUFDLFNBQVM7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUUzQixJQUFJLFNBQVMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0lBRXZFLE9BQU8sR0FBRyxHQUFHLFNBQVMsR0FBRyxTQUFTLENBQUM7QUFDckMsQ0FBQztBQUVELHNEQUFzRDtBQUN0RCxNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQU87SUFDbEMsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ2YsSUFBSSxRQUFhLEVBQUUsUUFBYSxFQUFFLFdBQWdCLENBQUM7SUFFbkQsS0FBSyxJQUFJLElBQUksSUFBSSxHQUFHLEVBQUU7UUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFBRSxTQUFTO1NBQUU7UUFFNUMsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXRCLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtZQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtnQkFDckMsUUFBUSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEIsV0FBVyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztnQkFDbkMsUUFBUSxHQUFHLEVBQUUsQ0FBQztnQkFDZCxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsUUFBUSxDQUFDO2dCQUNqQyxLQUFLLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQzthQUN2QztTQUNGO2FBQU0sSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLGdDQUFnQztZQUN2RSxLQUFLLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUN6RjthQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtZQUNsQyxLQUFLLElBQUksT0FBTyxJQUFJLEtBQUssRUFBRTtnQkFDekIsSUFBSSxHQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFO29CQUM1QixRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUMxQixXQUFXLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxPQUFPLEdBQUcsR0FBRyxDQUFDO29CQUN6QyxRQUFRLEdBQUcsRUFBRSxDQUFDO29CQUNkLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxRQUFRLENBQUM7b0JBQ2pDLEtBQUssSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDO2lCQUN2QzthQUNGO1NBQ0Y7YUFBTSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDekIsS0FBSyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztTQUMxQzthQUFNLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUM5QixLQUFLLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUMzRTtLQUNGO0lBRUQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDbEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBBcHBlbmRzIHBhcmFtZXRlciB0byB1cmwsIHdpdGggYXBwcm9wcmlhdGUgZGVsaW1pdGVyICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRRdWVyeVN0cmluZ1BhcmFtZXRlcih1cmw6IHN0cmluZywgcGFyYW1ldGVyOiBzdHJpbmcpIHtcclxuICBpZiAoIXBhcmFtZXRlcikgcmV0dXJuIHVybDtcclxuXHJcbiAgbGV0IHNlcGFyYXRvciA9IHVybC5lbmRzV2l0aChcIj9cIikgPyBcIlwiIDogdXJsLmluY2x1ZGVzKFwiP1wiKSA/IFwiJlwiIDogXCI/XCI7XHJcblxyXG4gIHJldHVybiB1cmwgKyBzZXBhcmF0b3IgKyBwYXJhbWV0ZXI7XHJcbn1cclxuXHJcbi8qKiBFbmNvZGVzIHRoZSBvYmplY3QgaW50byBxdWVyeSBzdHJpbmcgcGFyYW1ldGVycyAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlUGFyYW1zKG9iajoge30pIHtcclxuICBsZXQgcXVlcnkgPSAnJztcclxuICBsZXQgc3ViVmFsdWU6IGFueSwgaW5uZXJPYmo6IGFueSwgZnVsbFN1Yk5hbWU6IGFueTtcclxuXHJcbiAgZm9yIChsZXQgbmFtZSBpbiBvYmopIHtcclxuICAgIGlmICghb2JqLmhhc093blByb3BlcnR5KG5hbWUpKSB7IGNvbnRpbnVlOyB9XHJcblxyXG4gICAgbGV0IHZhbHVlID0gb2JqW25hbWVdO1xyXG5cclxuICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIEFycmF5KSB7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyArK2kpIHtcclxuICAgICAgICBzdWJWYWx1ZSA9IHZhbHVlW2ldO1xyXG4gICAgICAgIGZ1bGxTdWJOYW1lID0gbmFtZSArICdbJyArIGkgKyAnXSc7XHJcbiAgICAgICAgaW5uZXJPYmogPSB7fTtcclxuICAgICAgICBpbm5lck9ialtmdWxsU3ViTmFtZV0gPSBzdWJWYWx1ZTtcclxuICAgICAgICBxdWVyeSArPSBlbmNvZGVQYXJhbXMoaW5uZXJPYmopICsgJyYnO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHZhbHVlICYmIHZhbHVlLnRvSVNPU3RyaW5nKSB7IC8vIGEgZmVhdHVyZSBvZiBEYXRlLWxpa2UgdGhpbmdzXHJcbiAgICAgIHF1ZXJ5ICs9IGVuY29kZVVSSUNvbXBvbmVudChuYW1lKSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZS50b0lTT1N0cmluZygpKSArICcmJztcclxuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QpIHtcclxuICAgICAgZm9yIChsZXQgc3ViTmFtZSBpbiB2YWx1ZSkge1xyXG4gICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkobmFtZSkpIHtcclxuICAgICAgICAgIHN1YlZhbHVlID0gdmFsdWVbc3ViTmFtZV07XHJcbiAgICAgICAgICBmdWxsU3ViTmFtZSA9IG5hbWUgKyAnWycgKyBzdWJOYW1lICsgJ10nO1xyXG4gICAgICAgICAgaW5uZXJPYmogPSB7fTtcclxuICAgICAgICAgIGlubmVyT2JqW2Z1bGxTdWJOYW1lXSA9IHN1YlZhbHVlO1xyXG4gICAgICAgICAgcXVlcnkgKz0gZW5jb2RlUGFyYW1zKGlubmVyT2JqKSArICcmJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgcXVlcnkgKz0gZW5jb2RlVVJJQ29tcG9uZW50KG5hbWUpICsgJz0mJztcclxuICAgIH0gZWxzZSBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBxdWVyeSArPSBlbmNvZGVVUklDb21wb25lbnQobmFtZSkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpICsgJyYnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHF1ZXJ5Lmxlbmd0aCA/IHF1ZXJ5LnN1YnN0cigwLCBxdWVyeS5sZW5ndGggLSAxKSA6IHF1ZXJ5O1xyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './adapter-ajax-fetch';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlZXplLWNsaWVudC1hZGFwdGVyLWFqYXgtZmV0Y2guanMiLCJzb3VyY2VSb290Ijoibmc6Ly9icmVlemUtY2xpZW50L2FkYXB0ZXItYWpheC1mZXRjaC8iLCJzb3VyY2VzIjpbImJyZWV6ZS1jbGllbnQtYWRhcHRlci1hamF4LWZldGNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9hZGFwdGVyLWFqYXgtZmV0Y2gnO1xuIl19
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { HttpHeaders, HttpRequest, HttpResponse } from "@angular/common/http";
|
|
2
|
+
import { config, core } from "breeze-client";
|
|
3
|
+
import { filter, map } from "rxjs/operators";
|
|
4
|
+
import { appendQueryStringParameter, encodeParams } from "./adapter-core";
|
|
5
|
+
export class AjaxHttpClientAdapter {
|
|
6
|
+
constructor(http) {
|
|
7
|
+
this.http = http;
|
|
8
|
+
this.name = AjaxHttpClientAdapter.adapterName;
|
|
9
|
+
this.defaultSettings = {};
|
|
10
|
+
}
|
|
11
|
+
static register(http, breezeConfig) {
|
|
12
|
+
breezeConfig = breezeConfig || config;
|
|
13
|
+
breezeConfig.registerAdapter("ajax", function () { return new AjaxHttpClientAdapter(http); });
|
|
14
|
+
return breezeConfig.initializeAdapterInstance("ajax", AjaxHttpClientAdapter.adapterName, true);
|
|
15
|
+
}
|
|
16
|
+
initialize() { }
|
|
17
|
+
ajax(config) {
|
|
18
|
+
if (!this.http) {
|
|
19
|
+
throw new Error('Unable to locate angular http module for ajax adapter');
|
|
20
|
+
}
|
|
21
|
+
// merge default DataSetAdapter Settings with config arg
|
|
22
|
+
if (!core.isEmpty(this.defaultSettings)) {
|
|
23
|
+
let compositeConfig = core.extend({}, this.defaultSettings);
|
|
24
|
+
config = core.extend(compositeConfig, config);
|
|
25
|
+
// extend is shallow; extend headers separately
|
|
26
|
+
let headers = core.extend({}, this.defaultSettings['headers']); // copy default headers 1st
|
|
27
|
+
config['headers'] = core.extend(headers, config.headers);
|
|
28
|
+
}
|
|
29
|
+
if (config.crossDomain) {
|
|
30
|
+
throw new Error(this.name + ' does not support JSONP (crossDomain) requests');
|
|
31
|
+
}
|
|
32
|
+
// Hack: Not sure how Angular handles writing 'search' parameters to the url.
|
|
33
|
+
// so this approach takes over the url param writing completely.
|
|
34
|
+
const parameters = core.isEmpty(config.params) ? null : encodeParams(config.params);
|
|
35
|
+
const url = appendQueryStringParameter(config.url, parameters);
|
|
36
|
+
let headers = new HttpHeaders(config.headers || {});
|
|
37
|
+
if (!headers.has('Content-Type')) {
|
|
38
|
+
if (config.type !== 'GET' && config.type !== 'DELETE' && !!config.contentType) {
|
|
39
|
+
headers = headers.set('Content-Type', config.contentType || 'application/json; charset=utf-8');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
let body = config.data;
|
|
43
|
+
let request = new HttpRequest((config.type || 'GET').toUpperCase(), url, body, { headers: headers, responseType: "text" });
|
|
44
|
+
let requestInfo = {
|
|
45
|
+
adapter: this,
|
|
46
|
+
request: request,
|
|
47
|
+
dsaConfig: config,
|
|
48
|
+
success: successFn,
|
|
49
|
+
error: errorFn // adapter's error callback
|
|
50
|
+
};
|
|
51
|
+
if (core.isFunction(this.requestInterceptor)) {
|
|
52
|
+
this.requestInterceptor(requestInfo);
|
|
53
|
+
if (this.requestInterceptor['oneTime']) {
|
|
54
|
+
this.requestInterceptor = null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (requestInfo.request) { // exists unless requestInterceptor killed it.
|
|
58
|
+
const ffilter = filter((response) => response instanceof HttpResponse);
|
|
59
|
+
const fmap = map(extractData);
|
|
60
|
+
fmap(ffilter(this.http.request(requestInfo.request)))
|
|
61
|
+
.forEach(requestInfo.success)
|
|
62
|
+
.catch(requestInfo.error);
|
|
63
|
+
}
|
|
64
|
+
function extractData(event) {
|
|
65
|
+
let response = event;
|
|
66
|
+
let data;
|
|
67
|
+
let dt = requestInfo.dsaConfig.dataType;
|
|
68
|
+
// beware:`res.json` and `res.text` will be async some day
|
|
69
|
+
if (dt && dt !== 'json') {
|
|
70
|
+
data = response.body;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
data = JSON.parse(response.body);
|
|
74
|
+
}
|
|
75
|
+
return { data, response };
|
|
76
|
+
}
|
|
77
|
+
function successFn(arg) {
|
|
78
|
+
if (arg.response.status < 200 || arg.response.status >= 300) {
|
|
79
|
+
throw { data: arg.data, response: arg.response };
|
|
80
|
+
}
|
|
81
|
+
let httpResponse = {
|
|
82
|
+
config: requestInfo.request,
|
|
83
|
+
data: arg.data,
|
|
84
|
+
getHeaders: makeGetHeaders(arg.response.headers),
|
|
85
|
+
status: arg.response.status
|
|
86
|
+
};
|
|
87
|
+
httpResponse['ngConfig'] = requestInfo.request;
|
|
88
|
+
httpResponse['statusText'] = arg.response.statusText;
|
|
89
|
+
httpResponse['response'] = arg.response;
|
|
90
|
+
config.success(httpResponse);
|
|
91
|
+
}
|
|
92
|
+
function errorFn(response) {
|
|
93
|
+
if (response instanceof Error) {
|
|
94
|
+
throw response; // program error; nothing we can do
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
let data;
|
|
98
|
+
if (response.error instanceof HttpResponse) {
|
|
99
|
+
data = response.error.body;
|
|
100
|
+
}
|
|
101
|
+
else if (response.error instanceof Error) {
|
|
102
|
+
data = response.error.message;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
data = response.error;
|
|
106
|
+
}
|
|
107
|
+
// Timeout appears as an error with status===0 and no data.
|
|
108
|
+
if (response.status === 0 && data == null) {
|
|
109
|
+
data = 'timeout';
|
|
110
|
+
}
|
|
111
|
+
let errorMessage = response.status + ": " + response.statusText;
|
|
112
|
+
if (data && typeof data === 'object') {
|
|
113
|
+
data["message"] = data["message"] || errorMessage; // breeze looks at the message property
|
|
114
|
+
}
|
|
115
|
+
if (!data) {
|
|
116
|
+
data = errorMessage; // Return the error message as data
|
|
117
|
+
}
|
|
118
|
+
let httpResponse = {
|
|
119
|
+
config: requestInfo.request,
|
|
120
|
+
data: data,
|
|
121
|
+
getHeaders: makeGetHeaders(response.headers),
|
|
122
|
+
status: response.status
|
|
123
|
+
};
|
|
124
|
+
httpResponse['ngConfig'] = requestInfo.request;
|
|
125
|
+
httpResponse['statusText'] = response.statusText;
|
|
126
|
+
httpResponse['response'] = response;
|
|
127
|
+
config.error(httpResponse); // send error to breeze error handler
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
AjaxHttpClientAdapter.adapterName = 'httpclient';
|
|
133
|
+
///// Helpers ////
|
|
134
|
+
function makeGetHeaders(headers) {
|
|
135
|
+
return function getHeaders(headerName) { return headers.getAll(headerName).join('\r\n'); };
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRhcHRlci1hamF4LWh0dHBjbGllbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9icmVlemUtY2xpZW50L2FkYXB0ZXItYWpheC1odHRwY2xpZW50LyIsInNvdXJjZXMiOlsiYWRhcHRlci1hamF4LWh0dHBjbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE0QyxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hILE9BQU8sRUFBYyxNQUFNLEVBQUUsSUFBSSxFQUF5RixNQUFNLGVBQWUsQ0FBQztBQUNoSixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUxRSxNQUFNLE9BQU8scUJBQXFCO0lBTWhDLFlBQW1CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFKbkMsU0FBSSxHQUFHLHFCQUFxQixDQUFDLFdBQVcsQ0FBQztRQUN6QyxvQkFBZSxHQUFHLEVBQUUsQ0FBQztJQUdrQixDQUFDO0lBRXhDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBZ0IsRUFBRSxZQUEyQjtRQUMzRCxZQUFZLEdBQUcsWUFBWSxJQUFJLE1BQU0sQ0FBQztRQUN0QyxZQUFZLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBTyxjQUFjLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25HLE9BQU8sWUFBWSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUEwQixDQUFDO0lBQzFILENBQUM7SUFFRCxVQUFVLEtBQUssQ0FBQztJQUVoQixJQUFJLENBQUMsTUFBa0I7UUFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDZCxNQUFNLElBQUks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WSxDQUFDLENBQUUsdUNBQXVDO2lCQUM1RjtnQkFDRCxJQUFJLENBQUMsSUFBSSxFQUFFO29CQUNULElBQUksR0FBRyxZQUFZLENBQUMsQ0FBRyxtQ0FBbUM7aUJBQzNEO2dCQUNELElBQUksWUFBWSxHQUF1QjtvQkFDckMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxPQUFPO29CQUMzQixJQUFJLEVBQUUsSUFBSTtvQkFDVixVQUFVLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7b0JBQzVDLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTTtpQkFDeEIsQ0FBQztnQkFDRixZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQztnQkFDL0MsWUFBWSxDQUFDLFlBQVksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7Z0JBQ2pELFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLENBQUM7Z0JBRXBDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxxQ0FBcUM7YUFDbEU7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs7QUE3SU0saUNBQVcsR0FBRyxZQUFZLENBQUM7QUFpSnBDLGtCQUFrQjtBQUVsQixTQUFTLGNBQWMsQ0FBQyxPQUFvQjtJQUMxQyxPQUFPLFNBQVMsVUFBVSxDQUFDLFVBQW1CLElBQUksT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBFdmVudCwgSHR0cEhlYWRlcnMsIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2UgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgQWpheENvbmZpZywgY29uZmlnLCBjb3JlLCBIdHRwUmVzcG9uc2UgYXMgQnJlZXplSHR0cFJlc3BvbnNlLCBCcmVlemVDb25maWcsIEFqYXhSZXF1ZXN0SW50ZXJjZXB0b3IsIEFqYXhBZGFwdGVyIH0gZnJvbSBcImJyZWV6ZS1jbGllbnRcIjtcclxuaW1wb3J0IHsgZmlsdGVyLCBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgYXBwZW5kUXVlcnlTdHJpbmdQYXJhbWV0ZXIsIGVuY29kZVBhcmFtcyB9IGZyb20gXCIuL2FkYXB0ZXItY29yZVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFqYXhIdHRwQ2xpZW50QWRhcHRlciBpbXBsZW1lbnRzIEFqYXhBZGFwdGVyIHtcclxuICBzdGF0aWMgYWRhcHRlck5hbWUgPSAnaHR0cGNsaWVudCc7XHJcbiAgbmFtZSA9IEFqYXhIdHRwQ2xpZW50QWRhcHRlci5hZGFwdGVyTmFtZTtcclxuICBkZWZhdWx0U2V0dGluZ3MgPSB7fTtcclxuICByZXF1ZXN0SW50ZXJjZXB0b3I6IEFqYXhSZXF1ZXN0SW50ZXJjZXB0b3I7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBodHRwOiBIdHRwQ2xpZW50KSB7IH1cclxuXHJcbiAgc3RhdGljIHJlZ2lzdGVyKGh0dHA6IEh0dHBDbGllbnQsIGJyZWV6ZUNvbmZpZz86IEJyZWV6ZUNvbmZpZykge1xyXG4gICAgYnJlZXplQ29uZmlnID0gYnJlZXplQ29uZmlnIHx8IGNvbmZpZztcclxuICAgIGJyZWV6ZUNvbmZpZy5yZWdpc3RlckFkYXB0ZXIoXCJhamF4XCIsIDxhbnk+ZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IEFqYXhIdHRwQ2xpZW50QWRhcHRlcihodHRwKTsgfSk7XHJcbiAgICByZXR1cm4gYnJlZXplQ29uZmlnLmluaXRpYWxpemVBZGFwdGVySW5zdGFuY2UoXCJhamF4XCIsIEFqYXhIdHRwQ2xpZW50QWRhcHRlci5hZGFwdGVyTmFtZSwgdHJ1ZSkgYXMgQWpheEh0dHBDbGllbnRBZGFwdGVyO1xyXG4gIH1cclxuXHJcbiAgaW5pdGlhbGl6ZSgpIHsgfVxyXG5cclxuICBhamF4KGNvbmZpZzogQWpheENvbmZpZykge1xyXG4gICAgaWYgKCF0aGlzLmh0dHApIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmFibGUgdG8gbG9jYXRlIGFuZ3VsYXIgaHR0cCBtb2R1bGUgZm9yIGFqYXggYWRhcHRlcicpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIG1lcmdlIGRlZmF1bHQgRGF0YVNldEFkYXB0ZXIgU2V0dGluZ3Mgd2l0aCBjb25maWcgYXJnXHJcbiAgICBpZiAoIWNvcmUuaXNFbXB0eSh0aGlzLmRlZmF1bHRTZXR0aW5ncykpIHtcclxuICAgICAgbGV0IGNvbXBvc2l0ZUNvbmZpZyA9IGNvcmUuZXh0ZW5kKHt9LCB0aGlzLmRlZmF1bHRTZXR0aW5ncyk7XHJcbiAgICAgIGNvbmZpZyA9IDxBamF4Q29uZmlnPmNvcmUuZXh0ZW5kKGNvbXBvc2l0ZUNvbmZpZywgY29uZmlnKTtcclxuICAgICAgLy8gZXh0ZW5kIGlzIHNoYWxsb3c7IGV4dGVuZCBoZWFkZXJzIHNlcGFyYXRlbHlcclxuICAgICAgbGV0IGhlYWRlcnMgPSBjb3JlLmV4dGVuZCh7fSwgdGhpcy5kZWZhdWx0U2V0dGluZ3NbJ2hlYWRlcnMnXSk7IC8vIGNvcHkgZGVmYXVsdCBoZWFkZXJzIDFzdFxyXG4gICAgICBjb25maWdbJ2hlYWRlcnMnXSA9IGNvcmUuZXh0ZW5kKGhlYWRlcnMsIGNvbmZpZy5oZWFkZXJzKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY29uZmlnLmNyb3NzRG9tYWluKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLm5hbWUgKyAnIGRvZXMgbm90IHN1cHBvcnQgSlNPTlAgKGNyb3NzRG9tYWluKSByZXF1ZXN0cycpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEhhY2s6IE5vdCBzdXJlIGhvdyBBbmd1bGFyIGhhbmRsZXMgd3JpdGluZyAnc2VhcmNoJyBwYXJhbWV0ZXJzIHRvIHRoZSB1cmwuXHJcbiAgICAvLyBzbyB0aGlzIGFwcHJvYWNoIHRha2VzIG92ZXIgdGhlIHVybCBwYXJhbSB3cml0aW5nIGNvbXBsZXRlbHkuXHJcbiAgICBjb25zdCBwYXJhbWV0ZXJzID0gY29yZS5pc0VtcHR5KGNvbmZpZy5wYXJhbXMpID8gbnVsbCA6IGVuY29kZVBhcmFtcyhjb25maWcucGFyYW1zKTtcclxuICAgIGNvbnN0IHVybCA9IGFwcGVuZFF1ZXJ5U3RyaW5nUGFyYW1ldGVyKGNvbmZpZy51cmwsIHBhcmFtZXRlcnMpO1xyXG5cclxuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKGNvbmZpZy5oZWFkZXJzIHx8IHt9KTtcclxuICAgIGlmICghaGVhZGVycy5oYXMoJ0NvbnRlbnQtVHlwZScpKSB7XHJcbiAgICAgIGlmIChjb25maWcudHlwZSAhPT0gJ0dFVCcgJiYgY29uZmlnLnR5cGUgIT09ICdERUxFVEUnICYmICEhY29uZmlnLmNvbnRlbnRUeXBlKSB7XHJcbiAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KCdDb250ZW50LVR5cGUnLFxyXG4gICAgICAgICAgPHN0cmluZz5jb25maWcuY29udGVudFR5cGUgfHwgJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmLTgnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGxldCBib2R5OiBhbnkgPSBjb25maWcuZGF0YTtcclxuICAgIGxldCByZXF1ZXN0ID0gbmV3IEh0dHBSZXF1ZXN0KChjb25maWcudHlwZSB8fCAnR0VUJykudG9VcHBlckNhc2UoKSwgdXJsLCBib2R5LCB7IGhlYWRlcnM6IGhlYWRlcnMsIHJlc3BvbnNlVHlwZTogXCJ0ZXh0XCIgfSk7XHJcblxyXG4gICAgbGV0IHJlcXVlc3RJbmZvID0ge1xyXG4gICAgICBhZGFwdGVyOiB0aGlzLCAgICAgIC8vIHRoaXMgYWRhcHRlclxyXG4gICAgICByZXF1ZXN0OiByZXF1ZXN0LCAgIC8vIHRoZSBodHRwIHJlcXVlc3QgZnJvbSB0aGUgcmVxdWVzdE9wdGlvbnNcclxuICAgICAgZHNhQ29uZmlnOiBjb25maWcsICAvLyB0aGUgY29uZmlnIGFyZyBmcm9tIHRoZSBjYWxsaW5nIEJyZWV6ZSBEYXRhU2VydmljZUFkYXB0ZXJcclxuICAgICAgc3VjY2Vzczogc3VjY2Vzc0ZuLCAvLyBhZGFwdGVyJ3Mgc3VjY2VzcyBjYWxsYmFja1xyXG4gICAgICBlcnJvcjogZXJyb3JGbiAgICAgIC8vIGFkYXB0ZXIncyBlcnJvciBjYWxsYmFja1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAoY29yZS5pc0Z1bmN0aW9uKHRoaXMucmVxdWVzdEludGVyY2VwdG9yKSkge1xyXG4gICAgICB0aGlzLnJlcXVlc3RJbnRlcmNlcHRvcihyZXF1ZXN0SW5mbyBhcyBhbnkpO1xyXG4gICAgICBpZiAodGhpcy5yZXF1ZXN0SW50ZXJjZXB0b3JbJ29uZVRpbWUnXSkge1xyXG4gICAgICAgIHRoaXMucmVxdWVzdEludGVyY2VwdG9yID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChyZXF1ZXN0SW5mby5yZXF1ZXN0KSB7IC8vIGV4aXN0cyB1bmxlc3MgcmVxdWVzdEludGVyY2VwdG9yIGtpbGxlZCBpdC5cclxuICAgICAgY29uc3QgZmZpbHRlciA9IGZpbHRlcigocmVzcG9uc2U6IEh0dHBFdmVudDxhbnk+KSA9PiByZXNwb25zZSBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSk7XHJcbiAgICAgIGNvbnN0IGZtYXAgPSBtYXAoZXh0cmFjdERhdGEpO1xyXG5cclxuICAgICAgZm1hcChmZmlsdGVyKHRoaXMuaHR0cC5yZXF1ZXN0KHJlcXVlc3RJbmZvLnJlcXVlc3QpKSlcclxuICAgICAgICAuZm9yRWFjaChyZXF1ZXN0SW5mby5zdWNjZXNzKVxyXG4gICAgICAgIC5jYXRjaChyZXF1ZXN0SW5mby5lcnJvcik7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZXh0cmFjdERhdGEoZXZlbnQ6IEh0dHBFdmVudDxhbnk+KSB7XHJcbiAgICAgIGxldCByZXNwb25zZSA9IGV2ZW50IGFzIEh0dHBSZXNwb25zZTxhbnk+O1xyXG4gICAgICBsZXQgZGF0YTogYW55O1xyXG4gICAgICBsZXQgZHQgPSByZXF1ZXN0SW5mby5kc2FDb25maWcuZGF0YVR5cGU7XHJcbiAgICAgIC8vIGJld2FyZTpgcmVzLmpzb25gIGFuZCBgcmVzLnRleHRgIHdpbGwgYmUgYXN5bmMgc29tZSBkYXlcclxuICAgICAgaWYgKGR0ICYmIGR0ICE9PSAnanNvbicpIHtcclxuICAgICAgICBkYXRhID0gcmVzcG9uc2UuYm9keTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShyZXNwb25zZS5ib2R5KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4geyBkYXRhLCByZXNwb25zZSB9O1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHN1Y2Nlc3NGbihhcmc6IHsgZGF0YTogYW55LCByZXNwb25zZTogSHR0cFJlc3BvbnNlPGFueT4gfSkge1xyXG4gICAgICBpZiAoYXJnLnJlc3BvbnNlLnN0YXR1cyA8IDIwMCB8fCBhcmcucmVzcG9uc2Uuc3RhdHVzID49IDMwMCkge1xyXG4gICAgICAgIHRocm93IHsgZGF0YTogYXJnLmRhdGEsIHJlc3BvbnNlOiBhcmcucmVzcG9uc2UgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGh0dHBSZXNwb25zZTogQnJlZXplSHR0cFJlc3BvbnNlID0ge1xyXG4gICAgICAgIGNvbmZpZzogcmVxdWVzdEluZm8ucmVxdWVzdCxcclxuICAgICAgICBkYXRhOiBhcmcuZGF0YSxcclxuICAgICAgICBnZXRIZWFkZXJzOiBtYWtlR2V0SGVhZGVycyhhcmcucmVzcG9uc2UuaGVhZGVycyksXHJcbiAgICAgICAgc3RhdHVzOiBhcmcucmVzcG9uc2Uuc3RhdHVzXHJcbiAgICAgIH07XHJcbiAgICAgIGh0dHBSZXNwb25zZVsnbmdDb25maWcnXSA9IHJlcXVlc3RJbmZvLnJlcXVlc3Q7XHJcbiAgICAgIGh0dHBSZXNwb25zZVsnc3RhdHVzVGV4dCddID0gYXJnLnJlc3BvbnNlLnN0YXR1c1RleHQ7XHJcbiAgICAgIGh0dHBSZXNwb25zZVsncmVzcG9uc2UnXSA9IGFyZy5yZXNwb25zZTtcclxuICAgICAgY29uZmlnLnN1Y2Nlc3MoaHR0cFJlc3BvbnNlKTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBlcnJvckZuKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICBpZiAocmVzcG9uc2UgaW5zdGFuY2VvZiBFcnJvcikge1xyXG4gICAgICAgIHRocm93IHJlc3BvbnNlOyAvLyBwcm9ncmFtIGVycm9yOyBub3RoaW5nIHdlIGNhbiBkb1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBkYXRhOiBhbnk7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLmVycm9yIGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBkYXRhID0gcmVzcG9uc2UuZXJyb3IuYm9keTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLmVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcclxuICAgICAgICAgIGRhdGEgPSByZXNwb25zZS5lcnJvci5tZXNzYWdlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkYXRhID0gcmVzcG9uc2UuZXJyb3I7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBUaW1lb3V0IGFwcGVhcnMgYXMgYW4gZXJyb3Igd2l0aCBzdGF0dXM9PT0wIGFuZCBubyBkYXRhLlxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDAgJiYgZGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgICBkYXRhID0gJ3RpbWVvdXQnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGVycm9yTWVzc2FnZSA9IHJlc3BvbnNlLnN0YXR1cyArIFwiOiBcIiArIHJlc3BvbnNlLnN0YXR1c1RleHQ7XHJcbiAgICAgICAgaWYgKGRhdGEgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBkYXRhW1wibWVzc2FnZVwiXSA9IGRhdGFbXCJtZXNzYWdlXCJdIHx8IGVycm9yTWVzc2FnZTsgIC8vIGJyZWV6ZSBsb29rcyBhdCB0aGUgbWVzc2FnZSBwcm9wZXJ0eVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIWRhdGEpIHtcclxuICAgICAgICAgIGRhdGEgPSBlcnJvck1lc3NhZ2U7ICAgLy8gUmV0dXJuIHRoZSBlcnJvciBtZXNzYWdlIGFzIGRhdGFcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IGh0dHBSZXNwb25zZTogQnJlZXplSHR0cFJlc3BvbnNlID0ge1xyXG4gICAgICAgICAgY29uZmlnOiByZXF1ZXN0SW5mby5yZXF1ZXN0LFxyXG4gICAgICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgICAgIGdldEhlYWRlcnM6IG1ha2VHZXRIZWFkZXJzKHJlc3BvbnNlLmhlYWRlcnMpLFxyXG4gICAgICAgICAgc3RhdHVzOiByZXNwb25zZS5zdGF0dXNcclxuICAgICAgICB9O1xyXG4gICAgICAgIGh0dHBSZXNwb25zZVsnbmdDb25maWcnXSA9IHJlcXVlc3RJbmZvLnJlcXVlc3Q7XHJcbiAgICAgICAgaHR0cFJlc3BvbnNlWydzdGF0dXNUZXh0J10gPSByZXNwb25zZS5zdGF0dXNUZXh0O1xyXG4gICAgICAgIGh0dHBSZXNwb25zZVsncmVzcG9uc2UnXSA9IHJlc3BvbnNlO1xyXG5cclxuICAgICAgICBjb25maWcuZXJyb3IoaHR0cFJlc3BvbnNlKTsgLy8gc2VuZCBlcnJvciB0byBicmVlemUgZXJyb3IgaGFuZGxlclxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLy8vLy8gSGVscGVycyAvLy8vXHJcblxyXG5mdW5jdGlvbiBtYWtlR2V0SGVhZGVycyhoZWFkZXJzOiBIdHRwSGVhZGVycykge1xyXG4gIHJldHVybiBmdW5jdGlvbiBnZXRIZWFkZXJzKGhlYWRlck5hbWU/OiBzdHJpbmcpIHsgcmV0dXJuIGhlYWRlcnMuZ2V0QWxsKGhlYWRlck5hbWUpLmpvaW4oJ1xcclxcbicpOyB9O1xyXG59Il19
|