angular-odata 0.127.0 → 0.128.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 (274) hide show
  1. package/esm2022/lib/annotations.mjs +140 -0
  2. package/esm2022/lib/api.mjs +209 -164
  3. package/esm2022/lib/cache/cache.mjs +1 -1
  4. package/esm2022/lib/cache/memory.mjs +1 -1
  5. package/esm2022/lib/client.mjs +4 -44
  6. package/esm2022/lib/constants.mjs +4 -1
  7. package/esm2022/lib/index.mjs +3 -1
  8. package/esm2022/lib/loaders.mjs +23 -17
  9. package/esm2022/lib/metadata/csdl/csdl-annotation.mjs +95 -0
  10. package/esm2022/lib/metadata/csdl/csdl-entity-container.mjs +27 -0
  11. package/esm2022/lib/metadata/csdl/csdl-entity-set.mjs +24 -0
  12. package/esm2022/lib/metadata/csdl/csdl-enum-type.mjs +37 -0
  13. package/esm2022/lib/metadata/csdl/csdl-function-action.mjs +94 -0
  14. package/esm2022/lib/metadata/csdl/csdl-navigation-property-binding.mjs +7 -0
  15. package/esm2022/lib/metadata/csdl/csdl-reference.mjs +23 -0
  16. package/esm2022/lib/metadata/csdl/csdl-schema.mjs +39 -0
  17. package/esm2022/lib/metadata/csdl/csdl-singleton.mjs +15 -0
  18. package/esm2022/lib/metadata/csdl/csdl-structural-property.mjs +70 -0
  19. package/esm2022/lib/metadata/csdl/csdl-structured-type.mjs +92 -0
  20. package/esm2022/lib/metadata/csdl/csdl-type-definition.mjs +15 -0
  21. package/esm2022/lib/metadata/index.mjs +3 -0
  22. package/esm2022/lib/metadata/metadata.mjs +14 -0
  23. package/esm2022/lib/metadata/parser.mjs +563 -0
  24. package/esm2022/lib/models/collection.mjs +98 -140
  25. package/esm2022/lib/models/model.mjs +38 -45
  26. package/esm2022/lib/models/options.mjs +127 -117
  27. package/esm2022/lib/module.mjs +3 -3
  28. package/esm2022/lib/resources/index.mjs +2 -2
  29. package/esm2022/lib/resources/options.mjs +56 -0
  30. package/esm2022/lib/resources/path/handlers.mjs +14 -4
  31. package/esm2022/lib/resources/path/segments.mjs +6 -4
  32. package/esm2022/lib/resources/query/builder.mjs +5 -5
  33. package/esm2022/lib/resources/query/expressions/apply.mjs +81 -14
  34. package/esm2022/lib/resources/query/expressions/base.mjs +1 -1
  35. package/esm2022/lib/resources/query/expressions/compute.mjs +1 -1
  36. package/esm2022/lib/resources/query/expressions/count.mjs +1 -1
  37. package/esm2022/lib/resources/query/expressions/expand.mjs +1 -1
  38. package/esm2022/lib/resources/query/expressions/filter.mjs +1 -1
  39. package/esm2022/lib/resources/query/expressions/orderby.mjs +2 -2
  40. package/esm2022/lib/resources/query/expressions/search.mjs +1 -1
  41. package/esm2022/lib/resources/query/expressions/select.mjs +5 -1
  42. package/esm2022/lib/resources/query/expressions/syntax.mjs +18 -7
  43. package/esm2022/lib/resources/query/handlers.mjs +1 -1
  44. package/esm2022/lib/resources/query/options.mjs +1 -1
  45. package/esm2022/lib/resources/request.mjs +5 -5
  46. package/esm2022/lib/resources/resource.mjs +107 -82
  47. package/esm2022/lib/resources/response.mjs +174 -0
  48. package/esm2022/lib/resources/types/action.mjs +29 -26
  49. package/esm2022/lib/resources/types/batch.mjs +1 -1
  50. package/esm2022/lib/resources/types/count.mjs +7 -7
  51. package/esm2022/lib/resources/types/entity-set.mjs +37 -24
  52. package/esm2022/lib/resources/types/entity.mjs +14 -11
  53. package/esm2022/lib/resources/types/function.mjs +25 -28
  54. package/esm2022/lib/resources/types/metadata.mjs +9 -5
  55. package/esm2022/lib/resources/types/navigation-property.mjs +36 -30
  56. package/esm2022/lib/resources/types/property.mjs +31 -49
  57. package/esm2022/lib/resources/types/reference.mjs +3 -4
  58. package/esm2022/lib/resources/types/singleton.mjs +11 -7
  59. package/esm2022/lib/resources/types/value.mjs +16 -12
  60. package/esm2022/lib/schema/callable.mjs +10 -10
  61. package/esm2022/lib/schema/element.mjs +15 -9
  62. package/esm2022/lib/schema/entity-container.mjs +4 -2
  63. package/esm2022/lib/schema/enum-type.mjs +6 -7
  64. package/esm2022/lib/schema/index.mjs +2 -1
  65. package/esm2022/lib/schema/parsers/callable.mjs +10 -7
  66. package/esm2022/lib/schema/parsers/edm.mjs +6 -4
  67. package/esm2022/lib/schema/parsers/enum-type.mjs +10 -10
  68. package/esm2022/lib/schema/parsers/structured-type.mjs +19 -19
  69. package/esm2022/lib/schema/schema.mjs +18 -34
  70. package/esm2022/lib/schema/singleton.mjs +9 -0
  71. package/esm2022/lib/schema/structured-type.mjs +18 -23
  72. package/esm2022/lib/services/base.mjs +1 -1
  73. package/esm2022/lib/services/entity-set.mjs +12 -2
  74. package/esm2022/lib/services/entity.mjs +2 -2
  75. package/esm2022/lib/services/factory.mjs +18 -7
  76. package/esm2022/lib/services/singleton.mjs +8 -2
  77. package/esm2022/lib/settings.mjs +7 -99
  78. package/esm2022/lib/types.mjs +1 -1
  79. package/esm2022/lib/utils/http.mjs +1 -1
  80. package/fesm2022/angular-odata.mjs +2286 -1951
  81. package/fesm2022/angular-odata.mjs.map +1 -1
  82. package/lib/{resources/responses/annotations.d.ts → annotations.d.ts} +2 -2
  83. package/lib/api.d.ts +29 -26
  84. package/lib/cache/memory.d.ts +1 -1
  85. package/lib/client.d.ts +0 -20
  86. package/lib/constants.d.ts +3 -0
  87. package/lib/index.d.ts +1 -0
  88. package/lib/loaders.d.ts +7 -1
  89. package/lib/metadata/csdl/csdl-annotation.d.ts +123 -0
  90. package/lib/metadata/csdl/csdl-entity-container.d.ts +26 -0
  91. package/lib/metadata/csdl/csdl-entity-set.d.ts +20 -0
  92. package/lib/metadata/csdl/csdl-enum-type.d.ts +29 -0
  93. package/lib/metadata/csdl/csdl-function-action.d.ts +105 -0
  94. package/lib/metadata/csdl/csdl-navigation-property-binding.d.ts +8 -0
  95. package/lib/metadata/csdl/csdl-reference.d.ts +30 -0
  96. package/lib/metadata/csdl/csdl-schema.d.ts +34 -0
  97. package/lib/metadata/csdl/csdl-singleton.d.ts +16 -0
  98. package/lib/metadata/csdl/csdl-structural-property.d.ts +70 -0
  99. package/lib/metadata/csdl/csdl-structured-type.d.ts +73 -0
  100. package/lib/metadata/csdl/csdl-type-definition.d.ts +22 -0
  101. package/lib/metadata/index.d.ts +2 -0
  102. package/lib/metadata/metadata.d.ts +10 -0
  103. package/lib/{resources/responses/metadata.d.ts → metadata/parser.d.ts} +19 -7
  104. package/lib/models/collection.d.ts +4 -3
  105. package/lib/models/model.d.ts +15 -23
  106. package/lib/models/options.d.ts +37 -23
  107. package/lib/resources/index.d.ts +1 -1
  108. package/lib/resources/{responses/options.d.ts → options.d.ts} +2 -2
  109. package/lib/resources/path/handlers.d.ts +4 -2
  110. package/lib/resources/path/segments.d.ts +3 -1
  111. package/lib/resources/query/expressions/apply.d.ts +37 -15
  112. package/lib/resources/query/expressions/base.d.ts +1 -1
  113. package/lib/resources/query/expressions/compute.d.ts +2 -2
  114. package/lib/resources/query/expressions/count.d.ts +1 -1
  115. package/lib/resources/query/expressions/expand.d.ts +1 -1
  116. package/lib/resources/query/expressions/filter.d.ts +1 -1
  117. package/lib/resources/query/expressions/orderby.d.ts +5 -4
  118. package/lib/resources/query/expressions/search.d.ts +1 -1
  119. package/lib/resources/query/expressions/select.d.ts +2 -1
  120. package/lib/resources/query/expressions/syntax.d.ts +6 -3
  121. package/lib/resources/resource.d.ts +27 -15
  122. package/lib/resources/{responses/response.d.ts → response.d.ts} +17 -5
  123. package/lib/resources/types/action.d.ts +12 -10
  124. package/lib/resources/types/batch.d.ts +3 -2
  125. package/lib/resources/types/count.d.ts +1 -5
  126. package/lib/resources/types/entity-set.d.ts +13 -6
  127. package/lib/resources/types/entity.d.ts +3 -4
  128. package/lib/resources/types/function.d.ts +11 -11
  129. package/lib/resources/types/metadata.d.ts +1 -1
  130. package/lib/resources/types/navigation-property.d.ts +13 -7
  131. package/lib/resources/types/property.d.ts +15 -8
  132. package/lib/resources/types/reference.d.ts +2 -4
  133. package/lib/resources/types/singleton.d.ts +4 -6
  134. package/lib/resources/types/value.d.ts +2 -6
  135. package/lib/schema/callable.d.ts +5 -7
  136. package/lib/schema/element.d.ts +11 -4
  137. package/lib/schema/entity-container.d.ts +2 -0
  138. package/lib/schema/enum-type.d.ts +4 -7
  139. package/lib/schema/index.d.ts +1 -0
  140. package/lib/schema/parsers/callable.d.ts +7 -8
  141. package/lib/schema/parsers/enum-type.d.ts +2 -4
  142. package/lib/schema/parsers/structured-type.d.ts +6 -8
  143. package/lib/schema/schema.d.ts +6 -9
  144. package/lib/schema/singleton.d.ts +10 -0
  145. package/lib/schema/structured-type.d.ts +5 -8
  146. package/lib/services/entity-set.d.ts +7 -3
  147. package/lib/services/factory.d.ts +14 -2
  148. package/lib/services/singleton.d.ts +4 -2
  149. package/lib/settings.d.ts +0 -10
  150. package/lib/types.d.ts +12 -3
  151. package/package.json +5 -1
  152. package/schematics/apigen/angular/api-config.d.ts +15 -0
  153. package/schematics/apigen/angular/api-config.js +34 -0
  154. package/schematics/apigen/angular/api-config.js.map +1 -0
  155. package/schematics/apigen/angular/base.d.ts +51 -0
  156. package/schematics/apigen/angular/base.js +200 -0
  157. package/schematics/apigen/angular/base.js.map +1 -0
  158. package/schematics/apigen/angular/entity.d.ts +24 -0
  159. package/schematics/apigen/angular/entity.js +71 -0
  160. package/schematics/apigen/angular/entity.js.map +1 -0
  161. package/schematics/apigen/angular/enum.d.ts +25 -0
  162. package/schematics/apigen/angular/enum.js +56 -0
  163. package/schematics/apigen/angular/enum.js.map +1 -0
  164. package/schematics/apigen/angular/import.d.ts +6 -0
  165. package/schematics/apigen/angular/import.js +18 -0
  166. package/schematics/apigen/angular/import.js.map +1 -0
  167. package/schematics/apigen/angular/module.d.ts +18 -0
  168. package/schematics/apigen/angular/module.js +41 -0
  169. package/schematics/apigen/angular/module.js.map +1 -0
  170. package/schematics/apigen/angular/service.d.ts +20 -0
  171. package/schematics/apigen/angular/service.js +76 -0
  172. package/schematics/apigen/angular/service.js.map +1 -0
  173. package/schematics/apigen/files/api-config/__fileName__.ts +9 -0
  174. package/schematics/apigen/files/entity/__fileName__.ts +7 -0
  175. package/schematics/apigen/files/entitycontainer-service/__fileName__.ts +18 -0
  176. package/schematics/apigen/files/entityset-service/__fileName__.ts +27 -0
  177. package/schematics/apigen/files/enum/__fileName__.ts +4 -0
  178. package/schematics/apigen/files/index/__fileName__.ts +2 -0
  179. package/schematics/apigen/files/module/__fileName__.ts +9 -0
  180. package/schematics/apigen/files/singleton-service/__fileName__.ts +18 -0
  181. package/schematics/apigen/index.d.ts +3 -0
  182. package/schematics/apigen/index.js +106 -0
  183. package/schematics/apigen/index.js.map +1 -0
  184. package/schematics/apigen/metadata/csdl/csdl-annotation.d.ts +120 -0
  185. package/schematics/apigen/metadata/csdl/csdl-annotation.js +98 -0
  186. package/schematics/apigen/metadata/csdl/csdl-annotation.js.map +1 -0
  187. package/schematics/apigen/metadata/csdl/csdl-entity-container.d.ts +26 -0
  188. package/schematics/apigen/metadata/csdl/csdl-entity-container.js +30 -0
  189. package/schematics/apigen/metadata/csdl/csdl-entity-container.js.map +1 -0
  190. package/schematics/apigen/metadata/csdl/csdl-entity-set.d.ts +20 -0
  191. package/schematics/apigen/metadata/csdl/csdl-entity-set.js +26 -0
  192. package/schematics/apigen/metadata/csdl/csdl-entity-set.js.map +1 -0
  193. package/schematics/apigen/metadata/csdl/csdl-enum-type.d.ts +28 -0
  194. package/schematics/apigen/metadata/csdl/csdl-enum-type.js +33 -0
  195. package/schematics/apigen/metadata/csdl/csdl-enum-type.js.map +1 -0
  196. package/schematics/apigen/metadata/csdl/csdl-function-action.d.ts +103 -0
  197. package/schematics/apigen/metadata/csdl/csdl-function-action.js +84 -0
  198. package/schematics/apigen/metadata/csdl/csdl-function-action.js.map +1 -0
  199. package/schematics/apigen/metadata/csdl/csdl-navigation-property-binding.d.ts +8 -0
  200. package/schematics/apigen/metadata/csdl/csdl-navigation-property-binding.js +11 -0
  201. package/schematics/apigen/metadata/csdl/csdl-navigation-property-binding.js.map +1 -0
  202. package/schematics/apigen/metadata/csdl/csdl-reference.d.ts +30 -0
  203. package/schematics/apigen/metadata/csdl/csdl-reference.js +29 -0
  204. package/schematics/apigen/metadata/csdl/csdl-reference.js.map +1 -0
  205. package/schematics/apigen/metadata/csdl/csdl-schema.d.ts +32 -0
  206. package/schematics/apigen/metadata/csdl/csdl-schema.js +26 -0
  207. package/schematics/apigen/metadata/csdl/csdl-schema.js.map +1 -0
  208. package/schematics/apigen/metadata/csdl/csdl-singleton.d.ts +18 -0
  209. package/schematics/apigen/metadata/csdl/csdl-singleton.js +25 -0
  210. package/schematics/apigen/metadata/csdl/csdl-singleton.js.map +1 -0
  211. package/schematics/apigen/metadata/csdl/csdl-structural-property.d.ts +63 -0
  212. package/schematics/apigen/metadata/csdl/csdl-structural-property.js +50 -0
  213. package/schematics/apigen/metadata/csdl/csdl-structural-property.js.map +1 -0
  214. package/schematics/apigen/metadata/csdl/csdl-structured-type.d.ts +64 -0
  215. package/schematics/apigen/metadata/csdl/csdl-structured-type.js +71 -0
  216. package/schematics/apigen/metadata/csdl/csdl-structured-type.js.map +1 -0
  217. package/schematics/apigen/metadata/csdl/csdl-type-definition.d.ts +22 -0
  218. package/schematics/apigen/metadata/csdl/csdl-type-definition.js +19 -0
  219. package/schematics/apigen/metadata/csdl/csdl-type-definition.js.map +1 -0
  220. package/schematics/apigen/metadata/index.d.ts +1 -0
  221. package/schematics/apigen/metadata/index.js +18 -0
  222. package/schematics/apigen/metadata/index.js.map +1 -0
  223. package/schematics/apigen/metadata/metadata.d.ts +11 -0
  224. package/schematics/apigen/metadata/metadata.js +30 -0
  225. package/schematics/apigen/metadata/metadata.js.map +1 -0
  226. package/schematics/apigen/metadata/parser.d.ts +110 -0
  227. package/schematics/apigen/metadata/parser.js +568 -0
  228. package/schematics/apigen/metadata/parser.js.map +1 -0
  229. package/schematics/apigen/schema.d.ts +8 -0
  230. package/schematics/apigen/schema.js +3 -0
  231. package/schematics/apigen/schema.js.map +1 -0
  232. package/schematics/apigen/schema.json +36 -0
  233. package/schematics/apigen/utils.d.ts +1 -0
  234. package/schematics/apigen/utils.js +75 -0
  235. package/schematics/apigen/utils.js.map +1 -0
  236. package/schematics/collection.json +14 -0
  237. package/schematics/ng-add/index.d.ts +2 -0
  238. package/schematics/ng-add/index.js +13 -0
  239. package/schematics/ng-add/index.js.map +1 -0
  240. package/schematics/random.d.ts +1 -0
  241. package/schematics/random.js +604 -0
  242. package/schematics/random.js.map +1 -0
  243. package/esm2022/lib/resources/responses/annotations.mjs +0 -140
  244. package/esm2022/lib/resources/responses/csdl/csdl-annotation.mjs +0 -33
  245. package/esm2022/lib/resources/responses/csdl/csdl-entity-container.mjs +0 -11
  246. package/esm2022/lib/resources/responses/csdl/csdl-entity-set.mjs +0 -9
  247. package/esm2022/lib/resources/responses/csdl/csdl-enum-type.mjs +0 -15
  248. package/esm2022/lib/resources/responses/csdl/csdl-function-action.mjs +0 -56
  249. package/esm2022/lib/resources/responses/csdl/csdl-navigation-property-binding.mjs +0 -7
  250. package/esm2022/lib/resources/responses/csdl/csdl-reference.mjs +0 -23
  251. package/esm2022/lib/resources/responses/csdl/csdl-schema.mjs +0 -18
  252. package/esm2022/lib/resources/responses/csdl/csdl-singleton.mjs +0 -8
  253. package/esm2022/lib/resources/responses/csdl/csdl-structural-property.mjs +0 -39
  254. package/esm2022/lib/resources/responses/csdl/csdl-structured-type.mjs +0 -34
  255. package/esm2022/lib/resources/responses/csdl/csdl-type-definition.mjs +0 -14
  256. package/esm2022/lib/resources/responses/index.mjs +0 -5
  257. package/esm2022/lib/resources/responses/metadata.mjs +0 -547
  258. package/esm2022/lib/resources/responses/options.mjs +0 -56
  259. package/esm2022/lib/resources/responses/response.mjs +0 -174
  260. package/esm2022/lib/resources/responses/types.mjs +0 -2
  261. package/lib/resources/responses/csdl/csdl-annotation.d.ts +0 -27
  262. package/lib/resources/responses/csdl/csdl-entity-container.d.ts +0 -12
  263. package/lib/resources/responses/csdl/csdl-entity-set.d.ts +0 -8
  264. package/lib/resources/responses/csdl/csdl-enum-type.d.ts +0 -12
  265. package/lib/resources/responses/csdl/csdl-function-action.d.ts +0 -49
  266. package/lib/resources/responses/csdl/csdl-navigation-property-binding.d.ts +0 -5
  267. package/lib/resources/responses/csdl/csdl-reference.d.ts +0 -18
  268. package/lib/resources/responses/csdl/csdl-schema.d.ts +0 -20
  269. package/lib/resources/responses/csdl/csdl-singleton.d.ts +0 -7
  270. package/lib/resources/responses/csdl/csdl-structural-property.d.ts +0 -31
  271. package/lib/resources/responses/csdl/csdl-structured-type.d.ts +0 -27
  272. package/lib/resources/responses/csdl/csdl-type-definition.d.ts +0 -11
  273. package/lib/resources/responses/index.d.ts +0 -4
  274. package/lib/resources/responses/types.d.ts +0 -13
@@ -0,0 +1,140 @@
1
+ export class ODataAnnotations {
2
+ constructor(helper, annotations = new Map(), context) {
3
+ this.helper = helper;
4
+ this.annotations = annotations;
5
+ this.context = context;
6
+ }
7
+ attributes(data, metadata) {
8
+ return this.helper.attributes(data, metadata);
9
+ }
10
+ update(data) {
11
+ this.annotations = new Map([
12
+ ...this.annotations,
13
+ ...this.helper.annotations(data),
14
+ ]);
15
+ }
16
+ get entitySet() {
17
+ return this.context?.entitySet;
18
+ }
19
+ get type() {
20
+ return this.helper.type(this.annotations) || this.context?.type;
21
+ }
22
+ }
23
+ export class ODataPropertyAnnotations extends ODataAnnotations {
24
+ union(other) {
25
+ return new ODataPropertyAnnotations(this.helper, new Map([...this.annotations, ...other.annotations]), Object.assign({}, this.context, other.context));
26
+ }
27
+ clone() {
28
+ return new ODataPropertyAnnotations(this.helper, new Map(this.annotations), this.context);
29
+ }
30
+ data(data) {
31
+ return this.helper.property(data);
32
+ }
33
+ }
34
+ export class ODataEntityAnnotations extends ODataAnnotations {
35
+ union(other) {
36
+ return new ODataEntityAnnotations(this.helper, new Map([...this.annotations, ...other.annotations]), Object.assign({}, this.context, other.context));
37
+ }
38
+ clone() {
39
+ return new ODataEntityAnnotations(this.helper, new Map(this.annotations), this.context);
40
+ }
41
+ data(data) {
42
+ return this.helper.entity(data);
43
+ }
44
+ get id() {
45
+ return this.helper.id(this.annotations);
46
+ }
47
+ get etag() {
48
+ return this.helper.etag(this.annotations);
49
+ }
50
+ get mediaEtag() {
51
+ return this.helper.mediaEtag(this.annotations);
52
+ }
53
+ get metadataEtag() {
54
+ return this.helper.metadataEtag(this.annotations);
55
+ }
56
+ get readLink() {
57
+ return this.helper.readLink(this.annotations);
58
+ }
59
+ get editLink() {
60
+ return this.helper.editLink(this.annotations);
61
+ }
62
+ get mediaReadLink() {
63
+ return this.helper.mediaReadLink(this.annotations);
64
+ }
65
+ get mediaEditLink() {
66
+ return this.helper.mediaEditLink(this.annotations);
67
+ }
68
+ get mediaContentType() {
69
+ return this.helper.mediaContentType(this.annotations);
70
+ }
71
+ get properties() {
72
+ if (this._properties === undefined) {
73
+ this._properties = this.helper.properties(this.annotations);
74
+ }
75
+ return this._properties;
76
+ }
77
+ property(name, type) {
78
+ const props = this.properties.get(name);
79
+ return type === 'collection'
80
+ ? new ODataEntitiesAnnotations(this.helper, props)
81
+ : new ODataEntityAnnotations(this.helper, props);
82
+ }
83
+ get functions() {
84
+ if (this._functions === undefined) {
85
+ this._functions = this.helper.functions(this.annotations);
86
+ }
87
+ return this._functions;
88
+ }
89
+ function(name) {
90
+ return this.functions[name];
91
+ }
92
+ }
93
+ export class ODataEntitiesAnnotations extends ODataAnnotations {
94
+ union(other) {
95
+ return new ODataEntitiesAnnotations(this.helper, new Map([...this.annotations, ...other.annotations]), Object.assign({}, this.context, other.context));
96
+ }
97
+ clone() {
98
+ return new ODataEntitiesAnnotations(this.helper, new Map(this.annotations), this.context);
99
+ }
100
+ data(data) {
101
+ return this.helper.entities(data);
102
+ }
103
+ get readLink() {
104
+ return this.helper.readLink(this.annotations);
105
+ }
106
+ get count() {
107
+ return this.helper.count(this.annotations);
108
+ }
109
+ get nextLink() {
110
+ return this.helper.nextLink(this.annotations);
111
+ }
112
+ get deltaLink() {
113
+ return this.helper.deltaLink(this.annotations);
114
+ }
115
+ get top() {
116
+ let match = (this.nextLink || '').match(/[&?]{1}\$top=(\d+)/);
117
+ return match !== null ? Number(match[1]) : undefined;
118
+ }
119
+ get skip() {
120
+ let match = (this.nextLink || '').match(/[&?]{1}\$skip=(\d+)/);
121
+ return match !== null ? Number(match[1]) : undefined;
122
+ }
123
+ get skiptoken() {
124
+ let match = (this.nextLink || '').match(/[&?]{1}\$skiptoken=([\d\w\s'\-]+)/);
125
+ return match !== null ? match[1] : undefined;
126
+ }
127
+ get functions() {
128
+ if (this._functions === undefined) {
129
+ this._functions = this.helper.functions(this.annotations);
130
+ }
131
+ return this._functions;
132
+ }
133
+ function(name) {
134
+ return this.functions[name];
135
+ }
136
+ entity() {
137
+ return new ODataEntityAnnotations(this.helper, this.annotations);
138
+ }
139
+ }
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvYW5ub3RhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFnQixnQkFBZ0I7SUFDcEMsWUFDUyxNQUEwQixFQUN2QixjQUFnQyxJQUFJLEdBQUcsRUFBZSxFQUN0RCxPQUFzQjtRQUZ6QixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBMkM7UUFDdEQsWUFBTyxHQUFQLE9BQU8sQ0FBZTtJQUMvQixDQUFDO0lBRUosVUFBVSxDQUNSLElBQTZCLEVBQzdCLFFBQTJCO1FBRTNCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBZSxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLENBQUMsSUFBNkI7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBYztZQUN0QyxHQUFHLElBQUksQ0FBQyxXQUFXO1lBQ25CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztJQUNsRSxDQUFDO0NBTUY7QUFFRCxNQUFNLE9BQU8sd0JBQTRCLFNBQVEsZ0JBQW1CO0lBQ2xFLEtBQUssQ0FBQyxLQUFvQztRQUN4QyxPQUFPLElBQUksd0JBQXdCLENBQ2pDLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxHQUFHLENBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFDakUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQy9DLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSx3QkFBd0IsQ0FDakMsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQ3pCLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBNkI7UUFDaEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sc0JBQTBCLFNBQVEsZ0JBQW1CO0lBQ2hFLEtBQUssQ0FBQyxLQUFrQztRQUN0QyxPQUFPLElBQUksc0JBQXNCLENBQy9CLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxHQUFHLENBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsRUFDakUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQy9DLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxzQkFBc0IsQ0FDL0IsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQ3pCLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLENBQUMsSUFBNkI7UUFDaEMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFHRCxJQUFJLFVBQVU7UUFDWixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2hFO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFJRCxRQUFRLENBQ04sSUFBYSxFQUNiLElBQTZCO1FBRTdCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxLQUFLLFlBQVk7WUFDMUIsQ0FBQyxDQUFDLElBQUksd0JBQXdCLENBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUM7WUFDckQsQ0FBQyxDQUFDLElBQUksc0JBQXNCLENBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBR0QsSUFBSSxTQUFTO1FBQ1gsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMzRDtRQUNELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQVk7UUFDbkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyx3QkFBNEIsU0FBUSxnQkFBbUI7SUFDbEUsS0FBSyxDQUFDLEtBQW9DO1FBQ3hDLE9BQU8sSUFBSSx3QkFBd0IsQ0FDakMsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLEdBQUcsQ0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUNqRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FDL0MsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxJQUFJLHdCQUF3QixDQUNqQyxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQyxJQUE2QjtRQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0wsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzlELE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMvRCxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUNyQyxtQ0FBbUMsQ0FDcEMsQ0FBQztRQUNGLE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDL0MsQ0FBQztJQUdELElBQUksU0FBUztRQUNYLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDM0Q7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxzQkFBc0IsQ0FBSSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPRGF0YUNvbnRleHQsIE9EYXRhVmVyc2lvbkhlbHBlciB9IGZyb20gJy4vaGVscGVyJztcblxuaW1wb3J0IHsgT0RhdGFNZXRhZGF0YVR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE9EYXRhQW5ub3RhdGlvbnM8VD4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgaGVscGVyOiBPRGF0YVZlcnNpb25IZWxwZXIsXG4gICAgcHJvdGVjdGVkIGFubm90YXRpb25zOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKSxcbiAgICBwcm90ZWN0ZWQgY29udGV4dD86IE9EYXRhQ29udGV4dCxcbiAgKSB7fVxuXG4gIGF0dHJpYnV0ZXMoXG4gICAgZGF0YTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0sXG4gICAgbWV0YWRhdGE6IE9EYXRhTWV0YWRhdGFUeXBlLFxuICApOiBQYXJ0aWFsPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuYXR0cmlidXRlcyhkYXRhLCBtZXRhZGF0YSkgYXMgUGFydGlhbDxUPjtcbiAgfVxuXG4gIHVwZGF0ZShkYXRhOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHRoaXMuYW5ub3RhdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgYW55PihbXG4gICAgICAuLi50aGlzLmFubm90YXRpb25zLFxuICAgICAgLi4udGhpcy5oZWxwZXIuYW5ub3RhdGlvbnMoZGF0YSksXG4gICAgXSk7XG4gIH1cblxuICBnZXQgZW50aXR5U2V0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQ/LmVudGl0eVNldDtcbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci50eXBlKHRoaXMuYW5ub3RhdGlvbnMpIHx8IHRoaXMuY29udGV4dD8udHlwZTtcbiAgfVxuXG4gIC8vIE1ldGhvZFxuICBhYnN0cmFjdCB1bmlvbihvdGhlcjogT0RhdGFBbm5vdGF0aW9uczxhbnk+KTogT0RhdGFBbm5vdGF0aW9uczxhbnk+O1xuICBhYnN0cmFjdCBjbG9uZSgpOiBPRGF0YUFubm90YXRpb25zPGFueT47XG4gIGFic3RyYWN0IGRhdGEoZGF0YTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0pOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhUHJvcGVydHlBbm5vdGF0aW9uczxUPiBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnM8VD4ge1xuICB1bmlvbihvdGhlcjogT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zPGFueT4pOiBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oWy4uLnRoaXMuYW5ub3RhdGlvbnMsIC4uLm90aGVyLmFubm90YXRpb25zXSksXG4gICAgICBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbnRleHQsIG90aGVyLmNvbnRleHQpLFxuICAgICk7XG4gIH1cblxuICBjbG9uZSgpOiBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcCh0aGlzLmFubm90YXRpb25zKSxcbiAgICAgIHRoaXMuY29udGV4dCxcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5wcm9wZXJ0eShkYXRhKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxUPiBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnM8VD4ge1xuICB1bmlvbihvdGhlcjogT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxhbnk+KTogT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxhbnk+IHtcbiAgICByZXR1cm4gbmV3IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oWy4uLnRoaXMuYW5ub3RhdGlvbnMsIC4uLm90aGVyLmFubm90YXRpb25zXSksXG4gICAgICBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbnRleHQsIG90aGVyLmNvbnRleHQpLFxuICAgICk7XG4gIH1cblxuICBjbG9uZSgpOiBPRGF0YUVudGl0eUFubm90YXRpb25zPGFueT4ge1xuICAgIHJldHVybiBuZXcgT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxhbnk+KFxuICAgICAgdGhpcy5oZWxwZXIsXG4gICAgICBuZXcgTWFwKHRoaXMuYW5ub3RhdGlvbnMpLFxuICAgICAgdGhpcy5jb250ZXh0LFxuICAgICk7XG4gIH1cblxuICBkYXRhKGRhdGE6IHsgW25hbWU6IHN0cmluZ106IGFueSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmVudGl0eShkYXRhKTtcbiAgfVxuXG4gIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuaWQodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgZXRhZygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuZXRhZyh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZWRpYUV0YWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1lZGlhRXRhZyh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZXRhZGF0YUV0YWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1ldGFkYXRhRXRhZyh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCByZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIucmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgZWRpdExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmVkaXRMaW5rKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1lZGlhUmVhZExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1lZGlhUmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgbWVkaWFFZGl0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWVkaWFFZGl0TGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZWRpYUNvbnRlbnRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5tZWRpYUNvbnRlbnRUeXBlKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJvcGVydGllcz86IE1hcDxrZXlvZiBULCBNYXA8c3RyaW5nLCBhbnk+PjtcbiAgZ2V0IHByb3BlcnRpZXMoKSB7XG4gICAgaWYgKHRoaXMuX3Byb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcHJvcGVydGllcyA9IHRoaXMuaGVscGVyLnByb3BlcnRpZXM8VD4odGhpcy5hbm5vdGF0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0aWVzO1xuICB9XG5cbiAgcHJvcGVydHk8Rj4obmFtZToga2V5b2YgVCwgdHlwZTogJ2NvbGxlY3Rpb24nKTogT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPEY+O1xuICBwcm9wZXJ0eTxGPihuYW1lOiBrZXlvZiBULCB0eXBlOiAnc2luZ2xlJyk6IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM8Rj47XG4gIHByb3BlcnR5PEY+KFxuICAgIG5hbWU6IGtleW9mIFQsXG4gICAgdHlwZTogJ3NpbmdsZScgfCAnY29sbGVjdGlvbicsXG4gICk6IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM8Rj4gfCBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8Rj4ge1xuICAgIGNvbnN0IHByb3BzID0gdGhpcy5wcm9wZXJ0aWVzLmdldChuYW1lKTtcbiAgICByZXR1cm4gdHlwZSA9PT0gJ2NvbGxlY3Rpb24nXG4gICAgICA/IG5ldyBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8Rj4odGhpcy5oZWxwZXIsIHByb3BzKVxuICAgICAgOiBuZXcgT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxGPih0aGlzLmhlbHBlciwgcHJvcHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZnVuY3Rpb25zPzogeyBbbmFtZTogc3RyaW5nXTogYW55IH07XG4gIGdldCBmdW5jdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuX2Z1bmN0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9mdW5jdGlvbnMgPSB0aGlzLmhlbHBlci5mdW5jdGlvbnModGhpcy5hbm5vdGF0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mdW5jdGlvbnM7XG4gIH1cblxuICBmdW5jdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbbmFtZV07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhRW50aXRpZXNBbm5vdGF0aW9uczxUPiBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnM8VD4ge1xuICB1bmlvbihvdGhlcjogT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPGFueT4pOiBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oWy4uLnRoaXMuYW5ub3RhdGlvbnMsIC4uLm90aGVyLmFubm90YXRpb25zXSksXG4gICAgICBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbnRleHQsIG90aGVyLmNvbnRleHQpLFxuICAgICk7XG4gIH1cblxuICBjbG9uZSgpOiBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcCh0aGlzLmFubm90YXRpb25zKSxcbiAgICAgIHRoaXMuY29udGV4dCxcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5lbnRpdGllcyhkYXRhKTtcbiAgfVxuXG4gIGdldCByZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIucmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgY291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmNvdW50KHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG5leHRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5uZXh0TGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBkZWx0YUxpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmRlbHRhTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCB0b3AoKSB7XG4gICAgbGV0IG1hdGNoID0gKHRoaXMubmV4dExpbmsgfHwgJycpLm1hdGNoKC9bJj9dezF9XFwkdG9wPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcCgpIHtcbiAgICBsZXQgbWF0Y2ggPSAodGhpcy5uZXh0TGluayB8fCAnJykubWF0Y2goL1smP117MX1cXCRza2lwPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcHRva2VuKCkge1xuICAgIGxldCBtYXRjaCA9ICh0aGlzLm5leHRMaW5rIHx8ICcnKS5tYXRjaChcbiAgICAgIC9bJj9dezF9XFwkc2tpcHRva2VuPShbXFxkXFx3XFxzJ1xcLV0rKS8sXG4gICAgKTtcbiAgICByZXR1cm4gbWF0Y2ggIT09IG51bGwgPyBtYXRjaFsxXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgX2Z1bmN0aW9ucz86IHsgW25hbWU6IHN0cmluZ106IGFueSB9O1xuICBnZXQgZnVuY3Rpb25zKCkge1xuICAgIGlmICh0aGlzLl9mdW5jdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fZnVuY3Rpb25zID0gdGhpcy5oZWxwZXIuZnVuY3Rpb25zKHRoaXMuYW5ub3RhdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZnVuY3Rpb25zO1xuICB9XG5cbiAgZnVuY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25zW25hbWVdO1xuICB9XG5cbiAgZW50aXR5KCk6IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM8VD4ge1xuICAgIHJldHVybiBuZXcgT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxUPih0aGlzLmhlbHBlciwgdGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cbn1cbiJdfQ==