angular-odata 0.78.1 → 0.95.0

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 (224) hide show
  1. package/README.md +133 -62
  2. package/{esm2015/angular-odata.js → esm2020/angular-odata.mjs} +0 -0
  3. package/esm2020/lib/api.mjs +303 -0
  4. package/{esm2015/lib/cache/cache.js → esm2020/lib/cache/cache.mjs} +12 -5
  5. package/{esm2015/lib/cache/index.js → esm2020/lib/cache/index.mjs} +0 -0
  6. package/{esm2015/lib/cache/memory.js → esm2020/lib/cache/memory.mjs} +0 -0
  7. package/{esm2015/lib/cache/storage.js → esm2020/lib/cache/storage.mjs} +1 -1
  8. package/esm2020/lib/client.mjs +271 -0
  9. package/{esm2015/lib/constants.js → esm2020/lib/constants.mjs} +9 -3
  10. package/esm2020/lib/helper.mjs +268 -0
  11. package/esm2020/lib/index.mjs +19 -0
  12. package/esm2020/lib/models/collection.mjs +741 -0
  13. package/{esm2015/lib/models/index.js → esm2020/lib/models/index.mjs} +0 -0
  14. package/esm2020/lib/models/model.mjs +453 -0
  15. package/esm2020/lib/models/options.mjs +945 -0
  16. package/{esm2015/lib/module.js → esm2020/lib/module.mjs} +6 -6
  17. package/esm2020/lib/options.mjs +32 -0
  18. package/esm2020/lib/resources/index.mjs +7 -0
  19. package/esm2020/lib/resources/path/handlers.mjs +69 -0
  20. package/esm2020/lib/resources/path/index.mjs +3 -0
  21. package/esm2020/lib/resources/path/segments.mjs +124 -0
  22. package/esm2020/lib/resources/query/builder.mjs +590 -0
  23. package/esm2020/lib/resources/query/expressions.mjs +207 -0
  24. package/esm2020/lib/resources/query/handlers.mjs +186 -0
  25. package/esm2020/lib/resources/query/index.mjs +4 -0
  26. package/esm2020/lib/resources/query/options.mjs +103 -0
  27. package/esm2020/lib/resources/query/syntax.mjs +406 -0
  28. package/esm2020/lib/resources/request.mjs +167 -0
  29. package/esm2020/lib/resources/resource.mjs +326 -0
  30. package/esm2020/lib/resources/responses/annotations.mjs +119 -0
  31. package/{esm2015/lib/resources/responses/csdl/csdl-annotation.js → esm2020/lib/resources/responses/csdl/csdl-annotation.mjs} +0 -0
  32. package/{esm2015/lib/resources/responses/csdl/csdl-entity-container.js → esm2020/lib/resources/responses/csdl/csdl-entity-container.mjs} +0 -0
  33. package/{esm2015/lib/resources/responses/csdl/csdl-entity-set.js → esm2020/lib/resources/responses/csdl/csdl-entity-set.mjs} +0 -0
  34. package/{esm2015/lib/resources/responses/csdl/csdl-enum-type.js → esm2020/lib/resources/responses/csdl/csdl-enum-type.mjs} +0 -0
  35. package/{esm2015/lib/resources/responses/csdl/csdl-function-action.js → esm2020/lib/resources/responses/csdl/csdl-function-action.mjs} +0 -0
  36. package/{esm2015/lib/resources/responses/csdl/csdl-navigation-property-binding.js → esm2020/lib/resources/responses/csdl/csdl-navigation-property-binding.mjs} +0 -0
  37. package/{esm2015/lib/resources/responses/csdl/csdl-reference.js → esm2020/lib/resources/responses/csdl/csdl-reference.mjs} +0 -0
  38. package/{esm2015/lib/resources/responses/csdl/csdl-schema.js → esm2020/lib/resources/responses/csdl/csdl-schema.mjs} +0 -0
  39. package/{esm2015/lib/resources/responses/csdl/csdl-singleton.js → esm2020/lib/resources/responses/csdl/csdl-singleton.mjs} +0 -0
  40. package/{esm2015/lib/resources/responses/csdl/csdl-structural-property.js → esm2020/lib/resources/responses/csdl/csdl-structural-property.mjs} +0 -0
  41. package/{esm2015/lib/resources/responses/csdl/csdl-structured-type.js → esm2020/lib/resources/responses/csdl/csdl-structured-type.mjs} +0 -0
  42. package/{esm2015/lib/resources/responses/csdl/csdl-type-definition.js → esm2020/lib/resources/responses/csdl/csdl-type-definition.mjs} +0 -0
  43. package/{esm2015/lib/resources/responses/index.js → esm2020/lib/resources/responses/index.mjs} +0 -0
  44. package/esm2020/lib/resources/responses/metadata.mjs +547 -0
  45. package/{esm2015/lib/resources/responses/options.js → esm2020/lib/resources/responses/options.mjs} +1 -1
  46. package/esm2020/lib/resources/responses/response.mjs +170 -0
  47. package/{esm2015/lib/resources/responses/types.js → esm2020/lib/resources/responses/types.mjs} +1 -1
  48. package/esm2020/lib/resources/types/action.mjs +101 -0
  49. package/esm2020/lib/resources/types/batch.mjs +288 -0
  50. package/esm2020/lib/resources/types/count.mjs +27 -0
  51. package/esm2020/lib/resources/types/entity-set.mjs +94 -0
  52. package/esm2020/lib/resources/types/entity.mjs +106 -0
  53. package/esm2020/lib/resources/types/function.mjs +137 -0
  54. package/{esm2015/lib/resources/types/index.js → esm2020/lib/resources/types/index.mjs} +0 -0
  55. package/esm2020/lib/resources/types/media.mjs +41 -0
  56. package/esm2020/lib/resources/types/metadata.mjs +30 -0
  57. package/esm2020/lib/resources/types/navigation-property.mjs +226 -0
  58. package/esm2020/lib/resources/types/options.mjs +2 -0
  59. package/esm2020/lib/resources/types/property.mjs +183 -0
  60. package/esm2020/lib/resources/types/reference.mjs +85 -0
  61. package/esm2020/lib/resources/types/singleton.mjs +126 -0
  62. package/esm2020/lib/resources/types/value.mjs +41 -0
  63. package/esm2020/lib/schema/annotation.mjs +37 -0
  64. package/esm2020/lib/schema/callable.mjs +62 -0
  65. package/esm2020/lib/schema/element.mjs +51 -0
  66. package/esm2020/lib/schema/entity-container.mjs +9 -0
  67. package/esm2020/lib/schema/entity-set.mjs +9 -0
  68. package/esm2020/lib/schema/enum-type.mjs +71 -0
  69. package/{esm2015/lib/schema/index.js → esm2020/lib/schema/index.mjs} +2 -1
  70. package/esm2020/lib/schema/parsers/callable.mjs +113 -0
  71. package/esm2020/lib/schema/parsers/edm.mjs +95 -0
  72. package/esm2020/lib/schema/parsers/enum-type.mjs +107 -0
  73. package/esm2020/lib/schema/parsers/index.mjs +5 -0
  74. package/esm2020/lib/schema/parsers/structured-type.mjs +412 -0
  75. package/esm2020/lib/schema/schema.mjs +61 -0
  76. package/esm2020/lib/schema/structured-type.mjs +198 -0
  77. package/esm2020/lib/services/base.mjs +29 -0
  78. package/esm2020/lib/services/entity-set.mjs +143 -0
  79. package/esm2020/lib/services/entity.mjs +12 -0
  80. package/{esm2015/lib/services/factory.js → esm2020/lib/services/factory.mjs} +3 -3
  81. package/{esm2015/lib/services/index.js → esm2020/lib/services/index.mjs} +0 -0
  82. package/esm2020/lib/services/singleton.mjs +48 -0
  83. package/{esm2015/lib/settings.js → esm2020/lib/settings.mjs} +1 -1
  84. package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
  85. package/esm2020/lib/types.mjs +37 -0
  86. package/esm2020/lib/utils/arraybuffers.mjs +46 -0
  87. package/{esm2015/lib/utils/dates.js → esm2020/lib/utils/dates.mjs} +0 -0
  88. package/esm2020/lib/utils/durations.mjs +40 -0
  89. package/{esm2015/lib/utils/enums.js → esm2020/lib/utils/enums.mjs} +0 -0
  90. package/esm2020/lib/utils/http.mjs +93 -0
  91. package/esm2020/lib/utils/index.mjs +10 -0
  92. package/esm2020/lib/utils/objects.mjs +195 -0
  93. package/esm2020/lib/utils/odata.mjs +22 -0
  94. package/esm2020/lib/utils/strings.mjs +20 -0
  95. package/esm2020/lib/utils/types.mjs +134 -0
  96. package/{esm2015/lib/utils/urls.js → esm2020/lib/utils/urls.mjs} +0 -0
  97. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  98. package/fesm2015/{angular-odata.js → angular-odata.mjs} +5068 -3943
  99. package/fesm2015/angular-odata.mjs.map +1 -0
  100. package/fesm2020/angular-odata.mjs +10274 -0
  101. package/fesm2020/angular-odata.mjs.map +1 -0
  102. package/lib/api.d.ts +17 -16
  103. package/lib/cache/cache.d.ts +2 -2
  104. package/lib/client.d.ts +93 -18
  105. package/lib/constants.d.ts +6 -2
  106. package/lib/helper.d.ts +3 -3
  107. package/lib/index.d.ts +0 -1
  108. package/lib/models/collection.d.ts +36 -47
  109. package/lib/models/model.d.ts +47 -40
  110. package/lib/models/options.d.ts +53 -52
  111. package/lib/options.d.ts +50 -2
  112. package/lib/resources/index.d.ts +2 -3
  113. package/lib/resources/path/handlers.d.ts +27 -0
  114. package/lib/resources/path/index.d.ts +2 -0
  115. package/lib/resources/{path-segments.d.ts → path/segments.d.ts} +4 -16
  116. package/lib/resources/{builder.d.ts → query/builder.d.ts} +12 -7
  117. package/lib/resources/query/expressions.d.ts +63 -0
  118. package/lib/resources/query/handlers.d.ts +89 -0
  119. package/lib/resources/query/index.d.ts +3 -0
  120. package/lib/resources/query/options.d.ts +38 -0
  121. package/lib/resources/query/syntax.d.ts +175 -0
  122. package/lib/resources/request.d.ts +8 -6
  123. package/lib/resources/resource.d.ts +49 -55
  124. package/lib/resources/responses/metadata.d.ts +1 -1
  125. package/lib/resources/responses/types.d.ts +1 -1
  126. package/lib/resources/types/action.d.ts +55 -69
  127. package/lib/resources/types/batch.d.ts +13 -8
  128. package/lib/resources/types/count.d.ts +16 -19
  129. package/lib/resources/types/entity-set.d.ts +24 -62
  130. package/lib/resources/types/entity.d.ts +35 -43
  131. package/lib/resources/types/function.d.ts +63 -71
  132. package/lib/resources/types/media.d.ts +20 -22
  133. package/lib/resources/types/metadata.d.ts +5 -7
  134. package/lib/resources/types/navigation-property.d.ts +100 -85
  135. package/lib/resources/types/options.d.ts +8 -8
  136. package/lib/resources/types/property.d.ts +63 -73
  137. package/lib/resources/types/reference.d.ts +72 -16
  138. package/lib/resources/types/singleton.d.ts +75 -43
  139. package/lib/resources/types/value.d.ts +18 -9
  140. package/lib/schema/annotation.d.ts +18 -0
  141. package/lib/schema/callable.d.ts +27 -11
  142. package/lib/schema/element.d.ts +39 -0
  143. package/lib/schema/entity-container.d.ts +3 -8
  144. package/lib/schema/entity-set.d.ts +3 -9
  145. package/lib/schema/enum-type.d.ts +41 -14
  146. package/lib/schema/index.d.ts +1 -0
  147. package/lib/{parsers → schema/parsers}/callable.d.ts +2 -2
  148. package/lib/schema/parsers/edm.d.ts +4 -0
  149. package/lib/{parsers → schema/parsers}/enum-type.d.ts +13 -7
  150. package/lib/{parsers → schema/parsers}/index.d.ts +0 -0
  151. package/lib/{parsers → schema/parsers}/structured-type.d.ts +14 -9
  152. package/lib/schema/schema.d.ts +6 -8
  153. package/lib/schema/structured-type.d.ts +97 -18
  154. package/lib/services/base.d.ts +12 -12
  155. package/lib/services/entity-set.d.ts +15 -12
  156. package/lib/services/entity.d.ts +4 -1
  157. package/lib/services/singleton.d.ts +6 -3
  158. package/lib/settings.d.ts +4 -4
  159. package/lib/types.d.ts +7 -3
  160. package/lib/utils/arraybuffers.d.ts +4 -0
  161. package/lib/{parsers/edm.d.ts → utils/durations.d.ts} +3 -3
  162. package/lib/utils/http.d.ts +9 -0
  163. package/lib/utils/index.d.ts +5 -2
  164. package/lib/utils/objects.d.ts +1 -1
  165. package/lib/utils/strings.d.ts +4 -0
  166. package/lib/utils/types.d.ts +2 -0
  167. package/package.json +21 -8
  168. package/bundles/angular-odata.umd.js +0 -10756
  169. package/bundles/angular-odata.umd.js.map +0 -1
  170. package/esm2015/lib/api.js +0 -251
  171. package/esm2015/lib/client.js +0 -197
  172. package/esm2015/lib/helper.js +0 -269
  173. package/esm2015/lib/index.js +0 -21
  174. package/esm2015/lib/models/collection.js +0 -660
  175. package/esm2015/lib/models/model.js +0 -421
  176. package/esm2015/lib/models/options.js +0 -889
  177. package/esm2015/lib/options.js +0 -31
  178. package/esm2015/lib/parsers/callable.js +0 -110
  179. package/esm2015/lib/parsers/edm.js +0 -310
  180. package/esm2015/lib/parsers/enum-type.js +0 -97
  181. package/esm2015/lib/parsers/index.js +0 -5
  182. package/esm2015/lib/parsers/structured-type.js +0 -394
  183. package/esm2015/lib/resources/builder.js +0 -537
  184. package/esm2015/lib/resources/index.js +0 -8
  185. package/esm2015/lib/resources/path-segments.js +0 -156
  186. package/esm2015/lib/resources/query-options.js +0 -157
  187. package/esm2015/lib/resources/request.js +0 -141
  188. package/esm2015/lib/resources/resource.js +0 -328
  189. package/esm2015/lib/resources/responses/annotations.js +0 -121
  190. package/esm2015/lib/resources/responses/metadata.js +0 -548
  191. package/esm2015/lib/resources/responses/response.js +0 -170
  192. package/esm2015/lib/resources/types/action.js +0 -146
  193. package/esm2015/lib/resources/types/batch.js +0 -330
  194. package/esm2015/lib/resources/types/count.js +0 -50
  195. package/esm2015/lib/resources/types/entity-set.js +0 -164
  196. package/esm2015/lib/resources/types/entity.js +0 -158
  197. package/esm2015/lib/resources/types/function.js +0 -166
  198. package/esm2015/lib/resources/types/media.js +0 -46
  199. package/esm2015/lib/resources/types/metadata.js +0 -36
  200. package/esm2015/lib/resources/types/navigation-property.js +0 -214
  201. package/esm2015/lib/resources/types/options.js +0 -2
  202. package/esm2015/lib/resources/types/property.js +0 -190
  203. package/esm2015/lib/resources/types/reference.js +0 -50
  204. package/esm2015/lib/resources/types/singleton.js +0 -147
  205. package/esm2015/lib/resources/types/value.js +0 -30
  206. package/esm2015/lib/schema/annotation.js +0 -7
  207. package/esm2015/lib/schema/callable.js +0 -50
  208. package/esm2015/lib/schema/entity-container.js +0 -17
  209. package/esm2015/lib/schema/entity-set.js +0 -23
  210. package/esm2015/lib/schema/enum-type.js +0 -68
  211. package/esm2015/lib/schema/schema.js +0 -55
  212. package/esm2015/lib/schema/structured-type.js +0 -107
  213. package/esm2015/lib/services/base.js +0 -23
  214. package/esm2015/lib/services/entity-set.js +0 -143
  215. package/esm2015/lib/services/entity.js +0 -10
  216. package/esm2015/lib/services/singleton.js +0 -46
  217. package/esm2015/lib/types.js +0 -37
  218. package/esm2015/lib/utils/http.js +0 -59
  219. package/esm2015/lib/utils/index.js +0 -7
  220. package/esm2015/lib/utils/objects.js +0 -140
  221. package/esm2015/lib/utils/odata.js +0 -21
  222. package/esm2015/lib/utils/types.js +0 -103
  223. package/fesm2015/angular-odata.js.map +0 -1
  224. package/lib/resources/query-options.d.ts +0 -57
@@ -1 +0,0 @@
1
- {"version":3,"file":"angular-odata.umd.js","sources":["../../../projects/angular-odata/src/lib/types.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/angular-odata/src/lib/resources/builder.ts","../../../projects/angular-odata/src/lib/parsers/edm.ts","../../../projects/angular-odata/src/lib/utils/dates.ts","../../../projects/angular-odata/src/lib/utils/enums.ts","../../../projects/angular-odata/src/lib/utils/types.ts","../../../projects/angular-odata/src/lib/utils/objects.ts","../../../projects/angular-odata/src/lib/constants.ts","../../../projects/angular-odata/src/lib/utils/urls.ts","../../../projects/angular-odata/src/lib/utils/http.ts","../../../projects/angular-odata/src/lib/schema/annotation.ts","../../../projects/angular-odata/src/lib/helper.ts","../../../projects/angular-odata/src/lib/options.ts","../../../projects/angular-odata/src/lib/parsers/enum-type.ts","../../../projects/angular-odata/src/lib/parsers/structured-type.ts","../../../projects/angular-odata/src/lib/parsers/callable.ts","../../../projects/angular-odata/src/lib/schema/structured-type.ts","../../../projects/angular-odata/src/lib/schema/callable.ts","../../../projects/angular-odata/src/lib/schema/entity-set.ts","../../../projects/angular-odata/src/lib/schema/entity-container.ts","../../../projects/angular-odata/src/lib/schema/enum-type.ts","../../../projects/angular-odata/src/lib/utils/odata.ts","../../../projects/angular-odata/src/lib/schema/schema.ts","../../../projects/angular-odata/src/lib/resources/query-options.ts","../../../projects/angular-odata/src/lib/resources/path-segments.ts","../../../projects/angular-odata/src/lib/resources/request.ts","../../../projects/angular-odata/src/lib/resources/resource.ts","../../../projects/angular-odata/src/lib/resources/types/action.ts","../../../projects/angular-odata/src/lib/resources/responses/annotations.ts","../../../projects/angular-odata/src/lib/resources/responses/options.ts","../../../projects/angular-odata/src/lib/resources/responses/response.ts","../../../projects/angular-odata/src/lib/resources/responses/csdl/csdl-annotation.ts","../../../projects/angular-odata/src/lib/resources/responses/csdl/csdl-type-definition.ts","../../../projects/angular-odata/src/lib/resources/responses/csdl/csdl-schema.ts","../../../projects/angular-odata/src/lib/resources/responses/csdl/csdl-enum-type.ts","../../../projects/angular-odata/src/lib/resources/responses/csdl/csdl-structured-type.ts","../../../projects/angular-odata/src/lib/resources/responses/csdl/csdl-function-action.ts","../../../projects/angular-odata/src/lib/resources/responses/csdl/csdl-structural-property.ts","../../../projects/angular-odata/src/lib/resources/responses/csdl/csdl-entity-set.ts","../../../projects/angular-odata/src/lib/resources/responses/csdl/csdl-singleton.ts","../../../projects/angular-odata/src/lib/resources/responses/csdl/csdl-entity-container.ts","../../../projects/angular-odata/src/lib/resources/responses/csdl/csdl-reference.ts","../../../projects/angular-odata/src/lib/resources/responses/csdl/csdl-navigation-property-binding.ts","../../../projects/angular-odata/src/lib/resources/responses/metadata.ts","../../../projects/angular-odata/src/lib/resources/types/batch.ts","../../../projects/angular-odata/src/lib/resources/types/count.ts","../../../projects/angular-odata/src/lib/resources/types/function.ts","../../../projects/angular-odata/src/lib/resources/types/reference.ts","../../../projects/angular-odata/src/lib/resources/types/value.ts","../../../projects/angular-odata/src/lib/resources/types/property.ts","../../../projects/angular-odata/src/lib/resources/types/media.ts","../../../projects/angular-odata/src/lib/resources/types/navigation-property.ts","../../../projects/angular-odata/src/lib/resources/types/entity.ts","../../../projects/angular-odata/src/lib/resources/types/entity-set.ts","../../../projects/angular-odata/src/lib/resources/types/metadata.ts","../../../projects/angular-odata/src/lib/resources/types/singleton.ts","../../../projects/angular-odata/src/lib/models/options.ts","../../../projects/angular-odata/src/lib/models/collection.ts","../../../projects/angular-odata/src/lib/models/model.ts","../../../projects/angular-odata/src/lib/cache/cache.ts","../../../projects/angular-odata/src/lib/cache/memory.ts","../../../projects/angular-odata/src/lib/cache/storage.ts","../../../projects/angular-odata/src/lib/api.ts","../../../projects/angular-odata/src/lib/settings.ts","../../../projects/angular-odata/src/lib/client.ts","../../../projects/angular-odata/src/lib/tokens.ts","../../../projects/angular-odata/src/lib/services/base.ts","../../../projects/angular-odata/src/lib/services/entity.ts","../../../projects/angular-odata/src/lib/services/entity-set.ts","../../../projects/angular-odata/src/lib/services/singleton.ts","../../../projects/angular-odata/src/lib/services/factory.ts","../../../projects/angular-odata/src/lib/module.ts","../../../projects/angular-odata/src/public-api.ts","../../../projects/angular-odata/src/angular-odata.ts"],"sourcesContent":["import { Observable } from 'rxjs';\nimport { ODataVersionHelper } from './helper';\n\nexport type ODataVersion = '2.0' | '3.0' | '4.0';\nexport type FetchPolicy =\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\nexport type ODataMetadataType = 'minimal' | 'full' | 'none';\nexport type CacheCacheability = 'public' | 'private' | 'no-cache' | 'no-store';\n\nexport enum PathSegmentNames {\n batch = 'batch',\n metadata = 'metadata',\n entitySet = 'entitySet',\n singleton = 'singleton',\n type = 'type',\n property = 'property',\n navigationProperty = 'navigationProperty',\n reference = 'reference',\n value = 'value',\n count = 'count',\n function = 'function',\n action = 'action',\n}\n\nexport enum QueryOptionNames {\n select = 'select',\n expand = 'expand',\n compute = 'compute',\n filter = 'filter',\n search = 'search',\n transform = 'transform',\n orderBy = 'orderBy',\n top = 'top',\n skip = 'skip',\n skiptoken = 'skiptoken',\n format = 'format',\n count = 'count',\n}\n\nexport interface Options {\n version?: ODataVersion;\n stringAsEnum?: boolean;\n}\n\nexport interface ApiOptions extends Options {\n params?: { [param: string]: string | string[] };\n headers?: { [param: string]: string | string[] };\n withCredentials?: boolean;\n //Headers\n accept?: {\n metadata?: ODataMetadataType;\n ieee754Compatible?: boolean;\n };\n etag?: {\n ifMatch?: boolean;\n ifNoneMatch?: boolean;\n };\n prefer?: {\n maxPageSize?: number;\n return?: 'representation' | 'minimal';\n continueOnError?: boolean;\n includeAnnotations?: string;\n };\n stripMetadata?: ODataMetadataType;\n fetchPolicy?: FetchPolicy;\n bodyQueryOptions?: QueryOptionNames[];\n}\n\nexport interface OptionsHelper extends Options {\n helper: ODataVersionHelper;\n metadata?: ODataMetadataType;\n ieee754Compatible?: boolean;\n streaming?: boolean;\n}\n\nexport interface ResponseOptions extends OptionsHelper {\n cacheability?: CacheCacheability;\n maxAge?: number;\n}\n\nexport interface StructuredTypeFieldOptions extends OptionsHelper {\n field: StructuredTypeFieldConfig;\n}\n\nexport interface Parser<T> {\n deserialize(\n value: any,\n options?: OptionsHelper | StructuredTypeFieldOptions\n ): T;\n serialize(\n value: T,\n options?: OptionsHelper | StructuredTypeFieldOptions\n ): any;\n //Encodes the value/s of a URL parameter or query-string.\n encode(value: T, options?: OptionsHelper | StructuredTypeFieldOptions): any;\n}\n\nexport const NONE_PARSER = {\n deserialize: (value: any) => value,\n serialize: (value: any) => value,\n encode: (value: any) => value,\n} as Parser<any>;\n\nexport interface Cache {\n put<T>(key: string, payload: T, ...opts: any[]): void;\n get<T>(key: string, ...opts: any[]): T | undefined;\n}\n\n//#region Configs\nexport type ApiConfig = {\n serviceRootUrl: string;\n name?: string;\n version?: ODataVersion;\n default?: boolean;\n creation?: Date;\n cache?: Cache;\n errorHandler?: (error: any, caught: Observable<any>) => Observable<never>;\n options?: ApiOptions;\n parsers?: { [type: string]: Parser<any> };\n schemas?: SchemaConfig[];\n};\nexport type AnnotationConfig = {\n term: string;\n string?: string;\n bool?: boolean;\n int?: number;\n permissions?: string[];\n properties?: string[];\n};\nexport type SchemaConfig = {\n namespace: string;\n alias?: string;\n annotations?: AnnotationConfig[];\n enums?: EnumTypeConfig<any>[];\n entities?: StructuredTypeConfig<any>[];\n callables?: CallableConfig[];\n containers?: EntityContainerConfig[];\n};\n\nexport type EntityContainerConfig = {\n name: string;\n annotations?: AnnotationConfig[];\n entitySets?: EntitySetConfig[];\n};\n\nexport type EnumTypeFieldConfig = {\n value: number;\n annotations?: AnnotationConfig[];\n};\n\nexport type EnumTypeConfig<T> = {\n name: string;\n flags?: boolean;\n annotations?: AnnotationConfig[];\n members: { [name: string]: number } | { [value: number]: string };\n fields: { [member: string]: EnumTypeFieldConfig };\n};\n\nexport type StructuredTypeFieldConfig = {\n type: string;\n default?: any;\n maxLength?: number;\n key?: boolean;\n collection?: boolean;\n nullable?: boolean;\n navigation?: boolean;\n precision?: number;\n annotations?: AnnotationConfig[];\n scale?: number;\n referentials?: { property: string; referencedProperty: string }[];\n referential?: string;\n referenced?: string;\n};\n\nexport type StructuredTypeConfig<T> = {\n name: string;\n base?: string;\n open?: boolean;\n model?: { new (...params: any[]): any };\n collection?: { new (...params: any[]): any };\n annotations?: AnnotationConfig[];\n keys?: { name: string; alias?: string }[];\n fields: { [P in keyof T]?: StructuredTypeFieldConfig };\n};\n\nexport type Parameter = {\n type: string;\n nullable?: boolean;\n collection?: boolean;\n};\n\nexport type CallableConfig = {\n name: string;\n entitySetPath?: string;\n bound?: boolean;\n composable?: boolean;\n parameters?: { [name: string]: Parameter };\n return?: { type: string; collection?: boolean };\n};\nexport type EntitySetConfig = {\n name: string;\n entityType: string;\n service: { new (...params: any[]): any };\n annotations?: AnnotationConfig[];\n};\n//#endregion\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","const COMPARISON_OPERATORS = ['eq', 'ne', 'gt', 'ge', 'lt', 'le'];\nconst LOGICAL_OPERATORS = ['and', 'or', 'not'];\nconst COLLECTION_OPERATORS = ['any', 'all'];\nconst BOOLEAN_FUNCTIONS = ['startswith', 'endswith', 'contains'];\nconst SUPPORTED_EXPAND_PROPERTIES = [\n 'expand',\n 'levels',\n 'select',\n 'top',\n 'count',\n 'orderby',\n 'filter',\n];\n\nconst FUNCTION_REGEX = /\\((.*)\\)/;\nconst INDEXOF_REGEX = /(?!indexof)\\((\\w+)\\)/;\n\nexport type Unpacked<T> = T extends (infer U)[] ? U : T;\nexport type Select<T> = SelectType<T> | SelectType<T>[];\nexport type SelectType<T> = string | keyof T;\nexport type Filter = FilterType | FilterType[];\nexport type FilterType = string | { [name: string]: any };\n\nexport enum StandardAggregateMethods {\n sum = 'sum',\n min = 'min',\n max = 'max',\n average = 'average',\n countdistinct = 'countdistinct',\n}\nexport type Aggregate =\n | string\n | { [propertyName: string]: { with: StandardAggregateMethods; as: string } };\n\n// OrderBy\n\nexport type OrderBy<T> = OrderByType<T> | OrderByType<T>[];\nexport type OrderByType<T> = string | OrderByObject<T>;\nexport type OrderByObject<T> = keyof T | [keyof T | string, 'asc' | 'desc'];\n//TODO: support angular 12 recursive type:\n/*\nexport type OrderByOptions<T> = keyof T | [ keyof T | string, 'asc' | 'desc' ];\nexport type NestedOrderBy<T> = { [P in keyof T]?: T[P] extends Array<infer E> ? OrderBy<E> : OrderBy<T[P]> }\nexport type OrderBy<T> = string | OrderByOptions<T> | Array<OrderByOptions<T>> | NestedOrderBy<T>;\n*/\n\n// Expand\nexport type Expand<T> = ExpandType<T> | ExpandType<T>[];\nexport type ExpandType<T> = string | ExpandObject<T>;\nexport type ExpandObject<T> = keyof T | NestedExpandOptions<T>;\nexport type NestedExpandOptions<T> = {\n [P in keyof T]?: ExpandOptions<Unpacked<T[P]>>;\n};\nexport type ExpandOptions<T> = {\n select?: Select<T>;\n filter?: Filter;\n orderBy?: OrderBy<T>;\n top?: number;\n levels?: number | 'max';\n count?: boolean | Filter;\n expand?: Expand<T>;\n};\n\nexport type Transform<T> = {\n aggregate?: Aggregate | Array<Aggregate>;\n filter?: Filter;\n groupBy?: GroupBy<T>;\n};\nexport type GroupBy<T> = {\n properties: Array<keyof T>;\n transform?: Transform<T>;\n};\n\nexport enum QueryCustomTypes {\n Raw,\n Alias,\n Duration,\n Binary,\n}\n\nexport type QueryCustomType = {\n type: QueryCustomTypes;\n value: any;\n name?: string;\n};\nexport type Value = string | Date | number | boolean | QueryCustomType;\n\n//https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#sec_QueryOptions\nexport const raw = (value: string): QueryCustomType => ({\n type: QueryCustomTypes.Raw,\n value,\n});\nexport const alias = (value: any, name?: string): QueryCustomType => ({\n type: QueryCustomTypes.Alias,\n value,\n name,\n});\nexport const duration = (value: string): QueryCustomType => ({\n type: QueryCustomTypes.Duration,\n value,\n});\nexport const binary = (value: string): QueryCustomType => ({\n type: QueryCustomTypes.Binary,\n value,\n});\nexport const isQueryCustomType = (value: any) =>\n typeof value === 'object' &&\n 'type' in value &&\n value.type in QueryCustomTypes;\nexport type QueryOptions<T> = ExpandOptions<T> & {\n search: string;\n transform: { [name: string]: any } | { [name: string]: any }[];\n skip: number;\n skiptoken: string;\n key: string | number | { [name: string]: any };\n count: boolean | Filter;\n action: string;\n func: string | { [functionName: string]: { [parameterName: string]: any } };\n format: string;\n aliases: QueryCustomType[];\n};\n\nexport const ITEM_ROOT = '';\n\nexport default function <T>({\n select,\n search,\n skiptoken,\n format,\n top,\n skip,\n filter,\n transform,\n orderBy,\n key,\n count,\n expand,\n action,\n func,\n}: Partial<QueryOptions<T>> = {}) {\n const [path, params] = buildPathAndQuery({\n select,\n search,\n skiptoken,\n format,\n top,\n skip,\n filter,\n transform,\n orderBy,\n key,\n count,\n expand,\n action,\n func,\n });\n\n return buildUrl(path, params);\n}\n\nexport function buildPathAndQuery<T>({\n select,\n search,\n skiptoken,\n format,\n top,\n skip,\n filter,\n transform,\n orderBy,\n key,\n count,\n expand,\n action,\n func,\n}: Partial<QueryOptions<T>> = {}): [string, { [name: string]: any }] {\n let path: string = '';\n let aliases: QueryCustomType[] = [];\n\n const query: any = {};\n\n // key is not (null, undefined)\n if (key != undefined) {\n path += `(${handleValue(key as Value, aliases)})`;\n }\n\n if (select) {\n query.$select = Array.isArray(select) ? select.join(',') : select;\n }\n\n if (search) {\n query.$search = search;\n }\n\n if (skiptoken) {\n query.$skiptoken = skiptoken;\n }\n\n if (format) {\n query.$format = format;\n }\n\n if (filter || typeof count === 'object') {\n query.$filter = buildFilter(\n typeof count === 'object' ? count : filter,\n aliases\n );\n }\n\n if (transform) {\n query.$apply = buildTransforms(transform);\n }\n\n if (expand) {\n query.$expand = buildExpand(expand);\n }\n\n if (orderBy) {\n query.$orderby = buildOrderBy(orderBy);\n }\n\n if (count) {\n if (typeof count === 'boolean') {\n query.$count = true;\n } else {\n path += '/$count';\n }\n }\n\n if (typeof top === 'number') {\n query.$top = top;\n }\n\n if (typeof skip === 'number') {\n query.$skip = skip;\n }\n\n if (action) {\n path += `/${action}`;\n }\n\n if (func) {\n if (typeof func === 'string') {\n path += `/${func}`;\n } else if (typeof func === 'object') {\n const [funcName] = Object.keys(func);\n const funcArgs = handleValue(func[funcName] as Value, aliases);\n\n path += `/${funcName}`;\n if (funcArgs !== '') {\n path += `(${funcArgs})`;\n }\n }\n }\n\n if (aliases.length > 0) {\n Object.assign(\n query,\n aliases.reduce(\n (acc, alias) =>\n Object.assign(acc, { [`@${alias.name}`]: handleValue(alias.value) }),\n {}\n )\n );\n }\n\n // Filter empty values\n const params = Object.entries(query)\n .filter(([, value]) => value !== undefined && value !== '')\n .reduce((acc, [key, value]) => Object.assign(acc, { [key]: value }), {});\n\n return [path, params];\n}\n\nfunction renderPrimitiveValue(\n key: string,\n val: any,\n aliases: QueryCustomType[] = []\n) {\n return `${key} eq ${handleValue(val, aliases)}`;\n}\n\nfunction buildFilter(\n filters: Filter = {},\n aliases: QueryCustomType[] = [],\n propPrefix = ''\n): string {\n return (\n (Array.isArray(filters) ? filters : [filters]).reduce(\n (acc: string[], filter) => {\n if (filter) {\n const builtFilter = buildFilterCore(filter, aliases, propPrefix);\n if (builtFilter) {\n acc.push(builtFilter);\n }\n }\n return acc;\n },\n []\n ) as string[]\n ).join(' and ');\n\n function buildFilterCore(\n filter: Filter = {},\n aliases: QueryCustomType[] = [],\n propPrefix = ''\n ) {\n let filterExpr = '';\n if (typeof filter === 'string') {\n // Use raw filter string\n filterExpr = filter;\n } else if (filter && typeof filter === 'object') {\n const filtersArray = Object.keys(filter).reduce(\n (result: any[], filterKey) => {\n const value = (filter as any)[filterKey];\n let propName = '';\n if (propPrefix) {\n if (filterKey === ITEM_ROOT) {\n propName = propPrefix;\n } else if (INDEXOF_REGEX.test(filterKey)) {\n propName = filterKey.replace(INDEXOF_REGEX, (_, $1) =>\n $1.trim() === ITEM_ROOT\n ? `(${propPrefix})`\n : `(${propPrefix}/${$1.trim()})`\n );\n } else if (FUNCTION_REGEX.test(filterKey)) {\n propName = filterKey.replace(FUNCTION_REGEX, (_, $1) =>\n $1.trim() === ITEM_ROOT\n ? `(${propPrefix})`\n : `(${propPrefix}/${$1.trim()})`\n );\n } else {\n propName = `${propPrefix}/${filterKey}`;\n }\n } else {\n propName = filterKey;\n }\n\n if (filterKey === ITEM_ROOT && Array.isArray(value)) {\n return result.concat(\n value.map((arrayValue: any) =>\n renderPrimitiveValue(propName, arrayValue)\n )\n );\n }\n\n if (\n ['number', 'string', 'boolean'].indexOf(typeof value) !== -1 ||\n value instanceof Date ||\n value === null\n ) {\n // Simple key/value handled as equals operator\n result.push(renderPrimitiveValue(propName, value, aliases));\n } else if (Array.isArray(value)) {\n const op = filterKey;\n const builtFilters = value\n .map((v) => buildFilter(v, aliases, propPrefix))\n .filter((f) => f)\n .map((f) =>\n LOGICAL_OPERATORS.indexOf(op) !== -1 ? `(${f})` : f\n );\n if (builtFilters.length) {\n if (LOGICAL_OPERATORS.indexOf(op) !== -1) {\n if (builtFilters.length) {\n if (op === 'not') {\n result.push(parseNot(builtFilters as string[]));\n } else {\n result.push(`(${builtFilters.join(` ${op} `)})`);\n }\n }\n } else {\n result.push(builtFilters.join(` ${op} `));\n }\n }\n } else if (LOGICAL_OPERATORS.indexOf(propName) !== -1) {\n const op = propName;\n const builtFilters = Object.keys(value).map((valueKey) =>\n buildFilterCore({ [valueKey]: value[valueKey] })\n );\n if (builtFilters.length) {\n if (op === 'not') {\n result.push(parseNot(builtFilters as string[]));\n } else {\n result.push(`${builtFilters.join(` ${op} `)}`);\n }\n }\n } else if (typeof value === 'object') {\n if ('type' in value) {\n result.push(renderPrimitiveValue(propName, value, aliases));\n } else {\n const operators = Object.keys(value);\n operators.forEach((op) => {\n if (COMPARISON_OPERATORS.indexOf(op) !== -1) {\n result.push(\n `${propName} ${op} ${handleValue(value[op], aliases)}`\n );\n } else if (LOGICAL_OPERATORS.indexOf(op) !== -1) {\n if (Array.isArray(value[op])) {\n result.push(\n value[op]\n .map(\n (v: any) =>\n '(' + buildFilterCore(v, aliases, propName) + ')'\n )\n .join(` ${op} `)\n );\n } else {\n result.push(\n '(' + buildFilterCore(value[op], aliases, propName) + ')'\n );\n }\n } else if (COLLECTION_OPERATORS.indexOf(op) !== -1) {\n const collectionClause = buildCollectionClause(\n filterKey.toLowerCase(),\n value[op],\n op,\n propName\n );\n if (collectionClause) {\n result.push(collectionClause);\n }\n } else if (op === 'has') {\n result.push(\n `${propName} ${op} ${handleValue(value[op], aliases)}`\n );\n } else if (op === 'in') {\n const resultingValues = Array.isArray(value[op])\n ? value[op]\n : value[op].value.map((typedValue: any) => ({\n type: value[op].type,\n value: typedValue,\n }));\n\n result.push(\n propName +\n ' in (' +\n resultingValues\n .map((v: any) => handleValue(v, aliases))\n .join(',') +\n ')'\n );\n } else if (BOOLEAN_FUNCTIONS.indexOf(op) !== -1) {\n // Simple boolean functions (startswith, endswith, contains)\n result.push(\n `${op}(${propName},${handleValue(value[op], aliases)})`\n );\n } else {\n // Nested property\n const filter = buildFilterCore(value, aliases, propName);\n if (filter) {\n result.push(filter);\n }\n }\n });\n }\n } else if (value === undefined) {\n // Ignore/omit filter if value is `undefined`\n } else {\n throw new Error(`Unexpected value type: ${value}`);\n }\n\n return result;\n },\n []\n );\n\n filterExpr = filtersArray.join(' and ');\n } /* else {\n throw new Error(`Unexpected filters type: ${filter}`);\n } */\n return filterExpr;\n }\n\n function buildCollectionClause(\n lambdaParameter: string,\n value: any,\n op: string,\n propName: string\n ) {\n let clause = '';\n\n if (typeof value === 'string' || value instanceof String) {\n clause = getStringCollectionClause(lambdaParameter, value, op, propName);\n } else if (value) {\n // normalize {any:[{prop1: 1}, {prop2: 1}]} --> {any:{prop1: 1, prop2: 1}}; same for 'all',\n // simple values collection: {any:[{'': 'simpleVal1'}, {'': 'simpleVal2'}]} --> {any:{'': ['simpleVal1', 'simpleVal2']}}; same for 'all',\n const filterValue = Array.isArray(value)\n ? value.reduce((acc, item) => {\n if (item.hasOwnProperty(ITEM_ROOT)) {\n if (!acc.hasOwnProperty(ITEM_ROOT)) {\n acc[ITEM_ROOT] = [];\n }\n acc[ITEM_ROOT].push(item[ITEM_ROOT]);\n return acc;\n }\n return { ...acc, ...item };\n }, {})\n : value;\n\n const filter = buildFilterCore(filterValue, aliases, lambdaParameter);\n clause = `${propName}/${op}(${\n filter ? `${lambdaParameter}:${filter}` : ''\n })`;\n }\n return clause;\n }\n}\n\nfunction getStringCollectionClause(\n lambdaParameter: string,\n value: any,\n collectionOperator: string,\n propName: string\n) {\n let clause = '';\n const conditionOperator = collectionOperator == 'all' ? 'ne' : 'eq';\n clause = `${propName}/${collectionOperator}(${lambdaParameter}: ${lambdaParameter} ${conditionOperator} '${value}')`;\n\n return clause;\n}\n\nfunction escapeIllegalChars(string: string) {\n string = string.replace(/%/g, '%25');\n string = string.replace(/\\+/g, '%2B');\n string = string.replace(/\\//g, '%2F');\n string = string.replace(/\\?/g, '%3F');\n string = string.replace(/#/g, '%23');\n string = string.replace(/&/g, '%26');\n string = string.replace(/'/g, \"''\");\n return string;\n}\n\nfunction handleValue(value: Value, aliases?: QueryCustomType[]): any {\n if (typeof value === 'string') {\n return `'${escapeIllegalChars(value)}'`;\n } else if (value instanceof Date) {\n return value.toISOString();\n } else if (typeof value === 'number') {\n return value;\n } else if (Array.isArray(value)) {\n return `[${value.map((d) => handleValue(d)).join(',')}]`;\n } else if (value === null) {\n return value;\n } else if (typeof value === 'object') {\n switch (value.type) {\n case QueryCustomTypes.Raw:\n return value.value;\n case QueryCustomTypes.Duration:\n return `duration'${value.value}'`;\n case QueryCustomTypes.Binary:\n return `binary'${value.value}'`;\n case QueryCustomTypes.Alias:\n // Store\n if (Array.isArray(aliases)) aliases.push(value);\n return `@${value.name}`;\n default:\n return Object.entries(value)\n .filter(([, v]) => v !== undefined)\n .map(([k, v]) => `${k}=${handleValue(v as Value, aliases)}`)\n .join(',');\n }\n }\n return value;\n}\n\nfunction buildExpand<T>(expands: Expand<T>): string {\n if (typeof expands === 'number') {\n return expands as any;\n } else if (typeof expands === 'string') {\n if (expands.indexOf('/') === -1) {\n return expands;\n }\n\n // Change `Foo/Bar/Baz` to `Foo($expand=Bar($expand=Baz))`\n return expands\n .split('/')\n .reverse()\n .reduce((results, item, index, arr) => {\n if (index === 0) {\n // Inner-most item\n return `$expand=${item}`;\n } else if (index === arr.length - 1) {\n // Outer-most item, don't add `$expand=` prefix (added above)\n return `${item}(${results})`;\n } else {\n // Other items\n return `$expand=${item}(${results})`;\n }\n }, '');\n } else if (Array.isArray(expands)) {\n return `${(expands as Array<NestedExpandOptions<any>>)\n .map((e) => buildExpand(e))\n .join(',')}`;\n } else if (typeof expands === 'object') {\n const expandKeys = Object.keys(expands);\n\n if (\n expandKeys.some(\n (key) => SUPPORTED_EXPAND_PROPERTIES.indexOf(key.toLowerCase()) !== -1\n )\n ) {\n return expandKeys\n .map((key) => {\n let value;\n switch (key) {\n case 'filter':\n value = buildFilter((expands as NestedExpandOptions<any>)[key]);\n break;\n case 'orderBy':\n value = buildOrderBy(\n (expands as NestedExpandOptions<any>)[key] as OrderBy<T>\n );\n break;\n case 'levels':\n case 'count':\n case 'top':\n value = `${(expands as NestedExpandOptions<any>)[key]}`;\n break;\n default:\n value = buildExpand(\n (expands as NestedExpandOptions<any>)[key] as Expand<T>\n );\n }\n return `$${key.toLowerCase()}=${value}`;\n })\n .join(';');\n } else {\n return expandKeys\n .map((key) => {\n const builtExpand = buildExpand(\n (expands as NestedExpandOptions<any>)[\n key\n ] as NestedExpandOptions<any>\n );\n return builtExpand ? `${key}(${builtExpand})` : key;\n })\n .join(',');\n }\n }\n return '';\n}\n\nfunction buildTransforms<T>(transforms: Transform<T> | Transform<T>[]) {\n // Wrap single object an array for simplified processing\n const transformsArray = Array.isArray(transforms) ? transforms : [transforms];\n\n const transformsResult = transformsArray.reduce(\n (result: string[], transform) => {\n const { aggregate, filter, groupBy, ...rest } = transform;\n\n // TODO: support as many of the following:\n // topcount, topsum, toppercent,\n // bottomsum, bottomcount, bottompercent,\n // identity, concat, expand, search, compute, isdefined\n const unsupportedKeys = Object.keys(rest);\n if (unsupportedKeys.length) {\n throw new Error(`Unsupported transform(s): ${unsupportedKeys}`);\n }\n\n if (aggregate) {\n result.push(`aggregate(${buildAggregate(aggregate)})`);\n }\n if (filter) {\n const builtFilter = buildFilter(filter);\n if (builtFilter) {\n result.push(`filter(${buildFilter(builtFilter)})`);\n }\n }\n if (groupBy) {\n result.push(`groupby(${buildGroupBy(groupBy)})`);\n }\n\n return result;\n },\n []\n );\n\n return transformsResult.join('/') || undefined;\n}\n\nfunction buildAggregate(aggregate: Aggregate | Aggregate[]) {\n // Wrap single object in an array for simplified processing\n const aggregateArray = Array.isArray(aggregate) ? aggregate : [aggregate];\n\n return aggregateArray\n .map((aggregateItem) => {\n return typeof aggregateItem === 'string'\n ? aggregateItem\n : Object.keys(aggregateItem).map((aggregateKey) => {\n const aggregateValue = aggregateItem[aggregateKey];\n\n // TODO: Are these always required? Can/should we default them if so?\n if (!aggregateValue.with) {\n throw new Error(`'with' property required for '${aggregateKey}'`);\n }\n if (!aggregateValue.as) {\n throw new Error(`'as' property required for '${aggregateKey}'`);\n }\n\n return `${aggregateKey} with ${aggregateValue.with} as ${aggregateValue.as}`;\n });\n })\n .join(',');\n}\n\nfunction buildGroupBy<T>(groupBy: GroupBy<T>) {\n if (!groupBy.properties) {\n throw new Error(`'properties' property required for groupBy`);\n }\n\n let result = `(${groupBy.properties.join(',')})`;\n\n if (groupBy.transform) {\n result += `,${buildTransforms(groupBy.transform)}`;\n }\n\n return result;\n}\n\nfunction buildOrderBy<T>(orderBy: OrderBy<T>, prefix: string = ''): string {\n if (Array.isArray(orderBy)) {\n return (orderBy as OrderByObject<T>[])\n .map((value) =>\n Array.isArray(value) &&\n value.length === 2 &&\n ['asc', 'desc'].indexOf(value[1]) !== -1\n ? value.join(' ')\n : value\n )\n .map((v) => `${prefix}${v}`)\n .join(',');\n } else if (typeof orderBy === 'object') {\n return Object.entries(orderBy)\n .map(([k, v]) => buildOrderBy(v as OrderBy<any>, `${k}/`))\n .map((v) => `${prefix}${v}`)\n .join(',');\n }\n return `${prefix}${orderBy}`;\n}\n\nfunction buildUrl(path: string, params: { [name: string]: any }): string {\n // This can be refactored using URL API. But IE does not support it.\n const queries: string[] = Object.entries(params).map(\n ([key, value]) => `${key}=${value}`\n );\n return queries.length ? `${path}?${queries.join('&')}` : path;\n}\n\nfunction parseNot(builtFilters: string[]): string {\n return `not(${builtFilters.join(' and ')})`;\n}\n","import { binary, duration, raw } from '../resources/builder';\nimport { Parser, StructuredTypeFieldOptions } from '../types';\n\n//https://en.wikipedia.org/wiki/ISO_8601#Durations\n\nexport type Duration = {\n sign?: 1 | -1;\n years?: number;\n months?: number;\n weeks?: number;\n days?: number;\n hours?: number;\n minutes?: number;\n seconds?: number;\n};\n\n//https://github.com/niklasvh/base64-arraybuffer\nconst chars =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const EDM_PARSERS: { [type: string]: Parser<any> } = {\n 'Edm.Guid': <Parser<string | string[]>>{\n deserialize(\n value: string | string[],\n options: StructuredTypeFieldOptions\n ): string | string[] {\n return value;\n },\n serialize(\n value: string | string[],\n options: StructuredTypeFieldOptions\n ): string | string[] {\n return value;\n },\n encode(value: string | string[], options: StructuredTypeFieldOptions): any {\n return Array.isArray(value) ? value.map((v) => raw(v)) : raw(value);\n },\n },\n 'Edm.Date': <Parser<Date | Date[]>>{\n deserialize(\n value: string | string[],\n options: StructuredTypeFieldOptions\n ): Date | Date[] {\n //TODO: Check valid input for date\n const _deserialize = (v: string) => new Date(`${v}T00:00:00.000Z`);\n return Array.isArray(value)\n ? value.map(_deserialize)\n : _deserialize(value);\n },\n serialize(\n value: Date | Date[],\n options: StructuredTypeFieldOptions\n ): string | string[] {\n const _serialize = (v: Date) => v.toISOString().substring(0, 10);\n return Array.isArray(value) ? value.map(_serialize) : _serialize(value);\n },\n encode(value: Date | Date[], options: StructuredTypeFieldOptions): any {\n const _encode = (v: Date) => v.toISOString().substring(0, 10);\n return Array.isArray(value)\n ? value.map((v) => raw(_encode(v)))\n : raw(_encode(value));\n },\n },\n 'Edm.TimeOfDay': <Parser<Date | Date[]>>{\n deserialize(\n value: string | string[],\n options: StructuredTypeFieldOptions\n ): Date | Date[] {\n //TODO: Check valid input for time of day\n const _deserialize = (v: string) => new Date(`1970-01-01T${v}Z`);\n return Array.isArray(value)\n ? value.map(_deserialize)\n : _deserialize(value);\n },\n serialize(\n value: Date | Date[],\n options: StructuredTypeFieldOptions\n ): string | string[] {\n const _serialize = (v: Date) => v.toISOString().substring(11, 23);\n return Array.isArray(value) ? value.map(_serialize) : _serialize(value);\n },\n encode(value: Date | Date[], options: StructuredTypeFieldOptions): any {\n const _encode = (v: Date) => v.toISOString().substring(11, 23);\n return Array.isArray(value)\n ? value.map((v) => raw(_encode(v)))\n : raw(_encode(value));\n },\n },\n 'Edm.DateTimeOffset': <Parser<Date>>{\n deserialize(\n value: string | string[],\n options: StructuredTypeFieldOptions\n ): Date | Date[] {\n const _deserialize = (v: string) => new Date(v);\n return Array.isArray(value)\n ? value.map(_deserialize)\n : _deserialize(value);\n },\n serialize(\n value: Date | Date[],\n options: StructuredTypeFieldOptions\n ): string | string[] {\n const _serialize = (v: Date) => v.toISOString();\n return Array.isArray(value) ? value.map(_serialize) : _serialize(value);\n },\n encode(value: Date | Date[], options: StructuredTypeFieldOptions): any {\n const _encode = (v: Date) => v.toISOString();\n return Array.isArray(value)\n ? value.map((v) => raw(_encode(v)))\n : raw(_encode(value));\n },\n },\n 'Edm.Duration': <Parser<Duration>>{\n deserialize(\n value: string,\n options: StructuredTypeFieldOptions\n ): Duration | Duration[] {\n const _deserialize = (v: string) => {\n const matches =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/.exec(\n v\n );\n if (!matches || value.length < 3) {\n throw new TypeError(\n `duration invalid: \"${value}\". Must be a ISO 8601 duration. See https://en.wikipedia.org/wiki/ISO_8601#Durations`\n );\n }\n let duration: Duration = {};\n duration.sign = matches[1] === '-' ? -1 : 1;\n return [\n 'years',\n 'months',\n 'weeks',\n 'days',\n 'hours',\n 'minutes',\n 'seconds',\n ].reduce((acc: any, name, index) => {\n const v = parseFloat(matches[index + 2]);\n if (!Number.isNaN(v)) acc[name] = v;\n return acc;\n }, duration) as Duration;\n };\n return Array.isArray(value)\n ? value.map(_deserialize)\n : _deserialize(value);\n },\n serialize(\n value: Duration | Duration[],\n options: StructuredTypeFieldOptions\n ): string | string[] {\n const _serialize = (v: Duration) =>\n [\n v.sign === -1 ? '-' : '',\n 'P',\n v.years ? v.years + 'Y' : '',\n v.months ? v.months + 'M' : '',\n v.weeks ? v.weeks + 'W' : '',\n v.days ? v.days + 'D' : '',\n 'T',\n v.hours ? v.hours + 'H' : '',\n v.minutes ? v.minutes + 'M' : '',\n v.seconds ? v.seconds + 'S' : '',\n ].join('');\n return Array.isArray(value) ? value.map(_serialize) : _serialize(value);\n },\n encode(\n value: Duration | Duration[],\n options: StructuredTypeFieldOptions\n ): any {\n const _encode = (v: Duration) =>\n [\n v.sign === -1 ? '-' : '',\n 'P',\n v.years ? v.years + 'Y' : '',\n v.months ? v.months + 'M' : '',\n v.weeks ? v.weeks + 'W' : '',\n v.days ? v.days + 'D' : '',\n 'T',\n v.hours ? v.hours + 'H' : '',\n v.minutes ? v.minutes + 'M' : '',\n v.seconds ? v.seconds + 'S' : '',\n ].join('');\n return Array.isArray(value)\n ? value.map((v) => duration(_encode(v)))\n : duration(_encode(value));\n },\n },\n 'Edm.Decimal': <Parser<number>>{\n deserialize(\n value: string | number | (string | number)[],\n options: StructuredTypeFieldOptions\n ): string | number | (string | number)[] {\n const _deserialize = (v: string | number) => {\n if (typeof v === 'string' && options.ieee754Compatible) {\n return parseFloat(v);\n }\n return v;\n };\n return Array.isArray(value)\n ? value.map(_deserialize)\n : _deserialize(value);\n },\n serialize(\n value: number | number[],\n options: StructuredTypeFieldOptions\n ): any {\n const _serialize = (v: number) => {\n if (options.ieee754Compatible) {\n return parseFloat(v.toPrecision(options.field.precision)).toFixed(\n options.field.scale\n );\n }\n return v;\n };\n return Array.isArray(value) ? value.map(_serialize) : _serialize(value);\n },\n encode(value: number | number[], options: StructuredTypeFieldOptions): any {\n const _encode = (v: number) => {\n if (options.ieee754Compatible) {\n return parseFloat(v.toPrecision(options.field.precision)).toFixed(\n options.field.scale\n );\n }\n return v;\n };\n return Array.isArray(value)\n ? value.map((v) => raw(`${_encode(v)}`))\n : raw(`${_encode(value)}`);\n },\n },\n 'Edm.Double': <Parser<number>>{\n deserialize(\n value: string | number | (string | number)[],\n options: StructuredTypeFieldOptions\n ): number | number[] {\n const _deserialize = (v: string | number) =>\n v === 'INF' ? Infinity : (v as number);\n return Array.isArray(value)\n ? value.map(_deserialize)\n : _deserialize(value);\n },\n serialize(\n value: number | number[],\n options: StructuredTypeFieldOptions\n ): string | number | (string | number)[] {\n const _serialize = (v: number) => (v === Infinity ? 'INF' : v);\n return Array.isArray(value) ? value.map(_serialize) : _serialize(value);\n },\n encode(value: number | number[], options: StructuredTypeFieldOptions): any {\n const _encode = (v: number) => (v === Infinity ? 'INF' : v);\n return Array.isArray(value)\n ? value.map((v) => raw(`${_encode(v)}`))\n : raw(`${_encode(value)}`);\n },\n },\n 'Edm.Single': <Parser<number>>{\n deserialize(\n value: string | number | (string | number)[],\n options: StructuredTypeFieldOptions\n ): number | number[] {\n const _deserialize = (v: string | number) =>\n v === 'INF' ? Infinity : (v as number);\n return Array.isArray(value)\n ? value.map(_deserialize)\n : _deserialize(value);\n },\n serialize(\n value: number | number[],\n options: StructuredTypeFieldOptions\n ): string | number | (string | number)[] {\n const _serialize = (v: number) => (v === Infinity ? 'INF' : v);\n return Array.isArray(value) ? value.map(_serialize) : _serialize(value);\n },\n encode(value: number | number[], options: StructuredTypeFieldOptions): any {\n const _encode = (v: number) => (v === Infinity ? 'INF' : v);\n return Array.isArray(value)\n ? value.map((v) => raw(`${_encode(v)}`))\n : raw(`${_encode(value)}`);\n },\n },\n 'Edm.Binary': <Parser<ArrayBuffer>>{\n deserialize(\n value: string | string[],\n options: StructuredTypeFieldOptions\n ): ArrayBuffer | ArrayBuffer[] {\n const _deserialize = (v: string) => {\n var bufferLength = v.length * 0.75,\n len = v.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (v[v.length - 1] === '=') {\n bufferLength--;\n if (v[v.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n var arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[v.charCodeAt(i)];\n encoded2 = lookup[v.charCodeAt(i + 1)];\n encoded3 = lookup[v.charCodeAt(i + 2)];\n encoded4 = lookup[v.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n };\n return Array.isArray(value)\n ? value.map(_deserialize)\n : _deserialize(value);\n },\n serialize(\n value: ArrayBuffer | ArrayBuffer[],\n options: StructuredTypeFieldOptions\n ): string | string[] {\n const _serialize = (v: ArrayBuffer) => {\n var bytes = new Uint8Array(v),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n };\n return Array.isArray(value) ? value.map(_serialize) : _serialize(value);\n },\n encode(\n value: ArrayBuffer | ArrayBuffer[],\n options: StructuredTypeFieldOptions\n ): any {\n const _encode = (v: ArrayBuffer) => {\n var bytes = new Uint8Array(v),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n };\n return Array.isArray(value)\n ? value.map((v) => binary(_encode(v)))\n : binary(_encode(value));\n },\n },\n};\n\n/*\nEdm.Binary Binary data\nEdm.Boolean Binary-valued logic\nEdm.Byte Unsigned 8-bit integer\nEdm.Date Date without a time-zone offset\nEdm.DateTimeOffset Date and time with a time-zone offset, no leap seconds\nEdm.Decimal Numeric values with fixed precision and scale\nEdm.Double IEEE 754 binary64 floating-point number (15-17 decimal digits)\nEdm.Duration Signed duration in days, hours, minutes, and (sub)seconds\nEdm.Guid 16-byte (128-bit) unique identifier\nEdm.Int16 Signed 16-bit integer\nEdm.Int32 Signed 32-bit integer\nEdm.Int64 Signed 64-bit integer\nEdm.SByte Signed 8-bit integer\nEdm.Single IEEE 754 binary32 floating-point number (6-9 decimal digits)\nEdm.Stream Binary data stream\nEdm.String Sequence of UTF-8 characters\nEdm.TimeOfDay Clock time 00:00-23:59:59.999999999999\nEdm.Geography Abstract base type for all Geography types\nEdm.GeographyPoint A point in a round-earth coordinate system\nEdm.GeographyLineString Line string in a round-earth coordinate system\nEdm.GeographyPolygon Polygon in a round-earth coordinate system\nEdm.GeographyMultiPoint Collection of points in a round-earth coordinate system\nEdm.GeographyMultiLineString Collection of line strings in a round-earth coordinate system\nEdm.GeographyMultiPolygon Collection of polygons in a round-earth coordinate system\nEdm.GeographyCollection Collection of arbitrary Geography values\nEdm.Geometry Abstract base type for all Geometry types\nEdm.GeometryPoint Point in a flat-earth coordinate system\nEdm.GeometryLineString Line string in a flat-earth coordinate system\nEdm.GeometryPolygon Polygon in a flat-earth coordinate system\nEdm.GeometryMultiPoint Collection of points in a flat-earth coordinate system\nEdm.GeometryMultiLineString Collection of line strings in a flat-earth coordinate system\nEdm.GeometryMultiPolygon Collection of polygons in a flat-earth coordinate system\nEdm.GeometryCollection Collection of arbitrary Geometry values\n*/\n","const ISO_REGEX =\n /(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))/;\n\nexport const Dates = {\n isoStringToDate(value: any): any {\n if (typeof value === 'string' && value.search(ISO_REGEX) === 0) {\n return new Date(value);\n } else if (Array.isArray(value)) {\n return value.map((v) => this.isoStringToDate(v));\n } else if (value && value.constructor === Object) {\n return Object.keys(value)\n .map((key) => [key, this.isoStringToDate(value[key])])\n .reduce((acc, v) => Object.assign(acc, { [v[0]]: v[1] }), {});\n }\n return value;\n },\n};\n","export const Enums = {\n names<E>(Enum: E): string[] {\n return Object.values(Enum).filter((v) => typeof v === 'string');\n },\n\n values<E>(Enum: E): number[] {\n return Object.values(Enum).filter((v) => typeof v === 'number');\n },\n\n toValue<E>(Enum: E, value: any): number {\n if (value in Enum)\n return typeof value === 'string' ? (Enum as any)[value] : value;\n return NaN;\n },\n\n toValues<E>(Enum: E, value: any): number[] {\n if (typeof value === 'number') {\n return this.values(Enum).filter((v) => (value & v) === v);\n }\n if (typeof value === 'string') {\n value = value.split(',').map((o) => o.trim());\n }\n if (Array.isArray(value) && value.every((v) => v in Enum)) {\n return value.map((o) => this.toValue(Enum, o));\n }\n return [];\n },\n\n toName<E>(Enum: E, value: any): string {\n if (value in Enum)\n return typeof value === 'number' ? (Enum as any)[value] : value;\n return '';\n },\n\n toNames<E>(Enum: E, value: any): string[] {\n if (typeof value === 'number') {\n return this.values(Enum)\n .filter((v) => (value & v) === v)\n .map((v) => this.toName(Enum, v));\n }\n if (typeof value === 'string') {\n value = value.split(',').map((o) => o.trim());\n }\n if (Array.isArray(value) && value.every((v) => v in Enum)) {\n return value.map((o) => this.toName(Enum, o) as string);\n }\n return [];\n },\n};\n","export const Types = {\n isObject(value: any): boolean {\n var type = typeof value;\n return value != null && (type === 'object' || type === 'function');\n },\n\n isPlainObject(value: any) {\n if (Object.prototype.toString.call(value) !== '[object Object]') {\n return false;\n }\n\n const prototype = Object.getPrototypeOf(value);\n return prototype === null || prototype === Object.prototype;\n },\n\n isFunction(value: any): boolean {\n return typeof value === 'function';\n },\n\n isArray(value: any): boolean {\n return Array.isArray(value);\n },\n\n isEmpty(value: any): boolean {\n return (\n value === undefined ||\n value === null ||\n (typeof value === 'string' && !value.length) ||\n (Types.isArray(value) && !value.length) ||\n (Types.isFunction(value.isEmpty) && value.isEmpty()) ||\n (Types.isArray(value) &&\n (value as any[]).every((v) => Types.isEmpty(v))) ||\n (Types.isObject(value) &&\n !Object.keys(value).filter((k) => value.hasOwnProperty(k)).length) ||\n (Types.isPlainObject(value) &&\n !Object.keys(value).filter((k) => value.hasOwnProperty(k)).length)\n );\n },\n\n isEqual(value1: any, value2: any) {\n function getType(obj: any) {\n return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();\n }\n\n function areDatesEqual() {\n return value1.getTime() === value2.getTime();\n }\n\n function areArraysBufferEqual() {\n if (value1.byteLength !== value2.byteLength) {\n return false;\n }\n\n var view1 = new DataView(value1);\n var view2 = new DataView(value2);\n\n var i = value1.byteLength;\n while (i--) {\n if (view1.getUint8(i) !== view2.getUint8(i)) {\n return false;\n }\n }\n\n return true;\n }\n\n function areArraysEqual() {\n // Check length\n if (value1.length !== value2.length) return false;\n\n // Check each item in the array\n for (let i = 0; i < value1.length; i++) {\n if (!Types.isEqual(value1[i], value2[i])) return false;\n }\n\n // If no errors, return true\n return true;\n }\n\n function areObjectsEqual() {\n if (Object.keys(value1).length !== Object.keys(value2).length)\n return false;\n\n // Check each item in the object\n for (let key in value1) {\n if (Object.prototype.hasOwnProperty.call(value1, key)) {\n if (!Types.isEqual(value1[key], value2[key])) return false;\n }\n }\n\n // If no errors, return true\n return true;\n }\n\n function areFunctionsEqual() {\n return value1.toString() === value2.toString();\n }\n\n function arePrimativesEqual() {\n return value1 === value2;\n }\n\n // Get the object type\n let type = getType(value1);\n\n // If the two items are not the same type, return false\n if (type !== getType(value2)) return false;\n\n // Compare based on type\n if (type === 'date') return areDatesEqual();\n if (type === 'arraybuffer') return areArraysBufferEqual();\n if (type === 'array') return areArraysEqual();\n if (type === 'object') return areObjectsEqual();\n if (type === 'function') return areFunctionsEqual();\n return arePrimativesEqual();\n },\n};\n","import { Types } from './types';\n\nexport const Objects = {\n set(obj: Object, path: string, value: any) {\n // Check if path is string or array. Regex : ensure that we do not have '.' and brackets.\n const pathArray = (\n Types.isArray(path) ? path : path.match(/([^[.\\]])+/g)\n ) as any[];\n\n pathArray.reduce((acc, key, i) => {\n if (acc[key] === undefined) acc[key] = {};\n if (i === pathArray.length - 1) acc[key] = value;\n return acc[key];\n }, obj);\n },\n\n get(obj: Object, path: string, def?: any): any {\n // Check if path is string or array. Regex : ensure that we do not have '.' and brackets.\n const pathArray = (\n Types.isArray(path) ? path : path.match(/([^[.\\]])+/g)\n ) as any[];\n // Find value if exist return otherwise return undefined value;\n return (\n pathArray.reduce((prevObj, key) => prevObj && prevObj[key], obj) || def\n );\n },\n\n unset(obj: Object, path: string) {\n // Check if path is string or array. Regex : ensure that we do not have '.' and brackets.\n const pathArray = (\n Types.isArray(path) ? path : path.match(/([^[.\\]])+/g)\n ) as any[];\n\n pathArray.reduce((acc, key, i) => {\n if (i === pathArray.length - 1) delete acc[key];\n return acc[key];\n }, obj);\n },\n\n has(obj: Object, path: string) {\n // Check if path is string or array. Regex : ensure that we do not have '.' and brackets.\n const pathArray = (\n Types.isArray(path) ? path : path.match(/([^[.\\]])+/g)\n ) as any[];\n\n return !!pathArray.reduce((prevObj, key) => prevObj && prevObj[key], obj);\n },\n\n merge(target: Object, source: Object) {\n const merge = (target: any, source: { [attr: string]: any }) => {\n for (let attr in source) {\n let value = source[attr];\n if (value !== null && Types.isPlainObject(value) && attr in target) {\n merge(target[attr], value);\n } else if (target[attr] !== value) {\n target[attr] = value;\n }\n }\n };\n merge(target, source);\n return target;\n },\n\n equal(object1: { [attr: string]: any }, object2: { [attr: string]: any }) {\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (const key of keys1) {\n const val1 = object1[key];\n const val2 = object2[key];\n const areObjects = Types.isPlainObject(val1) && Types.isPlainObject(val2);\n if (\n (areObjects && !Objects.equal(val1, val2)) ||\n (!areObjects && val1 !== val2)\n ) {\n return false;\n }\n }\n return true;\n },\n\n difference(\n object1: { [attr: string]: any },\n object2: { [attr: string]: any }\n ) {\n if (!object2 || !Types.isPlainObject(object2)) {\n return object1;\n }\n var diffs: { [name: string]: any } = {};\n var key;\n var arraysMatch = function (arr1: any[], arr2: any[]) {\n if (arr1.length !== arr2.length) return false;\n\n for (var i = 0; i < arr1.length; i++) {\n if (arr1[i] !== arr2[i]) return false;\n }\n\n return true;\n };\n\n var compare = function (item1: any, item2: any | undefined, key: string) {\n if (item2 === undefined) {\n diffs[key] = null;\n return;\n }\n\n if (typeof item1 !== typeof item2) {\n diffs[key] = item2;\n return;\n }\n\n if (Types.isPlainObject(item1)) {\n var objDiff = Objects.difference(item1, item2);\n if (Object.keys(objDiff).length > 0) {\n diffs[key] = objDiff;\n }\n return;\n }\n\n if (Array.isArray(item1)) {\n if (!arraysMatch(item1, item2)) {\n diffs[key] = item2;\n }\n return;\n }\n\n if (item1 !== item2) {\n diffs[key] = item2;\n }\n };\n\n for (key in object1) {\n if (object1.hasOwnProperty(key)) {\n compare(object1[key], object2[key], key);\n }\n }\n\n for (key in object2) {\n if (object2.hasOwnProperty(key)) {\n if (!object1[key] && object1[key] !== object2[key]) {\n diffs[key] = object2[key];\n }\n }\n }\n return diffs;\n },\n uniqueId: (\n (counter) =>\n (str = '') =>\n `${str}${++counter}`\n )(0),\n resolveKey(key: any, { single = true }: { single?: boolean } = {}) {\n if (['number', 'string'].indexOf(typeof key) !== -1) return key;\n if (Types.isPlainObject(key)) {\n const values = Object.values(key);\n if (values.length === 1 && single) {\n // Single primitive key value\n key = values[0];\n } else if (values.some((v) => v === undefined)) {\n // Compose key, needs all values\n return undefined;\n }\n return !Types.isEmpty(key) ? key : undefined;\n }\n return undefined;\n },\n};\n","export const $ID = '$id';\nexport const ODATA_ID = '@odata.id';\n\n// SEGMENTS\nexport const $METADATA = '$metadata';\nexport const $BATCH = '$batch';\nexport const $REF = '$ref';\nexport const $VALUE = '$value';\nexport const $COUNT = '$count';\nexport const $QUERY = '$query';\nexport const $INLINECOUNT = '$inlinecount';\n\n// HTTP HEADERS\nexport const IF_MATCH_HEADER = 'If-Match';\nexport const IF_NONE_MATCH_HEADER = 'If-None-Match';\nexport const CONTENT_TYPE = 'Content-Type';\nexport const CACHE_CONTROL = 'Cache-Control';\nexport const HTTP11 = 'HTTP/1.1';\nexport const ACCEPT = 'Accept';\nexport const PREFER = 'Prefer';\nexport const ODATA_VERSION = 'OData-Version';\nexport const ODATA_VERSION_HEADERS = [\n ODATA_VERSION,\n ODATA_VERSION.toLowerCase(),\n 'dataserviceversion',\n];\nexport const ETAG_HEADER = 'ETag';\nexport const ETAG_HEADERS = [ETAG_HEADER, ETAG_HEADER.toLowerCase()];\nexport const LOCATION_HEADER = 'Location';\nexport const LOCATION_HEADERS = [\n LOCATION_HEADER,\n LOCATION_HEADER.toLowerCase(),\n];\nexport const ODATA_ENTITYID = 'OData-EntityId';\nexport const ODATA_ENTITYID_HEADERS = [\n ODATA_ENTITYID,\n ODATA_ENTITYID.toLowerCase(),\n];\nexport const PREFERENCE_APPLIED = 'Preference-Applied';\nexport const PREFERENCE_APPLIED_HEADERS = [\n PREFERENCE_APPLIED,\n PREFERENCE_APPLIED.toLowerCase(),\n];\nexport const RETRY_AFTER = 'Retry-After';\nexport const RETRY_AFTER_HEADERS = [RETRY_AFTER, RETRY_AFTER.toLowerCase()];\n\n// HTTP HEADER VALUES\nexport const APPLICATION_JSON = 'application/json';\nexport const APPLICATION_HTTP = 'application/http';\nexport const TEXT_PLAIN = 'text/plain';\nexport const MULTIPART_MIXED = 'multipart/mixed';\nexport const MULTIPART_MIXED_BOUNDARY = 'multipart/mixed;boundary=';\nexport const CONTENT_TRANSFER_ENCODING = 'Content-Transfer-Encoding';\nexport const CONTENT_ID = 'Content-ID';\nexport const MAX_AGE = 'max-age';\n\n// VERSIONS\nexport const VERSION_4_0 = '4.0';\nexport const VERSION_3_0 = '3.0';\nexport const VERSION_2_0 = '2.0';\nexport const DEFAULT_VERSION = VERSION_4_0;\n\nexport const BINARY = 'binary';\nexport const BOUNDARY_PREFIX_SUFFIX = '--';\nexport const BATCH_PREFIX = 'batch_';\nexport const CHANGESET_PREFIX = 'changeset_';\nexport const DEFAULT_STRIP_METADATA = 'full';\nexport const DEFAULT_FETCH_POLICY = 'network-only';\nexport const DEFAULT_TIMEOUT = 60; // Time in seconds\nexport const CALLABLE_BINDING_PARAMETER = 'bindingParameter';\n\n// URL PARTS\nexport const QUERY_SEPARATOR = '?';\nexport const PARAM_SEPARATOR = '&';\nexport const VALUE_SEPARATOR = '=';\nexport const PATH_SEPARATOR = '/';\nexport const ODATA_PARAM_PREFIX = '$';\nexport const ODATA_ALIAS_PREFIX = '@';\n\nexport const NEWLINE = '\\r\\n';\nexport const NEWLINE_REGEXP = /\\r?\\n/;\nexport const CACHE_KEY_SEPARATOR = ':';\n\n// Standard vocabularies for annotating OData services\n\nexport const COMPUTED = 'Org.OData.Core.V1.Computed';\nexport const OPTIMISTIC_CONCURRENCY = 'Org.OData.Core.V1.OptimisticConcurrency';\n","import { PARAM_SEPARATOR, VALUE_SEPARATOR } from '../constants';\n\nexport const Urls = {\n parseQueryString(query: string) {\n return query.split(PARAM_SEPARATOR).reduce((acc, param: string) => {\n let index = param.indexOf(VALUE_SEPARATOR);\n if (index !== -1)\n Object.assign(acc, {\n [param.substr(0, index)]: param.substr(index + 1),\n });\n return acc;\n }, {});\n },\n escapeIllegalChars(string: string) {\n string = string.replace(/%/g, '%25');\n string = string.replace(/\\+/g, '%2B');\n string = string.replace(/\\//g, '%2F');\n string = string.replace(/\\?/g, '%3F');\n string = string.replace(/#/g, '%23');\n string = string.replace(/&/g, '%26');\n string = string.replace(/'/g, \"''\");\n return string;\n },\n};\n","import { HttpHeaders, HttpParams } from '@angular/common/http';\nimport { Types } from './types';\n\nexport const Http = {\n //Merge Headers\n mergeHttpHeaders(\n ...values: (HttpHeaders | { [header: string]: string | string[] })[]\n ): HttpHeaders {\n let headers = new HttpHeaders();\n values.forEach((value) => {\n if (value instanceof HttpHeaders) {\n value.keys().forEach((key) => {\n headers = ((value as HttpHeaders).getAll(key) || []).reduce(\n (acc, v) => acc.append(key, v),\n headers\n );\n });\n } else if (Types.isPlainObject(value)) {\n Object.entries(value).forEach(([key, value]) => {\n headers = (Array.isArray(value) ? value : [value]).reduce(\n (acc, v) => acc.append(key, v),\n headers\n );\n });\n }\n });\n return headers;\n },\n\n // Merge Params\n mergeHttpParams(\n ...values: (HttpParams | { [param: string]: string | string[] })[]\n ): HttpParams {\n let params = new HttpParams();\n values.forEach((value) => {\n if (value instanceof HttpParams) {\n value.keys().forEach((key) => {\n params = ((value as HttpParams).getAll(key) || []).reduce(\n (acc, v) => acc.append(key, v),\n params\n );\n });\n } else if (Types.isPlainObject(value)) {\n Object.entries(value).forEach(([key, value]) => {\n params = (Array.isArray(value) ? value : [value]).reduce(\n (acc, v) => acc.append(key, v),\n params\n );\n });\n }\n });\n return params;\n },\n\n // Split Params\n splitHttpParams(\n params: HttpParams,\n keys: string[]\n ): [HttpParams, HttpParams] {\n let other = new HttpParams();\n params.keys().forEach((key) => {\n if (keys.includes(key)) {\n other = (params.getAll(key) || []).reduce(\n (acc, v) => acc.append(key, v),\n other\n );\n params = params.delete(key);\n }\n });\n return [params, other];\n },\n\n resolveHeaderKey(\n headers: HttpHeaders | { [param: string]: string | string[] },\n options: string[]\n ): string | undefined {\n if (headers instanceof HttpHeaders) {\n return headers.keys().find((k) => options.indexOf(k) !== -1);\n } else if (Types.isPlainObject(headers)) {\n return Object.keys(headers).find((k) => options.indexOf(k) !== -1);\n }\n return undefined;\n },\n};\n","import { AnnotationConfig } from '../types';\n\nexport class ODataAnnotation {\n term: string;\n string?: string;\n bool?: boolean;\n int?: number;\n permissions?: string[];\n properties?: string[];\n constructor(annot: AnnotationConfig) {\n this.term = annot.term;\n Object.assign(this, annot);\n }\n}\n","import {\n VERSION_3_0,\n VERSION_2_0,\n VERSION_4_0,\n $COUNT,\n $INLINECOUNT,\n} from './constants';\nimport { ODataMetadataType } from './types';\n\nexport const COLLECTION = /Collection\\(([\\w\\.]+)\\)/;\nexport const PROPERTY = /([\\w\\d\\-_]+)\\(([\\'\\w\\d\\-_=]+)\\)/;\nexport const EXPAND = /([\\w\\d\\-_]+)\\(([\\w\\d\\,\\(\\)]+)\\)/;\n\nexport type ODataContext = {\n serviceRootUrl?: string;\n metadataUrl?: string;\n entitySet?: string;\n key?: string;\n expand?: string;\n type?: string;\n property?: string;\n entity?: boolean;\n};\n\nexport interface ODataVersionHelper {\n VALUE: string;\n ODATA_ANNOTATION_PREFIX: string;\n ODATA_FUNCTION_PREFIX: string;\n ODATA_ID: string;\n ODATA_COUNT: string;\n ODATA_ETAG: string;\n ODATA_CONTEXT: string;\n ODATA_MEDIA_ETAG: string;\n entity(value: { [name: string]: any }): any;\n entities(value: { [name: string]: any }): any;\n property(value: { [name: string]: any }): any;\n annotations(value: { [name: string]: any }): { [name: string]: any };\n attributes(value: { [name: string]: any }, metadata: ODataMetadataType): any;\n //Get or Set Id\n id(value: { [name: string]: any }, id?: string): string | undefined;\n //Get or Set Etag\n etag(value: { [name: string]: any }, etag?: string): string | undefined;\n count(value: { [name: string]: any }): number | undefined;\n context(value: { [name: string]: any }): ODataContext;\n functions(value: { [name: string]: any }): { [name: string]: any };\n properties(value: { [name: string]: any }): { [name: string]: any };\n mediaEtag(value: { [name: string]: any }): string | undefined;\n metadataEtag(value: { [name: string]: any }): string | undefined;\n type(value: { [name: string]: any }): string | undefined;\n nextLink(value: { [name: string]: any }): string | undefined;\n readLink(value: { [name: string]: any }): string | undefined;\n mediaReadLink(value: { [name: string]: any }): string | undefined;\n editLink(value: { [name: string]: any }): string | undefined;\n mediaEditLink(value: { [name: string]: any }): string | undefined;\n mediaContentType(value: { [name: string]: any }): string | undefined;\n deltaLink(value: { [name: string]: any }): string | undefined;\n countParam(): { [name: string]: string };\n}\n\nconst ODataVersionBaseHelper = <any>{\n entity(data: { [name: string]: any }) {\n return data;\n },\n entities(data: { [name: string]: any }) {\n return data[this.VALUE];\n },\n property(data: { [name: string]: any }) {\n return this.VALUE in data ? data[this.VALUE] : data;\n },\n functions(value: { [name: string]: any }) {\n return Object.keys(value)\n .filter((k) => k.startsWith(this.ODATA_FUNCTION_PREFIX))\n .reduce(\n (acc, key) => Object.assign(acc, { [key.substr(1)]: value[key] }),\n {}\n );\n },\n properties(value: { [name: string]: any }) {\n return Object.keys(value)\n .filter((k) => k.indexOf(this.ODATA_ANNOTATION_PREFIX) > 0)\n .reduce((acc: { [name: string]: any }, key) => {\n let name = key.substr(0, key.indexOf(this.ODATA_ANNOTATION_PREFIX));\n if (!(name in acc)) {\n acc[name] = {};\n }\n Object.assign(acc[name], {\n [key.substr(key.indexOf(this.ODATA_ANNOTATION_PREFIX))]: value[key],\n });\n return acc;\n }, {});\n },\n id(value: { [name: string]: any }, id?: string) {\n if (id !== undefined) value[this.ODATA_ID] = id;\n return this.ODATA_ID in value\n ? (value[this.ODATA_ID] as string)\n : undefined;\n },\n etag(value: { [name: string]: any }, etag?: string) {\n if (etag !== undefined) value[this.ODATA_ETAG] = etag;\n return this.ODATA_ETAG in value\n ? (value[this.ODATA_ETAG] as string)\n : undefined;\n },\n mediaEtag(value: { [name: string]: any }) {\n return this.ODATA_MEDIA_ETAG in value\n ? decodeURIComponent(value[this.ODATA_MEDIA_ETAG] as string)\n : undefined;\n },\n metadataEtag(value: { [name: string]: any }) {\n return this.ODATA_METADATA_ETAG in value\n ? decodeURIComponent(value[this.ODATA_METADATA_ETAG] as string)\n : undefined;\n },\n type(value: { [name: string]: any }) {\n if (this.ODATA_TYPE in value) {\n const type = value[this.ODATA_TYPE].substr(1) as string;\n const matches = COLLECTION.exec(type);\n if (matches)\n return matches[1].indexOf('.') === -1\n ? `Edm.${matches[1]}`\n : matches[1];\n return type;\n }\n return undefined;\n },\n count(value: { [name: string]: any }) {\n return this.ODATA_COUNT in value\n ? Number(value[this.ODATA_COUNT])\n : undefined;\n },\n annotations(value: { [name: string]: any }) {\n return Object.keys(value)\n .filter(\n (key) =>\n key.indexOf(this.ODATA_ANNOTATION_PREFIX) !== -1 ||\n key.startsWith(this.ODATA_FUNCTION_PREFIX)\n )\n .reduce((acc, key) => Object.assign(acc, { [key]: value[key] }), {});\n },\n attributes(value: { [name: string]: any }, metadata: ODataMetadataType) {\n return Object.entries(value)\n .filter(\n ([k]) =>\n metadata === 'none' ||\n (metadata === 'minimal' &&\n (k.indexOf(this.ODATA_ANNOTATION_PREFIX) === -1 ||\n k.startsWith(this.ODATA_ANNOTATION_PREFIX)) &&\n !k.startsWith(this.ODATA_FUNCTION_PREFIX)) ||\n (metadata === 'full' &&\n k.indexOf(this.ODATA_ANNOTATION_PREFIX) === -1 &&\n !k.startsWith(this.ODATA_FUNCTION_PREFIX))\n )\n .reduce((acc, e) => ({ ...acc, [e[0]]: e[1] }), {});\n },\n nextLink(value: { [name: string]: any }) {\n return this.ODATA_NEXTLINK in value\n ? decodeURIComponent(value[this.ODATA_NEXTLINK] as string)\n : undefined;\n },\n readLink(value: { [name: string]: any }) {\n return this.ODATA_READLINK in value\n ? decodeURIComponent(value[this.ODATA_READLINK] as string)\n : undefined;\n },\n mediaReadLink(value: { [name: string]: any }) {\n return this.ODATA_MEDIA_READLINK in value\n ? decodeURIComponent(value[this.ODATA_MEDIA_READLINK] as string)\n : undefined;\n },\n editLink(value: { [name: string]: any }) {\n return this.ODATA_EDITLINK in value\n ? decodeURIComponent(value[this.ODATA_EDITLINK] as string)\n : undefined;\n },\n mediaEditLink(value: { [name: string]: any }) {\n return this.ODATA_MEDIA_EDITLINK in value\n ? decodeURIComponent(value[this.ODATA_MEDIA_EDITLINK] as string)\n : undefined;\n },\n deltaLink(value: { [name: string]: any }) {\n return this.ODATA_DELTALINK in value\n ? decodeURIComponent(value[this.ODATA_DELTALINK] as string)\n : undefined;\n },\n mediaContentType(value: { [name: string]: any }) {\n return this.ODATA_MEDIA_CONTENTTYPE in value\n ? decodeURIComponent(value[this.ODATA_MEDIA_CONTENTTYPE] as string)\n : undefined;\n },\n};\n\nexport const ODataHelper = {\n //#region Version 4.0\n [VERSION_4_0]: <ODataVersionHelper>Object.assign({}, ODataVersionBaseHelper, {\n VALUE: 'value',\n ODATA_ANNOTATION_PREFIX: '@odata',\n ODATA_FUNCTION_PREFIX: '#',\n //odata.id: the ID of the entity\n ODATA_ID: '@odata.id',\n //odata.count: the total count of a collection of entities or collection of entity references, if requested.\n ODATA_COUNT: '@odata.count',\n //odata.context: the context URL for a collection, entity, primitive value, or service document.\n ODATA_CONTEXT: '@odata.context',\n //odata.etag: the ETag of the entity\n ODATA_ETAG: '@odata.etag',\n ODATA_METADATA_ETAG: '@odata.metadataEtag',\n //odata.type: the type of the containing {[name: string]: any} or targeted property if the type of the {[name: string]: any} or targeted property cannot be heuristically determined\n ODATA_TYPE: '@odata.type',\n //odata.nextLink: the next link of a collection with partial results\n ODATA_NEXTLINK: '@odata.nextLink',\n //odata.deltaLink: the delta link for obtaining changes to the result, if requested\n ODATA_DELTALINK: '@odata.deltaLink',\n //odata.readLink: the link used to read the entity, if the edit link cannot be used to read the entity\n ODATA_READLINK: '@odata.readLink',\n //odata.editLink: the link used to edit/update the entity, if the entity is updatable and the odata.id does not represent a URL that can be used to edit the entity\n ODATA_EDITLINK: '@odata.editLink',\n //odata.associationLink: the link used to describe the relationship between this entity and related entities\n ODATA_ASSOCIATIONLINK: '@odata.associationLink',\n //odata.navigationLink: the link used to retrieve the values of a navigation property\n ODATA_NAVIGATIONLINK: '@odata.navigationLink',\n //Media entities and stream properties may in addition contain the following annotations:\n //odata.mediaEtag: the ETag of the stream, as appropriate\n ODATA_MEDIA_ETAG: '@odata.mediaEtag',\n //odata.mediaContentType: the content type of the stream\n ODATA_MEDIA_CONTENTTYPE: '@odata.mediaContentType',\n //odata.mediaReadLink: the link used to read the stream\n ODATA_MEDIA_READLINK: '@odata.mediaReadLink',\n //odata.mediaEditLink: the link used to edit/update the stream\n ODATA_MEDIA_EDITLINK: '@odata.mediaEditLink',\n //http://nb-mdp-dev01:57970/$metadata#recursos/$entity\n //http://nb-mdp-dev01:57970/$metadata#categorias\n //http://nb-mdp-dev01:57970/$metadata#juzgados\n //http://nb-mdp-dev01:57970/$metadata#Collection(SIU.Recursos.RecursoEntry)\n //http://nb-mdp-dev01:57970/$metadata#categorias/$entity\n //http://nb-mdp-dev01:57970/$metadata#categorias(children(children(children(children(children(children(children(children(children(children()))))))))))/$entity\n //http://nb-mdp-dev01:57970/$metadata#recursos/SIU.Documentos.Documento/$entity\n //http://nb-mdp-dev01:57970/$metadata#SIU.Api.Infrastructure.Storage.Backend.SiuUrls\n context(value: { [name: string]: any }) {\n let ctx: ODataContext = {};\n if (this.ODATA_CONTEXT in value) {\n const str = value[this.ODATA_CONTEXT] as string;\n let index = str.indexOf('$metadata');\n ctx.serviceRootUrl = str.substr(0, index);\n index = str.indexOf('#');\n ctx.metadataUrl = str.substr(0, index);\n const parts = str.substr(index + 1).split('/');\n const col = COLLECTION.exec(parts[0]);\n if (col) {\n ctx.type = col[1];\n } else if (parts[0].indexOf('.') !== -1) {\n ctx.type = parts[0];\n } else {\n const property = parts[0].match(PROPERTY);\n const expand = parts[0].match(EXPAND);\n ctx.entity = parts[1] === '$entity';\n if (property) {\n ctx.entitySet = property[1];\n ctx.key = property[2];\n ctx.property = parts[1];\n } else if (expand) {\n ctx.entitySet = expand[1];\n ctx.expand = expand[2];\n } else {\n ctx.entitySet = parts[0];\n }\n }\n }\n return ctx;\n },\n countParam() {\n return { [$COUNT]: 'true' };\n },\n }),\n //#endregion\n //#region Version 3.0\n [VERSION_3_0]: <ODataVersionHelper>Object.assign({}, ODataVersionBaseHelper, {\n ODATA_ANNOTATION_PREFIX: 'odata.',\n ODATA_FUNCTION_PREFIX: '',\n ODATA_ID: 'odata.id',\n ODATA_ETAG: 'odata.etag',\n ODATA_CONTEXT: 'odata.metadata',\n ODATA_NEXTLINK: 'odata.nextLink',\n ODATA_TYPE: 'odata.type',\n ODATA_COUNT: 'odata.count',\n VALUE: 'value',\n context(value: { [name: string]: any }) {\n let ctx: ODataContext = {};\n if (this.ODATA_CONTEXT in value) {\n const str = value[this.ODATA_CONTEXT] as string;\n let index = str.indexOf('$metadata');\n ctx.serviceRootUrl = str.substr(0, index);\n index = str.indexOf('#');\n ctx.metadataUrl = str.substr(0, index);\n const parts = str.substr(index + 1).split('/');\n ctx.entitySet = parts[0];\n }\n return ctx;\n },\n countParam() {\n return { [$INLINECOUNT]: 'allpages' };\n },\n }),\n //#endregion\n //#region Version 2.0\n [VERSION_2_0]: <ODataVersionHelper>Object.assign({}, ODataVersionBaseHelper, {\n ODATA_ID: 'id',\n ODATA_ETAG: 'etag',\n ODATA_ANNOTATION: '__metadata',\n ODATA_NEXTLINK: '__next',\n ODATA_COUNT: '__count',\n ODATA_DEFERRED: '__deferred',\n ODATA_TYPE: 'type',\n VALUE: 'results',\n annotations(value: { [name: string]: any }) {\n if (this.ODATA_ANNOTATION in value) return value[this.ODATA_ANNOTATION];\n return value;\n },\n attributes(value: { [name: string]: any }, metadata: ODataMetadataType) {\n return value;\n },\n countParam() {\n return { [$INLINECOUNT]: 'allpages' };\n },\n }),\n //#endregion\n};\n","import {\n DEFAULT_FETCH_POLICY,\n DEFAULT_STRIP_METADATA,\n DEFAULT_VERSION,\n} from './constants';\nimport { ODataHelper } from './helper';\nimport {\n ApiOptions,\n FetchPolicy,\n ODataMetadataType,\n ODataVersion,\n Options,\n OptionsHelper,\n QueryOptionNames,\n} from './types';\n\nexport class ODataApiOptions implements ApiOptions, OptionsHelper {\n version: ODataVersion;\n stringAsEnum?: boolean;\n stripMetadata: ODataMetadataType;\n fetchPolicy: FetchPolicy;\n streaming?: boolean;\n // Http\n params: { [param: string]: string | string[] };\n headers: { [param: string]: string | string[] };\n withCredentials?: boolean;\n bodyQueryOptions: QueryOptionNames[];\n accept?: {\n metadata?: ODataMetadataType;\n ieee754Compatible?: boolean;\n };\n etag: {\n //http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part1-protocol/odata-v4.0-errata02-os-part1-protocol-complete.html#_Toc406398229\n ifMatch: boolean;\n //http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part1-protocol/odata-v4.0-errata02-os-part1-protocol-complete.html#_Toc406398230\n ifNoneMatch: boolean;\n } = { ifMatch: true, ifNoneMatch: false };\n prefer?: {\n //http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part1-protocol/odata-v4.0-errata02-os-part1-protocol-complete.html#_Toc406398238\n maxPageSize?: number;\n //http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part1-protocol/odata-v4.0-errata02-os-part1-protocol-complete.html#_Toc406398240\n return?: 'representation' | 'minimal';\n //http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part1-protocol/odata-v4.0-errata02-os-part1-protocol-complete.html#_Toc406398236\n continueOnError?: boolean;\n //http://docs.oasis-open.org/odata/odata/v4.0/errata02/os/complete/part1-protocol/odata-v4.0-errata02-os-part1-protocol-complete.html#_Toc406398237\n includeAnnotations?: string;\n };\n\n constructor(config: ApiOptions) {\n this.version = config.version || DEFAULT_VERSION;\n this.stringAsEnum = config.stringAsEnum;\n this.params = config.params || {};\n this.headers = config.headers || {};\n this.withCredentials = config.withCredentials;\n this.stripMetadata = config.stripMetadata || DEFAULT_STRIP_METADATA;\n this.fetchPolicy = config.fetchPolicy || DEFAULT_FETCH_POLICY;\n this.bodyQueryOptions = config.bodyQueryOptions || [];\n this.accept = config.accept;\n Object.assign(this.etag, config.etag || {});\n this.prefer = config.prefer;\n }\n\n get helper() {\n return ODataHelper[this.version];\n }\n}\n\nexport class ODataParserOptions implements OptionsHelper {\n version: ODataVersion;\n stringAsEnum?: boolean;\n\n constructor(config: Options) {\n this.version = config.version || DEFAULT_VERSION;\n this.stringAsEnum = config.stringAsEnum;\n }\n\n get helper() {\n return ODataHelper[this.version];\n }\n}\n","import { Enums } from '../utils';\nimport { raw } from '../resources/builder';\nimport { ODataAnnotation } from '../schema/annotation';\nimport {\n EnumTypeConfig,\n Parser,\n OptionsHelper,\n EnumTypeFieldConfig,\n Options,\n} from '../types';\nimport { ODataParserOptions } from '../options';\n\nexport class ODataEnumTypeFieldParser {\n name: string;\n value: number;\n annotations: ODataAnnotation[];\n\n constructor(name: string, field: EnumTypeFieldConfig) {\n this.name = name;\n this.value = field.value;\n this.annotations = (field.annotations || []).map(\n (annot) => new ODataAnnotation(annot)\n );\n }\n\n findAnnotation(predicate: (annot: ODataAnnotation) => boolean) {\n return this.annotations.find(predicate);\n }\n}\n\nexport class ODataEnumTypeParser<T> implements Parser<T> {\n name: string;\n namespace: string;\n alias?: string;\n flags?: boolean;\n members: { [name: string]: number } | { [value: number]: string };\n fields: ODataEnumTypeFieldParser[];\n optionsHelper?: OptionsHelper;\n\n constructor(config: EnumTypeConfig<T>, namespace: string, alias?: string) {\n this.name = config.name;\n this.namespace = namespace;\n this.alias = alias;\n this.flags = config.flags;\n this.members = config.members;\n this.fields = Object.entries(config.fields).map(\n ([name, f]) => new ODataEnumTypeFieldParser(name, f)\n );\n }\n\n configure({ options }: { options: OptionsHelper }) {\n this.optionsHelper = options;\n }\n\n isTypeOf(type: string) {\n var names = [`${this.namespace}.${this.name}`];\n if (this.alias) names.push(`${this.alias}.${this.name}`);\n return names.indexOf(type) !== -1;\n }\n\n // Deserialize\n deserialize(value: string, options?: Options): T {\n // string -> number\n const parserOptions =\n options !== undefined\n ? new ODataParserOptions(options)\n : this.optionsHelper;\n if (this.flags) {\n return Enums.toValues(this.members, value).reduce(\n (acc, v) => acc | v,\n 0\n ) as any;\n } else {\n return Enums.toValue(this.members, value) as any;\n }\n }\n\n // Serialize\n serialize(value: T, options?: Options): string {\n // Enum are string | number\n // string | number -> string\n const parserOptions =\n options !== undefined\n ? new ODataParserOptions(options)\n : this.optionsHelper;\n if (this.flags) {\n const names = Enums.toNames(this.members, value);\n return !parserOptions?.stringAsEnum\n ? `${this.namespace}.${this.name}'${names.join(', ')}'`\n : names.join(', ');\n } else {\n const name = Enums.toName(this.members, value);\n return !parserOptions?.stringAsEnum\n ? `${this.namespace}.${this.name}'${name}'`\n : name;\n }\n }\n\n //Encode\n encode(value: T, options?: Options): any {\n const parserOptions =\n options !== undefined\n ? new ODataParserOptions(options)\n : this.optionsHelper;\n const serialized = this.serialize(value, parserOptions);\n return parserOptions?.stringAsEnum\n ? raw(`'${serialized}'`)\n : raw(serialized);\n }\n\n // Json Schema\n toJsonSchema() {\n let property = <any>{\n title: this.name,\n type: 'string',\n };\n property.enum = this.fields.map((f) => f.name);\n return property;\n }\n\n validate(\n member: string | number,\n {\n method,\n navigation = false,\n }: {\n method?: 'create' | 'update' | 'patch';\n navigation?: boolean;\n } = {}\n ): string[] | undefined {\n if (this.flags) {\n let members = Enums.toValues(this.members, member);\n return members.some((member) => !(member in this.members))\n ? ['mismatch']\n : undefined;\n } else {\n return !(member in this.members) ? ['mismatch'] : undefined;\n }\n }\n}\n","import { Objects, Types } from '../utils';\nimport {\n Parser,\n StructuredTypeFieldConfig,\n StructuredTypeConfig,\n OptionsHelper,\n NONE_PARSER,\n StructuredTypeFieldOptions,\n Options,\n} from '../types';\nimport { ODataEnumTypeParser } from './enum-type';\nimport { COMPUTED } from '../constants';\nimport { ODataAnnotation } from '../schema/annotation';\nimport { raw } from '../resources/builder';\nimport { ODataParserOptions } from '../options';\n\n// JSON SCHEMA\ntype JsonSchemaSelect<T> = Array<keyof T>;\ntype JsonSchemaCustom<T> = {\n [P in keyof T]?: (\n schema: any,\n field: ODataStructuredTypeFieldParser<T[P]>\n ) => any;\n};\ntype JsonSchemaExpand<T> = { [P in keyof T]?: JsonSchemaOptions<T[P]> };\ntype JsonSchemaRequired<T> = { [P in keyof T]?: boolean };\nexport type JsonSchemaOptions<T> = {\n select?: JsonSchemaSelect<T>;\n custom?: JsonSchemaCustom<T>;\n expand?: JsonSchemaExpand<T>;\n required?: JsonSchemaRequired<T>;\n};\n\nexport class ODataEntityTypeKey {\n name: string;\n alias?: string;\n constructor({ name, alias }: { name: string; alias?: string }) {\n this.name = name;\n this.alias = alias;\n }\n}\n\nexport class ODataReferential {\n property: string;\n referencedProperty: string;\n constructor({\n property,\n referencedProperty,\n }: {\n property: string;\n referencedProperty: string;\n }) {\n this.property = property;\n this.referencedProperty = referencedProperty;\n }\n}\n\nexport class ODataStructuredTypeFieldParser<T> implements Parser<T> {\n name: string;\n private structuredType: ODataStructuredTypeParser<any>;\n type: string;\n private parser: Parser<T>;\n default?: any;\n maxLength?: number;\n collection: boolean;\n nullable: boolean;\n navigation: boolean;\n precision?: number;\n scale?: number;\n referentials: ODataReferential[];\n annotations: ODataAnnotation[];\n optionsHelper?: OptionsHelper;\n\n constructor(\n name: string,\n structuredType: ODataStructuredTypeParser<any>,\n field: StructuredTypeFieldConfig\n ) {\n this.name = name;\n this.structuredType = structuredType;\n this.type = field.type;\n this.parser = NONE_PARSER;\n this.annotations = (field.annotations || []).map(\n (annot) => new ODataAnnotation(annot)\n );\n this.referentials = (field.referentials || []).map(\n (referential) => new ODataReferential(referential)\n );\n this.default = field.default;\n this.maxLength = field.maxLength;\n this.collection = field.collection !== undefined ? field.collection : false;\n this.nullable = field.nullable !== undefined ? field.nullable : true;\n this.navigation = field.navigation !== undefined ? field.navigation : false;\n this.precision = field.precision;\n this.scale = field.scale;\n }\n findAnnotation(predicate: (annot: ODataAnnotation) => boolean) {\n return this.annotations.find(predicate);\n }\n\n validate(\n value: any,\n {\n method,\n navigation = false,\n }: {\n method?: 'create' | 'update' | 'patch';\n navigation?: boolean;\n } = {}\n ):\n | { [name: string]: any }\n | { [name: string]: any }[]\n | string[]\n | undefined {\n let errors;\n if (this.collection && Array.isArray(value)) {\n errors = value.map((v) => this.validate(v, { method, navigation })) as {\n [name: string]: any[];\n }[];\n } else if (\n (this.isStructuredType() &&\n typeof value === 'object' &&\n value !== null) ||\n (this.navigation && value !== undefined)\n ) {\n errors =\n this.structured().validate(value, { method, navigation }) ||\n ({} as { [name: string]: any[] });\n } else if (\n this.isEnumType() &&\n (typeof value === 'string' || typeof value === 'number')\n ) {\n errors = this.enum().validate(value, { method, navigation });\n } else {\n // IsEdmType\n const computed = this.findAnnotation((a) => a.term === COMPUTED);\n errors = [];\n if (\n !this.nullable &&\n (value === null || (value === undefined && method !== 'patch')) && // Is null or undefined without patch?\n !(computed?.bool && method === 'create') // Not (Is Computed field and create) ?\n ) {\n errors.push(`required`);\n }\n if (\n this.maxLength !== undefined &&\n typeof value === 'string' &&\n value.length > this.maxLength\n ) {\n errors.push(`maxlength`);\n }\n }\n return !Types.isEmpty(errors) ? errors : undefined;\n }\n\n //#region Deserialize\n private parse(\n parser: ODataStructuredTypeParser<T>,\n value: any,\n options?: OptionsHelper\n ): any {\n const type = Types.isPlainObject(value)\n ? options?.helper.type(value)\n : undefined;\n if (type !== undefined) {\n return parser\n .childParser((c) => c.isTypeOf(type))\n .deserialize(value, options);\n }\n return parser.deserialize(value, options);\n }\n\n deserialize(value: any, options?: Options): T {\n const parserOptions =\n options !== undefined\n ? new ODataParserOptions(options)\n : this.optionsHelper;\n if (this.parser instanceof ODataStructuredTypeParser) {\n const parser = this.parser as ODataStructuredTypeParser<T>;\n return Array.isArray(value)\n ? value.map((v) => this.parse(parser, v, parserOptions))\n : this.parse(parser, value, parserOptions);\n }\n return this.parser.deserialize(value, {\n field: this,\n ...parserOptions,\n } as StructuredTypeFieldOptions);\n }\n //#endregion\n\n //#region Serialize\n private toJson(\n parser: ODataStructuredTypeParser<T>,\n value: any,\n options?: OptionsHelper\n ): any {\n const type = Types.isPlainObject(value)\n ? options?.helper.type(value)\n : undefined;\n if (type !== undefined) {\n return parser\n .childParser((c) => c.isTypeOf(type))\n .serialize(value, options);\n }\n return parser.serialize(value, options);\n }\n\n serialize(value: T, options?: Options): any {\n const parserOptions =\n options !== undefined\n ? new ODataParserOptions(options)\n : this.optionsHelper;\n if (this.parser instanceof ODataStructuredTypeParser) {\n const parser = this.parser as ODataStructuredTypeParser<T>;\n return Array.isArray(value)\n ? (value as any[]).map((v) => this.toJson(parser, v, parserOptions))\n : this.toJson(parser, value, parserOptions);\n }\n return this.parser.serialize(value, {\n field: this,\n ...parserOptions,\n } as StructuredTypeFieldOptions);\n }\n //#endregion\n\n //#region Encode\n encode(value: T, options?: Options): string {\n const parserOptions =\n options !== undefined\n ? new ODataParserOptions(options)\n : this.optionsHelper;\n return this.parser.encode(value, {\n field: this,\n ...parserOptions,\n } as StructuredTypeFieldOptions);\n }\n //#endregion\n\n configure({\n parserForType,\n options,\n }: {\n parserForType: (type: string) => Parser<any>;\n options: OptionsHelper;\n }) {\n this.optionsHelper = options;\n this.parser = parserForType(this.type);\n if (this.default !== undefined)\n this.default = this.deserialize(this.default, options);\n }\n\n //#region Json Schema\n // https://json-schema.org/\n toJsonSchema(options: JsonSchemaOptions<T> = {}) {\n let schema: any =\n this.parser instanceof ODataStructuredTypeFieldParser ||\n this.parser instanceof ODataStructuredTypeParser ||\n this.parser instanceof ODataEnumTypeParser\n ? this.parser.toJsonSchema(options)\n : ({ title: this.name, type: 'object' } as any);\n\n if (\n [\n 'Edm.String',\n 'Edm.Date',\n 'Edm.TimeOfDay',\n 'Edm.DateTimeOffset',\n 'Edm.Guid',\n 'Edm.Binary',\n ].indexOf(this.type) !== -1\n ) {\n schema.type = 'string';\n if (this.type === 'Edm.Date') schema.format = 'date';\n else if (this.type === 'Edm.TimeOfDay') schema.format = 'time';\n else if (this.type === 'Edm.DateTimeOffset') schema.format = 'date-time';\n else if (this.type === 'Edm.Guid')\n schema.pattern =\n '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$';\n else if (this.type === 'Edm.Binary') schema.contentEncoding = 'base64';\n else if (this.type === 'Edm.String' && this.maxLength)\n schema.maxLength = this.maxLength;\n } else if (\n ['Edm.Int64', 'Edm.Int32', 'Edm.Int16', 'Edm.Byte', 'Edm.SByte'].indexOf(\n this.type\n ) !== -1\n ) {\n //TODO: Range\n schema.type = 'integer';\n } else if (['Edm.Decimal', 'Edm.Double'].indexOf(this.type) !== -1) {\n schema.type = 'number';\n } else if (['Edm.Boolean'].indexOf(this.type) !== -1) {\n schema.type = 'boolean';\n }\n if (this.default) schema.default = this.default;\n if (this.nullable) schema.type = [schema.type, 'null'];\n if (this.collection)\n schema = {\n type: 'array',\n items: schema,\n additionalItems: false,\n };\n return schema;\n }\n //#endregion\n\n isKey() {\n return (\n this.structuredType.keys?.find((k) => k.name === this.name) !== undefined\n );\n }\n\n hasReferentials() {\n return this.referentials.length !== 0;\n }\n\n isEdmType() {\n return this.type.startsWith('Edm.');\n }\n\n isEnumType() {\n return this.parser instanceof ODataEnumTypeParser;\n }\n\n enum() {\n if (!this.isEnumType()) throw new Error('Field are not EnumType');\n return this.parser as ODataEnumTypeParser<T>;\n }\n\n isStructuredType() {\n return this.parser instanceof ODataStructuredTypeParser;\n }\n\n structured() {\n if (!this.isStructuredType())\n throw new Error('Field are not StrucuturedType');\n return this.parser as ODataStructuredTypeParser<T>;\n }\n}\n\nexport class ODataStructuredTypeParser<T> implements Parser<T> {\n name: string;\n namespace: string;\n open: boolean;\n children: ODataStructuredTypeParser<any>[] = [];\n alias?: string;\n base?: string;\n parent?: ODataStructuredTypeParser<any>;\n keys?: ODataEntityTypeKey[];\n fields: ODataStructuredTypeFieldParser<any>[];\n optionsHelper?: OptionsHelper;\n\n constructor(\n config: StructuredTypeConfig<T>,\n namespace: string,\n alias?: string\n ) {\n this.name = config.name;\n this.base = config.base;\n this.open = config.open || false;\n this.namespace = namespace;\n this.alias = alias;\n if (Array.isArray(config.keys))\n this.keys = config.keys.map((key) => new ODataEntityTypeKey(key));\n this.fields = Object.entries<StructuredTypeFieldConfig>(\n config.fields as { [P in keyof T]: StructuredTypeFieldConfig }\n ).map(\n ([name, config]) => new ODataStructuredTypeFieldParser(name, this, config)\n );\n }\n\n isTypeOf(type: string) {\n var names = [`${this.namespace}.${this.name}`];\n if (this.alias) names.push(`${this.alias}.${this.name}`);\n return names.indexOf(type) !== -1;\n }\n\n typeFor(name: string): string | undefined {\n const field = this.fields.find((f) => f.name === name);\n if (field === undefined && this.parent !== undefined)\n return this.parent.typeFor(name);\n return field !== undefined ? field.type : undefined;\n }\n\n findChildParser(\n predicate: (p: ODataStructuredTypeParser<any>) => boolean\n ): ODataStructuredTypeParser<any> | undefined {\n if (predicate(this)) return this;\n let match: ODataStructuredTypeParser<any> | undefined;\n for (let ch of this.children) {\n match = ch.findChildParser(predicate);\n if (match !== undefined) break;\n }\n return match;\n }\n\n childParser(\n predicate: (p: ODataStructuredTypeParser<any>) => boolean\n ): Parser<any> {\n return this.findChildParser(predicate) || NONE_PARSER;\n }\n\n // Deserialize\n deserialize(value: any, options?: Options): T {\n const parserOptions =\n options !== undefined\n ? new ODataParserOptions(options)\n : this.optionsHelper;\n if (this.parent !== undefined)\n value = this.parent.deserialize(value, parserOptions);\n return Object.assign(\n {},\n value,\n this.fields\n .filter(\n (f) =>\n f.name in value &&\n value[f.name] !== undefined &&\n value[f.name] !== null\n )\n .reduce(\n (acc, f) =>\n Object.assign(acc, {\n [f.name]: f.deserialize(value[f.name], parserOptions),\n }),\n {}\n )\n );\n }\n\n // Serialize\n serialize(value: T, options?: Options): any {\n const parserOptions =\n options !== undefined\n ? new ODataParserOptions(options)\n : this.optionsHelper;\n if (this.parent !== undefined)\n value = this.parent.serialize(value, parserOptions);\n return Object.assign(\n {},\n value,\n this.fields\n .filter(\n (f) =>\n f.name in value &&\n (value as any)[f.name] !== undefined &&\n (value as any)[f.name] !== null\n )\n .reduce(\n (acc, f) =>\n Object.assign(acc, {\n [f.name]: f.serialize((value as any)[f.name], parserOptions),\n }),\n {}\n )\n );\n }\n\n // Encode\n encode(value: T, options?: Options): any {\n const parserOptions =\n options !== undefined\n ? new ODataParserOptions(options)\n : this.optionsHelper;\n return raw(JSON.stringify(this.serialize(value, parserOptions)));\n }\n\n configure({\n parserForType,\n options,\n }: {\n parserForType: (type: string) => Parser<any>;\n options: OptionsHelper;\n }) {\n this.optionsHelper = options;\n if (this.base) {\n const parent = parserForType(this.base) as ODataStructuredTypeParser<any>;\n parent.children.push(this);\n this.parent = parent;\n }\n this.fields.forEach((f) => f.configure({ parserForType, options }));\n }\n\n resolveKey(value: any): any {\n let key = this.parent?.resolveKey(value) || {};\n if (Array.isArray(this.keys) && this.keys.length > 0) {\n for (var k of this.keys) {\n let v = value as any;\n let structured = this as ODataStructuredTypeParser<any> | undefined;\n let field: ODataStructuredTypeFieldParser<any> | undefined;\n for (let name of k.name.split('/')) {\n if (structured === undefined) break;\n field = structured.fields.find((f) => f.name === name);\n if (field !== undefined) {\n v = Types.isPlainObject(v) ? v[field.name] : v;\n structured = field.isStructuredType()\n ? field.structured()\n : undefined;\n }\n }\n if (field === undefined) return undefined;\n let name = k.alias || field.name;\n key[name] = field.encode(v);\n }\n }\n if (Types.isEmpty(key)) return undefined;\n return Objects.resolveKey(key);\n }\n\n defaults(): { [name: string]: any } {\n let value = this.parent?.defaults() || {};\n let fields = this.fields.filter(\n (f) => f.default !== undefined || f.isStructuredType()\n );\n return Object.assign(\n {},\n value,\n fields.reduce((acc, f) => {\n let value = f.isStructuredType()\n ? f.structured().defaults()\n : f.default;\n if (!Types.isEmpty(value)) Object.assign(acc, { [f.name]: value });\n return acc;\n }, {})\n );\n }\n\n // Json Schema\n toJsonSchema(options: JsonSchemaOptions<T> = {}) {\n let schema: any = this.parent?.toJsonSchema(options) || {\n $schema: 'http://json-schema.org/draft-07/schema#',\n $id: `${this.namespace}.${this.name}`,\n title: this.name,\n type: 'object',\n properties: {},\n required: [],\n };\n const fields = this.fields.filter(\n (f) =>\n (!f.navigation || (options.expand && f.name in options.expand)) &&\n (!options.select || (<string[]>options.select).indexOf(f.name) !== -1)\n );\n schema.properties = Object.assign(\n {},\n schema.properties,\n fields\n .map((f) => {\n let expand =\n options.expand && f.name in options.expand\n ? (options.expand as any)[f.name]\n : undefined;\n let schema = f.toJsonSchema(expand);\n if (options.custom && f.name in options.custom)\n schema = (\n options.custom[f.name as keyof T] as (\n schema: any,\n field: ODataStructuredTypeFieldParser<any>\n ) => any\n )(schema, f);\n return { [f.name]: schema };\n })\n .reduce((acc, v) => Object.assign(acc, v), {})\n );\n schema.required = [\n ...schema.required,\n ...fields\n .filter((f) =>\n options.required && f.name in options.required\n ? options.required[f.name as keyof T]\n : !f.nullable\n )\n .map((f) => f.name),\n ];\n return schema;\n }\n\n validate(\n attrs: any,\n {\n method,\n navigation = false,\n }: {\n create?: boolean;\n method?: 'create' | 'update' | 'patch';\n navigation?: boolean;\n } = {}\n ): { [name: string]: any } | undefined {\n const errors = (this.parent?.validate(attrs, { method, navigation }) ||\n {}) as { [name: string]: any };\n const fields = this.fields.filter((f) => !f.navigation || navigation);\n for (var field of fields) {\n const value = attrs[field.name as keyof T];\n const errs = field.validate(value, { method, navigation });\n if (errs !== undefined) {\n errors[field.name] = errs;\n }\n }\n return !Types.isEmpty(errors) ? errors : undefined;\n }\n}\n","import { CALLABLE_BINDING_PARAMETER } from '../constants';\nimport { ODataParserOptions } from '../options';\nimport {\n Parser,\n Parameter,\n CallableConfig,\n StructuredTypeFieldOptions,\n NONE_PARSER,\n OptionsHelper,\n Options,\n} from '../types';\nimport { ODataEnumTypeParser } from './enum-type';\nimport { ODataStructuredTypeParser } from './structured-type';\n\nexport class ODataParameterParser<T> {\n name: string;\n type: string;\n private parser: Parser<T>;\n collection?: boolean;\n nullable?: boolean;\n optionsHelper?: OptionsHelper;\n\n constructor(name: string, parameter: Parameter) {\n this.name = name;\n this.type = parameter.type;\n this.parser = NONE_PARSER;\n Object.assign(this, parameter);\n }\n\n serialize(value: T, options?: Options): any {\n const parserOptions =\n options !== undefined\n ? new ODataParserOptions(options)\n : this.optionsHelper;\n return Array.isArray(value)\n ? value.map((v) => this.parser.serialize(v, parserOptions))\n : this.parser.serialize(value, parserOptions);\n }\n\n //Encode\n encode(value: any, options?: Options): string {\n const parserOptions =\n options !== undefined\n ? new ODataParserOptions(options)\n : this.optionsHelper;\n return Array.isArray(value)\n ? value.map((v) => this.parser.encode(v, parserOptions))\n : this.parser.encode(value, parserOptions);\n }\n\n configure({\n parserForType,\n options,\n }: {\n parserForType: (type: string) => Parser<any>;\n options: OptionsHelper;\n }) {\n this.optionsHelper = options;\n this.parser = parserForType(this.type);\n }\n\n isEdmType() {\n return this.type.startsWith('Edm.');\n }\n\n isEnumType() {\n return this.parser instanceof ODataEnumTypeParser;\n }\n\n enum() {\n if (!this.isEnumType()) throw new Error('Field are not EnumType');\n return this.parser as ODataEnumTypeParser<T>;\n }\n\n isStructuredType() {\n return this.parser instanceof ODataStructuredTypeParser;\n }\n\n structured() {\n if (!this.isStructuredType())\n throw new Error('Field are not StrucuturedType');\n return this.parser as ODataStructuredTypeParser<T>;\n }\n}\n\nexport class ODataCallableParser<R> implements Parser<R> {\n name: string;\n namespace: string;\n alias?: string;\n return?: { type: string; callable?: boolean };\n parser: Parser<any>;\n parameters: ODataParameterParser<any>[];\n optionsHelper?: OptionsHelper;\n\n constructor(config: CallableConfig, namespace: string, alias?: string) {\n this.name = config.name;\n this.namespace = namespace;\n this.alias = alias;\n this.return = config.return;\n this.parser = NONE_PARSER;\n this.parameters = Object.entries(config.parameters || []).map(\n ([name, p]) => new ODataParameterParser(name, p as Parameter)\n );\n }\n\n isTypeOf(type: string) {\n var names = [`${this.namespace}.${this.name}`];\n if (this.alias) names.push(`${this.alias}.${this.name}`);\n return names.indexOf(type) !== -1;\n }\n\n // Deserialize\n deserialize(value: any, options?: Options): R {\n const parserOptions =\n options !== undefined\n ? new ODataParserOptions(options)\n : this.optionsHelper;\n return this.parser.deserialize(value, parserOptions);\n }\n\n // Serialize\n serialize(params: any, options?: Options): any {\n const parserOptions =\n options !== undefined\n ? new ODataParserOptions(options)\n : this.optionsHelper;\n return Object.assign(\n {},\n this.parameters\n .filter((p) => p.name !== CALLABLE_BINDING_PARAMETER)\n .filter((p) => p.name in params && params[p.name] !== undefined)\n .reduce(\n (acc, p) =>\n Object.assign(acc, {\n [p.name]: p.serialize(params[p.name], parserOptions),\n }),\n {}\n )\n );\n }\n\n //Encode\n encode(params: any, options?: Options): any {\n const parserOptions =\n options !== undefined\n ? new ODataParserOptions(options)\n : this.optionsHelper;\n return Object.assign(\n {},\n this.parameters\n .filter((p) => p.name !== CALLABLE_BINDING_PARAMETER)\n .filter((p) => p.name in params && params[p.name] !== undefined)\n .reduce(\n (acc, p) =>\n Object.assign(acc, {\n [p.name]: p.encode(params[p.name], parserOptions),\n }),\n {}\n )\n );\n }\n\n configure({\n parserForType,\n options,\n }: {\n parserForType: (type: string) => Parser<any>;\n options: OptionsHelper;\n }) {\n this.optionsHelper = options;\n if (this.return)\n this.parser = parserForType(this.return.type) || NONE_PARSER;\n this.parameters.forEach((p) => p.configure({ parserForType, options }));\n }\n\n binding() {\n return this.parameters.find((p) => p.name === CALLABLE_BINDING_PARAMETER);\n }\n}\n","import { ODataCollection } from '../models';\nimport { ODataModel } from '../models/model';\nimport {\n JsonSchemaOptions,\n ODataEntityTypeKey,\n ODataStructuredTypeFieldParser,\n ODataStructuredTypeParser,\n} from '../parsers';\nimport { Options, StructuredTypeConfig } from '../types';\nimport { ODataAnnotation } from './annotation';\nimport { ODataSchema } from './schema';\n\nexport class ODataStructuredType<T> {\n name: string;\n schema: ODataSchema;\n base?: string;\n open: boolean;\n parent?: ODataStructuredType<any>;\n children: ODataStructuredType<any>[] = [];\n model?: typeof ODataModel;\n collection?: typeof ODataCollection;\n parser: ODataStructuredTypeParser<T>;\n annotations: ODataAnnotation[];\n\n constructor(config: StructuredTypeConfig<T>, schema: ODataSchema) {\n this.schema = schema;\n this.name = config.name;\n this.base = config.base;\n this.open = config.open || false;\n this.parser = new ODataStructuredTypeParser(\n config,\n schema.namespace,\n schema.alias\n );\n this.annotations = (config.annotations || []).map(\n (annot) => new ODataAnnotation(annot)\n );\n this.model = config.model as typeof ODataModel;\n this.collection = config.collection as typeof ODataCollection;\n if (this.model !== undefined) {\n const options = this.model.hasOwnProperty('options')\n ? this.model.options\n : { fields: {} };\n this.model.buildMeta<T>(options, this);\n }\n if (this.collection !== undefined) {\n this.collection.model = this.model;\n }\n }\n\n get api() {\n return this.schema.api;\n }\n\n configure({\n parserForType,\n findOptionsForType,\n }: {\n parserForType: (type: string) => any;\n findOptionsForType: (type: string) => any;\n }) {\n if (this.base) {\n const parent = this.api.findStructuredTypeForType(\n this.base\n ) as ODataStructuredType<any>;\n parent.children.push(this);\n this.parent = parent;\n }\n this.parser.configure({ options: this.api.options, parserForType });\n if (this.model !== undefined && this.model.options !== null) {\n this.model.meta.configure({\n findOptionsForType,\n });\n }\n }\n\n type({ alias = false }: { alias?: boolean } = {}) {\n return `${alias ? this.schema.alias : this.schema.namespace}.${this.name}`;\n }\n\n isTypeOf(type: string) {\n return this.parser.isTypeOf(type);\n }\n\n isSimpleKey() {\n return this.keys().length === 1;\n }\n\n isCompoundKey() {\n return this.keys().length > 1;\n }\n\n findAnnotation(predicate: (annot: ODataAnnotation) => boolean) {\n return this.annotations.find(predicate);\n }\n\n field(name: keyof T) {\n return this.fields().find((f) => f.name === name);\n }\n\n fields({\n include_navigation = false,\n include_parents = true,\n }: {\n include_parents?: boolean;\n include_navigation?: boolean;\n } = {}): ODataStructuredTypeFieldParser<any>[] {\n return [\n ...(include_parents && this.parent !== undefined\n ? this.parent.fields({ include_parents, include_navigation })\n : []),\n ...this.parser.fields.filter(\n (field) => include_navigation || !field.navigation\n ),\n ];\n }\n\n keys({\n include_parents = true,\n }: {\n include_parents?: boolean;\n } = {}): ODataEntityTypeKey[] {\n return [\n ...(include_parents && this.parent !== undefined\n ? this.parent.keys({ include_parents })\n : []),\n ...(this.parser.keys || []),\n ];\n }\n\n pick(\n value: { [name: string]: any },\n {\n include_parents = true,\n include_navigation = false,\n include_etag = true,\n }: {\n include_parents?: boolean;\n include_navigation?: boolean;\n include_etag?: boolean;\n } = {}\n ): Partial<T> {\n const names = this.fields({ include_parents, include_navigation }).map(\n (f) => f.name\n );\n let attrs = Object.keys(value)\n .filter((k) => names.indexOf(k) !== -1)\n .reduce((acc, k) => Object.assign(acc, { [k]: value[k] }), {});\n if (include_etag) {\n const etag = this.api.options.helper.etag(value);\n this.api.options.helper.etag(attrs, etag);\n }\n return attrs;\n }\n\n deserialize(value: any, options?: Options): T {\n return this.parser.deserialize(value, options);\n }\n\n serialize(value: T, options?: Options): any {\n return this.parser.serialize(value, options);\n }\n\n encode(value: T, options?: Options): any {\n return this.parser.encode(value, options);\n }\n\n resolveKey(attrs: T | { [name: string]: any }) {\n return this.parser.resolveKey(attrs);\n }\n\n defaults() {\n return this.parser.defaults();\n }\n\n toJsonSchema(options: JsonSchemaOptions<T> = {}) {\n return this.parser.toJsonSchema(options);\n }\n\n validate(\n attrs: Partial<T>,\n {\n method,\n navigation = false,\n }: {\n method?: 'create' | 'update' | 'patch';\n navigation?: boolean;\n } = {}\n ) {\n return this.parser.validate(attrs, { method, navigation });\n }\n}\n","import { Parser, CallableConfig, OptionsHelper, Options } from '../types';\nimport { ODataSchema } from './schema';\nimport { ODataCallableParser } from '../parsers';\n\nexport class ODataCallable<R> {\n schema: ODataSchema;\n name: string;\n entitySetPath?: string;\n bound?: boolean;\n composable?: boolean;\n parser: ODataCallableParser<R>;\n\n constructor(config: CallableConfig, schema: ODataSchema) {\n this.schema = schema;\n this.name = config.name;\n this.entitySetPath = config.entitySetPath;\n this.bound = config.bound;\n this.composable = config.composable;\n this.parser = new ODataCallableParser(\n config,\n schema.namespace,\n schema.alias\n );\n }\n\n path() {\n let path: string;\n if (this.entitySetPath) path = this.entitySetPath;\n else if (this.bound) path = `${this.schema.namespace}.${this.name}`;\n else\n path = this.parser.return\n ? this.api.findEntitySetForType(this.parser.return.type)?.name ||\n this.name\n : this.name;\n return path;\n }\n\n type({ alias = false }: { alias?: boolean } = {}) {\n return `${alias ? this.schema.alias : this.schema.namespace}.${this.name}`;\n }\n\n isTypeOf(type: string) {\n return this.parser.isTypeOf(type);\n }\n\n get api() {\n return this.schema.api;\n }\n\n configure({\n parserForType,\n }: {\n parserForType: (type: string) => Parser<any>;\n }) {\n this.parser.configure({ options: this.api.options, parserForType });\n }\n\n deserialize(value: any, options?: Options): any {\n return this.parser.deserialize(value, options);\n }\n\n serialize(value: any, options?: Options): any {\n return this.parser.serialize(value, options);\n }\n\n encode(value: any, options?: Options): any {\n return this.parser.encode(value, options);\n }\n binding() {\n return this.parser.binding();\n }\n}\n","import { ODataSchema } from './schema';\nimport { EntitySetConfig } from '../types';\nimport { ODataAnnotation } from './annotation';\nexport class ODataEntitySet {\n schema: ODataSchema;\n name: string;\n entityType: string;\n service: { new (...params: any[]): any };\n annotations: ODataAnnotation[];\n constructor(config: EntitySetConfig, schema: ODataSchema) {\n this.schema = schema;\n this.name = config.name;\n this.entityType = config.entityType;\n this.service = config.service;\n this.annotations = (config.annotations || []).map(\n (annot) => new ODataAnnotation(annot)\n );\n }\n\n isTypeOf(type: string) {\n var names = [`${this.schema.namespace}.${this.name}`];\n if (this.schema.alias) names.push(`${this.schema.alias}.${this.name}`);\n return names.indexOf(type) !== -1;\n }\n\n get api() {\n return this.schema.api;\n }\n\n findAnnotation(predicate: (annot: ODataAnnotation) => boolean) {\n return this.annotations.find(predicate);\n }\n}\n","import { ODataSchema } from './schema';\nimport { EntityContainerConfig } from '../types';\nimport { ODataEntitySet } from './entity-set';\nimport { ODataAnnotation } from './annotation';\n\nexport class ODataEntityContainer {\n schema: ODataSchema;\n name: string;\n annotations: ODataAnnotation[];\n entitySets: ODataEntitySet[];\n constructor(config: EntityContainerConfig, schema: ODataSchema) {\n this.schema = schema;\n this.name = config.name;\n this.entitySets = (config.entitySets || []).map(\n (config) => new ODataEntitySet(config, schema)\n );\n this.annotations = (config.annotations || []).map(\n (annot) => new ODataAnnotation(annot)\n );\n }\n\n get api() {\n return this.schema.api;\n }\n\n findAnnotation(predicate: (annot: ODataAnnotation) => boolean) {\n return this.annotations.find(predicate);\n }\n}\n","import { ODataSchema } from './schema';\nimport { ODataEnumTypeFieldParser, ODataEnumTypeParser } from '../parsers';\nimport { EnumTypeConfig, Options } from '../types';\nimport { ODataAnnotation } from './annotation';\n\nexport class ODataEnumType<E> {\n schema: ODataSchema;\n name: string;\n parser: ODataEnumTypeParser<E>;\n members: { [name: string]: number } | { [value: number]: string };\n annotations: ODataAnnotation[];\n constructor(config: EnumTypeConfig<E>, schema: ODataSchema) {\n this.schema = schema;\n this.name = config.name;\n this.members = config.members;\n this.parser = new ODataEnumTypeParser<E>(\n config,\n schema.namespace,\n schema.alias\n );\n this.annotations = (config.annotations || []).map(\n (annot) => new ODataAnnotation(annot)\n );\n }\n\n type({ alias = false }: { alias?: boolean } = {}) {\n return `${alias ? this.schema.alias : this.schema.namespace}.${this.name}`;\n }\n\n isTypeOf(type: string) {\n return this.parser.isTypeOf(type);\n }\n\n get api() {\n return this.schema.api;\n }\n\n configure() {\n this.parser.configure({ options: this.api.options });\n }\n\n findAnnotation(predicate: (annot: ODataAnnotation) => boolean) {\n return this.annotations.find(predicate);\n }\n\n fields(): ODataEnumTypeFieldParser[] {\n return this.parser.fields;\n }\n\n findFieldByName(name: string) {\n return this.fields().find((f) => f.name === name);\n }\n\n findFieldByValue(value: number) {\n return this.fields().find((f) => f.value === value);\n }\n\n fieldTitle(value: number | string, pattern?: RegExp) {\n const resolveTitle = (field?: ODataEnumTypeFieldParser) => {\n if (field !== undefined) {\n if (pattern !== undefined) {\n const annotation = field.findAnnotation((a) => pattern.test(a.term));\n if (annotation !== undefined && annotation.string !== undefined) {\n return annotation.string;\n }\n }\n return field.name;\n }\n return '';\n };\n if (typeof value === 'number') {\n return resolveTitle(this.findFieldByValue(value));\n } else {\n return resolveTitle(this.findFieldByName(value));\n }\n }\n\n mapFields<T>(mapper: (field: ODataEnumTypeFieldParser) => T) {\n return this.fields().map(mapper);\n }\n\n deserialize(value: any, options?: Options): E {\n return this.parser.deserialize(value, options);\n }\n\n serialize(value: E, options?: Options): any {\n return this.parser.serialize(value, options);\n }\n\n encode(value: E, options?: Options): any {\n return this.parser.encode(value, options);\n }\n}\n","import { CALLABLE_BINDING_PARAMETER } from '../constants';\nimport { CallableConfig } from '../types';\nimport { Objects } from './objects';\n\nexport const OData = {\n // Merge callables parameters\n mergeCallableParameters(callables: CallableConfig[]): CallableConfig[] {\n return callables.reduce((acc: CallableConfig[], config) => {\n if (acc.every((c) => c.name !== config.name)) {\n config = callables\n .filter(\n (c) =>\n c.name === config.name &&\n Objects.equal(\n (c.parameters || {})[CALLABLE_BINDING_PARAMETER] || {},\n (config.parameters || {})[CALLABLE_BINDING_PARAMETER] || {}\n )\n )\n .reduce((acc, c) => {\n acc.parameters = Object.assign(\n acc.parameters || {},\n c.parameters || {}\n );\n return acc;\n }, config);\n return [...acc, config];\n }\n return acc;\n }, [] as CallableConfig[]);\n },\n};\n","import { ODataStructuredType } from './structured-type';\nimport { ODataCallable } from './callable';\nimport { ODataEntityContainer } from './entity-container';\nimport { ODataEnumType } from './enum-type';\nimport { ODataApi } from '../api';\nimport { SchemaConfig, Parser, CallableConfig } from '../types';\nimport { ODataEntitySet } from './entity-set';\nimport { ODataAnnotation } from './annotation';\nimport { CALLABLE_BINDING_PARAMETER } from '../constants';\nimport { Objects } from '../utils';\nimport { OData } from '../utils/odata';\n\nexport class ODataSchema {\n api: ODataApi;\n namespace: string;\n alias?: string;\n enums: ODataEnumType<any>[];\n entities: ODataStructuredType<any>[];\n callables: ODataCallable<any>[];\n containers: ODataEntityContainer[];\n annotations: ODataAnnotation[];\n\n constructor(config: SchemaConfig, api: ODataApi) {\n this.api = api;\n this.namespace = config.namespace;\n this.alias = config.alias;\n this.enums = (config.enums || []).map(\n (config) => new ODataEnumType(config, this)\n );\n this.entities = (config.entities || []).map(\n (config) => new ODataStructuredType(config, this)\n );\n this.callables = OData.mergeCallableParameters(config.callables || []).map(\n (config) => new ODataCallable(config, this)\n );\n this.containers = (config.containers || []).map(\n (config) => new ODataEntityContainer(config, this)\n );\n this.annotations = (config.annotations || []).map(\n (config) => new ODataAnnotation(config)\n );\n }\n\n isNamespaceOf(type: string) {\n return (\n type.startsWith(this.namespace) ||\n (this.alias && type.startsWith(this.alias))\n );\n }\n\n get entitySets() {\n return this.containers.reduce(\n (acc, container) => [...acc, ...container.entitySets],\n [] as ODataEntitySet[]\n );\n }\n\n findAnnotation(predicate: (annot: ODataAnnotation) => boolean) {\n return this.annotations.find(predicate);\n }\n\n //#region Find for Type\n public findEnumTypeForType<T>(type: string) {\n return this.enums.find((e) => e.isTypeOf(type)) as\n | ODataEnumType<T>\n | undefined;\n }\n\n public findStructuredTypeForType<T>(type: string) {\n return this.entities.find((e) => e.isTypeOf(type)) as\n | ODataStructuredType<T>\n | undefined;\n }\n\n public findCallableForType<T>(type: string, bindingType?: string) {\n return this.callables.find(\n (c) =>\n c.isTypeOf(type) &&\n (bindingType === undefined || bindingType === c.binding()?.type)\n ) as ODataCallable<T> | undefined;\n }\n\n public findEntitySetForType(type: string) {\n return this.entitySets.find((e) => e.isTypeOf(type));\n }\n //#endregion\n\n configure({\n parserForType,\n findOptionsForType,\n }: {\n parserForType: (type: string) => Parser<any>;\n findOptionsForType: (type: string) => any;\n }) {\n // Configure Enums\n this.enums.forEach((enu) => enu.configure());\n // Configure Entities\n this.entities.forEach((config) =>\n config.configure({ parserForType, findOptionsForType })\n );\n // Configure callables\n this.callables.forEach((callable) => callable.configure({ parserForType }));\n }\n}\n","import {\n buildPathAndQuery,\n Expand,\n Filter,\n OrderBy,\n Select,\n Transform,\n} from './builder';\n\nimport { Dates, Types, Urls, Objects } from '../utils';\nimport { QueryOptionNames } from '../types';\n\nexport type QueryArguments<T> = {\n select?: Select<T>;\n expand?: Expand<T>;\n transform?: Transform<T>;\n search?: string;\n filter?: Filter;\n orderBy?: OrderBy<T>;\n top?: number;\n skip?: number;\n skiptoken?: string;\n};\n\nexport class ODataQueryOptions {\n options: { [name: string]: any };\n\n constructor(options?: { [name: string]: any }) {\n this.options = options || {};\n }\n\n // Params\n pathAndParams(): [string, { [name: string]: any }] {\n let options = [\n QueryOptionNames.select,\n QueryOptionNames.filter,\n QueryOptionNames.search,\n QueryOptionNames.transform,\n QueryOptionNames.orderBy,\n QueryOptionNames.top,\n QueryOptionNames.skip,\n QueryOptionNames.skiptoken,\n QueryOptionNames.expand,\n QueryOptionNames.format,\n ]\n .filter((key) => !Types.isEmpty(this.options[key]))\n .reduce(\n (acc, key) => Object.assign(acc, { [key]: this.options[key] }),\n {}\n );\n\n return buildPathAndQuery(options);\n }\n\n toString(): string {\n const [path, params] = this.pathAndParams();\n return (\n path +\n Object.entries(params)\n .filter(([, value]) => !Types.isEmpty(value))\n .map(([key, value]) => `${key}=${value}`)\n .join('&')\n );\n }\n\n toJSON() {\n return Dates.isoStringToDate(JSON.parse(JSON.stringify(this.options)));\n }\n\n toQueryArguments<T>(): QueryArguments<T> {\n return {\n select: this.options[QueryOptionNames.select],\n expand: this.options[QueryOptionNames.expand],\n transform: this.options[QueryOptionNames.transform],\n search: this.options[QueryOptionNames.search],\n filter: this.options[QueryOptionNames.filter],\n orderBy: this.options[QueryOptionNames.orderBy],\n top: this.options[QueryOptionNames.top],\n skip: this.options[QueryOptionNames.skip],\n skiptoken: this.options[QueryOptionNames.skiptoken],\n } as QueryArguments<T>;\n }\n\n clone() {\n return new ODataQueryOptions(this.toJSON());\n }\n\n // Option Handler\n option<T>(name: QueryOptionNames, opts?: T) {\n if (opts !== undefined) this.options[name] = opts;\n return new OptionHandler<T>(this.options, name);\n }\n\n // Query Options tools\n has(name: QueryOptionNames) {\n return this.options[name] !== undefined;\n }\n\n remove(...names: QueryOptionNames[]) {\n names.forEach((name) => this.option(name).clear());\n }\n\n keep(...names: QueryOptionNames[]) {\n this.options = Object.keys(this.options)\n .filter((k) => names.indexOf(k as QueryOptionNames) !== -1)\n .reduce((acc, k) => Object.assign(acc, { [k]: this.options[k] }), {});\n }\n\n // Clear\n clear() {\n this.options = {};\n }\n}\n\nexport class OptionHandler<T> {\n constructor(\n private o: { [name: string]: any },\n private n: QueryOptionNames\n ) {}\n\n get name() {\n return this.n;\n }\n\n toJSON() {\n return this.o[this.n];\n }\n\n empty() {\n return Types.isEmpty(this.o[this.n]);\n }\n\n //#region Primitive Value\n value(v?: any) {\n return (v !== undefined && (this.o[this.n] = v)) || this.o[this.n];\n }\n //#endregion\n\n //#region Array Value\n private assertArray(): any[] {\n if (!Types.isArray(this.o[this.n]))\n this.o[this.n] = this.o[this.n] !== undefined ? [this.o[this.n]] : [];\n return this.o[this.n];\n }\n\n push(value: T) {\n this.assertArray().push(value);\n }\n\n remove(value: T) {\n this.o[this.n] = this.assertArray().filter((v) => v !== value);\n // If only one... down to value\n if (this.o[this.n].length === 1) this.o[this.n] = this.o[this.n][0];\n }\n\n at(index: number) {\n return this.assertArray()[index];\n }\n //#endregion\n\n //#region HashMap Value\n private assertObject(create: boolean): { [name: string]: any } {\n if (!Types.isArray(this.o[this.n]) && Types.isPlainObject(this.o[this.n])) {\n return this.o[this.n];\n }\n let arr = this.assertArray();\n let obj = arr.find((v) => Types.isPlainObject(v));\n if (!obj && create) {\n obj = {};\n arr.push(obj);\n }\n return obj;\n }\n\n set(path: string, value: any) {\n let obj = this.assertObject(true);\n Objects.set(obj, path, value);\n }\n\n get(path: string, def?: any): any {\n let obj = this.assertObject(false) || {};\n return Objects.get(obj, path, def);\n }\n\n unset(path: string) {\n let obj = this.assertObject(true);\n Objects.unset(obj, path);\n\n if (Types.isArray(this.o[this.n])) {\n this.o[this.n] = this.o[this.n].filter((v: any) => !Types.isEmpty(v));\n if (this.o[this.n].length === 1) this.o[this.n] = this.o[this.n][0];\n }\n }\n\n has(path: string) {\n let obj = this.assertObject(false) || {};\n return Objects.has(obj, path);\n }\n\n assign(values: { [attr: string]: any }) {\n let obj = this.assertObject(true);\n return Objects.merge(obj, values);\n }\n //#endregion\n\n clear() {\n delete this.o[this.n];\n }\n}\n","import { raw, buildPathAndQuery } from './builder';\n\nimport { Types, Dates } from '../utils';\n\nimport { PATH_SEPARATOR } from '../constants';\nimport { EntityKey } from './resource';\nimport { PathSegmentNames } from '../types';\n\nexport type ODataSegment = {\n name: PathSegmentNames;\n path: string;\n type?: string;\n key?: any;\n parameters?: any;\n};\n\nfunction pathSegmentsBuilder(\n segment: ODataSegment\n): [string, { [name: string]: any }] {\n if (segment.name === PathSegmentNames.function) {\n let [path, params] = segment.parameters\n ? buildPathAndQuery({ func: { [segment.path]: segment.parameters } })\n : buildPathAndQuery({ func: segment.path });\n if (path.startsWith(PATH_SEPARATOR)) {\n path = path.slice(1);\n }\n return [path, params];\n } else {\n let key = segment.key;\n // HACK: Check guid string\n if (\n typeof key === 'string' &&\n /^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/.test(\n key\n )\n ) {\n key = raw(key);\n }\n let [path, params] = key ? buildPathAndQuery({ key }) : ['', {}];\n return [segment.path + path, params];\n }\n}\n\nexport class ODataPathSegments {\n private _segments: ODataSegment[];\n\n constructor(segments?: ODataSegment[]) {\n this._segments = segments || [];\n }\n\n pathAndParams(): [string, { [name: string]: any }] {\n const result = this._segments.reduce(\n (acc, segment) => {\n const [path, params] = pathSegmentsBuilder(segment);\n acc.paths.push(path);\n acc.params = Object.assign(acc.params, params);\n return acc;\n },\n { paths: [] as string[], params: {} as { [name: string]: any } }\n );\n return [result.paths.join(PATH_SEPARATOR), result.params];\n }\n\n types({ key = false }: { key?: boolean } = {}): string[] {\n return this.segments({ key })\n .map((s) => s.type())\n .filter((t) => t !== undefined) as string[];\n }\n\n keys(values?: (EntityKey<any> | undefined)[]) {\n const segments = this.segments({ key: true });\n if (values !== undefined) {\n segments.forEach((segment, index) => {\n const key = values[index];\n if (key === undefined) {\n segment.clearKey();\n } else {\n segment.key(key);\n }\n });\n }\n return segments.map((s) => s.key() as EntityKey<any> | undefined);\n }\n\n toString(): string {\n const [path, params] = this.pathAndParams();\n return (\n path +\n Object.entries(params)\n .filter(([, value]) => value)\n .map(([key, value]) => `${key}=${value}`)\n .join('&')\n );\n }\n\n toJSON() {\n return this._segments.map((segment) => {\n let json = <any>{ name: segment.name, path: segment.path };\n if (segment.type !== undefined) json.type = segment.type;\n if (segment.key !== undefined)\n json.key = Dates.isoStringToDate(\n JSON.parse(JSON.stringify(segment.key))\n );\n if (segment.parameters !== undefined)\n json.parameters = Dates.isoStringToDate(\n JSON.parse(JSON.stringify(segment.parameters))\n );\n return json;\n });\n }\n\n clone() {\n return new ODataPathSegments(this.toJSON());\n }\n\n find(predicate: (segment: ODataSegment) => boolean) {\n //Backward Find\n return [...this._segments].reverse().find(predicate);\n }\n\n segments({ key = false }: { key?: boolean } = {}) {\n let segments = [...this._segments];\n if (key)\n segments = segments.filter(\n (s) =>\n [\n PathSegmentNames.entitySet,\n PathSegmentNames.navigationProperty,\n PathSegmentNames.property,\n ].indexOf(s.name) !== -1\n );\n return segments.map((s) => new SegmentHandler(s));\n }\n\n first({ key = false }: { key?: boolean } = {}) {\n const segments = this.segments({ key });\n return segments.length > 0 ? segments[0] : undefined;\n }\n\n last({ key = false }: { key?: boolean } = {}) {\n const segments = this.segments({ key });\n return segments.length > 0 ? segments[segments.length - 1] : undefined;\n }\n\n add(name: string, path: string) {\n const segment = { name, path } as ODataSegment;\n this._segments.push(segment);\n return new SegmentHandler(segment);\n }\n\n get(name: string) {\n let segment = this.find((s) => s.name === name);\n if (segment === undefined)\n throw Error(`No Segment for name ${name} was found`);\n return new SegmentHandler(segment);\n }\n}\n\nexport class SegmentHandler {\n constructor(private segment: ODataSegment) {}\n get name() {\n return this.segment.name;\n }\n type(value?: string) {\n if (value !== undefined) this.segment.type = value;\n return this.segment.type;\n }\n path(value?: string) {\n if (value !== undefined) this.segment.path = value;\n return this.segment.path;\n }\n key<T>(value?: EntityKey<T>) {\n if (value !== undefined) this.segment.key = value;\n return this.segment.key as EntityKey<T>;\n }\n hasKey() {\n return !Types.isEmpty(this.segment.key);\n }\n clearKey() {\n delete this.segment.key;\n }\n parameters<T>(value?: T) {\n if (value !== undefined) this.segment.parameters = value;\n return this.segment.parameters as T;\n }\n hasParameters() {\n return !Types.isEmpty(this.segment.parameters);\n }\n clearParameters() {\n delete this.segment.parameters;\n }\n}\n","import { HttpHeaders, HttpParams } from '@angular/common/http';\nimport { ODataApi } from '../api';\nimport {\n $QUERY,\n ACCEPT,\n IF_MATCH_HEADER,\n IF_NONE_MATCH_HEADER,\n PREFER,\n TEXT_PLAIN,\n} from '../constants';\nimport { QueryOptionNames } from '../types';\nimport { Http } from '../utils';\nimport { ODataResource } from './resource';\n\nexport class ODataRequest<T> {\n private readonly _method: string;\n readonly api: ODataApi;\n private readonly _body: any | null;\n readonly observe: 'events' | 'response';\n readonly reportProgress?: boolean;\n readonly withCredentials?: boolean;\n readonly bodyQueryOptions: QueryOptionNames[];\n readonly responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n readonly fetchPolicy:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n private readonly _headers: HttpHeaders;\n private readonly _params: HttpParams;\n private readonly _path: string;\n readonly resource: ODataResource<T>;\n\n constructor(init: {\n method: string;\n api: ODataApi;\n resource: ODataResource<T>;\n body: any;\n observe: 'events' | 'response';\n etag?: string;\n headers?: HttpHeaders | { [header: string]: string | string[] };\n reportProgress?: boolean;\n params?: HttpParams | { [param: string]: string | string[] };\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n withCredentials?: boolean;\n bodyQueryOptions?: QueryOptionNames[];\n }) {\n this._method = init.method;\n this.resource = init.resource;\n\n this.api = init.api;\n this.reportProgress = init.reportProgress;\n this.responseType = init.responseType;\n this.observe = init.observe;\n\n // The Body\n this._body = init.body !== undefined ? init.body : null;\n if (this._body !== null) this._body = this.resource.serialize(this._body);\n\n this.withCredentials =\n init.withCredentials === undefined\n ? this.api.options.withCredentials\n : init.withCredentials;\n this.fetchPolicy = init.fetchPolicy || this.api.options.fetchPolicy;\n this.bodyQueryOptions =\n init.bodyQueryOptions || this.api.options.bodyQueryOptions;\n\n // The Path and Params from resource\n const [resourcePath, resourceParams] = this.resource.pathAndParams();\n this._path = resourcePath;\n\n //#region Headers\n const customHeaders: { [name: string]: string | string[] } = {};\n if (typeof init.etag === 'string') {\n if (\n this.api.options.etag.ifMatch &&\n ['PUT', 'PATCH', 'DELETE'].indexOf(this._method) !== -1\n )\n customHeaders[IF_MATCH_HEADER] = init.etag;\n else if (\n this.api.options.etag.ifNoneMatch &&\n ['GET'].indexOf(this._method) !== -1\n )\n customHeaders[IF_NONE_MATCH_HEADER] = init.etag;\n }\n\n const accept = [];\n // Metadata ?\n if (this.api.options.accept?.metadata !== undefined)\n accept.push(`odata.metadata=${this.api.options.accept?.metadata}`);\n // IEEE754\n if (this.api.options.accept?.ieee754Compatible !== undefined)\n accept.push(\n `IEEE754Compatible=${this.api.options.accept?.ieee754Compatible}`\n );\n if (accept.length > 0)\n customHeaders[ACCEPT] = [\n `application/json;${accept.join(';')}`,\n 'text/plain',\n '*/*',\n ];\n\n const prefer = [];\n // Return\n if (\n this.api.options.prefer?.return !== undefined &&\n ['POST', 'PUT', 'PATCH'].indexOf(this._method) !== -1\n )\n prefer.push(`return=${this.api.options.prefer?.return}`);\n // MaxPageSize\n if (\n this.api.options.prefer?.maxPageSize !== undefined &&\n ['GET'].indexOf(this._method) !== -1\n )\n prefer.push(`odata.maxpagesize=${this.api.options.prefer?.maxPageSize}`);\n // Annotations\n if (\n this.api.options.prefer?.includeAnnotations !== undefined &&\n ['GET'].indexOf(this._method) !== -1\n )\n prefer.push(\n `odata.include-annotations=${this.api.options.prefer?.includeAnnotations}`\n );\n if (\n this.api.options.prefer?.continueOnError === true &&\n ['POST'].indexOf(this._method) !== -1\n )\n prefer.push(`odata.continue-on-error`);\n if (prefer.length > 0) customHeaders[PREFER] = prefer;\n this._headers = Http.mergeHttpHeaders(\n this.api.options.headers,\n customHeaders,\n init.headers || {}\n );\n //#endregion\n\n //#region Params\n const customParams: { [name: string]: string | string[] } = {};\n if (\n ['POST', 'PUT', 'PATCH'].indexOf(this._method) !== -1 &&\n '$select' in resourceParams\n ) {\n customParams['$select'] = resourceParams['$select'];\n }\n if (['POST'].indexOf(this._method) !== -1 && '$expand' in resourceParams) {\n customParams['$expand'] = resourceParams['$expand'];\n }\n if (['GET'].indexOf(this._method) !== -1) {\n Object.assign(customParams, resourceParams);\n }\n\n this._params = Http.mergeHttpParams(\n this.api.options.params,\n customParams,\n init.params || {}\n );\n //#endregion\n }\n\n get path() {\n return this.isBodyQueryOptions() ? `${this._path}/${$QUERY}` : this._path;\n }\n\n get method() {\n return this.isBodyQueryOptions() ? 'POST' : this._method;\n }\n\n get body() {\n if (this.isBodyQueryOptions()) {\n let [, bodyParams] = Http.splitHttpParams(\n this._params,\n this.bodyQueryOptions.map((name) => `$${name}`)\n );\n return bodyParams.toString();\n } else {\n return this._body;\n }\n }\n\n get params() {\n if (this.isBodyQueryOptions()) {\n let [queryParams] = Http.splitHttpParams(\n this._params,\n this.bodyQueryOptions.map((name) => `$${name}`)\n );\n return queryParams;\n } else {\n return this._params;\n }\n }\n\n get headers() {\n if (this.isBodyQueryOptions()) {\n return Http.mergeHttpHeaders(this._headers, { CONTENT_TYPE: TEXT_PLAIN });\n } else {\n return this._headers;\n }\n }\n\n get pathWithParams() {\n let path = this._path;\n if (this._params.keys().length > 0) {\n path = `${path}?${this._params}`;\n }\n return path;\n }\n\n get url() {\n return `${this.api.serviceRootUrl}${this._path}`;\n }\n\n get urlWithParams() {\n return `${this.api.serviceRootUrl}${this.pathWithParams}`;\n }\n\n isBodyQueryOptions() {\n return (\n this._method === 'GET' &&\n this.bodyQueryOptions.length > 0 &&\n this.bodyQueryOptions.some((name) => this._params.has(`$${name}`))\n );\n }\n\n isFetch() {\n return ['GET'].indexOf(this._method) !== -1;\n }\n\n isMutate() {\n return ['PUT', 'PATCH', 'POST', 'DELETE'].indexOf(this._method) !== -1;\n }\n}\n","import { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport {\n VALUE_SEPARATOR,\n PARAM_SEPARATOR,\n QUERY_SEPARATOR,\n} from '../constants';\nimport { Objects, Http, Types } from '../utils/index';\n\nimport { ODataPathSegments } from './path-segments';\nimport { QueryArguments, ODataQueryOptions } from './query-options';\nimport { HttpOptions } from './types';\nimport { ODataResponse } from './responses/index';\nimport { ODataApi } from '../api';\nimport { Parser, OptionsHelper, QueryOptionNames } from '../types';\nimport { ODataRequest } from './request';\nimport { ODataStructuredTypeParser } from '../parsers';\nimport {\n Expand,\n Filter,\n OrderBy,\n Select,\n Transform,\n QueryCustomType,\n isQueryCustomType,\n} from './builder';\nimport { ODataStructuredType, ODataCallable } from '../schema/index';\n\nexport type EntityKey<T> =\n | {\n readonly [P in keyof T]?: T[P];\n }\n | QueryCustomType\n | string\n | number;\n\nexport abstract class ODataResource<T> {\n // VARIABLES\n public api: ODataApi;\n protected pathSegments: ODataPathSegments;\n protected queryOptions: ODataQueryOptions;\n constructor(\n api: ODataApi,\n segments?: ODataPathSegments,\n query?: ODataQueryOptions\n ) {\n this.api = api;\n this.pathSegments = segments || new ODataPathSegments();\n this.queryOptions = query || new ODataQueryOptions();\n }\n\n /**\n * @returns string The type of the resource\n */\n type() {\n return this.pathSegments.last()?.type();\n }\n\n /**\n * @returns string The type of the return\n */\n returnType() {\n return this.pathSegments.last()?.type();\n }\n\n /**\n * @returns string All covered types of the resource\n */\n types(): string[] {\n return this.pathSegments.types();\n }\n\n /**\n * @returns boolean The resource has key ?\n */\n hasKey() {\n return Boolean(this.pathSegments.last({ key: true })?.hasKey());\n }\n\n clearKey() {\n return this.pathSegments.last({ key: true })?.clearKey();\n }\n\n isSubtypeOf(other: ODataResource<any>) {\n const api = this.api;\n const selfType = this.type();\n const otherType = other.type();\n if (selfType !== undefined && otherType !== undefined) {\n const otherParser = other.schema()?.parser as\n | ODataStructuredTypeParser<T>\n | undefined;\n return (\n otherParser !== undefined &&\n otherParser.findChildParser((c) => c.isTypeOf(selfType)) !== undefined\n );\n }\n return false;\n }\n\n isParentOf(other: ODataResource<any>) {\n const [selfPath] = this.pathAndParams();\n const [otherPath] = other.pathAndParams();\n return otherPath !== selfPath && otherPath.startsWith(selfPath);\n }\n\n isChildOf(other: ODataResource<any>) {\n const [selfPath] = this.pathAndParams();\n const [otherPath] = other.pathAndParams();\n return otherPath !== selfPath && selfPath.startsWith(otherPath);\n }\n\n isEqualTo(other: ODataResource<any>, test?: 'path' | 'params') {\n const [selfPath, selfParams] = this.pathAndParams();\n const [otherPath, otherParams] = other.pathAndParams();\n return test === 'path'\n ? otherPath === selfPath\n : test === 'params'\n ? Types.isEqual(selfParams, otherParams)\n : otherPath === selfPath && Types.isEqual(selfParams, otherParams);\n }\n\n pathAndParams(): [string, { [name: string]: any }] {\n const [spath, sparams] = this.pathSegments.pathAndParams();\n const [, qparams] = this.queryOptions.pathAndParams();\n return [spath, { ...sparams, ...qparams }];\n }\n\n endpointUrl(params: boolean = true) {\n if (params) {\n return `${this.api.serviceRootUrl}${this}`;\n } else {\n let [path] = this.pathAndParams();\n return `${this.api.serviceRootUrl}${path}`;\n }\n }\n\n toString(): string {\n let [path, params] = this.pathAndParams();\n let queryString = Object.entries(params)\n .map((e) => `${e[0]}${VALUE_SEPARATOR}${e[1]}`)\n .join(PARAM_SEPARATOR);\n return queryString ? `${path}${QUERY_SEPARATOR}${queryString}` : path;\n }\n\n abstract clone(): ODataResource<T>;\n abstract schema(): ODataStructuredType<T> | ODataCallable<T> | undefined;\n serialize(value: any, options?: OptionsHelper): any {\n const type = this.type();\n const parser =\n type !== undefined ? this.api.parserForType<T>(type) : undefined;\n if (parser !== undefined && 'serialize' in parser) {\n return Array.isArray(value)\n ? value.map((e) =>\n (parser as Parser<T>).serialize(e, options || this.api.options)\n )\n : parser.serialize(value, options || this.api.options);\n }\n return value;\n }\n\n deserialize(value: any, options?: OptionsHelper): any {\n const type = this.returnType();\n const parser =\n type !== undefined ? this.api.parserForType<T>(type) : undefined;\n if (parser !== undefined && 'deserialize' in parser) {\n return Array.isArray(value)\n ? value.map((e) =>\n (parser as Parser<T>).deserialize(e, options || this.api.options)\n )\n : parser.deserialize(value, options || this.api.options);\n }\n return value;\n }\n encode(value: any, options?: OptionsHelper): any {\n const type = this.type();\n const parser =\n type !== undefined ? this.api.parserForType<T>(type) : undefined;\n if (parser !== undefined && 'encode' in parser) {\n return Array.isArray(value)\n ? value.map((e) =>\n (parser as Parser<T>).encode(e, options || this.api.options)\n )\n : parser.encode(value, options || this.api.options);\n }\n return value;\n }\n\n toJSON() {\n return {\n segments: this.pathSegments.toJSON(),\n options: this.queryOptions.toJSON(),\n };\n }\n\n cloneSegments() {\n return this.pathSegments.clone();\n }\n\n //#region Query Options\n clearQuery() {\n this.queryOptions.clear();\n }\n\n cloneQuery() {\n return this.queryOptions.clone();\n }\n\n /**\n * Factorise an object handler for mutate query options for resources that match to entity\n * @returns Object handler for mutate query options\n */\n protected entityQueryHandler() {\n const options = this.queryOptions;\n return {\n select(opts?: Select<T>) {\n return options.option<Select<T>>(QueryOptionNames.select, opts);\n },\n expand(opts?: Expand<T>) {\n return options.option<Expand<T>>(QueryOptionNames.expand, opts);\n },\n compute(opts?: string) {\n return options.option<string>(QueryOptionNames.compute, opts);\n },\n format(opts?: string) {\n return options.option<string>(QueryOptionNames.format, opts);\n },\n apply(query: QueryArguments<T>) {\n if (query.select !== undefined) {\n this.select(query.select);\n }\n if (query.expand !== undefined) {\n this.expand(query.expand);\n }\n },\n };\n }\n\n static resolveKey<T>(\n value: any,\n schema?: ODataStructuredType<T> | ODataCallable<T>\n ): EntityKey<T> | undefined {\n if (isQueryCustomType(value)) {\n return value;\n } else if (Types.isPlainObject(value)) {\n return schema instanceof ODataStructuredType\n ? schema.resolveKey(value)\n : Objects.resolveKey(value);\n }\n return value as EntityKey<T> | undefined;\n }\n\n protected resolveKey(value: any): EntityKey<T> | undefined {\n return ODataResource.resolveKey<T>(value, this.schema());\n }\n\n /**\n * Factorise an object handler for mutate query options for resources that match to entities\n * @returns Object handler for mutate query options\n */\n protected entitiesQueryHandler() {\n const options = this.queryOptions;\n return {\n select(opts?: Select<T>) {\n return options.option<Select<T>>(QueryOptionNames.select, opts);\n },\n expand(opts?: Expand<T>) {\n return options.option<Expand<T>>(QueryOptionNames.expand, opts);\n },\n compute(opts?: string) {\n return options.option<string>(QueryOptionNames.compute, opts);\n },\n transform(opts?: Transform<T>) {\n return options.option<Transform<T>>(QueryOptionNames.transform, opts);\n },\n search(opts?: string) {\n return options.option<string>(QueryOptionNames.search, opts);\n },\n filter(opts?: Filter) {\n return options.option<Filter>(QueryOptionNames.filter, opts);\n },\n orderBy(opts?: OrderBy<T>) {\n return options.option<OrderBy<T>>(QueryOptionNames.orderBy, opts);\n },\n format(opts?: string) {\n return options.option<string>(QueryOptionNames.format, opts);\n },\n top(opts?: number) {\n return options.option<number>(QueryOptionNames.top, opts);\n },\n skip(opts?: number) {\n return options.option<number>(QueryOptionNames.skip, opts);\n },\n skiptoken(opts?: string) {\n return options.option<string>(QueryOptionNames.skiptoken, opts);\n },\n\n paging({\n skip,\n skiptoken,\n top,\n }: { skip?: number; skiptoken?: string; top?: number } = {}) {\n if (skiptoken !== undefined) this.skiptoken(skiptoken);\n else if (skip !== undefined) this.skip(skip);\n if (top !== undefined) this.top(top);\n },\n\n clearPaging() {\n this.skip().clear();\n this.top().clear();\n this.skiptoken().clear();\n },\n\n apply(query: QueryArguments<T>) {\n if (query.select !== undefined) {\n this.select(query.select);\n }\n if (query.expand !== undefined) {\n this.expand(query.expand);\n }\n if (query.transform !== undefined) {\n this.transform(query.transform);\n }\n if (query.search !== undefined) {\n this.search(query.search);\n }\n if (query.filter !== undefined) {\n this.filter(query.filter);\n }\n if (query.orderBy !== undefined) {\n this.orderBy(query.orderBy);\n }\n this.paging(query);\n },\n };\n }\n //#endregion\n\n // Base Requests\n protected request(\n method: string,\n options: HttpOptions & {\n body?: any;\n etag?: string;\n responseType?:\n | 'arraybuffer'\n | 'blob'\n | 'json'\n | 'text'\n | 'value'\n | 'property'\n | 'entity'\n | 'entities';\n withCount?: boolean;\n bodyQueryOptions?: QueryOptionNames[];\n }\n ): Observable<any> {\n const apiOptions = this.api.options;\n let params = options.params || {};\n if (options.withCount) {\n params = Http.mergeHttpParams(params, apiOptions.helper.countParam());\n }\n\n let responseType: 'arraybuffer' | 'blob' | 'json' | 'text' =\n options.responseType &&\n ['property', 'entity', 'entities'].indexOf(options.responseType) !== -1\n ? 'json'\n : options.responseType === 'value'\n ? 'text'\n : <'arraybuffer' | 'blob' | 'json' | 'text'>options.responseType;\n\n let etag = options.etag;\n if (etag === undefined && Types.isPlainObject(options.body)) {\n etag = apiOptions.helper.etag(options.body);\n }\n\n const request = new ODataRequest({\n method,\n etag,\n body: options.body,\n api: this.api,\n resource: this,\n observe: 'response',\n headers: options.headers,\n reportProgress: options.reportProgress,\n params: params,\n responseType: responseType,\n fetchPolicy: options.fetchPolicy,\n withCredentials: options.withCredentials,\n bodyQueryOptions: options.bodyQueryOptions,\n });\n\n const res$ = this.api.request(request);\n switch (options.responseType) {\n case 'entities':\n return res$.pipe(map((res: ODataResponse<T>) => res.entities()));\n case 'entity':\n return res$.pipe(map((res: ODataResponse<T>) => res.entity()));\n case 'property':\n return res$.pipe(map((res: ODataResponse<T>) => res.property()));\n case 'value':\n return res$.pipe(map((res: ODataResponse<T>) => res.value() as T));\n default:\n // Other responseTypes (arraybuffer, blob, json, text) return body\n return res$.pipe(map((res: ODataResponse<T>) => res.body));\n }\n }\n\n protected get(\n options: HttpOptions & {\n etag?: string;\n responseType?:\n | 'arraybuffer'\n | 'blob'\n | 'json'\n | 'text'\n | 'value'\n | 'property'\n | 'entity'\n | 'entities';\n withCount?: boolean;\n bodyQueryOptions?: QueryOptionNames[];\n } = {}\n ): Observable<any> {\n return this.request('GET', options);\n }\n\n protected post(\n body: any,\n options: HttpOptions & {\n responseType?:\n | 'arraybuffer'\n | 'blob'\n | 'json'\n | 'text'\n | 'value'\n | 'property'\n | 'entity'\n | 'entities';\n withCount?: boolean;\n } = {}\n ): Observable<any> {\n return this.request('POST', { body, ...options });\n }\n\n protected put(\n body: any,\n options: HttpOptions & {\n etag?: string;\n responseType?:\n | 'arraybuffer'\n | 'blob'\n | 'json'\n | 'text'\n | 'value'\n | 'property'\n | 'entity'\n | 'entities';\n withCount?: boolean;\n } = {}\n ): Observable<any> {\n return this.request('PUT', { body, ...options });\n }\n\n protected patch(\n body: any,\n options: HttpOptions & {\n etag?: string;\n responseType?:\n | 'arraybuffer'\n | 'blob'\n | 'json'\n | 'text'\n | 'value'\n | 'property'\n | 'entity'\n | 'entities';\n withCount?: boolean;\n } = {}\n ): Observable<any> {\n return this.request('PATCH', { body, ...options });\n }\n\n protected delete(\n options: HttpOptions & {\n etag?: string;\n responseType?:\n | 'arraybuffer'\n | 'blob'\n | 'json'\n | 'text'\n | 'value'\n | 'property'\n | 'entity'\n | 'entities';\n withCount?: boolean;\n } = {}\n ): Observable<any> {\n return this.request('DELETE', options);\n }\n}\n","import { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { ODataPathSegments } from '../path-segments';\nimport { ODataQueryOptions } from '../query-options';\nimport {\n HttpEntityOptions,\n HttpEntitiesOptions,\n HttpPropertyOptions,\n HttpOptions,\n HttpNoneOptions,\n} from './options';\nimport {\n ODataProperty,\n ODataEntities,\n ODataEntity,\n ODataEntityAnnotations,\n ODataEntitiesAnnotations,\n} from '../responses';\nimport { ODataApi } from '../../api';\nimport { ODataCollection, ODataModel } from '../../models';\nimport { ODataEntityResource } from './entity';\nimport { Expand, Filter, OrderBy, Select, Transform } from '../builder';\nimport { ODataEntitySetResource } from './entity-set';\nimport { ODataResource } from '../resource';\nimport { PathSegmentNames } from '../../types';\n\nexport class ODataActionResource<P, R> extends ODataResource<R> {\n //#region Factory\n static factory<P, R>(\n api: ODataApi,\n path: string,\n type: string | undefined,\n segments: ODataPathSegments,\n query: ODataQueryOptions\n ) {\n const segment = segments.add(PathSegmentNames.action, path);\n if (type) segment.type(type);\n query.clear();\n return new ODataActionResource<P, R>(api, segments, query);\n }\n //#endregion\n\n clone() {\n return new ODataActionResource<P, R>(\n this.api,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n schema() {\n //TODO: Binding Type\n let type = this.type();\n return type !== undefined\n ? this.api.findCallableForType<R>(type)\n : undefined;\n }\n\n returnType() {\n return this.schema()?.parser.return?.type;\n }\n\n asModel<M extends ODataModel<R>>(\n entity: Partial<R> | { [name: string]: any },\n { annots, reset }: { annots?: ODataEntityAnnotations; reset?: boolean } = {}\n ): M {\n let resource: ODataEntityResource<R> | undefined;\n const type = annots?.type || this.returnType();\n const Model = this.api.modelForType(type);\n let path = annots?.entitySet;\n if (path !== undefined) {\n resource = this.api.entitySet<R>(path).entity(entity as Partial<R>);\n resource.query.apply(this.queryOptions.toQueryArguments());\n }\n return new Model(entity, { resource, annots, reset }) as M;\n }\n\n asCollection<M extends ODataModel<R>, C extends ODataCollection<R, M>>(\n entities: Partial<R>[] | { [name: string]: any }[],\n {\n annots,\n reset,\n }: { annots?: ODataEntitiesAnnotations; reset?: boolean } = {}\n ): C {\n let resource: ODataEntitySetResource<R> | undefined;\n const type = annots?.type || this.returnType();\n const Collection = this.api.collectionForType(type);\n let path = annots?.entitySet;\n if (path !== undefined) {\n resource = this.api.entitySet<R>(path);\n resource.query.apply(this.queryOptions.toQueryArguments());\n }\n return new Collection(entities, { resource, annots, reset }) as C;\n }\n\n //#region Inmutable Resource\n select(opts: Select<R>) {\n const clone = this.clone();\n clone.query.select(opts);\n return clone;\n }\n\n expand(opts: Expand<R>) {\n const clone = this.clone();\n clone.query.expand(opts);\n return clone;\n }\n\n transform(opts: Transform<R>) {\n const clone = this.clone();\n clone.query.transform(opts);\n return clone;\n }\n\n search(opts: string) {\n const clone = this.clone();\n clone.query.search(opts);\n return clone;\n }\n\n filter(opts: Filter) {\n const clone = this.clone();\n clone.query.filter(opts);\n return clone;\n }\n\n orderBy(opts: OrderBy<R>) {\n const clone = this.clone();\n clone.query.orderBy(opts);\n return clone;\n }\n\n format(opts: string) {\n const clone = this.clone();\n clone.query.format(opts);\n return clone;\n }\n\n top(opts: number) {\n const clone = this.clone();\n clone.query.top(opts);\n return clone;\n }\n\n skip(opts: number) {\n const clone = this.clone();\n clone.query.skip(opts);\n return clone;\n }\n\n skiptoken(opts: string) {\n const clone = this.clone();\n clone.query.skiptoken(opts);\n return clone;\n }\n //#endregion\n\n //#region Mutable Resource\n get segment() {\n const segments = this.pathSegments;\n return {\n entitySet() {\n return segments.get(PathSegmentNames.entitySet);\n },\n singleton() {\n return segments.get(PathSegmentNames.singleton);\n },\n action() {\n return segments.get(PathSegmentNames.action);\n },\n };\n }\n\n /**\n * Handle query options of the action\n * @returns Handler for mutate the query of the action\n */\n get query() {\n return this.entitiesQueryHandler();\n }\n\n //#endregion\n\n //#region Requests\n post(\n params: P | null,\n options?: HttpEntityOptions\n ): Observable<ODataEntity<R>>;\n post(\n params: P | null,\n options?: HttpEntitiesOptions\n ): Observable<ODataEntities<R>>;\n post(\n params: P | null,\n options?: HttpPropertyOptions\n ): Observable<ODataProperty<R>>;\n post(\n params: P | null,\n options?: HttpEntityOptions & HttpEntitiesOptions & HttpPropertyOptions\n ): Observable<any> {\n return super.post(params, options);\n }\n //#endregion\n\n //#region Shortcuts\n call(\n params: P | null,\n options?: HttpEntityOptions & HttpOptions\n ): Observable<ODataEntity<R>>;\n call(\n params: P | null,\n options?: HttpEntitiesOptions & HttpOptions\n ): Observable<ODataEntities<R>>;\n call(\n params: P | null,\n options?: HttpPropertyOptions & HttpOptions\n ): Observable<ODataProperty<R>>;\n call(\n params: P | null,\n options?: HttpNoneOptions & HttpOptions\n ): Observable<null>;\n call(\n params: P | null,\n options: HttpEntityOptions &\n HttpEntitiesOptions &\n HttpPropertyOptions &\n HttpNoneOptions &\n HttpOptions = {}\n ): Observable<any> {\n return this.clone().post(params, options);\n }\n\n callProperty(\n params: P | null,\n options: HttpOptions = {}\n ): Observable<R | null> {\n return this.call(params, { responseType: 'property', ...options }).pipe(\n map(({ property }) => property)\n );\n }\n\n callEntity(\n params: P | null,\n options: HttpOptions = {}\n ): Observable<R | null> {\n return this.call(params, { responseType: 'entity', ...options }).pipe(\n map(({ entity }) => entity)\n );\n }\n\n callModel(\n params: P | null,\n options: HttpOptions = {}\n ): Observable<ODataModel<R> | null> {\n return this.call(params, { responseType: 'entity', ...options }).pipe(\n map(({ entity, annots }) =>\n entity ? this.asModel(entity, { annots, reset: true }) : null\n )\n );\n }\n\n callEntities(\n params: P | null,\n options: HttpOptions = {}\n ): Observable<R[] | null> {\n return this.call(params, { responseType: 'entities', ...options }).pipe(\n map(({ entities }) => entities)\n );\n }\n\n callCollection(\n params: P | null,\n options: HttpOptions = {}\n ): Observable<ODataCollection<R, ODataModel<R>> | null> {\n return this.call(params, { responseType: 'entities', ...options }).pipe(\n map(({ entities, annots }) =>\n entities ? this.asCollection(entities, { annots, reset: true }) : null\n )\n );\n }\n //#endregion\n}\n","import { ODataContext, ODataVersionHelper } from '../../helper';\nimport { ODataMetadataType } from '../../types';\n\nexport abstract class ODataAnnotations {\n constructor(\n public helper: ODataVersionHelper,\n protected annotations: { [annot: string]: any } = {},\n protected context?: ODataContext\n ) {}\n\n attributes<T>(data: { [name: string]: any }, metadata: ODataMetadataType): T {\n return this.helper.attributes(data, metadata) as T;\n }\n\n get entitySet() {\n return this.context?.entitySet;\n }\n\n get type() {\n return this.helper.type(this.annotations) || this.context?.type;\n }\n\n // Method\n abstract clone(): ODataAnnotations;\n abstract data(data: { [name: string]: any }): { [name: string]: any };\n}\n\nexport class ODataPropertyAnnotations extends ODataAnnotations {\n clone(): ODataPropertyAnnotations {\n return new ODataPropertyAnnotations(\n this.helper,\n { ...this.annotations },\n this.context\n );\n }\n\n data(data: { [name: string]: any }) {\n return this.helper.property(data);\n }\n}\n\nexport class ODataEntityAnnotations extends ODataAnnotations {\n clone(): ODataEntityAnnotations {\n return new ODataEntityAnnotations(\n this.helper,\n { ...this.annotations },\n this.context\n );\n }\n\n data(data: { [name: string]: any }) {\n return this.helper.entity(data);\n }\n\n get id() {\n return this.helper.id(this.annotations);\n }\n\n get etag() {\n return this.helper.etag(this.annotations);\n }\n\n get mediaEtag() {\n return this.helper.mediaEtag(this.annotations);\n }\n\n get metadataEtag() {\n return this.helper.metadataEtag(this.annotations);\n }\n\n get readLink() {\n return this.helper.readLink(this.annotations);\n }\n\n get editLink() {\n return this.helper.editLink(this.annotations);\n }\n\n get mediaReadLink() {\n return this.helper.mediaReadLink(this.annotations);\n }\n\n get mediaEditLink() {\n return this.helper.mediaEditLink(this.annotations);\n }\n\n get mediaContentType() {\n return this.helper.mediaContentType(this.annotations);\n }\n\n private _properties?: { [name: string]: any };\n get properties() {\n if (this._properties === undefined) {\n this._properties = this.helper.properties(this.annotations);\n }\n return this._properties;\n }\n\n property(name: string) {\n return this.properties[name];\n }\n\n private _functions?: { [name: string]: any };\n get functions() {\n if (this._functions === undefined) {\n this._functions = this.helper.functions(this.annotations);\n }\n return this._functions;\n }\n\n function(name: string) {\n return this.functions[name];\n }\n}\n\nexport class ODataEntitiesAnnotations extends ODataAnnotations {\n clone(): ODataEntitiesAnnotations {\n return new ODataEntitiesAnnotations(\n this.helper,\n { ...this.annotations },\n this.context\n );\n }\n\n data(data: { [name: string]: any }) {\n return this.helper.entities(data);\n }\n\n get readLink() {\n return this.helper.readLink(this.annotations);\n }\n\n get count() {\n return this.helper.count(this.annotations);\n }\n\n get nextLink() {\n return this.helper.nextLink(this.annotations);\n }\n\n get deltaLink() {\n return this.helper.deltaLink(this.annotations);\n }\n\n get top() {\n let match = (this.nextLink || '').match(/[&?]{1}\\$top=(\\d+)/);\n return match !== null ? Number(match[1]) : undefined;\n }\n\n get skip() {\n let match = (this.nextLink || '').match(/[&?]{1}\\$skip=(\\d+)/);\n return match !== null ? Number(match[1]) : undefined;\n }\n\n get skiptoken() {\n let match = (this.nextLink || '').match(/[&?]{1}\\$skiptoken=([\\d\\w\\s']+)/);\n return match !== null ? match[1] : undefined;\n }\n\n private _functions?: { [name: string]: any };\n get functions() {\n if (this._functions === undefined) {\n this._functions = this.helper.functions(this.annotations);\n }\n return this._functions;\n }\n function(name: string) {\n return this.functions[name];\n }\n}\n","import {\n DEFAULT_VERSION,\n MAX_AGE,\n VERSION_2_0,\n VERSION_3_0,\n VERSION_4_0,\n} from '../../constants';\nimport { ODataHelper } from '../../helper';\nimport {\n CacheCacheability,\n ODataMetadataType,\n ODataVersion,\n Options,\n ResponseOptions,\n} from '../../types';\n\nexport class ODataResponseOptions implements ResponseOptions {\n version: ODataVersion;\n streaming?: boolean;\n // OData\n metadata?: ODataMetadataType;\n stringAsEnum?: boolean;\n ieee754Compatible?: boolean;\n // Location\n location?: string;\n // Cache\n cacheability?: 'public' | 'private' | 'no-cache' | 'no-store';\n maxAge?: number;\n\n constructor(config: Options) {\n this.version = config.version || DEFAULT_VERSION;\n this.stringAsEnum = config.stringAsEnum;\n }\n\n get helper() {\n return ODataHelper[this.version];\n }\n\n clone() {\n return new ODataResponseOptions(this);\n }\n\n setFeatures(features: string) {\n features.split(';').forEach((o) => {\n let [k, v] = o.split('=');\n switch (k.trim()) {\n case 'odata.metadata':\n this.metadata = v as ODataMetadataType;\n break;\n case 'odata.streaming':\n this.streaming = v == 'true';\n break;\n case 'IEEE754Compatible':\n this.ieee754Compatible = v == 'true';\n break;\n }\n });\n }\n\n setVersion(version: string) {\n const value = version.replace(/\\;/g, '').trim();\n if ([VERSION_2_0, VERSION_3_0, VERSION_4_0].indexOf(value) !== -1)\n this.version = value as ODataVersion;\n }\n\n setLocation(location: string) {\n // TODO: resolve location?\n this.location = location;\n }\n\n setCache(cacheControl: string) {\n cacheControl.split(',').forEach((directive) => {\n if (directive.startsWith(MAX_AGE)) {\n let maxAge = Number(directive.split('=')[1]);\n if (!Number.isNaN(maxAge)) this.maxAge = maxAge;\n }\n if (\n ['public', 'private', 'no-cache', 'no-store'].indexOf(directive) !== -1\n ) {\n this.cacheability = directive as CacheCacheability;\n }\n });\n }\n}\n","import { HttpHeaders, HttpResponse } from '@angular/common/http';\nimport {\n ODataEntityAnnotations,\n ODataEntitiesAnnotations,\n ODataPropertyAnnotations,\n} from './annotations';\nimport { Types } from '../../utils/types';\nimport { ODataResource } from '../resource';\nimport { ODataEntities, ODataEntity, ODataProperty } from './types';\nimport {\n APPLICATION_JSON,\n ODATA_VERSION_HEADERS,\n CONTENT_TYPE,\n CACHE_CONTROL,\n LOCATION_HEADER,\n ETAG_HEADERS,\n ODATA_ENTITYID_HEADERS,\n} from '../../constants';\nimport { ODataApi } from '../../api';\nimport { ODataRequest } from '../request';\nimport { ODataResponseOptions } from './options';\nimport { Http } from '../../utils/http';\nimport { ODataContext } from '../../helper';\n\n/**\n * OData Response\n */\nexport class ODataResponse<T> extends HttpResponse<T> {\n readonly api: ODataApi;\n readonly resource: ODataResource<T>;\n\n constructor(init: {\n api: ODataApi;\n resource: ODataResource<T>;\n body: T | null;\n headers: HttpHeaders;\n status: number;\n statusText: string;\n url?: string;\n }) {\n super(init);\n this.api = init.api;\n this.resource = init.resource;\n }\n\n static fromHttpResponse<T>(req: ODataRequest<T>, res: HttpResponse<T>) {\n return new ODataResponse<T>({\n api: req.api,\n resource: req.resource,\n body: res.body,\n headers: res.headers,\n status: res.status,\n statusText: res.statusText,\n url: res.url || undefined,\n });\n }\n\n static fromJSON<T>(\n req: ODataRequest<T>,\n json: {\n body: T | null;\n headers: { [name: string]: string | string[] };\n status: number;\n statusText: string;\n url: string | null;\n }\n ) {\n return new ODataResponse<T>({\n api: req.api,\n resource: req.resource,\n body: json.body,\n headers: new HttpHeaders(json.headers),\n status: json.status,\n statusText: json.statusText,\n url: json.url || undefined,\n });\n }\n\n toJSON() {\n return {\n body: this.body,\n headers: this.headers\n .keys()\n .map((name) => ({ [name]: this.headers.getAll(name) || [] }))\n .reduce((acc, header) => Object.assign(acc, header), {}),\n status: this.status,\n statusText: this.statusText,\n url: this.url,\n };\n }\n\n private _options?: ODataResponseOptions;\n get options(): ODataResponseOptions {\n if (this._options === undefined) {\n this._options = new ODataResponseOptions(this.api.options);\n const contentType = this.headers.get(CONTENT_TYPE);\n if (contentType && contentType.indexOf(APPLICATION_JSON) !== -1) {\n const features = contentType\n .split(',')\n .find((p) => p.startsWith(APPLICATION_JSON)) as string;\n this._options.setFeatures(features);\n }\n const header = Http.resolveHeaderKey(this.headers, ODATA_VERSION_HEADERS);\n if (header) {\n const version = (this.headers.get(header) || '').replace(/\\;/g, '') as\n | '2.0'\n | '3.0'\n | '4.0';\n this._options.setVersion(version);\n }\n\n const location = this.headers.get(LOCATION_HEADER);\n if (location) {\n this._options.setLocation(location);\n }\n\n const cacheControl = this.headers.get(CACHE_CONTROL);\n if (cacheControl) {\n this._options.setCache(cacheControl);\n }\n }\n return this._options;\n }\n\n private _payload?: any;\n get payload() {\n if (this._payload === undefined) {\n this._payload =\n this.body && this.options.version === '2.0'\n ? (<any>this.body)['d']\n : this.body;\n }\n return this._payload;\n }\n\n private _context?: any;\n get context(): ODataContext {\n if (this._context === undefined) {\n this._context = this.options.helper.context(this.payload || {});\n }\n return this._context;\n }\n\n private _annotations?: any;\n get annotations(): { [name: string]: any } {\n if (this._annotations === undefined) {\n const options = this.options;\n this._annotations = options.helper.annotations(this.payload || {});\n let key = Http.resolveHeaderKey(this.headers, ETAG_HEADERS);\n if (key) {\n const etag = this.headers.get(key);\n if (etag) options.helper.etag(this._annotations, etag);\n }\n key = Http.resolveHeaderKey(this.headers, ODATA_ENTITYID_HEADERS);\n if (key) {\n const entityId = this.headers.get(key);\n if (entityId) options.helper.id(this._annotations, entityId);\n }\n }\n return this._annotations;\n }\n\n /**\n * Handle the response body as an entity\n * @returns\n */\n entity(): ODataEntity<T> {\n const options = this.options;\n const payload = this.payload;\n const annots = new ODataEntityAnnotations(\n options.helper,\n this.annotations,\n this.context\n );\n const data = payload ? annots.data(payload) : null;\n let entity = (\n data !== null && Types.isPlainObject(data)\n ? options.helper.attributes(data, this.api.options.stripMetadata)\n : data\n ) as T | null;\n\n if (entity !== null)\n entity = this.resource.deserialize(entity, options) as T;\n return { entity, annots };\n }\n\n /**\n * Handle the response body as entities\n * @returns\n */\n entities(): ODataEntities<T> {\n const options = this.options;\n const payload = this.payload;\n const annots = new ODataEntitiesAnnotations(\n options.helper,\n this.annotations,\n this.context\n );\n let entities = payload ? annots.data(payload) : null;\n\n if (entities !== null)\n entities = this.resource.deserialize(entities, options) as T[];\n return { entities, annots };\n }\n\n /**\n * Handle the response body as a property\n * @returns\n */\n property(): ODataProperty<T> {\n const options = this.options;\n const payload = this.payload;\n const annots = new ODataPropertyAnnotations(\n options.helper,\n this.annotations,\n this.context\n );\n const data = payload ? (annots.data(payload) as T) : null;\n let property = (\n data !== null && Types.isPlainObject(data)\n ? options.helper.attributes(data, this.api.options.stripMetadata)\n : data\n ) as T | null;\n\n if (property !== null)\n property = this.resource.deserialize(property, options) as T;\n return { property, annots };\n }\n\n /**\n * Handle the response body as a value\n * @returns\n */\n value(): T | null {\n const options = this.options;\n const payload = this.payload;\n let value = (\n payload !== null && Types.isPlainObject(payload)\n ? options.helper.attributes(payload, this.api.options.stripMetadata)\n : payload\n ) as T | null;\n\n if (value !== null) value = this.resource.deserialize(value, options) as T;\n return value;\n }\n}\n","export class CsdlAnnotable {\n constructor(public annotationList?: CsdlAnnotation[]) {}\n}\n\nexport class CsdlAnnotations extends CsdlAnnotable {\n constructor(\n public target: string,\n annotationList: CsdlAnnotation[],\n public qualifier?: string\n ) {\n super(annotationList);\n }\n}\n\nexport class CsdlAnnotation {\n constructor(public term: string, public qualifier?: string) {}\n}\n\nexport class CsdlTerm {\n constructor(\n public name: string,\n public type: string,\n public baseTerm?: string,\n public defaultValue?: string,\n public appliesTo?: string,\n public nullable?: boolean,\n public maxLength?: number,\n public precision?: number,\n public scale?: number,\n public srid?: string\n ) {}\n}\n","import { CsdlAnnotable, CsdlAnnotation } from './csdl-annotation';\n\nexport class CsdlTypeDefinition extends CsdlAnnotable {\n constructor(\n public name: string,\n public underlayingType: string,\n public maxLength?: number,\n public precision?: number,\n public scale?: number,\n public unicode?: boolean,\n public srid?: string,\n annotationList?: CsdlAnnotation[]\n ) {\n super(annotationList);\n }\n}\n","import {\n CsdlAnnotation,\n CsdlAnnotable,\n CsdlTerm,\n CsdlAnnotations,\n} from './csdl-annotation';\nimport { CsdlTypeDefinition } from './csdl-type-definition';\nimport { CsdlEnumType } from './csdl-enum-type';\nimport { CsdlEntityType, CsdlComplexType } from './csdl-structured-type';\nimport { CsdlFunction, CsdlAction } from './csdl-function-action';\nimport { CsdlEntityContainer } from './csdl-entity-container';\n\nexport class CsdlSchema extends CsdlAnnotable {\n constructor(\n public namespace: string,\n public alias?: string,\n public enumTypes?: CsdlEnumType[],\n public complexTypes?: CsdlComplexType[],\n public entityTypes?: CsdlEntityType[],\n public functions?: CsdlFunction[],\n public actions?: CsdlAction[],\n public entityContainer?: CsdlEntityContainer,\n public typeDefinitions?: CsdlTypeDefinition[],\n public terms?: CsdlTerm[],\n public annotationsList?: CsdlAnnotations[],\n annotationList?: CsdlAnnotation[]\n ) {\n super(annotationList);\n }\n}\n","export class CsdlEnumType {\n constructor(\n public name: string,\n public members: CsdlEnumMember[],\n public underlyingType?: string,\n public isFlags?: boolean\n ) {}\n}\n\nexport class CsdlEnumMember {\n constructor(public name: string, public value?: number) {}\n}\n","import {\n CsdlProperty,\n CsdlNavigationProperty,\n} from './csdl-structural-property';\n\nexport class CsdlStructuredType {\n constructor(\n public name: string,\n public properties?: CsdlProperty[],\n public navigationProperties?: CsdlNavigationProperty[],\n public baseType?: string,\n public openType?: boolean,\n public abstract?: boolean\n ) {}\n}\n\nexport class CsdlComplexType extends CsdlStructuredType {\n constructor(\n name: string,\n properties?: CsdlProperty[],\n navigationProperties?: CsdlNavigationProperty[],\n baseType?: string,\n openType?: boolean,\n abstract?: boolean\n ) {\n super(name, properties, navigationProperties, baseType, openType, abstract);\n }\n}\n\nexport class CsdlEntityType extends CsdlStructuredType {\n constructor(\n name: string,\n public key?: CsdlKey,\n properties?: CsdlProperty[],\n navigationProperties?: CsdlNavigationProperty[],\n baseType?: string,\n openType?: boolean,\n abstract?: boolean,\n public hasStream?: boolean\n ) {\n super(name, properties, navigationProperties, baseType, openType, abstract);\n }\n}\n\nexport class CsdlKey {\n constructor(public propertyRefs: CsdlPropertyRef[]) {}\n}\n\nexport class CsdlPropertyRef {\n constructor(public name: string, public alias?: string) {}\n}\n","export class CsdlFunction {\n constructor(\n public name: string,\n public returnType: CsdlReturnType,\n public isBound?: boolean,\n public entitySetPath?: string,\n public isComposable?: boolean,\n public parameters?: CsdlParameter[]\n ) {}\n}\n\nexport class CsdlAction {\n constructor(\n public name: string,\n public returnType?: CsdlReturnType,\n public isBound?: boolean,\n public entitySetPath?: string,\n public parameters?: CsdlParameter[]\n ) {}\n}\n\nexport class CsdlFunctionImport {\n constructor(\n public name: string,\n public functionName: string,\n public entitySet?: string,\n public IncludeInServiceDocument?: boolean\n ) {}\n}\n\nexport class CsdlActionImport {\n constructor(\n public name: string,\n public action: string,\n public entitySet?: string\n ) {}\n}\n\nexport class CsdlParameter {\n constructor(\n public name: string,\n public type: string,\n public nullable?: boolean,\n public maxLength?: number,\n public precision?: number,\n public scale?: number,\n public srid?: string\n ) {}\n}\n\nexport class CsdlReturnType {\n constructor(\n public type: string,\n public nullable?: boolean,\n public maxLength?: number,\n public precision?: number,\n public scale?: number,\n public srid?: string\n ) {}\n}\n","export abstract class CsdlStructuralProperty {\n constructor(\n public name: string,\n public type: string,\n public nullable?: boolean\n ) {}\n}\n\nexport class CsdlProperty extends CsdlStructuralProperty {\n constructor(\n name: string,\n type: string,\n nullable?: boolean,\n public maxLength?: number,\n public precision?: number,\n public scale?: number,\n public unicode?: boolean,\n public srid?: string,\n public defaultValue?: string\n ) {\n super(name, type, nullable);\n }\n}\n\nexport class CsdlNavigationProperty extends CsdlStructuralProperty {\n constructor(\n name: string,\n type: string,\n nullable?: boolean,\n public partner?: string,\n public containsTarget?: boolean,\n public referentialConstraints?: CsdlReferentialConstraint[],\n public onDelete?: CsdlOnDelete\n ) {\n super(name, type, nullable);\n }\n}\n\nexport class CsdlReferentialConstraint {\n constructor(public property: string, public referencedProperty: string) {}\n}\n\nexport class CsdlOnDelete {\n constructor(public action: string) {}\n}\n","import { CsdlNavigationPropertyBinding } from './csdl-navigation-property-binding';\n\nexport class CsdlEntitySet {\n constructor(\n public name: string,\n public entityType: string,\n public navigationPropertyBinding?: CsdlNavigationPropertyBinding[],\n public includeInServiceDocument?: boolean\n ) {}\n}\n","import { CsdlNavigationPropertyBinding } from './csdl-navigation-property-binding';\n\nexport class CsdlSingleton {\n constructor(\n public name: string,\n public type: string,\n public navigationPropertyBindings?: CsdlNavigationPropertyBinding[]\n ) {}\n}\n","import { CsdlEntitySet } from './csdl-entity-set';\nimport { CsdlSingleton } from './csdl-singleton';\nimport { CsdlFunctionImport, CsdlActionImport } from './csdl-function-action';\n\nexport class CsdlEntityContainer {\n constructor(\n public name: string,\n public extend?: string,\n public entitySets?: CsdlEntitySet[],\n public singletons?: CsdlSingleton[],\n public functionImports?: CsdlFunctionImport[],\n public actionImports?: CsdlActionImport[]\n ) {}\n}\n","import { CsdlAnnotable, CsdlAnnotation } from './csdl-annotation';\n\nexport class CsdlReference extends CsdlAnnotable {\n constructor(\n public uri: string,\n public includes?: CsdlInclude[],\n public includeAnnotations?: CsdlIncludeAnnotations[],\n annotationList?: CsdlAnnotation[]\n ) {\n super(annotationList);\n }\n}\n\nexport class CsdlInclude {\n constructor(public namespace: string, public alias?: string) {}\n}\n\nexport class CsdlIncludeAnnotations {\n constructor(\n public termNamespace: string,\n public qualifier?: string,\n public targetNamespace?: string\n ) {}\n}\n","export class CsdlNavigationPropertyBinding {\n constructor(public path: string, public target: string) {}\n}\n","import { CsdlTypeDefinition } from './csdl/csdl-type-definition';\nimport { CsdlSchema } from './csdl/csdl-schema';\nimport { Types } from '../../utils/types';\nimport { CsdlEnumType, CsdlEnumMember } from './csdl/csdl-enum-type';\nimport {\n CsdlEntityType,\n CsdlPropertyRef,\n CsdlKey,\n CsdlComplexType,\n} from './csdl/csdl-structured-type';\nimport {\n CsdlFunction,\n CsdlParameter,\n CsdlFunctionImport,\n CsdlActionImport,\n CsdlReturnType,\n CsdlAction,\n} from './csdl/csdl-function-action';\nimport {\n CsdlProperty,\n CsdlNavigationProperty,\n CsdlReferentialConstraint,\n CsdlOnDelete,\n} from './csdl/csdl-structural-property';\nimport { CsdlEntitySet } from './csdl/csdl-entity-set';\nimport { CsdlSingleton } from './csdl/csdl-singleton';\nimport { CsdlEntityContainer } from './csdl/csdl-entity-container';\nimport {\n CsdlReference,\n CsdlInclude,\n CsdlIncludeAnnotations,\n} from './csdl/csdl-reference';\nimport {\n CsdlAnnotation,\n CsdlTerm,\n CsdlAnnotations,\n} from './csdl/csdl-annotation';\nimport { CsdlNavigationPropertyBinding } from './csdl/csdl-navigation-property-binding';\nimport { VERSION_4_0 } from '../../constants';\n\nenum FieldType {\n ATTRIBUTE,\n TAG,\n}\n\nclass Field {\n constructor(public name: string, public fieldType: FieldType) {}\n}\n\nexport class ODataMetadata {\n // TAGS\n private static readonly TAG_EDMX = 'edmx:Edmx';\n private static readonly TAG_DATA_SERVICES = 'edmx:DataServices';\n private static readonly TAG_REFERENCE = 'edmx:Reference';\n private static readonly TAG_INCLUDE = 'edmx:Include';\n private static readonly TAG_INCLUDE_ANNOTATIONS = 'edmx:IncludeAnnotations';\n private static readonly TAG_TERM = 'Term';\n private static readonly TAG_ANNOTATIONS = 'Annotations';\n private static readonly TAG_ANNOTATION = 'Annotation';\n private static readonly TAG_SCHEMA = 'Schema';\n private static readonly TAG_ENUM_TYPE = 'EnumType';\n private static readonly TAG_MEMBER = 'Member';\n private static readonly TAG_COMPLEX_TYPE = 'ComplexType';\n private static readonly TAG_ENTITY_TYPE = 'EntityType';\n private static readonly TAG_PROPERTY = 'Property';\n private static readonly TAG_KEY = 'Key';\n private static readonly TAG_PROPERTY_REF = 'PropertyRef';\n private static readonly TAG_NAVIGATION_PROPERTY = 'NavigationProperty';\n private static readonly TAG_REFERENTIAL_CONSTRAINT = 'ReferentialConstraint';\n private static readonly TAG_ON_DELETE = 'OnDelete';\n private static readonly TAG_FUNCTION = 'Function';\n private static readonly TAG_RETURN_TYPE = 'ReturnType';\n private static readonly TAG_PARAMETER = 'Parameter';\n private static readonly TAG_ACTION = 'Action';\n private static readonly TAG_ENTITY_CONTAINER = 'EntityContainer';\n private static readonly TAG_ENTITY_SET = 'EntitySet';\n private static readonly TAG_SINGLETON = 'Singleton';\n private static readonly TAG_FUNCTION_IMPORT = 'FunctionImport';\n private static readonly TAG_ACTION_IMPORT = 'ActionImport';\n private static readonly TAG_NAVIGATION_PROPERTY_BINDING =\n 'NavigationPropertyBinding';\n private static readonly TAG_TYPE_DEFINITION = 'TypeDefinition';\n\n // ATTRIBUTES\n private static readonly ATTRIBUTE_VERSION = 'Version';\n private static readonly ATTRIBUTE_URI = 'Uri';\n private static readonly ATTRIBUTE_ALIAS = 'Alias';\n private static readonly ATTRIBUTE_NAMESPACE = 'Namespace';\n private static readonly ATTRIBUTE_TERM_NAMESPACE = 'TermNamespace';\n private static readonly ATTRIBUTE_QUALIFIER = 'Qualifier';\n private static readonly ATTRIBUTE_TARGET_NAMESPACE = 'TargetNamespace';\n private static readonly ATTRIBUTE_TERM = 'Term';\n private static readonly ATTRIBUTE_NAME = 'Name';\n private static readonly ATTRIBUTE_VALUE = 'Value';\n private static readonly ATTRIBUTE_BASE_TYPE = 'BaseType';\n private static readonly ATTRIBUTE_OPEN_TYPE = 'OpenType';\n private static readonly ATTRIBUTE_TYPE = 'Type';\n private static readonly ATTRIBUTE_NULLABLE = 'Nullable';\n private static readonly ATTRIBUTE_MAX_LENGTH = 'MaxLength';\n private static readonly ATTRIBUTE_PRECISION = 'Precision';\n private static readonly ATTRIBUTE_SCALE = 'Scale';\n private static readonly ATTRIBUTE_UNICODE = 'Unicode';\n private static readonly ATTRIBUTE_SRID = 'SRID';\n private static readonly ATTRIBUTE_DEFAULT_VALUE = 'DefaultValue';\n private static readonly ATTRIBUTE_PARTNER = 'Partner';\n private static readonly ATTRIBUTE_PROPERTY = 'Property';\n private static readonly ATTRIBUTE_REFERENCED_PROPERTY = 'ReferencedProperty';\n private static readonly ATTRIBUTE_HAS_STREAM = 'HasStream';\n private static readonly ATTRIBUTE_CONTAINS_TARGET = 'ContainsTarget';\n private static readonly ATTRIBUTE_IS_BOUND = 'IsBound';\n private static readonly ATTRIBUTE_ENTITY_SET_PATH = 'EntitySetPath';\n private static readonly ATTRIBUTE_IS_COMPOSABLE = 'IsComposable';\n private static readonly ATTRIBUTE_ENTITY_TYPE = 'EntityType';\n private static readonly ATTRIBUTE_PATH = 'Path';\n private static readonly ATTRIBUTE_TARGET = 'Target';\n private static readonly ATTRIBUTE_FUNCTION = 'Function';\n private static readonly ATTRIBUTE_ACTION = 'Action';\n private static readonly ATTRIBUTE_ENTITY_SET = 'EntitySet';\n private static readonly ATTRIBUTE_INCLUDE_IN_SERVICE_DOCUMENT =\n 'IncludeInServiceDocument';\n private static readonly ATTRIBUTE_ABSTRACT = 'Abstract';\n private static readonly ATTRIBUTE_UNDERLYING_TYPE = 'UnderlyingType';\n private static readonly ATTRIBUTE_IS_FLAGS = 'IsFlags';\n private static readonly ATTRIBUTE_EXTENDS = 'Extends';\n private static readonly ATTRIBUTE_BASE_TERM = 'BaseTerm';\n private static readonly ATTRIBUTE_APPLIES_TO = 'AppliesTo';\n\n public readonly version: string;\n public readonly references: CsdlReference[];\n public readonly schemas: CsdlSchema[];\n\n constructor(xml: string) {\n try {\n const parser: DOMParser = new DOMParser();\n const document: Document = parser.parseFromString(xml, 'text/xml');\n\n this.checkVersion(document);\n\n this.version = this.getFieldValueByAttribute(\n new Field(ODataMetadata.ATTRIBUTE_VERSION, FieldType.ATTRIBUTE),\n document.documentElement.attributes\n );\n\n this.references = this.getObjects(\n document.documentElement,\n ODataMetadata.TAG_REFERENCE,\n [\n new Field(ODataMetadata.ATTRIBUTE_URI, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.TAG_INCLUDE, FieldType.TAG),\n new Field(ODataMetadata.TAG_INCLUDE_ANNOTATIONS, FieldType.TAG),\n new Field(ODataMetadata.TAG_ANNOTATION, FieldType.TAG),\n ]\n );\n\n const dataServices: Element =\n document.documentElement.getElementsByTagName(\n ODataMetadata.TAG_DATA_SERVICES\n )[0];\n this.schemas = this.getObjects(dataServices, ODataMetadata.TAG_SCHEMA, [\n new Field(ODataMetadata.ATTRIBUTE_NAMESPACE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_ALIAS, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.TAG_ENUM_TYPE, FieldType.TAG),\n new Field(ODataMetadata.TAG_COMPLEX_TYPE, FieldType.TAG),\n new Field(ODataMetadata.TAG_ENTITY_TYPE, FieldType.TAG),\n new Field(ODataMetadata.TAG_FUNCTION, FieldType.TAG),\n new Field(ODataMetadata.TAG_ACTION, FieldType.TAG),\n new Field(ODataMetadata.TAG_ENTITY_CONTAINER, FieldType.TAG),\n new Field(ODataMetadata.TAG_TYPE_DEFINITION, FieldType.TAG),\n new Field(ODataMetadata.TAG_TERM, FieldType.TAG),\n new Field(ODataMetadata.TAG_ANNOTATIONS, FieldType.TAG),\n new Field(ODataMetadata.TAG_ANNOTATION, FieldType.TAG),\n ]);\n } catch (error) {\n throw new Error('Unable to parse metadata, ' + error);\n }\n }\n\n protected checkVersion(document: Document) {\n // check version\n const attributes: NamedNodeMap = document.documentElement.attributes;\n if (!attributes) {\n throw new Error('OData version is not specified in the metadata');\n }\n const attr: Attr | null = attributes.getNamedItem('Version');\n if (attr === null) {\n throw new Error('OData version is not specified in the metadata');\n }\n const odataVersion = attr?.nodeValue;\n if (odataVersion !== VERSION_4_0) {\n throw new Error('OData version \"' + odataVersion + '\" is not supported');\n }\n }\n\n protected getObjects(\n parentElement: Element,\n tag: string,\n fieldNames: Field[]\n ): any[] {\n let objects: any[] = [];\n\n const children: HTMLCollection = parentElement.children;\n for (let index = 0; index < children.length; index++) {\n const element = children.item(index);\n\n if (!element || element.nodeName !== tag) {\n continue;\n }\n\n const attributes: NamedNodeMap = element.attributes;\n const fieldValues: any[] = this.getFieldValues(\n fieldNames,\n attributes,\n element\n );\n switch (tag) {\n case ODataMetadata.TAG_REFERENCE:\n objects.push(\n new CsdlReference(\n fieldValues[0],\n fieldValues[1],\n fieldValues[2],\n fieldValues[3]\n )\n );\n break;\n case ODataMetadata.TAG_INCLUDE:\n objects.push(new CsdlInclude(fieldValues[0], fieldValues[1]));\n break;\n case ODataMetadata.TAG_INCLUDE_ANNOTATIONS:\n objects.push(\n new CsdlIncludeAnnotations(\n fieldValues[0],\n fieldValues[1],\n fieldValues[2]\n )\n );\n break;\n case ODataMetadata.TAG_TERM:\n objects.push(\n new CsdlTerm(\n fieldValues[0],\n fieldValues[1],\n fieldValues[2],\n fieldValues[3],\n fieldValues[4],\n fieldValues[5],\n fieldValues[6],\n fieldValues[7],\n fieldValues[8],\n fieldValues[9]\n )\n );\n break;\n case ODataMetadata.TAG_ANNOTATIONS:\n objects.push(\n new CsdlAnnotations(fieldValues[0], fieldValues[1], fieldValues[2])\n );\n break;\n case ODataMetadata.TAG_ANNOTATION:\n objects.push(new CsdlAnnotation(fieldValues[0], fieldValues[1]));\n break;\n case ODataMetadata.TAG_SCHEMA:\n objects.push(\n new CsdlSchema(\n fieldValues[0],\n fieldValues[1],\n fieldValues[2],\n fieldValues[3],\n fieldValues[4],\n fieldValues[5],\n fieldValues[6],\n fieldValues[7],\n fieldValues[8],\n fieldValues[9],\n fieldValues[10],\n fieldValues[11]\n )\n );\n break;\n case ODataMetadata.TAG_ENUM_TYPE:\n objects.push(\n new CsdlEnumType(\n fieldValues[0],\n fieldValues[1],\n fieldValues[2],\n fieldValues[3]\n )\n );\n break;\n case ODataMetadata.TAG_COMPLEX_TYPE:\n objects.push(\n new CsdlComplexType(\n fieldValues[0],\n fieldValues[1],\n fieldValues[2],\n fieldValues[3],\n fieldValues[4],\n fieldValues[5]\n )\n );\n break;\n case ODataMetadata.TAG_ENTITY_TYPE:\n objects.push(\n new CsdlEntityType(\n fieldValues[0],\n fieldValues[1],\n fieldValues[2],\n fieldValues[3],\n fieldValues[4],\n fieldValues[5],\n fieldValues[6],\n fieldValues[7]\n )\n );\n break;\n case ODataMetadata.TAG_FUNCTION:\n objects.push(\n new CsdlFunction(\n fieldValues[0],\n fieldValues[1],\n fieldValues[2],\n fieldValues[3],\n fieldValues[4],\n fieldValues[5]\n )\n );\n break;\n case ODataMetadata.TAG_MEMBER:\n objects.push(new CsdlEnumMember(fieldValues[0], fieldValues[1]));\n break;\n case ODataMetadata.TAG_PROPERTY:\n objects.push(\n new CsdlProperty(\n fieldValues[0],\n fieldValues[1],\n fieldValues[2],\n fieldValues[3],\n fieldValues[4],\n fieldValues[5],\n fieldValues[6],\n fieldValues[7],\n fieldValues[8]\n )\n );\n break;\n case ODataMetadata.TAG_PROPERTY_REF:\n objects.push(new CsdlPropertyRef(fieldValues[0], fieldValues[1]));\n break;\n case ODataMetadata.TAG_NAVIGATION_PROPERTY:\n objects.push(\n new CsdlNavigationProperty(\n fieldValues[0],\n fieldValues[1],\n fieldValues[2],\n fieldValues[3],\n fieldValues[4],\n fieldValues[5],\n fieldValues[6]\n )\n );\n break;\n case ODataMetadata.TAG_REFERENTIAL_CONSTRAINT:\n objects.push(\n new CsdlReferentialConstraint(fieldValues[0], fieldValues[1])\n );\n break;\n case ODataMetadata.TAG_PARAMETER:\n objects.push(\n new CsdlParameter(\n fieldValues[0],\n fieldValues[1],\n fieldValues[2],\n fieldValues[3],\n fieldValues[4],\n fieldValues[5],\n fieldValues[6]\n )\n );\n break;\n case ODataMetadata.TAG_ACTION:\n objects.push(\n new CsdlAction(\n fieldValues[0],\n fieldValues[1],\n fieldValues[2],\n fieldValues[3],\n fieldValues[4]\n )\n );\n break;\n case ODataMetadata.TAG_ENTITY_SET:\n objects.push(\n new CsdlEntitySet(\n fieldValues[0],\n fieldValues[1],\n fieldValues[2],\n fieldValues[3]\n )\n );\n break;\n case ODataMetadata.TAG_SINGLETON:\n objects.push(\n new CsdlSingleton(fieldValues[0], fieldValues[1], fieldValues[2])\n );\n break;\n case ODataMetadata.TAG_FUNCTION_IMPORT:\n objects.push(\n new CsdlFunctionImport(\n fieldValues[0],\n fieldValues[1],\n fieldValues[2],\n fieldValues[3]\n )\n );\n break;\n case ODataMetadata.TAG_ACTION_IMPORT:\n objects.push(\n new CsdlActionImport(fieldValues[0], fieldValues[1], fieldValues[2])\n );\n break;\n case ODataMetadata.TAG_NAVIGATION_PROPERTY_BINDING:\n objects.push(\n new CsdlNavigationPropertyBinding(fieldValues[0], fieldValues[1])\n );\n break;\n case ODataMetadata.TAG_TYPE_DEFINITION:\n objects.push(\n new CsdlTypeDefinition(\n fieldValues[0],\n fieldValues[1],\n fieldValues[2],\n fieldValues[3],\n fieldValues[4],\n fieldValues[5],\n fieldValues[6],\n fieldValues[7]\n )\n );\n break;\n default:\n throw new Error('Unknwon tag:' + tag);\n }\n }\n\n return objects;\n }\n\n protected getObject(\n parentElement: Element,\n tag: string,\n fieldNames: Field[]\n ): any {\n let object: any;\n\n const children: HTMLCollection = parentElement.children;\n let element: Element | undefined | null;\n for (let index = 0; index < children.length; index++) {\n if (children && children.item(index)?.nodeName === tag) {\n if (element !== undefined && element !== null) {\n throw new Error('Expected one ' + tag);\n }\n element = children.item(index);\n }\n }\n\n if (element !== undefined && element !== null) {\n const attributes: NamedNodeMap = element.attributes;\n const fieldValues: any[] = this.getFieldValues(\n fieldNames,\n attributes,\n element\n );\n switch (tag) {\n case ODataMetadata.TAG_KEY:\n object = new CsdlKey(fieldValues[0]);\n break;\n case ODataMetadata.TAG_RETURN_TYPE:\n object = new CsdlReturnType(\n fieldValues[0],\n fieldValues[1],\n fieldValues[2],\n fieldValues[3],\n fieldValues[4],\n fieldValues[5]\n );\n break;\n case ODataMetadata.TAG_ENTITY_CONTAINER:\n object = new CsdlEntityContainer(\n fieldValues[0],\n fieldValues[1],\n fieldValues[2],\n fieldValues[3],\n fieldValues[4],\n fieldValues[5]\n );\n break;\n case ODataMetadata.TAG_ON_DELETE:\n object = new CsdlOnDelete(fieldValues[0]);\n break;\n default:\n throw new Error('Unknwon tag:' + tag);\n }\n }\n\n return object;\n }\n\n protected getFieldValues(\n fields: Field[],\n attributes: NamedNodeMap,\n element: Element\n ): any[] {\n const fieldValues: any[] = [];\n\n for (const field of fields) {\n if (field.fieldType === FieldType.TAG) {\n fieldValues.push(this.getFieldValueByTag(field, element));\n } else if (field.fieldType === FieldType.ATTRIBUTE) {\n fieldValues.push(this.getFieldValueByAttribute(field, attributes));\n } else {\n throw new Error('Unknown field type: ' + field.fieldType);\n }\n }\n\n return fieldValues;\n }\n\n protected getFieldValueByAttribute(\n field: Field,\n attributes: NamedNodeMap\n ): any {\n switch (field.name) {\n case ODataMetadata.ATTRIBUTE_VERSION:\n case ODataMetadata.ATTRIBUTE_URI:\n case ODataMetadata.ATTRIBUTE_NAMESPACE:\n case ODataMetadata.ATTRIBUTE_ALIAS:\n case ODataMetadata.ATTRIBUTE_TERM_NAMESPACE:\n case ODataMetadata.ATTRIBUTE_TERM:\n case ODataMetadata.ATTRIBUTE_QUALIFIER:\n case ODataMetadata.ATTRIBUTE_TARGET_NAMESPACE:\n case ODataMetadata.ATTRIBUTE_NAME:\n case ODataMetadata.ATTRIBUTE_TYPE:\n case ODataMetadata.ATTRIBUTE_SRID:\n case ODataMetadata.ATTRIBUTE_DEFAULT_VALUE:\n case ODataMetadata.ATTRIBUTE_PARTNER:\n case ODataMetadata.ATTRIBUTE_PROPERTY:\n case ODataMetadata.ATTRIBUTE_REFERENCED_PROPERTY:\n case ODataMetadata.ATTRIBUTE_BASE_TYPE:\n case ODataMetadata.ATTRIBUTE_ENTITY_SET_PATH:\n case ODataMetadata.ATTRIBUTE_ENTITY_TYPE:\n case ODataMetadata.ATTRIBUTE_PATH:\n case ODataMetadata.ATTRIBUTE_TARGET:\n case ODataMetadata.ATTRIBUTE_FUNCTION:\n case ODataMetadata.ATTRIBUTE_ACTION:\n case ODataMetadata.ATTRIBUTE_ENTITY_SET:\n case ODataMetadata.ATTRIBUTE_UNDERLYING_TYPE:\n case ODataMetadata.ATTRIBUTE_EXTENDS:\n case ODataMetadata.ATTRIBUTE_BASE_TERM:\n case ODataMetadata.ATTRIBUTE_APPLIES_TO:\n return this.getAttributeValue(attributes, field.name);\n case ODataMetadata.ATTRIBUTE_NULLABLE:\n case ODataMetadata.ATTRIBUTE_UNICODE:\n case ODataMetadata.ATTRIBUTE_OPEN_TYPE:\n case ODataMetadata.ATTRIBUTE_HAS_STREAM:\n case ODataMetadata.ATTRIBUTE_IS_BOUND:\n case ODataMetadata.ATTRIBUTE_IS_COMPOSABLE:\n case ODataMetadata.ATTRIBUTE_CONTAINS_TARGET:\n case ODataMetadata.ATTRIBUTE_INCLUDE_IN_SERVICE_DOCUMENT:\n case ODataMetadata.ATTRIBUTE_ABSTRACT:\n case ODataMetadata.ATTRIBUTE_IS_FLAGS:\n return this.propertyValueToBoolean(\n this.getAttributeValue(attributes, field.name)\n );\n case ODataMetadata.ATTRIBUTE_VALUE:\n case ODataMetadata.ATTRIBUTE_MAX_LENGTH:\n case ODataMetadata.ATTRIBUTE_PRECISION:\n case ODataMetadata.ATTRIBUTE_SCALE:\n return this.propertyValueToNumber(\n this.getAttributeValue(attributes, field.name)\n );\n default:\n throw new Error('Unknwon attribute:' + field.name);\n }\n }\n\n protected getFieldValueByTag(field: Field, element: Element): any[] {\n switch (field.name) {\n case ODataMetadata.TAG_INCLUDE:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAMESPACE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_ALIAS, FieldType.ATTRIBUTE),\n ]);\n case ODataMetadata.TAG_INCLUDE_ANNOTATIONS:\n return this.getObjects(element, field.name, [\n new Field(\n ODataMetadata.ATTRIBUTE_TERM_NAMESPACE,\n FieldType.ATTRIBUTE\n ),\n new Field(ODataMetadata.ATTRIBUTE_QUALIFIER, FieldType.ATTRIBUTE),\n new Field(\n ODataMetadata.ATTRIBUTE_TARGET_NAMESPACE,\n FieldType.ATTRIBUTE\n ),\n ]);\n case ODataMetadata.TAG_TERM:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_TYPE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_BASE_TERM, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_DEFAULT_VALUE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_APPLIES_TO, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_NULLABLE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_MAX_LENGTH, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_PRECISION, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_SCALE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_SRID, FieldType.ATTRIBUTE),\n ]);\n case ODataMetadata.TAG_ANNOTATIONS:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_TARGET, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.TAG_ANNOTATION, FieldType.TAG),\n new Field(ODataMetadata.ATTRIBUTE_QUALIFIER, FieldType.ATTRIBUTE),\n ]);\n case ODataMetadata.TAG_ANNOTATION:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_TERM, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_QUALIFIER, FieldType.ATTRIBUTE),\n ]);\n case ODataMetadata.TAG_ENUM_TYPE:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.TAG_MEMBER, FieldType.TAG),\n new Field(\n ODataMetadata.ATTRIBUTE_UNDERLYING_TYPE,\n FieldType.ATTRIBUTE\n ),\n new Field(ODataMetadata.ATTRIBUTE_IS_FLAGS, FieldType.ATTRIBUTE),\n ]);\n case ODataMetadata.TAG_COMPLEX_TYPE:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.TAG_PROPERTY, FieldType.TAG),\n new Field(ODataMetadata.TAG_NAVIGATION_PROPERTY, FieldType.TAG),\n new Field(ODataMetadata.ATTRIBUTE_BASE_TYPE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_OPEN_TYPE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_ABSTRACT, FieldType.ATTRIBUTE),\n ]);\n case ODataMetadata.TAG_ENTITY_TYPE:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.TAG_KEY, FieldType.TAG),\n new Field(ODataMetadata.TAG_PROPERTY, FieldType.TAG),\n new Field(ODataMetadata.TAG_NAVIGATION_PROPERTY, FieldType.TAG),\n new Field(ODataMetadata.ATTRIBUTE_BASE_TYPE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_OPEN_TYPE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_HAS_STREAM, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_ABSTRACT, FieldType.ATTRIBUTE),\n ]);\n case ODataMetadata.TAG_FUNCTION:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.TAG_RETURN_TYPE, FieldType.TAG),\n new Field(ODataMetadata.ATTRIBUTE_IS_BOUND, FieldType.ATTRIBUTE),\n new Field(\n ODataMetadata.ATTRIBUTE_ENTITY_SET_PATH,\n FieldType.ATTRIBUTE\n ),\n new Field(ODataMetadata.ATTRIBUTE_IS_COMPOSABLE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.TAG_PARAMETER, FieldType.TAG),\n ]);\n case ODataMetadata.TAG_MEMBER:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_VALUE, FieldType.ATTRIBUTE),\n ]);\n case ODataMetadata.TAG_PROPERTY:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_TYPE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_NULLABLE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_MAX_LENGTH, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_PRECISION, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_SCALE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_UNICODE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_SRID, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_DEFAULT_VALUE, FieldType.ATTRIBUTE),\n ]);\n case ODataMetadata.TAG_KEY:\n return this.getObject(element, field.name, [\n new Field(ODataMetadata.TAG_PROPERTY_REF, FieldType.TAG),\n ]);\n case ODataMetadata.TAG_PROPERTY_REF:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_ALIAS, FieldType.ATTRIBUTE),\n ]);\n case ODataMetadata.TAG_NAVIGATION_PROPERTY:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_TYPE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_NULLABLE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_PARTNER, FieldType.ATTRIBUTE),\n new Field(\n ODataMetadata.ATTRIBUTE_CONTAINS_TARGET,\n FieldType.ATTRIBUTE\n ),\n new Field(ODataMetadata.TAG_REFERENTIAL_CONSTRAINT, FieldType.TAG),\n new Field(ODataMetadata.TAG_ON_DELETE, FieldType.TAG),\n ]);\n case ODataMetadata.TAG_REFERENTIAL_CONSTRAINT:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_PROPERTY, FieldType.ATTRIBUTE),\n new Field(\n ODataMetadata.ATTRIBUTE_REFERENCED_PROPERTY,\n FieldType.ATTRIBUTE\n ),\n ]);\n case ODataMetadata.TAG_ON_DELETE:\n return this.getObject(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_ACTION, FieldType.ATTRIBUTE),\n ]);\n case ODataMetadata.TAG_PARAMETER:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_TYPE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_NULLABLE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_MAX_LENGTH, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_PRECISION, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_SCALE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_SRID, FieldType.ATTRIBUTE),\n ]);\n case ODataMetadata.TAG_RETURN_TYPE:\n return this.getObject(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_TYPE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_NULLABLE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_MAX_LENGTH, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_PRECISION, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_SCALE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_SRID, FieldType.ATTRIBUTE),\n ]);\n case ODataMetadata.TAG_ACTION:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.TAG_RETURN_TYPE, FieldType.TAG),\n new Field(ODataMetadata.ATTRIBUTE_IS_BOUND, FieldType.ATTRIBUTE),\n new Field(\n ODataMetadata.ATTRIBUTE_ENTITY_SET_PATH,\n FieldType.ATTRIBUTE\n ),\n new Field(ODataMetadata.TAG_PARAMETER, FieldType.TAG),\n ]);\n case ODataMetadata.TAG_ENTITY_CONTAINER:\n return this.getObject(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_EXTENDS, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.TAG_ENTITY_SET, FieldType.TAG),\n new Field(ODataMetadata.TAG_SINGLETON, FieldType.TAG),\n new Field(ODataMetadata.TAG_FUNCTION_IMPORT, FieldType.TAG),\n new Field(ODataMetadata.TAG_ACTION_IMPORT, FieldType.TAG),\n ]);\n case ODataMetadata.TAG_ENTITY_SET:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_ENTITY_TYPE, FieldType.ATTRIBUTE),\n new Field(\n ODataMetadata.TAG_NAVIGATION_PROPERTY_BINDING,\n FieldType.TAG\n ),\n new Field(\n ODataMetadata.ATTRIBUTE_INCLUDE_IN_SERVICE_DOCUMENT,\n FieldType.ATTRIBUTE\n ),\n ]);\n case ODataMetadata.TAG_SINGLETON:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_TYPE, FieldType.ATTRIBUTE),\n new Field(\n ODataMetadata.TAG_NAVIGATION_PROPERTY_BINDING,\n FieldType.TAG\n ),\n ]);\n case ODataMetadata.TAG_FUNCTION_IMPORT:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_FUNCTION, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_ENTITY_SET, FieldType.ATTRIBUTE),\n new Field(\n ODataMetadata.ATTRIBUTE_INCLUDE_IN_SERVICE_DOCUMENT,\n FieldType.ATTRIBUTE\n ),\n ]);\n case ODataMetadata.TAG_ACTION_IMPORT:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_ACTION, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_ENTITY_SET, FieldType.ATTRIBUTE),\n ]);\n case ODataMetadata.TAG_NAVIGATION_PROPERTY_BINDING:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_PATH, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_TARGET, FieldType.ATTRIBUTE),\n ]);\n case ODataMetadata.TAG_TYPE_DEFINITION:\n return this.getObjects(element, field.name, [\n new Field(ODataMetadata.ATTRIBUTE_NAME, FieldType.ATTRIBUTE),\n new Field(\n ODataMetadata.ATTRIBUTE_UNDERLYING_TYPE,\n FieldType.ATTRIBUTE\n ),\n new Field(ODataMetadata.ATTRIBUTE_MAX_LENGTH, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_PRECISION, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_SCALE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_UNICODE, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.ATTRIBUTE_SRID, FieldType.ATTRIBUTE),\n new Field(ODataMetadata.TAG_ANNOTATION, FieldType.TAG),\n ]);\n default:\n throw new Error('Unknwon tag:' + field.name);\n }\n }\n\n protected getAttributeValue(attributes: NamedNodeMap, attributeName: string) {\n const attribute: Attr | null = attributes.getNamedItem(attributeName);\n return attribute !== null && attribute.nodeValue\n ? attribute.nodeValue\n : undefined;\n }\n\n protected propertyValueToNumber(attributeValue?: string) {\n return attributeValue !== undefined ? Number(attributeValue) : undefined;\n }\n\n protected propertyValueToBoolean(attributeValue?: string) {\n return attributeValue !== undefined ? attributeValue === 'true' : false;\n }\n}\n","import {\n HttpHeaders,\n HttpErrorResponse,\n HttpResponse,\n} from '@angular/common/http';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { finalize, map, switchMap } from 'rxjs/operators';\n\nimport { ODataPathSegments } from '../path-segments';\nimport { ODataResource } from '../resource';\nimport {\n BOUNDARY_PREFIX_SUFFIX,\n APPLICATION_JSON,\n HTTP11,\n CONTENT_TYPE,\n NEWLINE,\n BATCH_PREFIX,\n $BATCH,\n MULTIPART_MIXED_BOUNDARY,\n VERSION_4_0,\n MULTIPART_MIXED,\n ODATA_VERSION,\n ACCEPT,\n CONTENT_TRANSFER_ENCODING,\n APPLICATION_HTTP,\n CONTENT_ID,\n BINARY,\n CHANGESET_PREFIX,\n NEWLINE_REGEXP,\n} from '../../constants';\nimport { ODataRequest } from '../request';\nimport { ODataApi } from '../../api';\nimport { ODataResponse } from '../responses';\nimport { HttpOptions } from './options';\nimport { Http } from '../../utils/http';\nimport { PathSegmentNames } from '../../types';\n\nconst XSSI_PREFIX = /^\\)\\]\\}',?\\n/;\n\n// From https://github.com/adamhalasz/uniqid\nvar glast: number;\nfunction now() {\n let time = Date.now();\n let last = glast || time;\n return (glast = time > last ? time : last + 1);\n}\nfunction uniqid(prefix?: string, suffix?: string): string {\n return (prefix ? prefix : '') + now().toString(36) + (suffix ? suffix : '');\n}\n\nfunction getHeaderValue(header: string): string {\n let res: string = header.split(';')[0].trim();\n res = res.split(':')[1].trim();\n return res;\n}\n\nfunction getBoundaryDelimiter(contentType: string): string {\n const contentTypeParts: string[] = contentType.split(';');\n if (contentTypeParts.length === 2) {\n const boundary: string = contentType.split(';')[1].trim();\n const boundaryDelimiter: string =\n BOUNDARY_PREFIX_SUFFIX + boundary.split('=')[1];\n return boundaryDelimiter;\n } else {\n return '';\n }\n}\n\nfunction getBoundaryEnd(boundaryDelimiter: string): string {\n if (!boundaryDelimiter.length) {\n return '';\n }\n const boundaryEnd: string = boundaryDelimiter + BOUNDARY_PREFIX_SUFFIX;\n return boundaryEnd;\n}\n\nexport class ODataBatchRequest<T> extends Subject<ODataResponse<T>> {\n constructor(public request: ODataRequest<any>) {\n super();\n }\n\n toString() {\n //TODO: Relative or Absolute url ?\n let res = [\n `${this.request.method} ${this.request.pathWithParams} ${HTTP11}`,\n ];\n if (\n this.request.method === 'POST' ||\n this.request.method === 'PATCH' ||\n this.request.method === 'PUT'\n ) {\n res.push(`${CONTENT_TYPE}: ${APPLICATION_JSON}`);\n }\n\n if (this.request.headers instanceof HttpHeaders) {\n let headers = this.request.headers;\n res = [\n ...res,\n ...headers\n .keys()\n .map((key) => `${key}: ${(headers.getAll(key) || []).join(',')}`),\n ];\n }\n\n return res.join(NEWLINE);\n }\n\n onLoad(content: string[], status: { code: number; text: string }) {\n let headers: HttpHeaders = new HttpHeaders();\n var index = 1;\n for (; index < content.length; index++) {\n const batchBodyLine: string = content[index];\n\n if (batchBodyLine === '') {\n break;\n }\n\n const batchBodyLineParts: string[] = batchBodyLine.split(': ');\n headers = headers.append(\n batchBodyLineParts[0].trim(),\n batchBodyLineParts[1].trim()\n );\n }\n\n let body: string | { error: any; text: string } = '';\n for (; index < content.length; index++) {\n body += content[index];\n }\n\n if (status.code === 0) {\n status.code = !!body ? 200 : 0;\n }\n\n let ok = status.code >= 200 && status.code < 300;\n if (this.request.responseType === 'json' && typeof body === 'string') {\n const originalBody = body;\n body = body.replace(XSSI_PREFIX, '');\n try {\n body = body !== '' ? JSON.parse(body) : null;\n } catch (error) {\n body = originalBody;\n\n if (ok) {\n ok = false;\n body = { error, text: body };\n }\n }\n }\n\n if (ok) {\n let res = new HttpResponse<any>({\n body,\n headers,\n status: status.code,\n statusText: status.text,\n url: this.request.urlWithParams,\n });\n this.next(ODataResponse.fromHttpResponse(this.request, res));\n this.complete();\n } else {\n // An unsuccessful request is delivered on the error channel.\n this.error(\n new HttpErrorResponse({\n // The error in this case is the response body (error from the server).\n error: body,\n headers,\n status: status.code,\n statusText: status.text,\n url: this.request.urlWithParams,\n })\n );\n }\n }\n\n onError(content: string[], status: { code: number; text: string }) {\n const res = new HttpErrorResponse({\n error: content.join(NEWLINE),\n status: status.code || 0,\n statusText: status.text || 'Unknown Error',\n url: this.request.urlWithParams || undefined,\n });\n this.error(res);\n }\n}\n\n/**\n * OData Batch Resource\n * https://www.odata.org/getting-started/advanced-tutorial/#batch\n */\nexport class ODataBatchResource extends ODataResource<any> {\n // VARIABLES\n private requests: ODataBatchRequest<any>[] = [];\n\n clone() {\n //TODO: Clone\n return new ODataBatchResource(this.api, this.cloneSegments());\n }\n\n schema() {\n return undefined;\n }\n\n //#region Factory\n static factory(api: ODataApi) {\n let segments = new ODataPathSegments();\n segments.add(PathSegmentNames.batch, $BATCH);\n return new ODataBatchResource(api, segments);\n }\n //#endregion\n\n post(\n func: (batch: ODataBatchResource) => void,\n options?: HttpOptions\n ): Observable<ODataResponse<any>> {\n const current = this.api.request;\n this.api.request = (req: ODataRequest<any>): Observable<any> => {\n if (req.api !== this.api)\n throw new Error('Batch Request are for the same api.');\n if (req.observe === 'events')\n throw new Error(\"Batch Request does not allows observe == 'events'.\");\n this.requests.push(new ODataBatchRequest<any>(req));\n return this.requests[this.requests.length - 1];\n };\n\n func(this);\n\n const sub$ = new BehaviorSubject<{\n bound: string;\n requests: ODataBatchRequest<any>[];\n }>({\n bound: uniqid(BATCH_PREFIX),\n requests: this.requests,\n });\n\n return sub$.pipe(\n switchMap(({ bound, requests }) => {\n const headers = Http.mergeHttpHeaders(\n (options && options.headers) || {},\n {\n [ODATA_VERSION]: VERSION_4_0,\n [CONTENT_TYPE]: MULTIPART_MIXED_BOUNDARY + bound,\n [ACCEPT]: MULTIPART_MIXED,\n }\n );\n const request = new ODataRequest({\n method: 'POST',\n body: ODataBatchResource.buildBody(bound, requests),\n api: this.api,\n resource: this,\n observe: 'response',\n responseType: 'text',\n headers: headers,\n params: options ? options.params : undefined,\n withCredentials: options ? options.withCredentials : undefined,\n });\n return current\n .call(this.api, request)\n .pipe(map((response) => ({ requests, response })));\n }),\n map(({ requests, response }) => {\n this.requests = [];\n ODataBatchResource.handleResponse(requests, response);\n if (this.requests.length > 0) {\n sub$.next({ bound: uniqid(BATCH_PREFIX), requests: this.requests });\n } else sub$.complete();\n return response;\n }),\n finalize(() => {\n this.api.request = current;\n })\n );\n }\n\n body() {\n return ODataBatchResource.buildBody(uniqid(BATCH_PREFIX), this.requests);\n }\n\n static buildBody(\n batchBoundary: string,\n requests: ODataBatchRequest<any>[]\n ): string {\n let res = [];\n let changesetBoundary: string | null = null;\n let changesetId = 1;\n\n for (const batch of requests) {\n // if method is GET and there is a changeset boundary open then close it\n if (batch.request.method === 'GET' && changesetBoundary !== null) {\n res.push(\n `${BOUNDARY_PREFIX_SUFFIX}${changesetBoundary}${BOUNDARY_PREFIX_SUFFIX}`\n );\n changesetBoundary = null;\n }\n\n // if there is no changeset boundary open then open a batch boundary\n if (changesetBoundary === null) {\n res.push(`${BOUNDARY_PREFIX_SUFFIX}${batchBoundary}`);\n }\n\n // if method is not GET and there is no changeset boundary open then open a changeset boundary\n if (batch.request.method !== 'GET') {\n if (changesetBoundary === null) {\n changesetBoundary = uniqid(CHANGESET_PREFIX);\n res.push(\n `${CONTENT_TYPE}: ${MULTIPART_MIXED_BOUNDARY}${changesetBoundary}`\n );\n res.push(NEWLINE);\n }\n res.push(`${BOUNDARY_PREFIX_SUFFIX}${changesetBoundary}`);\n }\n\n res.push(`${CONTENT_TYPE}: ${APPLICATION_HTTP}`);\n res.push(`${CONTENT_TRANSFER_ENCODING}: ${BINARY}`);\n\n if (batch.request.method !== 'GET') {\n res.push(`${CONTENT_ID}: ${changesetId++}`);\n }\n\n res.push(NEWLINE);\n res.push(`${batch}`);\n\n if (batch.request.method === 'GET' || batch.request.method === 'DELETE') {\n res.push(NEWLINE);\n } else {\n res.push(`${NEWLINE}${JSON.stringify(batch.request.body)}`);\n }\n }\n\n if (res.length) {\n if (changesetBoundary !== null) {\n res.push(\n `${BOUNDARY_PREFIX_SUFFIX}${changesetBoundary}${BOUNDARY_PREFIX_SUFFIX}`\n );\n changesetBoundary = null;\n }\n res.push(\n `${BOUNDARY_PREFIX_SUFFIX}${batchBoundary}${BOUNDARY_PREFIX_SUFFIX}`\n );\n }\n return res.join(NEWLINE);\n }\n\n static handleResponse(\n requests: ODataBatchRequest<any>[],\n response: ODataResponse<any>\n ) {\n let chunks: string[][] = [];\n const contentType: string = response.headers.get(CONTENT_TYPE) || '';\n const batchBoundary: string = getBoundaryDelimiter(contentType);\n const endLine: string = getBoundaryEnd(batchBoundary);\n\n const lines: string[] = response.body.split(NEWLINE_REGEXP);\n\n let changesetResponses: string[][] | null = null;\n let contentId: number | null = null;\n let changesetBoundary: string | null = null;\n let changesetEndLine: string | null = null;\n let startIndex: number | null = null;\n for (let index = 0; index < lines.length; index++) {\n const line = lines[index];\n\n if (line.startsWith(CONTENT_TYPE)) {\n const contentTypeValue: string = getHeaderValue(line);\n if (contentTypeValue === MULTIPART_MIXED) {\n changesetResponses = [];\n contentId = null;\n changesetBoundary = getBoundaryDelimiter(line);\n changesetEndLine = getBoundaryEnd(changesetBoundary);\n startIndex = null;\n }\n continue;\n } else if (changesetResponses !== null && line.startsWith(CONTENT_ID)) {\n contentId = Number(getHeaderValue(line));\n } else if (line.startsWith(HTTP11)) {\n startIndex = index;\n } else if (\n line === batchBoundary ||\n line === changesetBoundary ||\n line === endLine ||\n line === changesetEndLine\n ) {\n if (!startIndex) {\n continue;\n }\n const chunk = lines.slice(startIndex, index);\n if (changesetResponses !== null && contentId !== null) {\n changesetResponses[contentId] = chunk;\n } else {\n chunks.push(chunk);\n }\n\n if (line === batchBoundary || line === changesetBoundary) {\n startIndex = index + 1;\n } else if (line === endLine || line === changesetEndLine) {\n if (changesetResponses !== null) {\n for (const response of changesetResponses) {\n if (response) {\n chunks.push(response);\n }\n }\n }\n changesetResponses = null;\n changesetBoundary = null;\n changesetEndLine = null;\n startIndex = null;\n }\n }\n }\n chunks.forEach((chunk, index) => {\n const req = requests[index];\n const statusParts = chunk[0].split(' ');\n req.onLoad(chunk.slice(1), {\n code: Number(statusParts[1]),\n text: statusParts.slice(2).join(' '),\n });\n });\n }\n}\n","import { Observable } from 'rxjs';\n\nimport { ODataPathSegments } from '../path-segments';\nimport { ODataQueryOptions } from '../query-options';\nimport { ODataResource } from '../resource';\nimport { HttpOptions } from './options';\nimport { $COUNT } from '../../constants';\nimport { ODataApi } from '../../api';\nimport { Filter } from '../builder';\nimport { PathSegmentNames, QueryOptionNames } from '../../types';\n\nexport class ODataCountResource extends ODataResource<any> {\n //#region Factory\n static factory(\n api: ODataApi,\n segments: ODataPathSegments,\n query: ODataQueryOptions\n ) {\n segments.add(PathSegmentNames.count, $COUNT).type('Edm.Int32');\n query.keep(QueryOptionNames.filter, QueryOptionNames.search);\n return new ODataCountResource(api, segments, query);\n }\n //#endregion\n\n clone() {\n return new ODataCountResource(\n this.api,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n schema() {\n return undefined;\n }\n\n get segment() {\n const segments = this.pathSegments;\n return {\n entitySet() {\n return segments.get(PathSegmentNames.entitySet);\n },\n navigationProperty() {\n return segments.get(PathSegmentNames.navigationProperty);\n },\n };\n }\n\n get query() {\n const options = this.queryOptions;\n return {\n search(opts?: string) {\n return options.option<string>(QueryOptionNames.search, opts);\n },\n filter(opts?: Filter) {\n return options.option<Filter>(QueryOptionNames.filter, opts);\n },\n };\n }\n\n //#region Requests\n get(options?: HttpOptions): Observable<number> {\n return super.get({ responseType: 'value', ...options });\n }\n //#endregion\n\n //#region Shortcuts\n fetch(options?: HttpOptions): Observable<number> {\n return this.get(options);\n }\n //#endregion\n}\n","import { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { ODataPathSegments } from '../path-segments';\nimport { ODataQueryOptions } from '../query-options';\nimport {\n HttpEntityOptions,\n HttpEntitiesOptions,\n HttpPropertyOptions,\n HttpOptions,\n HttpNoneOptions,\n} from './options';\n\nimport {\n ODataEntity,\n ODataEntities,\n ODataProperty,\n ODataEntityAnnotations,\n ODataEntitiesAnnotations,\n} from '../responses';\nimport { ODataApi } from '../../api';\nimport { ODataCollection } from '../../models/collection';\nimport { ODataModel } from '../../models/model';\nimport { Expand, Filter, OrderBy, Select, Transform } from '../builder';\nimport { ODataEntitySetResource } from './entity-set';\nimport { ODataEntityResource } from './entity';\nimport { ODataStructuredType } from '../../schema';\nimport { ODataResource } from '../resource';\nimport { alias as functionAlias } from '../builder';\nimport { PathSegmentNames } from '../../types';\n\nexport class ODataFunctionResource<P, R> extends ODataResource<R> {\n //#region Factory\n static factory<P, R>(\n api: ODataApi,\n path: string,\n type: string | undefined,\n segments: ODataPathSegments,\n options: ODataQueryOptions\n ) {\n const segment = segments.add(PathSegmentNames.function, path);\n if (type) segment.type(type);\n options.clear();\n return new ODataFunctionResource<P, R>(api, segments, options);\n }\n //#endregion\n\n returnType() {\n return this.schema()?.parser.return?.type;\n }\n clone() {\n return new ODataFunctionResource<P, R>(\n this.api,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n schema() {\n //TODO: Binding Type\n let type = this.type();\n return type !== undefined\n ? this.api.findCallableForType<R>(type)\n : undefined;\n }\n asModel<M extends ODataModel<R>>(\n entity: Partial<R> | { [name: string]: any },\n { annots, reset }: { annots?: ODataEntityAnnotations; reset?: boolean } = {}\n ): M {\n let resource: ODataEntityResource<R> | undefined;\n const type = annots?.type || this.returnType();\n const Model = this.api.modelForType(type);\n let path = annots?.entitySet;\n if (path !== undefined) {\n resource = this.api.entitySet<R>(path).entity(entity as Partial<R>);\n resource.query.apply(this.queryOptions.toQueryArguments());\n }\n return new Model(entity, { resource, annots, reset }) as M;\n }\n\n asCollection<M extends ODataModel<R>, C extends ODataCollection<R, M>>(\n entities: Partial<R>[] | { [name: string]: any }[],\n {\n annots,\n reset,\n }: { annots?: ODataEntitiesAnnotations; reset?: boolean } = {}\n ): C {\n let resource: ODataEntitySetResource<R> | undefined;\n const type = annots?.type || this.returnType();\n const Collection = this.api.collectionForType(type);\n let path = annots?.entitySet;\n if (path !== undefined) {\n resource = this.api.entitySet<R>(path);\n resource.query.apply(this.queryOptions.toQueryArguments());\n }\n return new Collection(entities, { resource, annots, reset }) as C;\n }\n\n //#region Inmutable Resource\n parameters(params: P | null, { alias }: { alias?: boolean } = {}) {\n const segments = this.cloneSegments();\n const segment = segments.get(PathSegmentNames.function);\n let parameters = params !== null ? this.encode(params) : null;\n if (alias && parameters !== null) {\n parameters = Object.entries(parameters).reduce((acc, [name, param]) => {\n return Object.assign(acc, { [name]: functionAlias(param, name) });\n }, {});\n }\n segment.parameters(parameters);\n return new ODataFunctionResource<P, R>(\n this.api,\n segments,\n this.cloneQuery()\n );\n }\n\n select(opts: Select<R>) {\n const clone = this.clone();\n clone.query.select(opts);\n return clone;\n }\n\n expand(opts: Expand<R>) {\n const clone = this.clone();\n clone.query.expand(opts);\n return clone;\n }\n\n transform(opts: Transform<R>) {\n const clone = this.clone();\n clone.query.transform(opts);\n return clone;\n }\n\n search(opts: string) {\n const clone = this.clone();\n clone.query.search(opts);\n return clone;\n }\n\n filter(opts: Filter) {\n const clone = this.clone();\n clone.query.filter(opts);\n return clone;\n }\n\n orderBy(opts: OrderBy<R>) {\n const clone = this.clone();\n clone.query.orderBy(opts);\n return clone;\n }\n\n format(opts: string) {\n const clone = this.clone();\n clone.query.format(opts);\n return clone;\n }\n\n top(opts: number) {\n const clone = this.clone();\n clone.query.top(opts);\n return clone;\n }\n\n skip(opts: number) {\n const clone = this.clone();\n clone.query.skip(opts);\n return clone;\n }\n\n skiptoken(opts: string) {\n const clone = this.clone();\n clone.query.skiptoken(opts);\n return clone;\n }\n //#endregion\n\n //#region Mutable Resource\n get segment() {\n const segments = this.pathSegments;\n return {\n entitySet() {\n return segments.get(PathSegmentNames.entitySet);\n },\n singleton() {\n return segments.get(PathSegmentNames.singleton);\n },\n function() {\n return segments.get(PathSegmentNames.function);\n },\n };\n }\n\n /**\n * Handle query options of the function\n * @returns Handler for mutate the query of the function\n */\n get query() {\n return this.entitiesQueryHandler();\n }\n //#endregion\n\n //#region Requests\n get(options?: HttpEntityOptions): Observable<ODataEntity<R>>;\n get(options?: HttpEntitiesOptions): Observable<ODataEntities<R>>;\n get(options?: HttpPropertyOptions): Observable<ODataProperty<R>>;\n get(\n options?: HttpEntityOptions & HttpEntitiesOptions & HttpPropertyOptions\n ): Observable<any> {\n return super.get(options);\n }\n //#endregion\n\n //#region Shortcuts\n call(\n params: P | null,\n options?: { alias?: boolean } & HttpEntityOptions\n ): Observable<ODataEntity<R>>;\n call(\n params: P | null,\n options?: { alias?: boolean } & HttpEntitiesOptions\n ): Observable<ODataEntities<R>>;\n call(\n params: P | null,\n options?: { alias?: boolean } & HttpPropertyOptions\n ): Observable<ODataProperty<R>>;\n call(\n params: P | null,\n options?: { alias?: boolean } & HttpNoneOptions\n ): Observable<null>;\n call(\n params: P | null,\n {\n alias,\n ...options\n }: { alias?: boolean } & HttpEntityOptions &\n HttpEntitiesOptions &\n HttpPropertyOptions &\n HttpNoneOptions = {}\n ): Observable<any> {\n return this.parameters(params, { alias }).get(options);\n }\n\n callProperty(\n params: P | null,\n { alias, ...options }: { alias?: boolean } & HttpOptions = {}\n ): Observable<R | null> {\n return this.call(params, {\n responseType: 'property',\n alias,\n ...options,\n }).pipe(map(({ property }) => property));\n }\n\n callEntity(\n params: P | null,\n { alias, ...options }: { alias?: boolean } & HttpOptions = {}\n ): Observable<R | null> {\n return this.call(params, {\n responseType: 'entity',\n alias,\n ...options,\n }).pipe(map(({ entity }) => entity));\n }\n\n callModel(\n params: P | null,\n { alias, ...options }: { alias?: boolean } & HttpOptions = {}\n ): Observable<ODataModel<R> | null> {\n return this.call(params, {\n responseType: 'entity',\n alias,\n ...options,\n }).pipe(\n map(({ entity, annots }) =>\n entity ? this.asModel(entity, { annots, reset: true }) : null\n )\n );\n }\n\n callEntities(\n params: P | null,\n { alias, ...options }: { alias?: boolean } & HttpOptions = {}\n ): Observable<R[] | null> {\n return this.call(params, {\n responseType: 'entities',\n alias,\n ...options,\n }).pipe(map(({ entities }) => entities));\n }\n\n callCollection(\n params: P | null,\n { alias, ...options }: { alias?: boolean } & HttpOptions = {}\n ): Observable<ODataCollection<R, ODataModel<R>> | null> {\n return this.call(params, {\n responseType: 'entities',\n alias,\n ...options,\n }).pipe(\n map(({ entities, annots }) =>\n entities ? this.asCollection(entities, { annots, reset: true }) : null\n )\n );\n }\n //#endregion\n}\n","import { Observable } from 'rxjs';\n\nimport { ODataResource } from '../resource';\nimport { ODataPathSegments } from '../path-segments';\nimport { ODataQueryOptions } from '../query-options';\nimport { ODataEntityResource } from './entity';\nimport { HttpOptions } from './options';\nimport { $REF, $ID, ODATA_ID } from '../../constants';\nimport { ODataApi } from '../../api';\nimport { PathSegmentNames } from '../../types';\n\nexport class ODataReferenceResource extends ODataResource<any> {\n //#region Factory\n static factory<P>(\n api: ODataApi,\n segments: ODataPathSegments,\n options: ODataQueryOptions\n ) {\n segments.add(PathSegmentNames.reference, $REF);\n options.clear();\n return new ODataReferenceResource(api, segments, options);\n }\n //#endregion\n\n clone() {\n return new ODataReferenceResource(\n this.api,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n schema() {\n return undefined;\n }\n\n //#region Requests\n post(\n target: ODataEntityResource<any>,\n options?: HttpOptions\n ): Observable<any> {\n return super.post({ [ODATA_ID]: target.endpointUrl(false) }, options);\n }\n\n put(\n target: ODataEntityResource<any>,\n options?: HttpOptions & { etag?: string }\n ): Observable<any> {\n return super.post({ [ODATA_ID]: target.endpointUrl(false) }, options);\n }\n\n delete({\n etag,\n target,\n ...options\n }: {\n etag?: string;\n target?: ODataEntityResource<any>;\n } & HttpOptions = {}): Observable<any> {\n if (target) {\n options.params = { [$ID]: target.endpointUrl(false) };\n }\n return super.delete({ etag, ...options });\n }\n //#endregion\n\n //#region Shortcuts for collections\n add(\n target: ODataEntityResource<any>,\n options?: HttpOptions\n ): Observable<any> {\n return this.post(target, options);\n }\n\n remove(\n target?: ODataEntityResource<any>,\n options?: HttpOptions\n ): Observable<any> {\n return this.delete({ target, ...options });\n }\n //#region\n\n //#region Shortcuts for single\n set(\n target: ODataEntityResource<any>,\n options?: HttpOptions & { etag?: string }\n ): Observable<any> {\n return this.put(target, options);\n }\n\n unset(options?: HttpOptions & { etag?: string }): Observable<any> {\n return this.delete(options);\n }\n //#region\n}\n","import { Observable } from 'rxjs';\n\nimport { ODataResource } from '../resource';\nimport { ODataPathSegments } from '../path-segments';\nimport { ODataQueryOptions } from '../query-options';\nimport { HttpOptions } from './options';\nimport { $VALUE } from '../../constants';\nimport { ODataApi } from '../../api';\nimport { PathSegmentNames } from '../../types';\n\nexport class ODataValueResource<T> extends ODataResource<T> {\n //#region Factory\n static factory<V>(\n api: ODataApi,\n type: string | undefined,\n segments: ODataPathSegments,\n options: ODataQueryOptions\n ) {\n const segment = segments.add(PathSegmentNames.value, $VALUE);\n if (type) segment.type(type);\n options.clear();\n return new ODataValueResource<V>(api, segments, options);\n }\n //#endregion\n\n clone() {\n return new ODataValueResource<T>(\n this.api,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n schema() {\n return undefined;\n }\n\n //#region Requests\n get(options?: HttpOptions): Observable<T> {\n return super.get({ responseType: 'value', ...options });\n }\n //#endregion\n\n //#region Shortcuts\n fetch(options?: HttpOptions): Observable<T> {\n return this.get(options);\n }\n //#endregion\n}\n","import { EMPTY, Observable } from 'rxjs';\nimport { concatMap, expand, map, toArray } from 'rxjs/operators';\n\nimport { ODataValueResource } from './value';\n\nimport { EntityKey, ODataResource } from '../resource';\nimport { ODataQueryOptions } from '../query-options';\nimport { ODataPathSegments } from '../path-segments';\nimport {\n HttpPropertyOptions,\n HttpEntitiesOptions,\n HttpEntityOptions,\n HttpOptions,\n} from './options';\nimport {\n ODataProperty,\n ODataEntities,\n ODataEntity,\n ODataEntityAnnotations,\n ODataEntitiesAnnotations,\n} from '../responses';\nimport { ODataStructuredTypeParser } from '../../parsers/structured-type';\nimport { ODataModel, ODataCollection } from '../../models';\nimport { ODataApi } from '../../api';\nimport {\n Expand,\n Filter,\n isQueryCustomType,\n OrderBy,\n Select,\n Transform,\n} from '../builder';\n//import { ODataNavigationPropertyResource } from './navigation-property';\nimport { Objects, Types } from '../../utils';\nimport { PathSegmentNames } from '../../types';\n\nexport class ODataPropertyResource<T> extends ODataResource<T> {\n //#region Factory\n static factory<P>(\n api: ODataApi,\n path: string,\n type: string | undefined,\n segments: ODataPathSegments,\n options: ODataQueryOptions\n ) {\n const segment = segments.add(PathSegmentNames.property, path);\n if (type) segment.type(type);\n options.clear();\n return new ODataPropertyResource<P>(api, segments, options);\n }\n //#endregion\n\n clone() {\n return new ODataPropertyResource<T>(\n this.api,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n schema() {\n let type = this.type();\n return type !== undefined\n ? this.api.findStructuredTypeForType<T>(type)\n : undefined;\n }\n\n asModel<M extends ODataModel<T>>(\n entity: Partial<T> | { [name: string]: any },\n { annots, reset }: { annots?: ODataEntityAnnotations; reset?: boolean } = {}\n ): M {\n const type = annots?.type || this.type();\n const Model = this.api.modelForType(type);\n return new Model(entity, { resource: this, annots, reset }) as M;\n }\n\n asCollection<M extends ODataModel<T>, C extends ODataCollection<T, M>>(\n entities: Partial<T>[] | { [name: string]: any }[],\n {\n annots,\n reset,\n }: { annots?: ODataEntitiesAnnotations; reset?: boolean } = {}\n ): C {\n const type = annots?.type || this.type();\n const Collection = this.api.collectionForType(type);\n return new Collection(entities, { resource: this, annots, reset }) as C;\n }\n\n //#region Inmutable Resource\n key(value: any) {\n const property = this.clone();\n var key = this.resolveKey(value);\n if (key !== undefined) property.segment.property().key(key);\n return property;\n }\n\n keys(values: any[]) {\n const property = this.clone();\n const types = this.pathSegments.types({ key: true });\n const keys = values.map((value, index) =>\n ODataResource.resolveKey(\n value,\n this.api.findStructuredTypeForType<T>(types[index])\n )\n );\n property.segment.keys(keys);\n return property;\n }\n\n value() {\n return ODataValueResource.factory<T>(\n this.api,\n this.type(),\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n /*\n navigationProperty<N>(path: string) {\n let type = this.type();\n if (type !== undefined) {\n let parser = this.api.parserForType<N>(type);\n type =\n parser instanceof ODataStructuredTypeParser\n ? parser.typeFor(path)\n : undefined;\n }\n return ODataNavigationPropertyResource.factory<N>(\n this.api,\n path,\n type,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n */\n property<P>(path: string) {\n let type = this.type();\n if (type !== undefined) {\n let parser = this.api.parserForType<P>(type);\n type =\n parser instanceof ODataStructuredTypeParser\n ? parser.typeFor(path)\n : undefined;\n }\n return ODataPropertyResource.factory<P>(\n this.api,\n path,\n type,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n select(opts: Select<T>) {\n const clone = this.clone();\n clone.query.select(opts);\n return clone;\n }\n\n expand(opts: Expand<T>) {\n const clone = this.clone();\n clone.query.expand(opts);\n return clone;\n }\n\n transform(opts: Transform<T>) {\n const clone = this.clone();\n clone.query.transform(opts);\n return clone;\n }\n\n search(opts: string) {\n const clone = this.clone();\n clone.query.search(opts);\n return clone;\n }\n\n filter(opts: Filter) {\n const clone = this.clone();\n clone.query.filter(opts);\n return clone;\n }\n\n orderBy(opts: OrderBy<T>) {\n const clone = this.clone();\n clone.query.orderBy(opts);\n return clone;\n }\n\n format(opts: string) {\n const clone = this.clone();\n clone.query.format(opts);\n return clone;\n }\n\n top(opts: number) {\n const clone = this.clone();\n clone.query.top(opts);\n return clone;\n }\n\n skip(opts: number) {\n const clone = this.clone();\n clone.query.skip(opts);\n return clone;\n }\n\n skiptoken(opts: string) {\n const clone = this.clone();\n clone.query.skiptoken(opts);\n return clone;\n }\n //#endregion\n\n //#region Mutable Resource\n get segment() {\n const segments = this.pathSegments;\n return {\n entitySet() {\n return segments.get(PathSegmentNames.entitySet);\n },\n singleton() {\n return segments.get(PathSegmentNames.singleton);\n },\n property() {\n return segments.get(PathSegmentNames.property);\n },\n keys(values?: (EntityKey<any> | undefined)[]) {\n return segments.keys(values);\n },\n };\n }\n\n get query() {\n return this.entitiesQueryHandler();\n }\n //#endregion\n\n //#region Requests\n get(options: HttpEntityOptions): Observable<ODataEntity<T>>;\n get(options: HttpEntitiesOptions): Observable<ODataEntities<T>>;\n get(options: HttpPropertyOptions): Observable<ODataProperty<T>>;\n get(\n options: HttpEntityOptions & HttpEntitiesOptions & HttpPropertyOptions\n ): Observable<any> {\n return super.get(options);\n }\n //#endregion\n\n //#region Shortcuts\n fetch(\n options?: HttpEntityOptions & { etag?: string }\n ): Observable<ODataEntity<T>>;\n fetch(options?: HttpEntitiesOptions): Observable<ODataEntities<T>>;\n fetch(options?: HttpPropertyOptions): Observable<ODataProperty<T>>;\n fetch(\n options: HttpEntityOptions &\n HttpEntitiesOptions &\n HttpPropertyOptions & { etag?: string } = {}\n ): Observable<any> {\n return this.get(options);\n }\n\n fetchProperty(\n options: HttpOptions & { etag?: string } = {}\n ): Observable<T | null> {\n return this.fetch({ responseType: 'property', ...options }).pipe(\n map(({ property }) => property)\n );\n }\n\n fetchEntity(\n options: HttpOptions & { etag?: string } = {}\n ): Observable<T | null> {\n return this.fetch({ responseType: 'entity', ...options }).pipe(\n map(({ entity }) => entity)\n );\n }\n\n fetchModel(\n options: HttpOptions & { etag?: string } = {}\n ): Observable<ODataModel<T> | null> {\n return this.fetch({ responseType: 'entity', ...options }).pipe(\n map(({ entity, annots }) =>\n entity ? this.asModel(entity, { annots, reset: true }) : null\n )\n );\n }\n\n fetchEntities(\n options: HttpOptions & { withCount?: boolean } = {}\n ): Observable<T[] | null> {\n return this.fetch({ responseType: 'entities', ...options }).pipe(\n map(({ entities }) => entities)\n );\n }\n\n fetchCollection(\n options: HttpOptions & { withCount?: boolean } = {}\n ): Observable<ODataCollection<T, ODataModel<T>> | null> {\n return this.fetch({ responseType: 'entities', ...options }).pipe(\n map(({ entities, annots }) =>\n entities ? this.asCollection(entities, { annots, reset: true }) : null\n )\n );\n }\n\n fetchAll(options: HttpOptions = {}): Observable<T[]> {\n let res = this.clone();\n // Clean Paging\n res.query.clearPaging();\n let fetch = (opts?: {\n skip?: number;\n skiptoken?: string;\n top?: number;\n }): Observable<ODataEntities<T>> => {\n if (opts) {\n res.query.paging(opts);\n }\n return res.get({ responseType: 'entities', ...options });\n };\n return fetch().pipe(\n expand(({ annots: meta }) =>\n meta.skip || meta.skiptoken ? fetch(meta) : EMPTY\n ),\n concatMap(({ entities }) => entities || []),\n toArray()\n );\n }\n //#endregion\n}\n","import { Observable } from 'rxjs';\n\nimport { ODataResource } from '../resource';\nimport { ODataPathSegments } from '../path-segments';\nimport { ODataQueryOptions } from '../query-options';\nimport { HttpOptions } from './options';\nimport { $VALUE } from '../../constants';\nimport { ODataApi } from '../../api';\nimport { Http } from '../../utils';\nimport { PathSegmentNames } from '../../types';\n\nexport class ODataMediaResource<T> extends ODataResource<T> {\n //#region Factory\n static factory<V>(\n api: ODataApi,\n segments: ODataPathSegments,\n options: ODataQueryOptions\n ) {\n const segment = segments.add(PathSegmentNames.value, $VALUE);\n return new ODataMediaResource<V>(api, segments, options);\n }\n //#endregion\n\n clone() {\n return new ODataMediaResource<T>(\n this.api,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n schema() {\n return undefined;\n }\n\n //#region Requests\n get(\n options?: { responseType: 'arraybuffer' } & HttpOptions\n ): Observable<ArrayBuffer>;\n get(options?: { responseType: 'blob' } & HttpOptions): Observable<Blob>;\n get(options: { responseType: any } & HttpOptions): Observable<any> {\n return super.get(options);\n }\n\n put(\n data: ArrayBuffer | Blob,\n options: HttpOptions & { etag?: string } = {}\n ): Observable<any> {\n return super.put(data, options);\n }\n //#endregion\n\n //#region Shortcuts\n fetch(\n options?: { responseType: 'arraybuffer' } & HttpOptions\n ): Observable<ArrayBuffer>;\n fetch(options?: { responseType: 'blob' } & HttpOptions): Observable<Blob>;\n fetch(options: { responseType: any } & HttpOptions): Observable<any> {\n return this.get(options);\n }\n\n fetchArraybuffer(options: HttpOptions = {}): Observable<ArrayBuffer> {\n return this.fetch({ responseType: 'arraybuffer', ...options });\n }\n\n fetchBlob(options: HttpOptions = {}): Observable<Blob> {\n return this.fetch({ responseType: 'blob', ...options });\n }\n\n upload(\n data: ArrayBuffer | Blob,\n options: HttpOptions & { etag?: string } = {}\n ): Observable<any> {\n return this.put(data, options);\n }\n\n uploadArrayBuffer(\n data: ArrayBuffer,\n contentType: string,\n options: HttpOptions & { etag?: string } = {}\n ): Observable<any> {\n options.headers = Http.mergeHttpHeaders(options.headers || {}, {\n 'Content-Type': contentType,\n });\n return this.upload(data, options);\n }\n\n uploadBlob(\n data: Blob,\n options: HttpOptions & { etag?: string } = {}\n ): Observable<any> {\n return this.upload(data, options);\n }\n //#endregion\n}\n","import { Observable, EMPTY } from 'rxjs';\nimport { expand, concatMap, toArray, map } from 'rxjs/operators';\n\nimport { ODataStructuredTypeParser } from '../../parsers/structured-type';\nimport { ODataModel, ODataCollection } from '../../models';\nimport { ODataApi } from '../../api';\nimport { EntityKey, ODataResource } from '../resource';\nimport { Expand, Select, Transform, Filter, OrderBy } from '../builder';\nimport {\n ODataEntities,\n ODataEntitiesAnnotations,\n ODataEntity,\n ODataEntityAnnotations,\n} from '../responses';\nimport { ODataQueryOptions } from '../query-options';\nimport { ODataPathSegments } from '../path-segments';\nimport { ODataReferenceResource } from './reference';\nimport { ODataCountResource } from './count';\nimport { ODataPropertyResource } from './property';\nimport { HttpEntityOptions, HttpEntitiesOptions, HttpOptions } from './options';\nimport { ODataMediaResource } from './media';\nimport { PathSegmentNames, QueryOptionNames } from '../../types';\n\n/**\n * OData Navigation Property Resource\n * https://www.odata.org/getting-started/advanced-tutorial/#containment\n * https://www.odata.org/getting-started/advanced-tutorial/#derived\n */\nexport class ODataNavigationPropertyResource<T> extends ODataResource<T> {\n //#region Factory\n static factory<E>(\n api: ODataApi,\n path: string,\n type: string | undefined,\n segments: ODataPathSegments,\n options: ODataQueryOptions\n ) {\n const segment = segments.add(PathSegmentNames.navigationProperty, path);\n if (type) segment.type(type);\n options.keep(QueryOptionNames.format);\n return new ODataNavigationPropertyResource<E>(api, segments, options);\n }\n //#endregion\n\n clone() {\n return new ODataNavigationPropertyResource<T>(\n this.api,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n schema() {\n let type = this.type();\n return type !== undefined\n ? this.api.findStructuredTypeForType<T>(type)\n : undefined;\n }\n\n asModel<M extends ODataModel<T>>(\n entity: Partial<T> | { [name: string]: any },\n { annots, reset }: { annots?: ODataEntityAnnotations; reset?: boolean } = {}\n ): M {\n const type = annots?.type || this.type();\n const Model = this.api.modelForType(type);\n return new Model(entity, { resource: this, annots, reset }) as M;\n }\n\n asCollection<M extends ODataModel<T>, C extends ODataCollection<T, M>>(\n entities: Partial<T>[] | { [name: string]: any }[],\n {\n annots,\n reset,\n }: { annots?: ODataEntitiesAnnotations; reset?: boolean } = {}\n ): C {\n const type = annots?.type || this.type();\n const Collection = this.api.collectionForType(type);\n return new Collection(entities, { resource: this, annots, reset }) as C;\n }\n\n //#region Inmutable Resource\n key(value: any) {\n const navigation = this.clone();\n var key = this.resolveKey(value);\n if (key !== undefined) navigation.segment.navigationProperty().key(key);\n return navigation;\n }\n\n keys(values: any[]) {\n const navigation = this.clone();\n const types = this.pathSegments.types({ key: true });\n const keys = values.map((value, index) =>\n ODataResource.resolveKey(\n value,\n this.api.findStructuredTypeForType<T>(types[index])\n )\n );\n navigation.segment.keys(keys);\n return navigation;\n }\n\n media() {\n return ODataMediaResource.factory<T>(\n this.api,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n reference() {\n return ODataReferenceResource.factory(\n this.api,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n navigationProperty<N>(path: string) {\n let type = this.type();\n if (type !== undefined) {\n let parser = this.api.parserForType<N>(type);\n type =\n parser instanceof ODataStructuredTypeParser\n ? parser.typeFor(path)\n : undefined;\n }\n return ODataNavigationPropertyResource.factory<N>(\n this.api,\n path,\n type,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n property<P>(path: string) {\n let type = this.type();\n if (type !== undefined) {\n let parser = this.api.parserForType<P>(type);\n type =\n parser instanceof ODataStructuredTypeParser\n ? parser.typeFor(path)\n : undefined;\n }\n return ODataPropertyResource.factory<P>(\n this.api,\n path,\n type,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n count() {\n return ODataCountResource.factory(\n this.api,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n cast<C>(type: string) {\n let segments = this.cloneSegments();\n segments.add(PathSegmentNames.type, type).type(type);\n return new ODataNavigationPropertyResource<C>(\n this.api,\n segments,\n this.cloneQuery()\n );\n }\n\n select(opts: Select<T>) {\n const clone = this.clone();\n clone.query.select(opts);\n return clone;\n }\n\n expand(opts: Expand<T>) {\n const clone = this.clone();\n clone.query.expand(opts);\n return clone;\n }\n\n transform(opts: Transform<T>) {\n const clone = this.clone();\n clone.query.transform(opts);\n return clone;\n }\n\n search(opts: string) {\n const clone = this.clone();\n clone.query.search(opts);\n return clone;\n }\n\n filter(opts: Filter) {\n const clone = this.clone();\n clone.query.filter(opts);\n return clone;\n }\n\n orderBy(opts: OrderBy<T>) {\n const clone = this.clone();\n clone.query.orderBy(opts);\n return clone;\n }\n\n format(opts: string) {\n const clone = this.clone();\n clone.query.format(opts);\n return clone;\n }\n\n top(opts: number) {\n const clone = this.clone();\n clone.query.top(opts);\n return clone;\n }\n\n skip(opts: number) {\n const clone = this.clone();\n clone.query.skip(opts);\n return clone;\n }\n\n skiptoken(opts: string) {\n const clone = this.clone();\n clone.query.skiptoken(opts);\n return clone;\n }\n //#endregion\n\n //#region Mutable Resource\n get segment() {\n const segments = this.pathSegments;\n return {\n entitySet() {\n return segments.get(PathSegmentNames.entitySet);\n },\n singleton() {\n return segments.get(PathSegmentNames.singleton);\n },\n navigationProperty() {\n return segments.get(PathSegmentNames.navigationProperty);\n },\n keys(values?: (EntityKey<T> | undefined)[]) {\n return segments.keys(values);\n },\n };\n }\n\n /**\n * Handle query options of the navigation property\n * @returns Handler for mutate the query of the navigation property\n */\n get query() {\n return this.entitiesQueryHandler();\n }\n //#endregion\n\n //#region Requests\n get(\n options: HttpEntityOptions & {\n etag?: string;\n bodyQueryOptions?: QueryOptionNames[];\n }\n ): Observable<ODataEntity<T>>;\n get(\n options: HttpEntitiesOptions & {\n etag?: string;\n bodyQueryOptions?: QueryOptionNames[];\n }\n ): Observable<ODataEntities<T>>;\n get(\n options: HttpEntityOptions &\n HttpEntitiesOptions & {\n etag?: string;\n bodyQueryOptions?: QueryOptionNames[];\n }\n ): Observable<any> {\n return super.get(options);\n }\n\n post(\n attrs: Partial<T>,\n options: HttpOptions = {}\n ): Observable<ODataEntity<T>> {\n return super.post(attrs, { responseType: 'entity', ...options });\n }\n\n put(\n attrs: Partial<T>,\n options: HttpOptions & { etag?: string } = {}\n ): Observable<ODataEntity<T>> {\n return super.put(attrs, { responseType: 'entity', ...options });\n }\n\n patch(\n attrs: Partial<T>,\n options: HttpOptions & { etag?: string } = {}\n ): Observable<ODataEntity<T>> {\n return super.patch(attrs, { responseType: 'entity', ...options });\n }\n\n delete(options: HttpOptions & { etag?: string } = {}): Observable<any> {\n return super.delete({ responseType: 'entity', ...options });\n }\n //#endregion\n\n //#region Shortcuts\n fetch(\n options?: HttpEntityOptions & {\n etag?: string;\n bodyQueryOptions?: QueryOptionNames[];\n }\n ): Observable<ODataEntity<T>>;\n fetch(\n options?: HttpEntitiesOptions & {\n etag?: string;\n bodyQueryOptions?: QueryOptionNames[];\n }\n ): Observable<ODataEntities<T>>;\n fetch(\n options: HttpEntityOptions &\n HttpEntitiesOptions & {\n etag?: string;\n bodyQueryOptions?: QueryOptionNames[];\n } = {}\n ): Observable<any> {\n return this.get(options);\n }\n\n fetchEntity(\n options: HttpOptions & {\n etag?: string;\n bodyQueryOptions?: QueryOptionNames[];\n } = {}\n ): Observable<T | null> {\n return this.fetch({ responseType: 'entity', ...options }).pipe(\n map(({ entity }) => entity)\n );\n }\n\n fetchModel(\n options: HttpOptions & {\n etag?: string;\n bodyQueryOptions?: QueryOptionNames[];\n } = {}\n ): Observable<ODataModel<T> | null> {\n return this.fetch({ responseType: 'entity', ...options }).pipe(\n map(({ entity, annots }) =>\n entity ? this.asModel(entity, { annots, reset: true }) : null\n )\n );\n }\n\n fetchEntities(\n options: HttpOptions & {\n bodyQueryOptions?: QueryOptionNames[];\n } = {}\n ): Observable<T[] | null> {\n return this.fetch({ responseType: 'entities', ...options }).pipe(\n map(({ entities }) => entities)\n );\n }\n\n fetchCollection(\n options: HttpOptions & {\n withCount?: boolean;\n bodyQueryOptions?: QueryOptionNames[];\n } = {}\n ): Observable<ODataCollection<T, ODataModel<T>> | null> {\n return this.fetch({ responseType: 'entities', ...options }).pipe(\n map(({ entities, annots }) =>\n entities ? this.asCollection(entities, { annots, reset: true }) : null\n )\n );\n }\n\n fetchAll(\n options: HttpOptions & {\n bodyQueryOptions?: QueryOptionNames[];\n } = {}\n ): Observable<T[]> {\n let res = this.clone();\n // Clean Paging\n res.query.clearPaging();\n let fetch = (opts?: {\n skip?: number;\n skiptoken?: string;\n top?: number;\n }): Observable<ODataEntities<T>> => {\n if (opts) {\n res.query.paging(opts);\n }\n return res.get({ responseType: 'entities', ...options });\n };\n return fetch().pipe(\n expand(({ annots: meta }) =>\n meta.skip || meta.skiptoken ? fetch(meta) : EMPTY\n ),\n concatMap(({ entities }) => entities || []),\n toArray()\n );\n }\n //#endregion\n}\n","import { Observable, throwError } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { ODataActionResource } from './action';\nimport { ODataFunctionResource } from './function';\nimport { ODataNavigationPropertyResource } from './navigation-property';\nimport { ODataPropertyResource } from './property';\nimport { Expand, Select } from '../builder';\nimport { ODataQueryOptions } from '../query-options';\nimport { ODataPathSegments } from '../path-segments';\nimport { EntityKey, ODataResource } from '../resource';\nimport { HttpOptions } from './options';\nimport { ODataMediaResource } from './media';\nimport { ODataEntity, ODataEntityAnnotations } from '../responses';\nimport { ODataStructuredTypeParser } from '../../parsers/structured-type';\nimport { ODataModel } from '../../models';\nimport { ODataApi } from '../../api';\nimport { PathSegmentNames, QueryOptionNames } from '../../types';\nexport class ODataEntityResource<T> extends ODataResource<T> {\n //#region Factory\n static factory<E>(\n api: ODataApi,\n segments: ODataPathSegments,\n options: ODataQueryOptions\n ) {\n options.keep(\n QueryOptionNames.expand,\n QueryOptionNames.select,\n QueryOptionNames.format\n );\n return new ODataEntityResource<E>(api, segments, options);\n }\n //#endregion\n\n clone() {\n return new ODataEntityResource<T>(\n this.api,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n schema() {\n let type = this.type();\n return type !== undefined\n ? this.api.findStructuredTypeForType<T>(type)\n : undefined;\n }\n asModel<M extends ODataModel<T>>(\n entity: Partial<T> | { [name: string]: any },\n { annots, reset }: { annots?: ODataEntityAnnotations; reset?: boolean } = {}\n ): M {\n const type = annots?.type || this.type();\n const Model = this.api.modelForType(type);\n return new Model(entity, { resource: this, annots, reset }) as M;\n }\n\n //#region Inmutable Resource\n key(value: any) {\n const entity = this.clone();\n var key = this.resolveKey(value);\n if (key !== undefined) entity.segment.entitySet().key(key);\n return entity;\n }\n\n keys(values: any[]) {\n const entity = this.clone();\n const types = this.pathSegments.types({ key: true });\n const keys = values.map((value, index) =>\n ODataResource.resolveKey(\n value,\n this.api.findStructuredTypeForType<T>(types[index])\n )\n );\n entity.segment.keys(keys);\n return entity;\n }\n\n media() {\n return ODataMediaResource.factory<T>(\n this.api,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n navigationProperty<N>(path: string) {\n let type = this.type();\n if (type !== undefined) {\n let parser = this.api.parserForType<N>(type);\n type =\n parser instanceof ODataStructuredTypeParser\n ? parser.typeFor(path)\n : undefined;\n }\n return ODataNavigationPropertyResource.factory<N>(\n this.api,\n path,\n type,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n property<P>(path: string) {\n let type = this.type();\n if (type !== undefined) {\n let parser = this.api.parserForType<P>(type);\n type =\n parser instanceof ODataStructuredTypeParser\n ? parser.typeFor(path)\n : undefined;\n }\n return ODataPropertyResource.factory<P>(\n this.api,\n path,\n type,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n action<P, R>(path: string) {\n let type;\n const callable = this.api.findCallableForType(path, this.type());\n if (callable !== undefined) {\n path = callable.path();\n type = callable.type();\n }\n return ODataActionResource.factory<P, R>(\n this.api,\n path,\n type,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n function<P, R>(path: string) {\n let type;\n const callable = this.api.findCallableForType(path, this.type());\n if (callable !== undefined) {\n path = callable.path();\n type = callable.type();\n }\n return ODataFunctionResource.factory<P, R>(\n this.api,\n path,\n type,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n //TODO: Check\n cast<C>(type: string) {\n let segments = this.cloneSegments();\n segments.add(PathSegmentNames.type, type).type(type);\n return new ODataEntityResource<C>(this.api, segments, this.cloneQuery());\n }\n\n select(opts: Select<T>) {\n const clone = this.clone();\n clone.query.select(opts);\n return clone;\n }\n\n expand(opts: Expand<T>) {\n const clone = this.clone();\n clone.query.expand(opts);\n return clone;\n }\n\n format(opts: string) {\n const clone = this.clone();\n clone.query.format(opts);\n return clone;\n }\n //#endregion\n\n //#region Mutable Resource\n get segment() {\n const segments = this.pathSegments;\n return {\n entitySet() {\n return segments.get(PathSegmentNames.entitySet);\n },\n keys(values?: (EntityKey<T> | undefined)[]) {\n return segments.keys(values);\n },\n };\n }\n\n get query() {\n return this.entityQueryHandler();\n }\n //#endregion\n\n //#region Requests\n get(\n options: HttpOptions & {\n etag?: string;\n bodyQueryOptions?: QueryOptionNames[];\n } = {}\n ): Observable<ODataEntity<T>> {\n return super.get({ responseType: 'entity', ...options });\n }\n\n post(\n attrs: Partial<T>,\n options: HttpOptions = {}\n ): Observable<ODataEntity<T>> {\n return super.post(attrs, { responseType: 'entity', ...options });\n }\n\n put(\n attrs: Partial<T>,\n options: HttpOptions & { etag?: string } = {}\n ): Observable<ODataEntity<T>> {\n return super.put(attrs, { responseType: 'entity', ...options });\n }\n\n patch(\n attrs: Partial<T>,\n options: HttpOptions & { etag?: string } = {}\n ): Observable<ODataEntity<T>> {\n return super.patch(attrs, { responseType: 'entity', ...options });\n }\n\n delete(options: HttpOptions & { etag?: string } = {}): Observable<any> {\n return super.delete({ responseType: 'entity', ...options });\n }\n //#endregion\n\n //#region Shortcuts\n fetch(\n options?: HttpOptions & {\n etag?: string;\n bodyQueryOptions?: QueryOptionNames[];\n }\n ): Observable<ODataEntity<T>> {\n if (!this.hasKey()) return throwError('Entity resource without key');\n return this.get(options);\n }\n\n fetchEntity(\n options?: HttpOptions & {\n etag?: string;\n bodyQueryOptions?: QueryOptionNames[];\n }\n ): Observable<T | null> {\n return this.fetch(options).pipe(map(({ entity }) => entity));\n }\n\n fetchModel(\n options?: HttpOptions & {\n etag?: string;\n bodyQueryOptions?: QueryOptionNames[];\n }\n ): Observable<ODataModel<T> | null> {\n return this.fetch(options).pipe(\n map(({ entity, annots }) =>\n entity ? this.asModel(entity, { annots, reset: true }) : null\n )\n );\n }\n //#endregion\n}\n","import { Observable, EMPTY } from 'rxjs';\nimport { expand, concatMap, toArray, map } from 'rxjs/operators';\n\nimport { Expand, Select, Transform, Filter, OrderBy } from '../builder';\nimport { ODataPathSegments } from '../path-segments';\n\nimport { ODataActionResource } from './action';\nimport { ODataFunctionResource } from './function';\nimport { ODataQueryOptions } from '../query-options';\nimport { ODataEntityResource } from './entity';\nimport { ODataCountResource } from './count';\nimport { EntityKey, ODataResource } from '../resource';\nimport { HttpOptions } from './options';\nimport {\n ODataEntity,\n ODataEntities,\n ODataEntitiesAnnotations,\n} from '../responses';\nimport { ODataModel, ODataCollection } from '../../models';\nimport { ODataApi } from '../../api';\nimport { PathSegmentNames, QueryOptionNames } from '../../types';\n\nexport class ODataEntitySetResource<T> extends ODataResource<T> {\n //#region Factory\n static factory<E>(\n api: ODataApi,\n path: string,\n type: string | undefined,\n segments: ODataPathSegments,\n query: ODataQueryOptions\n ) {\n const segment = segments.add(PathSegmentNames.entitySet, path);\n if (type) segment.type(type);\n return new ODataEntitySetResource<E>(api, segments, query);\n }\n //#endregion\n\n clone() {\n return new ODataEntitySetResource<T>(\n this.api,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n schema() {\n let type = this.type();\n return type !== undefined\n ? this.api.findStructuredTypeForType<T>(type)\n : undefined;\n }\n\n asCollection<M extends ODataModel<T>, C extends ODataCollection<T, M>>(\n entities: Partial<T>[] | { [name: string]: any }[],\n {\n annots,\n reset = false,\n }: { annots?: ODataEntitiesAnnotations; reset?: boolean } = {}\n ): C {\n const type = annots?.type || this.type();\n const Collection = this.api.collectionForType(type);\n return new Collection(entities, { resource: this, annots, reset }) as C;\n }\n\n //#region Inmutable Resource\n entity(key?: any) {\n const entity = ODataEntityResource.factory<T>(\n this.api,\n this.cloneSegments(),\n this.cloneQuery()\n );\n if (key !== undefined) {\n return entity.key(key);\n }\n return entity;\n }\n\n cast<C>(type: string) {\n let segments = this.cloneSegments();\n segments.add(PathSegmentNames.type, type).type(type);\n return new ODataEntitySetResource<C>(this.api, segments, this.cloneQuery());\n }\n\n action<P, R>(path: string) {\n let type;\n const callable = this.api.findCallableForType(path, this.type());\n if (callable !== undefined) {\n path = callable.path();\n type = callable.type();\n }\n return ODataActionResource.factory<P, R>(\n this.api,\n path,\n type,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n function<P, R>(path: string) {\n let type;\n const callable = this.api.findCallableForType(path, this.type());\n if (callable !== undefined) {\n path = callable.path();\n type = callable.type();\n }\n return ODataFunctionResource.factory<P, R>(\n this.api,\n path,\n type,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n count() {\n return ODataCountResource.factory(\n this.api,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n select(opts: Select<T>) {\n const clone = this.clone();\n clone.query.select(opts);\n return clone;\n }\n\n expand(opts: Expand<T>) {\n const clone = this.clone();\n clone.query.expand(opts);\n return clone;\n }\n\n transform(opts: Transform<T>) {\n const clone = this.clone();\n clone.query.transform(opts);\n return clone;\n }\n\n search(opts: string) {\n const clone = this.clone();\n clone.query.search(opts);\n return clone;\n }\n\n filter(opts: Filter) {\n const clone = this.clone();\n clone.query.filter(opts);\n return clone;\n }\n\n orderBy(opts: OrderBy<T>) {\n const clone = this.clone();\n clone.query.orderBy(opts);\n return clone;\n }\n\n format(opts: string) {\n const clone = this.clone();\n clone.query.format(opts);\n return clone;\n }\n\n top(opts: number) {\n const clone = this.clone();\n clone.query.top(opts);\n return clone;\n }\n\n skip(opts: number) {\n const clone = this.clone();\n clone.query.skip(opts);\n return clone;\n }\n\n skiptoken(opts: string) {\n const clone = this.clone();\n clone.query.skiptoken(opts);\n return clone;\n }\n //#endregion\n\n //#region Mutable Resource\n get segment() {\n const segments = this.pathSegments;\n return {\n entitySet() {\n return segments.get(PathSegmentNames.entitySet);\n },\n keys(values?: (EntityKey<T> | undefined)[]) {\n return segments.keys(values);\n },\n };\n }\n\n get query() {\n return this.entitiesQueryHandler();\n }\n //#endregion\n\n //#region Requests\n post(\n attrs: Partial<T>,\n options: HttpOptions = {}\n ): Observable<ODataEntity<T>> {\n return super.post(attrs, { responseType: 'entity', ...options });\n }\n\n get(\n options: HttpOptions & {\n withCount?: boolean;\n bodyQueryOptions?: QueryOptionNames[];\n } = {}\n ): Observable<ODataEntities<T>> {\n return super.get({ responseType: 'entities', ...options });\n }\n //#endregion\n\n //#region Shortcuts\n fetch(\n options?: HttpOptions & {\n withCount?: boolean;\n bodyQueryOptions?: QueryOptionNames[];\n }\n ): Observable<ODataEntities<T>> {\n return this.get(options);\n }\n\n fetchEntities(\n options?: HttpOptions & {\n withCount?: boolean;\n bodyQueryOptions?: QueryOptionNames[];\n }\n ): Observable<T[] | null> {\n return this.fetch(options).pipe(map(({ entities }) => entities));\n }\n\n fetchCollection(\n options?: HttpOptions & {\n withCount?: boolean;\n bodyQueryOptions?: QueryOptionNames[];\n }\n ): Observable<ODataCollection<T, ODataModel<T>> | null> {\n return this.fetch(options).pipe(\n map(({ entities, annots }) =>\n entities ? this.asCollection(entities, { annots, reset: true }) : null\n )\n );\n }\n\n fetchAll(\n options?: HttpOptions & {\n bodyQueryOptions?: QueryOptionNames[];\n }\n ): Observable<T[]> {\n let res = this.clone();\n // Clean Paging\n res.query.clearPaging();\n let fetch = (opts?: {\n skip?: number;\n skiptoken?: string;\n top?: number;\n }): Observable<ODataEntities<T>> => {\n if (opts) {\n res.query.paging(opts);\n }\n return res.get(options);\n };\n return fetch().pipe(\n expand(({ annots: meta }) =>\n meta.skip || meta.skiptoken ? fetch(meta) : EMPTY\n ),\n concatMap(({ entities }) => entities || []),\n toArray()\n );\n }\n //#endregion\n}\n","import { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { ODataResource } from '../resource';\nimport { ODataPathSegments } from '../path-segments';\nimport { HttpOptions } from './options';\nimport { ODataMetadata } from '../responses';\nimport { $METADATA } from '../../constants';\nimport { ODataApi } from '../../api';\nimport { PathSegmentNames } from '../../types';\n\nexport class ODataMetadataResource extends ODataResource<any> {\n constructor(api: ODataApi, segments?: ODataPathSegments) {\n super(api, segments);\n }\n\n clone() {\n return new ODataMetadataResource(this.api, this.cloneSegments());\n }\n\n schema() {\n return undefined;\n }\n //#region Factory\n static factory(api: ODataApi) {\n let segments = new ODataPathSegments();\n segments.add(PathSegmentNames.metadata, $METADATA);\n return new ODataMetadataResource(api, segments);\n }\n //#endregion\n\n //#region Requests\n get(options?: HttpOptions): Observable<ODataMetadata> {\n return super\n .get({ responseType: 'text', ...options })\n .pipe(map((body: any) => new ODataMetadata(body)));\n }\n //#endregion\n\n //#region Shortcuts\n fetch(options?: HttpOptions): Observable<ODataMetadata> {\n return this.get(options);\n }\n //#endregion\n}\n","import { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { Expand, Select } from '../builder';\nimport { ODataPathSegments } from '../path-segments';\nimport { ODataQueryOptions } from '../query-options';\nimport { EntityKey, ODataResource } from '../resource';\n\nimport { ODataNavigationPropertyResource } from './navigation-property';\nimport { ODataPropertyResource } from './property';\nimport { ODataActionResource } from './action';\nimport { ODataFunctionResource } from './function';\nimport { HttpOptions } from './options';\nimport { ODataStructuredTypeParser } from '../../parsers/structured-type';\nimport { ODataEntity, ODataEntityAnnotations } from '../responses';\nimport { ODataModel } from '../../models';\nimport { ODataApi } from '../../api';\nimport { PathSegmentNames, QueryOptionNames } from '../../types';\n\nexport class ODataSingletonResource<T> extends ODataResource<T> {\n //#region Factory\n static factory<R>(\n api: ODataApi,\n path: string,\n type: string | undefined,\n segments: ODataPathSegments,\n options: ODataQueryOptions\n ) {\n const segment = segments.add(PathSegmentNames.singleton, path);\n if (type !== undefined) segment.type(type);\n options.keep(QueryOptionNames.format);\n return new ODataSingletonResource<R>(api, segments, options);\n }\n //#endregion\n\n clone() {\n return new ODataSingletonResource<T>(\n this.api,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n schema() {\n let type = this.type();\n return type !== undefined\n ? this.api.findStructuredTypeForType<T>(type)\n : undefined;\n }\n asModel<M extends ODataModel<T>>(\n entity: Partial<T> | { [name: string]: any },\n { annots, reset }: { annots?: ODataEntityAnnotations; reset?: boolean } = {}\n ): M {\n const Model = this.api.modelForType(annots?.type || this.type());\n return new Model(entity, { resource: this, annots, reset }) as M;\n }\n\n //#region Inmutable Resource\n key(value: any) {\n const singleton = this.clone();\n var key = this.resolveKey(value);\n if (key !== undefined) singleton.segment.singleton().key(key);\n return singleton;\n }\n\n keys(values: any[]) {\n const singleton = this.clone();\n const types = this.pathSegments.types({ key: true });\n const keys = values.map((value, index) =>\n ODataResource.resolveKey(\n value,\n this.api.findStructuredTypeForType<T>(types[index])\n )\n );\n singleton.segment.keys(keys);\n return singleton;\n }\n\n navigationProperty<N>(path: string) {\n let type = this.type();\n if (type !== undefined) {\n let parser = this.api.parserForType<N>(type);\n type =\n parser instanceof ODataStructuredTypeParser\n ? parser.typeFor(path)\n : undefined;\n }\n return ODataNavigationPropertyResource.factory<N>(\n this.api,\n path,\n type,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n property<P>(path: string) {\n let type = this.type();\n if (type !== undefined) {\n let parser = this.api.parserForType<P>(type);\n type =\n parser instanceof ODataStructuredTypeParser\n ? parser.typeFor(path)\n : undefined;\n }\n return ODataPropertyResource.factory<P>(\n this.api,\n path,\n type,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n action<P, R>(path: string) {\n let type;\n const callable = this.api.findCallableForType(path, this.type());\n if (callable !== undefined) {\n path = callable.path();\n type = callable.type();\n }\n return ODataActionResource.factory<P, R>(\n this.api,\n path,\n type,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n function<P, R>(path: string) {\n let type;\n const callable = this.api.findCallableForType(path, this.type());\n if (callable !== undefined) {\n path = callable.path();\n type = callable.type();\n }\n return ODataFunctionResource.factory<P, R>(\n this.api,\n path,\n type,\n this.cloneSegments(),\n this.cloneQuery()\n );\n }\n\n select(opts: Select<T>) {\n const clone = this.clone();\n clone.query.select(opts);\n return clone;\n }\n\n expand(opts: Expand<T>) {\n const clone = this.clone();\n clone.query.expand(opts);\n return clone;\n }\n\n format(opts: string) {\n const clone = this.clone();\n clone.query.format(opts);\n return clone;\n }\n //#endregion\n\n //#region Mutable Resource\n get segment() {\n const segments = this.pathSegments;\n return {\n singleton() {\n return segments.get(PathSegmentNames.singleton);\n },\n keys(values?: (EntityKey<T> | undefined)[]) {\n return segments.keys(values);\n },\n };\n }\n\n get query() {\n return this.entityQueryHandler();\n }\n //#endregion\n\n //#region Requests\n get(\n options: HttpOptions & {\n etag?: string;\n bodyQueryOptions?: QueryOptionNames[];\n } = {}\n ): Observable<ODataEntity<T>> {\n return super.get({ responseType: 'entity', ...options });\n }\n\n post(\n attrs: Partial<T>,\n options: HttpOptions = {}\n ): Observable<ODataEntity<T>> {\n return super.post(attrs, { responseType: 'entity', ...options });\n }\n\n put(\n attrs: Partial<T>,\n options: HttpOptions & { etag?: string } = {}\n ): Observable<ODataEntity<T>> {\n return super.put(attrs, { responseType: 'entity', ...options });\n }\n\n patch(\n attrs: Partial<T>,\n options: HttpOptions & { etag?: string } = {}\n ): Observable<ODataEntity<T>> {\n return super.patch(attrs, { responseType: 'entity', ...options });\n }\n\n delete(options: HttpOptions & { etag?: string } = {}): Observable<any> {\n return super.delete({ responseType: 'entity', ...options });\n }\n //#endregion\n\n //#region Shortcuts\n fetch(\n options?: HttpOptions & {\n etag?: string;\n bodyQueryOptions?: QueryOptionNames[];\n }\n ): Observable<ODataEntity<T>> {\n return this.get(options);\n }\n\n fetchEntity(\n options?: HttpOptions & {\n etag?: string;\n bodyQueryOptions?: QueryOptionNames[];\n }\n ): Observable<T | null> {\n return this.fetch(options).pipe(map(({ entity }) => entity));\n }\n\n fetchModel(\n options?: HttpOptions & {\n etag?: string;\n bodyQueryOptions?: QueryOptionNames[];\n }\n ): Observable<ODataModel<T> | null> {\n return this.fetch(options).pipe(\n map(({ entity, annots }) =>\n entity ? this.asModel(entity, { annots, reset: true }) : null\n )\n );\n }\n //#endregion\n}\n","import { Observable, Subscription } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport {\n COMPUTED,\n DEFAULT_VERSION,\n OPTIMISTIC_CONCURRENCY,\n} from '../constants';\nimport { ODataHelper } from '../helper';\nimport { ODataParserOptions } from '../options';\nimport { ODataStructuredTypeFieldParser } from '../parsers';\nimport {\n Expand,\n ODataEntitiesAnnotations,\n ODataEntityAnnotations,\n ODataEntityResource,\n ODataEntitySetResource,\n ODataNavigationPropertyResource,\n ODataPathSegments,\n ODataPropertyResource,\n ODataQueryOptions,\n EntityKey,\n ODataResource,\n ODataSingletonResource,\n OptionHandler,\n QueryArguments,\n Select,\n} from '../resources';\nimport { ODataEntitySet, ODataStructuredType } from '../schema';\nimport { Options } from '../types';\nimport { Objects, Types } from '../utils';\nimport type { ODataCollection } from './collection';\nimport type { ODataModel } from './model';\n\nexport const CID = '_cid';\nexport type ODataModelResource<T> =\n | ODataEntityResource<T>\n | ODataSingletonResource<T>\n | ODataNavigationPropertyResource<T>\n | ODataPropertyResource<T>;\nexport type ODataCollectionResource<T> =\n | ODataEntitySetResource<T>\n | ODataNavigationPropertyResource<T>\n | ODataPropertyResource<T>;\n\nexport type ODataModelEventType =\n | 'change'\n | 'reset'\n | 'update'\n | 'destroy'\n | 'add'\n | 'remove'\n | 'invalid'\n | 'request'\n | 'sync'\n | 'attach';\nexport class ODataModelEvent<T> {\n name: ODataModelEventType;\n bubbling: boolean = true;\n model?: ODataModel<T>;\n collection?: ODataCollection<T, ODataModel<T>>;\n chain: [\n ODataModel<any> | ODataCollection<any, ODataModel<any>>,\n string | number | null\n ][];\n value?: any;\n previous?: any;\n options?: any;\n constructor(\n name: ODataModelEventType,\n {\n model,\n collection,\n previous,\n value,\n track,\n options,\n }: {\n model?: ODataModel<T>;\n collection?: ODataCollection<T, ODataModel<T>>;\n track?: string | number;\n previous?: any;\n value?: any;\n options?: any;\n } = {}\n ) {\n this.name = name;\n this.model = model;\n this.collection = collection;\n this.previous = previous;\n this.value = value;\n this.options = options;\n this.chain = [\n [\n this.collection ||\n (this.model as\n | ODataModel<any>\n | ODataCollection<any, ODataModel<any>>),\n track || null,\n ],\n ];\n }\n stopPropagation() {\n this.bubbling = false;\n }\n\n push(\n model: ODataModel<any> | ODataCollection<any, ODataModel<any>>,\n track: string | number\n ) {\n this.chain.splice(0, 0, [model, track]);\n }\n\n visited(model: ODataModel<any> | ODataCollection<any, ODataModel<any>>) {\n return this.chain.some((c) => c[0] === model);\n }\n get path() {\n return this.chain\n .map(([, track], index) =>\n typeof track === 'number'\n ? `[${track}]`\n : typeof track === 'string'\n ? index === 0\n ? track\n : `.${track}`\n : ''\n )\n .join('');\n }\n}\n\nexport const BUBBLING = [\n 'change',\n 'reset',\n 'update',\n 'destroy',\n 'add',\n 'remove',\n];\n\nexport const INCLUDE_ALL = {\n include_navigation: true,\n include_concurrency: true,\n include_computed: true,\n include_key: true,\n include_non_field: true,\n};\n\nexport enum ODataModelState {\n Added,\n Removed,\n Changed,\n Unchanged,\n}\n\nexport type ModelOptions = {\n cid?: string;\n fields: { [name: string]: ModelFieldOptions };\n};\n\nexport type ModelFieldOptions = {\n field?: string;\n default?: any;\n required?: boolean;\n concurrency?: boolean;\n maxLength?: number;\n minLength?: number;\n min?: number;\n max?: number;\n pattern?: RegExp;\n};\n\nexport function Model({ cid = CID }: { cid?: string } = {}) {\n return <T extends { new (...args: any[]): {} }>(constructor: T) => {\n const Klass = <any>constructor;\n if (!Klass.hasOwnProperty('options'))\n Klass.options = { fields: {} } as ModelOptions;\n Klass.options.cid = cid;\n return constructor;\n };\n}\n\nexport function ModelField({\n name,\n ...options\n}: { name?: string } & ModelFieldOptions = {}) {\n return (target: any, key: string): void => {\n const Klass = target.constructor;\n if (!Klass.hasOwnProperty('options'))\n Klass.options = { fields: {} } as ModelOptions;\n options.field = name || key;\n Klass.options.fields[key] = options;\n };\n}\n\nexport type ODataModelFieldOptions<F> = ModelFieldOptions & {\n name: string;\n field: string;\n parser: ODataStructuredTypeFieldParser<F>;\n};\n\nexport class ODataModelField<F> {\n name: string;\n field: string;\n parser: ODataStructuredTypeFieldParser<F>;\n modelOptions: ODataModelOptions<any>;\n meta?: ODataModelOptions<any>;\n default?: any;\n required: boolean;\n concurrency: boolean;\n maxLength?: number;\n minLength?: number;\n min?: number;\n max?: number;\n pattern?: RegExp;\n constructor(\n modelOptions: ODataModelOptions<any>,\n { name, field, parser, ...options }: ODataModelFieldOptions<F>\n ) {\n this.modelOptions = modelOptions;\n this.name = name;\n this.field = field;\n this.parser = parser;\n this.default = options.default || this.parser.default;\n this.required = Boolean(options.required);\n this.concurrency = Boolean(options.concurrency);\n this.maxLength = options.maxLength;\n this.minLength = options.minLength;\n this.min = options.min;\n this.max = options.max;\n this.pattern = options.pattern;\n }\n\n get api() {\n return this.modelOptions.api;\n }\n\n get type() {\n return this.parser.type;\n }\n\n get navigation() {\n return Boolean(this.parser.navigation);\n }\n\n get collection() {\n return Boolean(this.parser.collection);\n }\n\n get computed() {\n return Boolean(\n this.parser.findAnnotation((a) => a.term === COMPUTED)?.bool\n );\n }\n\n configure({\n findOptionsForType,\n concurrency,\n }: {\n findOptionsForType: (type: string) => ODataModelOptions<any> | undefined;\n concurrency: boolean;\n }) {\n this.meta = findOptionsForType(this.parser.type);\n if (concurrency) this.concurrency = concurrency;\n }\n\n isKey() {\n return this.parser.isKey();\n }\n\n hasReferentials() {\n return this.parser.hasReferentials();\n }\n\n get referentials() {\n return this.parser.referentials;\n }\n\n isStructuredType() {\n return this.parser.isStructuredType();\n }\n\n structured() {\n return this.api.findStructuredTypeForType<F>(this.parser.type);\n }\n\n isEnumType() {\n return this.parser.isEnumType();\n }\n\n enum() {\n return this.api.findEnumTypeForType<F>(this.parser.type);\n }\n\n validate(\n value: any,\n {\n method,\n navigation = false,\n }: {\n method?: 'create' | 'update' | 'patch';\n navigation?: boolean;\n } = {}\n ) {\n /*\n if ('isValid' in value && typeof value.isValid === 'function') {\n return !value.isValid({ method, navigation }) ? value._errors : undefined;\n } else if ('models' in value && typeof value.models === 'function') {\n */\n if (ODataModelOptions.isModel(value)) {\n return !value.isValid({ method, navigation }) ? value._errors : undefined;\n } else if (ODataModelOptions.isCollection(value)) {\n return value\n .models()\n .some((m: ODataModel<any>) => !m.isValid({ method, navigation }))\n ? value.models().map((m: ODataModel<any>) => m._errors)\n : undefined;\n } else {\n let errors = this.parser?.validate(value, { method, navigation }) || [];\n if (\n this.required &&\n (value === null || (value === undefined && method !== 'patch')) // Is null or undefined without patch?\n ) {\n errors.push(`required`);\n }\n if (\n this.maxLength !== undefined &&\n typeof value === 'string' &&\n value.length > this.maxLength\n ) {\n errors.push(`maxlength`);\n }\n if (\n this.minLength !== undefined &&\n typeof value === 'string' &&\n value.length < this.minLength\n ) {\n errors.push(`minlength`);\n }\n if (\n this.min !== undefined &&\n typeof value === 'number' &&\n value < this.min\n ) {\n errors.push(`min`);\n }\n if (\n this.max !== undefined &&\n typeof value === 'number' &&\n value > this.max\n ) {\n errors.push(`max`);\n }\n if (\n this.pattern !== undefined &&\n typeof value === 'string' &&\n !this.pattern.test(value)\n ) {\n errors.push(`pattern`);\n }\n return !Types.isEmpty(errors) ? errors : undefined;\n }\n }\n\n defaults(): any {\n return this.isStructuredType() && this.meta !== undefined\n ? this.meta.defaults()\n : this.default;\n }\n\n deserialize(value: any, options?: Options): F {\n const parserOptions =\n options !== undefined\n ? new ODataParserOptions(options)\n : this.api.options;\n return this.parser.deserialize(value, parserOptions);\n }\n\n serialize(value: F, options?: Options): any {\n const parserOptions =\n options !== undefined\n ? new ODataParserOptions(options)\n : this.api.options;\n return this.parser.serialize(value, parserOptions);\n }\n\n encode(value: F, options?: Options): any {\n const parserOptions =\n options !== undefined\n ? new ODataParserOptions(options)\n : this.api.options;\n return this.parser.encode(value, parserOptions);\n }\n\n resourceFactory<T, F>(\n resource: ODataModelResource<T>\n ): ODataNavigationPropertyResource<F> | ODataPropertyResource<F> {\n if (\n !(\n resource instanceof ODataEntityResource ||\n resource instanceof ODataNavigationPropertyResource ||\n resource instanceof ODataPropertyResource\n )\n )\n throw new Error(\"Can't build resource for non compatible base type\");\n return this.navigation\n ? (resource as ODataEntityResource<T>).navigationProperty<F>(\n this.parser.name\n )\n : (resource as ODataEntityResource<T>).property<F>(this.parser.name);\n }\n\n annotationsFactory(\n annots: ODataEntityAnnotations\n ): ODataEntityAnnotations | ODataEntitiesAnnotations {\n return this.parser.collection\n ? new ODataEntitiesAnnotations(\n annots.helper,\n annots.property(this.parser.name) || {}\n )\n : new ODataEntityAnnotations(\n annots.helper,\n annots.property(this.parser.name) || {}\n );\n }\n\n schemaFactory<T, F>(\n schema: ODataStructuredType<T>\n ): ODataStructuredType<F> | undefined {\n return schema.api.findStructuredTypeForType(this.parser.type);\n }\n\n modelCollectionFactory<T, F>({\n parent,\n value,\n reset,\n }: {\n parent: ODataModel<any>;\n value?: F | F[] | { [name: string]: any } | { [name: string]: any }[];\n reset?: boolean;\n }): ODataModel<F> | ODataCollection<F, ODataModel<F>> {\n const schema = this.schemaFactory<T, F>(parent.schema());\n const annots = this.annotationsFactory(parent.annots());\n\n const Model = schema?.model;\n const Collection = schema?.collection;\n if (Model === undefined || Collection === undefined)\n throw Error(`No model for ${this.name}`);\n return this.parser.collection\n ? (new Collection((value || []) as (F | { [name: string]: any })[], {\n annots: annots as ODataEntitiesAnnotations,\n parent: [parent, this],\n reset,\n }) as ODataCollection<F, ODataModel<F>>)\n : (new Model((value || {}) as F | { [name: string]: any }, {\n annots: annots as ODataEntityAnnotations,\n parent: [parent, this],\n reset,\n }) as ODataModel<F>);\n }\n}\n\nexport type ODataModelRelation<T> = {\n state: ODataModelState;\n model: ODataModel<T> | ODataCollection<T, ODataModel<T>> | null;\n field: ODataModelField<T>;\n subscription: Subscription | null;\n};\nexport type ODataModelEntry<T, M extends ODataModel<T>> = {\n state: ODataModelState;\n model: M;\n key?: EntityKey<T> | { [name: string]: any };\n subscription: Subscription | null;\n};\n\nexport class ODataModelOptions<T> {\n name: string;\n cid: string;\n base?: string;\n open?: boolean;\n private _fields: ODataModelField<any>[];\n schema: ODataStructuredType<T>;\n entitySet?: ODataEntitySet;\n // Hierarchy\n parent?: ODataModelOptions<any>;\n children: ODataModelOptions<any>[] = [];\n\n constructor(options: ModelOptions, schema: ODataStructuredType<T>) {\n this.name = schema.name;\n this.base = schema.base;\n this.open = schema.open;\n this.schema = schema;\n this.cid = options.cid || CID;\n const schemaFields = this.schema.fields({ include_navigation: true });\n this._fields = Object.entries(options.fields).map(([name, options]) => {\n const { field, ...opts } = options;\n if (field === undefined || name === undefined)\n throw new Error('Model Properties need name and field');\n const parser = schemaFields.find((f: any) => f.name === field);\n if (parser === undefined)\n throw new Error(`No parser for ${field} with name = ${name}`);\n return new ODataModelField<T>(this, { name, field, parser, ...opts });\n });\n }\n\n get api() {\n return this.schema.api;\n }\n\n type() {\n return this.schema.type();\n }\n\n isTypeOf(type: string) {\n return this.schema.isTypeOf(type);\n }\n\n findChildOptions(\n predicate: (options: ODataModelOptions<any>) => boolean\n ): ODataModelOptions<any> | undefined {\n if (predicate(this)) return this;\n let match: ODataModelOptions<any> | undefined;\n for (let ch of this.children) {\n match = ch.findChildOptions(predicate);\n if (match !== undefined) break;\n }\n return match;\n }\n\n configure({\n findOptionsForType,\n }: {\n findOptionsForType: (type: string) => ODataModelOptions<any> | undefined;\n }) {\n if (this.base) {\n const parent = findOptionsForType(this.base) as ODataModelOptions<any>;\n parent.children.push(this);\n this.parent = parent;\n }\n this.entitySet = this.api.findEntitySetForEntityType(this.type());\n let concurrencyFields: string[] = [];\n if (this.entitySet !== undefined) {\n concurrencyFields =\n this.entitySet.findAnnotation((a) => a.term === OPTIMISTIC_CONCURRENCY)\n ?.properties || [];\n }\n this._fields.forEach((field) => {\n let concurrency = concurrencyFields.indexOf(field.field) !== -1;\n field.configure({\n findOptionsForType,\n concurrency,\n });\n });\n }\n\n fields({\n include_navigation = false,\n include_parents = true,\n }: {\n include_parents?: boolean;\n include_navigation?: boolean;\n } = {}): ODataModelField<any>[] {\n return [\n ...(include_parents && this.parent !== undefined\n ? this.parent.fields({ include_navigation, include_parents })\n : []),\n ...this._fields.filter(\n (field) => include_navigation || !field.navigation\n ),\n ];\n }\n\n field(name: keyof T | string) {\n return this.fields({\n include_parents: true,\n include_navigation: true,\n }).find(\n (modelField: ODataModelField<any>) =>\n modelField.name === name || modelField.field === name\n );\n }\n\n attach(self: ODataModel<T>, resource: ODataModelResource<T>) {\n if (\n self._resource !== undefined &&\n resource.type() !== self._resource.type() &&\n !resource.isSubtypeOf(self._resource)\n )\n throw new Error(\n `Can't reattach ${resource.type()} to ${self._resource.type()}`\n );\n\n const current = self._resource;\n if (current === undefined || !current.isEqualTo(resource)) {\n self._resource = resource;\n self.events$.emit(\n new ODataModelEvent('attach', {\n model: self,\n previous: current,\n value: resource,\n })\n );\n }\n }\n\n //# region Resource\n static chain(\n child: ODataModel<any> | ODataCollection<any, ODataModel<any>>\n ): [\n ODataModel<any> | ODataCollection<any, ODataModel<any>>,\n ODataModelField<any> | null\n ][] {\n const chain = [] as any[];\n let tuple:\n | [\n ODataModel<any> | ODataCollection<any, ODataModel<any>>,\n ODataModelField<any> | null\n ]\n | null = [child, null];\n while (tuple !== null) {\n const parent = tuple as [\n ODataModel<any> | ODataCollection<any, ODataModel<any>>,\n ODataModelField<any> | null\n ];\n if (chain.some((p) => p[0] === parent[0])) break;\n chain.splice(0, 0, parent);\n tuple = tuple[0]._parent;\n }\n return chain;\n }\n\n static resource<T>(\n child: ODataModel<T> | ODataCollection<T, ODataModel<T>>\n ): ODataModelResource<T> | ODataCollectionResource<T> {\n let resource:\n | ODataModelResource<any>\n | ODataCollectionResource<any>\n | undefined = undefined;\n for (let [model, field] of ODataModelOptions.chain(child)) {\n resource =\n resource ||\n //model._resource ||\n (ODataModelOptions.isModel(model)\n ? (model as ODataModel<any>)._meta.modelResourceFactory()\n : (\n model as ODataCollection<any, ODataModel<any>>\n )._model.meta.collectionResourceFactory());\n if (resource === undefined) break;\n if (ODataModelOptions.isModel(model)) {\n let key = (model as ODataModel<any>).key({\n field_mapping: true,\n }) as EntityKey<any>;\n if (key !== undefined)\n resource =\n resource instanceof ODataEntitySetResource\n ? resource.entity(key)\n : resource.key(key);\n }\n if (field === null) {\n const query = model._resource?.cloneQuery().toQueryArguments();\n if (query !== undefined) resource.query.apply(query);\n continue;\n }\n resource = (field as ODataModelField<any>).resourceFactory<any, any>(\n resource as ODataModelResource<any>\n );\n }\n if (resource === undefined)\n throw new Error(`resource: Can't build resource for ${child}`);\n return resource;\n }\n\n collectionResourceFactory({\n baseResource,\n }: { baseResource?: ODataResource<T> } = {}): ODataCollectionResource<T> {\n if (this.entitySet !== undefined)\n return ODataEntitySetResource.factory<T>(\n this.api,\n this.entitySet.name,\n this.type(),\n new ODataPathSegments(),\n baseResource?.cloneQuery() || new ODataQueryOptions()\n );\n if (baseResource === undefined)\n throw new Error(\"collectionResourceFactory: Can't build resource\");\n return baseResource.clone() as ODataCollectionResource<T>;\n }\n\n modelResourceFactory({\n baseResource,\n }: {\n fromSet?: boolean;\n baseResource?: ODataResource<T>;\n } = {}): ODataModelResource<T> {\n const resource = this.collectionResourceFactory({ baseResource });\n if (resource instanceof ODataEntitySetResource) return resource.entity();\n return resource as ODataModelResource<T>;\n }\n\n entityResource(self: ODataModel<T>): ODataModelResource<T> {\n let resource = this.modelResourceFactory({\n baseResource: self._resource,\n fromSet: true,\n });\n const key = self.key({ field_mapping: true }) as EntityKey<T>;\n if (key !== undefined) return resource.key(key);\n return resource as ODataModelResource<T>;\n }\n //#endregion\n\n bind(\n self: ODataModel<T>,\n {\n parent,\n resource,\n annots,\n }: {\n parent?: [\n ODataModel<any> | ODataCollection<any, ODataModel<any>>,\n ODataModelField<any> | null\n ];\n resource?: ODataModelResource<T>;\n annots?: ODataEntityAnnotations;\n } = {}\n ) {\n // Parent\n if (parent !== undefined) {\n self._parent = parent;\n } else if (resource !== undefined) {\n // Resource\n this.attach(self, resource);\n }\n\n // Annotations\n self._annotations =\n annots || new ODataEntityAnnotations(ODataHelper[DEFAULT_VERSION]);\n\n const fields = this.fields({\n include_navigation: true,\n include_parents: true,\n });\n for (let field of fields) {\n Object.defineProperty(self, field.name, {\n configurable: true,\n get: () => this._get(self, field as ODataModelField<any>),\n set: (value: any) =>\n this._set(self, field as ODataModelField<any>, value),\n });\n }\n }\n\n query(\n self: ODataModel<T>,\n resource: ODataModelResource<T>,\n func: (q: {\n select(opts?: Select<T>): OptionHandler<Select<T>>;\n expand(opts?: Expand<T>): OptionHandler<Expand<T>>;\n format(opts?: string): OptionHandler<string>;\n apply(query: QueryArguments<T>): void;\n }) => void\n ) {\n func(resource.query);\n this.attach(self, resource);\n }\n\n resolveKey(\n value: any,\n {\n field_mapping = false,\n resolve = true,\n }: { field_mapping?: boolean; resolve?: boolean } = {}\n ): EntityKey<T> | { [name: string]: any } | undefined {\n const keyTypes = this.schema.keys({ include_parents: true });\n const key: any = {};\n for (var kt of keyTypes) {\n let v = value as any;\n let options = this as ODataModelOptions<any>;\n let field: ODataModelField<any> | undefined;\n for (let name of kt.name.split('/')) {\n if (options === undefined) break;\n field = options\n .fields({ include_parents: true })\n .find((field: ODataModelField<any>) => field.field === name);\n if (field !== undefined) {\n v =\n Types.isPlainObject(v) || ODataModelOptions.isModel(v)\n ? v[field.name]\n : v;\n options = field.meta as ODataModelOptions<any>;\n }\n }\n if (field === undefined) return undefined;\n let name = field_mapping ? field.field : field.name;\n if (kt.alias !== undefined) name = kt.alias;\n key[name] = v;\n }\n if (Types.isEmpty(key)) return undefined;\n return resolve ? Objects.resolveKey(key) : key;\n }\n\n resolveReferential(\n self: ODataModel<T> | T | { [name: string]: any },\n field: ODataModelField<any>,\n {\n field_mapping = false,\n resolve = true,\n }: { field_mapping?: boolean; resolve?: boolean } = {}\n ): { [name: string]: any } | undefined {\n const referential: any = {};\n for (var ref of field.referentials) {\n let from = this.fields({ include_parents: true }).find(\n (p: any) => p.field === ref.referencedProperty\n );\n let to = field.modelOptions\n .fields({ include_parents: true })\n .find((field: ODataModelField<any>) => field.field === ref.property);\n if (from !== undefined && to !== undefined) {\n let name = field_mapping ? to.field : to.name;\n referential[name] = (self as any)[from.name];\n }\n }\n if (Types.isEmpty(referential)) return undefined;\n return resolve\n ? Objects.resolveKey(referential, { single: false })\n : referential;\n }\n\n resolveReferenced(\n self: ODataModel<T> | T | { [name: string]: any },\n field: ODataModelField<any>,\n {\n field_mapping = false,\n resolve = true,\n }: { field_mapping?: boolean; resolve?: boolean } = {}\n ): { [name: string]: any } | undefined {\n const referenced: any = {};\n for (var ref of field.referentials) {\n let from = this.fields({ include_parents: true }).find(\n (field: ODataModelField<any>) => field.field === ref.property\n );\n let to = (field.meta as ODataModelOptions<any>)\n .fields({ include_parents: true })\n .find(\n (field: ODataModelField<any>) =>\n field.field === ref.referencedProperty\n );\n if (from !== undefined && to !== undefined) {\n let name = field_mapping ? to.field : to.name;\n referenced[name] = (self as any)[from.name];\n }\n }\n if (Types.isEmpty(referenced)) return undefined;\n return resolve\n ? Objects.resolveKey(referenced, { single: false })\n : referenced;\n }\n\n validate(\n self: ODataModel<T>,\n {\n method,\n navigation = false,\n }: {\n method?: 'create' | 'update' | 'patch';\n navigation?: boolean;\n } = {}\n ): { [name: string]: string[] } | undefined {\n const errors = this.fields({\n include_parents: true,\n include_navigation: navigation,\n }).reduce((acc, field) => {\n let value = (self as any)[field.name];\n let errs = field.validate(value, { method });\n return errs !== undefined\n ? Object.assign(acc, { [field.name]: errs })\n : acc;\n }, {});\n return !Types.isEmpty(errors) ? errors : undefined;\n }\n\n defaults(): T | { [name: string]: any } | undefined {\n const defs = this.fields().reduce((acc, field) => {\n let value = field.defaults();\n return value !== undefined\n ? Object.assign(acc, { [field.name]: value })\n : acc;\n }, {});\n return !Types.isEmpty(defs) ? defs : undefined;\n }\n\n hasChanged(\n self: ODataModel<T>,\n { include_navigation = false }: { include_navigation?: boolean } = {}\n ): boolean {\n return (\n !Types.isEmpty(self._changes) ||\n Object.values(self._relations)\n .filter(({ field }) => !field.navigation || include_navigation)\n .some(\n ({ field, state, model }) =>\n (!include_navigation || field.navigation) &&\n (state === ODataModelState.Changed ||\n (model !== null && model.hasChanged({ include_navigation })))\n )\n );\n }\n\n asEntity<R, M extends ODataModel<T>>(\n self: M,\n func: (model: M) => Observable<R>\n ): Observable<R> {\n const parent = self._parent;\n self._parent = null;\n return func(self).pipe(tap(() => (self._parent = parent)));\n }\n\n toEntity(\n self: ODataModel<T>,\n {\n client_id = false,\n include_navigation = false,\n include_concurrency = false,\n include_computed = false,\n include_key = true,\n include_non_field = false,\n changes_only = false,\n field_mapping = false,\n chain = [],\n }: {\n client_id?: boolean;\n include_navigation?: boolean;\n include_concurrency?: boolean;\n include_computed?: boolean;\n include_key?: boolean;\n include_non_field?: boolean;\n changes_only?: boolean;\n field_mapping?: boolean;\n chain?: (ODataModel<any> | ODataCollection<any, ODataModel<any>>)[];\n } = {}\n ): T | { [name: string]: any } {\n let attrs = self.attributes({\n changes_only,\n field_mapping,\n include_concurrency,\n include_computed,\n include_non_field,\n });\n\n let relations = Object.entries(self._relations)\n .filter(\n // Chain\n ([, { model }]) => chain.every((c) => c !== model)\n )\n .filter(\n // Changes only\n ([, { model, state }]) =>\n !changes_only ||\n (changes_only &&\n (state === ODataModelState.Changed ||\n (model !== null && model.hasChanged({ include_navigation }))))\n )\n .filter(\n ([, { field, model }]) =>\n // Navigation\n (include_navigation && field.navigation && model !== null) ||\n !field.navigation\n )\n .map(([k, { model, field, state }]) => {\n let changesOnly =\n changes_only &&\n state !== ODataModelState.Changed &&\n !!field.navigation;\n let includeKey = include_key && !!field.navigation;\n if (ODataModelOptions.isModel(model)) {\n return [\n k,\n (model as ODataModel<any>).toEntity({\n client_id,\n include_navigation,\n include_concurrency,\n include_non_field,\n field_mapping,\n changes_only: changesOnly,\n include_key: includeKey,\n chain: [self, ...chain],\n }),\n ];\n } else if (ODataModelOptions.isCollection(model)) {\n return [\n k,\n (model as ODataCollection<any, ODataModel<any>>).toEntities({\n client_id,\n include_navigation,\n include_concurrency,\n include_non_field,\n field_mapping,\n changes_only: changesOnly,\n include_key: includeKey,\n chain: [self, ...chain],\n }),\n ];\n }\n return [k, model];\n })\n .reduce((acc, [k, v]) => {\n const name = field_mapping\n ? this.fields().find(\n (field: ODataModelField<any>) => field.name === k\n )?.field || k\n : k;\n return Object.assign(acc, { [name]: v });\n }, {});\n\n // Create entity\n let entity = Object.assign(attrs, relations);\n\n // Add client_id\n if (client_id) {\n entity[this.cid] = (<any>self)[this.cid];\n }\n\n // Add key\n if (include_key) {\n entity = Object.assign(\n entity,\n this.resolveKey(self, { field_mapping, resolve: false })\n );\n }\n\n return entity;\n }\n\n attributes(\n self: ODataModel<T>,\n {\n changes_only = false,\n include_concurrency = false,\n include_computed = false,\n include_non_field = false,\n field_mapping = false,\n }: {\n changes_only?: boolean;\n include_concurrency?: boolean;\n include_computed?: boolean;\n include_non_field?: boolean;\n field_mapping?: boolean;\n } = {}\n ): { [name: string]: any } {\n // Attributes by fields (attributes for the model type)\n const fieldAttrs = this.fields().reduce((acc, f) => {\n const isChanged = f.name in self._changes;\n const name = field_mapping ? f.field : f.name;\n const value = isChanged\n ? self._changes[f.name]\n : self._attributes[f.name];\n if (f.concurrency && include_concurrency) {\n return Object.assign(acc, { [name]: value });\n } else if (f.computed && include_computed) {\n return Object.assign(acc, { [name]: value });\n } else if (changes_only && isChanged) {\n return Object.assign(acc, { [name]: value });\n } else if (!changes_only && !f.concurrency && !f.computed) {\n return Object.assign(acc, { [name]: value });\n } else {\n return acc;\n }\n }, {});\n if (!include_non_field) return fieldAttrs;\n const names = Object.keys(fieldAttrs);\n // Attributes from object (attributes for object)\n const nonFieldAttrs = Object.entries(self)\n .filter(\n ([k]) =>\n names.indexOf(k) === -1 && !k.startsWith('_') && !k.endsWith('$')\n )\n .reduce((acc, [k, v]) => Object.assign(acc, { [k]: v }), {});\n return { ...fieldAttrs, ...nonFieldAttrs };\n }\n\n reset(\n self: ODataModel<T>,\n { name, silent = false }: { name?: string; silent?: boolean } = {}\n ) {\n if (!Types.isEmpty(name) && (name as string) in self._changes) {\n const value = self._attributes[name as string];\n const previous = self._changes[name as string];\n delete self._changes[name as string];\n if (!silent) {\n self.events$.emit(\n new ODataModelEvent('change', {\n model: self,\n track: name,\n value,\n previous,\n })\n );\n }\n } else if (Types.isEmpty(name)) {\n const entries = Object.entries(self._changes);\n self._changes = {};\n if (!silent) {\n entries.forEach((entry) => {\n self.events$.emit(\n new ODataModelEvent('change', {\n track: entry[0],\n model: self,\n value: self._attributes[entry[0]],\n previous: entry[1],\n })\n );\n });\n }\n }\n }\n\n assign(\n self: ODataModel<T>,\n entity: Partial<T> | { [name: string]: any },\n {\n reset = false,\n silent = false,\n }: { reset?: boolean; silent?: boolean } = {}\n ) {\n self._resetting = reset;\n self._silent = silent;\n\n const changes: string[] = [];\n\n // Apply entity\n const model = self as any;\n Object.entries(entity)\n .filter(([, value]) => value !== undefined) // Filter undefined\n .forEach(([key, value]) => {\n const field = this.fields({\n include_parents: true,\n include_navigation: true,\n }).find(\n (field: ODataModelField<any>) =>\n (self._resetting && field.field === key) || field.name === key\n );\n\n if (field !== undefined) {\n // Delegated to private setter\n if (this._set(self, field, value)) changes.push(field.name);\n } else {\n // Basic assignment\n const current = model[key];\n model[key] = value;\n if (current !== value) changes.push(key);\n }\n });\n\n if (!self._silent && changes.length > 0) {\n self.events$.emit(\n new ODataModelEvent(self._resetting ? 'reset' : 'update', {\n model: self,\n options: { changes },\n })\n );\n }\n self._resetting = false;\n self._silent = false;\n }\n\n static isModel(obj: any) {\n return {}.toString.call(obj) === '[object Model]';\n }\n\n static isCollection(obj: any) {\n return {}.toString.call(obj) === '[object Collection]';\n }\n\n private updateCollection<F>(\n self: ODataModel<T>,\n field: ODataModelField<F>,\n collection: ODataCollection<F, ODataModel<F>>,\n value: ODataCollection<F, ODataModel<F>> | T[] | { [name: string]: any }[]\n ) {\n if (ODataModelOptions.isCollection(value)) {\n value = (value as ODataCollection<any, ODataModel<any>>).toEntities(\n INCLUDE_ALL\n );\n }\n collection._annotations = field.annotationsFactory(\n self.annots()\n ) as ODataEntitiesAnnotations;\n collection.assign(value as T[] | { [name: string]: any }[], {\n reset: self._resetting,\n silent: self._silent,\n });\n return collection.hasChanged();\n }\n private updateModel<F>(\n self: ODataModel<T>,\n field: ODataModelField<F>,\n model: ODataModel<F>,\n value: ODataModel<F> | F | { [name: string]: any }\n ) {\n if (ODataModelOptions.isModel(value)) {\n value = (value as ODataModel<F>).toEntity(INCLUDE_ALL);\n }\n model._annotations = field.annotationsFactory(\n self.annots()\n ) as ODataEntityAnnotations;\n model.assign(value as F | { [name: string]: any }, {\n reset: self._resetting,\n silent: self._silent,\n });\n return model.hasChanged();\n }\n\n private _get<F>(\n self: ODataModel<T>,\n field: ODataModelField<F>\n ): F | ODataModel<F> | ODataCollection<F, ODataModel<F>> | null | undefined {\n if (field.isStructuredType()) {\n return self._relations[field.name]?.model;\n } else {\n return this.attributes(self, {\n include_concurrency: true,\n include_computed: true,\n })[field.name];\n }\n }\n\n private _set<F>(\n self: ODataModel<T>,\n field: ODataModelField<F>,\n value:\n | F\n | F[]\n | { [name: string]: any }\n | { [name: string]: any }[]\n | ODataModel<F>\n | ODataCollection<F, ODataModel<F>>\n | null\n ): boolean {\n let changed = false;\n if (field.isStructuredType()) {\n // Ensures that the relation exists\n if (!(field.name in self._relations)) {\n self._relations[field.name] = {\n state: ODataModelState.Unchanged,\n model: null,\n field: field,\n subscription: null,\n };\n }\n\n const relation = self._relations[field.name];\n const currentModel = relation.model as\n | ODataModel<any>\n | ODataCollection<any, ODataModel<any>>\n | null;\n\n if (value === null) {\n relation.model = value as null;\n changed = currentModel !== value;\n this._unsubscribe(self, relation);\n } else if (ODataModelOptions.isCollection(currentModel)) {\n changed = this.updateCollection<F>(\n self,\n field,\n currentModel as ODataCollection<F, ODataModel<F>>,\n value as\n | ODataCollection<F, ODataModel<F>>\n | T[]\n | { [name: string]: any }[]\n );\n } else if (ODataModelOptions.isModel(currentModel)) {\n changed = this.updateModel<F>(\n self,\n field,\n currentModel as ODataModel<F>,\n value as ODataModel<F> | F | { [name: string]: any }\n );\n } else if (Types.isArray(value) || Types.isPlainObject(value)) {\n relation.model = field.modelCollectionFactory<T, F>({\n parent: self,\n value: value,\n reset: self._resetting,\n });\n changed = true;\n this._subscribe(self, relation);\n } else if (\n ODataModelOptions.isCollection(value) ||\n ODataModelOptions.isModel(value)\n ) {\n relation.model = value as\n | ODataModel<F>\n | ODataCollection<F, ODataModel<F>>\n | null;\n changed = true;\n this._subscribe(self, relation);\n }\n if (ODataModelOptions.isModel(relation.model)) {\n var ref = (relation.model as ODataModel<F>).referential(field);\n if (ref !== undefined) {\n Object.assign(self, ref);\n }\n }\n relation.state =\n self._resetting || !changed\n ? ODataModelState.Unchanged\n : ODataModelState.Changed;\n if (!self._silent && changed) {\n self.events$.emit(\n new ODataModelEvent('change', {\n track: field.name,\n model: self,\n value: relation.model,\n previous: currentModel,\n })\n );\n }\n } else {\n const attrs = this.attributes(self, {\n include_concurrency: true,\n include_computed: true,\n });\n const currentValue = attrs[field.name];\n changed = !Types.isEqual(currentValue, value);\n if (self._resetting) {\n delete self._changes[field.name];\n self._attributes[field.name] = value;\n } else if (Types.isEqual(value, self._attributes[field.name])) {\n delete self._changes[field.name];\n } else if (changed) {\n self._changes[field.name] = value;\n }\n if (!self._silent && changed) {\n self.events$.emit(\n new ODataModelEvent('change', {\n track: field.name,\n model: self,\n value,\n previous: currentValue,\n options: { key: field.isKey() },\n })\n );\n }\n }\n return changed;\n }\n\n private _unsubscribe<F>(\n self: ODataModel<T>,\n relation: ODataModelRelation<F>\n ) {\n if (relation.subscription !== null) {\n relation.subscription.unsubscribe();\n relation.subscription = null;\n }\n }\n private _subscribe<F>(self: ODataModel<T>, relation: ODataModelRelation<F>) {\n if (relation.subscription !== null) {\n throw new Error('Subscription already exists');\n }\n if (relation.model === null) {\n throw new Error('Subscription model is null');\n }\n if (!relation.model.isParentOf(self)) {\n relation.model._parent = [self, relation.field];\n }\n relation.subscription = relation.model.events$.subscribe(\n (event: ODataModelEvent<any>) => {\n if (\n BUBBLING.indexOf(event.name) !== -1 &&\n event.bubbling &&\n !event.visited(self)\n ) {\n if (event.model === relation.model) {\n if (\n event.name === 'change' &&\n relation.field.navigation &&\n event.options?.key\n ) {\n var ref = relation.model.referential(relation.field);\n if (ref !== undefined) {\n Object.assign(self, ref);\n }\n }\n }\n\n event.push(self, relation.field.name);\n self.events$.emit(event);\n }\n }\n );\n }\n}\n","import { map, switchMap, tap } from 'rxjs/operators';\nimport { forkJoin, Observable, of, throwError } from 'rxjs';\n\nimport {\n ODataEntitySetResource,\n ODataEntityResource,\n ODataNavigationPropertyResource,\n ODataEntitiesAnnotations,\n HttpOptions,\n ODataEntities,\n ODataPropertyResource,\n ODataEntityAnnotations,\n Select,\n Expand,\n OptionHandler,\n Transform,\n Filter,\n OrderBy,\n EntityKey,\n QueryArguments,\n HttpQueryOptions,\n} from '../resources/index';\n\nimport { EventEmitter } from '@angular/core';\nimport { Types } from '../utils/types';\nimport { ODataModel } from './model';\nimport {\n BUBBLING,\n ODataModelResource,\n ODataCollectionResource,\n ODataModelOptions,\n ODataModelEvent,\n ODataModelField,\n ODataModelState,\n ODataModelEntry,\n INCLUDE_ALL,\n} from './options';\nimport { ODataHelper } from '../helper';\nimport { DEFAULT_VERSION } from '../constants';\n\nexport class ODataCollection<T, M extends ODataModel<T>>\n implements Iterable<M>\n{\n static model: typeof ODataModel | null = null;\n _parent:\n | [\n ODataModel<any> | ODataCollection<any, ODataModel<any>>,\n ODataModelField<any> | null\n ]\n | null = null;\n _resource?: ODataCollectionResource<T>;\n _annotations!: ODataEntitiesAnnotations;\n _entries: ODataModelEntry<T, M>[] = [];\n _model: typeof ODataModel;\n\n models() {\n return this._entries\n .filter((e) => e.state !== ODataModelState.Removed)\n .map((e) => e.model);\n }\n\n get length(): number {\n return this.models().length;\n }\n\n //Events\n events$ = new EventEmitter<ODataModelEvent<T>>();\n constructor(\n entities: Partial<T>[] | { [name: string]: any }[] = [],\n {\n parent,\n resource,\n annots,\n model,\n reset = false,\n }: {\n parent?: [ODataModel<any>, ODataModelField<any>];\n resource?: ODataCollectionResource<T>;\n annots?: ODataEntitiesAnnotations;\n model?: typeof ODataModel;\n reset?: boolean;\n } = {}\n ) {\n const Klass = this.constructor as typeof ODataCollection;\n if (model === undefined && Klass.model !== null) model = Klass.model;\n if (model === undefined) throw new Error('Collection need model');\n this._model = model;\n\n // Parent\n if (parent !== undefined) {\n this._parent = parent;\n } else {\n // Resource\n resource = resource || this._model.meta.collectionResourceFactory();\n if (resource === undefined)\n throw new Error(`Can't create collection without resource`);\n this.attach(resource);\n }\n\n // Annotations\n this._annotations =\n annots ||\n new ODataEntitiesAnnotations(\n resource?.api.options.helper || ODataHelper[DEFAULT_VERSION]\n );\n\n entities = entities || [];\n this.assign(entities, { reset });\n }\n\n isParentOf(\n child: ODataModel<any> | ODataCollection<any, ODataModel<any>>\n ): boolean {\n return (\n child !== this &&\n ODataModelOptions.chain(child).some((p) => p[0] === this)\n );\n }\n\n resource(): ODataCollectionResource<T> {\n return ODataModelOptions.resource<T>(this) as ODataCollectionResource<T>;\n }\n\n attach(resource: ODataCollectionResource<T>) {\n if (\n this._resource !== undefined &&\n this._resource.type() !== resource.type() &&\n !resource.isSubtypeOf(this._resource)\n )\n throw new Error(\n `Can't reattach ${resource.type()} to ${this._resource.type()}`\n );\n\n this._entries.forEach(({ model }) => {\n const mr = this._model.meta.modelResourceFactory({\n baseResource: resource,\n }) as ODataModelResource<T>;\n model.attach(mr);\n });\n\n const current = this._resource;\n if (current === undefined || !current.isEqualTo(resource)) {\n this._resource = resource;\n this.events$.emit(\n new ODataModelEvent('attach', {\n collection: this,\n previous: current,\n value: resource,\n })\n );\n }\n }\n\n asEntitySet<R>(func: (collection: this) => Observable<R>): Observable<R> {\n const parent = this._parent;\n this._parent = null;\n return func(this).pipe(tap(() => (this._parent = parent)));\n }\n\n annots() {\n return this._annotations;\n }\n\n private modelFactory(\n data: Partial<T> | { [name: string]: any },\n { reset = false }: { reset?: boolean } = {}\n ): M {\n let Model = this._model;\n const helper = this._annotations.helper;\n const annots = new ODataEntityAnnotations(\n helper,\n helper.annotations(data) || {}\n );\n\n if (annots?.type !== undefined && Model.meta !== null) {\n let schema = Model.meta.findChildOptions((o) =>\n o.isTypeOf(annots.type as string)\n )?.schema;\n if (schema !== undefined && schema.model !== undefined)\n // Change to child model\n Model = schema.model;\n }\n\n return new Model(data, {\n annots,\n reset,\n parent: [this, null],\n }) as M;\n }\n\n toEntities({\n client_id = false,\n include_navigation = false,\n include_concurrency = false,\n include_computed = false,\n include_key = true,\n include_non_field = false,\n changes_only = false,\n field_mapping = false,\n chain = [],\n }: {\n client_id?: boolean;\n include_navigation?: boolean;\n include_concurrency?: boolean;\n include_computed?: boolean;\n include_key?: boolean;\n include_non_field?: boolean;\n changes_only?: boolean;\n field_mapping?: boolean;\n chain?: (ODataModel<any> | ODataCollection<any, ODataModel<any>>)[];\n } = {}): (T | { [name: string]: any })[] {\n return this._entries\n .filter(\n ({ model, state }) =>\n state !== ODataModelState.Removed && chain.every((c) => c !== model)\n )\n .map(({ model, state }) => {\n var changesOnly = changes_only && state !== ODataModelState.Added;\n return model.toEntity({\n client_id,\n include_navigation,\n include_concurrency,\n include_computed,\n include_key,\n include_non_field,\n field_mapping,\n changes_only: changesOnly,\n chain: [this, ...chain],\n });\n });\n }\n\n hasChanged({ include_navigation }: { include_navigation?: boolean } = {}) {\n return (\n this._entries.some((e) => e.state !== ODataModelState.Unchanged) ||\n this.models().some((m) => m.hasChanged({ include_navigation }))\n );\n }\n\n clone<C extends ODataCollection<T, M>>() {\n let Ctor = <typeof ODataCollection>this.constructor;\n return new Ctor(this.toEntities(INCLUDE_ALL), {\n resource: this.resource() as ODataCollectionResource<T>,\n annots: this.annots(),\n }) as C;\n }\n\n fetch({\n withCount,\n ...options\n }: HttpOptions & {\n withCount?: boolean;\n } = {}): Observable<this> {\n const resource = this.resource();\n if (resource === undefined)\n return throwError('fetch: Resource is undefined');\n\n let obs$: Observable<ODataEntities<any>>;\n if (resource instanceof ODataEntitySetResource) {\n obs$ = resource.get({ withCount, ...options });\n } else if (resource instanceof ODataNavigationPropertyResource) {\n obs$ = resource.get({ responseType: 'entities', withCount, ...options });\n } else {\n obs$ = resource.get({ responseType: 'entities', withCount, ...options });\n }\n this.events$.emit(\n new ODataModelEvent('request', { collection: this, value: obs$ })\n );\n return obs$.pipe(\n map(({ entities, annots }) => {\n this._annotations = annots;\n this.assign(entities || [], { reset: true });\n this.events$.emit(new ODataModelEvent('sync', { collection: this }));\n return this;\n })\n );\n }\n\n fetchAll(options?: HttpOptions): Observable<this> {\n const resource = this.resource() as ODataCollectionResource<T> | undefined;\n if (resource === undefined)\n return throwError('fetchAll: Resource is undefined');\n\n if (resource instanceof ODataPropertyResource)\n return throwError('fetchAll: Resource is ODataPropertyResource');\n\n const obs$ = resource.fetchAll(options);\n this.events$.emit(\n new ODataModelEvent('request', {\n collection: this,\n options: { observable: obs$ },\n })\n );\n return obs$.pipe(\n map((entities) => {\n this._annotations = new ODataEntitiesAnnotations(\n resource?.api.options.helper\n );\n this.assign(entities || [], { reset: true });\n this.events$.emit(\n new ODataModelEvent('sync', {\n collection: this,\n options: { entities },\n })\n );\n return this;\n })\n );\n }\n\n /**\n * Save all models in the collection\n * @param relModel The model is relationship\n * @param method The method to use\n * @param options HttpOptions\n */\n save({\n relModel = false,\n refOnly = false,\n method,\n ...options\n }: HttpOptions & {\n relModel?: boolean;\n refOnly?: boolean;\n method?: 'update' | 'patch';\n } = {}): Observable<this> {\n const resource = this.resource();\n if (resource === undefined)\n return throwError('saveAll: Resource is undefined');\n\n if (resource instanceof ODataPropertyResource)\n return throwError('fetchAll: Resource is ODataPropertyResource');\n\n let toDestroy: M[] = [];\n let toCreate: M[] = [];\n let toUpdate: M[] = [];\n\n this._entries.forEach((entry) => {\n const model = entry.model;\n if (entry.state === ODataModelState.Removed) {\n toDestroy.push(entry.model);\n } else if (entry.state === ODataModelState.Added) {\n toCreate.push(entry.model);\n } else if (model.hasChanged()) {\n toUpdate.push(entry.model);\n }\n });\n if (toDestroy.length > 0 || toCreate.length > 0 || toUpdate.length > 0) {\n const obs$ = forkJoin([\n ...toDestroy.map((m) =>\n relModel\n ? m.asEntity((e) => e.destroy(options))\n : this.removeReference(m, options)\n ),\n ...toCreate.map((m) =>\n relModel\n ? m.asEntity((e) => e.save({ method: 'create', ...options }))\n : refOnly\n ? this.addReference(m, options)\n : m\n .asEntity((e) =>\n e.save({ method: m.isNew() ? 'create' : method, ...options })\n )\n .pipe(switchMap((r) => this.addReference(r, options)))\n ),\n ...toUpdate.map((m) =>\n m.asEntity((e) => e.save({ method, ...options }))\n ),\n ]);\n this.events$.emit(\n new ODataModelEvent('request', {\n collection: this,\n options: { observable: obs$ },\n })\n );\n return obs$.pipe(\n map(() => {\n this._entries = this._entries\n .filter((entry) => entry.state !== ODataModelState.Removed)\n .map((entry) =>\n Object.assign(entry, { state: ODataModelState.Unchanged })\n );\n this.events$.emit(new ODataModelEvent('sync', { collection: this }));\n return this;\n })\n );\n }\n return of(this);\n }\n\n private addReference(model: M, options?: HttpOptions): Observable<M> {\n const resource = this.resource();\n if (!model.isNew() && resource instanceof ODataNavigationPropertyResource) {\n return resource\n .reference()\n .add(\n model._meta.entityResource(model) as ODataEntityResource<T>,\n options\n )\n .pipe(map(() => model));\n }\n return of(model);\n }\n\n private _addModel(\n model: M,\n {\n silent = false,\n reset = false,\n position = -1,\n }: { silent?: boolean; reset?: boolean; position?: number } = {}\n ): M | undefined {\n const key = model.key();\n let entry = this._findEntry({\n model,\n key,\n cid: (<any>model)[this._model.meta.cid],\n });\n if (entry === undefined || entry.state === ODataModelState.Removed) {\n if (entry !== undefined && entry.state === ODataModelState.Removed) {\n const index = this._entries.indexOf(entry);\n this._entries.splice(index, 1);\n }\n\n // Create Entry\n entry = {\n state: reset ? ODataModelState.Unchanged : ODataModelState.Added,\n model,\n key: model.key(),\n subscription: null,\n };\n // Subscribe\n this._subscribe(entry);\n // Now add\n if (position >= 0) this._entries.splice(position, 0, entry);\n else this._entries.push(entry);\n\n if (!silent) {\n model.events$.emit(\n new ODataModelEvent('add', { model, collection: this })\n );\n }\n return entry.model;\n }\n return undefined;\n }\n\n protected addModel(\n model: M,\n {\n silent = false,\n reset = false,\n position = -1,\n }: { silent?: boolean; reset?: boolean; position?: number } = {}\n ) {\n if (position < 0) position = this._bisect(model);\n const added = this._addModel(model, { silent, reset, position });\n if (!silent && added !== undefined) {\n this.events$.emit(\n new ODataModelEvent('update', {\n collection: this,\n options: { added: [added], removed: [], merged: [] },\n })\n );\n }\n }\n\n add(\n model: M,\n {\n silent = false,\n server = true,\n position = -1,\n }: { silent?: boolean; server?: boolean; position?: number } = {}\n ): Observable<this> {\n if (server) {\n return this.addReference(model).pipe(\n map((model) => {\n this.addModel(model, { silent, position, reset: true });\n return this;\n })\n );\n } else {\n this.addModel(model, { silent, position });\n return of(this);\n }\n }\n\n private removeReference(model: M, options?: HttpOptions): Observable<M> {\n const resource = this.resource();\n if (!model.isNew() && resource instanceof ODataNavigationPropertyResource) {\n return resource\n .reference()\n .remove(\n model._meta.entityResource(model) as ODataEntityResource<T>,\n options\n )\n .pipe(map(() => model));\n }\n return of(model);\n }\n\n private _removeModel(\n model: M,\n {\n silent = false,\n reset = false,\n }: { silent?: boolean; reset?: boolean } = {}\n ): M | undefined {\n const key = model.key();\n let entry = this._findEntry({\n model,\n key,\n cid: (<any>model)[this._model.meta.cid],\n });\n if (entry !== undefined && entry.state !== ODataModelState.Removed) {\n // Emit Event\n if (!silent)\n model.events$.emit(\n new ODataModelEvent('remove', { model, collection: this })\n );\n\n // Now remove\n const index = this._entries.indexOf(entry);\n this._entries.splice(index, 1);\n if (!(reset || entry.state === ODataModelState.Added)) {\n // Move to end of array and mark as removed\n entry.state = ODataModelState.Removed;\n this._entries.push(entry);\n }\n this._unsubscribe(entry);\n return entry.model;\n }\n return undefined;\n }\n\n protected removeModel(\n model: M,\n {\n silent = false,\n reset = false,\n }: { silent?: boolean; reset?: boolean } = {}\n ) {\n const removed = this._removeModel(model, { silent, reset });\n if (!silent && removed !== undefined) {\n this.events$.emit(\n new ODataModelEvent('update', {\n collection: this,\n options: { added: [], removed: [removed], merged: [] },\n })\n );\n }\n }\n\n remove(\n model: M,\n {\n silent = false,\n server = true,\n }: { silent?: boolean; server?: boolean } = {}\n ): Observable<this> {\n if (server) {\n return this.removeReference(model).pipe(\n map((model) => {\n this.removeModel(model, { silent, reset: true });\n return this;\n })\n );\n } else {\n this.removeModel(model, { silent });\n return of(this);\n }\n }\n\n create(\n attrs: T = {} as T,\n {\n silent = false,\n server = true,\n }: { silent?: boolean; server?: boolean } = {}\n ) {\n const model = this.modelFactory(attrs);\n return (\n model.isValid() && server ? model.asEntity((m) => m.save()) : of(model)\n ).pipe(\n switchMap((model) => this.add(model, { silent, server })),\n map(() => model)\n );\n }\n\n set(path: string | string[], value: any) {\n const Model = this._model;\n const pathArray = (\n Types.isArray(path) ? path : (path as string).match(/([^[.\\]])+/g)\n ) as any[];\n if (pathArray.length === 0) return undefined;\n if (pathArray.length > 1) {\n const model = this._entries[Number(pathArray[0])].model;\n return model.set(pathArray.slice(1), value);\n }\n if (pathArray.length === 1 && ODataModelOptions.isModel(value)) {\n let toAdd: M[] = [];\n let toMerge: M[] = [];\n let toRemove: M[] = [];\n let index = Number(pathArray[0]);\n const model = this.models()[index];\n const entry = this._findEntry({ model });\n if (entry !== undefined) {\n //TODO: Remove/Add or Merge?\n // Merge\n entry.model.assign(value.toEntity({ client_id: true, ...INCLUDE_ALL }));\n if (entry.model.hasChanged()) toMerge.push(model);\n } else {\n // Add\n this._addModel(value);\n toAdd.push(model);\n }\n this.events$.emit(\n new ODataModelEvent('update', {\n collection: this,\n options: { added: toAdd, removed: toRemove, merged: toMerge },\n })\n );\n return value;\n }\n }\n\n get(path: string | string[] | number): any {\n const Model = this._model;\n const pathArray = (\n Types.isArray(path) ? path : `${path}`.match(/([^[.\\]])+/g)\n ) as any[];\n if (pathArray.length === 0) return undefined;\n const value = this.models()[Number(pathArray[0])];\n if (pathArray.length > 1 && ODataModelOptions.isModel(value)) {\n return value.get(pathArray.slice(1));\n }\n return value;\n }\n\n reset({\n path,\n silent = false,\n }: { path?: string | string[]; silent?: boolean } = {}) {\n if (Types.isEmpty(path)) {\n this.models().forEach((m) => m.reset({ silent }));\n } else {\n const Model = this._model;\n const pathArray = (\n Types.isArray(path) ? path : `${path}`.match(/([^[.\\]])+/g)\n ) as any[];\n const value = this.models()[Number(pathArray[0])];\n if (ODataModelOptions.isModel(value)) {\n value.reset({ path: pathArray.slice(1), silent });\n }\n }\n }\n\n assign(\n objects: Partial<T>[] | { [name: string]: any }[] | M[],\n {\n reset = false,\n silent = false,\n }: { reset?: boolean; silent?: boolean } = {}\n ) {\n const Model = this._model;\n\n let toAdd: M[] = [];\n let toMerge: M[] = [];\n let toRemove: M[] = [];\n let toSort: [M, number][] = [];\n let modelMap: string[] = [];\n objects.forEach((obj, index) => {\n const isModel = ODataModelOptions.isModel(obj);\n const key =\n Model !== null && Model.meta ? Model.meta.resolveKey(obj) : undefined;\n const cid =\n Model.meta.cid in obj ? (<any>obj)[Model.meta.cid] : undefined;\n // Try find entry\n const entry = isModel\n ? this._findEntry({ model: obj as M }) // By Model\n : this._findEntry({ cid, key }); // By Cid or Key\n\n let model: M;\n if (entry !== undefined) {\n // Merge\n model = entry.model;\n if (model !== obj) {\n // Get entity from model\n if (isModel) {\n const entity = (obj as M).toEntity({\n client_id: true,\n ...INCLUDE_ALL,\n });\n model.assign(entity, { reset, silent });\n } else {\n const helper = this._annotations.helper;\n const annots = new ODataEntityAnnotations(\n helper,\n helper.annotations(obj) || {}\n );\n const entity = annots.attributes<T>(obj, 'full');\n model._annotations = annots;\n model.assign(entity, { reset, silent });\n }\n // Model Change?\n if (model.hasChanged()) toMerge.push(model);\n }\n // Has Sort or Index Change?\n if (toSort.length > 0 || index !== this.models().indexOf(model)) {\n toSort.push([model, index]);\n }\n } else {\n // Add\n model = isModel\n ? (obj as M)\n : this.modelFactory(obj as Partial<T> | { [name: string]: any }, {\n reset,\n });\n toAdd.push(model);\n }\n modelMap.push((<any>model)[Model.meta.cid]);\n });\n this._entries\n .filter((e) => modelMap.indexOf((<any>e.model)[Model.meta.cid]) === -1)\n .forEach((entry) => {\n toRemove.push(entry.model);\n });\n\n toRemove.forEach((m) => this._removeModel(m, { silent: silent, reset }));\n toAdd.forEach((m) => this._addModel(m, { silent: silent, reset }));\n toSort.forEach((m) => {\n this._removeModel(m[0], { silent: true, reset });\n this._addModel(m[0], { silent: true, reset, position: m[1] });\n });\n\n if (\n toAdd.length > 0 ||\n toRemove.length > 0 ||\n toMerge.length > 0 ||\n toSort.length > 0\n ) {\n this._sortBy = null;\n if (!silent) {\n this.events$.emit(\n new ODataModelEvent(reset ? 'reset' : 'update', {\n collection: this,\n options: {\n added: toAdd,\n removed: toRemove,\n merged: toMerge,\n sorted: toSort,\n },\n })\n );\n }\n }\n }\n\n query(\n func: (q: {\n select(opts?: Select<T>): OptionHandler<Select<T>>;\n expand(opts?: Expand<T>): OptionHandler<Expand<T>>;\n transform(opts?: Transform<T>): OptionHandler<Transform<T>>;\n search(opts?: string): OptionHandler<string>;\n filter(opts?: Filter): OptionHandler<Filter>;\n orderBy(opts?: OrderBy<T>): OptionHandler<OrderBy<T>>;\n format(opts?: string): OptionHandler<string>;\n top(opts?: number): OptionHandler<number>;\n skip(opts?: number): OptionHandler<number>;\n skiptoken(opts?: string): OptionHandler<string>;\n paging({\n skip,\n skiptoken,\n top,\n }: {\n skip?: number;\n skiptoken?: string;\n top?: number;\n }): void;\n clearPaging(): void;\n apply(query: QueryArguments<T>): void;\n }) => void\n ) {\n const resource = this.resource() as ODataCollectionResource<T> | undefined;\n if (resource === undefined)\n throw new Error(`Can't query without ODataResource`);\n func(resource.query);\n this.attach(resource);\n }\n\n protected callFunction<P, R>(\n name: string,\n params: P | null,\n responseType: 'property' | 'model' | 'collection' | 'none',\n { ...options }: {} & HttpQueryOptions<R> = {}\n ): Observable<R | ODataModel<R> | ODataCollection<R, ODataModel<R>> | null> {\n const resource = this.resource();\n if (resource instanceof ODataEntitySetResource) {\n const func = resource.function<P, R>(name);\n func.query.apply(options);\n switch (responseType) {\n case 'property':\n return func.callProperty(params, options);\n case 'model':\n return func.callModel(params, options);\n case 'collection':\n return func.callCollection(params, options);\n default:\n return func.call(params, { responseType, ...options });\n }\n }\n return throwError(`Can't function without ODataEntitySetResource`);\n }\n\n protected callAction<P, R>(\n name: string,\n params: P | null,\n responseType: 'property' | 'model' | 'collection' | 'none',\n { ...options }: {} & HttpQueryOptions<R> = {}\n ): Observable<R | ODataModel<R> | ODataCollection<R, ODataModel<R>> | null> {\n const resource = this.resource();\n if (resource instanceof ODataEntitySetResource) {\n const action = resource.action<P, R>(name);\n action.query.apply(options);\n switch (responseType) {\n case 'property':\n return action.callProperty(params, options);\n case 'model':\n return action.callModel(params, options);\n case 'collection':\n return action.callCollection(params, options);\n default:\n return action.call(params, { responseType, ...options });\n }\n }\n return throwError(`Can't action without ODataEntitySetResource`);\n }\n\n private _unsubscribe(entry: ODataModelEntry<T, M>) {\n if (entry.subscription !== null) {\n entry.subscription.unsubscribe();\n entry.subscription = null;\n }\n }\n\n private _subscribe(entry: ODataModelEntry<T, M>) {\n if (entry.subscription !== null) {\n throw new Error('Subscription already exists');\n }\n if (!entry.model.isParentOf(this)) {\n entry.model._parent = [this, null];\n }\n entry.subscription = entry.model.events$.subscribe(\n (event: ODataModelEvent<T>) => {\n if (\n BUBBLING.indexOf(event.name) !== -1 &&\n event.bubbling &&\n !event.visited(this)\n ) {\n if (event.model === entry.model) {\n if (event.name === 'destroy') {\n this.removeModel(entry.model, { reset: true });\n } else if (event.name === 'change' && event.options?.key) {\n entry.key = entry.model.key();\n }\n }\n\n const index = this.models().indexOf(entry.model);\n event.push(this, index);\n this.events$.emit(event);\n }\n }\n );\n }\n\n private _findEntry({\n model,\n cid,\n key,\n }: {\n model?: ODataModel<T>;\n cid?: string;\n key?: EntityKey<T> | { [name: string]: any };\n } = {}) {\n return this._entries.find((entry) => {\n const byModel = model !== undefined && entry.model.equals(model);\n const byCid =\n cid !== undefined && (<any>entry.model)[this._model.meta.cid] === cid;\n const byKey =\n key !== undefined &&\n entry.key !== undefined &&\n Types.isEqual(entry.key, key);\n return byModel || byCid || byKey;\n });\n }\n\n // Collection functions\n get [Symbol.toStringTag]() {\n return 'Collection';\n }\n\n public [Symbol.iterator]() {\n let pointer = 0;\n let models = this.models();\n return {\n next(): IteratorResult<M> {\n return {\n done: pointer === models.length,\n value: models[pointer++],\n };\n },\n };\n }\n\n contains(model: M) {\n return this.models().some((m) => m.equals(model));\n }\n\n filter(predicate: (m: M) => boolean): M[] {\n return this.models().filter(predicate);\n }\n\n //#region Sort\n private _bisect(model: M) {\n let index = -1;\n if (this._sortBy !== null) {\n for (index = 0; index < this._entries.length; index++) {\n if (this._compare(model, this._entries[index], this._sortBy, 0) < 0) {\n return index;\n }\n }\n }\n return index;\n }\n\n private _compare(\n e1: ODataModelEntry<T, M> | M,\n e2: ODataModelEntry<T, M> | M,\n by: { field: string | keyof T; order?: 1 | -1 }[],\n index: number\n ): number {\n let m1 = ODataModelOptions.isModel(e1)\n ? (e1 as M)\n : (e1 as ODataModelEntry<T, M>).model;\n let m2 = ODataModelOptions.isModel(e2)\n ? (e2 as M)\n : (e2 as ODataModelEntry<T, M>).model;\n let value1 = m1.get(by[index].field as string);\n let value2 = m2.get(by[index].field as string);\n let result: number = 0;\n\n if (value1 == null && value2 != null) result = -1;\n else if (value1 != null && value2 == null) result = 1;\n else if (value1 == null && value2 == null) result = 0;\n else if (typeof value1 == 'string' || value1 instanceof String) {\n if (value1.localeCompare && value1 != value2) {\n return (by[index].order || 1) * value1.localeCompare(value2);\n }\n } else {\n result = value1 < value2 ? -1 : 1;\n }\n\n if (value1 == value2) {\n return by.length - 1 > index ? this._compare(e1, e2, by, index + 1) : 0;\n }\n\n return (by[index].order || 1) * result;\n }\n\n _sortBy: { field: string | keyof T; order?: 1 | -1 }[] | null = null;\n isSorted() {\n return this._sortBy !== null;\n }\n\n sort(\n by: { field: string | keyof T; order?: 1 | -1 }[],\n { silent }: { silent?: boolean } = {}\n ) {\n this._sortBy = by;\n this._entries = this._entries.sort(\n (e1: ODataModelEntry<T, M>, e2: ODataModelEntry<T, M>) =>\n this._compare(e1, e2, by, 0)\n );\n if (!silent) {\n this.events$.emit(\n new ODataModelEvent('update', {\n collection: this,\n })\n );\n }\n }\n //#endregion\n}\n","import { EventEmitter } from '@angular/core';\nimport { Observable, throwError, forkJoin, NEVER, of } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\n\nimport {\n ODataEntityResource,\n ODataNavigationPropertyResource,\n ODataPropertyResource,\n HttpOptions,\n ODataEntityAnnotations,\n ODataEntity,\n Select,\n Expand,\n EntityKey,\n OptionHandler,\n QueryArguments,\n HttpQueryOptions,\n} from '../resources/index';\n\nimport { ODataCollection } from './collection';\nimport { Objects, Types } from '../utils';\nimport { ODataStructuredType } from '../schema';\nimport {\n ModelOptions,\n ODataModelEvent,\n ODataModelOptions,\n ODataModelRelation,\n ODataModelResource,\n ODataModelField,\n INCLUDE_ALL,\n} from './options';\n\n// @dynamic\nexport class ODataModel<T> {\n // Properties\n static options: ModelOptions;\n static meta: ODataModelOptions<any>;\n static buildMeta<T>(options: ModelOptions, schema: ODataStructuredType<T>) {\n this.meta = new ODataModelOptions<T>(options, schema);\n }\n // Parent\n _parent:\n | [\n ODataModel<any> | ODataCollection<any, ODataModel<any>>,\n ODataModelField<any> | null\n ]\n | null = null;\n _attributes: { [name: string]: any } = {};\n _changes: { [name: string]: any } = {};\n _relations: { [name: string]: ODataModelRelation<any> } = {};\n _resource?: ODataModelResource<T>;\n _annotations!: ODataEntityAnnotations;\n _resetting: boolean = false;\n _silent: boolean = false;\n _meta: ODataModelOptions<T>;\n // Events\n events$ = new EventEmitter<ODataModelEvent<T>>();\n constructor(\n data: Partial<T> | { [name: string]: any } = {},\n {\n parent,\n resource,\n annots,\n reset = false,\n }: {\n parent?: [\n ODataModel<any> | ODataCollection<any, ODataModel<any>>,\n ODataModelField<any> | null\n ];\n resource?: ODataModelResource<T>;\n annots?: ODataEntityAnnotations;\n reset?: boolean;\n } = {}\n ) {\n const Klass = this.constructor as typeof ODataModel;\n if (Klass.meta === undefined)\n throw new Error(`Can't create model without metadata`);\n this._meta = Klass.meta;\n this._meta.bind(this, { parent, resource, annots });\n\n // Client Id\n (<any>this)[this._meta.cid] =\n (<any>data)[this._meta.cid] || Objects.uniqueId('c');\n\n let attrs = this.annots().attributes<T>(data, 'full');\n let defaults = this.defaults();\n\n this.assign(Objects.merge(defaults, attrs), { reset });\n }\n get [Symbol.toStringTag]() {\n return 'Model';\n }\n\n equals(other: ODataModel<T>) {\n const thisKey = this.key();\n const otherKey = other.key();\n return (\n this === other ||\n (typeof this === typeof other &&\n ((<any>this)[this._meta.cid] === (<any>other)[this._meta.cid] ||\n (thisKey !== undefined &&\n otherKey !== undefined &&\n Types.isEqual(thisKey, otherKey))))\n );\n }\n\n //#region Resources\n resource(): ODataModelResource<T> {\n return ODataModelOptions.resource<T>(this) as ODataModelResource<T>;\n }\n\n navigationProperty<N>(name: string): ODataNavigationPropertyResource<N> {\n const field = this._meta.field(name);\n if (field === undefined || !field.navigation)\n throw Error(`Can't find navigation property ${name}`);\n\n const resource = this.resource();\n if (!(resource instanceof ODataEntityResource) || !resource.hasKey())\n throw Error(\"Can't get navigation without ODataEntityResource with key\");\n\n return field.resourceFactory<T, N>(\n resource\n ) as ODataNavigationPropertyResource<N>;\n }\n\n property<N>(name: string): ODataPropertyResource<N> {\n const field = this._meta.field(name);\n if (field === undefined || field.navigation)\n throw Error(`Can't find property ${name}`);\n\n const resource = this.resource();\n if (!(resource instanceof ODataEntityResource) || !resource.hasKey())\n throw Error(\"Can't get property without ODataEntityResource with key\");\n\n return field.resourceFactory<T, N>(resource) as ODataPropertyResource<N>;\n }\n\n attach(resource: ODataModelResource<T>) {\n return this._meta.attach(this, resource);\n }\n //#endregion\n\n schema() {\n return this._meta.schema;\n }\n\n annots() {\n return this._annotations;\n }\n\n key({\n field_mapping = false,\n resolve = true,\n }: { field_mapping?: boolean; resolve?: boolean } = {}):\n | EntityKey<T>\n | { [name: string]: any }\n | undefined {\n return this._meta.resolveKey(this, { field_mapping, resolve });\n }\n\n isNew() {\n return this.key() === undefined;\n }\n\n isParentOf(\n child: ODataModel<any> | ODataCollection<any, ODataModel<any>>\n ): boolean {\n return (\n child !== this &&\n ODataModelOptions.chain(child).some((p) => p[0] === this)\n );\n }\n\n referential(\n field: ODataModelField<any>,\n {\n field_mapping = false,\n resolve = true,\n }: { field_mapping?: boolean; resolve?: boolean } = {}\n ): { [name: string]: any } | undefined {\n return this._meta.resolveReferential(this, field, {\n field_mapping,\n resolve,\n });\n }\n\n referenced(\n field: ODataModelField<any>,\n {\n field_mapping = false,\n resolve = true,\n }: { field_mapping?: boolean; resolve?: boolean } = {}\n ): { [name: string]: any } | undefined {\n return this._meta.resolveReferenced(this, field, {\n field_mapping,\n resolve,\n });\n }\n\n // Validation\n _errors?: { [key: string]: any };\n protected validate({\n method,\n navigation = false,\n }: {\n method?: 'create' | 'update' | 'patch';\n navigation?: boolean;\n } = {}) {\n return this._meta.validate(this, { method, navigation });\n }\n\n isValid({\n method,\n navigation = false,\n }: {\n method?: 'create' | 'update' | 'patch';\n navigation?: boolean;\n } = {}): boolean {\n this._errors = this.validate({ method, navigation });\n if (this._errors !== undefined)\n this.events$.emit(\n new ODataModelEvent('invalid', {\n model: this,\n value: this._errors,\n options: { method },\n })\n );\n return this._errors === undefined;\n }\n\n protected defaults() {\n return this._meta.defaults() || {};\n }\n toEntity({\n client_id = false,\n include_navigation = false,\n include_concurrency = false,\n include_computed = false,\n include_key = true,\n include_non_field = false,\n changes_only = false,\n field_mapping = false,\n chain = [],\n }: {\n client_id?: boolean;\n include_navigation?: boolean;\n include_concurrency?: boolean;\n include_computed?: boolean;\n include_key?: boolean;\n include_non_field?: boolean;\n changes_only?: boolean;\n field_mapping?: boolean;\n chain?: (ODataModel<any> | ODataCollection<any, ODataModel<any>>)[];\n } = {}): T | { [name: string]: any } {\n return this._meta.toEntity(this, {\n client_id,\n include_navigation,\n include_concurrency,\n include_computed,\n include_key,\n include_non_field,\n changes_only,\n field_mapping,\n chain,\n });\n }\n\n attributes({\n changes_only = false,\n include_concurrency = false,\n include_computed = false,\n include_non_field = false,\n field_mapping = false,\n }: {\n changes_only?: boolean;\n include_concurrency?: boolean;\n include_computed?: boolean;\n include_non_field?: boolean;\n field_mapping?: boolean;\n } = {}): { [name: string]: any } {\n return this._meta.attributes(this, {\n changes_only,\n include_concurrency,\n include_computed,\n include_non_field,\n field_mapping,\n });\n }\n\n set(path: string | string[], value: any) {\n const pathArray = (\n Types.isArray(path) ? path : (path as string).match(/([^[.\\]])+/g)\n ) as any[];\n if (pathArray.length === 0) return undefined;\n if (pathArray.length > 1) {\n const model = (<any>this)[pathArray[0]];\n return model.set(pathArray.slice(1), value);\n }\n if (pathArray.length === 1) {\n return ((<any>this)[pathArray[0]] = value);\n }\n }\n\n get(path: string | string[]): any {\n const pathArray = (\n Types.isArray(path) ? path : (path as string).match(/([^[.\\]])+/g)\n ) as any[];\n if (pathArray.length === 0) return undefined;\n const value = (<any>this)[pathArray[0]];\n if (\n pathArray.length > 1 &&\n (value instanceof ODataModel || value instanceof ODataCollection)\n ) {\n return value.get(pathArray.slice(1));\n }\n return value;\n }\n\n reset({\n path,\n silent = false,\n }: { path?: string | string[]; silent?: boolean } = {}) {\n const pathArray: string[] = (\n path === undefined\n ? []\n : Types.isArray(path)\n ? path\n : (path as string).match(/([^[.\\]])+/g)\n ) as any[];\n const name = pathArray[0];\n const value = name !== undefined ? (<any>this)[name] : undefined;\n if (\n ODataModelOptions.isModel(value) ||\n ODataModelOptions.isCollection(value)\n ) {\n value.reset({ path: pathArray.slice(1), silent });\n } else {\n this._meta.reset(this, { name: pathArray[0], silent });\n }\n }\n\n assign(\n entity: Partial<T> | { [name: string]: any },\n {\n reset = false,\n silent = false,\n }: { reset?: boolean; silent?: boolean } = {}\n ) {\n return this._meta.assign(this, entity, { reset, silent });\n }\n\n clone<M extends ODataModel<T>>() {\n let Ctor = <typeof ODataModel>this.constructor;\n return new Ctor(this.toEntity(INCLUDE_ALL), {\n resource: this.resource() as ODataModelResource<T>,\n annots: this.annots(),\n }) as M;\n }\n\n private _request(obs$: Observable<ODataEntity<any>>): Observable<this> {\n this.events$.emit(\n new ODataModelEvent('request', {\n model: this,\n options: { observable: obs$ },\n })\n );\n return obs$.pipe(\n map(({ entity, annots }) => {\n this._annotations = annots;\n this.assign(annots.attributes<T>(entity || {}, 'full'), {\n reset: true,\n });\n this.events$.emit(\n new ODataModelEvent('sync', {\n model: this,\n options: { entity, annots },\n })\n );\n return this;\n })\n );\n }\n\n fetch({\n ...options\n }: HttpOptions & {\n options?: HttpOptions;\n } = {}): Observable<this> {\n let resource = this.resource();\n if (resource === undefined)\n return throwError('fetch: Resource is undefined');\n\n let obs$: Observable<ODataEntity<T>>;\n if (resource instanceof ODataEntityResource) {\n if (!resource.hasKey())\n return throwError(\"fetch: Can't fetch model without key\");\n obs$ = resource.get(options);\n } else if (resource instanceof ODataNavigationPropertyResource) {\n obs$ = resource.get({ responseType: 'entity', ...options });\n } else {\n obs$ = (resource as ODataPropertyResource<T>).get({\n responseType: 'entity',\n ...options,\n });\n }\n return this._request(obs$);\n }\n\n save({\n method,\n navigation = false,\n validate = true,\n ...options\n }: HttpOptions & {\n method?: 'create' | 'update' | 'patch';\n navigation?: boolean;\n validate?: boolean;\n options?: HttpOptions;\n } = {}): Observable<this> {\n let resource = this.resource();\n if (resource === undefined)\n return throwError('save: Resource is undefined');\n if (!(resource instanceof ODataEntityResource))\n return throwError('save: Resource type ODataEntityResource needed');\n\n // Resolve method and resource key\n if (method === undefined) {\n if (this.schema().isCompoundKey())\n return throwError(\n 'save: Composite key require a specific method, use create/update/patch'\n );\n method = !resource.hasKey() ? 'create' : 'update';\n } else {\n if ((method === 'update' || method === 'patch') && !resource.hasKey())\n return throwError('save: Update/Patch require entity key');\n if (method === 'create') resource.clearKey();\n }\n\n let obs$: Observable<ODataEntity<any>>;\n if (!validate || this.isValid({ method, navigation })) {\n const _entity = this.toEntity({\n changes_only: method === 'patch',\n field_mapping: true,\n include_concurrency: true,\n include_navigation: navigation,\n }) as T;\n obs$ = (\n method === 'create'\n ? resource.post(_entity, options)\n : method === 'patch'\n ? resource.patch(_entity, { etag: this.annots().etag, ...options })\n : resource.put(_entity, { etag: this.annots().etag, ...options })\n ).pipe(\n map(({ entity, annots }) => ({ entity: entity || _entity, annots }))\n );\n } else {\n obs$ = throwError(this._errors);\n }\n return this._request(obs$);\n }\n\n destroy({\n ...options\n }: HttpOptions & {\n options?: HttpOptions;\n } = {}): Observable<this> {\n let resource = this.resource();\n if (resource === undefined)\n return throwError('destroy: Resource is undefined');\n if (!(resource instanceof ODataEntityResource))\n return throwError('destroy: Resource type ODataEntityResource needed');\n if (!resource.hasKey())\n return throwError(\"destroy: Can't destroy model without key\");\n\n const _entity = this.toEntity({ field_mapping: true }) as T;\n const obs$ = resource\n .delete({ etag: this.annots().etag, ...options })\n .pipe(\n map(({ entity, annots }) => ({ entity: entity || _entity, annots }))\n );\n return this._request(obs$).pipe(\n tap(() =>\n this.events$.emit(new ODataModelEvent('destroy', { model: this }))\n )\n );\n }\n\n /**\n * Create an execution context for change the internal query of a resource\n * @param func Function to execute\n */\n query(\n func: (q: {\n select(opts?: Select<T>): OptionHandler<Select<T>>;\n expand(opts?: Expand<T>): OptionHandler<Expand<T>>;\n format(opts?: string): OptionHandler<string>;\n apply(query: QueryArguments<T>): void;\n }) => void\n ) {\n const resource = this.resource() as ODataModelResource<T> | undefined;\n if (resource !== undefined) return this._meta.query(this, resource, func);\n }\n\n /**\n * Perform a check on the internal state of the model and return true if the model is changed.\n * @param include_navigation Check in navigation properties\n * @returns true if the model has changed, false otherwise\n */\n hasChanged({\n include_navigation = false,\n }: { include_navigation?: boolean } = {}) {\n return this._meta.hasChanged(this, { include_navigation });\n }\n\n /**\n * Create an execution context for a given function, where the model is bound to its entity endpoint\n * @param func Context function\n * @returns Observable of R\n */\n asEntity<R>(func: (model: this) => Observable<R>): Observable<R> {\n return this._meta.asEntity(this, func);\n }\n\n protected callFunction<P, R>(\n name: string,\n params: P | null,\n responseType: 'property' | 'model' | 'collection' | 'none',\n { ...options }: {} & HttpQueryOptions<R> = {}\n ): Observable<R | ODataModel<R> | ODataCollection<R, ODataModel<R>> | null> {\n const resource = this.resource();\n if (!(resource instanceof ODataEntityResource) || !resource.hasKey())\n return throwError(\n \"Can't call function without ODataEntityResource with key\"\n );\n\n const func = resource.function<P, R>(name);\n func.query.apply(options);\n switch (responseType) {\n case 'property':\n return func.callProperty(params, options);\n case 'model':\n return func.callModel(params, options);\n case 'collection':\n return func.callCollection(params, options);\n default:\n return func.call(params, { responseType, ...options });\n }\n }\n\n protected callAction<P, R>(\n name: string,\n params: P | null,\n responseType: 'property' | 'model' | 'collection' | 'none',\n { ...options }: {} & HttpQueryOptions<R> = {}\n ): Observable<R | ODataModel<R> | ODataCollection<R, ODataModel<R>> | null> {\n const resource = this.resource();\n if (!(resource instanceof ODataEntityResource) || !resource.hasKey())\n return throwError(\n \"Can't call action without ODataEntityResource with key\"\n );\n\n const action = resource.action<P, R>(name);\n action.query.apply(options);\n switch (responseType) {\n case 'property':\n return action.callProperty(params, options);\n case 'model':\n return action.callModel(params, options);\n case 'collection':\n return action.callCollection(params, options);\n default:\n return action.call(params, { responseType, ...options });\n }\n }\n\n // Cast\n protected cast<S>(type: string): ODataModel<S> {\n const resource = this.resource();\n if (!(resource instanceof ODataEntityResource))\n throw new Error(\n `Can't cast to derived model without ODataEntityResource`\n );\n\n return resource\n .cast<S>(type)\n .asModel(this.toEntity(INCLUDE_ALL), { annots: this.annots() });\n }\n\n protected fetchNavigationProperty<S>(\n name: string,\n responseType: 'model' | 'collection',\n { ...options }: {} & HttpQueryOptions<S> = {}\n ): Observable<ODataModel<S> | ODataCollection<S, ODataModel<S>> | null> {\n const nav = this.navigationProperty<S>(\n name\n ) as ODataNavigationPropertyResource<S>;\n nav.query.apply(options);\n switch (responseType) {\n case 'model':\n return nav.fetchModel(options);\n case 'collection':\n return nav.fetchCollection(options);\n }\n }\n\n // Get Value\n protected getValue<P>(\n name: string,\n options?: HttpOptions\n ): Observable<P | ODataModel<P> | ODataCollection<P, ODataModel<P>> | null> {\n const field = this._meta.field(name);\n if (field === undefined || field.navigation)\n throw Error(`Can't find property ${name}`);\n\n let value = (this as any)[name] as\n | P\n | ODataModel<P>\n | ODataCollection<P, ODataModel<P>>;\n if (value === undefined) {\n const prop = field.resourceFactory(\n this.resource()\n ) as ODataPropertyResource<P>;\n return field.collection\n ? prop\n .fetchCollection(options)\n .pipe(tap((c) => this.assign({ [name]: c }, { silent: true })))\n : field.isStructuredType()\n ? prop\n .fetchModel(options)\n .pipe(tap((c) => this.assign({ [name]: c }, { silent: true })))\n : prop\n .fetchProperty(options)\n .pipe(tap((c) => this.assign({ [name]: c }, { silent: true })));\n }\n return of(value as P);\n }\n\n // Set Reference\n protected setReference<P>(\n name: string,\n model: ODataModel<P> | ODataCollection<P, ODataModel<P>> | null,\n options?: HttpOptions\n ): Observable<this> {\n const reference = (\n this.navigationProperty<P>(name) as ODataNavigationPropertyResource<P>\n ).reference();\n\n const etag = this.annots().etag;\n let obs$ = NEVER as Observable<any>;\n if (model instanceof ODataModel) {\n obs$ = reference.set(\n model._meta.entityResource(model) as ODataEntityResource<P>,\n { etag, ...options }\n );\n } else if (model instanceof ODataCollection) {\n obs$ = forkJoin(\n model\n .models()\n .map((m) =>\n reference.add(\n m._meta.entityResource(m) as ODataEntityResource<P>,\n options\n )\n )\n );\n } else if (model === null) {\n obs$ = reference.unset({ etag, ...options });\n }\n this.events$.emit(\n new ODataModelEvent('request', {\n model: this,\n options: { observable: obs$ },\n })\n );\n return obs$.pipe(\n map((model) => {\n this.assign({ [name]: model });\n this.events$.emit(new ODataModelEvent('sync', { model: this }));\n return this;\n })\n );\n }\n\n protected getReference<P>(\n name: string\n ): ODataModel<P> | ODataCollection<P, ODataModel<P>> {\n const field = this._meta.field(name);\n if (field === undefined || !field.navigation)\n throw Error(`Can't find navigation property ${name}`);\n\n let model = (this as any)[name] as\n | ODataModel<P>\n | ODataCollection<P, ODataModel<P>>;\n if (model === undefined) {\n const value = field.collection ? [] : this.referenced(field);\n model = field.modelCollectionFactory<T, P>({ parent: this, value });\n (this as any)[name] = model;\n }\n return model;\n }\n}\n","import { DEFAULT_TIMEOUT, CACHE_KEY_SEPARATOR } from '../constants';\nimport { Cache, PathSegmentNames } from '../types';\nimport { ODataRequest, ODataResponse } from '../resources';\nimport { Observable, of, throwError } from 'rxjs';\nimport { startWith, tap } from 'rxjs/operators';\n\nexport interface ODataCacheEntry<T> {\n payload: T;\n lastRead: number;\n timeout: number;\n tags: string[];\n}\n\nexport abstract class ODataCache implements Cache {\n timeout: number;\n entries: Map<string, ODataCacheEntry<any>>;\n constructor({ timeout = DEFAULT_TIMEOUT }: { timeout?: number }) {\n this.timeout = timeout;\n this.entries = new Map<string, ODataCacheEntry<any>>();\n }\n\n abstract getResponse(req: ODataRequest<any>): ODataResponse<any> | undefined;\n abstract putResponse(req: ODataRequest<any>, res: ODataResponse<any>): void;\n\n scope(req: ODataRequest<any>): string[] {\n const segments = req.resource.cloneSegments();\n return segments.segments({ key: true }).reduce(\n (acc, s) => {\n if (s.name === PathSegmentNames.entitySet)\n acc = [...acc, s.path() as string];\n return acc;\n },\n ['request']\n );\n }\n\n tags(req: ODataRequest<any>, res: ODataResponse<any>): string[] {\n const tags = [];\n const context = res.context;\n if (context.entitySet) {\n tags.push(\n context.key ? `${context.entitySet}(${context.key})` : context.entitySet\n );\n }\n if (context.type) tags.push(context.type);\n return tags;\n }\n\n buildEntry<T>(\n payload: T,\n { timeout, tags }: { timeout?: number; tags?: string[] }\n ): ODataCacheEntry<T> {\n return {\n payload,\n lastRead: Date.now(),\n timeout: timeout || this.timeout,\n tags: tags || [],\n };\n }\n\n buildKey(names: string[]): string {\n return names.join(CACHE_KEY_SEPARATOR);\n }\n\n put<T>(\n name: string,\n payload: T,\n {\n timeout,\n scope,\n tags,\n }: { timeout?: number; scope?: string[]; tags?: string[] } = {}\n ) {\n const entry = this.buildEntry<T>(payload, { timeout, tags });\n const key = this.buildKey([...(scope || []), name]);\n this.entries.set(key, entry);\n this.forget();\n }\n\n get<T>(name: string, { scope }: { scope?: string[] } = {}): T {\n const key = this.buildKey([...(scope || []), name]);\n const entry = this.entries.get(key);\n return entry !== undefined && !this.isExpired(entry)\n ? entry.payload\n : undefined;\n }\n\n forget({\n name,\n scope = [],\n tags = [],\n }: { name?: string; scope?: string[]; tags?: string[] } = {}) {\n // Remove expired cache entries\n if (name !== undefined) scope.push(name);\n const key = scope.length > 0 ? this.buildKey(scope) : undefined;\n this.entries.forEach((entry, k) => {\n if (\n this.isExpired(entry) || // Expired\n (key !== undefined && k.startsWith(key)) || // Key\n (tags.length > 0 && tags.some((t) => entry.tags.indexOf(t) !== -1)) // Tags\n ) {\n this.entries.delete(k);\n }\n });\n }\n\n flush() {\n // Remove all cache entries\n this.entries = new Map<string, ODataCacheEntry<any>>();\n }\n\n isExpired(entry: ODataCacheEntry<any>) {\n return entry.lastRead < Date.now() - (entry.timeout || this.timeout) * 1000;\n }\n\n handleRequest(\n req: ODataRequest<any>,\n res$: Observable<ODataResponse<any>>\n ): Observable<ODataResponse<any>> {\n return req.isFetch()\n ? this.handleFetch(req, res$)\n : req.isMutate()\n ? this.handleMutate(req, res$)\n : res$;\n }\n\n private handleFetch(\n req: ODataRequest<any>,\n res$: Observable<ODataResponse<any>>\n ): Observable<ODataResponse<any>> {\n const policy = req.fetchPolicy;\n const cached = this.getResponse(req);\n if (policy === 'no-cache') {\n return res$;\n }\n if (policy === 'cache-only') {\n if (cached) {\n return of(cached);\n } else {\n return throwError('No Cached');\n }\n }\n if (\n policy === 'cache-first' ||\n policy === 'cache-and-network' ||\n policy === 'network-only'\n ) {\n res$ = res$.pipe(\n tap((res: ODataResponse<any>) => {\n if (res.options.cacheability !== 'no-store')\n this.putResponse(req, res);\n })\n );\n }\n return cached !== undefined && policy !== 'network-only'\n ? policy === 'cache-and-network'\n ? res$.pipe(startWith(cached))\n : of(cached)\n : res$;\n }\n\n private handleMutate(\n req: ODataRequest<any>,\n res$: Observable<ODataResponse<any>>\n ): Observable<ODataResponse<any>> {\n const scope = this.scope(req);\n this.forget({ scope });\n return res$;\n }\n}\n","import type { ODataRequest, ODataResponse } from '../resources';\nimport { ODataCache } from './cache';\n\nexport class ODataInMemoryCache extends ODataCache {\n constructor({ timeout }: { timeout?: number } = {}) {\n super({ timeout });\n }\n\n putResponse(req: ODataRequest<any>, res: ODataResponse<any>) {\n var scope = this.scope(req);\n var tags = this.tags(req, res);\n this.put(req.pathWithParams, res, {\n timeout: res.options.maxAge,\n scope,\n tags,\n });\n }\n\n getResponse(req: ODataRequest<any>): ODataResponse<any> | undefined {\n var scope = this.scope(req);\n return this.get(req.pathWithParams, { scope });\n }\n}\n","import { ODataRequest, ODataResponse } from '../resources';\nimport { ODataCache, ODataCacheEntry } from './cache';\n\ninterface ResponseJson {\n body: any | null;\n headers: { [name: string]: string | string[] };\n status: number;\n statusText: string;\n url: string | null;\n}\n\nexport class ODataInStorageCache extends ODataCache {\n name: string;\n storage: Storage;\n constructor({\n name,\n storage = sessionStorage,\n timeout,\n }: {\n timeout?: number;\n name: string;\n storage?: Storage;\n }) {\n super({ timeout });\n this.name = name;\n this.storage = storage;\n this.restore();\n window.addEventListener('beforeunload', () => this.store());\n }\n\n store() {\n this.storage.setItem(\n this.name,\n JSON.stringify(Array.from(this.entries.entries()))\n );\n }\n\n restore() {\n this.entries = new Map<string, ODataCacheEntry<any>>(\n JSON.parse(this.storage.getItem(this.name) || '[]')\n );\n }\n\n flush() {\n super.flush();\n this.store();\n }\n\n putResponse(req: ODataRequest<any>, res: ODataResponse<any>) {\n const scope = this.scope(req);\n const tags = this.tags(req, res);\n this.put<ResponseJson>(req.pathWithParams, res.toJSON(), {\n timeout: res.options.maxAge,\n scope,\n tags,\n });\n }\n\n getResponse(req: ODataRequest<any>): ODataResponse<any> | undefined {\n const scope = this.scope(req);\n const data = this.get<ResponseJson>(req.pathWithParams, { scope });\n\n return data !== undefined ? ODataResponse.fromJSON(req, data) : undefined;\n }\n}\n","import { HttpEvent, HttpEventType } from '@angular/common/http';\nimport { NEVER, Observable } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\nimport {\n ApiConfig,\n ApiOptions,\n NONE_PARSER,\n Parser,\n PathSegmentNames,\n} from './types';\nimport { EDM_PARSERS } from './parsers/index';\nimport {\n ODataSchema,\n ODataEnumType,\n ODataCallable,\n ODataEntitySet,\n ODataStructuredType,\n} from './schema/index';\nimport { ODataModel, ODataCollection } from './models/index';\nimport {\n ODataBatchResource,\n ODataMetadataResource,\n ODataEntitySetResource,\n ODataSingletonResource,\n ODataFunctionResource,\n ODataActionResource,\n ODataEntityResource,\n ODataPathSegments,\n ODataSegment,\n ODataQueryOptions,\n ODataResponse,\n ODataNavigationPropertyResource,\n ODataRequest,\n} from './resources/index';\nimport { ODataCache, ODataInMemoryCache } from './cache/index';\nimport { ODataApiOptions } from './options';\nimport { DEFAULT_VERSION } from './constants';\nimport { ODataEntityService } from './services/entity';\n\n/**\n * Api abstraction for consuming OData services.\n */\nexport class ODataApi {\n requester?: (request: ODataRequest<any>) => Observable<any>;\n serviceRootUrl: string;\n metadataUrl: string;\n name?: string;\n version: string;\n default: boolean;\n creation: Date;\n // Options\n options: ODataApiOptions;\n // Cache\n cache!: ODataCache;\n // Error Handler\n errorHandler?: (error: any, caught: Observable<any>) => Observable<never>;\n // Base Parsers\n parsers: { [type: string]: Parser<any> };\n // Schemas\n schemas: ODataSchema[];\n\n constructor(config: ApiConfig) {\n this.serviceRootUrl = config.serviceRootUrl;\n if (this.serviceRootUrl.indexOf('?') != -1)\n throw new Error(\n \"The 'serviceRootUrl' should not contain query string. Please use 'params' to add extra parameters\"\n );\n if (!this.serviceRootUrl.endsWith('/')) this.serviceRootUrl += '/';\n this.metadataUrl = `${this.serviceRootUrl}$metadata`;\n this.name = config.name;\n this.version = config.version || DEFAULT_VERSION;\n this.default = config.default || false;\n this.creation = config.creation || new Date();\n this.options = new ODataApiOptions(\n Object.assign(<ApiOptions>{ version: this.version }, config.options || {})\n );\n\n this.cache = (config.cache as ODataCache) || new ODataInMemoryCache();\n this.errorHandler = config.errorHandler;\n\n this.parsers = config.parsers || EDM_PARSERS;\n\n this.schemas = (config.schemas || []).map(\n (schema) => new ODataSchema(schema, this)\n );\n }\n\n configure(\n settings: {\n requester?: (request: ODataRequest<any>) => Observable<any>;\n } = {}\n ) {\n this.requester = settings.requester;\n this.schemas.forEach((schema) => {\n schema.configure({\n parserForType: (type: string) => this.parserForType(type),\n findOptionsForType: (type: string) => this.findOptionsForType(type),\n });\n });\n }\n\n fromJSON<P, R>(json: {\n segments: ODataSegment[];\n options: { [name: string]: any };\n }): ODataActionResource<P, R> | ODataFunctionResource<P, R>;\n fromJSON<E>(json: {\n segments: ODataSegment[];\n options: { [name: string]: any };\n }):\n | ODataEntityResource<E>\n | ODataEntitySetResource<E>\n | ODataNavigationPropertyResource<E>\n | ODataSingletonResource<E>;\n fromJSON(json: {\n segments: ODataSegment[];\n options: { [name: string]: any };\n }) {\n const segments = new ODataPathSegments(json.segments);\n const query = new ODataQueryOptions(json.options);\n switch (segments.last()?.name as PathSegmentNames) {\n case PathSegmentNames.entitySet:\n if (segments.last()?.hasKey()) {\n return new ODataEntityResource(this, segments, query);\n } else {\n return new ODataEntitySetResource(this, segments, query);\n }\n case PathSegmentNames.navigationProperty:\n return new ODataNavigationPropertyResource(this, segments, query);\n case PathSegmentNames.singleton:\n return new ODataSingletonResource(this, segments, query);\n case PathSegmentNames.action:\n return new ODataActionResource(this, segments, query);\n case PathSegmentNames.function:\n return new ODataFunctionResource(this, segments, query);\n }\n throw new Error('No Resource for json');\n }\n\n /**\n * Build a metadata resource.\n * @returns ODataMetadataResource\n */\n metadata(): ODataMetadataResource {\n return ODataMetadataResource.factory(this);\n }\n\n /**\n * Build a batch resource.\n * @returns ODataBatchResource\n */\n batch(): ODataBatchResource {\n return ODataBatchResource.factory(this);\n }\n\n /**\n * Build a singleton resource.\n * @param name Name of the singleton\n * @returns\n */\n singleton<T>(name: string) {\n const type = this.findEntitySetByName(name)?.entityType;\n return ODataSingletonResource.factory<T>(\n this,\n name,\n type,\n new ODataPathSegments(),\n new ODataQueryOptions()\n );\n }\n\n /**\n * Build an entity set resource.\n * @param name Name of the entity set\n * @returns\n */\n entitySet<T>(name: string): ODataEntitySetResource<T> {\n const type = this.findEntitySetByName(name)?.entityType;\n return ODataEntitySetResource.factory<T>(\n this,\n name,\n type,\n new ODataPathSegments(),\n new ODataQueryOptions()\n );\n }\n\n /**\n * Unbound Action\n * @param {string} name?\n * @returns ODataActionResource\n */\n action<P, R>(name: string): ODataActionResource<P, R> {\n let type;\n const callable = this.findCallableForType(name);\n if (callable !== undefined) {\n name = callable.path();\n type = callable.type();\n }\n return ODataActionResource.factory<P, R>(\n this,\n name,\n type,\n new ODataPathSegments(),\n new ODataQueryOptions()\n );\n }\n\n /**\n * Unbound Function\n * @param {string} name?\n * @returns ODataFunctionResource\n */\n function<P, R>(name: string): ODataFunctionResource<P, R> {\n let type;\n const callable = this.findCallableForType(name);\n if (callable !== undefined) {\n name = callable.path();\n type = callable.type();\n }\n return ODataFunctionResource.factory<P, R>(\n this,\n name,\n type,\n new ODataPathSegments(),\n new ODataQueryOptions()\n );\n }\n\n request(req: ODataRequest<any>): Observable<any> {\n let res$ = this.requester !== undefined ? this.requester(req) : NEVER;\n res$ = res$.pipe(\n map((res: HttpEvent<any>) =>\n res.type === HttpEventType.Response\n ? ODataResponse.fromHttpResponse<any>(req, res)\n : res\n )\n );\n\n if (this.errorHandler !== undefined)\n res$ = res$.pipe(catchError(this.errorHandler));\n\n return req.observe === 'response'\n ? this.cache.handleRequest(req, res$)\n : res$;\n }\n\n private findSchemaForType(type: string) {\n const schemas = this.schemas.filter((s) => s.isNamespaceOf(type));\n if (schemas.length > 1)\n return schemas\n .sort((s1, s2) => s1.namespace.length - s2.namespace.length)\n .pop();\n if (schemas.length === 1) return schemas[0];\n return undefined;\n }\n\n public findEnumTypeForType<T>(type: string) {\n return this.findSchemaForType(type)?.findEnumTypeForType<T>(type);\n }\n\n public findStructuredTypeForType<T>(type: string) {\n return this.findSchemaForType(type)?.findStructuredTypeForType<T>(type);\n }\n\n public findCallableForType<T>(type: string, bindingType?: string) {\n return this.findSchemaForType(type)?.findCallableForType<T>(\n type,\n bindingType\n );\n }\n\n public findEntitySetForType(type: string) {\n return this.findSchemaForType(type)?.findEntitySetForType(type);\n }\n public findModelForType(type: string) {\n return this.findStructuredTypeForType<any>(type)?.model as\n | typeof ODataModel\n | undefined;\n }\n\n public modelForType(type?: string) {\n return (type && this.findModelForType(type)) || ODataModel;\n }\n\n public findCollectionForType(type: string) {\n return this.findStructuredTypeForType<any>(type)?.collection as\n | typeof ODataCollection\n | undefined;\n }\n\n public collectionForType(type?: string) {\n return (type && this.findCollectionForType(type)) || ODataCollection;\n }\n public findServiceForType(type: string) {\n return this.findEntitySetForType(type)?.service as\n | typeof ODataEntityService\n | undefined;\n }\n\n public findEntitySetForEntityType(entityType: string) {\n return this.schemas\n .reduce(\n (acc, schema) => [...acc, ...schema.entitySets],\n <ODataEntitySet[]>[]\n )\n .find((e) => e.entityType === entityType);\n }\n\n public findServiceForEntityType(entityType: string) {\n return this.findEntitySetForEntityType(entityType)?.service as\n | typeof ODataEntityService\n | undefined;\n }\n\n public findEnumTypeByName<T>(name: string) {\n return this.schemas\n .reduce(\n (acc, schema) => [...acc, ...schema.enums],\n <ODataEnumType<T>[]>[]\n )\n .find((e) => e.name === name);\n }\n\n public findStructuredTypeByName<T>(name: string) {\n return this.schemas\n .reduce(\n (acc, schema) => [...acc, ...schema.entities],\n <ODataStructuredType<T>[]>[]\n )\n .find((e) => e.name === name);\n }\n\n public findCallableByName<T>(name: string, bindingType?: string) {\n return this.schemas\n .reduce(\n (acc, schema) => [...acc, ...schema.callables],\n <ODataCallable<T>[]>[]\n )\n .find(\n (c) =>\n c.name === name &&\n (bindingType === undefined || c.binding()?.type === bindingType)\n );\n }\n\n public findEntitySetByName(name: string) {\n return this.schemas\n .reduce(\n (acc, schema) => [...acc, ...schema.entitySets],\n <ODataEntitySet[]>[]\n )\n .find((e) => e.name === name);\n }\n\n public findModelByName(name: string) {\n return this.findStructuredTypeByName<any>(name)?.model as\n | typeof ODataModel\n | undefined;\n }\n public findCollectionByName(name: string) {\n return this.findStructuredTypeByName<any>(name)?.collection as\n | typeof ODataCollection\n | undefined;\n }\n public findServiceByName(name: string) {\n return this.findEntitySetByName(name)?.service as\n | typeof ODataEntityService\n | undefined;\n }\n\n public parserForType<T>(type: string, bindingType?: string) {\n // Edm, Base Parsers\n if (type in this.parsers) {\n return this.parsers[type] as Parser<T>;\n }\n\n // EnumType, ComplexType and EntityType Parsers\n if (!type.startsWith('Edm.')) {\n let value =\n this.findCallableForType<T>(type, bindingType) ||\n this.findEnumTypeForType<T>(type) ||\n this.findStructuredTypeForType<T>(type);\n return value?.parser as Parser<T>;\n }\n\n // None Parser\n return NONE_PARSER;\n }\n\n public findOptionsForType<T>(type: string) {\n // Strucutred Options\n let st = this.findStructuredTypeForType(type);\n return st !== undefined && st.model !== undefined && st.model?.meta !== null\n ? st.model.meta\n : undefined;\n }\n}\n","import { ApiConfig, Parser } from './types';\nimport { ODataApi } from './api';\nimport {\n ODataCallable,\n ODataEntitySet,\n ODataEnumType,\n ODataStructuredType,\n} from './schema';\nimport { ODataRequest } from './resources';\nimport { Observable } from 'rxjs';\nimport { ODataCollection, ODataModel } from './models';\nimport { ODataEntityService } from './services/entity';\n\nexport class ODataSettings {\n apis: ODataApi[];\n constructor(...configs: ApiConfig[]) {\n this.apis = configs.map((config) => new ODataApi(config));\n if (this.apis.length > 1) {\n if (this.apis.some((c) => c.name === undefined))\n throw new Error('Multiple APIs: Needs configuration names');\n if (this.apis.filter((c) => c.default).length > 1)\n throw new Error('Multiple APIs: Needs only one default api');\n }\n // If not default setup first config as default api\n if (this.apis.every((c) => !c.default)) this.apis[0].default = true;\n }\n\n configure(settings: {\n requester?: (request: ODataRequest<any>) => Observable<any>;\n }) {\n this.apis.forEach((api) => api.configure(settings));\n }\n\n public defaultApi() {\n return this.apis.find((c) => c.default) as ODataApi;\n }\n public findApiByName(name: string) {\n return this.apis.find((c) => c.name === name);\n }\n public apiByName(name: string) {\n const api = this.findApiByName(name);\n if (api === undefined) throw new Error(`No API for name: ${name}`);\n return api;\n }\n public findApiForTypes(types: string[]) {\n return this.apis.find((c) =>\n c.schemas.some((s) => types.some((type) => s.isNamespaceOf(type)))\n );\n }\n public findApiForType(type: string) {\n return this.findApiForTypes([type]);\n }\n public apiForType(type: string) {\n const api = this.findApiForType(type);\n if (api === undefined) throw new Error(`No API for type: ${type}`);\n return api;\n }\n\n //#region Configs shortcuts\n public enumTypeForType<T>(type: string) {\n let values = this.apis\n .map((api) => api.findEnumTypeForType<T>(type))\n .filter((e) => e);\n if (values.length === 0) throw Error(`No Enum for type ${type} was found`);\n if (values.length > 1)\n throw Error('Multiple APIs: More than one value was found');\n return values[0] as ODataEnumType<T>;\n }\n\n public structuredTypeForType<T>(type: string) {\n let values = this.apis\n .map((api) => api.findStructuredTypeForType<T>(type))\n .filter((e) => e);\n if (values.length === 0)\n throw Error(`No Structured for type ${type} was found`);\n if (values.length > 1)\n throw Error('Multiple APIs: More than one value was found');\n return values[0] as ODataStructuredType<T>;\n }\n\n public callableForType<T>(type: string, bindingType?: string) {\n let values = this.apis\n .map((api) => api.findCallableForType<T>(type, bindingType))\n .filter((e) => e);\n if (values.length === 0)\n throw Error(`No Callable for type ${type} was found`);\n if (values.length > 1)\n throw Error('Multiple APIs: More than one value was found');\n return values[0] as ODataCallable<T>;\n }\n\n public entitySetForType(type: string) {\n let values = this.apis\n .map((api) => api.findEntitySetForType(type))\n .filter((e) => e);\n if (values.length === 0)\n throw Error(`No EntitySet for type ${type} was found`);\n if (values.length > 1)\n throw Error('Multiple APIs: More than one value was found');\n return values[0] as ODataEntitySet;\n }\n\n public parserForType<T>(type: string) {\n let values = this.apis\n .map((api) => api.parserForType<T>(type))\n .filter((e) => e);\n if (values.length === 0)\n throw Error(`No Parser for type ${type} was found`);\n if (!type.startsWith('Edm.') && values.length > 1)\n throw Error('Multiple APIs: More than one value was found');\n return values[0] as Parser<T>;\n }\n\n public modelForType(type: string) {\n let values = this.apis\n .map((api) => api.findModelForType(type))\n .filter((e) => e);\n if (values.length === 0) throw Error(`No Model for type ${type} was found`);\n if (values.length > 1)\n throw Error('Multiple APIs: More than one value was found');\n return values[0] as typeof ODataModel;\n }\n\n public collectionForType(type: string) {\n let values = this.apis\n .map((api) => api.findCollectionForType(type))\n .filter((e) => e);\n if (values.length === 0)\n throw Error(`No Collection for type ${type} was found`);\n if (values.length > 1)\n throw Error('Multiple APIs: More than one value was found');\n return values[0] as typeof ODataCollection;\n }\n\n public serviceForType(type: string) {\n let values = this.apis\n .map((api) => api.findServiceForType(type))\n .filter((e) => e);\n if (values.length === 0)\n throw Error(`No Service for type ${type} was found`);\n if (values.length > 1)\n throw Error('Multiple APIs: More than one value was found');\n return values[0] as typeof ODataEntityService;\n }\n public serviceForEntityType(type: string) {\n let values = this.apis\n .map((api) => api.findServiceForEntityType(type))\n .filter((e) => e);\n if (values.length === 0)\n throw Error(`No Service for type ${type} was found`);\n if (values.length > 1)\n throw Error('Multiple APIs: More than one value was found');\n return values[0] as typeof ODataEntityService;\n }\n\n public enumTypeByName<T>(name: string) {\n let values = this.apis\n .map((api) => api.findEnumTypeByName<T>(name))\n .filter((e) => e);\n if (values.length === 0) throw Error(`No Enum for name ${name} was found`);\n if (values.length > 1)\n throw Error('Multiple APIs: More than one value was found');\n return values[0] as ODataEnumType<T>;\n }\n\n public structuredTypeByName<T>(name: string) {\n let values = this.apis\n .map((api) => api.findStructuredTypeByName<T>(name))\n .filter((e) => e);\n if (values.length === 0)\n throw Error(`No Structured for name ${name} was found`);\n if (values.length > 1)\n throw Error('Multiple Structured: More than one value was found');\n return values[0] as ODataStructuredType<T>;\n }\n\n public callableByName<T>(name: string, bindingType?: string) {\n let values = this.apis\n .map((api) => api.findCallableByName<T>(name, bindingType))\n .filter((e) => e);\n if (values.length === 0)\n throw Error(`No Callable for name ${name} was found`);\n if (values.length > 1)\n throw Error('Multiple Callable: More than one value was found');\n return values[0] as ODataCallable<T>;\n }\n\n public entitySetByName(name: string) {\n let values = this.apis\n .map((api) => api.findEntitySetByName(name))\n .filter((e) => e);\n if (values.length === 0)\n throw Error(`No EntitySet for name ${name} was found`);\n if (values.length > 1)\n throw Error('Multiple EntitySet: More than one value was found');\n return values[0] as ODataEntitySet;\n }\n\n public modelByName(name: string) {\n let values = this.apis\n .map((api) => api.findModelByName(name))\n .filter((e) => e);\n if (values.length === 0) throw Error(`No Model for name ${name} was found`);\n if (values.length > 1)\n throw Error('Multiple APIs: More than one value was found');\n return values[0] as typeof ODataModel;\n }\n\n public collectionByName(name: string) {\n let values = this.apis\n .map((api) => api.findCollectionByName(name))\n .filter((e) => e);\n if (values.length === 0)\n throw Error(`No Collection for name ${name} was found`);\n if (values.length > 1)\n throw Error('Multiple APIs: More than one value was found');\n return values[0] as typeof ODataCollection;\n }\n public serviceByName(name: string) {\n let values = this.apis\n .map((api) => api.findServiceByName(name))\n .filter((e) => e);\n if (values.length === 0)\n throw Error(`No Service for name ${name} was found`);\n if (values.length > 1)\n throw Error('Multiple APIs: More than one value was found');\n return values[0] as typeof ODataEntityService;\n }\n //#endregion\n}\n","import { Injectable, Injector } from '@angular/core';\nimport {\n HttpClient,\n HttpHeaders,\n HttpParams,\n HttpResponse,\n HttpEvent,\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { ODataModel, ODataCollection } from './models/index';\nimport {\n ODataResource,\n ODataBatchResource,\n ODataMetadataResource,\n ODataEntitySetResource,\n ODataSingletonResource,\n ODataFunctionResource,\n ODataActionResource,\n ODataEntityResource,\n ODataSegment,\n ODataResponse,\n ODataNavigationPropertyResource,\n} from './resources/index';\nimport { ODataSettings } from './settings';\nimport { ODataApi } from './api';\nimport { ODataRequest } from './resources/index';\nimport { ODataEntityService } from './services/entity';\n\nfunction addBody<T>(\n options: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body' | 'events' | 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n withCredentials?: boolean;\n },\n body: T | null\n): any {\n return {\n body,\n etag: options.etag,\n apiName: options.apiName,\n fetchPolicy: options.fetchPolicy,\n headers: options.headers,\n observe: options.observe,\n params: options.params,\n reportProgress: options.reportProgress,\n responseType: options.responseType,\n withCredentials: options.withCredentials,\n };\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ODataClient {\n constructor(\n private http: HttpClient,\n private settings: ODataSettings,\n private injector: Injector\n ) {\n this.settings.configure({\n requester: (req: ODataRequest<any>): Observable<any> =>\n this.http.request(req.method, `${req.url}`, {\n body: req.body,\n headers: req.headers,\n observe: req.observe,\n params: req.params,\n reportProgress: req.reportProgress,\n responseType: req.responseType,\n withCredentials: req.withCredentials,\n }),\n });\n }\n\n // Resolve Building Blocks\n apiFor(value?: ODataResource<any> | string): ODataApi {\n let api: ODataApi | undefined = undefined;\n if (value instanceof ODataResource)\n api = this.settings.findApiForTypes(value.types());\n else if (typeof value === 'string')\n api =\n this.settings.findApiByName(value) ||\n this.settings.findApiForType(value);\n return api || this.settings.defaultApi();\n }\n\n parserForType<T>(type: string) {\n return this.settings.parserForType<T>(type);\n }\n enumTypeForType<T>(type: string) {\n return this.settings.enumTypeForType<T>(type);\n }\n enumTypeByName<T>(name: string) {\n return this.settings.enumTypeByName<T>(name);\n }\n structuredTypeForType<T>(type: string) {\n return this.settings.structuredTypeForType<T>(type);\n }\n structuredTypeByName<T>(name: string) {\n return this.settings.structuredTypeByName<T>(name);\n }\n callableForType<T>(type: string) {\n return this.settings.callableForType<T>(type);\n }\n callableByName<T>(name: string) {\n return this.settings.callableByName<T>(name);\n }\n entitySetForType(type: string) {\n return this.settings.entitySetForType(type);\n }\n entitySetByName(name: string) {\n return this.settings.entitySetByName(name);\n }\n modelForType(type: string): typeof ODataModel {\n return this.settings.modelForType(type);\n }\n modelByName(name: string): typeof ODataModel {\n return this.settings.modelByName(name);\n }\n collectionForType(type: string): typeof ODataCollection {\n return this.settings.collectionForType(type);\n }\n collectionByName(name: string): typeof ODataCollection {\n return this.settings.collectionByName(name);\n }\n serviceForType(type: string): ODataEntityService<any> {\n return this.injector.get(this.settings.serviceForType(type));\n }\n serviceForEntityType(type: string): ODataEntityService<any> {\n return this.injector.get(this.settings.serviceForEntityType(type));\n }\n serviceByName(name: string): ODataEntityService<any> {\n return this.injector.get(this.settings.serviceByName(name));\n }\n\n //#region API Resource Proxy Methods\n fromJSON<E>(\n json: { segments: ODataSegment[]; options: { [name: string]: any } },\n apiNameOrType?: string\n ):\n | ODataEntityResource<E>\n | ODataEntitySetResource<E>\n | ODataNavigationPropertyResource<E>\n | ODataSingletonResource<E>;\n fromJSON(\n json: { segments: ODataSegment[]; options: { [name: string]: any } },\n apiNameOrType?: string\n ) {\n return this.apiFor(apiNameOrType).fromJSON<any>(json);\n }\n\n // Requests\n metadata(apiNameOrType?: string): ODataMetadataResource {\n return this.apiFor(apiNameOrType).metadata();\n }\n\n batch(apiNameOrType?: string): ODataBatchResource {\n return this.apiFor(apiNameOrType).batch();\n }\n\n singleton<T>(path: string, apiNameOrType?: string) {\n return this.apiFor(apiNameOrType).singleton<T>(path);\n }\n\n entitySet<T>(\n path: string,\n apiNameOrType?: string\n ): ODataEntitySetResource<T> {\n return this.apiFor(apiNameOrType).entitySet<T>(path);\n }\n\n /**\n * Unbound Action\n * @param {string} path?\n * @returns ODataActionResource\n */\n action<P, R>(\n path: string,\n apiNameOrType?: string\n ): ODataActionResource<P, R> {\n return this.apiFor(apiNameOrType).action<P, R>(path);\n }\n\n /**\n * Unbound Function\n * @param {string} path?\n * @returns ODataFunctionResource\n */\n function<P, R>(\n path: string,\n apiNameOrType?: string\n ): ODataFunctionResource<P, R> {\n return this.apiFor(apiNameOrType).function<P, R>(path);\n }\n //#endregion\n\n // Request headers, get, post, put, patch... etc\n request(\n method: string,\n resource: ODataResource<any>,\n options: {\n body: any | null;\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<ArrayBuffer>;\n\n request(\n method: string,\n resource: ODataResource<any>,\n options: {\n body: any | null;\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<Blob>;\n\n request(\n method: string,\n resource: ODataResource<any>,\n options: {\n body: any | null;\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<string>;\n\n request(\n method: string,\n resource: ODataResource<any>,\n options: {\n body: any | null;\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n params?: HttpParams | { [param: string]: string | string[] };\n observe: 'events';\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<ArrayBuffer>>;\n\n request(\n method: string,\n resource: ODataResource<any>,\n options: {\n body: any | null;\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<Blob>>;\n\n request(\n method: string,\n resource: ODataResource<any>,\n options: {\n body: any | null;\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<string>>;\n\n request(\n method: string,\n resource: ODataResource<any>,\n options: {\n body: any | null;\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n reportProgress?: boolean;\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<any>>;\n\n request<R>(\n method: string,\n resource: ODataResource<any>,\n options: {\n body: any | null;\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n reportProgress?: boolean;\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<R>>;\n\n request(\n method: string,\n resource: ODataResource<any>,\n options: {\n body: any | null;\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<HttpResponse<ArrayBuffer>>;\n\n request(\n method: string,\n resource: ODataResource<any>,\n options: {\n body: any | null;\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<HttpResponse<Blob>>;\n\n request(\n method: string,\n resource: ODataResource<any>,\n options: {\n body: any | null;\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<string>>;\n\n request(\n method: string,\n resource: ODataResource<any>,\n options: {\n body: any | null;\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n reportProgress?: boolean;\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<Object>>;\n\n request<R>(\n method: string,\n resource: ODataResource<any>,\n options: {\n body: any | null;\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n reportProgress?: boolean;\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<R>>;\n\n request(\n method: string,\n resource: ODataResource<any>,\n options: {\n body: any | null;\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n responseType?: 'json';\n reportProgress?: boolean;\n withCredentials?: boolean;\n }\n ): Observable<Object>;\n\n request<R>(\n method: string,\n resource: ODataResource<any>,\n options: {\n body: any | null;\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n responseType?: 'json';\n reportProgress?: boolean;\n withCredentials?: boolean;\n }\n ): Observable<R>;\n\n request(\n method: string,\n resource: ODataResource<any>,\n options?: {\n body: any | null;\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n params?: HttpParams | { [param: string]: string | string[] };\n observe?: 'body' | 'events' | 'response';\n reportProgress?: boolean;\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n withCredentials?: boolean;\n }\n ): Observable<any>;\n\n request(\n method: string,\n resource: ODataResource<any>,\n options: {\n body: any | null;\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body' | 'events' | 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n withCredentials?: boolean;\n }\n ): Observable<any> {\n let api = options.apiName\n ? this.settings.apiByName(options.apiName)\n : resource.api;\n if (!api)\n throw new Error(\n `The types: '[${resource\n .types()\n .join(', ')}]' does not belongs to any known configuration`\n );\n\n const request = new ODataRequest({\n method,\n api,\n resource,\n body: options.body,\n observe: options.observe === 'events' ? 'events' : 'response',\n etag: options.etag,\n headers: options.headers,\n reportProgress: options.reportProgress,\n params: options.params,\n responseType: options.responseType,\n fetchPolicy: options.fetchPolicy,\n withCredentials: options.withCredentials,\n });\n\n return api\n .request(request)\n .pipe(\n map((res: any) =>\n options.observe === undefined || options.observe === 'body'\n ? res.body\n : res\n )\n );\n }\n\n delete(\n resource: ODataResource<any>,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<ArrayBuffer>;\n\n delete(\n resource: ODataResource<any>,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<Blob>;\n\n delete(\n resource: ODataResource<any>,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<string>;\n\n delete(\n resource: ODataResource<any>,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<ArrayBuffer>>;\n\n delete(\n resource: ODataResource<any>,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<Blob>>;\n\n delete(\n resource: ODataResource<any>,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<string>>;\n\n delete(\n resource: ODataResource<any>,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<Object>>;\n\n delete<T>(\n resource: ODataResource<any>,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<T>>;\n\n delete(\n resource: ODataResource<any>,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<HttpResponse<ArrayBuffer>>;\n\n delete(\n resource: ODataResource<any>,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<HttpResponse<Blob>>;\n\n delete(\n resource: ODataResource<any>,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<string>>;\n\n delete(\n resource: ODataResource<any>,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<Object>>;\n\n delete<T>(\n resource: ODataResource<any>,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<T>>;\n\n delete(\n resource: ODataResource<any>,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<Object>;\n\n delete<T>(\n resource: ODataResource<any>,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<T>;\n\n delete(\n resource: ODataResource<any>,\n options: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body' | 'events' | 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n withCredentials?: boolean;\n } = {}\n ): Observable<any> {\n return this.request<any>('DELETE', resource, addBody<any>(options, null));\n }\n\n get(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<ArrayBuffer>;\n\n get(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<Blob>;\n\n get(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<string>;\n\n get(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<ArrayBuffer>>;\n\n get(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<Blob>>;\n\n get(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<string>>;\n\n get(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<Object>>;\n\n get<T>(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<T>>;\n\n get(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<HttpResponse<ArrayBuffer>>;\n\n get(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<HttpResponse<Blob>>;\n\n get(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<string>>;\n\n get(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<Object>>;\n\n get<T>(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<T>>;\n\n get(\n resource: ODataResource<any>,\n options?: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<Object>;\n\n get<T>(\n resource: ODataResource<any>,\n options?: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<T>;\n\n get(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body' | 'events' | 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n withCredentials?: boolean;\n } = {}\n ): Observable<any> {\n return this.request<any>('GET', resource, options as any);\n }\n\n head(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<ArrayBuffer>;\n\n head(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<Blob>;\n\n head(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<string>;\n\n head(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<ArrayBuffer>>;\n\n head(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<Blob>>;\n\n head(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<string>>;\n\n head(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<Object>>;\n\n head<T>(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<T>>;\n\n head(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<HttpResponse<ArrayBuffer>>;\n\n head(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<HttpResponse<Blob>>;\n\n head(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<string>>;\n\n head(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<Object>>;\n\n head<T>(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<T>>;\n\n head(\n resource: ODataResource<any>,\n options?: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<Object>;\n\n head<T>(\n resource: ODataResource<any>,\n options?: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<T>;\n\n head(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body' | 'events' | 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n withCredentials?: boolean;\n } = {}\n ): Observable<any> {\n return this.request<any>('HEAD', resource, options as any);\n }\n\n jsonp(\n resource: ODataResource<any>,\n callbackParam: string\n ): Observable<Object>;\n\n jsonp<T>(resource: ODataResource<any>, callbackParam: string): Observable<T>;\n\n jsonp<T>(resource: ODataResource<any>, callbackParam: string): Observable<T> {\n return this.request<any>('JSONP', resource, {\n body: null,\n params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),\n observe: 'body',\n responseType: 'json',\n });\n }\n\n options(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<ArrayBuffer>;\n\n options(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<Blob>;\n\n options(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<string>;\n\n options(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<ArrayBuffer>>;\n\n options(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<Blob>>;\n\n options(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<string>>;\n\n options(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<Object>>;\n\n options(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<Object>>;\n\n options<T>(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<T>>;\n\n options(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<HttpResponse<ArrayBuffer>>;\n\n options(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<HttpResponse<Blob>>;\n\n options(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<string>>;\n\n options(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<Object>>;\n\n options<T>(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<T>>;\n\n options(\n resource: ODataResource<any>,\n options?: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<Object>;\n\n options<T>(\n resource: ODataResource<any>,\n options?: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<T>;\n\n options(\n resource: ODataResource<any>,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body' | 'events' | 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n withCredentials?: boolean;\n } = {}\n ): Observable<any> {\n return this.request<any>('OPTIONS', resource, options as any);\n }\n\n patch(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<ArrayBuffer>;\n\n patch(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<Blob>;\n\n patch(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<string>;\n\n patch(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<ArrayBuffer>>;\n\n patch(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<Blob>>;\n\n patch(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<string>>;\n\n patch(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<Object>>;\n\n patch<T>(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<T>>;\n\n patch(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<HttpResponse<ArrayBuffer>>;\n\n patch(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<HttpResponse<Blob>>;\n\n patch(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<string>>;\n\n patch(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<Object>>;\n\n patch<T>(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<T>>;\n\n patch(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<Object>;\n\n patch<T>(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<T>;\n\n patch(\n resource: ODataResource<any>,\n body: any | null,\n options: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body' | 'events' | 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n withCredentials?: boolean;\n } = {}\n ): Observable<any> {\n return this.request<any>('PATCH', resource, addBody(options, body));\n }\n\n post(\n resource: ODataResource<any>,\n body: any | null,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<ArrayBuffer>;\n\n post(\n resource: ODataResource<any>,\n body: any | null,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<Blob>;\n\n post(\n resource: ODataResource<any>,\n body: any | null,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<string>;\n\n post(\n resource: ODataResource<any>,\n body: any | null,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<ArrayBuffer>>;\n\n post(\n resource: ODataResource<any>,\n body: any | null,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<Blob>>;\n\n post(\n resource: ODataResource<any>,\n body: any | null,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<string>>;\n\n post(\n resource: ODataResource<any>,\n body: any | null,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<Object>>;\n\n post<T>(\n resource: ODataResource<any>,\n body: any | null,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<T>>;\n\n post(\n resource: ODataResource<any>,\n body: any | null,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<HttpResponse<ArrayBuffer>>;\n\n post(\n resource: ODataResource<any>,\n body: any | null,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<HttpResponse<Blob>>;\n\n post(\n resource: ODataResource<any>,\n body: any | null,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<string>>;\n\n post(\n resource: ODataResource<any>,\n body: any | null,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<Object>>;\n\n post<T>(\n resource: ODataResource<any>,\n body: any | null,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<T>>;\n\n post(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<Object>;\n\n post<T>(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<T>;\n\n post(\n resource: ODataResource<any>,\n body: any | null,\n options: {\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body' | 'events' | 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n withCredentials?: boolean;\n } = {}\n ): Observable<any> {\n return this.request<any>('POST', resource, addBody(options, body));\n }\n\n put(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<ArrayBuffer>;\n\n put(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<Blob>;\n\n put(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<string>;\n\n put(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<ArrayBuffer>>;\n\n put(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<Blob>>;\n\n put(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<string>>;\n\n put(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<Object>>;\n\n put<T>(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'events';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<HttpEvent<T>>;\n\n put(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'arraybuffer';\n withCredentials?: boolean;\n }\n ): Observable<HttpResponse<ArrayBuffer>>;\n\n put(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'blob';\n withCredentials?: boolean;\n }\n ): Observable<HttpResponse<Blob>>;\n\n put(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType: 'text';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<string>>;\n\n put(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<Object>>;\n\n put<T>(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe: 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<ODataResponse<T>>;\n\n put(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<Object>;\n\n put<T>(\n resource: ODataResource<any>,\n body: any | null,\n options?: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'json';\n withCredentials?: boolean;\n }\n ): Observable<T>;\n\n put(\n resource: ODataResource<any>,\n body: any | null,\n options: {\n etag?: string;\n apiName?: string;\n fetchPolicy?:\n | 'cache-first'\n | 'cache-and-network'\n | 'network-only'\n | 'no-cache'\n | 'cache-only';\n headers?: HttpHeaders | { [header: string]: string | string[] };\n observe?: 'body' | 'events' | 'response';\n params?: HttpParams | { [param: string]: string | string[] };\n reportProgress?: boolean;\n responseType?: 'arraybuffer' | 'blob' | 'json' | 'text';\n withCredentials?: boolean;\n } = {}\n ): Observable<any> {\n return this.request<any>('PUT', resource, addBody(options, body));\n }\n}\n","import { ApiConfig } from './types';\nimport { InjectionToken } from '@angular/core';\n\nexport const ODATA_CONFIGURATIONS = new InjectionToken<ApiConfig>(\n 'odata.configuraions'\n);\n","import {\n ODataActionResource,\n ODataFunctionResource,\n ODataNavigationPropertyResource,\n ODataEntity,\n ODataEntities,\n ODataProperty,\n HttpQueryOptions,\n} from '../resources';\n\nimport { ODataClient } from '../client';\nimport { Observable } from 'rxjs';\n\nexport abstract class ODataBaseService {\n constructor(\n protected client: ODataClient,\n protected name: string,\n protected apiNameOrEntityType?: string\n ) {}\n\n get api() {\n return this.client.apiFor(this.apiNameOrEntityType);\n }\n\n protected callFunction<P, R>(\n params: P | null,\n resource: ODataFunctionResource<P, R>,\n responseType: 'entity',\n options?: HttpQueryOptions<R>\n ): Observable<ODataEntity<R>>;\n protected callFunction<P, R>(\n params: P | null,\n resource: ODataFunctionResource<P, R>,\n responseType: 'entities',\n options?: HttpQueryOptions<R>\n ): Observable<ODataEntities<R>>;\n protected callFunction<P, R>(\n params: P | null,\n resource: ODataFunctionResource<P, R>,\n responseType: 'property',\n options?: HttpQueryOptions<R>\n ): Observable<ODataProperty<R>>;\n protected callFunction<P, R>(\n params: P | null,\n resource: ODataFunctionResource<P, R>,\n responseType: 'none',\n options?: HttpQueryOptions<R>\n ): Observable<null>;\n protected callFunction<P, R>(\n params: P | null,\n resource: ODataFunctionResource<P, R>,\n responseType: 'property' | 'entity' | 'entities' | 'none',\n options: HttpQueryOptions<R> = {}\n ): Observable<any> {\n resource.query.apply(options);\n return resource.call(params, {\n responseType: responseType as any,\n ...options,\n });\n }\n\n protected callAction<P, R>(\n params: P | null,\n resource: ODataActionResource<P, R>,\n responseType: 'entity',\n options?: HttpQueryOptions<R>\n ): Observable<ODataEntity<R>>;\n protected callAction<P, R>(\n params: P | null,\n resource: ODataActionResource<P, R>,\n responseType: 'entities',\n options?: HttpQueryOptions<R>\n ): Observable<ODataEntities<R>>;\n protected callAction<P, R>(\n params: P | null,\n resource: ODataActionResource<P, R>,\n responseType: 'property',\n options?: HttpQueryOptions<R>\n ): Observable<ODataProperty<R>>;\n protected callAction<P, R>(\n params: P | null,\n resource: ODataActionResource<P, R>,\n responseType: 'none',\n options?: HttpQueryOptions<R>\n ): Observable<null>;\n protected callAction<P, R>(\n params: P | null,\n resource: ODataActionResource<P, R>,\n responseType: 'property' | 'entity' | 'entities' | 'none',\n options: HttpQueryOptions<R> = {}\n ): Observable<any> {\n resource.query.apply(options);\n return resource.call(params, {\n responseType: responseType as any,\n ...options,\n });\n }\n\n protected fetchNavigationProperty<S>(\n resource: ODataNavigationPropertyResource<S>,\n responseType: 'entity',\n options?: HttpQueryOptions<S>\n ): Observable<ODataEntity<S>>;\n protected fetchNavigationProperty<S>(\n resource: ODataNavigationPropertyResource<S>,\n responseType: 'entities',\n options?: HttpQueryOptions<S>\n ): Observable<ODataEntities<S>>;\n protected fetchNavigationProperty<S>(\n resource: ODataNavigationPropertyResource<S>,\n responseType: 'entity' | 'entities',\n options: HttpQueryOptions<S> = {}\n ): Observable<any> {\n resource.query.apply(options);\n return resource.fetch({ responseType: responseType as any, ...options });\n }\n}\n","import { EntityKey, ODataResource } from '../resources';\nimport { ODataModel } from '../models/model';\nimport { ODataBaseService } from './base';\n\nexport abstract class ODataEntityService<T> extends ODataBaseService {\n public abstract entity(key?: EntityKey<T>): ODataResource<T>;\n public abstract attach<M extends ODataModel<T>>(value: M): void;\n\n // Entity Config\n get structuredTypeSchema() {\n return this.apiNameOrEntityType !== undefined\n ? this.api.findStructuredTypeForType<T>(this.apiNameOrEntityType)\n : undefined;\n }\n}\n","import {\n EntityKey,\n ODataEntitySetResource,\n ODataEntityResource,\n HttpOptions,\n ODataEntity,\n ODataEntities,\n} from '../resources';\nimport { ODataCollection } from '../models/collection';\nimport { ODataModel } from '../models/model';\nimport { Observable, throwError } from 'rxjs';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { catchError } from 'rxjs/operators';\nimport { ODataEntityService } from './entity';\n\nexport class ODataEntitySetService<T> extends ODataEntityService<T> {\n /**\n * Get the entity set resource for this service.\n */\n public entities(): ODataEntitySetResource<T> {\n return this.client.entitySet<T>(this.name, this.apiNameOrEntityType);\n }\n\n /**\n * Get the entity resource for this service.\n * @param key The entity key.\n */\n public entity(key?: EntityKey<T>): ODataEntityResource<T> {\n return this.entities().entity(key);\n }\n\n /**\n * Attach an existing model to this service.\n * @param model The model to attach.\n */\n public attach<M extends ODataModel<T>>(model: M): void;\n public attach<C extends ODataCollection<T, ODataModel<T>>>(model: C): void;\n public attach(model: any): void {\n if (model instanceof ODataModel) {\n model.attach(this.entities().entity());\n } else if (model instanceof ODataCollection) {\n model.attach(this.entities());\n }\n }\n\n get entitySetSchema() {\n return this.api.findEntitySetByName(this.name);\n }\n\n /**\n * Get all entities from the entity set.\n * @param options The options for the request.\n */\n public fetchAll(options?: HttpOptions): Observable<T[]> {\n return this.entities().fetchAll(options);\n }\n\n /**\n * Get entities from the entity set.\n * @param withCount Get the count of the entities.\n * @param options The options for the request.\n */\n public fetchMany(\n options?: HttpOptions & { withCount?: boolean }\n ): Observable<ODataEntities<T>> {\n return this.entities().fetch(options);\n }\n\n /**\n * Get an entity from the entity set.\n * @param key The entity key.\n * @param etag The etag for the entity.\n * @param options The options for the request.\n */\n public fetchOne(\n key: EntityKey<T>,\n options?: HttpOptions & { etag?: string }\n ): Observable<ODataEntity<T>> {\n return this.entity(key).fetch(options);\n }\n\n /**\n * Create an entity in the entity set.\n * @param attrs The attributes for the entity.\n * @param options The options for the request.\n */\n public create(\n attrs: Partial<T>,\n options?: HttpOptions\n ): Observable<ODataEntity<T>> {\n return this.entities().post(attrs, options);\n }\n\n /**\n * Update an entity in the entity set.\n * @param key The entity key.\n * @param attrs The attributes for the entity.\n * @param etag The etag for the entity.\n * @param options The options for the request.\n */\n public update(\n key: EntityKey<T>,\n attrs: Partial<T>,\n options?: HttpOptions & { etag?: string }\n ): Observable<ODataEntity<T>> {\n const res = this.entity(key);\n if (!res.hasKey()) return throwError('Resource without key');\n return res.put(attrs, options);\n }\n\n /**\n * Patch an entity in the entity set.\n * @param key The entity key.\n * @param attrs The attributes for the entity.\n * @param etag The etag for the entity.\n * @param options The options for the request.\n */\n public patch(\n key: EntityKey<T>,\n attrs: Partial<T>,\n options?: HttpOptions & { etag?: string }\n ): Observable<ODataEntity<T>> {\n const res = this.entity(key);\n if (!res.hasKey()) return throwError('Resource without key');\n return res.patch(attrs, options);\n }\n\n /**\n * Delete an entity in the entity set.\n * @param key The entity key.\n * @param etag The etag for the entity.\n * @param options The options for the request.\n */\n public destroy(key: EntityKey<T>, options?: HttpOptions & { etag?: string }) {\n const res = this.entity(key);\n if (!res.hasKey()) return throwError('Resource without key');\n return res.delete(options);\n }\n\n //#region Shortcuts\n /**\n * Get or create an entity in the entity set.\n * @param key The entity key.\n * @param attrs The attributes for the entity.\n * @param etag The etag for the entity.\n * @param options The options for the request.\n */\n public fetchOrCreate(\n key: EntityKey<T>,\n attrs: Partial<T>,\n { etag, ...options }: { etag?: string } & HttpOptions = {}\n ): Observable<ODataEntity<T>> {\n return this.fetchOne(key, { etag, ...options }).pipe(\n catchError((error: HttpErrorResponse) => {\n if (error.status === 404) return this.create(attrs, options);\n else return throwError(error);\n })\n );\n }\n\n /**\n * Save an entity in the entity set.\n * @param attrs The attributes for the entity.\n * @param method The method to use.\n * @param etag The etag for the entity.\n * @param options The options for the request.\n */\n public save(\n attrs: Partial<T>,\n {\n etag,\n method,\n ...options\n }: {\n etag?: string;\n method?: 'create' | 'update' | 'patch';\n } & HttpOptions = {}\n ) {\n let schema = this.structuredTypeSchema;\n if (method === undefined && schema !== undefined && schema.isCompoundKey())\n return throwError(\n 'Composite key require a specific method, use create/update/patch'\n );\n let key = schema && schema.resolveKey(attrs);\n if (method === undefined) method = key !== undefined ? 'update' : 'create';\n if ((method === 'update' || method === 'patch') && key === undefined)\n return throwError(\"Can't update/patch entity without key\");\n return method === 'create'\n ? this.create(attrs, options)\n : method === 'patch'\n ? this.patch(key, attrs, { etag, ...options })\n : this.update(key, attrs, { etag, ...options });\n }\n //#endregion\n}\n","import { Observable } from 'rxjs';\nimport type { ODataModel } from '../models/model';\nimport type {\n HttpOptions,\n ODataEntity,\n ODataSingletonResource,\n} from '../resources';\nimport { ODataEntityService } from './entity';\n\n/**\n * OData Singleton Service\n * www.odata.org/getting-started/advanced-tutorial/#singleton\n */\nexport class ODataSingletonService<T> extends ODataEntityService<T> {\n /**\n * Get the entity resource for this service.\n * @param key The entity key.\n */\n public entity(): ODataSingletonResource<T> {\n return this.client.singleton(this.name, this.apiNameOrEntityType);\n }\n\n /**\n * Attach an existing model to this service.\n * @param model The model to attach.\n */\n public attach<M extends ODataModel<T>>(model: M) {\n model.attach(this.entity());\n }\n\n // Service Config\n get singletonSchema() {\n return this.api.findEntitySetByName(this.name);\n }\n\n /**\n * Update the singleton entity\n * @param attrs The attributes for the entity.\n * @param etag The etag for the entity.\n * @param options The options for the request.\n */\n public update(\n attrs: Partial<T>,\n options?: HttpOptions & { etag?: string }\n ): Observable<ODataEntity<T>> {\n const res = this.entity();\n return res.put(attrs, options);\n }\n\n /**\n * Patch the singleton entity\n * @param attrs The attributes for the entity.\n * @param etag The etag for the entity.\n * @param options The options for the request.\n */\n public patch(\n attrs: Partial<T>,\n options?: HttpOptions & { etag?: string }\n ): Observable<ODataEntity<T>> {\n const res = this.entity();\n return res.patch(attrs, options);\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ODataClient } from '../client';\nimport { ODataEntitySetService } from './entity-set';\nimport { ODataSingletonService } from './singleton';\n\n@Injectable()\nexport class ODataServiceFactory {\n constructor(protected client: ODataClient) {}\n\n /**\n * Factory method to create an entity set service.\n * @param entitySetName Name of the entity set.\n * @param apiNameOrEntityType Name of the API or the type of the entity.\n */\n entitySet<T>(\n entitySetName: string,\n apiNameOrEntityType?: string\n ): ODataEntitySetService<T> {\n return new (class extends ODataEntitySetService<T> {})(\n this.client,\n entitySetName,\n apiNameOrEntityType\n );\n }\n\n /** Factory method to create a singleton service.\n * @param singletonName Name of the singleton.\n * @param apiNameOrEntityType Name of the API or the type of the entity.\n */\n singleton<T>(\n singletonName: string,\n apiNameOrEntityType?: string\n ): ODataSingletonService<T> {\n return new (class extends ODataSingletonService<T> {})(\n this.client,\n singletonName,\n apiNameOrEntityType\n );\n }\n}\n","import { HttpClientModule } from '@angular/common/http';\nimport { NgModule, ModuleWithProviders } from '@angular/core';\n\nimport { ODataSettings } from './settings';\nimport { ODataClient } from './client';\nimport { ODataServiceFactory } from './services/index';\nimport { ApiConfig } from './types';\nimport { ODATA_CONFIGURATIONS } from './tokens';\n\nexport function createSettings(configs: ApiConfig[]) {\n return new ODataSettings(...configs);\n}\n\n@NgModule({\n imports: [HttpClientModule],\n providers: [ODataClient, ODataServiceFactory],\n})\nexport class ODataModule {\n public static forRoot(\n ...configs: ApiConfig[]\n ): ModuleWithProviders<ODataModule> {\n return {\n ngModule: ODataModule,\n providers: [\n { provide: ODATA_CONFIGURATIONS, useValue: configs },\n {\n provide: ODataSettings,\n useFactory: createSettings,\n deps: [ODATA_CONFIGURATIONS],\n },\n ODataClient,\n ODataServiceFactory,\n ],\n };\n }\n}\n","/*\n * Public API Surface of angular-odata\n */\n\nexport * from './lib';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["PathSegmentNames","QueryOptionNames","StandardAggregateMethods","QueryCustomTypes","HttpHeaders","HttpParams","map","HttpResponse","HttpErrorResponse","Subject","BehaviorSubject","switchMap","finalize","alias","functionAlias","expand","EMPTY","concatMap","toArray","throwError","ODataModelState","tap","EventEmitter","forkJoin","of","NEVER","startWith","HttpEventType","catchError","Injectable","InjectionToken","HttpClientModule","NgModule"],"mappings":"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"}