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.
Files changed (377) hide show
  1. package/adapter-ajax-angularjs/{index.d.ts → breeze-client-adapter-ajax-angularjs.d.ts} +0 -1
  2. package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +1 -0
  3. package/adapter-ajax-angularjs/package.json +13 -0
  4. package/adapter-ajax-fetch/{index.d.ts → breeze-client-adapter-ajax-fetch.d.ts} +0 -1
  5. package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +1 -0
  6. package/adapter-ajax-fetch/package.json +13 -0
  7. package/adapter-ajax-httpclient/{index.d.ts → breeze-client-adapter-ajax-httpclient.d.ts} +0 -1
  8. package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +1 -0
  9. package/adapter-ajax-httpclient/package.json +13 -0
  10. package/adapter-ajax-jquery/{index.d.ts → breeze-client-adapter-ajax-jquery.d.ts} +0 -1
  11. package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +1 -0
  12. package/adapter-ajax-jquery/package.json +13 -0
  13. package/adapter-ajax-post/{index.d.ts → breeze-client-adapter-ajax-post.d.ts} +0 -1
  14. package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +1 -0
  15. package/adapter-ajax-post/package.json +13 -0
  16. package/adapter-data-service-odata/{index.d.ts → breeze-client-adapter-data-service-odata.d.ts} +0 -1
  17. package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +1 -0
  18. package/adapter-data-service-odata/package.json +13 -0
  19. package/adapter-data-service-webapi/{index.d.ts → breeze-client-adapter-data-service-webapi.d.ts} +0 -1
  20. package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +1 -0
  21. package/adapter-data-service-webapi/package.json +13 -0
  22. package/adapter-model-library-backing-store/{index.d.ts → breeze-client-adapter-model-library-backing-store.d.ts} +0 -1
  23. package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +1 -0
  24. package/adapter-model-library-backing-store/package.json +13 -0
  25. package/adapter-model-library-ko/{index.d.ts → breeze-client-adapter-model-library-ko.d.ts} +0 -1
  26. package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +1 -0
  27. package/adapter-model-library-ko/package.json +13 -0
  28. package/adapter-uri-builder-json/{index.d.ts → breeze-client-adapter-uri-builder-json.d.ts} +0 -1
  29. package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +1 -0
  30. package/adapter-uri-builder-json/package.json +13 -0
  31. package/adapter-uri-builder-odata/{index.d.ts → breeze-client-adapter-uri-builder-odata.d.ts} +0 -1
  32. package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +1 -0
  33. package/adapter-uri-builder-odata/package.json +13 -0
  34. package/breeze-client.d.ts +8 -0
  35. package/breeze-client.metadata.json +1 -0
  36. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +190 -0
  37. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +1 -0
  38. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +2 -0
  39. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +1 -0
  40. package/bundles/breeze-client-adapter-ajax-fetch.umd.js +190 -0
  41. package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +1 -0
  42. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +2 -0
  43. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +1 -0
  44. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +195 -0
  45. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +1 -0
  46. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +2 -0
  47. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +1 -0
  48. package/bundles/breeze-client-adapter-ajax-jquery.umd.js +115 -0
  49. package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +1 -0
  50. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +2 -0
  51. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +1 -0
  52. package/bundles/breeze-client-adapter-ajax-post.umd.js +92 -0
  53. package/bundles/breeze-client-adapter-ajax-post.umd.js.map +1 -0
  54. package/bundles/breeze-client-adapter-ajax-post.umd.min.js +2 -0
  55. package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +1 -0
  56. package/bundles/breeze-client-adapter-data-service-odata.umd.js +747 -0
  57. package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +1 -0
  58. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +16 -0
  59. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +1 -0
  60. package/bundles/breeze-client-adapter-data-service-webapi.umd.js +333 -0
  61. package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +1 -0
  62. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +16 -0
  63. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +1 -0
  64. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +280 -0
  65. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +1 -0
  66. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +2 -0
  67. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +1 -0
  68. package/bundles/breeze-client-adapter-model-library-ko.umd.js +252 -0
  69. package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +1 -0
  70. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +2 -0
  71. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +1 -0
  72. package/bundles/breeze-client-adapter-uri-builder-json.umd.js +96 -0
  73. package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +1 -0
  74. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +2 -0
  75. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +1 -0
  76. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +262 -0
  77. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +1 -0
  78. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +2 -0
  79. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +1 -0
  80. package/bundles/breeze-client-mixin-get-entity-graph.umd.js +258 -0
  81. package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +1 -0
  82. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +2 -0
  83. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +1 -0
  84. package/bundles/breeze-client-mixin-save-queuing.umd.js +579 -0
  85. package/bundles/breeze-client-mixin-save-queuing.umd.js.map +1 -0
  86. package/bundles/breeze-client-mixin-save-queuing.umd.min.js +16 -0
  87. package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +1 -0
  88. package/bundles/breeze-client.umd.js +14234 -0
  89. package/bundles/breeze-client.umd.js.map +1 -0
  90. package/bundles/breeze-client.umd.min.js +16 -0
  91. package/bundles/breeze-client.umd.min.js.map +1 -0
  92. package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +130 -0
  93. package/esm2015/adapter-ajax-angularjs/adapter-core.js +49 -0
  94. package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +5 -0
  95. package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +130 -0
  96. package/esm2015/adapter-ajax-fetch/adapter-core.js +49 -0
  97. package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +5 -0
  98. package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +137 -0
  99. package/esm2015/adapter-ajax-httpclient/adapter-core.js +49 -0
  100. package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +5 -0
  101. package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +103 -0
  102. package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +5 -0
  103. package/esm2015/adapter-ajax-post/adapter-ajax-post.js +77 -0
  104. package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +5 -0
  105. package/esm2015/adapter-data-service-odata/adapter-core.js +49 -0
  106. package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +463 -0
  107. package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +5 -0
  108. package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +100 -0
  109. package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +5 -0
  110. package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +268 -0
  111. package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +5 -0
  112. package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +240 -0
  113. package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +5 -0
  114. package/esm2015/adapter-uri-builder-json/adapter-core.js +49 -0
  115. package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +36 -0
  116. package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +5 -0
  117. package/esm2015/adapter-uri-builder-odata/adapter-core.js +49 -0
  118. package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +192 -0
  119. package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +5 -0
  120. package/esm2015/breeze-client.js +9 -0
  121. package/esm2015/index.js +2 -0
  122. package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +5 -0
  123. package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +269 -0
  124. package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +5 -0
  125. package/esm2015/mixin-save-queuing/mixin-save-queuing.js +400 -0
  126. package/esm2015/src/abstract-data-service-adapter.js +327 -0
  127. package/esm2015/src/array.js +4 -0
  128. package/esm2015/src/assert-param.js +312 -0
  129. package/esm2015/src/breeze.js +85 -0
  130. package/esm2015/src/complex-array.js +119 -0
  131. package/esm2015/src/config.js +223 -0
  132. package/esm2015/src/core.js +714 -0
  133. package/esm2015/src/csdl-metadata-parser.js +385 -0
  134. package/esm2015/src/data-service.js +203 -0
  135. package/esm2015/src/data-type.js +506 -0
  136. package/esm2015/src/default-property-interceptor.js +460 -0
  137. package/{esm2022/src/entity-action.mjs → esm2015/src/entity-action.js} +25 -25
  138. package/esm2015/src/entity-aspect.js +804 -0
  139. package/esm2015/src/entity-group.js +187 -0
  140. package/esm2015/src/entity-key.js +116 -0
  141. package/esm2015/src/entity-manager.js +2094 -0
  142. package/esm2015/src/entity-metadata.js +2109 -0
  143. package/esm2015/src/entity-query.js +1015 -0
  144. package/esm2015/src/entity-state.js +107 -0
  145. package/esm2015/src/enum.js +141 -0
  146. package/esm2015/src/event.js +256 -0
  147. package/esm2015/src/interface-registry.js +41 -0
  148. package/esm2015/src/key-generator.js +108 -0
  149. package/esm2015/src/local-query-comparison-options.js +65 -0
  150. package/esm2015/src/mapping-context.js +411 -0
  151. package/esm2015/src/naming-convention.js +88 -0
  152. package/esm2015/src/observable-array.js +185 -0
  153. package/esm2015/src/predicate.js +1242 -0
  154. package/esm2015/src/primitive-array.js +87 -0
  155. package/esm2015/src/query-options.js +152 -0
  156. package/esm2015/src/relation-array.js +175 -0
  157. package/esm2015/src/save-options.js +41 -0
  158. package/esm2015/src/unattached-children-map.js +58 -0
  159. package/esm2015/src/validate.js +991 -0
  160. package/esm2015/src/validation-options.js +64 -0
  161. package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +132 -0
  162. package/esm5/adapter-ajax-angularjs/adapter-core.js +49 -0
  163. package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +5 -0
  164. package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +132 -0
  165. package/esm5/adapter-ajax-fetch/adapter-core.js +49 -0
  166. package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +5 -0
  167. package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +139 -0
  168. package/esm5/adapter-ajax-httpclient/adapter-core.js +49 -0
  169. package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +5 -0
  170. package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +105 -0
  171. package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +5 -0
  172. package/esm5/adapter-ajax-post/adapter-ajax-post.js +81 -0
  173. package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +5 -0
  174. package/esm5/adapter-data-service-odata/adapter-core.js +49 -0
  175. package/{esm2022/adapter-data-service-odata/adapter-data-service-odata.mjs → esm5/adapter-data-service-odata/adapter-data-service-odata.js} +147 -138
  176. package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +5 -0
  177. package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +105 -0
  178. package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +5 -0
  179. package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +270 -0
  180. package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +5 -0
  181. package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +242 -0
  182. package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +5 -0
  183. package/esm5/adapter-uri-builder-json/adapter-core.js +49 -0
  184. package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +38 -0
  185. package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +5 -0
  186. package/esm5/adapter-uri-builder-odata/adapter-core.js +49 -0
  187. package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +197 -0
  188. package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +5 -0
  189. package/esm5/breeze-client.js +9 -0
  190. package/esm5/index.js +2 -0
  191. package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +5 -0
  192. package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +269 -0
  193. package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +5 -0
  194. package/esm5/mixin-save-queuing/mixin-save-queuing.js +412 -0
  195. package/esm5/src/abstract-data-service-adapter.js +333 -0
  196. package/esm5/src/array.js +4 -0
  197. package/esm5/src/assert-param.js +317 -0
  198. package/esm5/src/breeze.js +85 -0
  199. package/esm5/src/complex-array.js +119 -0
  200. package/esm5/src/config.js +228 -0
  201. package/esm5/src/core.js +722 -0
  202. package/esm5/src/csdl-metadata-parser.js +385 -0
  203. package/esm5/src/data-service.js +207 -0
  204. package/esm5/src/data-type.js +513 -0
  205. package/esm5/src/default-property-interceptor.js +460 -0
  206. package/esm5/src/entity-action.js +52 -0
  207. package/esm5/src/entity-aspect.js +810 -0
  208. package/esm5/src/entity-group.js +189 -0
  209. package/esm5/src/entity-key.js +118 -0
  210. package/esm5/src/entity-manager.js +2112 -0
  211. package/esm5/src/entity-metadata.js +2144 -0
  212. package/esm5/src/entity-query.js +1042 -0
  213. package/esm5/src/entity-state.js +114 -0
  214. package/esm5/src/enum.js +144 -0
  215. package/esm5/src/event.js +259 -0
  216. package/esm5/src/interface-registry.js +43 -0
  217. package/esm5/src/key-generator.js +111 -0
  218. package/esm5/src/local-query-comparison-options.js +67 -0
  219. package/esm5/src/mapping-context.js +413 -0
  220. package/esm5/src/naming-convention.js +90 -0
  221. package/esm5/src/observable-array.js +201 -0
  222. package/esm5/src/predicate.js +1307 -0
  223. package/esm5/src/primitive-array.js +87 -0
  224. package/esm5/src/query-options.js +167 -0
  225. package/esm5/src/relation-array.js +175 -0
  226. package/esm5/src/save-options.js +43 -0
  227. package/esm5/src/unattached-children-map.js +60 -0
  228. package/{esm2022/src/validate.mjs → esm5/src/validate.js} +110 -116
  229. package/esm5/src/validation-options.js +66 -0
  230. package/{fesm2022/breeze-client-adapter-ajax-angularjs.mjs → fesm2015/breeze-client-adapter-ajax-angularjs.js} +1 -6
  231. package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +1 -0
  232. package/{fesm2022/breeze-client-adapter-ajax-fetch.mjs → fesm2015/breeze-client-adapter-ajax-fetch.js} +4 -9
  233. package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +1 -0
  234. package/{fesm2022/breeze-client-adapter-ajax-httpclient.mjs → fesm2015/breeze-client-adapter-ajax-httpclient.js} +4 -6
  235. package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +1 -0
  236. package/{fesm2022/breeze-client-adapter-ajax-jquery.mjs → fesm2015/breeze-client-adapter-ajax-jquery.js} +2 -6
  237. package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +1 -0
  238. package/{fesm2022/breeze-client-adapter-ajax-post.mjs → fesm2015/breeze-client-adapter-ajax-post.js} +1 -1
  239. package/fesm2015/breeze-client-adapter-ajax-post.js.map +1 -0
  240. package/{fesm2022/breeze-client-adapter-data-service-odata.mjs → fesm2015/breeze-client-adapter-data-service-odata.js} +69 -68
  241. package/fesm2015/breeze-client-adapter-data-service-odata.js.map +1 -0
  242. package/{fesm2022/breeze-client-adapter-data-service-webapi.mjs → fesm2015/breeze-client-adapter-data-service-webapi.js} +30 -30
  243. package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +1 -0
  244. package/{fesm2022/breeze-client-adapter-model-library-backing-store.mjs → fesm2015/breeze-client-adapter-model-library-backing-store.js} +13 -14
  245. package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +1 -0
  246. package/{fesm2022/breeze-client-adapter-model-library-ko.mjs → fesm2015/breeze-client-adapter-model-library-ko.js} +13 -14
  247. package/fesm2015/breeze-client-adapter-model-library-ko.js.map +1 -0
  248. package/{fesm2022/breeze-client-adapter-uri-builder-json.mjs → fesm2015/breeze-client-adapter-uri-builder-json.js} +8 -9
  249. package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +1 -0
  250. package/{fesm2022/breeze-client-adapter-uri-builder-odata.mjs → fesm2015/breeze-client-adapter-uri-builder-odata.js} +86 -86
  251. package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +1 -0
  252. package/{fesm2022/breeze-client-mixin-get-entity-graph.mjs → fesm2015/breeze-client-mixin-get-entity-graph.js} +1 -1
  253. package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +1 -0
  254. package/{fesm2022/breeze-client-mixin-save-queuing.mjs → fesm2015/breeze-client-mixin-save-queuing.js} +2 -23
  255. package/fesm2015/breeze-client-mixin-save-queuing.js.map +1 -0
  256. package/{fesm2022/breeze-client.mjs → fesm2015/breeze-client.js} +1543 -2042
  257. package/fesm2015/breeze-client.js.map +1 -0
  258. package/fesm5/breeze-client-adapter-ajax-angularjs.js +186 -0
  259. package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +1 -0
  260. package/fesm5/breeze-client-adapter-ajax-fetch.js +186 -0
  261. package/fesm5/breeze-client-adapter-ajax-fetch.js.map +1 -0
  262. package/fesm5/breeze-client-adapter-ajax-httpclient.js +193 -0
  263. package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +1 -0
  264. package/fesm5/breeze-client-adapter-ajax-jquery.js +111 -0
  265. package/fesm5/breeze-client-adapter-ajax-jquery.js.map +1 -0
  266. package/fesm5/breeze-client-adapter-ajax-post.js +86 -0
  267. package/fesm5/breeze-client-adapter-ajax-post.js.map +1 -0
  268. package/fesm5/breeze-client-adapter-data-service-odata.js +523 -0
  269. package/fesm5/breeze-client-adapter-data-service-odata.js.map +1 -0
  270. package/fesm5/breeze-client-adapter-data-service-webapi.js +111 -0
  271. package/fesm5/breeze-client-adapter-data-service-webapi.js.map +1 -0
  272. package/fesm5/breeze-client-adapter-model-library-backing-store.js +276 -0
  273. package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +1 -0
  274. package/fesm5/breeze-client-adapter-model-library-ko.js +248 -0
  275. package/fesm5/breeze-client-adapter-model-library-ko.js.map +1 -0
  276. package/fesm5/breeze-client-adapter-uri-builder-json.js +92 -0
  277. package/fesm5/breeze-client-adapter-uri-builder-json.js.map +1 -0
  278. package/fesm5/breeze-client-adapter-uri-builder-odata.js +250 -0
  279. package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +1 -0
  280. package/fesm5/breeze-client-mixin-get-entity-graph.js +254 -0
  281. package/fesm5/breeze-client-mixin-get-entity-graph.js.map +1 -0
  282. package/fesm5/breeze-client-mixin-save-queuing.js +356 -0
  283. package/fesm5/breeze-client-mixin-save-queuing.js.map +1 -0
  284. package/fesm5/breeze-client.js +13956 -0
  285. package/fesm5/breeze-client.js.map +1 -0
  286. package/mixin-get-entity-graph/{index.d.ts → breeze-client-mixin-get-entity-graph.d.ts} +0 -1
  287. package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +1 -0
  288. package/mixin-get-entity-graph/package.json +13 -0
  289. package/mixin-save-queuing/{index.d.ts → breeze-client-mixin-save-queuing.d.ts} +0 -1
  290. package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +1 -0
  291. package/mixin-save-queuing/package.json +13 -0
  292. package/package.json +12 -94
  293. package/src/config.d.ts +1 -1
  294. package/src/core.d.ts +1 -1
  295. package/src/entity-aspect.d.ts +1 -1
  296. package/src/entity-metadata.d.ts +6 -8
  297. package/src/entity-query.d.ts +1 -1
  298. package/esm2022/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +0 -135
  299. package/esm2022/adapter-ajax-angularjs/adapter-core.mjs +0 -49
  300. package/esm2022/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +0 -5
  301. package/esm2022/adapter-ajax-fetch/adapter-ajax-fetch.mjs +0 -135
  302. package/esm2022/adapter-ajax-fetch/adapter-core.mjs +0 -49
  303. package/esm2022/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +0 -5
  304. package/esm2022/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +0 -139
  305. package/esm2022/adapter-ajax-httpclient/adapter-core.mjs +0 -49
  306. package/esm2022/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +0 -5
  307. package/esm2022/adapter-ajax-jquery/adapter-ajax-jquery.mjs +0 -107
  308. package/esm2022/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +0 -5
  309. package/esm2022/adapter-ajax-post/adapter-ajax-post.mjs +0 -77
  310. package/esm2022/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +0 -5
  311. package/esm2022/adapter-data-service-odata/adapter-core.mjs +0 -49
  312. package/esm2022/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +0 -5
  313. package/esm2022/adapter-data-service-webapi/adapter-data-service-webapi.mjs +0 -100
  314. package/esm2022/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +0 -5
  315. package/esm2022/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +0 -269
  316. package/esm2022/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +0 -5
  317. package/esm2022/adapter-model-library-ko/adapter-model-library-ko.mjs +0 -241
  318. package/esm2022/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +0 -5
  319. package/esm2022/adapter-uri-builder-json/adapter-core.mjs +0 -49
  320. package/esm2022/adapter-uri-builder-json/adapter-uri-builder-json.mjs +0 -37
  321. package/esm2022/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +0 -5
  322. package/esm2022/adapter-uri-builder-odata/adapter-core.mjs +0 -49
  323. package/esm2022/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +0 -191
  324. package/esm2022/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +0 -5
  325. package/esm2022/breeze-client.mjs +0 -5
  326. package/esm2022/index.mjs +0 -2
  327. package/esm2022/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +0 -5
  328. package/esm2022/mixin-get-entity-graph/mixin-get-entity-graph.mjs +0 -269
  329. package/esm2022/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +0 -5
  330. package/esm2022/mixin-save-queuing/mixin-save-queuing.mjs +0 -421
  331. package/esm2022/src/abstract-data-service-adapter.mjs +0 -325
  332. package/esm2022/src/array.mjs +0 -4
  333. package/esm2022/src/assert-param.mjs +0 -330
  334. package/esm2022/src/breeze.mjs +0 -85
  335. package/esm2022/src/complex-array.mjs +0 -117
  336. package/esm2022/src/config.mjs +0 -232
  337. package/esm2022/src/core.mjs +0 -712
  338. package/esm2022/src/csdl-metadata-parser.mjs +0 -385
  339. package/esm2022/src/data-service.mjs +0 -239
  340. package/esm2022/src/data-type.mjs +0 -510
  341. package/esm2022/src/default-property-interceptor.mjs +0 -460
  342. package/esm2022/src/entity-aspect.mjs +0 -897
  343. package/esm2022/src/entity-group.mjs +0 -192
  344. package/esm2022/src/entity-key.mjs +0 -127
  345. package/esm2022/src/entity-manager.mjs +0 -2183
  346. package/esm2022/src/entity-metadata.mjs +0 -2242
  347. package/esm2022/src/entity-query.mjs +0 -1024
  348. package/esm2022/src/entity-state.mjs +0 -107
  349. package/esm2022/src/enum.mjs +0 -143
  350. package/esm2022/src/event.mjs +0 -264
  351. package/esm2022/src/interface-registry.mjs +0 -39
  352. package/esm2022/src/key-generator.mjs +0 -110
  353. package/esm2022/src/local-query-comparison-options.mjs +0 -75
  354. package/esm2022/src/mapping-context.mjs +0 -422
  355. package/esm2022/src/naming-convention.mjs +0 -96
  356. package/esm2022/src/observable-array.mjs +0 -183
  357. package/esm2022/src/predicate.mjs +0 -1259
  358. package/esm2022/src/primitive-array.mjs +0 -85
  359. package/esm2022/src/query-options.mjs +0 -160
  360. package/esm2022/src/relation-array.mjs +0 -173
  361. package/esm2022/src/save-options.mjs +0 -51
  362. package/esm2022/src/unattached-children-map.mjs +0 -56
  363. package/esm2022/src/validation-options.mjs +0 -78
  364. package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs.map +0 -1
  365. package/fesm2022/breeze-client-adapter-ajax-fetch.mjs.map +0 -1
  366. package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs.map +0 -1
  367. package/fesm2022/breeze-client-adapter-ajax-jquery.mjs.map +0 -1
  368. package/fesm2022/breeze-client-adapter-ajax-post.mjs.map +0 -1
  369. package/fesm2022/breeze-client-adapter-data-service-odata.mjs.map +0 -1
  370. package/fesm2022/breeze-client-adapter-data-service-webapi.mjs.map +0 -1
  371. package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs.map +0 -1
  372. package/fesm2022/breeze-client-adapter-model-library-ko.mjs.map +0 -1
  373. package/fesm2022/breeze-client-adapter-uri-builder-json.mjs.map +0 -1
  374. package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs.map +0 -1
  375. package/fesm2022/breeze-client-mixin-get-entity-graph.mjs.map +0 -1
  376. package/fesm2022/breeze-client-mixin-save-queuing.mjs.map +0 -1
  377. 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