angular-odata 0.90.0 → 0.99.2

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 (223) hide show
  1. package/README.md +31 -25
  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} +3 -3
  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} +1 -1
  7. package/{esm2015/lib/cache/storage.js → esm2020/lib/cache/storage.mjs} +2 -2
  8. package/esm2020/lib/client.mjs +271 -0
  9. package/{esm2015/lib/constants.js → esm2020/lib/constants.mjs} +8 -3
  10. package/esm2020/lib/helper.mjs +268 -0
  11. package/esm2020/lib/index.mjs +19 -0
  12. package/esm2020/lib/models/collection.mjs +757 -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 +956 -0
  16. package/{esm2015/lib/module.js → esm2020/lib/module.mjs} +7 -7
  17. package/esm2020/lib/options.mjs +32 -0
  18. package/{esm2015/lib/resources/index.js → esm2020/lib/resources/index.mjs} +0 -0
  19. package/{esm2015/lib/resources/path/handlers.js → esm2020/lib/resources/path/handlers.mjs} +1 -1
  20. package/{esm2015/lib/resources/path/index.js → esm2020/lib/resources/path/index.mjs} +0 -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/base.mjs +20 -0
  24. package/esm2020/lib/resources/query/expressions/compute.mjs +38 -0
  25. package/esm2020/lib/resources/query/expressions/expand.mjs +57 -0
  26. package/esm2020/lib/resources/query/expressions/filter.mjs +154 -0
  27. package/esm2020/lib/resources/query/expressions/index.mjs +7 -0
  28. package/esm2020/lib/resources/query/expressions/orderby.mjs +54 -0
  29. package/esm2020/lib/resources/query/expressions/search.mjs +113 -0
  30. package/esm2020/lib/resources/query/expressions/select.mjs +32 -0
  31. package/esm2020/lib/resources/query/expressions/syntax.mjs +371 -0
  32. package/esm2020/lib/resources/query/handlers.mjs +188 -0
  33. package/{esm2015/lib/resources/query/index.js → esm2020/lib/resources/query/index.mjs} +0 -0
  34. package/esm2020/lib/resources/query/options.mjs +103 -0
  35. package/esm2020/lib/resources/request.mjs +167 -0
  36. package/esm2020/lib/resources/resource.mjs +318 -0
  37. package/esm2020/lib/resources/responses/annotations.mjs +119 -0
  38. package/{esm2015/lib/resources/responses/csdl/csdl-annotation.js → esm2020/lib/resources/responses/csdl/csdl-annotation.mjs} +0 -0
  39. package/{esm2015/lib/resources/responses/csdl/csdl-entity-container.js → esm2020/lib/resources/responses/csdl/csdl-entity-container.mjs} +0 -0
  40. package/{esm2015/lib/resources/responses/csdl/csdl-entity-set.js → esm2020/lib/resources/responses/csdl/csdl-entity-set.mjs} +0 -0
  41. package/{esm2015/lib/resources/responses/csdl/csdl-enum-type.js → esm2020/lib/resources/responses/csdl/csdl-enum-type.mjs} +0 -0
  42. package/{esm2015/lib/resources/responses/csdl/csdl-function-action.js → esm2020/lib/resources/responses/csdl/csdl-function-action.mjs} +0 -0
  43. package/{esm2015/lib/resources/responses/csdl/csdl-navigation-property-binding.js → esm2020/lib/resources/responses/csdl/csdl-navigation-property-binding.mjs} +0 -0
  44. package/{esm2015/lib/resources/responses/csdl/csdl-reference.js → esm2020/lib/resources/responses/csdl/csdl-reference.mjs} +0 -0
  45. package/{esm2015/lib/resources/responses/csdl/csdl-schema.js → esm2020/lib/resources/responses/csdl/csdl-schema.mjs} +0 -0
  46. package/{esm2015/lib/resources/responses/csdl/csdl-singleton.js → esm2020/lib/resources/responses/csdl/csdl-singleton.mjs} +0 -0
  47. package/{esm2015/lib/resources/responses/csdl/csdl-structural-property.js → esm2020/lib/resources/responses/csdl/csdl-structural-property.mjs} +0 -0
  48. package/{esm2015/lib/resources/responses/csdl/csdl-structured-type.js → esm2020/lib/resources/responses/csdl/csdl-structured-type.mjs} +0 -0
  49. package/{esm2015/lib/resources/responses/csdl/csdl-type-definition.js → esm2020/lib/resources/responses/csdl/csdl-type-definition.mjs} +0 -0
  50. package/{esm2015/lib/resources/responses/index.js → esm2020/lib/resources/responses/index.mjs} +0 -0
  51. package/esm2020/lib/resources/responses/metadata.mjs +547 -0
  52. package/{esm2015/lib/resources/responses/options.js → esm2020/lib/resources/responses/options.mjs} +0 -0
  53. package/{esm2015/lib/resources/responses/response.js → esm2020/lib/resources/responses/response.mjs} +0 -0
  54. package/{esm2015/lib/resources/responses/types.js → esm2020/lib/resources/responses/types.mjs} +0 -0
  55. package/esm2020/lib/resources/types/action.mjs +104 -0
  56. package/esm2020/lib/resources/types/batch.mjs +314 -0
  57. package/esm2020/lib/resources/types/count.mjs +30 -0
  58. package/esm2020/lib/resources/types/entity-set.mjs +97 -0
  59. package/esm2020/lib/resources/types/entity.mjs +109 -0
  60. package/esm2020/lib/resources/types/function.mjs +140 -0
  61. package/{esm2015/lib/resources/types/index.js → esm2020/lib/resources/types/index.mjs} +0 -0
  62. package/esm2020/lib/resources/types/media.mjs +44 -0
  63. package/esm2020/lib/resources/types/metadata.mjs +33 -0
  64. package/esm2020/lib/resources/types/navigation-property.mjs +229 -0
  65. package/esm2020/lib/resources/types/options.mjs +2 -0
  66. package/esm2020/lib/resources/types/property.mjs +186 -0
  67. package/esm2020/lib/resources/types/reference.mjs +88 -0
  68. package/esm2020/lib/resources/types/singleton.mjs +129 -0
  69. package/esm2020/lib/resources/types/value.mjs +44 -0
  70. package/esm2020/lib/schema/annotation.mjs +37 -0
  71. package/esm2020/lib/schema/callable.mjs +62 -0
  72. package/esm2020/lib/schema/element.mjs +61 -0
  73. package/esm2020/lib/schema/entity-container.mjs +9 -0
  74. package/esm2020/lib/schema/entity-set.mjs +9 -0
  75. package/esm2020/lib/schema/enum-type.mjs +71 -0
  76. package/{esm2015/lib/schema/index.js → esm2020/lib/schema/index.mjs} +2 -1
  77. package/esm2020/lib/schema/parsers/callable.mjs +113 -0
  78. package/esm2020/lib/schema/parsers/edm.mjs +95 -0
  79. package/esm2020/lib/schema/parsers/enum-type.mjs +107 -0
  80. package/esm2020/lib/schema/parsers/index.mjs +5 -0
  81. package/esm2020/lib/schema/parsers/structured-type.mjs +412 -0
  82. package/esm2020/lib/schema/schema.mjs +61 -0
  83. package/esm2020/lib/schema/structured-type.mjs +207 -0
  84. package/esm2020/lib/services/base.mjs +29 -0
  85. package/esm2020/lib/services/entity-set.mjs +143 -0
  86. package/esm2020/lib/services/entity.mjs +12 -0
  87. package/{esm2015/lib/services/factory.js → esm2020/lib/services/factory.mjs} +3 -3
  88. package/{esm2015/lib/services/index.js → esm2020/lib/services/index.mjs} +0 -0
  89. package/{esm2015/lib/services/singleton.js → esm2020/lib/services/singleton.mjs} +1 -1
  90. package/{esm2015/lib/settings.js → esm2020/lib/settings.mjs} +1 -1
  91. package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
  92. package/esm2020/lib/types.mjs +37 -0
  93. package/{esm2015/lib/utils/arraybuffers.js → esm2020/lib/utils/arraybuffers.mjs} +0 -0
  94. package/{esm2015/lib/utils/dates.js → esm2020/lib/utils/dates.mjs} +0 -0
  95. package/{esm2015/lib/utils/durations.js → esm2020/lib/utils/durations.mjs} +0 -0
  96. package/{esm2015/lib/utils/enums.js → esm2020/lib/utils/enums.mjs} +0 -0
  97. package/{esm2015/lib/utils/http.js → esm2020/lib/utils/http.mjs} +0 -0
  98. package/{esm2015/lib/utils/index.js → esm2020/lib/utils/index.mjs} +0 -0
  99. package/{esm2015/lib/utils/objects.js → esm2020/lib/utils/objects.mjs} +13 -13
  100. package/esm2020/lib/utils/odata.mjs +22 -0
  101. package/esm2020/lib/utils/strings.mjs +20 -0
  102. package/{esm2015/lib/utils/types.js → esm2020/lib/utils/types.mjs} +0 -0
  103. package/{esm2015/lib/utils/urls.js → esm2020/lib/utils/urls.mjs} +0 -0
  104. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  105. package/fesm2015/{angular-odata.js → angular-odata.mjs} +3427 -2872
  106. package/fesm2015/angular-odata.mjs.map +1 -0
  107. package/fesm2020/angular-odata.mjs +10589 -0
  108. package/fesm2020/angular-odata.mjs.map +1 -0
  109. package/lib/api.d.ts +14 -14
  110. package/lib/cache/cache.d.ts +2 -2
  111. package/lib/cache/storage.d.ts +1 -1
  112. package/lib/client.d.ts +3 -3
  113. package/lib/constants.d.ts +5 -2
  114. package/lib/index.d.ts +0 -1
  115. package/lib/models/collection.d.ts +21 -21
  116. package/lib/models/model.d.ts +34 -22
  117. package/lib/models/options.d.ts +26 -29
  118. package/lib/module.d.ts +1 -1
  119. package/lib/options.d.ts +1 -0
  120. package/lib/resources/path/segments.d.ts +2 -2
  121. package/lib/resources/query/builder.d.ts +7 -3
  122. package/lib/resources/query/expressions/base.d.ts +19 -0
  123. package/lib/resources/query/expressions/compute.d.ts +26 -0
  124. package/lib/resources/query/expressions/expand.d.ts +40 -0
  125. package/lib/resources/query/expressions/filter.d.ts +58 -0
  126. package/lib/resources/query/expressions/index.d.ts +6 -0
  127. package/lib/resources/query/expressions/orderby.d.ts +37 -0
  128. package/lib/resources/query/expressions/search.d.ts +47 -0
  129. package/lib/resources/query/expressions/select.d.ts +21 -0
  130. package/lib/resources/query/{syntax.d.ts → expressions/syntax.d.ts} +74 -55
  131. package/lib/resources/query/handlers.d.ts +30 -19
  132. package/lib/resources/query/options.d.ts +3 -3
  133. package/lib/resources/request.d.ts +1 -1
  134. package/lib/resources/resource.d.ts +30 -12
  135. package/lib/resources/types/action.d.ts +12 -18
  136. package/lib/resources/types/batch.d.ts +10 -2
  137. package/lib/resources/types/count.d.ts +6 -4
  138. package/lib/resources/types/entity-set.d.ts +11 -14
  139. package/lib/resources/types/entity.d.ts +13 -15
  140. package/lib/resources/types/function.d.ts +11 -17
  141. package/lib/resources/types/media.d.ts +8 -6
  142. package/lib/resources/types/metadata.d.ts +3 -4
  143. package/lib/resources/types/navigation-property.d.ts +17 -22
  144. package/lib/resources/types/property.d.ts +13 -18
  145. package/lib/resources/types/reference.d.ts +41 -7
  146. package/lib/resources/types/singleton.d.ts +12 -15
  147. package/lib/resources/types/value.d.ts +9 -4
  148. package/lib/schema/annotation.d.ts +18 -0
  149. package/lib/schema/callable.d.ts +4 -20
  150. package/lib/schema/element.d.ts +45 -0
  151. package/lib/schema/entity-container.d.ts +2 -12
  152. package/lib/schema/entity-set.d.ts +2 -18
  153. package/lib/schema/enum-type.d.ts +3 -34
  154. package/lib/schema/index.d.ts +1 -0
  155. package/lib/{parsers → schema/parsers}/callable.d.ts +1 -1
  156. package/lib/{parsers → schema/parsers}/edm.d.ts +1 -1
  157. package/lib/{parsers → schema/parsers}/enum-type.d.ts +12 -11
  158. package/lib/{parsers → schema/parsers}/index.d.ts +0 -0
  159. package/lib/{parsers → schema/parsers}/structured-type.d.ts +12 -12
  160. package/lib/schema/schema.d.ts +3 -10
  161. package/lib/schema/structured-type.d.ts +12 -24
  162. package/lib/services/base.d.ts +2 -2
  163. package/lib/services/entity-set.d.ts +2 -2
  164. package/lib/services/entity.d.ts +1 -1
  165. package/lib/services/singleton.d.ts +2 -2
  166. package/lib/settings.d.ts +5 -5
  167. package/lib/types.d.ts +1 -0
  168. package/lib/utils/strings.d.ts +1 -0
  169. package/package.json +21 -8
  170. package/bundles/angular-odata.umd.js +0 -11694
  171. package/bundles/angular-odata.umd.js.map +0 -1
  172. package/esm2015/lib/api.js +0 -297
  173. package/esm2015/lib/client.js +0 -272
  174. package/esm2015/lib/helper.js +0 -271
  175. package/esm2015/lib/index.js +0 -21
  176. package/esm2015/lib/models/collection.js +0 -717
  177. package/esm2015/lib/models/model.js +0 -419
  178. package/esm2015/lib/models/options.js +0 -924
  179. package/esm2015/lib/options.js +0 -31
  180. package/esm2015/lib/parsers/callable.js +0 -107
  181. package/esm2015/lib/parsers/edm.js +0 -95
  182. package/esm2015/lib/parsers/enum-type.js +0 -102
  183. package/esm2015/lib/parsers/index.js +0 -5
  184. package/esm2015/lib/parsers/structured-type.js +0 -388
  185. package/esm2015/lib/resources/path/segments.js +0 -121
  186. package/esm2015/lib/resources/query/builder.js +0 -544
  187. package/esm2015/lib/resources/query/expressions.js +0 -194
  188. package/esm2015/lib/resources/query/handlers.js +0 -192
  189. package/esm2015/lib/resources/query/options.js +0 -103
  190. package/esm2015/lib/resources/query/syntax.js +0 -349
  191. package/esm2015/lib/resources/request.js +0 -168
  192. package/esm2015/lib/resources/resource.js +0 -243
  193. package/esm2015/lib/resources/responses/annotations.js +0 -121
  194. package/esm2015/lib/resources/responses/metadata.js +0 -548
  195. package/esm2015/lib/resources/types/action.js +0 -105
  196. package/esm2015/lib/resources/types/batch.js +0 -294
  197. package/esm2015/lib/resources/types/count.js +0 -33
  198. package/esm2015/lib/resources/types/entity-set.js +0 -101
  199. package/esm2015/lib/resources/types/entity.js +0 -137
  200. package/esm2015/lib/resources/types/function.js +0 -130
  201. package/esm2015/lib/resources/types/media.js +0 -47
  202. package/esm2015/lib/resources/types/metadata.js +0 -36
  203. package/esm2015/lib/resources/types/navigation-property.js +0 -205
  204. package/esm2015/lib/resources/types/options.js +0 -2
  205. package/esm2015/lib/resources/types/property.js +0 -151
  206. package/esm2015/lib/resources/types/reference.js +0 -73
  207. package/esm2015/lib/resources/types/singleton.js +0 -167
  208. package/esm2015/lib/resources/types/value.js +0 -35
  209. package/esm2015/lib/schema/annotation.js +0 -7
  210. package/esm2015/lib/schema/callable.js +0 -82
  211. package/esm2015/lib/schema/entity-container.js +0 -22
  212. package/esm2015/lib/schema/entity-set.js +0 -33
  213. package/esm2015/lib/schema/enum-type.js +0 -126
  214. package/esm2015/lib/schema/schema.js +0 -60
  215. package/esm2015/lib/schema/structured-type.js +0 -217
  216. package/esm2015/lib/services/base.js +0 -23
  217. package/esm2015/lib/services/entity-set.js +0 -146
  218. package/esm2015/lib/services/entity.js +0 -12
  219. package/esm2015/lib/types.js +0 -37
  220. package/esm2015/lib/utils/odata.js +0 -21
  221. package/esm2015/lib/utils/strings.js +0 -13
  222. package/fesm2015/angular-odata.js.map +0 -1
  223. package/lib/resources/query/expressions.d.ts +0 -50
@@ -0,0 +1,207 @@
1
+ import { ODataSchemaElement } from './element';
2
+ import { ODataStructuredTypeParser, } from './parsers';
3
+ export class ODataStructuredType extends ODataSchemaElement {
4
+ constructor(config, schema) {
5
+ super(config, schema);
6
+ this.children = [];
7
+ this.base = config.base;
8
+ this.open = config.open || false;
9
+ this.parser = new ODataStructuredTypeParser(config, schema.namespace, schema.alias);
10
+ this.model = config.model;
11
+ this.collection = config.collection;
12
+ if (this.model !== undefined) {
13
+ const options = this.model.hasOwnProperty('options')
14
+ ? this.model.options
15
+ : { fields: {} };
16
+ this.model.buildMeta({ options, schema: this });
17
+ }
18
+ if (this.collection !== undefined) {
19
+ this.collection.model = this.model;
20
+ }
21
+ }
22
+ configure({ parserForType, findOptionsForType, }) {
23
+ if (this.base) {
24
+ const parent = this.api.findStructuredTypeForType(this.base);
25
+ parent.children.push(this);
26
+ this.parent = parent;
27
+ }
28
+ this.parser.configure({ parserForType, options: this.api.options });
29
+ if (this.model !== undefined && this.model.options !== null) {
30
+ this.model.meta.configure({
31
+ findOptionsForType,
32
+ options: this.api.options,
33
+ });
34
+ }
35
+ }
36
+ /**
37
+ * Returns a boolean indicating if the structured type is a subtype of the given type.
38
+ * @param type String representation of the type
39
+ * @returns True if the callable is type of the given type
40
+ */
41
+ isSubtypeOf(schema) {
42
+ return (super.isSubtypeOf(schema) ||
43
+ (this.parent !== undefined && this.parent.isSubtypeOf(schema)));
44
+ }
45
+ /**
46
+ * Returns a boolean indicating if the structured type is a supertype of the given type.
47
+ * @param type String representation of the type
48
+ * @returns True if the callable is type of the given type
49
+ */
50
+ isSupertypeOf(schema) {
51
+ return (super.isSupertypeOf(schema) ||
52
+ this.children.some((c) => c.isSupertypeOf(schema)));
53
+ }
54
+ /**
55
+ * Returns a boolean indicating if the structured type has a simple key.
56
+ * @returns True if the structured type has a simple key
57
+ */
58
+ isSimpleKey() {
59
+ return this.keys().length === 1;
60
+ }
61
+ /**
62
+ * Returns a boolean indicating if the structured type has a compound key.
63
+ * @returns True if the structured type has a compound key.
64
+ */
65
+ isCompoundKey() {
66
+ return this.keys().length > 1;
67
+ }
68
+ /**
69
+ * Find the field parser for the given field name.
70
+ * @param name Name of the field
71
+ * @returns The field parser
72
+ */
73
+ findFieldByName(name) {
74
+ return this.fields({
75
+ include_parents: true,
76
+ include_navigation: true,
77
+ }).find((f) => f.name === name);
78
+ }
79
+ /**
80
+ * Find a parent schema of the structured type.
81
+ * @param predicate Function for evaluate the schemas in the hierarchy.
82
+ * @returns The schema that matches the predicate.
83
+ */
84
+ findParentSchema(predicate) {
85
+ if (predicate(this))
86
+ return this;
87
+ if (this.parent === undefined)
88
+ return undefined;
89
+ return this.parent.findParentSchema(predicate);
90
+ }
91
+ /**
92
+ * Find a parent schema of the structured type for the given field.
93
+ * @param field Field that belongs to the structured type
94
+ * @returns The schema of the field
95
+ */
96
+ findSchemaForField(field) {
97
+ return this.findParentSchema((p) => p
98
+ .fields({ include_parents: false, include_navigation: true })
99
+ .find((f) => f === field) !== undefined);
100
+ }
101
+ /**
102
+ * Returns all fields of the structured type.
103
+ * @param include_navigation Include navigation properties in the result.
104
+ * @param include_parents Include the parent types in the result.
105
+ * @returns All fields of the structured type.
106
+ */
107
+ fields({ include_navigation, include_parents, }) {
108
+ return [
109
+ ...(include_parents && this.parent !== undefined
110
+ ? this.parent.fields({ include_parents, include_navigation })
111
+ : []),
112
+ ...this.parser.fields.filter((field) => include_navigation || !field.navigation),
113
+ ];
114
+ }
115
+ /**
116
+ * Returns the keys of the structured type.
117
+ * @param include_parents Include the parent fields
118
+ * @returns The keys of the structured type
119
+ */
120
+ keys({ include_parents = true, } = {}) {
121
+ return [
122
+ ...(include_parents && this.parent !== undefined
123
+ ? this.parent.keys({ include_parents })
124
+ : []),
125
+ ...(this.parser.keys || []),
126
+ ];
127
+ }
128
+ /**
129
+ * Picks the fields from attributes.
130
+ * @param attrs
131
+ * @param include_parents Include the parent fields
132
+ * @param include_navigation Include the navigation fields
133
+ * @param include_etag Include the etag field
134
+ * @returns The picked fields
135
+ */
136
+ pick(attrs, { include_parents = true, include_navigation = false, include_etag = true, } = {}) {
137
+ const names = this.fields({ include_parents, include_navigation }).map((f) => f.name);
138
+ let values = Object.keys(attrs)
139
+ .filter((k) => names.indexOf(k) !== -1)
140
+ .reduce((acc, k) => Object.assign(acc, { [k]: attrs[k] }), {});
141
+ if (include_etag) {
142
+ const etag = this.api.options.helper.etag(attrs);
143
+ this.api.options.helper.etag(attrs, etag);
144
+ }
145
+ return values;
146
+ }
147
+ /**
148
+ * Deseialize the given value from the structured type.
149
+ * @param value Value to deserialize
150
+ * @param options Options for deserialization
151
+ * @returns Deserialized value
152
+ */
153
+ deserialize(value, options) {
154
+ return this.parser.deserialize(value, options);
155
+ }
156
+ /**
157
+ * Serialize the given value for the structured type.
158
+ * @param value Value to serialize
159
+ * @param options Options for serialization
160
+ * @returns Serialized value
161
+ */
162
+ serialize(value, options) {
163
+ return this.parser.serialize(value, options);
164
+ }
165
+ /**
166
+ * Encode the given value for the structured type.
167
+ * @param value Value to encode
168
+ * @param options Options for encoding
169
+ * @returns Encoded value
170
+ */
171
+ encode(value, options) {
172
+ return this.parser.encode(value, options);
173
+ }
174
+ /**
175
+ * Resolve the key of the structured type for the given value.
176
+ * @param attrs Attributes of the value
177
+ * @returns Resolved key
178
+ */
179
+ resolveKey(attrs) {
180
+ return this.parser.resolveKey(attrs);
181
+ }
182
+ /**
183
+ * Returns the defaults values for the structured type.
184
+ * @returns Default values for the structured type
185
+ */
186
+ defaults() {
187
+ return this.parser.defaults();
188
+ }
189
+ /**
190
+ * Convert the structured type to json schema
191
+ * @param options Options for json schema
192
+ * @returns Json Schema
193
+ */
194
+ toJsonSchema(options = {}) {
195
+ return this.parser.toJsonSchema(options);
196
+ }
197
+ /**
198
+ * Validate the given value against the structured type.
199
+ * @param attrs Attributes of the value
200
+ * @param method Method to use for the process validation
201
+ * @returns Object with the errors
202
+ */
203
+ validate(attrs, { method, navigation = false, } = {}) {
204
+ return this.parser.validate(attrs, { method, navigation });
205
+ }
206
+ }
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RydWN0dXJlZC10eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3NjaGVtYS9zdHJ1Y3R1cmVkLXR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQy9DLE9BQU8sRUFJTCx5QkFBeUIsR0FDMUIsTUFBTSxXQUFXLENBQUM7QUFHbkIsTUFBTSxPQUFPLG1CQUF1QixTQUFRLGtCQUFrQjtJQVM1RCxZQUFZLE1BQStCLEVBQUUsTUFBbUI7UUFDOUQsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztRQU54QixhQUFRLEdBQStCLEVBQUUsQ0FBQztRQU94QyxJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQztRQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUkseUJBQXlCLENBQ3pDLE1BQU0sRUFDTixNQUFNLENBQUMsU0FBUyxFQUNoQixNQUFNLENBQUMsS0FBSyxDQUNiLENBQUM7UUFDRixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUEwQixDQUFDO1FBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQW9DLENBQUM7UUFDOUQsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUM1QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUM7Z0JBQ2xELENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87Z0JBQ3BCLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMs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QUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLEtBQVEsRUFBRSxPQUFpQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxLQUFrQztRQUMzQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsWUFBWSxDQUFDLFVBQWdDLEVBQUU7UUFDN0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFRLENBQ04sS0FBaUIsRUFDakIsRUFDRSxNQUFNLEVBQ04sVUFBVSxHQUFHLEtBQUssTUFJaEIsRUFBRTtRQUVOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDN0QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT0RhdGFDb2xsZWN0aW9uIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB7IE9EYXRhTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbW9kZWwnO1xuaW1wb3J0IHsgT3B0aW9ucywgU3RydWN0dXJlZFR5cGVDb25maWcgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBPRGF0YVNjaGVtYUVsZW1lbnQgfSBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IHtcbiAgSnNvblNjaGVtYU9wdGlvbnMsXG4gIE9EYXRhRW50aXR5VHlwZUtleSxcbiAgT0RhdGFTdHJ1Y3R1cmVkVHlwZUZpZWxkUGFyc2VyLFxuICBPRGF0YVN0cnVjdHVyZWRUeXBlUGFyc2VyLFxufSBmcm9tICcuL3BhcnNlcnMnO1xuaW1wb3J0IHsgT0RhdGFTY2hlbWEgfSBmcm9tICcuL3NjaGVtYSc7XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVN0cnVjdHVyZWRUeXBlPFQ+IGV4dGVuZHMgT0RhdGFTY2hlbWFFbGVtZW50IHtcbiAgYmFzZT86IHN0cmluZztcbiAgb3BlbjogYm9vbGVhbjtcbiAgcGFyZW50PzogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxhbnk+O1xuICBjaGlsZHJlbjogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxhbnk+W10gPSBbXTtcbiAgbW9kZWw/OiB0eXBlb2YgT0RhdGFNb2RlbDtcbiAgY29sbGVjdGlvbj86IHR5cGVvZiBPRGF0YUNvbGxlY3Rpb247XG4gIHBhcnNlcjogT0RhdGFTdHJ1Y3R1cmVkVHlwZVBhcnNlcjxUPjtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IFN0cnVjdHVyZWRUeXBlQ29uZmlnPFQ+LCBzY2hlbWE6IE9EYXRhU2NoZW1hKSB7XG4gICAgc3VwZXIoY29uZmlnLCBzY2hlbWEpO1xuICAgIHRoaXMuYmFzZSA9IGNvbmZpZy5iYXNlO1xuICAgIHRoaXMub3BlbiA9IGNvbmZpZy5vcGVuIHx8IGZhbHNlO1xuICAgIHRoaXMucGFyc2VyID0gbmV3IE9EYXRhU3RydWN0dXJlZFR5cGVQYXJzZXIoXG4gICAgICBjb25maWcsXG4gICAgICBzY2hlbWEubmFtZXNwYWNlLFxuICAgICAgc2NoZW1hLmFsaWFzXG4gICAgKTtcbiAgICB0aGlzLm1vZGVsID0gY29uZmlnLm1vZGVsIGFzIHR5cGVvZiBPRGF0YU1vZGVsO1xuICAgIHRoaXMuY29sbGVjdGlvbiA9IGNvbmZpZy5jb2xsZWN0aW9uIGFzIHR5cGVvZiBPRGF0YUNvbGxlY3Rpb247XG4gICAgaWYgKHRoaXMubW9kZWwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMubW9kZWwuaGFzT3duUHJvcGVydHkoJ29wdGlvbnMnKVxuICAgICAgICA/IHRoaXMubW9kZWwub3B0aW9uc1xuICAgICAgICA6IHsgZmllbGRzOiB7fSB9O1xuICAgICAgdGhpcy5tb2RlbC5idWlsZE1ldGE8VD4oeyBvcHRpb25zLCBzY2hlbWE6IHRoaXMgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbGxlY3Rpb24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5jb2xsZWN0aW9uLm1vZGVsID0gdGhpcy5tb2RlbDtcbiAgICB9XG4gIH1cblxuICBjb25maWd1cmUoe1xuICAgIHBhcnNlckZvclR5cGUsXG4gICAgZmluZE9wdGlvbnNGb3JUeXBlLFxuICB9OiB7XG4gICAgcGFyc2VyRm9yVHlwZTogKHR5cGU6IHN0cmluZykgPT4gYW55O1xuICAgIGZpbmRPcHRpb25zRm9yVHlwZTogKHR5cGU6IHN0cmluZykgPT4gYW55O1xuICB9KSB7XG4gICAgaWYgKHRoaXMuYmFzZSkge1xuICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5hcGkuZmluZFN0cnVjdHVyZWRUeXBlRm9yVHlwZShcbiAgICAgICAgdGhpcy5iYXNlXG4gICAgICApIGFzIE9EYXRhU3RydWN0dXJlZFR5cGU8YW55PjtcbiAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKHRoaXMpO1xuICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgfVxuICAgIHRoaXMucGFyc2VyLmNvbmZpZ3VyZSh7IHBhcnNlckZvclR5cGUsIG9wdGlvbnM6IHRoaXMuYXBpLm9wdGlvbnMgfSk7XG4gICAgaWYgKHRoaXMubW9kZWwgIT09IHVuZGVmaW5lZCAmJiB0aGlzLm1vZGVsLm9wdGlvbnMgIT09IG51bGwpIHtcbiAgICAgIHRoaXMubW9kZWwubWV0YS5jb25maWd1cmUoe1xuICAgICAgICBmaW5kT3B0aW9uc0ZvclR5cGUsXG4gICAgICAgIG9wdGlvbnM6IHRoaXMuYXBpLm9wdGlvbnMsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgc3RydWN0dXJlZCB0eXBlIGlzIGEgc3VidHlwZSBvZiB0aGUgZ2l2ZW4gdHlwZS5cbiAgICogQHBhcmFtIHR5cGUgU3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB0eXBlXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIGNhbGxhYmxlIGlzIHR5cGUgb2YgdGhlIGdpdmVuIHR5cGVcbiAgICovXG4gIG92ZXJyaWRlIGlzU3VidHlwZU9mKHNjaGVtYTogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxhbnk+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHN1cGVyLmlzU3VidHlwZU9mKHNjaGVtYSkgfHxcbiAgICAgICh0aGlzLnBhcmVudCAhPT0gdW5kZWZpbmVkICYmIHRoaXMucGFyZW50LmlzU3VidHlwZU9mKHNjaGVtYSkpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgaXMgYSBzdXBlcnR5cGUgb2YgdGhlIGdpdmVuIHR5cGUuXG4gICAqIEBwYXJhbSB0eXBlIFN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgdHlwZVxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBjYWxsYWJsZSBpcyB0eXBlIG9mIHRoZSBnaXZlbiB0eXBlXG4gICAqL1xuICBvdmVycmlkZSBpc1N1cGVydHlwZU9mKHNjaGVtYTogT0RhdGFTdHJ1Y3R1cmVkVHlwZTxhbnk+KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHN1cGVyLmlzU3VwZXJ0eXBlT2Yoc2NoZW1hKSB8fFxuICAgICAgdGhpcy5jaGlsZHJlbi5zb21lKChjKSA9PiBjLmlzU3VwZXJ0eXBlT2Yoc2NoZW1hKSlcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHN0cnVjdHVyZWQgdHlwZSBoYXMgYSBzaW1wbGUga2V5LlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgaGFzIGEgc2ltcGxlIGtleVxuICAgKi9cbiAgaXNTaW1wbGVLZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMua2V5cygpLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgaGFzIGEgY29tcG91bmQga2V5LlxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgaGFzIGEgY29tcG91bmQga2V5LlxuICAgKi9cbiAgaXNDb21wb3VuZEtleSgpIHtcbiAgICByZXR1cm4gdGhpcy5rZXlzKCkubGVuZ3RoID4gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIHRoZSBmaWVsZCBwYXJzZXIgZm9yIHRoZSBnaXZlbiBmaWVsZCBuYW1lLlxuICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSBmaWVsZFxuICAgKiBAcmV0dXJucyBUaGUgZmllbGQgcGFyc2VyXG4gICAqL1xuICBmaW5kRmllbGRCeU5hbWU8Rj4obmFtZToga2V5b2YgVCkge1xuICAgIHJldHVybiB0aGlzLmZpZWxkcyh7XG4gICAgICBpbmNsdWRlX3BhcmVudHM6IHRydWUsXG4gICAgICBpbmNsdWRlX25hdmlnYXRpb246IHRydWUsXG4gICAgfSkuZmluZCgoZikgPT4gZi5uYW1lID09PSBuYW1lKSBhc1xuICAgICAgfCBPRGF0YVN0cnVjdHVyZWRUeXBlRmllbGRQYXJzZXI8Rj5cbiAgICAgIHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYSBwYXJlbnQgc2NoZW1hIG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSBwcmVkaWNhdGUgRnVuY3Rpb24gZm9yIGV2YWx1YXRlIHRoZSBzY2hlbWFzIGluIHRoZSBoaWVyYXJjaHkuXG4gICAqIEByZXR1cm5zIFRoZSBzY2hlbWEgdGhhdCBtYXRjaGVzIHRoZSBwcmVkaWNhdGUuXG4gICAqL1xuICBmaW5kUGFyZW50U2NoZW1hKFxuICAgIHByZWRpY2F0ZTogKHA6IE9EYXRhU3RydWN0dXJlZFR5cGU8YW55PikgPT4gYm9vbGVhblxuICApOiBPRGF0YVN0cnVjdHVyZWRUeXBlPGFueT4gfCB1bmRlZmluZWQge1xuICAgIGlmIChwcmVkaWNhdGUodGhpcykpIHJldHVybiB0aGlzIGFzIE9EYXRhU3RydWN0dXJlZFR5cGU8YW55PjtcbiAgICBpZiAodGhpcy5wYXJlbnQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQuZmluZFBhcmVudFNjaGVtYShwcmVkaWNhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYSBwYXJlbnQgc2NoZW1hIG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgZm9yIHRoZSBnaXZlbiBmaWVsZC5cbiAgICogQHBhcmFtIGZpZWxkIEZpZWxkIHRoYXQgYmVsb25ncyB0byB0aGUgc3RydWN0dXJlZCB0eXBlXG4gICAqIEByZXR1cm5zIFRoZSBzY2hlbWEgb2YgdGhlIGZpZWxkXG4gICAqL1xuICBmaW5kU2NoZW1hRm9yRmllbGQ8RT4oZmllbGQ6IE9EYXRhU3RydWN0dXJlZFR5cGVGaWVsZFBhcnNlcjxhbnk+KSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZFBhcmVudFNjaGVtYShcbiAgICAgIChwKSA9PlxuICAgICAgICBwXG4gICAgICAgICAgLmZpZWxkcyh7IGluY2x1ZGVfcGFyZW50czogZmFsc2UsIGluY2x1ZGVfbmF2aWdhdGlvbjogdHJ1ZSB9KVxuICAgICAgICAgIC5maW5kKChmKSA9PiBmID09PSBmaWVsZCkgIT09IHVuZGVmaW5lZFxuICAgICkgYXMgT0RhdGFTdHJ1Y3R1cmVkVHlwZTxFPjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFsbCBmaWVsZHMgb2YgdGhlIHN0cnVjdHVyZWQgdHlwZS5cbiAgICogQHBhcmFtIGluY2x1ZGVfbmF2aWdhdGlvbiBJbmNsdWRlIG5hdmlnYXRpb24gcHJvcGVydGllcyBpbiB0aGUgcmVzdWx0LlxuICAgKiBAcGFyYW0gaW5jbHVkZV9wYXJlbnRzIEluY2x1ZGUgdGhlIHBhcmVudCB0eXBlcyBpbiB0aGUgcmVzdWx0LlxuICAgKiBAcmV0dXJucyBBbGwgZmllbGRzIG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqL1xuICBmaWVsZHMoe1xuICAgIGluY2x1ZGVfbmF2aWdhdGlvbixcbiAgICBpbmNsdWRlX3BhcmVudHMsXG4gIH06IHtcbiAgICBpbmNsdWRlX3BhcmVudHM6IGJvb2xlYW47XG4gICAgaW5jbHVkZV9uYXZpZ2F0aW9uOiBib29sZWFuO1xuICB9KTogT0RhdGFTdHJ1Y3R1cmVkVHlwZUZpZWxkUGFyc2VyPGFueT5bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLihpbmNsdWRlX3BhcmVudHMgJiYgdGhpcy5wYXJlbnQgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IHRoaXMucGFyZW50LmZpZWxkcyh7IGluY2x1ZGVfcGFyZW50cywgaW5jbHVkZV9uYXZpZ2F0aW9uIH0pXG4gICAgICAgIDogW10pLFxuICAgICAgLi4udGhpcy5wYXJzZXIuZmllbGRzLmZpbHRlcihcbiAgICAgICAgKGZpZWxkKSA9PiBpbmNsdWRlX25hdmlnYXRpb24gfHwgIWZpZWxkLm5hdmlnYXRpb25cbiAgICAgICksXG4gICAgXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBrZXlzIG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSBpbmNsdWRlX3BhcmVudHMgSW5jbHVkZSB0aGUgcGFyZW50IGZpZWxkc1xuICAgKiBAcmV0dXJucyBUaGUga2V5cyBvZiB0aGUgc3RydWN0dXJlZCB0eXBlXG4gICAqL1xuICBrZXlzKHtcbiAgICBpbmNsdWRlX3BhcmVudHMgPSB0cnVlLFxuICB9OiB7XG4gICAgaW5jbHVkZV9wYXJlbnRzPzogYm9vbGVhbjtcbiAgfSA9IHt9KTogT0RhdGFFbnRpdHlUeXBlS2V5W10ge1xuICAgIHJldHVybiBbXG4gICAgICAuLi4oaW5jbHVkZV9wYXJlbnRzICYmIHRoaXMucGFyZW50ICE9PSB1bmRlZmluZWRcbiAgICAgICAgPyB0aGlzLnBhcmVudC5rZXlzKHsgaW5jbHVkZV9wYXJlbnRzIH0pXG4gICAgICAgIDogW10pLFxuICAgICAgLi4uKHRoaXMucGFyc2VyLmtleXMgfHwgW10pLFxuICAgIF07XG4gIH1cblxuICAvKipcbiAgICogUGlja3MgdGhlIGZpZWxkcyBmcm9tIGF0dHJpYnV0ZXMuXG4gICAqIEBwYXJhbSBhdHRyc1xuICAgKiBAcGFyYW0gaW5jbHVkZV9wYXJlbnRzIEluY2x1ZGUgdGhlIHBhcmVudCBmaWVsZHNcbiAgICogQHBhcmFtIGluY2x1ZGVfbmF2aWdhdGlvbiBJbmNsdWRlIHRoZSBuYXZpZ2F0aW9uIGZpZWxkc1xuICAgKiBAcGFyYW0gaW5jbHVkZV9ldGFnIEluY2x1ZGUgdGhlIGV0YWcgZmllbGRcbiAgICogQHJldHVybnMgVGhlIHBpY2tlZCBmaWVsZHNcbiAgICovXG4gIHBpY2soXG4gICAgYXR0cnM6IHsgW25hbWU6IHN0cmluZ106IGFueSB9LFxuICAgIHtcbiAgICAgIGluY2x1ZGVfcGFyZW50cyA9IHRydWUsXG4gICAgICBpbmNsdWRlX25hdmlnYXRpb24gPSBmYWxzZSxcbiAgICAgIGluY2x1ZGVfZXRhZyA9IHRydWUsXG4gICAgfToge1xuICAgICAgaW5jbHVkZV9wYXJlbnRzPzogYm9vbGVhbjtcbiAgICAgIGluY2x1ZGVfbmF2aWdhdGlvbj86IGJvb2xlYW47XG4gICAgICBpbmNsdWRlX2V0YWc/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApOiBQYXJ0aWFsPFQ+IHtcbiAgICBjb25zdCBuYW1lcyA9IHRoaXMuZmllbGRzKHsgaW5jbHVkZV9wYXJlbnRzLCBpbmNsdWRlX25hdmlnYXRpb24gfSkubWFwKFxuICAgICAgKGYpID0+IGYubmFtZVxuICAgICk7XG4gICAgbGV0IHZhbHVlcyA9IE9iamVjdC5rZXlzKGF0dHJzKVxuICAgICAgLmZpbHRlcigoaykgPT4gbmFtZXMuaW5kZXhPZihrKSAhPT0gLTEpXG4gICAgICAucmVkdWNlKChhY2MsIGspID0+IE9iamVjdC5hc3NpZ24oYWNjLCB7IFtrXTogYXR0cnNba10gfSksIHt9KTtcbiAgICBpZiAoaW5jbHVkZV9ldGFnKSB7XG4gICAgICBjb25zdCBldGFnID0gdGhpcy5hcGkub3B0aW9ucy5oZWxwZXIuZXRhZyhhdHRycyk7XG4gICAgICB0aGlzLmFwaS5vcHRpb25zLmhlbHBlci5ldGFnKGF0dHJzLCBldGFnKTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXNlaWFsaXplIHRoZSBnaXZlbiB2YWx1ZSBmcm9tIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBkZXNlcmlhbGl6ZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBkZXNlcmlhbGl6YXRpb25cbiAgICogQHJldHVybnMgRGVzZXJpYWxpemVkIHZhbHVlXG4gICAqL1xuICBkZXNlcmlhbGl6ZSh2YWx1ZTogYW55LCBvcHRpb25zPzogT3B0aW9ucyk6IFQge1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5kZXNlcmlhbGl6ZSh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogU2VyaWFsaXplIHRoZSBnaXZlbiB2YWx1ZSBmb3IgdGhlIHN0cnVjdHVyZWQgdHlwZS5cbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIHNlcmlhbGl6ZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBzZXJpYWxpemF0aW9uXG4gICAqIEByZXR1cm5zIFNlcmlhbGl6ZWQgdmFsdWVcbiAgICovXG4gIHNlcmlhbGl6ZSh2YWx1ZTogVCwgb3B0aW9ucz86IE9wdGlvbnMpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5zZXJpYWxpemUodmFsdWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuY29kZSB0aGUgZ2l2ZW4gdmFsdWUgZm9yIHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBlbmNvZGVcbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgZW5jb2RpbmdcbiAgICogQHJldHVybnMgRW5jb2RlZCB2YWx1ZVxuICAgKi9cbiAgZW5jb2RlKHZhbHVlOiBULCBvcHRpb25zPzogT3B0aW9ucyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyLmVuY29kZSh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUga2V5IG9mIHRoZSBzdHJ1Y3R1cmVkIHR5cGUgZm9yIHRoZSBnaXZlbiB2YWx1ZS5cbiAgICogQHBhcmFtIGF0dHJzIEF0dHJpYnV0ZXMgb2YgdGhlIHZhbHVlXG4gICAqIEByZXR1cm5zIFJlc29sdmVkIGtleVxuICAgKi9cbiAgcmVzb2x2ZUtleShhdHRyczogVCB8IHsgW25hbWU6IHN0cmluZ106IGFueSB9KSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyLnJlc29sdmVLZXkoYXR0cnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGRlZmF1bHRzIHZhbHVlcyBmb3IgdGhlIHN0cnVjdHVyZWQgdHlwZS5cbiAgICogQHJldHVybnMgRGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBzdHJ1Y3R1cmVkIHR5cGVcbiAgICovXG4gIGRlZmF1bHRzKCkge1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5kZWZhdWx0cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhlIHN0cnVjdHVyZWQgdHlwZSB0byBqc29uIHNjaGVtYVxuICAgKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBqc29uIHNjaGVtYVxuICAgKiBAcmV0dXJucyBKc29uIFNjaGVtYVxuICAgKi9cbiAgdG9Kc29uU2NoZW1hKG9wdGlvbnM6IEpzb25TY2hlbWFPcHRpb25zPFQ+ID0ge30pIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIudG9Kc29uU2NoZW1hKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIHRoZSBnaXZlbiB2YWx1ZSBhZ2FpbnN0IHRoZSBzdHJ1Y3R1cmVkIHR5cGUuXG4gICAqIEBwYXJhbSBhdHRycyBBdHRyaWJ1dGVzIG9mIHRoZSB2YWx1ZVxuICAgKiBAcGFyYW0gbWV0aG9kIE1ldGhvZCB0byB1c2UgZm9yIHRoZSBwcm9jZXNzIHZhbGlkYXRpb25cbiAgICogQHJldHVybnMgT2JqZWN0IHdpdGggdGhlIGVycm9yc1xuICAgKi9cbiAgdmFsaWRhdGUoXG4gICAgYXR0cnM6IFBhcnRpYWw8VD4sXG4gICAge1xuICAgICAgbWV0aG9kLFxuICAgICAgbmF2aWdhdGlvbiA9IGZhbHNlLFxuICAgIH06IHtcbiAgICAgIG1ldGhvZD86ICdjcmVhdGUnIHwgJ3VwZGF0ZScgfCAnbW9kaWZ5JztcbiAgICAgIG5hdmlnYXRpb24/OiBib29sZWFuO1xuICAgIH0gPSB7fVxuICApIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIudmFsaWRhdGUoYXR0cnMsIHsgbWV0aG9kLCBuYXZpZ2F0aW9uIH0pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,29 @@
1
+ export class ODataBaseService {
2
+ constructor(client, name, apiNameOrEntityType) {
3
+ this.client = client;
4
+ this.name = name;
5
+ this.apiNameOrEntityType = apiNameOrEntityType;
6
+ }
7
+ get api() {
8
+ return this.client.apiFor(this.apiNameOrEntityType);
9
+ }
10
+ callFunction(params, resource, responseType, options = {}) {
11
+ resource.query((q) => q.apply(options));
12
+ return resource.call(params, {
13
+ responseType: responseType,
14
+ ...options,
15
+ });
16
+ }
17
+ callAction(params, resource, responseType, options = {}) {
18
+ resource.query((q) => q.apply(options));
19
+ return resource.call(params, {
20
+ responseType: responseType,
21
+ ...options,
22
+ });
23
+ }
24
+ fetchNavigationProperty(resource, responseType, options = {}) {
25
+ resource.query((q) => q.apply(options));
26
+ return resource.fetch({ responseType: responseType, ...options });
27
+ }
28
+ }
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9zZXJ2aWNlcy9iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE1BQU0sT0FBZ0IsZ0JBQWdCO0lBQ3BDLFlBQ1ksTUFBbUIsRUFDbkIsSUFBWSxFQUNaLG1CQUE0QjtRQUY1QixXQUFNLEdBQU4sTUFBTSxDQUFhO1FBQ25CLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQVM7SUFDckMsQ0FBQztJQUVKLElBQUksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDdEQsQ0FBQztJQTBCUyxZQUFZLENBQ3BCLE1BQWdCLEVBQ2hCLFFBQXFDLEVBQ3JDLFlBQXlELEVBQ3pELFVBQXlDLEVBQUU7UUFFM0MsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDM0IsWUFBWSxFQUFFLFlBQW1CO1lBQ2pDLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztJQUNMLENBQUM7SUEwQlMsVUFBVSxDQUNsQixNQUFnQixFQUNoQixRQUFtQyxFQUNuQyxZQUF5RCxFQUN6RCxVQUF5QyxFQUFFO1FBRTNDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN4QyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzNCLFlBQVksRUFBRSxZQUFtQjtZQUNqQyxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBWVMsdUJBQXVCLENBQy9CLFFBQTRDLEVBQzVDLFlBQW1DLEVBQ25DLFVBQXlDLEVBQUU7UUFFM0MsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLFlBQVksRUFBRSxZQUFtQixFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPRGF0YUNsaWVudCB9IGZyb20gJy4uL2NsaWVudCc7XG5pbXBvcnQge1xuICBPRGF0YUFjdGlvblJlc291cmNlLFxuICBPRGF0YUVudGl0aWVzLFxuICBPRGF0YUVudGl0eSxcbiAgT0RhdGFGdW5jdGlvblJlc291cmNlLFxuICBPRGF0YU5hdmlnYXRpb25Qcm9wZXJ0eVJlc291cmNlLFxuICBPRGF0YVByb3BlcnR5LFxuICBPRGF0YVF1ZXJ5QXJndW1lbnRzT3B0aW9ucyxcbn0gZnJvbSAnLi4vcmVzb3VyY2VzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE9EYXRhQmFzZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgY2xpZW50OiBPRGF0YUNsaWVudCxcbiAgICBwcm90ZWN0ZWQgbmFtZTogc3RyaW5nLFxuICAgIHByb3RlY3RlZCBhcGlOYW1lT3JFbnRpdHlUeXBlPzogc3RyaW5nXG4gICkge31cblxuICBnZXQgYXBpKCkge1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5hcGlGb3IodGhpcy5hcGlOYW1lT3JFbnRpdHlUeXBlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjYWxsRnVuY3Rpb248UCwgUj4oXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICByZXNvdXJjZTogT0RhdGFGdW5jdGlvblJlc291cmNlPFAsIFI+LFxuICAgIHJlc3BvbnNlVHlwZTogJ2VudGl0eScsXG4gICAgb3B0aW9ucz86IE9EYXRhUXVlcnlBcmd1bWVudHNPcHRpb25zPFI+XG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdHk8Uj4+O1xuICBwcm90ZWN0ZWQgY2FsbEZ1bmN0aW9uPFAsIFI+KFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgcmVzb3VyY2U6IE9EYXRhRnVuY3Rpb25SZXNvdXJjZTxQLCBSPixcbiAgICByZXNwb25zZVR5cGU6ICdlbnRpdGllcycsXG4gICAgb3B0aW9ucz86IE9EYXRhUXVlcnlBcmd1bWVudHNPcHRpb25zPFI+XG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdGllczxSPj47XG4gIHByb3RlY3RlZCBjYWxsRnVuY3Rpb248UCwgUj4oXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICByZXNvdXJjZTogT0RhdGFGdW5jdGlvblJlc291cmNlPFAsIFI+LFxuICAgIHJlc3BvbnNlVHlwZTogJ3Byb3BlcnR5JyxcbiAgICBvcHRpb25zPzogT0RhdGFRdWVyeUFyZ3VtZW50c09wdGlvbnM8Uj5cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVByb3BlcnR5PFI+PjtcbiAgcHJvdGVjdGVkIGNhbGxGdW5jdGlvbjxQLCBSPihcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIHJlc291cmNlOiBPRGF0YUZ1bmN0aW9uUmVzb3VyY2U8UCwgUj4sXG4gICAgcmVzcG9uc2VUeXBlOiAnbm9uZScsXG4gICAgb3B0aW9ucz86IE9EYXRhUXVlcnlBcmd1bWVudHNPcHRpb25zPFI+XG4gICk6IE9ic2VydmFibGU8bnVsbD47XG4gIHByb3RlY3RlZCBjYWxsRnVuY3Rpb248UCwgUj4oXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICByZXNvdXJjZTogT0RhdGFGdW5jdGlvblJlc291cmNlPFAsIFI+LFxuICAgIHJlc3BvbnNlVHlwZTogJ3Byb3BlcnR5JyB8ICdlbnRpdHknIHwgJ2VudGl0aWVzJyB8ICdub25lJyxcbiAgICBvcHRpb25zOiBPRGF0YVF1ZXJ5QXJndW1lbnRzT3B0aW9uczxSPiA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmVzb3VyY2UucXVlcnkoKHEpID0+IHEuYXBwbHkob3B0aW9ucykpO1xuICAgIHJldHVybiByZXNvdXJjZS5jYWxsKHBhcmFtcywge1xuICAgICAgcmVzcG9uc2VUeXBlOiByZXNwb25zZVR5cGUgYXMgYW55LFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjYWxsQWN0aW9uPFAsIFI+KFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgcmVzb3VyY2U6IE9EYXRhQWN0aW9uUmVzb3VyY2U8UCwgUj4sXG4gICAgcmVzcG9uc2VUeXBlOiAnZW50aXR5JyxcbiAgICBvcHRpb25zPzogT0RhdGFRdWVyeUFyZ3VtZW50c09wdGlvbnM8Uj5cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YUVudGl0eTxSPj47XG4gIHByb3RlY3RlZCBjYWxsQWN0aW9uPFAsIFI+KFxuICAgIHBhcmFtczogUCB8IG51bGwsXG4gICAgcmVzb3VyY2U6IE9EYXRhQWN0aW9uUmVzb3VyY2U8UCwgUj4sXG4gICAgcmVzcG9uc2VUeXBlOiAnZW50aXRpZXMnLFxuICAgIG9wdGlvbnM/OiBPRGF0YVF1ZXJ5QXJndW1lbnRzT3B0aW9uczxSPlxuICApOiBPYnNlcnZhYmxlPE9EYXRhRW50aXRpZXM8Uj4+O1xuICBwcm90ZWN0ZWQgY2FsbEFjdGlvbjxQLCBSPihcbiAgICBwYXJhbXM6IFAgfCBudWxsLFxuICAgIHJlc291cmNlOiBPRGF0YUFjdGlvblJlc291cmNlPFAsIFI+LFxuICAgIHJlc3BvbnNlVHlwZTogJ3Byb3BlcnR5JyxcbiAgICBvcHRpb25zPzogT0RhdGFRdWVyeUFyZ3VtZW50c09wdGlvbnM8Uj5cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YVByb3BlcnR5PFI+PjtcbiAgcHJvdGVjdGVkIGNhbGxBY3Rpb248UCwgUj4oXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICByZXNvdXJjZTogT0RhdGFBY3Rpb25SZXNvdXJjZTxQLCBSPixcbiAgICByZXNwb25zZVR5cGU6ICdub25lJyxcbiAgICBvcHRpb25zPzogT0RhdGFRdWVyeUFyZ3VtZW50c09wdGlvbnM8Uj5cbiAgKTogT2JzZXJ2YWJsZTxudWxsPjtcbiAgcHJvdGVjdGVkIGNhbGxBY3Rpb248UCwgUj4oXG4gICAgcGFyYW1zOiBQIHwgbnVsbCxcbiAgICByZXNvdXJjZTogT0RhdGFBY3Rpb25SZXNvdXJjZTxQLCBSPixcbiAgICByZXNwb25zZVR5cGU6ICdwcm9wZXJ0eScgfCAnZW50aXR5JyB8ICdlbnRpdGllcycgfCAnbm9uZScsXG4gICAgb3B0aW9uczogT0RhdGFRdWVyeUFyZ3VtZW50c09wdGlvbnM8Uj4gPSB7fVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJlc291cmNlLnF1ZXJ5KChxKSA9PiBxLmFwcGx5KG9wdGlvbnMpKTtcbiAgICByZXR1cm4gcmVzb3VyY2UuY2FsbChwYXJhbXMsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogcmVzcG9uc2VUeXBlIGFzIGFueSxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZmV0Y2hOYXZpZ2F0aW9uUHJvcGVydHk8Uz4oXG4gICAgcmVzb3VyY2U6IE9EYXRhTmF2aWdhdGlvblByb3BlcnR5UmVzb3VyY2U8Uz4sXG4gICAgcmVzcG9uc2VUeXBlOiAnZW50aXR5JyxcbiAgICBvcHRpb25zPzogT0RhdGFRdWVyeUFyZ3VtZW50c09wdGlvbnM8Uz5cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YUVudGl0eTxTPj47XG4gIHByb3RlY3RlZCBmZXRjaE5hdmlnYXRpb25Qcm9wZXJ0eTxTPihcbiAgICByZXNvdXJjZTogT0RhdGFOYXZpZ2F0aW9uUHJvcGVydHlSZXNvdXJjZTxTPixcbiAgICByZXNwb25zZVR5cGU6ICdlbnRpdGllcycsXG4gICAgb3B0aW9ucz86IE9EYXRhUXVlcnlBcmd1bWVudHNPcHRpb25zPFM+XG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdGllczxTPj47XG4gIHByb3RlY3RlZCBmZXRjaE5hdmlnYXRpb25Qcm9wZXJ0eTxTPihcbiAgICByZXNvdXJjZTogT0RhdGFOYXZpZ2F0aW9uUHJvcGVydHlSZXNvdXJjZTxTPixcbiAgICByZXNwb25zZVR5cGU6ICdlbnRpdHknIHwgJ2VudGl0aWVzJyxcbiAgICBvcHRpb25zOiBPRGF0YVF1ZXJ5QXJndW1lbnRzT3B0aW9uczxTPiA9IHt9XG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmVzb3VyY2UucXVlcnkoKHEpID0+IHEuYXBwbHkob3B0aW9ucykpO1xuICAgIHJldHVybiByZXNvdXJjZS5mZXRjaCh7IHJlc3BvbnNlVHlwZTogcmVzcG9uc2VUeXBlIGFzIGFueSwgLi4ub3B0aW9ucyB9KTtcbiAgfVxufVxuIl19
@@ -0,0 +1,143 @@
1
+ import { throwError } from 'rxjs';
2
+ import { catchError } from 'rxjs/operators';
3
+ import { ODataCollection } from '../models/collection';
4
+ import { ODataModel } from '../models/model';
5
+ import { ODataEntityService } from './entity';
6
+ export class ODataEntitySetService extends ODataEntityService {
7
+ /**
8
+ * Get the entity set resource for this service.
9
+ */
10
+ entities() {
11
+ return this.client.entitySet(this.name, this.apiNameOrEntityType);
12
+ }
13
+ /**
14
+ * Get the entity resource for this service.
15
+ * @param key The entity key.
16
+ */
17
+ entity(key) {
18
+ return this.entities().entity(key);
19
+ }
20
+ attach(model) {
21
+ if (model instanceof ODataModel) {
22
+ model.attach(this.entities().entity());
23
+ }
24
+ else if (model instanceof ODataCollection) {
25
+ model.attach(this.entities());
26
+ }
27
+ }
28
+ /**
29
+ * The schema for the entity set.
30
+ */
31
+ get entitySetSchema() {
32
+ return this.api.findEntitySetByName(this.name);
33
+ }
34
+ /**
35
+ * Get all entities from the entity set.
36
+ * @param options The options for the request.
37
+ */
38
+ fetchAll(options) {
39
+ return this.entities().fetchAll(options);
40
+ }
41
+ /**
42
+ * Get entities from the entity set.
43
+ * @param withCount Get the count of the entities.
44
+ * @param options The options for the request.
45
+ */
46
+ fetchMany(options) {
47
+ return this.entities().fetch(options);
48
+ }
49
+ /**
50
+ * Get an entity from the entity set.
51
+ * @param key The entity key.
52
+ * @param etag The etag for the entity.
53
+ * @param options The options for the request.
54
+ */
55
+ fetchOne(key, options) {
56
+ return this.entity(key).fetch(options);
57
+ }
58
+ /**
59
+ * Create an entity in the entity set.
60
+ * @param attrs The attributes for the entity.
61
+ * @param options The options for the request.
62
+ */
63
+ create(attrs, options) {
64
+ return this.entities().create(attrs, options);
65
+ }
66
+ /**
67
+ * Update an entity in the entity set.
68
+ * @param key The entity key.
69
+ * @param attrs The attributes for the entity.
70
+ * @param etag The etag for the entity.
71
+ * @param options The options for the request.
72
+ */
73
+ update(key, attrs, options) {
74
+ const res = this.entity(key);
75
+ if (!res.hasKey())
76
+ return throwError('Resource without key');
77
+ return res.update(attrs, options);
78
+ }
79
+ /**
80
+ * Patch an entity in the entity set.
81
+ * @param key The entity key.
82
+ * @param attrs The attributes for the entity.
83
+ * @param etag The etag for the entity.
84
+ * @param options The options for the request.
85
+ */
86
+ modify(key, attrs, options) {
87
+ const res = this.entity(key);
88
+ if (!res.hasKey())
89
+ return throwError('Resource without key');
90
+ return res.modify(attrs, options);
91
+ }
92
+ /**
93
+ * Delete an entity in the entity set.
94
+ * @param key The entity key.
95
+ * @param etag The etag for the entity.
96
+ * @param options The options for the request.
97
+ */
98
+ destroy(key, options) {
99
+ const res = this.entity(key);
100
+ if (!res.hasKey())
101
+ return throwError('Resource without key');
102
+ return res.destroy(options);
103
+ }
104
+ //#region Shortcuts
105
+ /**
106
+ * Get or create an entity in the entity set.
107
+ * @param key The entity key.
108
+ * @param attrs The attributes for the entity.
109
+ * @param etag The etag for the entity.
110
+ * @param options The options for the request.
111
+ */
112
+ fetchOrCreate(key, attrs, { etag, ...options } = {}) {
113
+ return this.fetchOne(key, { etag, ...options }).pipe(catchError((error) => {
114
+ if (error.status === 404)
115
+ return this.create(attrs, options);
116
+ else
117
+ return throwError(error);
118
+ }));
119
+ }
120
+ /**
121
+ * Save an entity in the entity set.
122
+ * @param attrs The attributes for the entity.
123
+ * @param method The method to use.
124
+ * @param etag The etag for the entity.
125
+ * @param options The options for the request.
126
+ */
127
+ save(attrs, { etag, method, ...options } = {}) {
128
+ let schema = this.structuredTypeSchema;
129
+ if (method === undefined && schema !== undefined && schema.isCompoundKey())
130
+ return throwError('Composite key require a specific method, use create/update/patch');
131
+ let key = schema && schema.resolveKey(attrs);
132
+ if (method === undefined)
133
+ method = key !== undefined ? 'update' : 'create';
134
+ if ((method === 'update' || method === 'modify') && key === undefined)
135
+ return throwError("Can't update/patch entity without key");
136
+ return method === 'create'
137
+ ? this.create(attrs, options)
138
+ : method === 'modify'
139
+ ? this.modify(key, attrs, { etag, ...options })
140
+ : this.update(key, attrs, { etag, ...options });
141
+ }
142
+ }
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXNldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9zZXJ2aWNlcy9lbnRpdHktc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFTN0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRTlDLE1BQU0sT0FBTyxxQkFBeUIsU0FBUSxrQkFBcUI7SUFDakU7O09BRUc7SUFDSSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBSSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsR0FBa0I7UUFDOUIsT0FBTyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFRTSxNQUFNLENBQUMsS0FBVTtRQUN0QixJQUFJLEtBQUssWUFBWSxVQUFVLEVBQUU7WUFDL0IsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztTQUN4QzthQUFNLElBQUksS0FBSyxZQUFZLGVBQWUsRUFBRTtZQUMzQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFB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O1FBQ3ZDLElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUU7WUFDeEUsT0FBTyxVQUFVLENBQ2Ysa0VBQWtFLENBQ25FLENBQUM7UUFDSixJQUFJLEdBQUcsR0FBRyxNQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxJQUFJLE1BQU0sS0FBSyxTQUFTO1lBQUUsTUFBTSxHQUFHLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQzNFLElBQUksQ0FBQyxNQUFNLEtBQUssUUFBUSxJQUFJLE1BQU0sS0FBSyxRQUFRLENBQUMsSUFBSSxHQUFHLEtBQUssU0FBUztZQUNuRSxPQUFPLFVBQVUsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO1FBQzdELE9BQU8sTUFBTSxLQUFLLFFBQVE7WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztZQUM3QixDQUFDLENBQUMsTUFBTSxLQUFLLFFBQVE7Z0JBQ3JCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgT0RhdGFDb2xsZWN0aW9uIH0gZnJvbSAnLi4vbW9kZWxzL2NvbGxlY3Rpb24nO1xuaW1wb3J0IHsgT0RhdGFNb2RlbCB9IGZyb20gJy4uL21vZGVscy9tb2RlbCc7XG5pbXBvcnQge1xuICBFbnRpdHlLZXksXG4gIE9EYXRhRW50aXRpZXMsXG4gIE9EYXRhRW50aXR5LFxuICBPRGF0YUVudGl0eVJlc291cmNlLFxuICBPRGF0YUVudGl0eVNldFJlc291cmNlLFxuICBPRGF0YU9wdGlvbnMsXG59IGZyb20gJy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBPRGF0YUVudGl0eVNlcnZpY2UgfSBmcm9tICcuL2VudGl0eSc7XG5cbmV4cG9ydCBjbGFzcyBPRGF0YUVudGl0eVNldFNlcnZpY2U8VD4gZXh0ZW5kcyBPRGF0YUVudGl0eVNlcnZpY2U8VD4ge1xuICAvKipcbiAgICogR2V0IHRoZSBlbnRpdHkgc2V0IHJlc291cmNlIGZvciB0aGlzIHNlcnZpY2UuXG4gICAqL1xuICBwdWJsaWMgZW50aXRpZXMoKTogT0RhdGFFbnRpdHlTZXRSZXNvdXJjZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuY2xpZW50LmVudGl0eVNldDxUPih0aGlzLm5hbWUsIHRoaXMuYXBpTmFtZU9yRW50aXR5VHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBlbnRpdHkgcmVzb3VyY2UgZm9yIHRoaXMgc2VydmljZS5cbiAgICogQHBhcmFtIGtleSBUaGUgZW50aXR5IGtleS5cbiAgICovXG4gIHB1YmxpYyBlbnRpdHkoa2V5PzogRW50aXR5S2V5PFQ+KTogT0RhdGFFbnRpdHlSZXNvdXJjZTxUPiB7XG4gICAgcmV0dXJuIHRoaXMuZW50aXRpZXMoKS5lbnRpdHkoa2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggYW4gZXhpc3RpbmcgbW9kZWwgdG8gdGhpcyBzZXJ2aWNlLlxuICAgKiBAcGFyYW0gbW9kZWwgVGhlIG1vZGVsIHRvIGF0dGFjaC5cbiAgICovXG4gIHB1YmxpYyBhdHRhY2g8TSBleHRlbmRzIE9EYXRhTW9kZWw8VD4+KG1vZGVsOiBNKTogdm9pZDtcbiAgcHVibGljIGF0dGFjaDxDIGV4dGVuZHMgT0RhdGFDb2xsZWN0aW9uPFQsIE9EYXRhTW9kZWw8VD4+Pihtb2RlbDogQyk6IHZvaWQ7XG4gIHB1YmxpYyBhdHRhY2gobW9kZWw6IGFueSk6IHZvaWQge1xuICAgIGlmIChtb2RlbCBpbnN0YW5jZW9mIE9EYXRhTW9kZWwpIHtcbiAgICAgIG1vZGVsLmF0dGFjaCh0aGlzLmVudGl0aWVzKCkuZW50aXR5KCkpO1xuICAgIH0gZWxzZSBpZiAobW9kZWwgaW5zdGFuY2VvZiBPRGF0YUNvbGxlY3Rpb24pIHtcbiAgICAgIG1vZGVsLmF0dGFjaCh0aGlzLmVudGl0aWVzKCkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgc2NoZW1hIGZvciB0aGUgZW50aXR5IHNldC5cbiAgICovXG4gIGdldCBlbnRpdHlTZXRTY2hlbWEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpLmZpbmRFbnRpdHlTZXRCeU5hbWUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYWxsIGVudGl0aWVzIGZyb20gdGhlIGVudGl0eSBzZXQuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdC5cbiAgICovXG4gIHB1YmxpYyBmZXRjaEFsbChvcHRpb25zPzogT0RhdGFPcHRpb25zKTogT2JzZXJ2YWJsZTxUW10+IHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdGllcygpLmZldGNoQWxsKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBlbnRpdGllcyBmcm9tIHRoZSBlbnRpdHkgc2V0LlxuICAgKiBAcGFyYW0gd2l0aENvdW50IEdldCB0aGUgY291bnQgb2YgdGhlIGVudGl0aWVzLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgdGhlIHJlcXVlc3QuXG4gICAqL1xuICBwdWJsaWMgZmV0Y2hNYW55KFxuICAgIG9wdGlvbnM/OiBPRGF0YU9wdGlvbnMgJiB7IHdpdGhDb3VudD86IGJvb2xlYW4gfVxuICApOiBPYnNlcnZhYmxlPE9EYXRhRW50aXRpZXM8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdGllcygpLmZldGNoKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBlbnRpdHkgZnJvbSB0aGUgZW50aXR5IHNldC5cbiAgICogQHBhcmFtIGtleSBUaGUgZW50aXR5IGtleS5cbiAgICogQHBhcmFtIGV0YWcgVGhlIGV0YWcgZm9yIHRoZSBlbnRpdHkuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdC5cbiAgICovXG4gIHB1YmxpYyBmZXRjaE9uZShcbiAgICBrZXk6IEVudGl0eUtleTxUPixcbiAgICBvcHRpb25zPzogT0RhdGFPcHRpb25zICYgeyBldGFnPzogc3RyaW5nIH1cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YUVudGl0eTxUPj4ge1xuICAgIHJldHVybiB0aGlzLmVudGl0eShrZXkpLmZldGNoKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBlbnRpdHkgaW4gdGhlIGVudGl0eSBzZXQuXG4gICAqIEBwYXJhbSBhdHRycyBUaGUgYXR0cmlidXRlcyBmb3IgdGhlIGVudGl0eS5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZShcbiAgICBhdHRyczogUGFydGlhbDxUPixcbiAgICBvcHRpb25zPzogT0RhdGFPcHRpb25zXG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdHk8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdGllcygpLmNyZWF0ZShhdHRycywgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGFuIGVudGl0eSBpbiB0aGUgZW50aXR5IHNldC5cbiAgICogQHBhcmFtIGtleSBUaGUgZW50aXR5IGtleS5cbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIGZvciB0aGUgZW50aXR5LlxuICAgKiBAcGFyYW0gZXRhZyBUaGUgZXRhZyBmb3IgdGhlIGVudGl0eS5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZShcbiAgICBrZXk6IEVudGl0eUtleTxUPixcbiAgICBhdHRyczogUGFydGlhbDxUPixcbiAgICBvcHRpb25zPzogT0RhdGFPcHRpb25zICYgeyBldGFnPzogc3RyaW5nIH1cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YUVudGl0eTxUPj4ge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZW50aXR5KGtleSk7XG4gICAgaWYgKCFyZXMuaGFzS2V5KCkpIHJldHVybiB0aHJvd0Vycm9yKCdSZXNvdXJjZSB3aXRob3V0IGtleScpO1xuICAgIHJldHVybiByZXMudXBkYXRlKGF0dHJzLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXRjaCBhbiBlbnRpdHkgaW4gdGhlIGVudGl0eSBzZXQuXG4gICAqIEBwYXJhbSBrZXkgVGhlIGVudGl0eSBrZXkuXG4gICAqIEBwYXJhbSBhdHRycyBUaGUgYXR0cmlidXRlcyBmb3IgdGhlIGVudGl0eS5cbiAgICogQHBhcmFtIGV0YWcgVGhlIGV0YWcgZm9yIHRoZSBlbnRpdHkuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdC5cbiAgICovXG4gIHB1YmxpYyBtb2RpZnkoXG4gICAga2V5OiBFbnRpdHlLZXk8VD4sXG4gICAgYXR0cnM6IFBhcnRpYWw8VD4sXG4gICAgb3B0aW9ucz86IE9EYXRhT3B0aW9ucyAmIHsgZXRhZz86IHN0cmluZyB9XG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdHk8VD4+IHtcbiAgICBjb25zdCByZXMgPSB0aGlzLmVudGl0eShrZXkpO1xuICAgIGlmICghcmVzLmhhc0tleSgpKSByZXR1cm4gdGhyb3dFcnJvcignUmVzb3VyY2Ugd2l0aG91dCBrZXknKTtcbiAgICByZXR1cm4gcmVzLm1vZGlmeShhdHRycywgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlIGFuIGVudGl0eSBpbiB0aGUgZW50aXR5IHNldC5cbiAgICogQHBhcmFtIGtleSBUaGUgZW50aXR5IGtleS5cbiAgICogQHBhcmFtIGV0YWcgVGhlIGV0YWcgZm9yIHRoZSBlbnRpdHkuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdC5cbiAgICovXG4gIHB1YmxpYyBkZXN0cm95KFxuICAgIGtleTogRW50aXR5S2V5PFQ+LFxuICAgIG9wdGlvbnM/OiBPRGF0YU9wdGlvbnMgJiB7IGV0YWc/OiBzdHJpbmcgfVxuICApIHtcbiAgICBjb25zdCByZXMgPSB0aGlzLmVudGl0eShrZXkpO1xuICAgIGlmICghcmVzLmhhc0tleSgpKSByZXR1cm4gdGhyb3dFcnJvcignUmVzb3VyY2Ugd2l0aG91dCBrZXknKTtcbiAgICByZXR1cm4gcmVzLmRlc3Ryb3kob3B0aW9ucyk7XG4gIH1cblxuICAvLyNyZWdpb24gU2hvcnRjdXRzXG4gIC8qKlxuICAgKiBHZXQgb3IgY3JlYXRlIGFuIGVudGl0eSBpbiB0aGUgZW50aXR5IHNldC5cbiAgICogQHBhcmFtIGtleSBUaGUgZW50aXR5IGtleS5cbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIGZvciB0aGUgZW50aXR5LlxuICAgKiBAcGFyYW0gZXRhZyBUaGUgZXRhZyBmb3IgdGhlIGVudGl0eS5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgcHVibGljIGZldGNoT3JDcmVhdGUoXG4gICAga2V5OiBFbnRpdHlLZXk8VD4sXG4gICAgYXR0cnM6IFBhcnRpYWw8VD4sXG4gICAgeyBldGFnLCAuLi5vcHRpb25zIH06IHsgZXRhZz86IHN0cmluZyB9ICYgT0RhdGFPcHRpb25zID0ge31cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YUVudGl0eTxUPj4ge1xuICAgIHJldHVybiB0aGlzLmZldGNoT25lKGtleSwgeyBldGFnLCAuLi5vcHRpb25zIH0pLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSByZXR1cm4gdGhpcy5jcmVhdGUoYXR0cnMsIG9wdGlvbnMpO1xuICAgICAgICBlbHNlIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlIGFuIGVudGl0eSBpbiB0aGUgZW50aXR5IHNldC5cbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIGZvciB0aGUgZW50aXR5LlxuICAgKiBAcGFyYW0gbWV0aG9kIFRoZSBtZXRob2QgdG8gdXNlLlxuICAgKiBAcGFyYW0gZXRhZyBUaGUgZXRhZyBmb3IgdGhlIGVudGl0eS5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgcHVibGljIHNhdmUoXG4gICAgYXR0cnM6IFBhcnRpYWw8VD4sXG4gICAge1xuICAgICAgZXRhZyxcbiAgICAgIG1ldGhvZCxcbiAgICAgIC4uLm9wdGlvbnNcbiAgICB9OiB7XG4gICAgICBldGFnPzogc3RyaW5nO1xuICAgICAgbWV0aG9kPzogJ2NyZWF0ZScgfCAndXBkYXRlJyB8ICdtb2RpZnknO1xuICAgIH0gJiBPRGF0YU9wdGlvbnMgPSB7fVxuICApIHtcbiAgICBsZXQgc2NoZW1hID0gdGhpcy5zdHJ1Y3R1cmVkVHlwZVNjaGVtYTtcbiAgICBpZiAobWV0aG9kID09PSB1bmRlZmluZWQgJiYgc2NoZW1hICE9PSB1bmRlZmluZWQgJiYgc2NoZW1hLmlzQ29tcG91bmRLZXkoKSlcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKFxuICAgICAgICAnQ29tcG9zaXRlIGtleSByZXF1aXJlIGEgc3BlY2lmaWMgbWV0aG9kLCB1c2UgY3JlYXRlL3VwZGF0ZS9wYXRjaCdcbiAgICAgICk7XG4gICAgbGV0IGtleSA9IHNjaGVtYSAmJiBzY2hlbWEucmVzb2x2ZUtleShhdHRycyk7XG4gICAgaWYgKG1ldGhvZCA9PT0gdW5kZWZpbmVkKSBtZXRob2QgPSBrZXkgIT09IHVuZGVmaW5lZCA/ICd1cGRhdGUnIDogJ2NyZWF0ZSc7XG4gICAgaWYgKChtZXRob2QgPT09ICd1cGRhdGUnIHx8IG1ldGhvZCA9PT0gJ21vZGlmeScpICYmIGtleSA9PT0gdW5kZWZpbmVkKVxuICAgICAgcmV0dXJuIHRocm93RXJyb3IoXCJDYW4ndCB1cGRhdGUvcGF0Y2ggZW50aXR5IHdpdGhvdXQga2V5XCIpO1xuICAgIHJldHVybiBtZXRob2QgPT09ICdjcmVhdGUnXG4gICAgICA/IHRoaXMuY3JlYXRlKGF0dHJzLCBvcHRpb25zKVxuICAgICAgOiBtZXRob2QgPT09ICdtb2RpZnknXG4gICAgICA/IHRoaXMubW9kaWZ5KGtleSwgYXR0cnMsIHsgZXRhZywgLi4ub3B0aW9ucyB9KVxuICAgICAgOiB0aGlzLnVwZGF0ZShrZXksIGF0dHJzLCB7IGV0YWcsIC4uLm9wdGlvbnMgfSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG59XG4iXX0=
@@ -0,0 +1,12 @@
1
+ import { ODataBaseService } from './base';
2
+ export class ODataEntityService extends ODataBaseService {
3
+ /**
4
+ * The schema for the structured type.
5
+ */
6
+ get structuredTypeSchema() {
7
+ return this.apiNameOrEntityType !== undefined
8
+ ? this.api.findStructuredTypeForType(this.apiNameOrEntityType)
9
+ : undefined;
10
+ }
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3NlcnZpY2VzL2VudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFMUMsTUFBTSxPQUFnQixrQkFBc0IsU0FBUSxnQkFBZ0I7SUFJbEU7O09BRUc7SUFDSCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxTQUFTO1lBQzNDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUNqRSxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9EYXRhTW9kZWwgfSBmcm9tICcuLi9tb2RlbHMvbW9kZWwnO1xuaW1wb3J0IHsgRW50aXR5S2V5LCBPRGF0YVJlc291cmNlIH0gZnJvbSAnLi4vcmVzb3VyY2VzJztcbmltcG9ydCB7IE9EYXRhQmFzZVNlcnZpY2UgfSBmcm9tICcuL2Jhc2UnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgT0RhdGFFbnRpdHlTZXJ2aWNlPFQ+IGV4dGVuZHMgT0RhdGFCYXNlU2VydmljZSB7XG4gIHB1YmxpYyBhYnN0cmFjdCBlbnRpdHkoa2V5PzogRW50aXR5S2V5PFQ+KTogT0RhdGFSZXNvdXJjZTxUPjtcbiAgcHVibGljIGFic3RyYWN0IGF0dGFjaDxNIGV4dGVuZHMgT0RhdGFNb2RlbDxUPj4odmFsdWU6IE0pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NoZW1hIGZvciB0aGUgc3RydWN0dXJlZCB0eXBlLlxuICAgKi9cbiAgZ2V0IHN0cnVjdHVyZWRUeXBlU2NoZW1hKCkge1xuICAgIHJldHVybiB0aGlzLmFwaU5hbWVPckVudGl0eVR5cGUgIT09IHVuZGVmaW5lZFxuICAgICAgPyB0aGlzLmFwaS5maW5kU3RydWN0dXJlZFR5cGVGb3JUeXBlPFQ+KHRoaXMuYXBpTmFtZU9yRW50aXR5VHlwZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=
@@ -25,9 +25,9 @@ export class ODataServiceFactory {
25
25
  })(this.client, singletonName, apiNameOrEntityType);
26
26
  }
27
27
  }
28
- ODataServiceFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: ODataServiceFactory, deps: [{ token: i1.ODataClient }], target: i0.ɵɵFactoryTarget.Injectable });
29
- ODataServiceFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: ODataServiceFactory });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: ODataServiceFactory, decorators: [{
28
+ ODataServiceFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ODataServiceFactory, deps: [{ token: i1.ODataClient }], target: i0.ɵɵFactoryTarget.Injectable });
29
+ ODataServiceFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ODataServiceFactory });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: ODataServiceFactory, decorators: [{
31
31
  type: Injectable
32
32
  }], ctorParameters: function () { return [{ type: i1.ODataClient }]; } });
33
33
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9zZXJ2aWNlcy9mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBR3BELE1BQU0sT0FBTyxtQkFBbUI7SUFDOUIsWUFBc0IsTUFBbUI7UUFBbkIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtJQUFHLENBQUM7SUFFN0M7Ozs7T0FJRztJQUNILFNBQVMsQ0FDUCxhQUFxQixFQUNyQixtQkFBNEI7UUFFNUIsT0FBTyxJQUFJLENBQUMsS0FBTSxTQUFRLHFCQUF3QjtTQUFHLENBQUMsQ0FDcEQsSUFBSSxDQUFDLE1BQU0sRUFDWCxhQUFhLEVBQ2IsbUJBQW1CLENBQ3BCLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUNQLGFBQXFCLEVBQ3JCLG1CQUE0QjtRQUU1QixPQUFPLElBQUksQ0FBQyxLQUFNLFNBQVEscUJBQXdCO1NBQUcsQ0FBQyxDQUNwRCxJQUFJLENBQUMsTUFBTSxFQUNYLGFBQWEsRUFDYixtQkFBbUIsQ0FDcEIsQ0FBQztJQUNKLENBQUM7O2dIQWhDVSxtQkFBbUI7b0hBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT0RhdGFDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHsgT0RhdGFFbnRpdHlTZXRTZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdHktc2V0JztcbmltcG9ydCB7IE9EYXRhU2luZ2xldG9uU2VydmljZSB9IGZyb20gJy4vc2luZ2xldG9uJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE9EYXRhU2VydmljZUZhY3Rvcnkge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgY2xpZW50OiBPRGF0YUNsaWVudCkge31cblxuICAvKipcbiAgICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGFuIGVudGl0eSBzZXQgc2VydmljZS5cbiAgICogQHBhcmFtIGVudGl0eVNldE5hbWUgTmFtZSBvZiB0aGUgZW50aXR5IHNldC5cbiAgICogQHBhcmFtIGFwaU5hbWVPckVudGl0eVR5cGUgTmFtZSBvZiB0aGUgQVBJIG9yIHRoZSB0eXBlIG9mIHRoZSBlbnRpdHkuXG4gICAqL1xuICBlbnRpdHlTZXQ8VD4oXG4gICAgZW50aXR5U2V0TmFtZTogc3RyaW5nLFxuICAgIGFwaU5hbWVPckVudGl0eVR5cGU/OiBzdHJpbmdcbiAgKTogT0RhdGFFbnRpdHlTZXRTZXJ2aWNlPFQ+IHtcbiAgICByZXR1cm4gbmV3IChjbGFzcyBleHRlbmRzIE9EYXRhRW50aXR5U2V0U2VydmljZTxUPiB7fSkoXG4gICAgICB0aGlzLmNsaWVudCxcbiAgICAgIGVudGl0eVNldE5hbWUsXG4gICAgICBhcGlOYW1lT3JFbnRpdHlUeXBlXG4gICAgKTtcbiAgfVxuXG4gIC8qKiBGYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgYSBzaW5nbGV0b24gc2VydmljZS5cbiAgICogQHBhcmFtIHNpbmdsZXRvbk5hbWUgTmFtZSBvZiB0aGUgc2luZ2xldG9uLlxuICAgKiBAcGFyYW0gYXBpTmFtZU9yRW50aXR5VHlwZSBOYW1lIG9mIHRoZSBBUEkgb3IgdGhlIHR5cGUgb2YgdGhlIGVudGl0eS5cbiAgICovXG4gIHNpbmdsZXRvbjxUPihcbiAgICBzaW5nbGV0b25OYW1lOiBzdHJpbmcsXG4gICAgYXBpTmFtZU9yRW50aXR5VHlwZT86IHN0cmluZ1xuICApOiBPRGF0YVNpbmdsZXRvblNlcnZpY2U8VD4ge1xuICAgIHJldHVybiBuZXcgKGNsYXNzIGV4dGVuZHMgT0RhdGFTaW5nbGV0b25TZXJ2aWNlPFQ+IHt9KShcbiAgICAgIHRoaXMuY2xpZW50LFxuICAgICAgc2luZ2xldG9uTmFtZSxcbiAgICAgIGFwaU5hbWVPckVudGl0eVR5cGVcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -45,4 +45,4 @@ export class ODataSingletonService extends ODataEntityService {
45
45
  return res.modify(attrs, options);
46
46
  }
47
47
  }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3NlcnZpY2VzL3NpbmdsZXRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFNQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFJOUM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHFCQUF5QixTQUFRLGtCQUFxQjtJQUNqRTs7O09BR0c7SUFDSSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQTBCLEtBQVE7UUFDN0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQ1gsS0FBaUIsRUFDakIsT0FBMEM7UUFFMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUNWLEtBQWlCLEVBQ2pCLE9BQTBDO1FBRTFDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgT0RhdGFFbnRpdHksXG4gIE9EYXRhT3B0aW9ucyxcbiAgT0RhdGFTaW5nbGV0b25SZXNvdXJjZSxcbn0gZnJvbSAnLi4vcmVzb3VyY2VzJztcblxuaW1wb3J0IHsgT0RhdGFFbnRpdHlTZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdHknO1xuaW1wb3J0IHR5cGUgeyBPRGF0YU1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL21vZGVsJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBPRGF0YSBTaW5nbGV0b24gU2VydmljZVxuICogd3d3Lm9kYXRhLm9yZy9nZXR0aW5nLXN0YXJ0ZWQvYWR2YW5jZWQtdHV0b3JpYWwvI3NpbmdsZXRvblxuICovXG5leHBvcnQgY2xhc3MgT0RhdGFTaW5nbGV0b25TZXJ2aWNlPFQ+IGV4dGVuZHMgT0RhdGFFbnRpdHlTZXJ2aWNlPFQ+IHtcbiAgLyoqXG4gICAqIEdldCB0aGUgZW50aXR5IHJlc291cmNlIGZvciB0aGlzIHNlcnZpY2UuXG4gICAqIEBwYXJhbSBrZXkgVGhlIGVudGl0eSBrZXkuXG4gICAqL1xuICBwdWJsaWMgZW50aXR5KCk6IE9EYXRhU2luZ2xldG9uUmVzb3VyY2U8VD4ge1xuICAgIHJldHVybiB0aGlzLmNsaWVudC5zaW5nbGV0b24odGhpcy5uYW1lLCB0aGlzLmFwaU5hbWVPckVudGl0eVR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaCBhbiBleGlzdGluZyBtb2RlbCB0byB0aGlzIHNlcnZpY2UuXG4gICAqIEBwYXJhbSBtb2RlbCBUaGUgbW9kZWwgdG8gYXR0YWNoLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaDxNIGV4dGVuZHMgT0RhdGFNb2RlbDxUPj4obW9kZWw6IE0pIHtcbiAgICBtb2RlbC5hdHRhY2godGhpcy5lbnRpdHkoKSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNjaGVtYSBmb3IgdGhlIHNpbmdsZXRvbi5cbiAgICovXG4gIGdldCBzaW5nbGV0b25TY2hlbWEoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpLmZpbmRFbnRpdHlTZXRCeU5hbWUodGhpcy5uYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIHNpbmdsZXRvbiBlbnRpdHlcbiAgICogQHBhcmFtIGF0dHJzIFRoZSBhdHRyaWJ1dGVzIGZvciB0aGUgZW50aXR5LlxuICAgKiBAcGFyYW0gZXRhZyBUaGUgZXRhZyBmb3IgdGhlIGVudGl0eS5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIG9wdGlvbnMgZm9yIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgcHVibGljIHVwZGF0ZShcbiAgICBhdHRyczogUGFydGlhbDxUPixcbiAgICBvcHRpb25zPzogT0RhdGFPcHRpb25zICYgeyBldGFnPzogc3RyaW5nIH1cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YUVudGl0eTxUPj4ge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZW50aXR5KCk7XG4gICAgcmV0dXJuIHJlcy51cGRhdGUoYXR0cnMsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhdGNoIHRoZSBzaW5nbGV0b24gZW50aXR5XG4gICAqIEBwYXJhbSBhdHRycyBUaGUgYXR0cmlidXRlcyBmb3IgdGhlIGVudGl0eS5cbiAgICogQHBhcmFtIGV0YWcgVGhlIGV0YWcgZm9yIHRoZSBlbnRpdHkuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdC5cbiAgICovXG4gIHB1YmxpYyBwYXRjaChcbiAgICBhdHRyczogUGFydGlhbDxUPixcbiAgICBvcHRpb25zPzogT0RhdGFPcHRpb25zICYgeyBldGFnPzogc3RyaW5nIH1cbiAgKTogT2JzZXJ2YWJsZTxPRGF0YUVudGl0eTxUPj4ge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZW50aXR5KCk7XG4gICAgcmV0dXJuIHJlcy5tb2RpZnkoYXR0cnMsIG9wdGlvbnMpO1xuICB9XG59XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xldG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3NlcnZpY2VzL3NpbmdsZXRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFOUM7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHFCQUF5QixTQUFRLGtCQUFxQjtJQUNqRTs7O09BR0c7SUFDSSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7O09BR0c7SUFDSSxNQUFNLENBQTBCLEtBQVE7UUFDN0MsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQ1gsS0FBaUIsRUFDakIsT0FBMEM7UUFFMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzFCLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksS0FBSyxDQUNWLEtBQWlCLEVBQ2pCLE9BQTBDO1FBRTFDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMxQixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB0eXBlIHsgT0RhdGFNb2RlbCB9IGZyb20gJy4uL21vZGVscy9tb2RlbCc7XG5pbXBvcnQgdHlwZSB7XG4gIE9EYXRhRW50aXR5LFxuICBPRGF0YU9wdGlvbnMsXG4gIE9EYXRhU2luZ2xldG9uUmVzb3VyY2UsXG59IGZyb20gJy4uL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBPRGF0YUVudGl0eVNlcnZpY2UgfSBmcm9tICcuL2VudGl0eSc7XG5cbi8qKlxuICogT0RhdGEgU2luZ2xldG9uIFNlcnZpY2VcbiAqIHd3dy5vZGF0YS5vcmcvZ2V0dGluZy1zdGFydGVkL2FkdmFuY2VkLXR1dG9yaWFsLyNzaW5nbGV0b25cbiAqL1xuZXhwb3J0IGNsYXNzIE9EYXRhU2luZ2xldG9uU2VydmljZTxUPiBleHRlbmRzIE9EYXRhRW50aXR5U2VydmljZTxUPiB7XG4gIC8qKlxuICAgKiBHZXQgdGhlIGVudGl0eSByZXNvdXJjZSBmb3IgdGhpcyBzZXJ2aWNlLlxuICAgKiBAcGFyYW0ga2V5IFRoZSBlbnRpdHkga2V5LlxuICAgKi9cbiAgcHVibGljIGVudGl0eSgpOiBPRGF0YVNpbmdsZXRvblJlc291cmNlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5jbGllbnQuc2luZ2xldG9uKHRoaXMubmFtZSwgdGhpcy5hcGlOYW1lT3JFbnRpdHlUeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBdHRhY2ggYW4gZXhpc3RpbmcgbW9kZWwgdG8gdGhpcyBzZXJ2aWNlLlxuICAgKiBAcGFyYW0gbW9kZWwgVGhlIG1vZGVsIHRvIGF0dGFjaC5cbiAgICovXG4gIHB1YmxpYyBhdHRhY2g8TSBleHRlbmRzIE9EYXRhTW9kZWw8VD4+KG1vZGVsOiBNKSB7XG4gICAgbW9kZWwuYXR0YWNoKHRoaXMuZW50aXR5KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBzY2hlbWEgZm9yIHRoZSBzaW5nbGV0b24uXG4gICAqL1xuICBnZXQgc2luZ2xldG9uU2NoZW1hKCkge1xuICAgIHJldHVybiB0aGlzLmFwaS5maW5kRW50aXR5U2V0QnlOYW1lKHRoaXMubmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBzaW5nbGV0b24gZW50aXR5XG4gICAqIEBwYXJhbSBhdHRycyBUaGUgYXR0cmlidXRlcyBmb3IgdGhlIGVudGl0eS5cbiAgICogQHBhcmFtIGV0YWcgVGhlIGV0YWcgZm9yIHRoZSBlbnRpdHkuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciB0aGUgcmVxdWVzdC5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGUoXG4gICAgYXR0cnM6IFBhcnRpYWw8VD4sXG4gICAgb3B0aW9ucz86IE9EYXRhT3B0aW9ucyAmIHsgZXRhZz86IHN0cmluZyB9XG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdHk8VD4+IHtcbiAgICBjb25zdCByZXMgPSB0aGlzLmVudGl0eSgpO1xuICAgIHJldHVybiByZXMudXBkYXRlKGF0dHJzLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXRjaCB0aGUgc2luZ2xldG9uIGVudGl0eVxuICAgKiBAcGFyYW0gYXR0cnMgVGhlIGF0dHJpYnV0ZXMgZm9yIHRoZSBlbnRpdHkuXG4gICAqIEBwYXJhbSBldGFnIFRoZSBldGFnIGZvciB0aGUgZW50aXR5LlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyBmb3IgdGhlIHJlcXVlc3QuXG4gICAqL1xuICBwdWJsaWMgcGF0Y2goXG4gICAgYXR0cnM6IFBhcnRpYWw8VD4sXG4gICAgb3B0aW9ucz86IE9EYXRhT3B0aW9ucyAmIHsgZXRhZz86IHN0cmluZyB9XG4gICk6IE9ic2VydmFibGU8T0RhdGFFbnRpdHk8VD4+IHtcbiAgICBjb25zdCByZXMgPSB0aGlzLmVudGl0eSgpO1xuICAgIHJldHVybiByZXMubW9kaWZ5KGF0dHJzLCBvcHRpb25zKTtcbiAgfVxufVxuIl19
@@ -201,4 +201,4 @@ export class ODataSettings {
201
201
  return values[0];
202
202
  }
203
203
  }
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUtqQyxNQUFNLE9BQU8sYUFBYTtJQUV4QixZQUFZLEdBQUcsT0FBb0I7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO2dCQUM3QyxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7WUFDOUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUMvQyxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7U0FDaEU7UUFDRCxtREFBbUQ7UUFDbkQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxTQUFTLENBQUMsUUFFVDtRQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FB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QUM7YUFDekMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUNyQixNQUFNLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxZQUFZLENBQUMsQ0FBQztRQUN2RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNuQixNQUFNLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQzlELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBOEIsQ0FBQztJQUNoRCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlDb25maWcsIFBhcnNlciB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgT0RhdGFDYWxsYWJsZSxcbiAgT0RhdGFFbnRpdHlTZXQsXG4gIE9EYXRhRW51bVR5cGUsXG4gIE9EYXRhU3RydWN0dXJlZFR5cGUsXG59IGZyb20gJy4vc2NoZW1hJztcbmltcG9ydCB7IE9EYXRhQ29sbGVjdGlvbiwgT0RhdGFNb2RlbCB9IGZyb20gJy4vbW9kZWxzJztcblxuaW1wb3J0IHsgT0RhdGFBcGkgfSBmcm9tICcuL2FwaSc7XG5pbXBvcnQgeyBPRGF0YUVudGl0eVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2VudGl0eSc7XG5pbXBvcnQgeyBPRGF0YVJlcXVlc3QgfSBmcm9tICcuL3Jlc291cmNlcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVNldHRpbmdzIHtcbiAgYXBpczogT0RhdGFBcGlbXTtcbiAgY29uc3RydWN0b3IoLi4uY29uZmlnczogQXBpQ29uZmlnW10pIHtcbiAgICB0aGlzLmFwaXMgPSBjb25maWdzLm1hcCgoY29uZmlnKSA9PiBuZXcgT0RhdGFBcGkoY29uZmlnKSk7XG4gICAgaWYgKHRoaXMuYXBpcy5sZW5ndGggPiAxKSB7XG4gICAgICBpZiAodGhpcy5hcGlzLnNvbWUoKGMpID0+IGMubmFtZSA9PT0gdW5kZWZpbmVkKSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdWx0aXBsZSBBUElzOiBOZWVkcyBjb25maWd1cmF0aW9uIG5hbWVzJyk7XG4gICAgICBpZiAodGhpcy5hcGlzLmZpbHRlcigoYykgPT4gYy5kZWZhdWx0KS5sZW5ndGggPiAxKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE5lZWRzIG9ubHkgb25lIGRlZmF1bHQgYXBpJyk7XG4gICAgfVxuICAgIC8vIElmIG5vdCBkZWZhdWx0IHNldHVwIGZpcnN0IGNvbmZpZyBhcyBkZWZhdWx0IGFwaVxuICAgIGlmICh0aGlzLmFwaXMuZXZlcnkoKGMpID0+ICFjLmRlZmF1bHQpKSB0aGlzLmFwaXNbMF0uZGVmYXVsdCA9IHRydWU7XG4gIH1cblxuICBjb25maWd1cmUoc2V0dGluZ3M6IHtcbiAgICByZXF1ZXN0ZXI/OiAocmVxdWVzdDogT0RhdGFSZXF1ZXN0PGFueT4pID0+IE9ic2VydmFibGU8YW55PjtcbiAgfSkge1xuICAgIHRoaXMuYXBpcy5mb3JFYWNoKChhcGkpID0+IGFwaS5jb25maWd1cmUoc2V0dGluZ3MpKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWZhdWx0QXBpKCkge1xuICAgIHJldHVybiB0aGlzLmFwaXMuZmluZCgoYykgPT4gYy5kZWZhdWx0KSBhcyBPRGF0YUFwaTtcbiAgfVxuICBwdWJsaWMgZmluZEFwaUJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlzLmZpbmQoKGMpID0+IGMubmFtZSA9PT0gbmFtZSk7XG4gIH1cbiAgcHVibGljIGFwaUJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhcGkgPSB0aGlzLmZpbmRBcGlCeU5hbWUobmFtZSk7XG4gICAgaWYgKGFwaSA9PT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgRXJyb3IoYE5vIEFQSSBmb3IgbmFtZTogJHtuYW1lfWApO1xuICAgIHJldHVybiBhcGk7XG4gIH1cbiAgcHVibGljIGZpbmRBcGlGb3JUeXBlcyh0eXBlczogc3RyaW5nW10pIHtcbiAgICByZXR1cm4gdGhpcy5hcGlzLmZpbmQoKGMpID0+XG4gICAgICBjLnNjaGVtYXMuc29tZSgocykgPT4gdHlwZXMuc29tZSgodHlwZSkgPT4gcy5pc05hbWVzcGFjZU9mKHR5cGUpKSlcbiAgICApO1xuICB9XG4gIHB1YmxpYyBmaW5kQXBpRm9yVHlwZSh0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5maW5kQXBpRm9yVHlwZXMoW3R5cGVdKTtcbiAgfVxuICBwdWJsaWMgYXBpRm9yVHlwZSh0eXBlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhcGkgPSB0aGlzLmZpbmRBcGlGb3JUeXBlKHR5cGUpO1xuICAgIGlmIChhcGkgPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yKGBObyBBUEkgZm9yIHR5cGU6ICR7dHlwZX1gKTtcbiAgICByZXR1cm4gYXBpO1xuICB9XG5cbiAgLy8jcmVnaW9uIENvbmZpZ3Mgc2hvcnRjdXRzXG4gIHB1YmxpYyBlbnVtVHlwZUZvclR5cGU8VD4odHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZEVudW1UeXBlRm9yVHlwZTxUPih0eXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB0aHJvdyBFcnJvcihgTm8gRW51bSBmb3IgdHlwZSAke3R5cGV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBBUElzOiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgT0RhdGFFbnVtVHlwZTxUPjtcbiAgfVxuXG4gIHB1YmxpYyBzdHJ1Y3R1cmVkVHlwZUZvclR5cGU8VD4odHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZFN0cnVjdHVyZWRUeXBlRm9yVHlwZTxUPih0eXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIFN0cnVjdHVyZWQgZm9yIHR5cGUgJHt0eXBlfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIE9EYXRhU3RydWN0dXJlZFR5cGU8VD47XG4gIH1cblxuICBwdWJsaWMgY2FsbGFibGVGb3JUeXBlPFQ+KHR5cGU6IHN0cmluZywgYmluZGluZ1R5cGU/OiBzdHJpbmcpIHtcbiAgICBsZXQgdmFsdWVzID0gdGhpcy5hcGlzXG4gICAgICAubWFwKChhcGkpID0+IGFwaS5maW5kQ2FsbGFibGVGb3JUeXBlPFQ+KHR5cGUsIGJpbmRpbmdUeXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIENhbGxhYmxlIGZvciB0eXBlICR7dHlwZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyBPRGF0YUNhbGxhYmxlPFQ+O1xuICB9XG5cbiAgcHVibGljIGVudGl0eVNldEZvclR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZEVudGl0eVNldEZvclR5cGUodHlwZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IEVycm9yKGBObyBFbnRpdHlTZXQgZm9yIHR5cGUgJHt0eXBlfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIE9EYXRhRW50aXR5U2V0O1xuICB9XG5cbiAgcHVibGljIHBhcnNlckZvclR5cGU8VD4odHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkucGFyc2VyRm9yVHlwZTxUPih0eXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIFBhcnNlciBmb3IgdHlwZSAke3R5cGV9IHdhcyBmb3VuZGApO1xuICAgIGlmICghdHlwZS5zdGFydHNXaXRoKCdFZG0uJykgJiYgdmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIFBhcnNlcjxUPjtcbiAgfVxuXG4gIHB1YmxpYyBtb2RlbEZvclR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZE1vZGVsRm9yVHlwZSh0eXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB0aHJvdyBFcnJvcihgTm8gTW9kZWwgZm9yIHR5cGUgJHt0eXBlfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIHR5cGVvZiBPRGF0YU1vZGVsO1xuICB9XG5cbiAgcHVibGljIGNvbGxlY3Rpb25Gb3JUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRDb2xsZWN0aW9uRm9yVHlwZSh0eXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIENvbGxlY3Rpb24gZm9yIHR5cGUgJHt0eXBlfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIHR5cGVvZiBPRGF0YUNvbGxlY3Rpb247XG4gIH1cblxuICBwdWJsaWMgc2VydmljZUZvclR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZFNlcnZpY2VGb3JUeXBlKHR5cGUpKVxuICAgICAgLmZpbHRlcigoZSkgPT4gZSk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApXG4gICAgICB0aHJvdyBFcnJvcihgTm8gU2VydmljZSBmb3IgdHlwZSAke3R5cGV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBBUElzOiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgdHlwZW9mIE9EYXRhRW50aXR5U2VydmljZTtcbiAgfVxuICBwdWJsaWMgc2VydmljZUZvckVudGl0eVR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZFNlcnZpY2VGb3JFbnRpdHlUeXBlKHR5cGUpKVxuICAgICAgLmZpbHRlcigoZSkgPT4gZSk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApXG4gICAgICB0aHJvdyBFcnJvcihgTm8gU2VydmljZSBmb3IgdHlwZSAke3R5cGV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBBUElzOiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgdHlwZW9mIE9EYXRhRW50aXR5U2VydmljZTtcbiAgfVxuXG4gIHB1YmxpYyBlbnVtVHlwZUJ5TmFtZTxUPihuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgdmFsdWVzID0gdGhpcy5hcGlzXG4gICAgICAubWFwKChhcGkpID0+IGFwaS5maW5kRW51bVR5cGVCeU5hbWU8VD4obmFtZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkgdGhyb3cgRXJyb3IoYE5vIEVudW0gZm9yIG5hbWUgJHtuYW1lfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIE9EYXRhRW51bVR5cGU8VD47XG4gIH1cblxuICBwdWJsaWMgc3RydWN0dXJlZFR5cGVCeU5hbWU8VD4obmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZFN0cnVjdHVyZWRUeXBlQnlOYW1lPFQ+KG5hbWUpKVxuICAgICAgLmZpbHRlcigoZSkgPT4gZSk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApXG4gICAgICB0aHJvdyBFcnJvcihgTm8gU3RydWN0dXJlZCBmb3IgbmFtZSAke25hbWV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBTdHJ1Y3R1cmVkOiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgT0RhdGFTdHJ1Y3R1cmVkVHlwZTxUPjtcbiAgfVxuXG4gIHB1YmxpYyBjYWxsYWJsZUJ5TmFtZTxUPihuYW1lOiBzdHJpbmcsIGJpbmRpbmdUeXBlPzogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZENhbGxhYmxlQnlOYW1lPFQ+KG5hbWUsIGJpbmRpbmdUeXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIENhbGxhYmxlIGZvciBuYW1lICR7bmFtZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIENhbGxhYmxlOiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgT0RhdGFDYWxsYWJsZTxUPjtcbiAgfVxuXG4gIHB1YmxpYyBlbnRpdHlTZXRCeU5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZEVudGl0eVNldEJ5TmFtZShuYW1lKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIEVudGl0eVNldCBmb3IgbmFtZSAke25hbWV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBFbnRpdHlTZXQ6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyBPRGF0YUVudGl0eVNldDtcbiAgfVxuXG4gIHB1YmxpYyBtb2RlbEJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgdmFsdWVzID0gdGhpcy5hcGlzXG4gICAgICAubWFwKChhcGkpID0+IGFwaS5maW5kTW9kZWxCeU5hbWUobmFtZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkgdGhyb3cgRXJyb3IoYE5vIE1vZGVsIGZvciBuYW1lICR7bmFtZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyB0eXBlb2YgT0RhdGFNb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBjb2xsZWN0aW9uQnlOYW1lKG5hbWU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRDb2xsZWN0aW9uQnlOYW1lKG5hbWUpKVxuICAgICAgLmZpbHRlcigoZSkgPT4gZSk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApXG4gICAgICB0aHJvdyBFcnJvcihgTm8gQ29sbGVjdGlvbiBmb3IgbmFtZSAke25hbWV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBBUElzOiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgdHlwZW9mIE9EYXRhQ29sbGVjdGlvbjtcbiAgfVxuICBwdWJsaWMgc2VydmljZUJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgdmFsdWVzID0gdGhpcy5hcGlzXG4gICAgICAubWFwKChhcGkpID0+IGFwaS5maW5kU2VydmljZUJ5TmFtZShuYW1lKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIFNlcnZpY2UgZm9yIG5hbWUgJHtuYW1lfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIHR5cGVvZiBPRGF0YUVudGl0eVNlcnZpY2U7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG59XG4iXX0=
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvc2V0dGluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQVlqQyxNQUFNLE9BQU8sYUFBYTtJQUV4QixZQUFZLEdBQUcsT0FBb0I7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzFELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDO2dCQUM3QyxNQUFNLElBQUksS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUM7WUFDOUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDO2dCQUMvQyxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7U0FDaEU7UUFDRCxtREFBbUQ7UUFDbkQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxTQUFTLENBQUMsUUFFVDtRQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FB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QUM7YUFDekMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUNyQixNQUFNLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxZQUFZLENBQUMsQ0FBQztRQUN2RCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQztZQUNuQixNQUFNLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQzlELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBOEIsQ0FBQztJQUNoRCxDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBPRGF0YUFwaSB9IGZyb20gJy4vYXBpJztcbmltcG9ydCB7IE9EYXRhQ29sbGVjdGlvbiwgT0RhdGFNb2RlbCB9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7IE9EYXRhUmVxdWVzdCB9IGZyb20gJy4vcmVzb3VyY2VzJztcbmltcG9ydCB7XG4gIE9EYXRhQ2FsbGFibGUsXG4gIE9EYXRhRW50aXR5U2V0LFxuICBPRGF0YUVudW1UeXBlLFxuICBPRGF0YVN0cnVjdHVyZWRUeXBlLFxufSBmcm9tICcuL3NjaGVtYSc7XG5pbXBvcnQgeyBPRGF0YUVudGl0eVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2VudGl0eSc7XG5pbXBvcnQgeyBBcGlDb25maWcsIFBhcnNlciB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgT0RhdGFTZXR0aW5ncyB7XG4gIGFwaXM6IE9EYXRhQXBpW107XG4gIGNvbnN0cnVjdG9yKC4uLmNvbmZpZ3M6IEFwaUNvbmZpZ1tdKSB7XG4gICAgdGhpcy5hcGlzID0gY29uZmlncy5tYXAoKGNvbmZpZykgPT4gbmV3IE9EYXRhQXBpKGNvbmZpZykpO1xuICAgIGlmICh0aGlzLmFwaXMubGVuZ3RoID4gMSkge1xuICAgICAgaWYgKHRoaXMuYXBpcy5zb21lKChjKSA9PiBjLm5hbWUgPT09IHVuZGVmaW5lZCkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTXVsdGlwbGUgQVBJczogTmVlZHMgY29uZmlndXJhdGlvbiBuYW1lcycpO1xuICAgICAgaWYgKHRoaXMuYXBpcy5maWx0ZXIoKGMpID0+IGMuZGVmYXVsdCkubGVuZ3RoID4gMSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdWx0aXBsZSBBUElzOiBOZWVkcyBvbmx5IG9uZSBkZWZhdWx0IGFwaScpO1xuICAgIH1cbiAgICAvLyBJZiBub3QgZGVmYXVsdCBzZXR1cCBmaXJzdCBjb25maWcgYXMgZGVmYXVsdCBhcGlcbiAgICBpZiAodGhpcy5hcGlzLmV2ZXJ5KChjKSA9PiAhYy5kZWZhdWx0KSkgdGhpcy5hcGlzWzBdLmRlZmF1bHQgPSB0cnVlO1xuICB9XG5cbiAgY29uZmlndXJlKHNldHRpbmdzOiB7XG4gICAgcmVxdWVzdGVyPzogKHJlcXVlc3Q6IE9EYXRhUmVxdWVzdDxhbnk+KSA9PiBPYnNlcnZhYmxlPGFueT47XG4gIH0pIHtcbiAgICB0aGlzLmFwaXMuZm9yRWFjaCgoYXBpKSA9PiBhcGkuY29uZmlndXJlKHNldHRpbmdzKSk7XG4gIH1cblxuICBwdWJsaWMgZGVmYXVsdEFwaSgpIHtcbiAgICByZXR1cm4gdGhpcy5hcGlzLmZpbmQoKGMpID0+IGMuZGVmYXVsdCkgYXMgT0RhdGFBcGk7XG4gIH1cbiAgcHVibGljIGZpbmRBcGlCeU5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpcy5maW5kKChjKSA9PiBjLm5hbWUgPT09IG5hbWUpO1xuICB9XG4gIHB1YmxpYyBhcGlCeU5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYXBpID0gdGhpcy5maW5kQXBpQnlOYW1lKG5hbWUpO1xuICAgIGlmIChhcGkgPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yKGBObyBBUEkgZm9yIG5hbWU6ICR7bmFtZX1gKTtcbiAgICByZXR1cm4gYXBpO1xuICB9XG4gIHB1YmxpYyBmaW5kQXBpRm9yVHlwZXModHlwZXM6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBpcy5maW5kKChjKSA9PlxuICAgICAgYy5zY2hlbWFzLnNvbWUoKHMpID0+IHR5cGVzLnNvbWUoKHR5cGUpID0+IHMuaXNOYW1lc3BhY2VPZih0eXBlKSkpXG4gICAgKTtcbiAgfVxuICBwdWJsaWMgZmluZEFwaUZvclR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZEFwaUZvclR5cGVzKFt0eXBlXSk7XG4gIH1cbiAgcHVibGljIGFwaUZvclR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYXBpID0gdGhpcy5maW5kQXBpRm9yVHlwZSh0eXBlKTtcbiAgICBpZiAoYXBpID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcihgTm8gQVBJIGZvciB0eXBlOiAke3R5cGV9YCk7XG4gICAgcmV0dXJuIGFwaTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBDb25maWdzIHNob3J0Y3V0c1xuICBwdWJsaWMgZW51bVR5cGVGb3JUeXBlPFQ+KHR5cGU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRFbnVtVHlwZUZvclR5cGU8VD4odHlwZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkgdGhyb3cgRXJyb3IoYE5vIEVudW0gZm9yIHR5cGUgJHt0eXBlfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIE9EYXRhRW51bVR5cGU8VD47XG4gIH1cblxuICBwdWJsaWMgc3RydWN0dXJlZFR5cGVGb3JUeXBlPFQ+KHR5cGU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRTdHJ1Y3R1cmVkVHlwZUZvclR5cGU8VD4odHlwZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IEVycm9yKGBObyBTdHJ1Y3R1cmVkIGZvciB0eXBlICR7dHlwZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyBPRGF0YVN0cnVjdHVyZWRUeXBlPFQ+O1xuICB9XG5cbiAgcHVibGljIGNhbGxhYmxlRm9yVHlwZTxUPih0eXBlOiBzdHJpbmcsIGJpbmRpbmdUeXBlPzogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZENhbGxhYmxlRm9yVHlwZTxUPih0eXBlLCBiaW5kaW5nVHlwZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IEVycm9yKGBObyBDYWxsYWJsZSBmb3IgdHlwZSAke3R5cGV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBBUElzOiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgT0RhdGFDYWxsYWJsZTxUPjtcbiAgfVxuXG4gIHB1YmxpYyBlbnRpdHlTZXRGb3JUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRFbnRpdHlTZXRGb3JUeXBlKHR5cGUpKVxuICAgICAgLmZpbHRlcigoZSkgPT4gZSk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApXG4gICAgICB0aHJvdyBFcnJvcihgTm8gRW50aXR5U2V0IGZvciB0eXBlICR7dHlwZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyBPRGF0YUVudGl0eVNldDtcbiAgfVxuXG4gIHB1YmxpYyBwYXJzZXJGb3JUeXBlPFQ+KHR5cGU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLnBhcnNlckZvclR5cGU8VD4odHlwZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IEVycm9yKGBObyBQYXJzZXIgZm9yIHR5cGUgJHt0eXBlfSB3YXMgZm91bmRgKTtcbiAgICBpZiAoIXR5cGUuc3RhcnRzV2l0aCgnRWRtLicpICYmIHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyBQYXJzZXI8VD47XG4gIH1cblxuICBwdWJsaWMgbW9kZWxGb3JUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRNb2RlbEZvclR5cGUodHlwZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkgdGhyb3cgRXJyb3IoYE5vIE1vZGVsIGZvciB0eXBlICR7dHlwZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyB0eXBlb2YgT0RhdGFNb2RlbDtcbiAgfVxuXG4gIHB1YmxpYyBjb2xsZWN0aW9uRm9yVHlwZSh0eXBlOiBzdHJpbmcpIHtcbiAgICBsZXQgdmFsdWVzID0gdGhpcy5hcGlzXG4gICAgICAubWFwKChhcGkpID0+IGFwaS5maW5kQ29sbGVjdGlvbkZvclR5cGUodHlwZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IEVycm9yKGBObyBDb2xsZWN0aW9uIGZvciB0eXBlICR7dHlwZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyB0eXBlb2YgT0RhdGFDb2xsZWN0aW9uO1xuICB9XG5cbiAgcHVibGljIHNlcnZpY2VGb3JUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRTZXJ2aWNlRm9yVHlwZSh0eXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIFNlcnZpY2UgZm9yIHR5cGUgJHt0eXBlfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIHR5cGVvZiBPRGF0YUVudGl0eVNlcnZpY2U7XG4gIH1cbiAgcHVibGljIHNlcnZpY2VGb3JFbnRpdHlUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRTZXJ2aWNlRm9yRW50aXR5VHlwZSh0eXBlKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIFNlcnZpY2UgZm9yIHR5cGUgJHt0eXBlfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIHR5cGVvZiBPRGF0YUVudGl0eVNlcnZpY2U7XG4gIH1cblxuICBwdWJsaWMgZW51bVR5cGVCeU5hbWU8VD4obmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZEVudW1UeXBlQnlOYW1lPFQ+KG5hbWUpKVxuICAgICAgLmZpbHRlcigoZSkgPT4gZSk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHRocm93IEVycm9yKGBObyBFbnVtIGZvciBuYW1lICR7bmFtZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyBPRGF0YUVudW1UeXBlPFQ+O1xuICB9XG5cbiAgcHVibGljIHN0cnVjdHVyZWRUeXBlQnlOYW1lPFQ+KG5hbWU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRTdHJ1Y3R1cmVkVHlwZUJ5TmFtZTxUPihuYW1lKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIFN0cnVjdHVyZWQgZm9yIG5hbWUgJHtuYW1lfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgU3RydWN0dXJlZDogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIE9EYXRhU3RydWN0dXJlZFR5cGU8VD47XG4gIH1cblxuICBwdWJsaWMgY2FsbGFibGVCeU5hbWU8VD4obmFtZTogc3RyaW5nLCBiaW5kaW5nVHlwZT86IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRDYWxsYWJsZUJ5TmFtZTxUPihuYW1lLCBiaW5kaW5nVHlwZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IEVycm9yKGBObyBDYWxsYWJsZSBmb3IgbmFtZSAke25hbWV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBDYWxsYWJsZTogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIE9EYXRhQ2FsbGFibGU8VD47XG4gIH1cblxuICBwdWJsaWMgZW50aXR5U2V0QnlOYW1lKG5hbWU6IHN0cmluZykge1xuICAgIGxldCB2YWx1ZXMgPSB0aGlzLmFwaXNcbiAgICAgIC5tYXAoKGFwaSkgPT4gYXBpLmZpbmRFbnRpdHlTZXRCeU5hbWUobmFtZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IEVycm9yKGBObyBFbnRpdHlTZXQgZm9yIG5hbWUgJHtuYW1lfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgRW50aXR5U2V0OiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgT0RhdGFFbnRpdHlTZXQ7XG4gIH1cblxuICBwdWJsaWMgbW9kZWxCeU5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZE1vZGVsQnlOYW1lKG5hbWUpKVxuICAgICAgLmZpbHRlcigoZSkgPT4gZSk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHRocm93IEVycm9yKGBObyBNb2RlbCBmb3IgbmFtZSAke25hbWV9IHdhcyBmb3VuZGApO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSlcbiAgICAgIHRocm93IEVycm9yKCdNdWx0aXBsZSBBUElzOiBNb3JlIHRoYW4gb25lIHZhbHVlIHdhcyBmb3VuZCcpO1xuICAgIHJldHVybiB2YWx1ZXNbMF0gYXMgdHlwZW9mIE9EYXRhTW9kZWw7XG4gIH1cblxuICBwdWJsaWMgY29sbGVjdGlvbkJ5TmFtZShuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgdmFsdWVzID0gdGhpcy5hcGlzXG4gICAgICAubWFwKChhcGkpID0+IGFwaS5maW5kQ29sbGVjdGlvbkJ5TmFtZShuYW1lKSlcbiAgICAgIC5maWx0ZXIoKGUpID0+IGUpO1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKVxuICAgICAgdGhyb3cgRXJyb3IoYE5vIENvbGxlY3Rpb24gZm9yIG5hbWUgJHtuYW1lfSB3YXMgZm91bmRgKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpXG4gICAgICB0aHJvdyBFcnJvcignTXVsdGlwbGUgQVBJczogTW9yZSB0aGFuIG9uZSB2YWx1ZSB3YXMgZm91bmQnKTtcbiAgICByZXR1cm4gdmFsdWVzWzBdIGFzIHR5cGVvZiBPRGF0YUNvbGxlY3Rpb247XG4gIH1cbiAgcHVibGljIHNlcnZpY2VCeU5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgbGV0IHZhbHVlcyA9IHRoaXMuYXBpc1xuICAgICAgLm1hcCgoYXBpKSA9PiBhcGkuZmluZFNlcnZpY2VCeU5hbWUobmFtZSkpXG4gICAgICAuZmlsdGVyKChlKSA9PiBlKTtcbiAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMClcbiAgICAgIHRocm93IEVycm9yKGBObyBTZXJ2aWNlIGZvciBuYW1lICR7bmFtZX0gd2FzIGZvdW5kYCk7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPiAxKVxuICAgICAgdGhyb3cgRXJyb3IoJ011bHRpcGxlIEFQSXM6IE1vcmUgdGhhbiBvbmUgdmFsdWUgd2FzIGZvdW5kJyk7XG4gICAgcmV0dXJuIHZhbHVlc1swXSBhcyB0eXBlb2YgT0RhdGFFbnRpdHlTZXJ2aWNlO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxufVxuIl19