breeze-client 2.1.2 → 2.1.3-mjs

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 (397) hide show
  1. package/LICENSE +1 -1
  2. package/adapter-ajax-angularjs/{breeze-client-adapter-ajax-angularjs.d.ts → index.d.ts} +1 -0
  3. package/adapter-ajax-fetch/{breeze-client-adapter-ajax-fetch.d.ts → index.d.ts} +1 -0
  4. package/adapter-ajax-httpclient/{breeze-client-adapter-ajax-httpclient.d.ts → index.d.ts} +1 -0
  5. package/adapter-ajax-jquery/{breeze-client-adapter-ajax-jquery.d.ts → index.d.ts} +1 -0
  6. package/adapter-ajax-post/{breeze-client-adapter-ajax-post.d.ts → index.d.ts} +1 -0
  7. package/adapter-data-service-odata/{breeze-client-adapter-data-service-odata.d.ts → index.d.ts} +1 -0
  8. package/adapter-data-service-webapi/{breeze-client-adapter-data-service-webapi.d.ts → index.d.ts} +1 -0
  9. package/adapter-model-library-backing-store/{breeze-client-adapter-model-library-backing-store.d.ts → index.d.ts} +1 -0
  10. package/adapter-model-library-ko/{breeze-client-adapter-model-library-ko.d.ts → index.d.ts} +1 -0
  11. package/adapter-uri-builder-json/{breeze-client-adapter-uri-builder-json.d.ts → index.d.ts} +1 -0
  12. package/adapter-uri-builder-odata/{breeze-client-adapter-uri-builder-odata.d.ts → index.d.ts} +1 -0
  13. package/esm2020/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +130 -0
  14. package/esm2020/adapter-ajax-angularjs/adapter-core.mjs +49 -0
  15. package/esm2020/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +5 -0
  16. package/esm2020/adapter-ajax-fetch/adapter-ajax-fetch.mjs +132 -0
  17. package/esm2020/adapter-ajax-fetch/adapter-core.mjs +49 -0
  18. package/esm2020/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +5 -0
  19. package/esm2020/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +137 -0
  20. package/esm2020/adapter-ajax-httpclient/adapter-core.mjs +49 -0
  21. package/esm2020/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +5 -0
  22. package/esm2020/adapter-ajax-jquery/adapter-ajax-jquery.mjs +103 -0
  23. package/esm2020/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +5 -0
  24. package/esm2020/adapter-ajax-post/adapter-ajax-post.mjs +77 -0
  25. package/esm2020/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +5 -0
  26. package/esm2020/adapter-data-service-odata/adapter-core.mjs +49 -0
  27. package/esm2020/adapter-data-service-odata/adapter-data-service-odata.mjs +456 -0
  28. package/esm2020/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +5 -0
  29. package/esm2020/adapter-data-service-webapi/adapter-data-service-webapi.mjs +93 -0
  30. package/esm2020/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +5 -0
  31. package/esm2020/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +268 -0
  32. package/esm2020/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +5 -0
  33. package/esm2020/adapter-model-library-ko/adapter-model-library-ko.mjs +240 -0
  34. package/esm2020/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +5 -0
  35. package/esm2020/adapter-uri-builder-json/adapter-core.mjs +49 -0
  36. package/esm2020/adapter-uri-builder-json/adapter-uri-builder-json.mjs +36 -0
  37. package/esm2020/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +5 -0
  38. package/esm2020/adapter-uri-builder-odata/adapter-core.mjs +49 -0
  39. package/esm2020/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +190 -0
  40. package/esm2020/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +5 -0
  41. package/esm2020/breeze-client.mjs +5 -0
  42. package/esm2020/index.mjs +2 -0
  43. package/esm2020/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +5 -0
  44. package/esm2020/mixin-get-entity-graph/mixin-get-entity-graph.mjs +269 -0
  45. package/esm2020/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +5 -0
  46. package/esm2020/mixin-save-queuing/mixin-save-queuing.mjs +400 -0
  47. package/esm2020/src/abstract-data-service-adapter.mjs +296 -0
  48. package/esm2020/src/array.mjs +4 -0
  49. package/esm2020/src/assert-param.mjs +312 -0
  50. package/esm2020/src/breeze.mjs +85 -0
  51. package/esm2020/src/complex-array.mjs +117 -0
  52. package/esm2020/src/config.mjs +223 -0
  53. package/esm2020/src/core.mjs +707 -0
  54. package/esm2020/src/csdl-metadata-parser.mjs +385 -0
  55. package/esm2020/src/data-service.mjs +203 -0
  56. package/esm2020/src/data-type.mjs +444 -0
  57. package/esm2020/src/default-property-interceptor.mjs +460 -0
  58. package/esm2020/src/entity-action.mjs +45 -0
  59. package/esm2020/src/entity-aspect.mjs +806 -0
  60. package/esm2020/src/entity-group.mjs +187 -0
  61. package/esm2020/src/entity-key.mjs +116 -0
  62. package/esm2020/src/entity-manager.mjs +2094 -0
  63. package/esm2020/src/entity-metadata.mjs +2109 -0
  64. package/esm2020/src/entity-query.mjs +996 -0
  65. package/esm2020/src/entity-state.mjs +99 -0
  66. package/esm2020/src/enum.mjs +141 -0
  67. package/esm2020/src/event.mjs +256 -0
  68. package/esm2020/src/interface-registry.mjs +41 -0
  69. package/esm2020/src/key-generator.mjs +108 -0
  70. package/esm2020/src/local-query-comparison-options.mjs +65 -0
  71. package/esm2020/src/mapping-context.mjs +405 -0
  72. package/esm2020/src/naming-convention.mjs +88 -0
  73. package/esm2020/src/observable-array.mjs +183 -0
  74. package/esm2020/src/predicate.mjs +1232 -0
  75. package/esm2020/src/primitive-array.mjs +85 -0
  76. package/esm2020/src/query-options.mjs +152 -0
  77. package/esm2020/src/relation-array.mjs +173 -0
  78. package/esm2020/src/save-options.mjs +41 -0
  79. package/esm2020/src/unattached-children-map.mjs +58 -0
  80. package/esm2020/src/validate.mjs +988 -0
  81. package/esm2020/src/validation-options.mjs +64 -0
  82. package/fesm2015/{breeze-client-adapter-ajax-angularjs.js → breeze-client-adapter-ajax-angularjs.mjs} +1 -1
  83. package/fesm2015/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
  84. package/fesm2015/{breeze-client-adapter-ajax-fetch.js → breeze-client-adapter-ajax-fetch.mjs} +5 -3
  85. package/fesm2015/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
  86. package/fesm2015/{breeze-client-adapter-ajax-httpclient.js → breeze-client-adapter-ajax-httpclient.mjs} +1 -1
  87. package/fesm2015/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
  88. package/fesm2015/{breeze-client-adapter-ajax-jquery.js → breeze-client-adapter-ajax-jquery.mjs} +2 -2
  89. package/fesm2015/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
  90. package/fesm2015/{breeze-client-adapter-ajax-post.js → breeze-client-adapter-ajax-post.mjs} +1 -1
  91. package/fesm2015/breeze-client-adapter-ajax-post.mjs.map +1 -0
  92. package/fesm2015/{breeze-client-adapter-data-service-odata.js → breeze-client-adapter-data-service-odata.mjs} +20 -22
  93. package/fesm2015/breeze-client-adapter-data-service-odata.mjs.map +1 -0
  94. package/fesm2015/{breeze-client-adapter-data-service-webapi.js → breeze-client-adapter-data-service-webapi.mjs} +13 -13
  95. package/fesm2015/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
  96. package/fesm2015/{breeze-client-adapter-model-library-backing-store.js → breeze-client-adapter-model-library-backing-store.mjs} +13 -13
  97. package/fesm2015/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
  98. package/fesm2015/{breeze-client-adapter-model-library-ko.js → breeze-client-adapter-model-library-ko.mjs} +13 -13
  99. package/fesm2015/breeze-client-adapter-model-library-ko.mjs.map +1 -0
  100. package/fesm2015/{breeze-client-adapter-uri-builder-json.js → breeze-client-adapter-uri-builder-json.mjs} +8 -8
  101. package/fesm2015/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
  102. package/fesm2015/{breeze-client-adapter-uri-builder-odata.js → breeze-client-adapter-uri-builder-odata.mjs} +85 -86
  103. package/fesm2015/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
  104. package/fesm2015/{breeze-client-mixin-get-entity-graph.js → breeze-client-mixin-get-entity-graph.mjs} +1 -1
  105. package/fesm2015/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
  106. package/fesm2015/{breeze-client-mixin-save-queuing.js → breeze-client-mixin-save-queuing.mjs} +1 -1
  107. package/fesm2015/breeze-client-mixin-save-queuing.mjs.map +1 -0
  108. package/fesm2015/{breeze-client.js → breeze-client.mjs} +417 -422
  109. package/fesm2015/breeze-client.mjs.map +1 -0
  110. package/{fesm5/breeze-client-adapter-ajax-angularjs.js → fesm2020/breeze-client-adapter-ajax-angularjs.mjs} +41 -42
  111. package/fesm2020/breeze-client-adapter-ajax-angularjs.mjs.map +1 -0
  112. package/{fesm5/breeze-client-adapter-ajax-fetch.js → fesm2020/breeze-client-adapter-ajax-fetch.mjs} +44 -43
  113. package/fesm2020/breeze-client-adapter-ajax-fetch.mjs.map +1 -0
  114. package/{fesm5/breeze-client-adapter-ajax-httpclient.js → fesm2020/breeze-client-adapter-ajax-httpclient.mjs} +43 -44
  115. package/fesm2020/breeze-client-adapter-ajax-httpclient.mjs.map +1 -0
  116. package/{fesm5/breeze-client-adapter-ajax-jquery.js → fesm2020/breeze-client-adapter-ajax-jquery.mjs} +18 -19
  117. package/fesm2020/breeze-client-adapter-ajax-jquery.mjs.map +1 -0
  118. package/{fesm5/breeze-client-adapter-ajax-post.js → fesm2020/breeze-client-adapter-ajax-post.mjs} +8 -11
  119. package/fesm2020/breeze-client-adapter-ajax-post.mjs.map +1 -0
  120. package/{fesm5/breeze-client-adapter-data-service-odata.js → fesm2020/breeze-client-adapter-data-service-odata.mjs} +126 -134
  121. package/fesm2020/breeze-client-adapter-data-service-odata.mjs.map +1 -0
  122. package/{fesm5/breeze-client-adapter-data-service-webapi.js → fesm2020/breeze-client-adapter-data-service-webapi.mjs} +38 -42
  123. package/fesm2020/breeze-client-adapter-data-service-webapi.mjs.map +1 -0
  124. package/{fesm5/breeze-client-adapter-model-library-backing-store.js → fesm2020/breeze-client-adapter-model-library-backing-store.mjs} +63 -64
  125. package/fesm2020/breeze-client-adapter-model-library-backing-store.mjs.map +1 -0
  126. package/{fesm5/breeze-client-adapter-model-library-ko.js → fesm2020/breeze-client-adapter-model-library-ko.mjs} +57 -58
  127. package/fesm2020/breeze-client-adapter-model-library-ko.mjs.map +1 -0
  128. package/fesm2020/breeze-client-adapter-uri-builder-json.mjs +91 -0
  129. package/fesm2020/breeze-client-adapter-uri-builder-json.mjs.map +1 -0
  130. package/fesm2020/breeze-client-adapter-uri-builder-odata.mjs +245 -0
  131. package/fesm2020/breeze-client-adapter-uri-builder-odata.mjs.map +1 -0
  132. package/{fesm5/breeze-client-mixin-get-entity-graph.js → fesm2020/breeze-client-mixin-get-entity-graph.mjs} +45 -45
  133. package/fesm2020/breeze-client-mixin-get-entity-graph.mjs.map +1 -0
  134. package/{fesm5/breeze-client-mixin-save-queuing.js → fesm2020/breeze-client-mixin-save-queuing.mjs} +116 -126
  135. package/fesm2020/breeze-client-mixin-save-queuing.mjs.map +1 -0
  136. package/{fesm5/breeze-client.js → fesm2020/breeze-client.mjs} +3403 -3615
  137. package/fesm2020/breeze-client.mjs.map +1 -0
  138. package/mixin-get-entity-graph/{breeze-client-mixin-get-entity-graph.d.ts → index.d.ts} +1 -0
  139. package/mixin-save-queuing/{breeze-client-mixin-save-queuing.d.ts → index.d.ts} +1 -0
  140. package/package.json +126 -12
  141. package/src/entity-metadata.d.ts +6 -4
  142. package/src/entity-query.d.ts +1 -1
  143. package/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.metadata.json +0 -1
  144. package/adapter-ajax-angularjs/package.json +0 -13
  145. package/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.metadata.json +0 -1
  146. package/adapter-ajax-fetch/package.json +0 -13
  147. package/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.metadata.json +0 -1
  148. package/adapter-ajax-httpclient/package.json +0 -17
  149. package/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.metadata.json +0 -1
  150. package/adapter-ajax-jquery/package.json +0 -13
  151. package/adapter-ajax-post/breeze-client-adapter-ajax-post.metadata.json +0 -1
  152. package/adapter-ajax-post/package.json +0 -13
  153. package/adapter-data-service-odata/breeze-client-adapter-data-service-odata.metadata.json +0 -1
  154. package/adapter-data-service-odata/package.json +0 -13
  155. package/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.metadata.json +0 -1
  156. package/adapter-data-service-webapi/package.json +0 -13
  157. package/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.metadata.json +0 -1
  158. package/adapter-model-library-backing-store/package.json +0 -13
  159. package/adapter-model-library-ko/breeze-client-adapter-model-library-ko.metadata.json +0 -1
  160. package/adapter-model-library-ko/package.json +0 -13
  161. package/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.metadata.json +0 -1
  162. package/adapter-uri-builder-json/package.json +0 -13
  163. package/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.metadata.json +0 -1
  164. package/adapter-uri-builder-odata/package.json +0 -13
  165. package/breeze-client.d.ts +0 -8
  166. package/breeze-client.metadata.json +0 -1
  167. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js +0 -190
  168. package/bundles/breeze-client-adapter-ajax-angularjs.umd.js.map +0 -1
  169. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js +0 -2
  170. package/bundles/breeze-client-adapter-ajax-angularjs.umd.min.js.map +0 -1
  171. package/bundles/breeze-client-adapter-ajax-fetch.umd.js +0 -190
  172. package/bundles/breeze-client-adapter-ajax-fetch.umd.js.map +0 -1
  173. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js +0 -2
  174. package/bundles/breeze-client-adapter-ajax-fetch.umd.min.js.map +0 -1
  175. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js +0 -195
  176. package/bundles/breeze-client-adapter-ajax-httpclient.umd.js.map +0 -1
  177. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js +0 -2
  178. package/bundles/breeze-client-adapter-ajax-httpclient.umd.min.js.map +0 -1
  179. package/bundles/breeze-client-adapter-ajax-jquery.umd.js +0 -115
  180. package/bundles/breeze-client-adapter-ajax-jquery.umd.js.map +0 -1
  181. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js +0 -2
  182. package/bundles/breeze-client-adapter-ajax-jquery.umd.min.js.map +0 -1
  183. package/bundles/breeze-client-adapter-ajax-post.umd.js +0 -92
  184. package/bundles/breeze-client-adapter-ajax-post.umd.js.map +0 -1
  185. package/bundles/breeze-client-adapter-ajax-post.umd.min.js +0 -2
  186. package/bundles/breeze-client-adapter-ajax-post.umd.min.js.map +0 -1
  187. package/bundles/breeze-client-adapter-data-service-odata.umd.js +0 -743
  188. package/bundles/breeze-client-adapter-data-service-odata.umd.js.map +0 -1
  189. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js +0 -16
  190. package/bundles/breeze-client-adapter-data-service-odata.umd.min.js.map +0 -1
  191. package/bundles/breeze-client-adapter-data-service-webapi.umd.js +0 -326
  192. package/bundles/breeze-client-adapter-data-service-webapi.umd.js.map +0 -1
  193. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js +0 -16
  194. package/bundles/breeze-client-adapter-data-service-webapi.umd.min.js.map +0 -1
  195. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js +0 -280
  196. package/bundles/breeze-client-adapter-model-library-backing-store.umd.js.map +0 -1
  197. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js +0 -2
  198. package/bundles/breeze-client-adapter-model-library-backing-store.umd.min.js.map +0 -1
  199. package/bundles/breeze-client-adapter-model-library-ko.umd.js +0 -252
  200. package/bundles/breeze-client-adapter-model-library-ko.umd.js.map +0 -1
  201. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js +0 -2
  202. package/bundles/breeze-client-adapter-model-library-ko.umd.min.js.map +0 -1
  203. package/bundles/breeze-client-adapter-uri-builder-json.umd.js +0 -96
  204. package/bundles/breeze-client-adapter-uri-builder-json.umd.js.map +0 -1
  205. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js +0 -2
  206. package/bundles/breeze-client-adapter-uri-builder-json.umd.min.js.map +0 -1
  207. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js +0 -262
  208. package/bundles/breeze-client-adapter-uri-builder-odata.umd.js.map +0 -1
  209. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js +0 -2
  210. package/bundles/breeze-client-adapter-uri-builder-odata.umd.min.js.map +0 -1
  211. package/bundles/breeze-client-mixin-get-entity-graph.umd.js +0 -258
  212. package/bundles/breeze-client-mixin-get-entity-graph.umd.js.map +0 -1
  213. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js +0 -2
  214. package/bundles/breeze-client-mixin-get-entity-graph.umd.min.js.map +0 -1
  215. package/bundles/breeze-client-mixin-save-queuing.umd.js +0 -579
  216. package/bundles/breeze-client-mixin-save-queuing.umd.js.map +0 -1
  217. package/bundles/breeze-client-mixin-save-queuing.umd.min.js +0 -16
  218. package/bundles/breeze-client-mixin-save-queuing.umd.min.js.map +0 -1
  219. package/bundles/breeze-client.umd.js +0 -14094
  220. package/bundles/breeze-client.umd.js.map +0 -1
  221. package/bundles/breeze-client.umd.min.js +0 -16
  222. package/bundles/breeze-client.umd.min.js.map +0 -1
  223. package/esm2015/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -130
  224. package/esm2015/adapter-ajax-angularjs/adapter-core.js +0 -49
  225. package/esm2015/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  226. package/esm2015/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -130
  227. package/esm2015/adapter-ajax-fetch/adapter-core.js +0 -49
  228. package/esm2015/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  229. package/esm2015/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -137
  230. package/esm2015/adapter-ajax-httpclient/adapter-core.js +0 -49
  231. package/esm2015/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  232. package/esm2015/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -103
  233. package/esm2015/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  234. package/esm2015/adapter-ajax-post/adapter-ajax-post.js +0 -77
  235. package/esm2015/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  236. package/esm2015/adapter-data-service-odata/adapter-core.js +0 -49
  237. package/esm2015/adapter-data-service-odata/adapter-data-service-odata.js +0 -459
  238. package/esm2015/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  239. package/esm2015/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -93
  240. package/esm2015/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  241. package/esm2015/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -268
  242. package/esm2015/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  243. package/esm2015/adapter-model-library-ko/adapter-model-library-ko.js +0 -240
  244. package/esm2015/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  245. package/esm2015/adapter-uri-builder-json/adapter-core.js +0 -49
  246. package/esm2015/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -36
  247. package/esm2015/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  248. package/esm2015/adapter-uri-builder-odata/adapter-core.js +0 -49
  249. package/esm2015/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -192
  250. package/esm2015/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  251. package/esm2015/breeze-client.js +0 -9
  252. package/esm2015/index.js +0 -2
  253. package/esm2015/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  254. package/esm2015/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  255. package/esm2015/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  256. package/esm2015/mixin-save-queuing/mixin-save-queuing.js +0 -400
  257. package/esm2015/public_api.js +0 -2
  258. package/esm2015/src/abstract-data-service-adapter.js +0 -296
  259. package/esm2015/src/array.js +0 -4
  260. package/esm2015/src/assert-param.js +0 -312
  261. package/esm2015/src/breeze.js +0 -85
  262. package/esm2015/src/complex-array.js +0 -119
  263. package/esm2015/src/config.js +0 -223
  264. package/esm2015/src/core.js +0 -706
  265. package/esm2015/src/csdl-metadata-parser.js +0 -385
  266. package/esm2015/src/data-service.js +0 -203
  267. package/esm2015/src/data-type.js +0 -444
  268. package/esm2015/src/default-property-interceptor.js +0 -459
  269. package/esm2015/src/entity-action.js +0 -45
  270. package/esm2015/src/entity-aspect.js +0 -806
  271. package/esm2015/src/entity-group.js +0 -187
  272. package/esm2015/src/entity-key.js +0 -116
  273. package/esm2015/src/entity-manager.js +0 -2094
  274. package/esm2015/src/entity-metadata.js +0 -2109
  275. package/esm2015/src/entity-query.js +0 -996
  276. package/esm2015/src/entity-state.js +0 -99
  277. package/esm2015/src/enum.js +0 -141
  278. package/esm2015/src/event.js +0 -256
  279. package/esm2015/src/interface-registry.js +0 -41
  280. package/esm2015/src/key-generator.js +0 -108
  281. package/esm2015/src/local-query-comparison-options.js +0 -65
  282. package/esm2015/src/mapping-context.js +0 -405
  283. package/esm2015/src/naming-convention.js +0 -88
  284. package/esm2015/src/observable-array.js +0 -185
  285. package/esm2015/src/predicate.js +0 -1235
  286. package/esm2015/src/primitive-array.js +0 -87
  287. package/esm2015/src/query-options.js +0 -152
  288. package/esm2015/src/relation-array.js +0 -175
  289. package/esm2015/src/save-options.js +0 -41
  290. package/esm2015/src/unattached-children-map.js +0 -58
  291. package/esm2015/src/validate.js +0 -991
  292. package/esm2015/src/validation-options.js +0 -64
  293. package/esm5/adapter-ajax-angularjs/adapter-ajax-angularjs.js +0 -132
  294. package/esm5/adapter-ajax-angularjs/adapter-core.js +0 -49
  295. package/esm5/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.js +0 -5
  296. package/esm5/adapter-ajax-fetch/adapter-ajax-fetch.js +0 -132
  297. package/esm5/adapter-ajax-fetch/adapter-core.js +0 -49
  298. package/esm5/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.js +0 -5
  299. package/esm5/adapter-ajax-httpclient/adapter-ajax-httpclient.js +0 -139
  300. package/esm5/adapter-ajax-httpclient/adapter-core.js +0 -49
  301. package/esm5/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.js +0 -5
  302. package/esm5/adapter-ajax-jquery/adapter-ajax-jquery.js +0 -105
  303. package/esm5/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.js +0 -5
  304. package/esm5/adapter-ajax-post/adapter-ajax-post.js +0 -81
  305. package/esm5/adapter-ajax-post/breeze-client-adapter-ajax-post.js +0 -5
  306. package/esm5/adapter-data-service-odata/adapter-core.js +0 -49
  307. package/esm5/adapter-data-service-odata/adapter-data-service-odata.js +0 -466
  308. package/esm5/adapter-data-service-odata/breeze-client-adapter-data-service-odata.js +0 -5
  309. package/esm5/adapter-data-service-webapi/adapter-data-service-webapi.js +0 -98
  310. package/esm5/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.js +0 -5
  311. package/esm5/adapter-model-library-backing-store/adapter-model-library-backing-store.js +0 -270
  312. package/esm5/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.js +0 -5
  313. package/esm5/adapter-model-library-ko/adapter-model-library-ko.js +0 -242
  314. package/esm5/adapter-model-library-ko/breeze-client-adapter-model-library-ko.js +0 -5
  315. package/esm5/adapter-uri-builder-json/adapter-core.js +0 -49
  316. package/esm5/adapter-uri-builder-json/adapter-uri-builder-json.js +0 -38
  317. package/esm5/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.js +0 -5
  318. package/esm5/adapter-uri-builder-odata/adapter-core.js +0 -49
  319. package/esm5/adapter-uri-builder-odata/adapter-uri-builder-odata.js +0 -197
  320. package/esm5/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.js +0 -5
  321. package/esm5/breeze-client.js +0 -9
  322. package/esm5/index.js +0 -2
  323. package/esm5/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.js +0 -5
  324. package/esm5/mixin-get-entity-graph/mixin-get-entity-graph.js +0 -269
  325. package/esm5/mixin-save-queuing/breeze-client-mixin-save-queuing.js +0 -5
  326. package/esm5/mixin-save-queuing/mixin-save-queuing.js +0 -412
  327. package/esm5/public_api.js +0 -2
  328. package/esm5/src/abstract-data-service-adapter.js +0 -302
  329. package/esm5/src/array.js +0 -4
  330. package/esm5/src/assert-param.js +0 -317
  331. package/esm5/src/breeze.js +0 -85
  332. package/esm5/src/complex-array.js +0 -119
  333. package/esm5/src/config.js +0 -228
  334. package/esm5/src/core.js +0 -714
  335. package/esm5/src/csdl-metadata-parser.js +0 -385
  336. package/esm5/src/data-service.js +0 -207
  337. package/esm5/src/data-type.js +0 -451
  338. package/esm5/src/default-property-interceptor.js +0 -459
  339. package/esm5/src/entity-action.js +0 -52
  340. package/esm5/src/entity-aspect.js +0 -812
  341. package/esm5/src/entity-group.js +0 -189
  342. package/esm5/src/entity-key.js +0 -118
  343. package/esm5/src/entity-manager.js +0 -2112
  344. package/esm5/src/entity-metadata.js +0 -2144
  345. package/esm5/src/entity-query.js +0 -1023
  346. package/esm5/src/entity-state.js +0 -106
  347. package/esm5/src/enum.js +0 -144
  348. package/esm5/src/event.js +0 -259
  349. package/esm5/src/interface-registry.js +0 -43
  350. package/esm5/src/key-generator.js +0 -111
  351. package/esm5/src/local-query-comparison-options.js +0 -67
  352. package/esm5/src/mapping-context.js +0 -407
  353. package/esm5/src/naming-convention.js +0 -90
  354. package/esm5/src/observable-array.js +0 -201
  355. package/esm5/src/predicate.js +0 -1300
  356. package/esm5/src/primitive-array.js +0 -87
  357. package/esm5/src/query-options.js +0 -167
  358. package/esm5/src/relation-array.js +0 -175
  359. package/esm5/src/save-options.js +0 -43
  360. package/esm5/src/unattached-children-map.js +0 -60
  361. package/esm5/src/validate.js +0 -996
  362. package/esm5/src/validation-options.js +0 -66
  363. package/fesm2015/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  364. package/fesm2015/breeze-client-adapter-ajax-fetch.js.map +0 -1
  365. package/fesm2015/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  366. package/fesm2015/breeze-client-adapter-ajax-jquery.js.map +0 -1
  367. package/fesm2015/breeze-client-adapter-ajax-post.js.map +0 -1
  368. package/fesm2015/breeze-client-adapter-data-service-odata.js.map +0 -1
  369. package/fesm2015/breeze-client-adapter-data-service-webapi.js.map +0 -1
  370. package/fesm2015/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  371. package/fesm2015/breeze-client-adapter-model-library-ko.js.map +0 -1
  372. package/fesm2015/breeze-client-adapter-uri-builder-json.js.map +0 -1
  373. package/fesm2015/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  374. package/fesm2015/breeze-client-mixin-get-entity-graph.js.map +0 -1
  375. package/fesm2015/breeze-client-mixin-save-queuing.js.map +0 -1
  376. package/fesm2015/breeze-client.js.map +0 -1
  377. package/fesm5/breeze-client-adapter-ajax-angularjs.js.map +0 -1
  378. package/fesm5/breeze-client-adapter-ajax-fetch.js.map +0 -1
  379. package/fesm5/breeze-client-adapter-ajax-httpclient.js.map +0 -1
  380. package/fesm5/breeze-client-adapter-ajax-jquery.js.map +0 -1
  381. package/fesm5/breeze-client-adapter-ajax-post.js.map +0 -1
  382. package/fesm5/breeze-client-adapter-data-service-odata.js.map +0 -1
  383. package/fesm5/breeze-client-adapter-data-service-webapi.js.map +0 -1
  384. package/fesm5/breeze-client-adapter-model-library-backing-store.js.map +0 -1
  385. package/fesm5/breeze-client-adapter-model-library-ko.js.map +0 -1
  386. package/fesm5/breeze-client-adapter-uri-builder-json.js +0 -92
  387. package/fesm5/breeze-client-adapter-uri-builder-json.js.map +0 -1
  388. package/fesm5/breeze-client-adapter-uri-builder-odata.js +0 -250
  389. package/fesm5/breeze-client-adapter-uri-builder-odata.js.map +0 -1
  390. package/fesm5/breeze-client-mixin-get-entity-graph.js.map +0 -1
  391. package/fesm5/breeze-client-mixin-save-queuing.js.map +0 -1
  392. package/fesm5/breeze-client.js.map +0 -1
  393. package/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.metadata.json +0 -1
  394. package/mixin-get-entity-graph/package.json +0 -13
  395. package/mixin-save-queuing/breeze-client-mixin-save-queuing.metadata.json +0 -1
  396. package/mixin-save-queuing/package.json +0 -13
  397. package/public_api.d.ts +0 -1
@@ -0,0 +1,296 @@
1
+ import { core } from './core';
2
+ import { config } from './config';
3
+ import { JsonResultsAdapter } from './data-service';
4
+ import { MetadataStore } from './entity-metadata';
5
+ /** For use by breeze plugin authors only. The class is used as the base class for most [[IDataServiceAdapter]] implementations
6
+ @adapter (see [[IDataServiceAdapter]])
7
+ @hidden
8
+ */
9
+ export class AbstractDataServiceAdapter {
10
+ constructor() {
11
+ /**
12
+ Returns a constructor function for a "ChangeRequestInterceptor"
13
+ that can tweak the saveBundle both as it is built and when it is completed
14
+ by a concrete DataServiceAdapater.
15
+
16
+ Initialized with a default, no-op implementation that developers can replace with a
17
+ substantive implementation that changes the individual entity change requests
18
+ or aspects of the entire 'saveBundle' without having to write their own DataService adapters.
19
+ > let adapter = breeze.config.getAdapterInstance('dataService');
20
+ > adapter.changeRequestInterceptor = function (saveContext, saveBundle) {
21
+ > this.getRequest = function (request, entity, index) {
22
+ > // alter the request that the adapter prepared for this entity
23
+ > // based on the entity, saveContext, and saveBundle
24
+ > // e.g., add a custom header or prune the originalValuesMap
25
+ > return request;
26
+ > };
27
+ > this.done = function (requests) {
28
+ > // alter the array of requests representing the entire change-set
29
+ > // based on the saveContext and saveBundle
30
+ > };
31
+ > }
32
+
33
+ @param saveContext - The BreezeJS "context" for the save operation.
34
+ @param saveBundle - Contains the array of entities-to-be-saved (AKA, the entity change-set).
35
+ @return Constructor for a "ChangeRequestInterceptor".
36
+ **/
37
+ this.changeRequestInterceptor = DefaultChangeRequestInterceptor;
38
+ this.jsonResultsAdapter = new JsonResultsAdapter({
39
+ name: "noop",
40
+ visitNode: function ( /* node, mappingContext, nodeContext */) {
41
+ return {};
42
+ }
43
+ });
44
+ }
45
+ // TODO use interface
46
+ checkForRecomposition(interfaceInitializedArgs) {
47
+ if (interfaceInitializedArgs.interfaceName === "ajax" && interfaceInitializedArgs.isDefault) {
48
+ this.initialize();
49
+ }
50
+ }
51
+ initialize() {
52
+ this.ajaxImpl = config.getAdapterInstance("ajax");
53
+ // don't cache 'ajax' because then we would need to ".bind" it, and don't want to because of brower support issues.
54
+ if (this.ajaxImpl && this.ajaxImpl.ajax) {
55
+ return;
56
+ }
57
+ throw new Error("Unable to find ajax adapter for dataservice adapter '" + (this.name || '') + "'.");
58
+ }
59
+ fetchMetadata(metadataStore, dataService) {
60
+ let serviceName = dataService.serviceName;
61
+ let url = dataService.qualifyUrl("Metadata");
62
+ let promise = new Promise((resolve, reject) => {
63
+ this.ajaxImpl.ajax({
64
+ type: "GET",
65
+ url: url,
66
+ dataType: 'json',
67
+ success: (httpResponse) => {
68
+ // might have been fetched by another query
69
+ if (metadataStore.hasMetadataFor(serviceName)) {
70
+ return resolve("already fetched");
71
+ }
72
+ let data = httpResponse.data;
73
+ let metadata;
74
+ try {
75
+ metadata = typeof (data) === "string" ? JSON.parse(data) : data;
76
+ metadataStore.importMetadata(metadata);
77
+ }
78
+ catch (e) {
79
+ let errMsg = "Unable to either parse or import metadata: " + e.message;
80
+ handleHttpError(reject, httpResponse, "Metadata query failed for: " + url + ". " + errMsg);
81
+ }
82
+ // import may have brought in the service.
83
+ if (!metadataStore.hasMetadataFor(serviceName)) {
84
+ metadataStore.addDataService(dataService);
85
+ }
86
+ resolve(metadata);
87
+ },
88
+ error: (httpResponse) => {
89
+ handleHttpError(reject, httpResponse, "Metadata query failed for: " + url);
90
+ }
91
+ });
92
+ });
93
+ return promise;
94
+ }
95
+ executeQuery(mappingContext) {
96
+ mappingContext.adapter = this;
97
+ let promise = new Promise((resolve, reject) => {
98
+ let url = mappingContext.getUrl();
99
+ let params = {
100
+ type: "GET",
101
+ url: url,
102
+ params: mappingContext.query.parameters,
103
+ dataType: 'json',
104
+ success: function (httpResponse) {
105
+ let data = httpResponse.data;
106
+ try {
107
+ let rData;
108
+ let results = data && (data.results || data.Results);
109
+ if (results) {
110
+ rData = { results: results, inlineCount: data.inlineCount || data.InlineCount,
111
+ httpResponse: httpResponse, query: mappingContext.query };
112
+ }
113
+ else {
114
+ rData = { results: data, httpResponse: httpResponse, query: mappingContext.query };
115
+ }
116
+ resolve(rData);
117
+ }
118
+ catch (e) {
119
+ if (e instanceof Error) {
120
+ reject(e);
121
+ }
122
+ else {
123
+ handleHttpError(reject, httpResponse);
124
+ }
125
+ }
126
+ },
127
+ error: function (httpResponse) {
128
+ handleHttpError(reject, httpResponse);
129
+ },
130
+ crossDomain: false
131
+ };
132
+ if (mappingContext.dataService.useJsonp) {
133
+ params.dataType = 'jsonp';
134
+ params.crossDomain = true;
135
+ }
136
+ this.ajaxImpl.ajax(params);
137
+ });
138
+ return promise;
139
+ }
140
+ saveChanges(saveContext, saveBundle) {
141
+ let adapter = saveContext.adapter = this;
142
+ let saveBundleSer = adapter._prepareSaveBundle(saveContext, saveBundle);
143
+ let bundle = JSON.stringify(saveBundleSer);
144
+ let url = saveContext.dataService.qualifyUrl(saveContext.resourceName);
145
+ let promise = new Promise((resolve, reject) => {
146
+ this.ajaxImpl.ajax({
147
+ type: "POST",
148
+ url: url,
149
+ dataType: 'json',
150
+ contentType: "application/json",
151
+ data: bundle,
152
+ success: function (httpResponse) {
153
+ httpResponse.saveContext = saveContext;
154
+ let data = httpResponse.data;
155
+ if (data.Errors || data.errors) {
156
+ handleHttpError(reject, httpResponse);
157
+ }
158
+ else {
159
+ let saveResult = adapter._prepareSaveResult(saveContext, data);
160
+ saveResult.httpResponse = httpResponse;
161
+ resolve(saveResult);
162
+ }
163
+ },
164
+ error: function (httpResponse) {
165
+ httpResponse.saveContext = saveContext;
166
+ handleHttpError(reject, httpResponse);
167
+ }
168
+ });
169
+ });
170
+ return promise;
171
+ }
172
+ /** Abstract method that needs to be overwritten in any concrete DataServiceAdapter subclass.
173
+ The return value from this method should be a serializable object that will be sent to the server after calling JSON.stringify on it.
174
+ */
175
+ _prepareSaveBundle(saveContext, saveBundle) {
176
+ // The implementor should call _createChangeRequestInterceptor
177
+ throw new Error("Need a concrete implementation of _prepareSaveBundle");
178
+ }
179
+ /** @hidden @internal */
180
+ _createChangeRequestInterceptor(saveContext, saveBundle) {
181
+ let adapter = saveContext.adapter;
182
+ let cri = adapter.changeRequestInterceptor;
183
+ let isFn = core.isFunction;
184
+ if (isFn(cri)) {
185
+ let pre = adapter.name + " DataServiceAdapter's ChangeRequestInterceptor";
186
+ let post = " is missing or not a function.";
187
+ let interceptor = new cri(saveContext, saveBundle);
188
+ if (!isFn(interceptor.getRequest)) {
189
+ throw new Error(pre + '.getRequest' + post);
190
+ }
191
+ if (!isFn(interceptor.done)) {
192
+ throw new Error(pre + '.done' + post);
193
+ }
194
+ return interceptor;
195
+ }
196
+ else {
197
+ return new DefaultChangeRequestInterceptor(saveContext, saveBundle);
198
+ }
199
+ }
200
+ /** Abstract method that needs to be overwritten in any concrete DataServiceAdapter sublclass.
201
+ This method needs to take the result returned the server and convert it into an ISaveResult.
202
+ */
203
+ _prepareSaveResult(saveContext, data) {
204
+ throw new Error("Need a concrete implementation of _prepareSaveResult");
205
+ }
206
+ /** Utility method that may be used in any concrete DataServiceAdapter sublclass to handle any
207
+ http connection issues.
208
+ */
209
+ // Put this at the bottom of your http error analysis
210
+ static _catchNoConnectionError(err) {
211
+ if (err.status === 0 && err.message == null) {
212
+ err.message = "HTTP response status 0 and no message. " +
213
+ "Likely did not or could not reach server. Is the server running?";
214
+ }
215
+ }
216
+ }
217
+ function handleHttpError(reject, httpResponse, messagePrefix) {
218
+ let err = createError(httpResponse);
219
+ AbstractDataServiceAdapter._catchNoConnectionError(err);
220
+ if (messagePrefix) {
221
+ err.message = messagePrefix + "; " + err.message;
222
+ }
223
+ reject(err);
224
+ }
225
+ function createError(httpResponse) {
226
+ let err = new Error();
227
+ err.httpResponse = httpResponse;
228
+ err.status = httpResponse.status;
229
+ let errObj = httpResponse.data;
230
+ if (!errObj) {
231
+ err.message = httpResponse.error && httpResponse.error.toString();
232
+ return err;
233
+ }
234
+ // some ajax providers will convert errant result into an object (angularjs), others will not (jQuery)
235
+ // if not do it here.
236
+ if (typeof errObj === "string") {
237
+ try {
238
+ errObj = JSON.parse(errObj);
239
+ }
240
+ catch (e) {
241
+ // sometimes httpResponse.data is just the error message itself
242
+ err.message = errObj;
243
+ return err;
244
+ }
245
+ }
246
+ let saveContext = httpResponse.saveContext;
247
+ // if any of the follow properties exist the source is .NET
248
+ let tmp = errObj.Message || errObj.ExceptionMessage || errObj.EntityErrors || errObj.Errors;
249
+ let isDotNet = !!tmp;
250
+ let message, entityErrors;
251
+ if (!isDotNet) {
252
+ message = errObj.message;
253
+ entityErrors = errObj.errors || errObj.entityErrors;
254
+ }
255
+ else {
256
+ let tmp = errObj;
257
+ do {
258
+ // .NET exceptions can provide both ExceptionMessage and Message but ExceptionMethod if it
259
+ // exists has a more detailed message.
260
+ message = tmp.ExceptionMessage || tmp.Message;
261
+ tmp = tmp.InnerException;
262
+ } while (tmp);
263
+ // .EntityErrors will only occur as a result of an EntityErrorsException being deliberately thrown on the server
264
+ entityErrors = errObj.Errors || errObj.EntityErrors;
265
+ entityErrors = entityErrors && entityErrors.map(function (e) {
266
+ return {
267
+ errorName: e.ErrorName,
268
+ entityTypeName: MetadataStore.normalizeTypeName(e.EntityTypeName),
269
+ keyValues: e.KeyValues,
270
+ propertyName: e.PropertyName,
271
+ errorMessage: e.ErrorMessage,
272
+ custom: e.Custom
273
+ };
274
+ });
275
+ }
276
+ if (saveContext && entityErrors) {
277
+ let propNameFn = saveContext.entityManager.metadataStore.namingConvention.serverPropertyNameToClient;
278
+ entityErrors.forEach(function (e) {
279
+ e.propertyName = e.propertyName && propNameFn(e.propertyName);
280
+ });
281
+ err.entityErrors = entityErrors;
282
+ }
283
+ err.message = message || "Server side errors encountered - see the entityErrors collection on this object for more detail";
284
+ return err;
285
+ }
286
+ /** This is a default, no-op implementation that developers can replace. */
287
+ class DefaultChangeRequestInterceptor {
288
+ constructor(saveContext, saveBundle) {
289
+ }
290
+ getRequest(request, entity, index) {
291
+ return request;
292
+ }
293
+ done(requests) {
294
+ }
295
+ }
296
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtZGF0YS1zZXJ2aWNlLWFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWJzdHJhY3QtZGF0YS1zZXJ2aWNlLWFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBS2xDLE9BQU8sRUFBZSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVsRDs7O0VBR0U7QUFDRixNQUFNLE9BQWdCLDBCQUEwQjtJQVE5QztRQXdKQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQXlCRztRQUNILDZCQUF3QixHQUFpQywrQkFBK0IsQ0FBQztRQTJDekYsdUJBQWtCLEdBQUcsSUFBSSxrQkFBa0IsQ0FBQztZQUMxQyxJQUFJLEVBQUUsTUFBTTtZQUVaLFNBQVMsRUFBRSxXQUFVLHVDQUF1QztnQkFDMUQsT0FBTyxFQUFFLENBQUM7WUFDWixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBbE9ILENBQUM7SUFHRCxxQkFBcUI7SUFDckIscUJBQXFCLENBQUMsd0JBQTZCO1FBQ2pELElBQUksd0JBQXdCLENBQUMsYUFBYSxLQUFLLE1BQU0sSUFBSSx3QkFBd0IsQ0FBQyxTQUFTLEVBQUU7WUFDM0YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBYyxNQUFNLENBQUcsQ0FBQztRQUVqRSxtSEFBbUg7UUFDbkgsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFO1lBQ3ZDLE9BQU87U0FDUjtRQUNELE1BQU0sSUFBSSxL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Q0FBQztnQkFDakUsU0FBUyxFQUFFLENBQUMsQ0FBQyxTQUFTO2dCQUN0QixZQUFZLEVBQUUsQ0FBQyxDQUFDLFlBQVk7Z0JBQzVCLFlBQVksRUFBRSxDQUFDLENBQUMsWUFBWTtnQkFDNUIsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNO2FBQ2pCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztLQUNKO0lBRUQsSUFBSSxXQUFXLElBQUksWUFBWSxFQUFFO1FBRS9CLElBQUksVUFBVSxHQUFHLFdBQVcsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixDQUFDO1FBQ3JHLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQzlCLENBQUMsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLFlBQVksSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO1FBQ0YsR0FBMkIsQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO0tBQzFEO0lBRUQsR0FBRyxDQUFDLE9BQU8sR0FBRyxPQUFPLElBQUksaUdBQWlHLENBQUM7SUFDM0gsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBR0QsMkVBQTJFO0FBQzNFLE1BQU0sK0JBQStCO0lBQ25DLFlBQVksV0FBd0IsRUFBRSxVQUFzQjtJQUU1RCxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQVksRUFBRSxNQUFjLEVBQUUsS0FBYTtRQUNwRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQWtCO0lBQ3ZCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvcmUgfSBmcm9tICcuL2NvcmUnO1xyXG5pbXBvcnQgeyBjb25maWcgfSBmcm9tICcuL2NvbmZpZyc7XHJcbmltcG9ydCB7IEVudGl0eVF1ZXJ5IH0gZnJvbSAnLi9lbnRpdHktcXVlcnknO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZUFkYXB0ZXIsIEFqYXhBZGFwdGVyLCBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3JDdG9yLCBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3IgfSBmcm9tICcuL2ludGVyZmFjZS1yZWdpc3RyeSc7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4vZW50aXR5LWFzcGVjdCc7XHJcbmltcG9ydCB7IE1hcHBpbmdDb250ZXh0IH0gZnJvbSAnLi9tYXBwaW5nLWNvbnRleHQnO1xyXG5pbXBvcnQgeyBEYXRhU2VydmljZSwgSnNvblJlc3VsdHNBZGFwdGVyIH0gZnJvbSAnLi9kYXRhLXNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwUmVzcG9uc2UsIFNhdmVDb250ZXh0LCBTYXZlQnVuZGxlLCBTZXJ2ZXJFcnJvciwgU2F2ZVJlc3VsdCwgU2F2ZUVycm9yRnJvbVNlcnZlciwgUXVlcnlSZXN1bHQgfSBmcm9tICcuL2VudGl0eS1tYW5hZ2VyJztcclxuaW1wb3J0IHsgTWV0YWRhdGFTdG9yZSB9IGZyb20gJy4vZW50aXR5LW1ldGFkYXRhJztcclxuXHJcbi8qKiBGb3IgdXNlIGJ5IGJyZWV6ZSBwbHVnaW4gYXV0aG9ycyBvbmx5LiAgVGhlIGNsYXNzIGlzIHVzZWQgYXMgdGhlIGJhc2UgY2xhc3MgZm9yIG1vc3QgW1tJRGF0YVNlcnZpY2VBZGFwdGVyXV0gaW1wbGVtZW50YXRpb25zXHJcbkBhZGFwdGVyIChzZWUgW1tJRGF0YVNlcnZpY2VBZGFwdGVyXV0pICAgIFxyXG5AaGlkZGVuXHJcbiovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdERhdGFTZXJ2aWNlQWRhcHRlciBpbXBsZW1lbnRzIERhdGFTZXJ2aWNlQWRhcHRlciB7XHJcbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgXyRpbXBsPzogYW55O1xyXG4gIC8qKiBUaGUgbmFtZSBvZiB0aGlzIGFkYXB0ZXIuICovXHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIC8qKiBUaGUgW1tJQWpheEFkYXB0ZXJdXSB1c2VkIGJ5IHRoaXMgW1tJRGF0YVNlcnZpY2VBZGFwdGVyXV0uICovXHJcbiAgYWpheEltcGw6IEFqYXhBZGFwdGVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcblxyXG5cclxuICAvLyBUT0RPIHVzZSBpbnRlcmZhY2VcclxuICBjaGVja0ZvclJlY29tcG9zaXRpb24oaW50ZXJmYWNlSW5pdGlhbGl6ZWRBcmdzOiBhbnkpIHtcclxuICAgIGlmIChpbnRlcmZhY2VJbml0aWFsaXplZEFyZ3MuaW50ZXJmYWNlTmFtZSA9PT0gXCJhamF4XCIgJiYgaW50ZXJmYWNlSW5pdGlhbGl6ZWRBcmdzLmlzRGVmYXVsdCkge1xyXG4gICAgICB0aGlzLmluaXRpYWxpemUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGluaXRpYWxpemUoKSB7XHJcbiAgICB0aGlzLmFqYXhJbXBsID0gY29uZmlnLmdldEFkYXB0ZXJJbnN0YW5jZTxBamF4QWRhcHRlcj4oXCJhamF4XCIpICE7XHJcblxyXG4gICAgLy8gZG9uJ3QgY2FjaGUgJ2FqYXgnIGJlY2F1c2UgdGhlbiB3ZSB3b3VsZCBuZWVkIHRvIFwiLmJpbmRcIiBpdCwgYW5kIGRvbid0IHdhbnQgdG8gYmVjYXVzZSBvZiBicm93ZXIgc3VwcG9ydCBpc3N1ZXMuXHJcbiAgICBpZiAodGhpcy5hamF4SW1wbCAmJiB0aGlzLmFqYXhJbXBsLmFqYXgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGZpbmQgYWpheCBhZGFwdGVyIGZvciBkYXRhc2VydmljZSBhZGFwdGVyICdcIiArICh0aGlzLm5hbWUgfHwgJycpICsgXCInLlwiKTtcclxuICB9XHJcblxyXG4gIGZldGNoTWV0YWRhdGEobWV0YWRhdGFTdG9yZTogTWV0YWRhdGFTdG9yZSwgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlKSB7XHJcbiAgICBsZXQgc2VydmljZU5hbWUgPSBkYXRhU2VydmljZS5zZXJ2aWNlTmFtZTtcclxuICAgIGxldCB1cmwgPSBkYXRhU2VydmljZS5xdWFsaWZ5VXJsKFwiTWV0YWRhdGFcIik7XHJcblxyXG4gICAgbGV0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblxyXG4gICAgICB0aGlzLmFqYXhJbXBsLmFqYXgoe1xyXG4gICAgICAgIHR5cGU6IFwiR0VUXCIsXHJcbiAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgZGF0YVR5cGU6ICdqc29uJyxcclxuICAgICAgICBzdWNjZXNzOiAoaHR0cFJlc3BvbnNlOiBIdHRwUmVzcG9uc2UpID0+IHtcclxuXHJcbiAgICAgICAgICAvLyBtaWdodCBoYXZlIGJlZW4gZmV0Y2hlZCBieSBhbm90aGVyIHF1ZXJ5XHJcbiAgICAgICAgICBpZiAobWV0YWRhdGFTdG9yZS5oYXNNZXRhZGF0YUZvcihzZXJ2aWNlTmFtZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoXCJhbHJlYWR5IGZldGNoZWRcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgZGF0YSA9IGh0dHBSZXNwb25zZS5kYXRhO1xyXG4gICAgICAgICAgbGV0IG1ldGFkYXRhOiBhbnk7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBtZXRhZGF0YSA9IHR5cGVvZiAoZGF0YSkgPT09IFwic3RyaW5nXCIgPyBKU09OLnBhcnNlKGRhdGEpIDogZGF0YTtcclxuICAgICAgICAgICAgbWV0YWRhdGFTdG9yZS5pbXBvcnRNZXRhZGF0YShtZXRhZGF0YSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGxldCBlcnJNc2cgPSBcIlVuYWJsZSB0byBlaXRoZXIgcGFyc2Ugb3IgaW1wb3J0IG1ldGFkYXRhOiBcIiArIGUubWVzc2FnZTtcclxuICAgICAgICAgICAgaGFuZGxlSHR0cEVycm9yKHJlamVjdCwgaHR0cFJlc3BvbnNlLCBcIk1ldGFkYXRhIHF1ZXJ5IGZhaWxlZCBmb3I6IFwiICsgdXJsICsgXCIuIFwiICsgZXJyTXNnKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBpbXBvcnQgbWF5IGhhdmUgYnJvdWdodCBpbiB0aGUgc2VydmljZS5cclxuICAgICAgICAgIGlmICghbWV0YWRhdGFTdG9yZS5oYXNNZXRhZGF0YUZvcihzZXJ2aWNlTmFtZSkpIHtcclxuICAgICAgICAgICAgbWV0YWRhdGFTdG9yZS5hZGREYXRhU2VydmljZShkYXRhU2VydmljZSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgcmVzb2x2ZShtZXRhZGF0YSk7XHJcblxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChodHRwUmVzcG9uc2U6IEh0dHBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaGFuZGxlSHR0cEVycm9yKHJlamVjdCwgaHR0cFJlc3BvbnNlLCBcIk1ldGFkYXRhIHF1ZXJ5IGZhaWxlZCBmb3I6IFwiICsgdXJsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcHJvbWlzZTtcclxuICB9XHJcblxyXG4gIGV4ZWN1dGVRdWVyeShtYXBwaW5nQ29udGV4dDogTWFwcGluZ0NvbnRleHQpIHtcclxuICAgIG1hcHBpbmdDb250ZXh0LmFkYXB0ZXIgPSB0aGlzO1xyXG4gICAgbGV0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxRdWVyeVJlc3VsdD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBsZXQgdXJsID0gbWFwcGluZ0NvbnRleHQuZ2V0VXJsKCk7XHJcblxyXG4gICAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICAgIHR5cGU6IFwiR0VUXCIsXHJcbiAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgcGFyYW1zOiAobWFwcGluZ0NvbnRleHQucXVlcnkgYXMgRW50aXR5UXVlcnkpLnBhcmFtZXRlcnMsXHJcbiAgICAgICAgZGF0YVR5cGU6ICdqc29uJyxcclxuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoaHR0cFJlc3BvbnNlOiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgICAgIGxldCBkYXRhID0gaHR0cFJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsZXQgckRhdGE6IFF1ZXJ5UmVzdWx0O1xyXG4gICAgICAgICAgICBsZXQgcmVzdWx0cyA9IGRhdGEgJiYgKGRhdGEucmVzdWx0cyB8fCBkYXRhLlJlc3VsdHMpO1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0cykge1xyXG4gICAgICAgICAgICAgIHJEYXRhID0geyByZXN1bHRzOiByZXN1bHRzLCBpbmxpbmVDb3VudDogZGF0YS5pbmxpbmVDb3VudCB8fCBkYXRhLklubGluZUNvdW50LCBcclxuICAgICAgICAgICAgICAgIGh0dHBSZXNwb25zZTogaHR0cFJlc3BvbnNlLCBxdWVyeTogbWFwcGluZ0NvbnRleHQucXVlcnkgfTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByRGF0YSA9IHsgcmVzdWx0czogZGF0YSwgaHR0cFJlc3BvbnNlOiBodHRwUmVzcG9uc2UsIHF1ZXJ5OiBtYXBwaW5nQ29udGV4dC5xdWVyeSB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKHJEYXRhKTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBFcnJvcikge1xyXG4gICAgICAgICAgICAgIHJlamVjdChlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBoYW5kbGVIdHRwRXJyb3IocmVqZWN0LCBodHRwUmVzcG9uc2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IGZ1bmN0aW9uIChodHRwUmVzcG9uc2U6IEh0dHBSZXNwb25zZSkge1xyXG4gICAgICAgICAgaGFuZGxlSHR0cEVycm9yKHJlamVjdCwgaHR0cFJlc3BvbnNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNyb3NzRG9tYWluOiBmYWxzZVxyXG4gICAgICB9O1xyXG4gICAgICBpZiAobWFwcGluZ0NvbnRleHQuZGF0YVNlcnZpY2UudXNlSnNvbnApIHtcclxuICAgICAgICBwYXJhbXMuZGF0YVR5cGUgPSAnanNvbnAnO1xyXG4gICAgICAgIHBhcmFtcy5jcm9zc0RvbWFpbiA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5hamF4SW1wbC5hamF4KHBhcmFtcyk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBwcm9taXNlO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUNoYW5nZXMoc2F2ZUNvbnRleHQ6IFNhdmVDb250ZXh0LCBzYXZlQnVuZGxlOiBTYXZlQnVuZGxlKSB7XHJcbiAgICBsZXQgYWRhcHRlciA9IHNhdmVDb250ZXh0LmFkYXB0ZXIgPSB0aGlzO1xyXG5cclxuICAgIGxldCBzYXZlQnVuZGxlU2VyID0gYWRhcHRlci5fcHJlcGFyZVNhdmVCdW5kbGUoc2F2ZUNvbnRleHQsIHNhdmVCdW5kbGUpO1xyXG4gICAgbGV0IGJ1bmRsZSA9IEpTT04uc3RyaW5naWZ5KHNhdmVCdW5kbGVTZXIpO1xyXG5cclxuICAgIGxldCB1cmwgPSBzYXZlQ29udGV4dC5kYXRhU2VydmljZS5xdWFsaWZ5VXJsKHNhdmVDb250ZXh0LnJlc291cmNlTmFtZSk7XHJcbiAgICBsZXQgcHJvbWlzZSA9IG5ldyBQcm9taXNlPFNhdmVSZXN1bHQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5hamF4SW1wbC5hamF4KHtcclxuICAgICAgICB0eXBlOiBcIlBPU1RcIixcclxuICAgICAgICB1cmw6IHVybCxcclxuICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxyXG4gICAgICAgIGNvbnRlbnRUeXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIixcclxuICAgICAgICBkYXRhOiBidW5kbGUsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGh0dHBSZXNwb25zZTogSHR0cFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICBodHRwUmVzcG9uc2Uuc2F2ZUNvbnRleHQgPSBzYXZlQ29udGV4dDtcclxuICAgICAgICAgIGxldCBkYXRhID0gaHR0cFJlc3BvbnNlLmRhdGE7XHJcbiAgICAgICAgICBpZiAoZGF0YS5FcnJvcnMgfHwgZGF0YS5lcnJvcnMpIHtcclxuICAgICAgICAgICAgaGFuZGxlSHR0cEVycm9yKHJlamVjdCwgaHR0cFJlc3BvbnNlKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGxldCBzYXZlUmVzdWx0ID0gYWRhcHRlci5fcHJlcGFyZVNhdmVSZXN1bHQoc2F2ZUNvbnRleHQsIGRhdGEpO1xyXG4gICAgICAgICAgICBzYXZlUmVzdWx0Lmh0dHBSZXNwb25zZSA9IGh0dHBSZXNwb25zZTtcclxuICAgICAgICAgICAgcmVzb2x2ZShzYXZlUmVzdWx0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiBmdW5jdGlvbiAoaHR0cFJlc3BvbnNlOiBIdHRwUmVzcG9uc2UpIHtcclxuICAgICAgICAgIGh0dHBSZXNwb25zZS5zYXZlQ29udGV4dCA9IHNhdmVDb250ZXh0O1xyXG4gICAgICAgICAgaGFuZGxlSHR0cEVycm9yKHJlamVjdCwgaHR0cFJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHByb21pc2U7XHJcbiAgfVxyXG5cclxuICAvKiogQWJzdHJhY3QgbWV0aG9kIHRoYXQgbmVlZHMgdG8gYmUgb3ZlcndyaXR0ZW4gaW4gYW55IGNvbmNyZXRlIERhdGFTZXJ2aWNlQWRhcHRlciBzdWJjbGFzcy4gXHJcbiAgVGhlIHJldHVybiB2YWx1ZSBmcm9tIHRoaXMgbWV0aG9kIHNob3VsZCBiZSBhIHNlcmlhbGl6YWJsZSBvYmplY3QgdGhhdCB3aWxsIGJlIHNlbnQgdG8gdGhlIHNlcnZlciBhZnRlciBjYWxsaW5nIEpTT04uc3RyaW5naWZ5IG9uIGl0LlxyXG4gICovXHJcbiAgX3ByZXBhcmVTYXZlQnVuZGxlKHNhdmVDb250ZXh0OiBTYXZlQ29udGV4dCwgc2F2ZUJ1bmRsZTogU2F2ZUJ1bmRsZSk6IGFueSB7XHJcbiAgICAvLyBUaGUgaW1wbGVtZW50b3Igc2hvdWxkIGNhbGwgX2NyZWF0ZUNoYW5nZVJlcXVlc3RJbnRlcmNlcHRvclxyXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTmVlZCBhIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIF9wcmVwYXJlU2F2ZUJ1bmRsZVwiKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgYSBjb25zdHJ1Y3RvciBmdW5jdGlvbiBmb3IgYSBcIkNoYW5nZVJlcXVlc3RJbnRlcmNlcHRvclwiXHJcbiAgdGhhdCBjYW4gdHdlYWsgdGhlIHNhdmVCdW5kbGUgYm90aCBhcyBpdCBpcyBidWlsdCBhbmQgd2hlbiBpdCBpcyBjb21wbGV0ZWRcclxuICBieSBhIGNvbmNyZXRlIERhdGFTZXJ2aWNlQWRhcGF0ZXIuXHJcblxyXG4gIEluaXRpYWxpemVkIHdpdGggYSBkZWZhdWx0LCBuby1vcCBpbXBsZW1lbnRhdGlvbiB0aGF0IGRldmVsb3BlcnMgY2FuIHJlcGxhY2Ugd2l0aCBhXHJcbiAgc3Vic3RhbnRpdmUgaW1wbGVtZW50YXRpb24gdGhhdCBjaGFuZ2VzIHRoZSBpbmRpdmlkdWFsIGVudGl0eSBjaGFuZ2UgcmVxdWVzdHNcclxuICBvciBhc3BlY3RzIG9mIHRoZSBlbnRpcmUgJ3NhdmVCdW5kbGUnIHdpdGhvdXQgaGF2aW5nIHRvIHdyaXRlIHRoZWlyIG93biBEYXRhU2VydmljZSBhZGFwdGVycy5cclxuICA+ICAgICBsZXQgYWRhcHRlciA9IGJyZWV6ZS5jb25maWcuZ2V0QWRhcHRlckluc3RhbmNlKCdkYXRhU2VydmljZScpO1xyXG4gID4gICAgIGFkYXB0ZXIuY2hhbmdlUmVxdWVzdEludGVyY2VwdG9yID0gZnVuY3Rpb24gKHNhdmVDb250ZXh0LCBzYXZlQnVuZGxlKSB7XHJcbiAgPiAgICAgICAgIHRoaXMuZ2V0UmVxdWVzdCA9IGZ1bmN0aW9uIChyZXF1ZXN0LCBlbnRpdHksIGluZGV4KSB7XHJcbiAgPiAgICAgICAgICAgIC8vIGFsdGVyIHRoZSByZXF1ZXN0IHRoYXQgdGhlIGFkYXB0ZXIgcHJlcGFyZWQgZm9yIHRoaXMgZW50aXR5XHJcbiAgPiAgICAgICAgICAgIC8vIGJhc2VkIG9uIHRoZSBlbnRpdHksIHNhdmVDb250ZXh0LCBhbmQgc2F2ZUJ1bmRsZVxyXG4gID4gICAgICAgICAgICAvLyBlLmcuLCBhZGQgYSBjdXN0b20gaGVhZGVyIG9yIHBydW5lIHRoZSBvcmlnaW5hbFZhbHVlc01hcFxyXG4gID4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdDtcclxuICA+ICAgICAgICB9O1xyXG4gID4gICAgICAgIHRoaXMuZG9uZSA9IGZ1bmN0aW9uIChyZXF1ZXN0cykge1xyXG4gID4gICAgICAgICAgICAvLyBhbHRlciB0aGUgYXJyYXkgb2YgcmVxdWVzdHMgcmVwcmVzZW50aW5nIHRoZSBlbnRpcmUgY2hhbmdlLXNldFxyXG4gID4gICAgICAgICAgICAvLyBiYXNlZCBvbiB0aGUgc2F2ZUNvbnRleHQgYW5kIHNhdmVCdW5kbGVcclxuICA+ICAgICAgICB9O1xyXG4gID4gICAgIH1cclxuXHJcbiAgQHBhcmFtIHNhdmVDb250ZXh0IC0gVGhlIEJyZWV6ZUpTIFwiY29udGV4dFwiIGZvciB0aGUgc2F2ZSBvcGVyYXRpb24uXHJcbiAgQHBhcmFtIHNhdmVCdW5kbGUgLSBDb250YWlucyB0aGUgYXJyYXkgb2YgZW50aXRpZXMtdG8tYmUtc2F2ZWQgKEFLQSwgdGhlIGVudGl0eSBjaGFuZ2Utc2V0KS5cclxuICBAcmV0dXJuIENvbnN0cnVjdG9yIGZvciBhIFwiQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yXCIuXHJcbiAgKiovXHJcbiAgY2hhbmdlUmVxdWVzdEludGVyY2VwdG9yOiBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3JDdG9yID0gRGVmYXVsdENoYW5nZVJlcXVlc3RJbnRlcmNlcHRvcjtcclxuXHJcbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgX2NyZWF0ZUNoYW5nZVJlcXVlc3RJbnRlcmNlcHRvcihzYXZlQ29udGV4dDogU2F2ZUNvbnRleHQsIHNhdmVCdW5kbGU6IFNhdmVCdW5kbGUpIHtcclxuICAgIGxldCBhZGFwdGVyID0gc2F2ZUNvbnRleHQuYWRhcHRlciE7XHJcbiAgICBsZXQgY3JpID0gYWRhcHRlci5jaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3I7XHJcbiAgICBsZXQgaXNGbiA9IGNvcmUuaXNGdW5jdGlvbjtcclxuXHJcbiAgICBpZiAoaXNGbihjcmkpKSB7XHJcbiAgICAgIGxldCBwcmUgPSBhZGFwdGVyLm5hbWUgKyBcIiBEYXRhU2VydmljZUFkYXB0ZXIncyBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3JcIjtcclxuICAgICAgbGV0IHBvc3QgPSBcIiBpcyBtaXNzaW5nIG9yIG5vdCBhIGZ1bmN0aW9uLlwiO1xyXG4gICAgICBsZXQgaW50ZXJjZXB0b3IgPSBuZXcgY3JpKHNhdmVDb250ZXh0LCBzYXZlQnVuZGxlKTtcclxuICAgICAgaWYgKCFpc0ZuKGludGVyY2VwdG9yLmdldFJlcXVlc3QpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHByZSArICcuZ2V0UmVxdWVzdCcgKyBwb3N0KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIWlzRm4oaW50ZXJjZXB0b3IuZG9uZSkpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IocHJlICsgJy5kb25lJyArIHBvc3QpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBpbnRlcmNlcHRvcjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBuZXcgRGVmYXVsdENoYW5nZVJlcXVlc3RJbnRlcmNlcHRvcihzYXZlQ29udGV4dCwgc2F2ZUJ1bmRsZSkgYXMgQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEFic3RyYWN0IG1ldGhvZCB0aGF0IG5lZWRzIHRvIGJlIG92ZXJ3cml0dGVuIGluIGFueSBjb25jcmV0ZSBEYXRhU2VydmljZUFkYXB0ZXIgc3VibGNsYXNzLiBcclxuICBUaGlzIG1ldGhvZCBuZWVkcyB0byB0YWtlIHRoZSByZXN1bHQgcmV0dXJuZWQgdGhlIHNlcnZlciBhbmQgY29udmVydCBpdCBpbnRvIGFuIElTYXZlUmVzdWx0LiBcclxuICAqL1xyXG4gIF9wcmVwYXJlU2F2ZVJlc3VsdChzYXZlQ29udGV4dDogU2F2ZUNvbnRleHQsIGRhdGE6IGFueSk6IFNhdmVSZXN1bHQge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTmVlZCBhIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIF9wcmVwYXJlU2F2ZVJlc3VsdFwiKTtcclxuICB9XHJcblxyXG5cclxuICAvKiogVXRpbGl0eSBtZXRob2QgdGhhdCBtYXkgYmUgdXNlZCBpbiBhbnkgY29uY3JldGUgRGF0YVNlcnZpY2VBZGFwdGVyIHN1YmxjbGFzcyB0byBoYW5kbGUgYW55IFxyXG4gIGh0dHAgY29ubmVjdGlvbiBpc3N1ZXMuIFxyXG4gICovXHJcbiAgLy8gUHV0IHRoaXMgYXQgdGhlIGJvdHRvbSBvZiB5b3VyIGh0dHAgZXJyb3IgYW5hbHlzaXNcclxuICBzdGF0aWMgX2NhdGNoTm9Db25uZWN0aW9uRXJyb3IoZXJyOiBTZXJ2ZXJFcnJvcikge1xyXG4gICAgaWYgKGVyci5zdGF0dXMgPT09IDAgJiYgZXJyLm1lc3NhZ2UgPT0gbnVsbCkge1xyXG4gICAgICBlcnIubWVzc2FnZSA9IFwiSFRUUCByZXNwb25zZSBzdGF0dXMgMCBhbmQgbm8gbWVzc2FnZS4gIFwiICtcclxuICAgICAgICBcIkxpa2VseSBkaWQgbm90IG9yIGNvdWxkIG5vdCByZWFjaCBzZXJ2ZXIuIElzIHRoZSBzZXJ2ZXIgcnVubmluZz9cIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGpzb25SZXN1bHRzQWRhcHRlciA9IG5ldyBKc29uUmVzdWx0c0FkYXB0ZXIoe1xyXG4gICAgbmFtZTogXCJub29wXCIsXHJcblxyXG4gICAgdmlzaXROb2RlOiBmdW5jdGlvbiAoLyogbm9kZSwgbWFwcGluZ0NvbnRleHQsIG5vZGVDb250ZXh0ICovKSB7XHJcbiAgICAgIHJldHVybiB7fTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gaGFuZGxlSHR0cEVycm9yKHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCwgaHR0cFJlc3BvbnNlOiBIdHRwUmVzcG9uc2UsIG1lc3NhZ2VQcmVmaXg/OiBzdHJpbmcpIHtcclxuICBsZXQgZXJyID0gY3JlYXRlRXJyb3IoaHR0cFJlc3BvbnNlKTtcclxuICBBYnN0cmFjdERhdGFTZXJ2aWNlQWRhcHRlci5fY2F0Y2hOb0Nvbm5lY3Rpb25FcnJvcihlcnIpO1xyXG4gIGlmIChtZXNzYWdlUHJlZml4KSB7XHJcbiAgICBlcnIubWVzc2FnZSA9IG1lc3NhZ2VQcmVmaXggKyBcIjsgXCIgKyBlcnIubWVzc2FnZTtcclxuICB9XHJcbiAgcmVqZWN0KGVycik7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZUVycm9yKGh0dHBSZXNwb25zZTogSHR0cFJlc3BvbnNlKSB7XHJcbiAgbGV0IGVyciA9IG5ldyBFcnJvcigpIGFzIFNlcnZlckVycm9yO1xyXG4gIGVyci5odHRwUmVzcG9uc2UgPSBodHRwUmVzcG9uc2U7XHJcbiAgZXJyLnN0YXR1cyA9IGh0dHBSZXNwb25zZS5zdGF0dXM7XHJcblxyXG4gIGxldCBlcnJPYmogPSBodHRwUmVzcG9uc2UuZGF0YTtcclxuXHJcbiAgaWYgKCFlcnJPYmopIHtcclxuICAgIGVyci5tZXNzYWdlID0gaHR0cFJlc3BvbnNlLmVycm9yICYmIGh0dHBSZXNwb25zZS5lcnJvci50b1N0cmluZygpO1xyXG4gICAgcmV0dXJuIGVycjtcclxuICB9XHJcblxyXG4gIC8vIHNvbWUgYWpheCBwcm92aWRlcnMgd2lsbCBjb252ZXJ0IGVycmFudCByZXN1bHQgaW50byBhbiBvYmplY3QgKGFuZ3VsYXJqcyksIG90aGVycyB3aWxsIG5vdCAoalF1ZXJ5KVxyXG4gIC8vIGlmIG5vdCBkbyBpdCBoZXJlLlxyXG4gIGlmICh0eXBlb2YgZXJyT2JqID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBlcnJPYmogPSBKU09OLnBhcnNlKGVyck9iaik7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIHNvbWV0aW1lcyBodHRwUmVzcG9uc2UuZGF0YSBpcyBqdXN0IHRoZSBlcnJvciBtZXNzYWdlIGl0c2VsZlxyXG4gICAgICBlcnIubWVzc2FnZSA9IGVyck9iajtcclxuICAgICAgcmV0dXJuIGVycjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxldCBzYXZlQ29udGV4dCA9IGh0dHBSZXNwb25zZS5zYXZlQ29udGV4dDtcclxuXHJcbiAgLy8gaWYgYW55IG9mIHRoZSBmb2xsb3cgcHJvcGVydGllcyBleGlzdCB0aGUgc291cmNlIGlzIC5ORVRcclxuICBsZXQgdG1wID0gZXJyT2JqLk1lc3NhZ2UgfHwgZXJyT2JqLkV4Y2VwdGlvbk1lc3NhZ2UgfHwgZXJyT2JqLkVudGl0eUVycm9ycyB8fCBlcnJPYmouRXJyb3JzO1xyXG4gIGxldCBpc0RvdE5ldCA9ICEhdG1wO1xyXG4gIGxldCBtZXNzYWdlOiBzdHJpbmcsIGVudGl0eUVycm9yczogYW55W107XHJcbiAgaWYgKCFpc0RvdE5ldCkge1xyXG4gICAgbWVzc2FnZSA9IGVyck9iai5tZXNzYWdlO1xyXG4gICAgZW50aXR5RXJyb3JzID0gZXJyT2JqLmVycm9ycyB8fCBlcnJPYmouZW50aXR5RXJyb3JzO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBsZXQgdG1wID0gZXJyT2JqO1xyXG4gICAgZG8ge1xyXG4gICAgICAvLyAuTkVUIGV4Y2VwdGlvbnMgY2FuIHByb3ZpZGUgYm90aCBFeGNlcHRpb25NZXNzYWdlIGFuZCBNZXNzYWdlIGJ1dCBFeGNlcHRpb25NZXRob2QgaWYgaXRcclxuICAgICAgLy8gZXhpc3RzIGhhcyBhIG1vcmUgZGV0YWlsZWQgbWVzc2FnZS5cclxuICAgICAgbWVzc2FnZSA9IHRtcC5FeGNlcHRpb25NZXNzYWdlIHx8IHRtcC5NZXNzYWdlO1xyXG4gICAgICB0bXAgPSB0bXAuSW5uZXJFeGNlcHRpb247XHJcbiAgICB9IHdoaWxlICh0bXApO1xyXG4gICAgLy8gLkVudGl0eUVycm9ycyB3aWxsIG9ubHkgb2NjdXIgYXMgYSByZXN1bHQgb2YgYW4gRW50aXR5RXJyb3JzRXhjZXB0aW9uIGJlaW5nIGRlbGliZXJhdGVseSB0aHJvd24gb24gdGhlIHNlcnZlclxyXG4gICAgZW50aXR5RXJyb3JzID0gZXJyT2JqLkVycm9ycyB8fCBlcnJPYmouRW50aXR5RXJyb3JzO1xyXG4gICAgZW50aXR5RXJyb3JzID0gZW50aXR5RXJyb3JzICYmIGVudGl0eUVycm9ycy5tYXAoZnVuY3Rpb24gKGUpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBlcnJvck5hbWU6IGUuRXJyb3JOYW1lLFxyXG4gICAgICAgIGVudGl0eVR5cGVOYW1lOiBNZXRhZGF0YVN0b3JlLm5vcm1hbGl6ZVR5cGVOYW1lKGUuRW50aXR5VHlwZU5hbWUpLFxyXG4gICAgICAgIGtleVZhbHVlczogZS5LZXlWYWx1ZXMsXHJcbiAgICAgICAgcHJvcGVydHlOYW1lOiBlLlByb3BlcnR5TmFtZSxcclxuICAgICAgICBlcnJvck1lc3NhZ2U6IGUuRXJyb3JNZXNzYWdlLFxyXG4gICAgICAgIGN1c3RvbTogZS5DdXN0b21cclxuICAgICAgfTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaWYgKHNhdmVDb250ZXh0ICYmIGVudGl0eUVycm9ycykge1xyXG5cclxuICAgIGxldCBwcm9wTmFtZUZuID0gc2F2ZUNvbnRleHQuZW50aXR5TWFuYWdlci5tZXRhZGF0YVN0b3JlLm5hbWluZ0NvbnZlbnRpb24uc2VydmVyUHJvcGVydHlOYW1lVG9DbGllbnQ7XHJcbiAgICBlbnRpdHlFcnJvcnMuZm9yRWFjaChmdW5jdGlvbiAoZSkge1xyXG4gICAgICBlLnByb3BlcnR5TmFtZSA9IGUucHJvcGVydHlOYW1lICYmIHByb3BOYW1lRm4oZS5wcm9wZXJ0eU5hbWUpO1xyXG4gICAgfSk7XHJcbiAgICAoZXJyIGFzIFNhdmVFcnJvckZyb21TZXJ2ZXIpLmVudGl0eUVycm9ycyA9IGVudGl0eUVycm9ycztcclxuICB9XHJcblxyXG4gIGVyci5tZXNzYWdlID0gbWVzc2FnZSB8fCBcIlNlcnZlciBzaWRlIGVycm9ycyBlbmNvdW50ZXJlZCAtIHNlZSB0aGUgZW50aXR5RXJyb3JzIGNvbGxlY3Rpb24gb24gdGhpcyBvYmplY3QgZm9yIG1vcmUgZGV0YWlsXCI7XHJcbiAgcmV0dXJuIGVycjtcclxufVxyXG5cclxuXHJcbi8qKiBUaGlzIGlzIGEgZGVmYXVsdCwgbm8tb3AgaW1wbGVtZW50YXRpb24gdGhhdCBkZXZlbG9wZXJzIGNhbiByZXBsYWNlLiAqL1xyXG5jbGFzcyBEZWZhdWx0Q2hhbmdlUmVxdWVzdEludGVyY2VwdG9yIHtcclxuICBjb25zdHJ1Y3RvcihzYXZlQ29udGV4dDogU2F2ZUNvbnRleHQsIHNhdmVCdW5kbGU6IFNhdmVCdW5kbGUpIHtcclxuXHJcbiAgfVxyXG5cclxuICBnZXRSZXF1ZXN0KHJlcXVlc3Q6IGFueSwgZW50aXR5OiBFbnRpdHksIGluZGV4OiBudW1iZXIpIHtcclxuICAgIHJldHVybiByZXF1ZXN0O1xyXG4gIH1cclxuXHJcbiAgZG9uZShyZXF1ZXN0czogT2JqZWN0W10pIHtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,4 @@
1
+ export { makeRelationArray } from './relation-array';
2
+ export { makeComplexArray } from './complex-array';
3
+ export { makePrimitiveArray } from './primitive-array';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDckQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBtYWtlUmVsYXRpb25BcnJheSB9IGZyb20gJy4vcmVsYXRpb24tYXJyYXknO1xyXG5leHBvcnQgeyBtYWtlQ29tcGxleEFycmF5IH0gZnJvbSAnLi9jb21wbGV4LWFycmF5JztcclxuZXhwb3J0IHsgbWFrZVByaW1pdGl2ZUFycmF5IH0gZnJvbSAnLi9wcmltaXRpdmUtYXJyYXknO1xyXG4iXX0=