angular-odata 0.128.0 → 0.130.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 (197) hide show
  1. package/README.md +27 -244
  2. package/esm2022/lib/annotations.mjs +7 -1
  3. package/esm2022/lib/api.mjs +38 -18
  4. package/esm2022/lib/cache/cache.mjs +3 -1
  5. package/esm2022/lib/cache/storage.mjs +3 -1
  6. package/esm2022/lib/client.mjs +7 -4
  7. package/esm2022/lib/helper.mjs +9 -1
  8. package/esm2022/lib/index.mjs +2 -1
  9. package/esm2022/lib/loaders.mjs +5 -1
  10. package/esm2022/lib/metadata/csdl/csdl-annotation.mjs +192 -14
  11. package/esm2022/lib/metadata/csdl/csdl-entity-container.mjs +37 -5
  12. package/esm2022/lib/metadata/csdl/csdl-entity-set.mjs +29 -3
  13. package/esm2022/lib/metadata/csdl/csdl-enum-type.mjs +45 -8
  14. package/esm2022/lib/metadata/csdl/csdl-function-action.mjs +123 -13
  15. package/esm2022/lib/metadata/csdl/csdl-navigation-property-binding.mjs +9 -1
  16. package/esm2022/lib/metadata/csdl/csdl-reference.mjs +56 -3
  17. package/esm2022/lib/metadata/csdl/csdl-schema.mjs +57 -9
  18. package/esm2022/lib/metadata/csdl/csdl-singleton.mjs +24 -2
  19. package/esm2022/lib/metadata/csdl/csdl-structural-property.mjs +78 -3
  20. package/esm2022/lib/metadata/csdl/csdl-structured-type.mjs +78 -11
  21. package/esm2022/lib/metadata/csdl/csdl-type-definition.mjs +32 -1
  22. package/esm2022/lib/metadata/metadata.mjs +34 -7
  23. package/esm2022/lib/metadata/parser.mjs +88 -87
  24. package/esm2022/lib/models/collection.mjs +18 -16
  25. package/esm2022/lib/models/model.mjs +34 -10
  26. package/esm2022/lib/models/options.mjs +69 -21
  27. package/esm2022/lib/module.mjs +5 -5
  28. package/esm2022/lib/options.mjs +57 -2
  29. package/esm2022/lib/resources/options.mjs +11 -1
  30. package/esm2022/lib/resources/path/handlers.mjs +3 -1
  31. package/esm2022/lib/resources/path/segments.mjs +2 -1
  32. package/esm2022/lib/resources/query/builder.mjs +13 -4
  33. package/esm2022/lib/resources/query/expressions/apply.mjs +3 -1
  34. package/esm2022/lib/resources/query/expressions/base.mjs +2 -1
  35. package/esm2022/lib/resources/query/expressions/compute.mjs +3 -2
  36. package/esm2022/lib/resources/query/expressions/count.mjs +3 -1
  37. package/esm2022/lib/resources/query/expressions/expand.mjs +8 -1
  38. package/esm2022/lib/resources/query/expressions/filter.mjs +3 -1
  39. package/esm2022/lib/resources/query/expressions/orderby.mjs +3 -1
  40. package/esm2022/lib/resources/query/expressions/search.mjs +4 -1
  41. package/esm2022/lib/resources/query/expressions/select.mjs +4 -2
  42. package/esm2022/lib/resources/query/expressions/syntax.mjs +20 -1
  43. package/esm2022/lib/resources/query/handlers.mjs +4 -1
  44. package/esm2022/lib/resources/query/options.mjs +2 -1
  45. package/esm2022/lib/resources/request.mjs +15 -1
  46. package/esm2022/lib/resources/resource.mjs +13 -8
  47. package/esm2022/lib/resources/response.mjs +7 -1
  48. package/esm2022/lib/resources/types/action.mjs +6 -4
  49. package/esm2022/lib/resources/types/batch.mjs +7 -7
  50. package/esm2022/lib/resources/types/entity-set.mjs +1 -1
  51. package/esm2022/lib/resources/types/entity.mjs +1 -1
  52. package/esm2022/lib/resources/types/function.mjs +6 -3
  53. package/esm2022/lib/resources/types/navigation-property.mjs +1 -11
  54. package/esm2022/lib/resources/types/property.mjs +1 -11
  55. package/esm2022/lib/resources/types/reference.mjs +1 -1
  56. package/esm2022/lib/resources/types/singleton.mjs +1 -6
  57. package/esm2022/lib/resources/types/value.mjs +1 -1
  58. package/esm2022/lib/schema/annotation.mjs +8 -1
  59. package/esm2022/lib/schema/callable.mjs +4 -1
  60. package/esm2022/lib/schema/element.mjs +4 -1
  61. package/esm2022/lib/schema/entity-container.mjs +3 -1
  62. package/esm2022/lib/schema/entity-set.mjs +3 -1
  63. package/esm2022/lib/schema/enum-type.mjs +6 -5
  64. package/esm2022/lib/schema/parsers/callable.mjs +14 -1
  65. package/esm2022/lib/schema/parsers/edm.mjs +1 -1
  66. package/esm2022/lib/schema/parsers/enum-type.mjs +39 -21
  67. package/esm2022/lib/schema/parsers/structured-type.mjs +44 -10
  68. package/esm2022/lib/schema/schema.mjs +8 -1
  69. package/esm2022/lib/schema/singleton.mjs +3 -1
  70. package/esm2022/lib/schema/structured-type.mjs +10 -3
  71. package/esm2022/lib/services/base.mjs +4 -1
  72. package/esm2022/lib/services/entity-set.mjs +11 -5
  73. package/esm2022/lib/services/factory.mjs +8 -13
  74. package/esm2022/lib/services/singleton.mjs +3 -2
  75. package/esm2022/lib/settings.mjs +2 -1
  76. package/esm2022/lib/types.mjs +1 -1
  77. package/esm2022/lib/utils/arraybuffers.mjs +1 -1
  78. package/esm2022/lib/utils/dates.mjs +1 -1
  79. package/esm2022/lib/utils/durations.mjs +1 -1
  80. package/esm2022/lib/utils/enums.mjs +1 -1
  81. package/esm2022/lib/utils/http.mjs +1 -1
  82. package/esm2022/lib/utils/objects.mjs +1 -1
  83. package/esm2022/lib/utils/odata.mjs +1 -1
  84. package/esm2022/lib/utils/types.mjs +1 -1
  85. package/fesm2022/angular-odata.mjs +1394 -328
  86. package/fesm2022/angular-odata.mjs.map +1 -1
  87. package/lib/index.d.ts +1 -0
  88. package/lib/metadata/csdl/csdl-annotation.d.ts +59 -23
  89. package/lib/metadata/csdl/csdl-entity-container.d.ts +7 -2
  90. package/lib/metadata/csdl/csdl-entity-set.d.ts +5 -0
  91. package/lib/metadata/csdl/csdl-enum-type.d.ts +10 -2
  92. package/lib/metadata/csdl/csdl-function-action.d.ts +52 -9
  93. package/lib/metadata/csdl/csdl-navigation-property-binding.d.ts +4 -0
  94. package/lib/metadata/csdl/csdl-reference.d.ts +26 -3
  95. package/lib/metadata/csdl/csdl-schema.d.ts +4 -1
  96. package/lib/metadata/csdl/csdl-singleton.d.ts +5 -0
  97. package/lib/metadata/csdl/csdl-structural-property.d.ts +16 -0
  98. package/lib/metadata/csdl/csdl-structured-type.d.ts +27 -6
  99. package/lib/metadata/csdl/csdl-type-definition.d.ts +3 -0
  100. package/lib/metadata/metadata.d.ts +15 -2
  101. package/lib/models/collection.d.ts +2 -1
  102. package/lib/models/model.d.ts +6 -5
  103. package/lib/models/options.d.ts +9 -2
  104. package/lib/resources/path/segments.d.ts +3 -3
  105. package/lib/resources/query/builder.d.ts +3 -2
  106. package/lib/resources/query/expressions/expand.d.ts +2 -0
  107. package/lib/resources/query/expressions/syntax.d.ts +2 -2
  108. package/lib/resources/query/options.d.ts +3 -3
  109. package/lib/resources/resource.d.ts +32 -4
  110. package/lib/resources/types/action.d.ts +4 -4
  111. package/lib/resources/types/entity-set.d.ts +14 -7
  112. package/lib/resources/types/entity.d.ts +5 -1
  113. package/lib/resources/types/function.d.ts +4 -4
  114. package/lib/resources/types/navigation-property.d.ts +11 -2
  115. package/lib/resources/types/property.d.ts +13 -2
  116. package/lib/resources/types/singleton.d.ts +5 -1
  117. package/lib/schema/enum-type.d.ts +9 -9
  118. package/lib/schema/parsers/enum-type.d.ts +14 -14
  119. package/lib/schema/parsers/structured-type.d.ts +5 -2
  120. package/lib/schema/schema.d.ts +1 -1
  121. package/lib/schema/structured-type.d.ts +5 -2
  122. package/lib/services/entity-set.d.ts +9 -6
  123. package/lib/services/singleton.d.ts +1 -1
  124. package/lib/types.d.ts +20 -9
  125. package/lib/utils/enums.d.ts +12 -12
  126. package/lib/utils/http.d.ts +1 -1
  127. package/lib/utils/objects.d.ts +1 -1
  128. package/lib/utils/strings.d.ts +2 -2
  129. package/package.json +1 -1
  130. package/schematics/apigen/angular/api-config.js +7 -1
  131. package/schematics/apigen/angular/api-config.js.map +1 -1
  132. package/schematics/apigen/angular/base.d.ts +22 -2
  133. package/schematics/apigen/angular/base.js +82 -42
  134. package/schematics/apigen/angular/base.js.map +1 -1
  135. package/schematics/apigen/angular/entity.js +7 -1
  136. package/schematics/apigen/angular/entity.js.map +1 -1
  137. package/schematics/apigen/angular/enum.js +1 -0
  138. package/schematics/apigen/angular/enum.js.map +1 -1
  139. package/schematics/apigen/angular/module.js.map +1 -1
  140. package/schematics/apigen/angular/service.js +3 -2
  141. package/schematics/apigen/angular/service.js.map +1 -1
  142. package/schematics/apigen/files/api-config/__fileName__.ts +7 -5
  143. package/schematics/apigen/files/entity/__fileName__.ts +2 -2
  144. package/schematics/apigen/files/entitycontainer-service/__fileName__.ts +1 -1
  145. package/schematics/apigen/files/entityset-service/__fileName__.ts +1 -1
  146. package/schematics/apigen/files/enum/__fileName__.ts +1 -1
  147. package/schematics/apigen/files/metadata/metadata.json +1 -0
  148. package/schematics/apigen/files/singleton-service/__fileName__.ts +1 -1
  149. package/schematics/apigen/index.js +56 -12
  150. package/schematics/apigen/index.js.map +1 -1
  151. package/schematics/apigen/metadata/csdl/csdl-annotation.d.ts +56 -23
  152. package/schematics/apigen/metadata/csdl/csdl-annotation.js +143 -13
  153. package/schematics/apigen/metadata/csdl/csdl-annotation.js.map +1 -1
  154. package/schematics/apigen/metadata/csdl/csdl-entity-container.d.ts +3 -0
  155. package/schematics/apigen/metadata/csdl/csdl-entity-container.js +19 -0
  156. package/schematics/apigen/metadata/csdl/csdl-entity-container.js.map +1 -1
  157. package/schematics/apigen/metadata/csdl/csdl-entity-set.d.ts +3 -0
  158. package/schematics/apigen/metadata/csdl/csdl-entity-set.js +11 -0
  159. package/schematics/apigen/metadata/csdl/csdl-entity-set.js.map +1 -1
  160. package/schematics/apigen/metadata/csdl/csdl-enum-type.d.ts +6 -0
  161. package/schematics/apigen/metadata/csdl/csdl-enum-type.js +17 -0
  162. package/schematics/apigen/metadata/csdl/csdl-enum-type.js.map +1 -1
  163. package/schematics/apigen/metadata/csdl/csdl-function-action.d.ts +37 -0
  164. package/schematics/apigen/metadata/csdl/csdl-function-action.js +52 -0
  165. package/schematics/apigen/metadata/csdl/csdl-function-action.js.map +1 -1
  166. package/schematics/apigen/metadata/csdl/csdl-navigation-property-binding.d.ts +4 -0
  167. package/schematics/apigen/metadata/csdl/csdl-navigation-property-binding.js +6 -0
  168. package/schematics/apigen/metadata/csdl/csdl-navigation-property-binding.js.map +1 -1
  169. package/schematics/apigen/metadata/csdl/csdl-reference.d.ts +15 -3
  170. package/schematics/apigen/metadata/csdl/csdl-reference.js +26 -2
  171. package/schematics/apigen/metadata/csdl/csdl-reference.js.map +1 -1
  172. package/schematics/apigen/metadata/csdl/csdl-schema.d.ts +3 -0
  173. package/schematics/apigen/metadata/csdl/csdl-schema.js +37 -0
  174. package/schematics/apigen/metadata/csdl/csdl-schema.js.map +1 -1
  175. package/schematics/apigen/metadata/csdl/csdl-singleton.d.ts +3 -0
  176. package/schematics/apigen/metadata/csdl/csdl-singleton.js +8 -0
  177. package/schematics/apigen/metadata/csdl/csdl-singleton.js.map +1 -1
  178. package/schematics/apigen/metadata/csdl/csdl-structural-property.d.ts +16 -0
  179. package/schematics/apigen/metadata/csdl/csdl-structural-property.js +53 -0
  180. package/schematics/apigen/metadata/csdl/csdl-structural-property.js.map +1 -1
  181. package/schematics/apigen/metadata/csdl/csdl-structured-type.d.ts +22 -3
  182. package/schematics/apigen/metadata/csdl/csdl-structured-type.js +47 -2
  183. package/schematics/apigen/metadata/csdl/csdl-structured-type.js.map +1 -1
  184. package/schematics/apigen/metadata/csdl/csdl-type-definition.d.ts +3 -0
  185. package/schematics/apigen/metadata/csdl/csdl-type-definition.js +19 -0
  186. package/schematics/apigen/metadata/csdl/csdl-type-definition.js.map +1 -1
  187. package/schematics/apigen/metadata/metadata.d.ts +10 -0
  188. package/schematics/apigen/metadata/metadata.js +12 -6
  189. package/schematics/apigen/metadata/metadata.js.map +1 -1
  190. package/schematics/apigen/metadata/parser.js.map +1 -1
  191. package/schematics/apigen/schema.d.ts +2 -1
  192. package/schematics/apigen/schema.json +15 -14
  193. package/schematics/apigen/utils.d.ts +1 -0
  194. package/schematics/apigen/utils.js +25 -1
  195. package/schematics/apigen/utils.js.map +1 -1
  196. package/schematics/ng-add/index.js +1 -2
  197. package/schematics/ng-add/index.js.map +1 -1
package/README.md CHANGED
@@ -1,28 +1,30 @@
1
- # Angular OData
2
-
3
- [![build](https://github.com/diegomvh/angular-odata/workflows/Node.js%20CI/badge.svg)](https://github.com/diegomvh/angular-odata/actions?query=workflow%3A%22Node.js+CI%22)
4
- [![npm version](https://badge.fury.io/js/angular-odata.svg)](http://badge.fury.io/js/angular-odata)
5
-
6
- A fluent API for querying, creating, updating and deleting OData resources in Angular.
7
- OData service for Angular.
8
-
9
- Please check also my other related project, [OData Angular Generator](https://github.com/diegomvh/ODataApiGen)
10
-
11
- ## Demo:
12
-
13
- Full examples of the library:
14
-
15
- - [AngularODataEntity](https://github.com/diegomvh/AngularODataEntity)
16
-
17
- ## Table of contents
18
-
19
- - [Installation](#installation)
20
- - [Without Schema](#without-schema)
21
- - [With Schema](#with-schema)
22
- - [Usage](#usage)
23
- - [OData Version](#odata-version)
24
- - [Query Builder](#query-builder)
25
- - [Documentation](#documentation)
1
+ <h1 align="center">Angular OData</h1>
2
+
3
+ <p align="center">
4
+ <em>A fluent API for querying, creating, updating and deleting OData resources in Angular.</em>
5
+ <br>
6
+ </p>
7
+
8
+ <p align="center">
9
+ <a href="CONTRIBUTING.md">Contributing</a>
10
+ ·
11
+ <a href="./docs/README.md">Documentation</a>
12
+ ·
13
+ <a href="https://github.com/diegomvh/AngularODataEntity">Demo</a>
14
+ <br>
15
+ <br>
16
+ </p>
17
+
18
+ <p align="center">
19
+ <a href="https://github.com/diegomvh/angular-odata/actions?query=workflow%3A%22Node.js+CI%22">
20
+ <img src="https://github.com/diegomvh/angular-odata/workflows/Node.js%20CI/badge.svg" alt="CI status" />
21
+ </a>&nbsp;
22
+ <a href="http://badge.fury.io/js/angular-odata">
23
+ <img src="https://badge.fury.io/js/angular-odata.svg" alt="Angular OData on npm" />
24
+ </a>
25
+ </p>
26
+
27
+ <hr>
26
28
 
27
29
  ## Installation
28
30
 
@@ -32,225 +34,6 @@ Install from npm:
32
34
  npm i angular-odata
33
35
  ```
34
36
 
35
- ## Without Schema
36
-
37
- Import ODataModule into your application module definition and setup the module for the `serviceRootUrl`.
38
-
39
- ```typescript
40
- import { NgModule } from '@angular/core';
41
- import { ODataModule } from 'angular-odata';
42
-
43
- @NgModule({
44
- imports: [
45
- ...
46
- ODataModule.forRoot({
47
- config: {
48
- serviceRootUrl: 'https://services.odata.org/V4/(S(4m0tuxtnhcfctl4gzem3gr10))/TripPinServiceRW/'
49
- }
50
- })
51
- ...
52
- ]
53
- })
54
- export class AppModule {}
55
- ```
56
-
57
- ## With Schema
58
-
59
- Use [OData Angular Generator](https://github.com/diegomvh/ODataApiGen) for generate the \<Api\>Config and the \<Api\>Module definition.
60
-
61
- Import ODataModule, \<Api\>Config and \<Api\>Module into your application module.
62
- Setup ODataModule with \<Api\>Config and import it along with \<Api\>Module.
63
-
64
- ```typescript
65
- import { NgModule } from '@angular/core';
66
-
67
- import { ODataModule } from 'angular-odata';
68
- import { TripPinConfig, TripPinModule } from './trippin';
69
-
70
- @NgModule({
71
- imports: [
72
- ...
73
- ODataModule.forRoot({ config: TripPinConfig }),
74
- TripPinModule
75
- ]
76
- ...
77
- })
78
- export class AppModule {}
79
- ```
80
-
81
- ## Usage
82
-
83
- Inject and use the ODataServiceFactory
84
-
85
- ```typescript
86
- import { Component } from "@angular/core";
87
- import { ODataClient, ODATA_ETAG } from "angular-odata";
88
-
89
- @Component({
90
- selector: "app-root",
91
- templateUrl: "./app.component.html",
92
- styleUrls: ["./app.component.css"],
93
- })
94
- export class AppComponent {
95
- title = "TripPin";
96
- constructor(private factory: ODataServiceFactory) {
97
- this.queries();
98
- }
99
-
100
- queries() {
101
- // Use OData Service Factory
102
- let airportsService = this.factory.entitySet<Airport>(
103
- "Airports",
104
- "Microsoft.OData.SampleService.Models.TripPin.Airport"
105
- );
106
- let airports = airportsService.entities();
107
-
108
- // Fetch airports
109
- airports.fetch().subscribe(({ entities }) => {
110
- console.log("Airports: ", entities);
111
- });
112
-
113
- // Fetch airports with count
114
- airports
115
- .fetch({ withCount: true })
116
- .subscribe(({ entities, annots }) =>
117
- console.log("Airports: ", entities, "Annotations: ", annots)
118
- );
119
-
120
- // Fetch all airports
121
- airports
122
- .fetchAll()
123
- .subscribe((airports) => console.log("All Airports: ", airports));
124
-
125
- // Fetch airport with key and fetch again from cache
126
- airports
127
- .entity("CYYZ")
128
- .fetch()
129
- .pipe(
130
- switchMap(() =>
131
- // From Cache!
132
- airports.entity("CYYZ").fetch({ fetchPolicy: "cache-first" })
133
- )
134
- )
135
- .subscribe(({ entity, annots }) =>
136
- console.log("Airport: ", entity, "Annotations: ", annots)
137
- );
138
-
139
- // Clone airports resource and filter new resource
140
- airports
141
- .clone()
142
- .query((q) =>
143
- q.filter({ Location: { City: { CountryRegion: "United States" } } })
144
- )
145
- .fetch()
146
- .subscribe(({ entities, annots }) =>
147
- console.log(
148
- "Airports of United States: ",
149
- entities,
150
- "Annotations: ",
151
- annots
152
- )
153
- );
154
-
155
- // Change query definition of airports resource and fetch again
156
- airports.query((q) =>
157
- q.filter().push({ Location: { City: { Region: "California" } } })
158
- );
159
- airports
160
- .fetch()
161
- .subscribe(({ entities, annots }) =>
162
- console.log(
163
- "Airports in California: ",
164
- entities,
165
- "Annotations: ",
166
- annots
167
- )
168
- );
169
-
170
- // Store airports resource
171
- var json = airports.toJson();
172
- // Load airports resource
173
- airports = this.odata.fromJson(json) as ODataEntitySetResource<Airport>;
174
-
175
- // Change query definition of airports resource and fetch again
176
- airports.query((q) => q.filter().clear());
177
- airports
178
- .fetch()
179
- .subscribe(({ entities, annots }) =>
180
- console.log("Airports: ", entities, "Annotations: ", annots)
181
- );
182
-
183
- let peopleService = this.factory.entitySet<Person>(
184
- "People",
185
- "Microsoft.OData.SampleService.Models.TripPin.Person"
186
- );
187
- let people = peopleService.entities();
188
-
189
- // Clone people resource and expand and fetch
190
- people
191
- .clone()
192
- .query((q) =>
193
- q.expand({
194
- Friends: {
195
- expand: { Friends: { select: ["AddressInfo"] } },
196
- },
197
- Trips: { select: ["Name", "Tags"] },
198
- })
199
- )
200
- .fetch({ withCount: true })
201
- .subscribe(({ entities, annots }) =>
202
- console.log(
203
- "People with Friends and Trips: ",
204
- entities,
205
- "Annotations: ",
206
- annots
207
- )
208
- );
209
-
210
- // Clone people resource and filter with expressions
211
- people
212
- .clone()
213
- .query((q) =>
214
- q.filter(({ e }) =>
215
- e().eq("Emails", "john@example.com").or(e().eq("UserName", "john"))
216
- )
217
- )
218
- .fetch()
219
- .subscribe(({ entities, annots }) =>
220
- console.log(
221
- "People with Friends and Trips: ",
222
- entities,
223
- "Annotations: ",
224
- annots
225
- )
226
- );
227
-
228
- this.odata
229
- .batch("TripPin")
230
- .exec(() =>
231
- forkJoin({
232
- airports: airports.fetch(),
233
- people: people.fetch({ withCount: true }),
234
- })
235
- )
236
- .subscribe();
237
- }
238
- }
239
- ```
240
-
241
37
  ## OData Version
242
38
 
243
39
  The library works mainly with OData Version 4, however, it incorporates basic support for versions 3 and 2.
244
-
245
- ## Query Builder
246
-
247
- For a deep query customizations the library use `odata-query` and `odata-filter-builder` as a builders.
248
-
249
- - [OData v4 query builder](https://github.com/techniq/odata-query)
250
- - [OData Filter Builder](https://github.com/bodia-uz/odata-filter-builder)
251
-
252
- ## Documentation
253
-
254
- The api documentation is generated using compodoc and can be viewed here: https://diegomvh.github.io/angular-odata/docs/
255
-
256
- Library documentation can be viewed on the wiki here: https://github.com/diegomvh/angular-odata/wiki
@@ -1,4 +1,7 @@
1
1
  export class ODataAnnotations {
2
+ helper;
3
+ annotations;
4
+ context;
2
5
  constructor(helper, annotations = new Map(), context) {
3
6
  this.helper = helper;
4
7
  this.annotations = annotations;
@@ -68,6 +71,7 @@ export class ODataEntityAnnotations extends ODataAnnotations {
68
71
  get mediaContentType() {
69
72
  return this.helper.mediaContentType(this.annotations);
70
73
  }
74
+ _properties;
71
75
  get properties() {
72
76
  if (this._properties === undefined) {
73
77
  this._properties = this.helper.properties(this.annotations);
@@ -80,6 +84,7 @@ export class ODataEntityAnnotations extends ODataAnnotations {
80
84
  ? new ODataEntitiesAnnotations(this.helper, props)
81
85
  : new ODataEntityAnnotations(this.helper, props);
82
86
  }
87
+ _functions;
83
88
  get functions() {
84
89
  if (this._functions === undefined) {
85
90
  this._functions = this.helper.functions(this.annotations);
@@ -124,6 +129,7 @@ export class ODataEntitiesAnnotations extends ODataAnnotations {
124
129
  let match = (this.nextLink || '').match(/[&?]{1}\$skiptoken=([\d\w\s'\-]+)/);
125
130
  return match !== null ? match[1] : undefined;
126
131
  }
132
+ _functions;
127
133
  get functions() {
128
134
  if (this._functions === undefined) {
129
135
  this._functions = this.helper.functions(this.annotations);
@@ -137,4 +143,4 @@ export class ODataEntitiesAnnotations extends ODataAnnotations {
137
143
  return new ODataEntityAnnotations(this.helper, this.annotations);
138
144
  }
139
145
  }
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvYW5ub3RhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFnQixnQkFBZ0I7SUFDcEMsWUFDUyxNQUEwQixFQUN2QixjQUFnQyxJQUFJLEdBQUcsRUFBZSxFQUN0RCxPQUFzQjtRQUZ6QixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBMkM7UUFDdEQsWUFBTyxHQUFQLE9BQU8sQ0FBZTtJQUMvQixDQUFDO0lBRUosVUFBVSxDQUNSLElBQTZCLEVBQzdCLFFBQTJCO1FBRTNCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBZSxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLENBQUMsSUFBNkI7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBYztZQUN0QyxHQUFHLElBQUksQ0FBQyxXQUFXO1lBQ25CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztJQUNsRSxDQUFDO0NBTUY7QUFFRCxNQUFNLE9BQU8sd0JBQTRCLFNBQVEsZ0JBQW1CO0lBQ2xFLEtBQUssQ0FBQyxLQUFvQztRQUN4QyxPQUFPLElBQUksd0JBQXdCLENBQ2pDLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxHQUFH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Q0FBQztRQUMvRCxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUNyQyxtQ0FBbUMsQ0FDcEMsQ0FBQztRQUNGLE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDL0MsQ0FBQztJQUdELElBQUksU0FBUztRQUNYLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDakMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDM0Q7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxzQkFBc0IsQ0FBSSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPRGF0YUNvbnRleHQsIE9EYXRhVmVyc2lvbkhlbHBlciB9IGZyb20gJy4vaGVscGVyJztcblxuaW1wb3J0IHsgT0RhdGFNZXRhZGF0YVR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE9EYXRhQW5ub3RhdGlvbnM8VD4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgaGVscGVyOiBPRGF0YVZlcnNpb25IZWxwZXIsXG4gICAgcHJvdGVjdGVkIGFubm90YXRpb25zOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKSxcbiAgICBwcm90ZWN0ZWQgY29udGV4dD86IE9EYXRhQ29udGV4dCxcbiAgKSB7fVxuXG4gIGF0dHJpYnV0ZXMoXG4gICAgZGF0YTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0sXG4gICAgbWV0YWRhdGE6IE9EYXRhTWV0YWRhdGFUeXBlLFxuICApOiBQYXJ0aWFsPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuYXR0cmlidXRlcyhkYXRhLCBtZXRhZGF0YSkgYXMgUGFydGlhbDxUPjtcbiAgfVxuXG4gIHVwZGF0ZShkYXRhOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHRoaXMuYW5ub3RhdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgYW55PihbXG4gICAgICAuLi50aGlzLmFubm90YXRpb25zLFxuICAgICAgLi4udGhpcy5oZWxwZXIuYW5ub3RhdGlvbnMoZGF0YSksXG4gICAgXSk7XG4gIH1cblxuICBnZXQgZW50aXR5U2V0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQ/LmVudGl0eVNldDtcbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci50eXBlKHRoaXMuYW5ub3RhdGlvbnMpIHx8IHRoaXMuY29udGV4dD8udHlwZTtcbiAgfVxuXG4gIC8vIE1ldGhvZFxuICBhYnN0cmFjdCB1bmlvbihvdGhlcjogT0RhdGFBbm5vdGF0aW9uczxhbnk+KTogT0RhdGFBbm5vdGF0aW9uczxhbnk+O1xuICBhYnN0cmFjdCBjbG9uZSgpOiBPRGF0YUFubm90YXRpb25zPGFueT47XG4gIGFic3RyYWN0IGRhdGEoZGF0YTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0pOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhUHJvcGVydHlBbm5vdGF0aW9uczxUPiBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnM8VD4ge1xuICB1bmlvbihvdGhlcjogT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zPGFueT4pOiBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oWy4uLnRoaXMuYW5ub3RhdGlvbnMsIC4uLm90aGVyLmFubm90YXRpb25zXSksXG4gICAgICBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbnRleHQsIG90aGVyLmNvbnRleHQpLFxuICAgICk7XG4gIH1cblxuICBjbG9uZSgpOiBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcCh0aGlzLmFubm90YXRpb25zKSxcbiAgICAgIHRoaXMuY29udGV4dCxcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5wcm9wZXJ0eShkYXRhKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxUPiBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnM8VD4ge1xuICB1bmlvbihvdGhlcjogT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxhbnk+KTogT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxhbnk+IHtcbiAgICByZXR1cm4gbmV3IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oWy4uLnRoaXMuYW5ub3RhdGlvbnMsIC4uLm90aGVyLmFubm90YXRpb25zXSksXG4gICAgICBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbnRleHQsIG90aGVyLmNvbnRleHQpLFxuICAgICk7XG4gIH1cblxuICBjbG9uZSgpOiBPRGF0YUVudGl0eUFubm90YXRpb25zPGFueT4ge1xuICAgIHJldHVybiBuZXcgT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxhbnk+KFxuICAgICAgdGhpcy5oZWxwZXIsXG4gICAgICBuZXcgTWFwKHRoaXMuYW5ub3RhdGlvbnMpLFxuICAgICAgdGhpcy5jb250ZXh0LFxuICAgICk7XG4gIH1cblxuICBkYXRhKGRhdGE6IHsgW25hbWU6IHN0cmluZ106IGFueSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmVudGl0eShkYXRhKTtcbiAgfVxuXG4gIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuaWQodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgZXRhZygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuZXRhZyh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZWRpYUV0YWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1lZGlhRXRhZyh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZXRhZGF0YUV0YWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1ldGFkYXRhRXRhZyh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCByZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIucmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgZWRpdExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmVkaXRMaW5rKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1lZGlhUmVhZExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1lZGlhUmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgbWVkaWFFZGl0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWVkaWFFZGl0TGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZWRpYUNvbnRlbnRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5tZWRpYUNvbnRlbnRUeXBlKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJvcGVydGllcz86IE1hcDxrZXlvZiBULCBNYXA8c3RyaW5nLCBhbnk+PjtcbiAgZ2V0IHByb3BlcnRpZXMoKSB7XG4gICAgaWYgKHRoaXMuX3Byb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcHJvcGVydGllcyA9IHRoaXMuaGVscGVyLnByb3BlcnRpZXM8VD4odGhpcy5hbm5vdGF0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0aWVzO1xuICB9XG5cbiAgcHJvcGVydHk8Rj4obmFtZToga2V5b2YgVCwgdHlwZTogJ2NvbGxlY3Rpb24nKTogT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPEY+O1xuICBwcm9wZXJ0eTxGPihuYW1lOiBrZXlvZiBULCB0eXBlOiAnc2luZ2xlJyk6IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM8Rj47XG4gIHByb3BlcnR5PEY+KFxuICAgIG5hbWU6IGtleW9mIFQsXG4gICAgdHlwZTogJ3NpbmdsZScgfCAnY29sbGVjdGlvbicsXG4gICk6IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM8Rj4gfCBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8Rj4ge1xuICAgIGNvbnN0IHByb3BzID0gdGhpcy5wcm9wZXJ0aWVzLmdldChuYW1lKTtcbiAgICByZXR1cm4gdHlwZSA9PT0gJ2NvbGxlY3Rpb24nXG4gICAgICA/IG5ldyBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8Rj4odGhpcy5oZWxwZXIsIHByb3BzKVxuICAgICAgOiBuZXcgT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxGPih0aGlzLmhlbHBlciwgcHJvcHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZnVuY3Rpb25zPzogeyBbbmFtZTogc3RyaW5nXTogYW55IH07XG4gIGdldCBmdW5jdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuX2Z1bmN0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9mdW5jdGlvbnMgPSB0aGlzLmhlbHBlci5mdW5jdGlvbnModGhpcy5hbm5vdGF0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mdW5jdGlvbnM7XG4gIH1cblxuICBmdW5jdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbbmFtZV07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhRW50aXRpZXNBbm5vdGF0aW9uczxUPiBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnM8VD4ge1xuICB1bmlvbihvdGhlcjogT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPGFueT4pOiBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oWy4uLnRoaXMuYW5ub3RhdGlvbnMsIC4uLm90aGVyLmFubm90YXRpb25zXSksXG4gICAgICBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbnRleHQsIG90aGVyLmNvbnRleHQpLFxuICAgICk7XG4gIH1cblxuICBjbG9uZSgpOiBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcCh0aGlzLmFubm90YXRpb25zKSxcbiAgICAgIHRoaXMuY29udGV4dCxcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5lbnRpdGllcyhkYXRhKTtcbiAgfVxuXG4gIGdldCByZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIucmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgY291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmNvdW50KHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG5leHRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5uZXh0TGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBkZWx0YUxpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmRlbHRhTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCB0b3AoKSB7XG4gICAgbGV0IG1hdGNoID0gKHRoaXMubmV4dExpbmsgfHwgJycpLm1hdGNoKC9bJj9dezF9XFwkdG9wPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcCgpIHtcbiAgICBsZXQgbWF0Y2ggPSAodGhpcy5uZXh0TGluayB8fCAnJykubWF0Y2goL1smP117MX1cXCRza2lwPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcHRva2VuKCkge1xuICAgIGxldCBtYXRjaCA9ICh0aGlzLm5leHRMaW5rIHx8ICcnKS5tYXRjaChcbiAgICAgIC9bJj9dezF9XFwkc2tpcHRva2VuPShbXFxkXFx3XFxzJ1xcLV0rKS8sXG4gICAgKTtcbiAgICByZXR1cm4gbWF0Y2ggIT09IG51bGwgPyBtYXRjaFsxXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgX2Z1bmN0aW9ucz86IHsgW25hbWU6IHN0cmluZ106IGFueSB9O1xuICBnZXQgZnVuY3Rpb25zKCkge1xuICAgIGlmICh0aGlzLl9mdW5jdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fZnVuY3Rpb25zID0gdGhpcy5oZWxwZXIuZnVuY3Rpb25zKHRoaXMuYW5ub3RhdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZnVuY3Rpb25zO1xuICB9XG5cbiAgZnVuY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25zW25hbWVdO1xuICB9XG5cbiAgZW50aXR5KCk6IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM8VD4ge1xuICAgIHJldHVybiBuZXcgT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxUPih0aGlzLmhlbHBlciwgdGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ub3RhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvYW5ub3RhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFnQixnQkFBZ0I7SUFFM0I7SUFDRztJQUNBO0lBSFosWUFDUyxNQUEwQixFQUN2QixjQUFnQyxJQUFJLEdBQUcsRUFBZSxFQUN0RCxPQUFzQjtRQUZ6QixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUN2QixnQkFBVyxHQUFYLFdBQVcsQ0FBMkM7UUFDdEQsWUFBTyxHQUFQLE9BQU8sQ0FBZTtJQUMvQixDQUFDO0lBRUosVUFBVSxDQUNSLElBQTZCLEVBQzdCLFFBQTJCO1FBRTNCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBZSxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLENBQUMsSUFBNkI7UUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLEdBQUcsQ0FBYztZQUN0QyxHQUFHLElBQUksQ0FBQyxXQUFXO1lBQ25CLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztJQUNsRSxDQUFDO0NBTUY7QUFFRCxNQUFNLE9BQU8sd0JBQTRCLFNBQVEsZ0JBQW1CO0lBQ2xFLEtBQUssQ0FBQyxLQUFvQztRQUN4QyxPQUFPLElBQUksd0JBQXdCLENBQ2pDLElBQUksQ0FBQyxNQUFN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SyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUMvRCxPQUFPLEtBQUssS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxJQUFJLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUNyQyxtQ0FBbUMsQ0FDcEMsQ0FBQztRQUNGLE9BQU8sS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDL0MsQ0FBQztJQUVPLFVBQVUsQ0FBMkI7SUFDN0MsSUFBSSxTQUFTO1FBQ1gsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzVELENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxzQkFBc0IsQ0FBSSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN0RSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPRGF0YUNvbnRleHQsIE9EYXRhVmVyc2lvbkhlbHBlciB9IGZyb20gJy4vaGVscGVyJztcblxuaW1wb3J0IHsgT0RhdGFNZXRhZGF0YVR5cGUgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE9EYXRhQW5ub3RhdGlvbnM8VD4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgaGVscGVyOiBPRGF0YVZlcnNpb25IZWxwZXIsXG4gICAgcHJvdGVjdGVkIGFubm90YXRpb25zOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKSxcbiAgICBwcm90ZWN0ZWQgY29udGV4dD86IE9EYXRhQ29udGV4dCxcbiAgKSB7fVxuXG4gIGF0dHJpYnV0ZXMoXG4gICAgZGF0YTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0sXG4gICAgbWV0YWRhdGE6IE9EYXRhTWV0YWRhdGFUeXBlLFxuICApOiBQYXJ0aWFsPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuYXR0cmlidXRlcyhkYXRhLCBtZXRhZGF0YSkgYXMgUGFydGlhbDxUPjtcbiAgfVxuXG4gIHVwZGF0ZShkYXRhOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHRoaXMuYW5ub3RhdGlvbnMgPSBuZXcgTWFwPHN0cmluZywgYW55PihbXG4gICAgICAuLi50aGlzLmFubm90YXRpb25zLFxuICAgICAgLi4udGhpcy5oZWxwZXIuYW5ub3RhdGlvbnMoZGF0YSksXG4gICAgXSk7XG4gIH1cblxuICBnZXQgZW50aXR5U2V0KCkge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQ/LmVudGl0eVNldDtcbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci50eXBlKHRoaXMuYW5ub3RhdGlvbnMpIHx8IHRoaXMuY29udGV4dD8udHlwZTtcbiAgfVxuXG4gIC8vIE1ldGhvZFxuICBhYnN0cmFjdCB1bmlvbihvdGhlcjogT0RhdGFBbm5vdGF0aW9uczxhbnk+KTogT0RhdGFBbm5vdGF0aW9uczxhbnk+O1xuICBhYnN0cmFjdCBjbG9uZSgpOiBPRGF0YUFubm90YXRpb25zPGFueT47XG4gIGFic3RyYWN0IGRhdGEoZGF0YTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0pOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhUHJvcGVydHlBbm5vdGF0aW9uczxUPiBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnM8VD4ge1xuICB1bmlvbihvdGhlcjogT0RhdGFQcm9wZXJ0eUFubm90YXRpb25zPGFueT4pOiBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oWy4uLnRoaXMuYW5ub3RhdGlvbnMsIC4uLm90aGVyLmFubm90YXRpb25zXSksXG4gICAgICBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbnRleHQsIG90aGVyLmNvbnRleHQpLFxuICAgICk7XG4gIH1cblxuICBjbG9uZSgpOiBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YVByb3BlcnR5QW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcCh0aGlzLmFubm90YXRpb25zKSxcbiAgICAgIHRoaXMuY29udGV4dCxcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5wcm9wZXJ0eShkYXRhKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxUPiBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnM8VD4ge1xuICB1bmlvbihvdGhlcjogT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxhbnk+KTogT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxhbnk+IHtcbiAgICByZXR1cm4gbmV3IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oWy4uLnRoaXMuYW5ub3RhdGlvbnMsIC4uLm90aGVyLmFubm90YXRpb25zXSksXG4gICAgICBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbnRleHQsIG90aGVyLmNvbnRleHQpLFxuICAgICk7XG4gIH1cblxuICBjbG9uZSgpOiBPRGF0YUVudGl0eUFubm90YXRpb25zPGFueT4ge1xuICAgIHJldHVybiBuZXcgT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxhbnk+KFxuICAgICAgdGhpcy5oZWxwZXIsXG4gICAgICBuZXcgTWFwKHRoaXMuYW5ub3RhdGlvbnMpLFxuICAgICAgdGhpcy5jb250ZXh0LFxuICAgICk7XG4gIH1cblxuICBkYXRhKGRhdGE6IHsgW25hbWU6IHN0cmluZ106IGFueSB9KSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmVudGl0eShkYXRhKTtcbiAgfVxuXG4gIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuaWQodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgZXRhZygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIuZXRhZyh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZWRpYUV0YWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1lZGlhRXRhZyh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZXRhZGF0YUV0YWcoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1ldGFkYXRhRXRhZyh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCByZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIucmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgZWRpdExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmVkaXRMaW5rKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG1lZGlhUmVhZExpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLm1lZGlhUmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgbWVkaWFFZGl0TGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIubWVkaWFFZGl0TGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBtZWRpYUNvbnRlbnRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5tZWRpYUNvbnRlbnRUeXBlKHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfcHJvcGVydGllcz86IE1hcDxrZXlvZiBULCBNYXA8c3RyaW5nLCBhbnk+PjtcbiAgZ2V0IHByb3BlcnRpZXMoKSB7XG4gICAgaWYgKHRoaXMuX3Byb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fcHJvcGVydGllcyA9IHRoaXMuaGVscGVyLnByb3BlcnRpZXM8VD4odGhpcy5hbm5vdGF0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0aWVzO1xuICB9XG5cbiAgcHJvcGVydHk8Rj4obmFtZToga2V5b2YgVCwgdHlwZTogJ2NvbGxlY3Rpb24nKTogT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPEY+O1xuICBwcm9wZXJ0eTxGPihuYW1lOiBrZXlvZiBULCB0eXBlOiAnc2luZ2xlJyk6IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM8Rj47XG4gIHByb3BlcnR5PEY+KFxuICAgIG5hbWU6IGtleW9mIFQsXG4gICAgdHlwZTogJ3NpbmdsZScgfCAnY29sbGVjdGlvbicsXG4gICk6IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM8Rj4gfCBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8Rj4ge1xuICAgIGNvbnN0IHByb3BzID0gdGhpcy5wcm9wZXJ0aWVzLmdldChuYW1lKTtcbiAgICByZXR1cm4gdHlwZSA9PT0gJ2NvbGxlY3Rpb24nXG4gICAgICA/IG5ldyBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8Rj4odGhpcy5oZWxwZXIsIHByb3BzKVxuICAgICAgOiBuZXcgT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxGPih0aGlzLmhlbHBlciwgcHJvcHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZnVuY3Rpb25zPzogeyBbbmFtZTogc3RyaW5nXTogYW55IH07XG4gIGdldCBmdW5jdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuX2Z1bmN0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl9mdW5jdGlvbnMgPSB0aGlzLmhlbHBlci5mdW5jdGlvbnModGhpcy5hbm5vdGF0aW9ucyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9mdW5jdGlvbnM7XG4gIH1cblxuICBmdW5jdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNbbmFtZV07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhRW50aXRpZXNBbm5vdGF0aW9uczxUPiBleHRlbmRzIE9EYXRhQW5ub3RhdGlvbnM8VD4ge1xuICB1bmlvbihvdGhlcjogT0RhdGFFbnRpdGllc0Fubm90YXRpb25zPGFueT4pOiBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcDxzdHJpbmcsIGFueT4oWy4uLnRoaXMuYW5ub3RhdGlvbnMsIC4uLm90aGVyLmFubm90YXRpb25zXSksXG4gICAgICBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmNvbnRleHQsIG90aGVyLmNvbnRleHQpLFxuICAgICk7XG4gIH1cblxuICBjbG9uZSgpOiBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBPRGF0YUVudGl0aWVzQW5ub3RhdGlvbnM8YW55PihcbiAgICAgIHRoaXMuaGVscGVyLFxuICAgICAgbmV3IE1hcCh0aGlzLmFubm90YXRpb25zKSxcbiAgICAgIHRoaXMuY29udGV4dCxcbiAgICApO1xuICB9XG5cbiAgZGF0YShkYXRhOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5lbnRpdGllcyhkYXRhKTtcbiAgfVxuXG4gIGdldCByZWFkTGluaygpIHtcbiAgICByZXR1cm4gdGhpcy5oZWxwZXIucmVhZExpbmsodGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cblxuICBnZXQgY291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmNvdW50KHRoaXMuYW5ub3RhdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG5leHRMaW5rKCkge1xuICAgIHJldHVybiB0aGlzLmhlbHBlci5uZXh0TGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCBkZWx0YUxpbmsoKSB7XG4gICAgcmV0dXJuIHRoaXMuaGVscGVyLmRlbHRhTGluayh0aGlzLmFubm90YXRpb25zKTtcbiAgfVxuXG4gIGdldCB0b3AoKSB7XG4gICAgbGV0IG1hdGNoID0gKHRoaXMubmV4dExpbmsgfHwgJycpLm1hdGNoKC9bJj9dezF9XFwkdG9wPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcCgpIHtcbiAgICBsZXQgbWF0Y2ggPSAodGhpcy5uZXh0TGluayB8fCAnJykubWF0Y2goL1smP117MX1cXCRza2lwPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaCAhPT0gbnVsbCA/IE51bWJlcihtYXRjaFsxXSkgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgc2tpcHRva2VuKCkge1xuICAgIGxldCBtYXRjaCA9ICh0aGlzLm5leHRMaW5rIHx8ICcnKS5tYXRjaChcbiAgICAgIC9bJj9dezF9XFwkc2tpcHRva2VuPShbXFxkXFx3XFxzJ1xcLV0rKS8sXG4gICAgKTtcbiAgICByZXR1cm4gbWF0Y2ggIT09IG51bGwgPyBtYXRjaFsxXSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgX2Z1bmN0aW9ucz86IHsgW25hbWU6IHN0cmluZ106IGFueSB9O1xuICBnZXQgZnVuY3Rpb25zKCkge1xuICAgIGlmICh0aGlzLl9mdW5jdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5fZnVuY3Rpb25zID0gdGhpcy5oZWxwZXIuZnVuY3Rpb25zKHRoaXMuYW5ub3RhdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fZnVuY3Rpb25zO1xuICB9XG5cbiAgZnVuY3Rpb24obmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZnVuY3Rpb25zW25hbWVdO1xuICB9XG5cbiAgZW50aXR5KCk6IE9EYXRhRW50aXR5QW5ub3RhdGlvbnM8VD4ge1xuICAgIHJldHVybiBuZXcgT0RhdGFFbnRpdHlBbm5vdGF0aW9uczxUPih0aGlzLmhlbHBlciwgdGhpcy5hbm5vdGF0aW9ucyk7XG4gIH1cbn1cbiJdfQ==