angular-odata 0.130.0 → 0.131.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/angular-odata.mjs +2298 -2162
- package/fesm2022/angular-odata.mjs.map +1 -1
- package/lib/api.d.ts +10 -11
- package/lib/cache/cache.d.ts +2 -2
- package/lib/cache/memory.d.ts +2 -2
- package/lib/cache/storage.d.ts +2 -2
- package/lib/loaders.d.ts +8 -8
- package/lib/metadata/csdl/csdl-annotation.d.ts +3 -3
- package/lib/metadata/csdl/csdl-entity-container.d.ts +2 -2
- package/lib/metadata/csdl/csdl-entity-set.d.ts +2 -2
- package/lib/metadata/csdl/csdl-enum-type.d.ts +3 -3
- package/lib/metadata/csdl/csdl-function-action.d.ts +4 -4
- package/lib/metadata/csdl/csdl-reference.d.ts +2 -2
- package/lib/metadata/csdl/csdl-schema.d.ts +2 -2
- package/lib/metadata/csdl/csdl-structural-property.d.ts +3 -3
- package/lib/metadata/csdl/csdl-structured-type.d.ts +3 -3
- package/lib/metadata/metadata.d.ts +2 -2
- package/lib/models/options.d.ts +2 -2
- package/lib/module.d.ts +3 -3
- package/lib/options.d.ts +3 -3
- package/lib/resources/query/expressions/apply.d.ts +1 -1
- package/lib/resources/query/expressions/compute.d.ts +1 -1
- package/lib/resources/query/expressions/count.d.ts +1 -1
- package/lib/resources/query/expressions/expand.d.ts +4 -3
- package/lib/resources/query/expressions/filter.d.ts +2 -1
- package/lib/resources/query/expressions/orderby.d.ts +2 -1
- package/lib/resources/query/expressions/search.d.ts +2 -1
- package/lib/resources/query/expressions/select.d.ts +2 -1
- package/lib/resources/query/handlers.d.ts +17 -5
- package/lib/resources/resource.d.ts +5 -5
- package/lib/resources/types/action.d.ts +2 -2
- package/lib/resources/types/entity-set.d.ts +2 -2
- package/lib/resources/types/navigation-property.d.ts +2 -2
- package/lib/resources/types/property.d.ts +2 -2
- package/lib/schema/annotation.d.ts +3 -3
- package/lib/schema/callable.d.ts +3 -3
- package/lib/schema/element.d.ts +3 -3
- package/lib/schema/entity-container.d.ts +2 -2
- package/lib/schema/entity-set.d.ts +2 -2
- package/lib/schema/enum-type.d.ts +2 -2
- package/lib/schema/parsers/callable.d.ts +4 -4
- package/lib/schema/parsers/enum-type.d.ts +3 -3
- package/lib/schema/parsers/structured-type.d.ts +4 -4
- package/lib/schema/schema.d.ts +3 -3
- package/lib/schema/singleton.d.ts +2 -2
- package/lib/schema/structured-type.d.ts +3 -3
- package/lib/services/entity.d.ts +1 -1
- package/lib/settings.d.ts +2 -2
- package/lib/types.d.ts +76 -74
- package/lib/utils/odata.d.ts +2 -2
- package/package.json +3 -5
- package/schematics/apigen/files/api-config/__fileName__.ts +4 -4
- package/esm2022/angular-odata.mjs +0 -5
- package/esm2022/lib/annotations.mjs +0 -146
- package/esm2022/lib/api.mjs +0 -439
- package/esm2022/lib/cache/cache.mjs +0 -177
- package/esm2022/lib/cache/index.mjs +0 -4
- package/esm2022/lib/cache/memory.mjs +0 -30
- package/esm2022/lib/cache/storage.mjs +0 -57
- package/esm2022/lib/client.mjs +0 -215
- package/esm2022/lib/constants.mjs +0 -95
- package/esm2022/lib/helper.mjs +0 -288
- package/esm2022/lib/index.mjs +0 -22
- package/esm2022/lib/loaders.mjs +0 -43
- package/esm2022/lib/metadata/csdl/csdl-annotation.mjs +0 -273
- package/esm2022/lib/metadata/csdl/csdl-entity-container.mjs +0 -59
- package/esm2022/lib/metadata/csdl/csdl-entity-set.mjs +0 -50
- package/esm2022/lib/metadata/csdl/csdl-enum-type.mjs +0 -74
- package/esm2022/lib/metadata/csdl/csdl-function-action.mjs +0 -204
- package/esm2022/lib/metadata/csdl/csdl-navigation-property-binding.mjs +0 -15
- package/esm2022/lib/metadata/csdl/csdl-reference.mjs +0 -76
- package/esm2022/lib/metadata/csdl/csdl-schema.mjs +0 -87
- package/esm2022/lib/metadata/csdl/csdl-singleton.mjs +0 -37
- package/esm2022/lib/metadata/csdl/csdl-structural-property.mjs +0 -145
- package/esm2022/lib/metadata/csdl/csdl-structured-type.mjs +0 -159
- package/esm2022/lib/metadata/csdl/csdl-type-definition.mjs +0 -46
- package/esm2022/lib/metadata/index.mjs +0 -3
- package/esm2022/lib/metadata/metadata.mjs +0 -41
- package/esm2022/lib/metadata/parser.mjs +0 -564
- package/esm2022/lib/models/collection.mjs +0 -816
- package/esm2022/lib/models/index.mjs +0 -4
- package/esm2022/lib/models/model.mjs +0 -577
- package/esm2022/lib/models/options.mjs +0 -1227
- package/esm2022/lib/module.mjs +0 -55
- package/esm2022/lib/options.mjs +0 -91
- package/esm2022/lib/resources/index.mjs +0 -7
- package/esm2022/lib/resources/options.mjs +0 -66
- package/esm2022/lib/resources/path/handlers.mjs +0 -81
- package/esm2022/lib/resources/path/index.mjs +0 -3
- package/esm2022/lib/resources/path/segments.mjs +0 -149
- package/esm2022/lib/resources/query/builder.mjs +0 -645
- package/esm2022/lib/resources/query/expressions/apply.mjs +0 -238
- package/esm2022/lib/resources/query/expressions/base.mjs +0 -26
- package/esm2022/lib/resources/query/expressions/compute.mjs +0 -55
- package/esm2022/lib/resources/query/expressions/count.mjs +0 -118
- package/esm2022/lib/resources/query/expressions/expand.mjs +0 -154
- package/esm2022/lib/resources/query/expressions/filter.mjs +0 -180
- package/esm2022/lib/resources/query/expressions/index.mjs +0 -10
- package/esm2022/lib/resources/query/expressions/orderby.mjs +0 -81
- package/esm2022/lib/resources/query/expressions/search.mjs +0 -144
- package/esm2022/lib/resources/query/expressions/select.mjs +0 -49
- package/esm2022/lib/resources/query/expressions/syntax.mjs +0 -770
- package/esm2022/lib/resources/query/handlers.mjs +0 -423
- package/esm2022/lib/resources/query/index.mjs +0 -5
- package/esm2022/lib/resources/query/options.mjs +0 -140
- package/esm2022/lib/resources/request.mjs +0 -210
- package/esm2022/lib/resources/resource.mjs +0 -316
- package/esm2022/lib/resources/response.mjs +0 -180
- package/esm2022/lib/resources/types/action.mjs +0 -118
- package/esm2022/lib/resources/types/batch.mjs +0 -428
- package/esm2022/lib/resources/types/count.mjs +0 -33
- package/esm2022/lib/resources/types/entity-set.mjs +0 -131
- package/esm2022/lib/resources/types/entity.mjs +0 -112
- package/esm2022/lib/resources/types/function.mjs +0 -149
- package/esm2022/lib/resources/types/index.mjs +0 -15
- package/esm2022/lib/resources/types/media.mjs +0 -44
- package/esm2022/lib/resources/types/metadata.mjs +0 -35
- package/esm2022/lib/resources/types/navigation-property.mjs +0 -246
- package/esm2022/lib/resources/types/options.mjs +0 -2
- package/esm2022/lib/resources/types/property.mjs +0 -187
- package/esm2022/lib/resources/types/reference.mjs +0 -87
- package/esm2022/lib/resources/types/singleton.mjs +0 -125
- package/esm2022/lib/resources/types/value.mjs +0 -48
- package/esm2022/lib/schema/annotation.mjs +0 -44
- package/esm2022/lib/schema/callable.mjs +0 -69
- package/esm2022/lib/schema/element.mjs +0 -70
- package/esm2022/lib/schema/entity-container.mjs +0 -13
- package/esm2022/lib/schema/entity-set.mjs +0 -11
- package/esm2022/lib/schema/enum-type.mjs +0 -69
- package/esm2022/lib/schema/index.mjs +0 -9
- package/esm2022/lib/schema/parsers/callable.mjs +0 -123
- package/esm2022/lib/schema/parsers/edm.mjs +0 -101
- package/esm2022/lib/schema/parsers/enum-type.mjs +0 -148
- package/esm2022/lib/schema/parsers/index.mjs +0 -5
- package/esm2022/lib/schema/parsers/structured-type.mjs +0 -548
- package/esm2022/lib/schema/schema.mjs +0 -52
- package/esm2022/lib/schema/singleton.mjs +0 -11
- package/esm2022/lib/schema/structured-type.mjs +0 -220
- package/esm2022/lib/services/base.mjs +0 -32
- package/esm2022/lib/services/entity-set.mjs +0 -161
- package/esm2022/lib/services/entity.mjs +0 -12
- package/esm2022/lib/services/factory.mjs +0 -39
- package/esm2022/lib/services/index.mjs +0 -5
- package/esm2022/lib/services/singleton.mjs +0 -55
- package/esm2022/lib/settings.mjs +0 -113
- package/esm2022/lib/types.mjs +0 -118
- package/esm2022/lib/utils/arraybuffers.mjs +0 -46
- package/esm2022/lib/utils/arrays.mjs +0 -10
- package/esm2022/lib/utils/dates.mjs +0 -18
- package/esm2022/lib/utils/durations.mjs +0 -40
- package/esm2022/lib/utils/enums.mjs +0 -61
- package/esm2022/lib/utils/http.mjs +0 -95
- package/esm2022/lib/utils/index.mjs +0 -10
- package/esm2022/lib/utils/objects.mjs +0 -204
- package/esm2022/lib/utils/odata.mjs +0 -22
- package/esm2022/lib/utils/strings.mjs +0 -20
- package/esm2022/lib/utils/types.mjs +0 -136
- package/esm2022/lib/utils/urls.mjs +0 -24
- package/esm2022/public-api.mjs +0 -5
|
@@ -1,423 +0,0 @@
|
|
|
1
|
-
import { QueryOption } from '../../types';
|
|
2
|
-
import { Objects, Types } from '../../utils';
|
|
3
|
-
import { alias, normalizeValue, raw, duration, binary, } from './builder';
|
|
4
|
-
import { ComputeExpression, FilterExpression, OrderByExpression, SearchExpression, ExpandExpression, SelectExpression, ApplyExpression, } from './expressions';
|
|
5
|
-
import { pathAndParamsFromQueryOptions, } from './options';
|
|
6
|
-
export class ODataQueryOptionHandler {
|
|
7
|
-
o;
|
|
8
|
-
n;
|
|
9
|
-
constructor(o, n) {
|
|
10
|
-
this.o = o;
|
|
11
|
-
this.n = n;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* The name of the managed odata query option.
|
|
15
|
-
*/
|
|
16
|
-
get name() {
|
|
17
|
-
return this.n;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Converts the managed odata query option to a json object.
|
|
21
|
-
* @returns {any}
|
|
22
|
-
*/
|
|
23
|
-
toJson() {
|
|
24
|
-
return this.o.get(this.n);
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Returns a boolean indicating if the managed odata query option is empty.
|
|
28
|
-
* @returns True if the managed odata query option is empty.
|
|
29
|
-
*/
|
|
30
|
-
empty() {
|
|
31
|
-
return Types.isEmpty(this.o.get(this.n));
|
|
32
|
-
}
|
|
33
|
-
//#region Primitive Value
|
|
34
|
-
/**
|
|
35
|
-
* Get or Set the value of the managed odata query option.
|
|
36
|
-
* @param v The value to set.
|
|
37
|
-
* @returns
|
|
38
|
-
*/
|
|
39
|
-
value(v) {
|
|
40
|
-
if (v !== undefined)
|
|
41
|
-
this.o.set(this.n, v);
|
|
42
|
-
return this.o.get(this.n);
|
|
43
|
-
}
|
|
44
|
-
//#endregion
|
|
45
|
-
//#region Array Value
|
|
46
|
-
assertArray() {
|
|
47
|
-
if (!Types.isArray(this.o.get(this.n)))
|
|
48
|
-
this.o.set(this.n, this.o.has(this.n) ? [this.o.get(this.n)] : []);
|
|
49
|
-
return this.o.get(this.n);
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Push value to the managed odata query option.
|
|
53
|
-
* @param value Value to push
|
|
54
|
-
*/
|
|
55
|
-
push(value) {
|
|
56
|
-
this.assertArray().push(value);
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* Remove value from the managed odata query option.
|
|
60
|
-
* @param value Value to remove
|
|
61
|
-
*/
|
|
62
|
-
remove(value) {
|
|
63
|
-
this.o.set(this.n, this.assertArray().filter((v) => v !== value));
|
|
64
|
-
// If only one and not is array... down to value
|
|
65
|
-
if (this.o.get(this.n).length === 1 &&
|
|
66
|
-
!Types.isArray(this.o.get(this.n)[0]))
|
|
67
|
-
this.o.set(this.n, this.o.get(this.n)[0]);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Return value at index of the managed odata query option.
|
|
71
|
-
* @param index Index of the value
|
|
72
|
-
* @returns The value
|
|
73
|
-
*/
|
|
74
|
-
at(index) {
|
|
75
|
-
return this.assertArray()[index];
|
|
76
|
-
}
|
|
77
|
-
some(predicate) {
|
|
78
|
-
return this.assertArray().some(predicate);
|
|
79
|
-
}
|
|
80
|
-
every(predicate) {
|
|
81
|
-
return this.assertArray().every(predicate);
|
|
82
|
-
}
|
|
83
|
-
find(predicate) {
|
|
84
|
-
return this.assertArray().find(predicate);
|
|
85
|
-
}
|
|
86
|
-
//#endregion
|
|
87
|
-
//#region HashMap Value
|
|
88
|
-
assertObject(create) {
|
|
89
|
-
if (!Types.isArray(this.o.get(this.n)) &&
|
|
90
|
-
Types.isPlainObject(this.o.get(this.n))) {
|
|
91
|
-
return this.o.get(this.n);
|
|
92
|
-
}
|
|
93
|
-
let arr = this.assertArray();
|
|
94
|
-
let obj = arr.find((v) => Types.isPlainObject(v));
|
|
95
|
-
if (!obj && create) {
|
|
96
|
-
obj = {};
|
|
97
|
-
arr.push(obj);
|
|
98
|
-
}
|
|
99
|
-
return obj;
|
|
100
|
-
}
|
|
101
|
-
/**
|
|
102
|
-
* Set the value for path in the managed odata query option.
|
|
103
|
-
* @param path Path for set the value
|
|
104
|
-
* @param value Value to set
|
|
105
|
-
*/
|
|
106
|
-
set(path, value) {
|
|
107
|
-
let obj = this.assertObject(true);
|
|
108
|
-
Objects.set(obj, path, value);
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Get the value for path from the managed odata query option.
|
|
112
|
-
* @param path The path from get the value
|
|
113
|
-
* @param def Default if not found
|
|
114
|
-
* @returns
|
|
115
|
-
*/
|
|
116
|
-
get(path, def) {
|
|
117
|
-
let obj = this.assertObject(false) || {};
|
|
118
|
-
return Objects.get(obj, path, def);
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Unset the value for path in the managed odata query option.
|
|
122
|
-
* @param path
|
|
123
|
-
*/
|
|
124
|
-
unset(path) {
|
|
125
|
-
let obj = this.assertObject(true);
|
|
126
|
-
Objects.unset(obj, path);
|
|
127
|
-
if (Types.isArray(this.o.get(this.n))) {
|
|
128
|
-
this.o.set(this.n, this.o.get(this.n).filter((v) => !Types.isEmpty(v)));
|
|
129
|
-
if (this.o.get(this.n).length === 1)
|
|
130
|
-
this.o.set(this.n, this.o.get(this.n)[0]);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Test if the managed odata query option has the value.
|
|
135
|
-
* @param path The path fot test if the value is set
|
|
136
|
-
* @returns Boolean indicating if the value is set
|
|
137
|
-
*/
|
|
138
|
-
has(path) {
|
|
139
|
-
let obj = this.assertObject(false) || {};
|
|
140
|
-
return Objects.has(obj, path);
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Merge values from object into the managed odata query option.
|
|
144
|
-
* @param values Object to merge
|
|
145
|
-
* @returns
|
|
146
|
-
*/
|
|
147
|
-
assign(values) {
|
|
148
|
-
let obj = this.assertObject(true);
|
|
149
|
-
return Objects.merge(obj, values);
|
|
150
|
-
}
|
|
151
|
-
//#endregion
|
|
152
|
-
/**
|
|
153
|
-
* Clear the managed odata query option.
|
|
154
|
-
*/
|
|
155
|
-
clear() {
|
|
156
|
-
this.o.delete(this.n);
|
|
157
|
-
}
|
|
158
|
-
toString({ escape, parser, } = {}) {
|
|
159
|
-
const [_, params] = pathAndParamsFromQueryOptions(new Map([[this.n, this.o.get(this.n)]]), { escape, parser });
|
|
160
|
-
return params[`$${this.n}`];
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
export class ODataQueryOptionsHandler {
|
|
164
|
-
options;
|
|
165
|
-
constructor(options) {
|
|
166
|
-
this.options = options;
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Create a raw odata value
|
|
170
|
-
* @param value The value to raw
|
|
171
|
-
* @returns The raw value
|
|
172
|
-
*/
|
|
173
|
-
raw(value) {
|
|
174
|
-
return raw(value);
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Create a new odata alias parameter
|
|
178
|
-
* @link https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#sec_ParameterAliases
|
|
179
|
-
* @param value The value of the alias
|
|
180
|
-
* @param name The name of the alias
|
|
181
|
-
* @returns The alias
|
|
182
|
-
*/
|
|
183
|
-
alias(value, name) {
|
|
184
|
-
return alias(value, name);
|
|
185
|
-
}
|
|
186
|
-
/**
|
|
187
|
-
* Create a duration odata value
|
|
188
|
-
* @param value The value to duration
|
|
189
|
-
* @returns The duration value
|
|
190
|
-
*/
|
|
191
|
-
duration(value) {
|
|
192
|
-
return duration(value);
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Create a binary odata value
|
|
196
|
-
* @param value The value to binary
|
|
197
|
-
* @returns The binary value
|
|
198
|
-
*/
|
|
199
|
-
binary(value) {
|
|
200
|
-
return binary(value);
|
|
201
|
-
}
|
|
202
|
-
/**
|
|
203
|
-
* Normalize the given value to a valid odata value
|
|
204
|
-
* @param value The value to normalize
|
|
205
|
-
* @returns The normalized value
|
|
206
|
-
*/
|
|
207
|
-
normalize(value) {
|
|
208
|
-
return normalizeValue(value);
|
|
209
|
-
}
|
|
210
|
-
select(opts) {
|
|
211
|
-
if (Types.isFunction(opts)) {
|
|
212
|
-
return this.options.expression(QueryOption.select, SelectExpression.factory(opts, this.options.expression(QueryOption.select)));
|
|
213
|
-
}
|
|
214
|
-
return this.options.option(QueryOption.select, opts);
|
|
215
|
-
}
|
|
216
|
-
expand(opts) {
|
|
217
|
-
if (Types.isFunction(opts)) {
|
|
218
|
-
return this.options.expression(QueryOption.expand, ExpandExpression.factory(opts, this.options.expression(QueryOption.expand)));
|
|
219
|
-
}
|
|
220
|
-
return this.options.option(QueryOption.expand, opts);
|
|
221
|
-
}
|
|
222
|
-
compute(opts) {
|
|
223
|
-
if (Types.isFunction(opts)) {
|
|
224
|
-
return this.options.expression(QueryOption.compute, ComputeExpression.factory(opts, this.options.expression(QueryOption.compute)));
|
|
225
|
-
}
|
|
226
|
-
return this.options.option(QueryOption.compute, opts);
|
|
227
|
-
}
|
|
228
|
-
apply(opts) {
|
|
229
|
-
if (Types.isFunction(opts)) {
|
|
230
|
-
return this.options.expression(QueryOption.apply, ApplyExpression.factory(opts, this.options.expression(QueryOption.apply)));
|
|
231
|
-
}
|
|
232
|
-
return this.options.option(QueryOption.apply, opts);
|
|
233
|
-
}
|
|
234
|
-
format(opts) {
|
|
235
|
-
return this.options.option(QueryOption.format, opts);
|
|
236
|
-
}
|
|
237
|
-
transform(opts) {
|
|
238
|
-
return this.options.option(QueryOption.transform, opts);
|
|
239
|
-
}
|
|
240
|
-
search(opts) {
|
|
241
|
-
if (Types.isFunction(opts)) {
|
|
242
|
-
return this.options.expression(QueryOption.search, SearchExpression.factory(opts, this.options.expression(QueryOption.search)));
|
|
243
|
-
}
|
|
244
|
-
return this.options.option(QueryOption.search, opts);
|
|
245
|
-
}
|
|
246
|
-
filter(opts) {
|
|
247
|
-
if (Types.isFunction(opts)) {
|
|
248
|
-
return this.options.expression(QueryOption.filter, FilterExpression.factory(opts, this.options.expression(QueryOption.filter)));
|
|
249
|
-
}
|
|
250
|
-
return this.options.option(QueryOption.filter, opts);
|
|
251
|
-
}
|
|
252
|
-
orderBy(opts) {
|
|
253
|
-
if (Types.isFunction(opts)) {
|
|
254
|
-
return this.options.option(QueryOption.orderBy, OrderByExpression.factory(opts, this.options.expression(QueryOption.orderBy)));
|
|
255
|
-
}
|
|
256
|
-
return this.options.option(QueryOption.orderBy, opts);
|
|
257
|
-
}
|
|
258
|
-
top(opts) {
|
|
259
|
-
return this.options.option(QueryOption.top, opts);
|
|
260
|
-
}
|
|
261
|
-
skip(opts) {
|
|
262
|
-
return this.options.option(QueryOption.skip, opts);
|
|
263
|
-
}
|
|
264
|
-
skiptoken(opts) {
|
|
265
|
-
return this.options.option(QueryOption.skiptoken, opts);
|
|
266
|
-
}
|
|
267
|
-
remove(...keys) {
|
|
268
|
-
this.options.remove(...keys);
|
|
269
|
-
}
|
|
270
|
-
keep(...keys) {
|
|
271
|
-
this.options.keep(...keys);
|
|
272
|
-
}
|
|
273
|
-
/**
|
|
274
|
-
* Shortcut for set $top, $skip, $skiptoken.
|
|
275
|
-
* @param param0 skip or top or skiptoken
|
|
276
|
-
*/
|
|
277
|
-
paging({ skip, skiptoken, top, } = {}) {
|
|
278
|
-
if (skiptoken !== undefined) {
|
|
279
|
-
if (skiptoken !== null) {
|
|
280
|
-
this.skiptoken(skiptoken);
|
|
281
|
-
}
|
|
282
|
-
else {
|
|
283
|
-
this.remove(QueryOption.skiptoken);
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
if (skip !== undefined) {
|
|
287
|
-
if (skip !== null) {
|
|
288
|
-
this.skip(skip);
|
|
289
|
-
}
|
|
290
|
-
else {
|
|
291
|
-
this.remove(QueryOption.skip);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
if (top !== undefined) {
|
|
295
|
-
if (top !== null) {
|
|
296
|
-
this.top(top);
|
|
297
|
-
}
|
|
298
|
-
else {
|
|
299
|
-
this.remove(QueryOption.top);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
/**
|
|
304
|
-
* Shortcut for clear pagination by unset $top, $skip, $skiptoken.
|
|
305
|
-
*/
|
|
306
|
-
removePaging() {
|
|
307
|
-
this.remove(QueryOption.skip, QueryOption.top, QueryOption.skiptoken);
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* Shortcut for clear query.
|
|
311
|
-
*/
|
|
312
|
-
clear() {
|
|
313
|
-
this.options.clear();
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* Store the query options from the current query.
|
|
317
|
-
*/
|
|
318
|
-
store() {
|
|
319
|
-
return this.options.toQueryArguments();
|
|
320
|
-
}
|
|
321
|
-
/**
|
|
322
|
-
* Restore the given query options to the current query.
|
|
323
|
-
* @param options The query to be applied.
|
|
324
|
-
*/
|
|
325
|
-
restore(options) {
|
|
326
|
-
if (options.select !== undefined) {
|
|
327
|
-
if (options.select instanceof SelectExpression) {
|
|
328
|
-
this.options.expression(QueryOption.select, options.select);
|
|
329
|
-
}
|
|
330
|
-
else if (options.select !== null) {
|
|
331
|
-
this.options.option(QueryOption.select, options.select);
|
|
332
|
-
}
|
|
333
|
-
else {
|
|
334
|
-
this.options.remove(QueryOption.select);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
if (options.expand !== undefined) {
|
|
338
|
-
if (options.expand instanceof ExpandExpression) {
|
|
339
|
-
this.options.expression(QueryOption.expand, options.expand);
|
|
340
|
-
}
|
|
341
|
-
else if (options.expand !== null) {
|
|
342
|
-
this.options.option(QueryOption.expand, options.expand);
|
|
343
|
-
}
|
|
344
|
-
else {
|
|
345
|
-
this.options.remove(QueryOption.expand);
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
if (options.compute !== undefined) {
|
|
349
|
-
if (options.compute instanceof ComputeExpression) {
|
|
350
|
-
this.options.expression(QueryOption.compute, options.compute);
|
|
351
|
-
}
|
|
352
|
-
else if (options.compute !== null) {
|
|
353
|
-
this.options.option(QueryOption.compute, options.compute);
|
|
354
|
-
}
|
|
355
|
-
else {
|
|
356
|
-
this.options.remove(QueryOption.compute);
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
if (options.apply !== undefined) {
|
|
360
|
-
if (options.apply instanceof ApplyExpression) {
|
|
361
|
-
this.options.expression(QueryOption.apply, options.apply);
|
|
362
|
-
}
|
|
363
|
-
else if (options.apply !== null) {
|
|
364
|
-
this.options.option(QueryOption.apply, options.apply);
|
|
365
|
-
}
|
|
366
|
-
else {
|
|
367
|
-
this.options.remove(QueryOption.apply);
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
if (options.transform !== undefined) {
|
|
371
|
-
if (options.transform !== null) {
|
|
372
|
-
this.options.option(QueryOption.transform, options.transform);
|
|
373
|
-
}
|
|
374
|
-
else {
|
|
375
|
-
this.options.remove(QueryOption.transform);
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
if (options.search !== undefined) {
|
|
379
|
-
if (options.search instanceof SearchExpression) {
|
|
380
|
-
this.options.expression(QueryOption.search, options.search);
|
|
381
|
-
}
|
|
382
|
-
else if (options.search !== null) {
|
|
383
|
-
this.options.option(QueryOption.search, options.search);
|
|
384
|
-
}
|
|
385
|
-
else {
|
|
386
|
-
this.options.remove(QueryOption.search);
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
if (options.filter !== undefined) {
|
|
390
|
-
if (options.filter instanceof FilterExpression) {
|
|
391
|
-
this.options.expression(QueryOption.filter, options.filter);
|
|
392
|
-
}
|
|
393
|
-
else if (options.filter !== null) {
|
|
394
|
-
this.options.option(QueryOption.filter, options.filter);
|
|
395
|
-
}
|
|
396
|
-
else {
|
|
397
|
-
this.options.remove(QueryOption.filter);
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
if (options.orderBy !== undefined) {
|
|
401
|
-
if (options.orderBy instanceof OrderByExpression) {
|
|
402
|
-
this.options.expression(QueryOption.orderBy, options.orderBy);
|
|
403
|
-
}
|
|
404
|
-
else if (options.orderBy !== null) {
|
|
405
|
-
this.options.option(QueryOption.orderBy, options.orderBy);
|
|
406
|
-
}
|
|
407
|
-
else {
|
|
408
|
-
this.options.remove(QueryOption.orderBy);
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
this.paging(options);
|
|
412
|
-
}
|
|
413
|
-
toJson() {
|
|
414
|
-
return this.options.toJson();
|
|
415
|
-
}
|
|
416
|
-
fromJson(json) {
|
|
417
|
-
this.options.fromJson(json);
|
|
418
|
-
}
|
|
419
|
-
toString({ escape, parser, } = {}) {
|
|
420
|
-
return this.options.toString({ escape, parser });
|
|
421
|
-
}
|
|
422
|
-
}
|
|
423
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3F1ZXJ5L2hhbmRsZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBVSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDN0MsT0FBTyxFQUNMLEtBQUssRUFNTCxjQUFjLEVBQ2QsR0FBRyxFQUNILFFBQVEsRUFDUixNQUFNLEdBQ1AsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUNMLGlCQUFpQixFQUVqQixnQkFBZ0IsRUFFaEIsaUJBQWlCLEVBRWpCLGdCQUFnQixFQUVoQixnQkFBZ0IsRUFFaEIsZ0JBQWdCLEVBRWhCLGVBQWUsR0FFaEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUdMLDZCQUE2QixHQUM5QixNQUFNLFdBQVcsQ0FBQztBQUVuQixNQUFNLE9BQU8sdUJBQXVCO0lBRXhCO0lBQ0E7SUFGVixZQUNVLENBQXdCLEVBQ3hCLENBQWM7UUFEZCxNQUFDLEdBQUQsQ0FBQyxDQUF1QjtRQUN4QixNQUFDLEdBQUQsQ0FBQyxDQUFhO0lBQ3JCLENBQUM7SUFFSjs7T0FFRztJQUNILElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLO1FBQ0gsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFD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V0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNDLENBQUM7UUFDSCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQsUUFBUSxDQUFDLElBQTZCO1FBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxRQUFRLENBQUMsRUFDUCxNQUFNLEVBQ04sTUFBTSxNQUNzQyxFQUFFO1FBQzlDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPRGF0YVN0cnVjdHVyZWRUeXBlIH0gZnJvbSAnLi4vLi4vc2NoZW1hJztcbmltcG9ydCB7IFBhcnNlciwgUXVlcnlPcHRpb24gfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBPYmplY3RzLCBUeXBlcyB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7XG4gIGFsaWFzLFxuICBFeHBhbmQsXG4gIEZpbHRlcixcbiAgT3JkZXJCeSxcbiAgU2VsZWN0LFxuICBUcmFuc2Zvcm0sXG4gIG5vcm1hbGl6ZVZhbHVlLFxuICByYXcsXG4gIGR1cmF0aW9uLFxuICBiaW5hcnksXG59IGZyb20gJy4vYnVpbGRlcic7XG5pbXBvcnQge1xuICBDb21wdXRlRXhwcmVzc2lvbixcbiAgQ29tcHV0ZUV4cHJlc3Npb25CdWlsZGVyLFxuICBGaWx0ZXJFeHByZXNzaW9uLFxuICBGaWx0ZXJFeHByZXNzaW9uQnVpbGRlcixcbiAgT3JkZXJCeUV4cHJlc3Npb24sXG4gIE9yZGVyQnlFeHByZXNzaW9uQnVpbGRlcixcbiAgU2VhcmNoRXhwcmVzc2lvbixcbiAgU2VhcmNoRXhwcmVzc2lvbkJ1aWxkZXIsXG4gIEV4cGFuZEV4cHJlc3Npb24sXG4gIEV4cGFuZEV4cHJlc3Npb25CdWlsZGVyLFxuICBTZWxlY3RFeHByZXNzaW9uLFxuICBTZWxlY3RFeHByZXNzaW9uQnVpbGRlcixcbiAgQXBwbHlFeHByZXNzaW9uLFxuICBBcHBseUV4cHJlc3Npb25CdWlsZGVyLFxufSBmcm9tICcuL2V4cHJlc3Npb25zJztcbmltcG9ydCB7XG4gIE9EYXRhUXVlcnlBcmd1bWVudHMsXG4gIE9EYXRhUXVlcnlPcHRpb25zLFxuICBwYXRoQW5kUGFyYW1zRnJvbVF1ZXJ5T3B0aW9ucyxcbn0gZnJvbSAnLi9vcHRpb25zJztcblxuZXhwb3J0IGNsYXNzIE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBvOiBNYXA8UXVlcnlPcHRpb24sIGFueT4sXG4gICAgcHJpdmF0ZSBuOiBRdWVyeU9wdGlvbixcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24uXG4gICAqL1xuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbiB0byBhIGpzb24gb2JqZWN0LlxuICAgKiBAcmV0dXJucyB7YW55fVxuICAgKi9cbiAgdG9Kc29uKCkge1xuICAgIHJldHVybiB0aGlzLm8uZ2V0KHRoaXMubik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24gaXMgZW1wdHkuXG4gICAqIEByZXR1cm5zIFRydWUgaWYgdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uIGlzIGVtcHR5LlxuICAgKi9cbiAgZW1wdHkoKSB7XG4gICAgcmV0dXJuIFR5cGVzLmlzRW1wdHkodGhpcy5vLmdldCh0aGlzLm4pKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBQcmltaXRpdmUgVmFsdWVcbiAgLyoqXG4gICAqIEdldCBvciBTZXQgdGhlIHZhbHVlIG9mIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHYgVGhlIHZhbHVlIHRvIHNldC5cbiAgICogQHJldHVybnNcbiAgICovXG4gIHZhbHVlKHY/OiBhbnkpIHtcbiAgICBpZiAodiAhPT0gdW5kZWZpbmVkKSB0aGlzLm8uc2V0KHRoaXMubiwgdik7XG4gICAgcmV0dXJuIHRoaXMuby5nZXQodGhpcy5uKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gQXJyYXkgVmFsdWVcbiAgcHJpdmF0ZSBhc3NlcnRBcnJheSgpOiBhbnlbXSB7XG4gICAgaWYgKCFUeXBlcy5pc0FycmF5KHRoaXMuby5nZXQodGhpcy5uKSkpXG4gICAgICB0aGlzLm8uc2V0KHRoaXMubiwgdGhpcy5vLmhhcyh0aGlzLm4pID8gW3RoaXMuby5nZXQodGhpcy5uKV0gOiBbXSk7XG4gICAgcmV0dXJuIHRoaXMuby5nZXQodGhpcy5uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdXNoIHZhbHVlIHRvIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIHB1c2hcbiAgICovXG4gIHB1c2godmFsdWU6IGFueSkge1xuICAgIHRoaXMuYXNzZXJ0QXJyYXkoKS5wdXNoKHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdmFsdWUgZnJvbSB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24uXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byByZW1vdmVcbiAgICovXG4gIHJlbW92ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5vLnNldChcbiAgICAgIHRoaXMubixcbiAgICAgIHRoaXMuYXNzZXJ0QXJyYXkoKS5maWx0ZXIoKHYpID0+IHYgIT09IHZhbHVlKSxcbiAgICApO1xuICAgIC8vIElmIG9ubHkgb25lIGFuZCBub3QgaXMgYXJyYXkuLi4gZG93biB0byB2YWx1ZVxuICAgIGlmIChcbiAgICAgIHRoaXMuby5nZXQodGhpcy5uKS5sZW5ndGggPT09IDEgJiZcbiAgICAgICFUeXBlcy5pc0FycmF5KHRoaXMuby5nZXQodGhpcy5uKVswXSlcbiAgICApXG4gICAgICB0aGlzLm8uc2V0KHRoaXMubiwgdGhpcy5vLmdldCh0aGlzLm4pWzBdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdmFsdWUgYXQgaW5kZXggb2YgdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uLlxuICAgKiBAcGFyYW0gaW5kZXggSW5kZXggb2YgdGhlIHZhbHVlXG4gICAqIEByZXR1cm5zIFRoZSB2YWx1ZVxuICAgKi9cbiAgYXQoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmFzc2VydEFycmF5KClbaW5kZXhdO1xuICB9XG5cbiAgc29tZShwcmVkaWNhdGU6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0QXJyYXkoKS5zb21lKHByZWRpY2F0ZSk7XG4gIH1cblxuICBldmVyeShwcmVkaWNhdGU6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0QXJyYXkoKS5ldmVyeShwcmVkaWNhdGUpO1xuICB9XG5cbiAgZmluZChwcmVkaWNhdGU6ICh2YWx1ZTogYW55KSA9PiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNzZXJ0QXJyYXkoKS5maW5kKHByZWRpY2F0ZSk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIEhhc2hNYXAgVmFsdWVcbiAgcHJpdmF0ZSBhc3NlcnRPYmplY3QoY3JlYXRlOiBib29sZWFuKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIGlmIChcbiAgICAgICFUeXBlcy5pc0FycmF5KHRoaXMuby5nZXQodGhpcy5uKSkgJiZcbiAgICAgIFR5cGVzLmlzUGxhaW5PYmplY3QodGhpcy5vLmdldCh0aGlzLm4pKVxuICAgICkge1xuICAgICAgcmV0dXJuIHRoaXMuby5nZXQodGhpcy5uKTtcbiAgICB9XG4gICAgbGV0IGFyciA9IHRoaXMuYXNzZXJ0QXJyYXkoKTtcbiAgICBsZXQgb2JqID0gYXJyLmZpbmQoKHYpID0+IFR5cGVzLmlzUGxhaW5PYmplY3QodikpO1xuICAgIGlmICghb2JqICYmIGNyZWF0ZSkge1xuICAgICAgb2JqID0ge307XG4gICAgICBhcnIucHVzaChvYmopO1xuICAgIH1cbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgdmFsdWUgZm9yIHBhdGggaW4gdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uLlxuICAgKiBAcGFyYW0gcGF0aCBQYXRoIGZvciBzZXQgdGhlIHZhbHVlXG4gICAqIEBwYXJhbSB2YWx1ZSBWYWx1ZSB0byBzZXRcbiAgICovXG4gIHNldChwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICBsZXQgb2JqID0gdGhpcy5hc3NlcnRPYmplY3QodHJ1ZSk7XG4gICAgT2JqZWN0cy5zZXQob2JqLCBwYXRoLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB2YWx1ZSBmb3IgcGF0aCBmcm9tIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHBhdGggVGhlIHBhdGggZnJvbSBnZXQgdGhlIHZhbHVlXG4gICAqIEBwYXJhbSBkZWYgRGVmYXVsdCBpZiBub3QgZm91bmRcbiAgICogQHJldHVybnNcbiAgICovXG4gIGdldChwYXRoOiBzdHJpbmcsIGRlZj86IGFueSk6IGFueSB7XG4gICAgbGV0IG9iaiA9IHRoaXMuYXNzZXJ0T2JqZWN0KGZhbHNlKSB8fCB7fTtcbiAgICByZXR1cm4gT2JqZWN0cy5nZXQob2JqLCBwYXRoLCBkZWYpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVuc2V0IHRoZSB2YWx1ZSBmb3IgcGF0aCBpbiB0aGUgbWFuYWdlZCBvZGF0YSBxdWVyeSBvcHRpb24uXG4gICAqIEBwYXJhbSBwYXRoXG4gICAqL1xuICB1bnNldChwYXRoOiBzdHJpbmcpIHtcbiAgICBsZXQgb2JqID0gdGhpcy5hc3NlcnRPYmplY3QodHJ1ZSk7XG4gICAgT2JqZWN0cy51bnNldChvYmosIHBhdGgpO1xuXG4gICAgaWYgKFR5cGVzLmlzQXJyYXkodGhpcy5vLmdldCh0aGlzLm4pKSkge1xuICAgICAgdGhpcy5vLnNldChcbiAgICAgICAgdGhpcy5uLFxuICAgICAgICB0aGlzLm8uZ2V0KHRoaXMubikuZmlsdGVyKCh2OiBhbnkpID0+ICFUeXBlcy5pc0VtcHR5KHYpKSxcbiAgICAgICk7XG4gICAgICBpZiAodGhpcy5vLmdldCh0aGlzLm4pLmxlbmd0aCA9PT0gMSlcbiAgICAgICAgdGhpcy5vLnNldCh0aGlzLm4sIHRoaXMuby5nZXQodGhpcy5uKVswXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRlc3QgaWYgdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uIGhhcyB0aGUgdmFsdWUuXG4gICAqIEBwYXJhbSBwYXRoIFRoZSBwYXRoIGZvdCB0ZXN0IGlmIHRoZSB2YWx1ZSBpcyBzZXRcbiAgICogQHJldHVybnMgQm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSB2YWx1ZSBpcyBzZXRcbiAgICovXG4gIGhhcyhwYXRoOiBzdHJpbmcpIHtcbiAgICBsZXQgb2JqID0gdGhpcy5hc3NlcnRPYmplY3QoZmFsc2UpIHx8IHt9O1xuICAgIHJldHVybiBPYmplY3RzLmhhcyhvYmosIHBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIHZhbHVlcyBmcm9tIG9iamVjdCBpbnRvIHRoZSBtYW5hZ2VkIG9kYXRhIHF1ZXJ5IG9wdGlvbi5cbiAgICogQHBhcmFtIHZhbHVlcyBPYmplY3QgdG8gbWVyZ2VcbiAgICogQHJldHVybnNcbiAgICovXG4gIGFzc2lnbih2YWx1ZXM6IHsgW2F0dHI6IHN0cmluZ106IGFueSB9KSB7XG4gICAgbGV0IG9iaiA9IHRoaXMuYXNzZXJ0T2JqZWN0KHRydWUpO1xuICAgIHJldHVybiBPYmplY3RzLm1lcmdlKG9iaiwgdmFsdWVzKTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIG1hbmFnZWQgb2RhdGEgcXVlcnkgb3B0aW9uLlxuICAgKi9cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5vLmRlbGV0ZSh0aGlzLm4pO1xuICB9XG4gIHRvU3RyaW5nKHtcbiAgICBlc2NhcGUsXG4gICAgcGFyc2VyLFxuICB9OiB7IGVzY2FwZT86IGJvb2xlYW47IHBhcnNlcj86IFBhcnNlcjxUPiB9ID0ge30pOiBzdHJpbmcge1xuICAgIGNvbnN0IFtfLCBwYXJhbXNdID0gcGF0aEFuZFBhcmFtc0Zyb21RdWVyeU9wdGlvbnMoXG4gICAgICBuZXcgTWFwPFF1ZXJ5T3B0aW9uLCBhbnk+KFtbdGhpcy5uLCB0aGlzLm8uZ2V0KHRoaXMubildXSksXG4gICAgICB7IGVzY2FwZSwgcGFyc2VyIH0sXG4gICAgKTtcbiAgICByZXR1cm4gcGFyYW1zW2AkJHt0aGlzLm59YF07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE9EYXRhUXVlcnlPcHRpb25zSGFuZGxlcjxUPiB7XG4gIGNvbnN0cnVjdG9yKHByb3RlY3RlZCBvcHRpb25zOiBPRGF0YVF1ZXJ5T3B0aW9uczxUPikge31cblxuICAvKipcbiAgICogQ3JlYXRlIGEgcmF3IG9kYXRhIHZhbHVlXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gcmF3XG4gICAqIEByZXR1cm5zIFRoZSByYXcgdmFsdWVcbiAgICovXG4gIHJhdyh2YWx1ZTogYW55KSB7XG4gICAgcmV0dXJuIHJhdyh2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IG9kYXRhIGFsaWFzIHBhcmFtZXRlclxuICAgKiBAbGluayBodHRwczovL2RvY3Mub2FzaXMtb3Blbi5vcmcvb2RhdGEvb2RhdGEvdjQuMDEvb2RhdGEtdjQuMDEtcGFydDItdXJsLWNvbnZlbnRpb25zLmh0bWwjc2VjX1BhcmFtZXRlckFsaWFzZXNcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSBvZiB0aGUgYWxpYXNcbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGFsaWFzXG4gICAqIEByZXR1cm5zIFRoZSBhbGlhc1xuICAgKi9cbiAgYWxpYXModmFsdWU6IGFueSwgbmFtZT86IHN0cmluZykge1xuICAgIHJldHVybiBhbGlhcyh2YWx1ZSwgbmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgZHVyYXRpb24gb2RhdGEgdmFsdWVcbiAgICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byBkdXJhdGlvblxuICAgKiBAcmV0dXJucyBUaGUgZHVyYXRpb24gdmFsdWVcbiAgICovXG4gIGR1cmF0aW9uKHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gZHVyYXRpb24odmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGJpbmFyeSBvZGF0YSB2YWx1ZVxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGJpbmFyeVxuICAgKiBAcmV0dXJucyBUaGUgYmluYXJ5IHZhbHVlXG4gICAqL1xuICBiaW5hcnkodmFsdWU6IGFueSkge1xuICAgIHJldHVybiBiaW5hcnkodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZSB0aGUgZ2l2ZW4gdmFsdWUgdG8gYSB2YWxpZCBvZGF0YSB2YWx1ZVxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIG5vcm1hbGl6ZVxuICAgKiBAcmV0dXJucyBUaGUgbm9ybWFsaXplZCB2YWx1ZVxuICAgKi9cbiAgbm9ybWFsaXplKHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gbm9ybWFsaXplVmFsdWUodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCByZXR1cm4gYSBoYW5kbGVyIGZvciBtb2RpZnlpbmcgdGhlICRzZWxlY3Qgb3B0aW9uLlxuICAgKiBJZiBvcHRzIGlzIGdpdmVuIHRoZW4gc2V0IHRlIHZhbHVlIGFzIG5ldyB2YWx1ZSBmb3IgJHNlbGVjdC5cbiAgICogQHBhcmFtIG9wdHMgU2VsZWN0PFQ+IHZhbHVlIG9yIGJ1aWxkZXIgZnVuY3Rpb24gZm9yIFNlbGVjdEV4cHJlc3Npb248VD5cbiAgICovXG4gIHNlbGVjdChcbiAgICBvcHRzOiAoXG4gICAgICBidWlsZGVyOiBTZWxlY3RFeHByZXNzaW9uQnVpbGRlcjxUPixcbiAgICAgIGN1cnJlbnQ/OiBTZWxlY3RFeHByZXNzaW9uPFQ+LFxuICAgICkgPT4gU2VsZWN0RXhwcmVzc2lvbjxUPixcbiAgKTogU2VsZWN0RXhwcmVzc2lvbjxUPjtcbiAgc2VsZWN0KG9wdHM6IFNlbGVjdDxUPik6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBzZWxlY3QoKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHNlbGVjdChvcHRzPzogYW55KTogYW55IHtcbiAgICBpZiAoVHlwZXMuaXNGdW5jdGlvbihvcHRzKSkge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFxuICAgICAgICBRdWVyeU9wdGlvbi5zZWxlY3QsXG4gICAgICAgIFNlbGVjdEV4cHJlc3Npb24uZmFjdG9yeShcbiAgICAgICAgICBvcHRzLFxuICAgICAgICAgIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFF1ZXJ5T3B0aW9uLnNlbGVjdCksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxTZWxlY3Q8VD4+KFF1ZXJ5T3B0aW9uLnNlbGVjdCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJGV4cGFuZCBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkZXhwYW5kLlxuICAgKiBAcGFyYW0gb3B0cyBFeHBhbmQ8VD4gdmFsdWUgb3IgYnVpbGRlciBmdW5jdGlvbiBmb3IgRXhwYW5kRXhwcmVzc2lvbjxUPlxuICAgKi9cbiAgZXhwYW5kKFxuICAgIG9wdHM6IChcbiAgICAgIGJ1aWxkZXI6IEV4cGFuZEV4cHJlc3Npb25CdWlsZGVyPFQ+LFxuICAgICAgY3VycmVudD86IEV4cGFuZEV4cHJlc3Npb248VD4sXG4gICAgKSA9PiBFeHBhbmRFeHByZXNzaW9uPFQ+LFxuICApOiBFeHBhbmRFeHByZXNzaW9uPFQ+O1xuICBleHBhbmQob3B0czogRXhwYW5kPFQ+KTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIGV4cGFuZCgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgZXhwYW5kKG9wdHM/OiBhbnkpOiBhbnkge1xuICAgIGlmIChUeXBlcy5pc0Z1bmN0aW9uKG9wdHMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgIFF1ZXJ5T3B0aW9uLmV4cGFuZCxcbiAgICAgICAgRXhwYW5kRXhwcmVzc2lvbi5mYWN0b3J5KFxuICAgICAgICAgIG9wdHMsXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oUXVlcnlPcHRpb24uZXhwYW5kKSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPEV4cGFuZDxUPj4oUXVlcnlPcHRpb24uZXhwYW5kLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgaGFuZGxlciBmb3IgbW9kaWZ5aW5nIHRoZSAkY29tcHV0ZSBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkY29tcHV0ZS5cbiAgICogQGxpbmsgaHR0cHM6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL29kYXRhL29kYXRhL3Y0LjAxL29kYXRhLXY0LjAxLXBhcnQyLXVybC1jb252ZW50aW9ucy5odG1sI3NlY19TeXN0ZW1RdWVyeU9wdGlvbmNvbXB1dGVcbiAgICogQHBhcmFtIG9wdHMgc3RyaW5nIHZhbHVlIG9yIGJ1aWxkZXIgZnVuY3Rpb24gZm9yIENvbXB1dGVFeHByZXNzaW9uPFQ+XG4gICAqL1xuICBjb21wdXRlKFxuICAgIG9wdHM6IChcbiAgICAgIGJ1aWxkZXI6IENvbXB1dGVFeHByZXNzaW9uQnVpbGRlcjxUPixcbiAgICAgIGN1cnJlbnQ/OiBDb21wdXRlRXhwcmVzc2lvbjxUPixcbiAgICApID0+IENvbXB1dGVFeHByZXNzaW9uPFQ+LFxuICApOiBDb21wdXRlRXhwcmVzc2lvbjxUPjtcbiAgY29tcHV0ZShvcHRzOiBzdHJpbmcpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgY29tcHV0ZSgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgY29tcHV0ZShvcHRzPzogYW55KTogYW55IHtcbiAgICBpZiAoVHlwZXMuaXNGdW5jdGlvbihvcHRzKSkge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFxuICAgICAgICBRdWVyeU9wdGlvbi5jb21wdXRlLFxuICAgICAgICBDb21wdXRlRXhwcmVzc2lvbi5mYWN0b3J5KFxuICAgICAgICAgIG9wdHMsXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oUXVlcnlPcHRpb24uY29tcHV0ZSksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxzdHJpbmc+KFF1ZXJ5T3B0aW9uLmNvbXB1dGUsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCByZXR1cm4gYSBoYW5kbGVyIGZvciBtb2RpZnlpbmcgdGhlICRhcHBseSBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkY29tcHV0ZS5cbiAgICogQGxpbmsgaHR0cDovL2RvY3Mub2FzaXMtb3Blbi5vcmcvb2RhdGEvb2RhdGEtZGF0YS1hZ2dyZWdhdGlvbi1leHQvdjQuMC9jczAyL29kYXRhLWRhdGEtYWdncmVnYXRpb24tZXh0LXY0LjAtY3MwMi5odG1sXG4gICAqIEBwYXJhbSBvcHRzIHN0cmluZyB2YWx1ZSBvciBidWlsZGVyIGZ1bmN0aW9uIGZvciBBcHBseUV4cHJlc3Npb248VD5cbiAgICovXG4gIGFwcGx5KFxuICAgIG9wdHM6IChcbiAgICAgIGJ1aWxkZXI6IEFwcGx5RXhwcmVzc2lvbkJ1aWxkZXI8VD4sXG4gICAgICBjdXJyZW50PzogQXBwbHlFeHByZXNzaW9uPFQ+LFxuICAgICkgPT4gQXBwbHlFeHByZXNzaW9uPFQ+LFxuICApOiBBcHBseUV4cHJlc3Npb248VD47XG4gIGFwcGx5KG9wdHM6IHN0cmluZyk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBhcHBseSgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgYXBwbHkob3B0cz86IGFueSk6IGFueSB7XG4gICAgaWYgKFR5cGVzLmlzRnVuY3Rpb24ob3B0cykpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihcbiAgICAgICAgUXVlcnlPcHRpb24uYXBwbHksXG4gICAgICAgIEFwcGx5RXhwcmVzc2lvbi5mYWN0b3J5KFxuICAgICAgICAgIG9wdHMsXG4gICAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oUXVlcnlPcHRpb24uYXBwbHkpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5vcHRpb248c3RyaW5nPihRdWVyeU9wdGlvbi5hcHBseSwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJGZvcm1hdCBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkZm9ybWF0LlxuICAgKiBAbGluayBodHRwczovL2RvY3Mub2FzaXMtb3Blbi5vcmcvb2RhdGEvb2RhdGEvdjQuMDEvb2RhdGEtdjQuMDEtcGFydDItdXJsLWNvbnZlbnRpb25zLmh0bWwjc2VjX1N5c3RlbVF1ZXJ5T3B0aW9uZm9ybWF0XG4gICAqIEBwYXJhbSBvcHRzIHN0cmluZyB2YWx1ZSBmb3IgZm9ybWF0XG4gICAqL1xuICBmb3JtYXQob3B0czogc3RyaW5nKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIGZvcm1hdCgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgZm9ybWF0KG9wdHM/OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPHN0cmluZz4oUXVlcnlPcHRpb24uZm9ybWF0LCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgaGFuZGxlciBmb3IgbW9kaWZ5aW5nIHRoZSAkdHJhbnNmb3JtIG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICR0cmFuc2Zvcm0uXG4gICAqIEBwYXJhbSBvcHRzIHN0cmluZyB2YWx1ZSBmb3IgdHJhbnNmb3JtXG4gICAqL1xuICB0cmFuc2Zvcm0ob3B0czogVHJhbnNmb3JtPFQ+KTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHRyYW5zZm9ybSgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgdHJhbnNmb3JtKG9wdHM/OiBUcmFuc2Zvcm08VD4pOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPFRyYW5zZm9ybTxUPj4oUXVlcnlPcHRpb24udHJhbnNmb3JtLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgaGFuZGxlciBmb3IgbW9kaWZ5aW5nIHRoZSAkc2VhcmNoIG9wdGlvbi5cbiAgICogSWYgb3B0cyBpcyBnaXZlbiB0aGVuIHNldCB0ZSB2YWx1ZSBhcyBuZXcgdmFsdWUgZm9yICRzZWFyY2guXG4gICAqIEBwYXJhbSBvcHRzIHN0cmluZyB2YWx1ZSBvciBidWlsZGVyIGZ1bmN0aW9uIGZvciBTZWFyY2hFeHByZXNzaW9uPFQ+XG4gICAqL1xuICBzZWFyY2goXG4gICAgb3B0czogKFxuICAgICAgYnVpbGRlcjogU2VhcmNoRXhwcmVzc2lvbkJ1aWxkZXI8VD4sXG4gICAgICBjdXJyZW50PzogU2VhcmNoRXhwcmVzc2lvbjxUPixcbiAgICApID0+IFNlYXJjaEV4cHJlc3Npb248VD4sXG4gICk6IFNlYXJjaEV4cHJlc3Npb248VD47XG4gIHNlYXJjaChvcHRzOiBzdHJpbmcpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2VhcmNoKCk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBzZWFyY2gob3B0cz86IGFueSk6IGFueSB7XG4gICAgaWYgKFR5cGVzLmlzRnVuY3Rpb24ob3B0cykpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihcbiAgICAgICAgUXVlcnlPcHRpb24uc2VhcmNoLFxuICAgICAgICBTZWFyY2hFeHByZXNzaW9uLmZhY3RvcnkoXG4gICAgICAgICAgb3B0cyxcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihRdWVyeU9wdGlvbi5zZWFyY2gpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5vcHRpb248c3RyaW5nPihRdWVyeU9wdGlvbi5zZWFyY2gsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCByZXR1cm4gYSBoYW5kbGVyIGZvciBtb2RpZnlpbmcgdGhlICRmaWx0ZXIgb3B0aW9uLlxuICAgKiBJZiBvcHRzIGlzIGdpdmVuIHRoZW4gc2V0IHRlIHZhbHVlIGFzIG5ldyB2YWx1ZSBmb3IgJGZpbHRlci5cbiAgICogQHBhcmFtIG9wdHMgRmlsdGVyPFQ+IHZhbHVlIG9yIGJ1aWxkZXIgZnVuY3Rpb24gZm9yIEZpbHRlckV4cHJlc3Npb248VD5cbiAgICovXG4gIGZpbHRlcihcbiAgICBvcHRzOiAoXG4gICAgICBidWlsZGVyOiBGaWx0ZXJFeHByZXNzaW9uQnVpbGRlcjxUPixcbiAgICAgIGN1cnJlbnQ/OiBGaWx0ZXJFeHByZXNzaW9uPFQ+LFxuICAgICkgPT4gRmlsdGVyRXhwcmVzc2lvbjxUPixcbiAgKTogRmlsdGVyRXhwcmVzc2lvbjxUPjtcbiAgZmlsdGVyKG9wdHM6IEZpbHRlcjxUPik6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBmaWx0ZXIoKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIGZpbHRlcihvcHRzPzogYW55KTogYW55IHtcbiAgICBpZiAoVHlwZXMuaXNGdW5jdGlvbihvcHRzKSkge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFxuICAgICAgICBRdWVyeU9wdGlvbi5maWx0ZXIsXG4gICAgICAgIEZpbHRlckV4cHJlc3Npb24uZmFjdG9yeShcbiAgICAgICAgICBvcHRzLFxuICAgICAgICAgIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFF1ZXJ5T3B0aW9uLmZpbHRlciksXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxGaWx0ZXI8VD4+KFF1ZXJ5T3B0aW9uLmZpbHRlciwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJG9yZGVyYnkgb3B0aW9uLlxuICAgKiBJZiBvcHRzIGlzIGdpdmVuIHRoZW4gc2V0IHRlIHZhbHVlIGFzIG5ldyB2YWx1ZSBmb3IgJG9yZGVyYnkuXG4gICAqIEBwYXJhbSBvcHRzIE9yZGVyQnk8VD4gdmFsdWUgb3IgYnVpbGRlciBmdW5jdGlvbiBmb3IgT3JkZXJCeUV4cHJlc3Npb248VD5cbiAgICovXG4gIG9yZGVyQnkoXG4gICAgb3B0czogKFxuICAgICAgYnVpbGRlcjogT3JkZXJCeUV4cHJlc3Npb25CdWlsZGVyPFQ+LFxuICAgICAgY3VycmVudD86IE9yZGVyQnlFeHByZXNzaW9uPFQ+LFxuICAgICkgPT4gT3JkZXJCeUV4cHJlc3Npb248VD4sXG4gICk6IE9yZGVyQnlFeHByZXNzaW9uPFQ+O1xuICBvcmRlckJ5KG9wdHM6IE9yZGVyQnk8VD4pOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgb3JkZXJCeSgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgb3JkZXJCeShvcHRzPzogYW55KTogYW55IHtcbiAgICBpZiAoVHlwZXMuaXNGdW5jdGlvbihvcHRzKSkge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5vcHRpb24oXG4gICAgICAgIFF1ZXJ5T3B0aW9uLm9yZGVyQnksXG4gICAgICAgIE9yZGVyQnlFeHByZXNzaW9uLmZhY3RvcnkoXG4gICAgICAgICAgb3B0cyxcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihRdWVyeU9wdGlvbi5vcmRlckJ5KSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPE9yZGVyQnk8VD4+KFF1ZXJ5T3B0aW9uLm9yZGVyQnksIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFuZCByZXR1cm4gYSBoYW5kbGVyIGZvciBtb2RpZnlpbmcgdGhlICR0b3Agb3B0aW9uLlxuICAgKiBJZiBvcHRzIGlzIGdpdmVuIHRoZW4gc2V0IHRlIHZhbHVlIGFzIG5ldyB2YWx1ZSBmb3IgJHRvcC5cbiAgICogQHBhcmFtIG9wdHMgbnVtYmVyIHZhbHVlXG4gICAqL1xuICB0b3Aob3B0czogbnVtYmVyKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHRvcCgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgdG9wKG9wdHM/OiBudW1iZXIpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPG51bWJlcj4oUXVlcnlPcHRpb24udG9wLCBvcHRzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgcmV0dXJuIGEgaGFuZGxlciBmb3IgbW9kaWZ5aW5nIHRoZSAkc2tpcCBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkc2tpcC5cbiAgICogQHBhcmFtIG9wdHMgbnVtYmVyIHZhbHVlXG4gICAqL1xuICBza2lwKG9wdHM6IG51bWJlcik6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBza2lwKCk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBza2lwKG9wdHM/OiBudW1iZXIpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPG51bWJlcj4oUXVlcnlPcHRpb24uc2tpcCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHJldHVybiBhIGhhbmRsZXIgZm9yIG1vZGlmeWluZyB0aGUgJHNraXB0b2tlbiBvcHRpb24uXG4gICAqIElmIG9wdHMgaXMgZ2l2ZW4gdGhlbiBzZXQgdGUgdmFsdWUgYXMgbmV3IHZhbHVlIGZvciAkc2tpcHRva2VuLlxuICAgKiBAcGFyYW0gb3B0cyBzdHJpbmcgdmFsdWVcbiAgICovXG4gIHNraXB0b2tlbihvcHRzOiBzdHJpbmcpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2tpcHRva2VuKCk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBza2lwdG9rZW4ob3B0cz86IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5vcHRpb248c3RyaW5nPihRdWVyeU9wdGlvbi5za2lwdG9rZW4sIG9wdHMpO1xuICB9XG5cbiAgcmVtb3ZlKC4uLmtleXM6IFF1ZXJ5T3B0aW9uW10pIHtcbiAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKC4uLmtleXMpO1xuICB9XG5cbiAga2VlcCguLi5rZXlzOiBRdWVyeU9wdGlvbltdKSB7XG4gICAgdGhpcy5vcHRpb25zLmtlZXAoLi4ua2V5cyk7XG4gIH1cblxuICAvKipcbiAgICogU2hvcnRjdXQgZm9yIHNldCAkdG9wLCAkc2tpcCwgJHNraXB0b2tlbi5cbiAgICogQHBhcmFtIHBhcmFtMCBza2lwIG9yIHRvcCBvciBza2lwdG9rZW5cbiAgICovXG4gIHBhZ2luZyh7XG4gICAgc2tpcCxcbiAgICBza2lwdG9rZW4sXG4gICAgdG9wLFxuICB9OiB7XG4gICAgc2tpcD86IG51bWJlciB8IG51bGw7XG4gICAgc2tpcHRva2VuPzogc3RyaW5nIHwgbnVsbDtcbiAgICB0b3A/OiBudW1iZXIgfCBudWxsO1xuICB9ID0ge30pIHtcbiAgICBpZiAoc2tpcHRva2VuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChza2lwdG9rZW4gIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5za2lwdG9rZW4oc2tpcHRva2VuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNraXB0b2tlbik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChza2lwICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChza2lwICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuc2tpcChza2lwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNraXApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodG9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0b3AgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy50b3AodG9wKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnRvcCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNob3J0Y3V0IGZvciBjbGVhciBwYWdpbmF0aW9uIGJ5IHVuc2V0ICR0b3AsICRza2lwLCAkc2tpcHRva2VuLlxuICAgKi9cbiAgcmVtb3ZlUGFnaW5nKCkge1xuICAgIHRoaXMucmVtb3ZlKFF1ZXJ5T3B0aW9uLnNraXAsIFF1ZXJ5T3B0aW9uLnRvcCwgUXVlcnlPcHRpb24uc2tpcHRva2VuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG9ydGN1dCBmb3IgY2xlYXIgcXVlcnkuXG4gICAqL1xuICBjbGVhcigpIHtcbiAgICB0aGlzLm9wdGlvbnMuY2xlYXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9yZSB0aGUgcXVlcnkgb3B0aW9ucyBmcm9tIHRoZSBjdXJyZW50IHF1ZXJ5LlxuICAgKi9cbiAgc3RvcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy50b1F1ZXJ5QXJndW1lbnRzKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzdG9yZSB0aGUgZ2l2ZW4gcXVlcnkgb3B0aW9ucyB0byB0aGUgY3VycmVudCBxdWVyeS5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIHF1ZXJ5IHRvIGJlIGFwcGxpZWQuXG4gICAqL1xuICByZXN0b3JlKG9wdGlvbnM6IE9EYXRhUXVlcnlBcmd1bWVudHM8VD4pIHtcbiAgICBpZiAob3B0aW9ucy5zZWxlY3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKG9wdGlvbnMuc2VsZWN0IGluc3RhbmNlb2YgU2VsZWN0RXhwcmVzc2lvbikge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihcbiAgICAgICAgICBRdWVyeU9wdGlvbi5zZWxlY3QsXG4gICAgICAgICAgb3B0aW9ucy5zZWxlY3QgYXMgU2VsZWN0RXhwcmVzc2lvbjxUPixcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5zZWxlY3QgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5zZWxlY3QsIG9wdGlvbnMuc2VsZWN0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5yZW1vdmUoUXVlcnlPcHRpb24uc2VsZWN0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZXhwYW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChvcHRpb25zLmV4cGFuZCBpbnN0YW5jZW9mIEV4cGFuZEV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uZXhwYW5kLFxuICAgICAgICAgIG9wdGlvbnMuZXhwYW5kIGFzIEV4cGFuZEV4cHJlc3Npb248VD4sXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZXhwYW5kICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5vcHRpb24oUXVlcnlPcHRpb24uZXhwYW5kLCBvcHRpb25zLmV4cGFuZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLmV4cGFuZCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmNvbXB1dGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKG9wdGlvbnMuY29tcHV0ZSBpbnN0YW5jZW9mIENvbXB1dGVFeHByZXNzaW9uKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFxuICAgICAgICAgIFF1ZXJ5T3B0aW9uLmNvbXB1dGUsXG4gICAgICAgICAgb3B0aW9ucy5jb21wdXRlIGFzIENvbXB1dGVFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmNvbXB1dGUgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5jb21wdXRlLCBvcHRpb25zLmNvbXB1dGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnJlbW92ZShRdWVyeU9wdGlvbi5jb21wdXRlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuYXBwbHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKG9wdGlvbnMuYXBwbHkgaW5zdGFuY2VvZiBBcHBseUV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uYXBwbHksXG4gICAgICAgICAgb3B0aW9ucy5hcHBseSBhcyBBcHBseUV4cHJlc3Npb248VD4sXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuYXBwbHkgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5hcHBseSwgb3B0aW9ucy5hcHBseSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLmFwcGx5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudHJhbnNmb3JtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChvcHRpb25zLnRyYW5zZm9ybSAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLm9wdGlvbnMub3B0aW9uKFF1ZXJ5T3B0aW9uLnRyYW5zZm9ybSwgb3B0aW9ucy50cmFuc2Zvcm0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnJlbW92ZShRdWVyeU9wdGlvbi50cmFuc2Zvcm0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAob3B0aW9ucy5zZWFyY2ggIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKG9wdGlvbnMuc2VhcmNoIGluc3RhbmNlb2YgU2VhcmNoRXhwcmVzc2lvbikge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZXhwcmVzc2lvbihcbiAgICAgICAgICBRdWVyeU9wdGlvbi5zZWFyY2gsXG4gICAgICAgICAgb3B0aW9ucy5zZWFyY2ggYXMgU2VhcmNoRXhwcmVzc2lvbjxUPixcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAob3B0aW9ucy5zZWFyY2ggIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5zZWFyY2gsIG9wdGlvbnMuc2VhcmNoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5yZW1vdmUoUXVlcnlPcHRpb24uc2VhcmNoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZmlsdGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChvcHRpb25zLmZpbHRlciBpbnN0YW5jZW9mIEZpbHRlckV4cHJlc3Npb24pIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgICAgUXVlcnlPcHRpb24uZmlsdGVyLFxuICAgICAgICAgIG9wdGlvbnMuZmlsdGVyIGFzIEZpbHRlckV4cHJlc3Npb248VD4sXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnMuZmlsdGVyICE9PSBudWxsKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5vcHRpb24oUXVlcnlPcHRpb24uZmlsdGVyLCBvcHRpb25zLmZpbHRlcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMucmVtb3ZlKFF1ZXJ5T3B0aW9uLmZpbHRlcik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChvcHRpb25zLm9yZGVyQnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKG9wdGlvbnMub3JkZXJCeSBpbnN0YW5jZW9mIE9yZGVyQnlFeHByZXNzaW9uKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFxuICAgICAgICAgIFF1ZXJ5T3B0aW9uLm9yZGVyQnksXG4gICAgICAgICAgb3B0aW9ucy5vcmRlckJ5IGFzIE9yZGVyQnlFeHByZXNzaW9uPFQ+LFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmIChvcHRpb25zLm9yZGVyQnkgIT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLm9wdGlvbihRdWVyeU9wdGlvbi5vcmRlckJ5LCBvcHRpb25zLm9yZGVyQnkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLnJlbW92ZShRdWVyeU9wdGlvbi5vcmRlckJ5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wYWdpbmcob3B0aW9ucyk7XG4gIH1cblxuICB0b0pzb24oKSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy50b0pzb24oKTtcbiAgfVxuXG4gIGZyb21Kc29uKGpzb246IHsgW25hbWU6IHN0cmluZ106IGFueSB9KSB7XG4gICAgdGhpcy5vcHRpb25zLmZyb21Kc29uKGpzb24pO1xuICB9XG5cbiAgdG9TdHJpbmcoe1xuICAgIGVzY2FwZSxcbiAgICBwYXJzZXIsXG4gIH06IHsgZXNjYXBlPzogYm9vbGVhbjsgcGFyc2VyPzogUGFyc2VyPFQ+IH0gPSB7fSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy50b1N0cmluZyh7IGVzY2FwZSwgcGFyc2VyIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export * from './builder';
|
|
2
|
-
export * from './options';
|
|
3
|
-
export * from './handlers';
|
|
4
|
-
export * from './expressions';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3F1ZXJ5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9idWlsZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vb3B0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2hhbmRsZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vZXhwcmVzc2lvbnMnO1xuIl19
|