angular-odata 0.92.0 → 0.95.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{esm2015/angular-odata.js → esm2020/angular-odata.mjs} +0 -0
- package/esm2020/lib/api.mjs +303 -0
- package/{esm2015/lib/cache/cache.js → esm2020/lib/cache/cache.mjs} +3 -3
- package/{esm2015/lib/cache/index.js → esm2020/lib/cache/index.mjs} +0 -0
- package/{esm2015/lib/cache/memory.js → esm2020/lib/cache/memory.mjs} +1 -1
- package/{esm2015/lib/cache/storage.js → esm2020/lib/cache/storage.mjs} +2 -2
- package/esm2020/lib/client.mjs +271 -0
- package/{esm2015/lib/constants.js → esm2020/lib/constants.mjs} +3 -1
- package/esm2020/lib/helper.mjs +268 -0
- package/{esm2015/lib/index.js → esm2020/lib/index.mjs} +0 -0
- package/esm2020/lib/models/collection.mjs +741 -0
- package/{esm2015/lib/models/index.js → esm2020/lib/models/index.mjs} +0 -0
- package/esm2020/lib/models/model.mjs +453 -0
- package/esm2020/lib/models/options.mjs +945 -0
- package/{esm2015/lib/module.js → esm2020/lib/module.mjs} +7 -7
- package/esm2020/lib/options.mjs +32 -0
- package/{esm2015/lib/resources/index.js → esm2020/lib/resources/index.mjs} +0 -0
- package/{esm2015/lib/resources/path/handlers.js → esm2020/lib/resources/path/handlers.mjs} +1 -1
- package/{esm2015/lib/resources/path/index.js → esm2020/lib/resources/path/index.mjs} +0 -0
- package/esm2020/lib/resources/path/segments.mjs +124 -0
- package/esm2020/lib/resources/query/builder.mjs +590 -0
- package/esm2020/lib/resources/query/expressions.mjs +207 -0
- package/esm2020/lib/resources/query/handlers.mjs +186 -0
- package/{esm2015/lib/resources/query/index.js → esm2020/lib/resources/query/index.mjs} +0 -0
- package/esm2020/lib/resources/query/options.mjs +103 -0
- package/esm2020/lib/resources/query/syntax.mjs +406 -0
- package/esm2020/lib/resources/request.mjs +167 -0
- package/esm2020/lib/resources/resource.mjs +326 -0
- package/esm2020/lib/resources/responses/annotations.mjs +119 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-annotation.js → esm2020/lib/resources/responses/csdl/csdl-annotation.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-entity-container.js → esm2020/lib/resources/responses/csdl/csdl-entity-container.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-entity-set.js → esm2020/lib/resources/responses/csdl/csdl-entity-set.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-enum-type.js → esm2020/lib/resources/responses/csdl/csdl-enum-type.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-function-action.js → esm2020/lib/resources/responses/csdl/csdl-function-action.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-navigation-property-binding.js → esm2020/lib/resources/responses/csdl/csdl-navigation-property-binding.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-reference.js → esm2020/lib/resources/responses/csdl/csdl-reference.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-schema.js → esm2020/lib/resources/responses/csdl/csdl-schema.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-singleton.js → esm2020/lib/resources/responses/csdl/csdl-singleton.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-structural-property.js → esm2020/lib/resources/responses/csdl/csdl-structural-property.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-structured-type.js → esm2020/lib/resources/responses/csdl/csdl-structured-type.mjs} +0 -0
- package/{esm2015/lib/resources/responses/csdl/csdl-type-definition.js → esm2020/lib/resources/responses/csdl/csdl-type-definition.mjs} +0 -0
- package/{esm2015/lib/resources/responses/index.js → esm2020/lib/resources/responses/index.mjs} +0 -0
- package/esm2020/lib/resources/responses/metadata.mjs +547 -0
- package/{esm2015/lib/resources/responses/options.js → esm2020/lib/resources/responses/options.mjs} +0 -0
- package/{esm2015/lib/resources/responses/response.js → esm2020/lib/resources/responses/response.mjs} +0 -0
- package/{esm2015/lib/resources/responses/types.js → esm2020/lib/resources/responses/types.mjs} +0 -0
- package/esm2020/lib/resources/types/action.mjs +101 -0
- package/esm2020/lib/resources/types/batch.mjs +288 -0
- package/esm2020/lib/resources/types/count.mjs +27 -0
- package/esm2020/lib/resources/types/entity-set.mjs +94 -0
- package/esm2020/lib/resources/types/entity.mjs +106 -0
- package/esm2020/lib/resources/types/function.mjs +137 -0
- package/{esm2015/lib/resources/types/index.js → esm2020/lib/resources/types/index.mjs} +0 -0
- package/esm2020/lib/resources/types/media.mjs +41 -0
- package/esm2020/lib/resources/types/metadata.mjs +30 -0
- package/esm2020/lib/resources/types/navigation-property.mjs +226 -0
- package/esm2020/lib/resources/types/options.mjs +2 -0
- package/esm2020/lib/resources/types/property.mjs +183 -0
- package/esm2020/lib/resources/types/reference.mjs +85 -0
- package/esm2020/lib/resources/types/singleton.mjs +126 -0
- package/esm2020/lib/resources/types/value.mjs +41 -0
- package/esm2020/lib/schema/annotation.mjs +37 -0
- package/esm2020/lib/schema/callable.mjs +62 -0
- package/esm2020/lib/schema/element.mjs +51 -0
- package/esm2020/lib/schema/entity-container.mjs +9 -0
- package/esm2020/lib/schema/entity-set.mjs +9 -0
- package/esm2020/lib/schema/enum-type.mjs +71 -0
- package/{esm2015/lib/schema/index.js → esm2020/lib/schema/index.mjs} +0 -0
- package/esm2020/lib/schema/parsers/callable.mjs +113 -0
- package/{esm2015/lib/schema/parsers/edm.js → esm2020/lib/schema/parsers/edm.mjs} +2 -2
- package/esm2020/lib/schema/parsers/enum-type.mjs +107 -0
- package/{esm2015/lib/schema/parsers/index.js → esm2020/lib/schema/parsers/index.mjs} +0 -0
- package/esm2020/lib/schema/parsers/structured-type.mjs +412 -0
- package/esm2020/lib/schema/schema.mjs +61 -0
- package/esm2020/lib/schema/structured-type.mjs +198 -0
- package/esm2020/lib/services/base.mjs +29 -0
- package/esm2020/lib/services/entity-set.mjs +143 -0
- package/esm2020/lib/services/entity.mjs +12 -0
- package/{esm2015/lib/services/factory.js → esm2020/lib/services/factory.mjs} +3 -3
- package/{esm2015/lib/services/index.js → esm2020/lib/services/index.mjs} +0 -0
- package/{esm2015/lib/services/singleton.js → esm2020/lib/services/singleton.mjs} +1 -1
- package/{esm2015/lib/settings.js → esm2020/lib/settings.mjs} +1 -1
- package/{esm2015/lib/tokens.js → esm2020/lib/tokens.mjs} +0 -0
- package/esm2020/lib/types.mjs +37 -0
- package/{esm2015/lib/utils/arraybuffers.js → esm2020/lib/utils/arraybuffers.mjs} +0 -0
- package/{esm2015/lib/utils/dates.js → esm2020/lib/utils/dates.mjs} +0 -0
- package/{esm2015/lib/utils/durations.js → esm2020/lib/utils/durations.mjs} +0 -0
- package/{esm2015/lib/utils/enums.js → esm2020/lib/utils/enums.mjs} +0 -0
- package/{esm2015/lib/utils/http.js → esm2020/lib/utils/http.mjs} +0 -0
- package/{esm2015/lib/utils/index.js → esm2020/lib/utils/index.mjs} +0 -0
- package/{esm2015/lib/utils/objects.js → esm2020/lib/utils/objects.mjs} +0 -0
- package/esm2020/lib/utils/odata.mjs +22 -0
- package/{esm2015/lib/utils/strings.js → esm2020/lib/utils/strings.mjs} +0 -0
- package/{esm2015/lib/utils/types.js → esm2020/lib/utils/types.mjs} +0 -0
- package/{esm2015/lib/utils/urls.js → esm2020/lib/utils/urls.mjs} +0 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
- package/fesm2015/{angular-odata.js → angular-odata.mjs} +849 -750
- package/fesm2015/angular-odata.mjs.map +1 -0
- package/fesm2020/angular-odata.mjs +10274 -0
- package/fesm2020/angular-odata.mjs.map +1 -0
- package/lib/api.d.ts +10 -10
- package/lib/cache/cache.d.ts +2 -2
- package/lib/cache/storage.d.ts +1 -1
- package/lib/client.d.ts +3 -3
- package/lib/constants.d.ts +1 -0
- package/lib/models/collection.d.ts +11 -19
- package/lib/models/model.d.ts +22 -18
- package/lib/models/options.d.ts +16 -21
- package/lib/module.d.ts +1 -1
- package/lib/options.d.ts +1 -0
- package/lib/resources/path/segments.d.ts +1 -1
- package/lib/resources/query/expressions.d.ts +37 -27
- package/lib/resources/query/handlers.d.ts +7 -11
- package/lib/resources/query/options.d.ts +2 -2
- package/lib/resources/query/syntax.d.ts +52 -54
- package/lib/resources/request.d.ts +1 -1
- package/lib/resources/resource.d.ts +25 -8
- package/lib/resources/types/action.d.ts +12 -19
- package/lib/resources/types/batch.d.ts +1 -3
- package/lib/resources/types/count.d.ts +5 -4
- package/lib/resources/types/entity-set.d.ts +11 -15
- package/lib/resources/types/entity.d.ts +12 -15
- package/lib/resources/types/function.d.ts +11 -18
- package/lib/resources/types/media.d.ts +6 -5
- package/lib/resources/types/metadata.d.ts +3 -5
- package/lib/resources/types/navigation-property.d.ts +15 -21
- package/lib/resources/types/property.d.ts +13 -19
- package/lib/resources/types/reference.d.ts +39 -6
- package/lib/resources/types/singleton.d.ts +12 -16
- package/lib/resources/types/value.d.ts +9 -5
- package/lib/schema/{base.d.ts → annotation.d.ts} +0 -0
- package/lib/schema/callable.d.ts +2 -18
- package/lib/schema/element.d.ts +39 -0
- package/lib/schema/entity-container.d.ts +2 -12
- package/lib/schema/entity-set.d.ts +2 -18
- package/lib/schema/enum-type.d.ts +2 -26
- package/lib/schema/parsers/enum-type.d.ts +4 -4
- package/lib/schema/parsers/structured-type.d.ts +4 -4
- package/lib/schema/schema.d.ts +2 -2
- package/lib/schema/structured-type.d.ts +8 -26
- package/lib/services/base.d.ts +2 -2
- package/lib/services/entity-set.d.ts +2 -2
- package/lib/services/entity.d.ts +1 -1
- package/lib/services/singleton.d.ts +2 -2
- package/lib/settings.d.ts +5 -5
- package/lib/types.d.ts +1 -0
- package/package.json +21 -8
- package/bundles/angular-odata.umd.js +0 -11861
- package/bundles/angular-odata.umd.js.map +0 -1
- package/esm2015/lib/api.js +0 -296
- package/esm2015/lib/client.js +0 -272
- package/esm2015/lib/helper.js +0 -268
- package/esm2015/lib/models/collection.js +0 -734
- package/esm2015/lib/models/model.js +0 -438
- package/esm2015/lib/models/options.js +0 -942
- package/esm2015/lib/options.js +0 -31
- package/esm2015/lib/resources/path/segments.js +0 -124
- package/esm2015/lib/resources/query/builder.js +0 -591
- package/esm2015/lib/resources/query/expressions.js +0 -194
- package/esm2015/lib/resources/query/handlers.js +0 -192
- package/esm2015/lib/resources/query/options.js +0 -103
- package/esm2015/lib/resources/query/syntax.js +0 -367
- package/esm2015/lib/resources/request.js +0 -168
- package/esm2015/lib/resources/resource.js +0 -243
- package/esm2015/lib/resources/responses/annotations.js +0 -121
- package/esm2015/lib/resources/responses/metadata.js +0 -548
- package/esm2015/lib/resources/types/action.js +0 -105
- package/esm2015/lib/resources/types/batch.js +0 -294
- package/esm2015/lib/resources/types/count.js +0 -33
- package/esm2015/lib/resources/types/entity-set.js +0 -101
- package/esm2015/lib/resources/types/entity.js +0 -137
- package/esm2015/lib/resources/types/function.js +0 -130
- package/esm2015/lib/resources/types/media.js +0 -47
- package/esm2015/lib/resources/types/metadata.js +0 -36
- package/esm2015/lib/resources/types/navigation-property.js +0 -205
- package/esm2015/lib/resources/types/options.js +0 -2
- package/esm2015/lib/resources/types/property.js +0 -151
- package/esm2015/lib/resources/types/reference.js +0 -74
- package/esm2015/lib/resources/types/singleton.js +0 -167
- package/esm2015/lib/resources/types/value.js +0 -35
- package/esm2015/lib/schema/base.js +0 -37
- package/esm2015/lib/schema/callable.js +0 -82
- package/esm2015/lib/schema/entity-container.js +0 -24
- package/esm2015/lib/schema/entity-set.js +0 -35
- package/esm2015/lib/schema/enum-type.js +0 -102
- package/esm2015/lib/schema/parsers/callable.js +0 -107
- package/esm2015/lib/schema/parsers/enum-type.js +0 -107
- package/esm2015/lib/schema/parsers/structured-type.js +0 -392
- package/esm2015/lib/schema/schema.js +0 -52
- package/esm2015/lib/schema/structured-type.js +0 -220
- package/esm2015/lib/services/base.js +0 -23
- package/esm2015/lib/services/entity-set.js +0 -146
- package/esm2015/lib/services/entity.js +0 -12
- package/esm2015/lib/types.js +0 -37
- package/esm2015/lib/utils/odata.js +0 -21
- package/fesm2015/angular-odata.js.map +0 -1
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import { syntax } from './syntax';
|
|
2
|
-
export var Connector;
|
|
3
|
-
(function (Connector) {
|
|
4
|
-
Connector["AND"] = "and";
|
|
5
|
-
Connector["OR"] = "or";
|
|
6
|
-
})(Connector || (Connector = {}));
|
|
7
|
-
export class Expression {
|
|
8
|
-
constructor({ children, connector, negated, } = {}) {
|
|
9
|
-
this._children = children || [];
|
|
10
|
-
this._connector = connector || Connector.AND;
|
|
11
|
-
this._negated = negated || false;
|
|
12
|
-
}
|
|
13
|
-
get [Symbol.toStringTag]() {
|
|
14
|
-
return 'Expression';
|
|
15
|
-
}
|
|
16
|
-
static e() {
|
|
17
|
-
return new Expression({ connector: Connector.AND });
|
|
18
|
-
}
|
|
19
|
-
static and() {
|
|
20
|
-
return new Expression({ connector: Connector.AND });
|
|
21
|
-
}
|
|
22
|
-
static or() {
|
|
23
|
-
return new Expression({ connector: Connector.OR });
|
|
24
|
-
}
|
|
25
|
-
static not(exp) {
|
|
26
|
-
return new Expression({
|
|
27
|
-
children: exp.children(),
|
|
28
|
-
connector: exp.connector(),
|
|
29
|
-
negated: true,
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
toJSON() {
|
|
33
|
-
return {
|
|
34
|
-
children: this._children.map((c) => c.toJSON()),
|
|
35
|
-
connector: this._connector,
|
|
36
|
-
negated: this._negated,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
children() {
|
|
40
|
-
return this._children;
|
|
41
|
-
}
|
|
42
|
-
connector() {
|
|
43
|
-
return this._connector;
|
|
44
|
-
}
|
|
45
|
-
negated() {
|
|
46
|
-
return this._negated;
|
|
47
|
-
}
|
|
48
|
-
length() {
|
|
49
|
-
return this._children.length;
|
|
50
|
-
}
|
|
51
|
-
render({ aliases, escape, } = {}) {
|
|
52
|
-
let content = this._children
|
|
53
|
-
.map((n) => n.render({ aliases, escape }))
|
|
54
|
-
.join(` ${this._connector} `);
|
|
55
|
-
if (this._negated) {
|
|
56
|
-
content = `not (${content})`;
|
|
57
|
-
}
|
|
58
|
-
return content;
|
|
59
|
-
}
|
|
60
|
-
_add(node, connector) {
|
|
61
|
-
if (connector !== undefined && this._connector !== connector) {
|
|
62
|
-
let children = [];
|
|
63
|
-
if (this._children.length > 0) {
|
|
64
|
-
if (this._children.length === 1) {
|
|
65
|
-
children = [...this._children];
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
let exp = new Expression({
|
|
69
|
-
children: this._children,
|
|
70
|
-
connector: this._connector,
|
|
71
|
-
negated: this._negated,
|
|
72
|
-
});
|
|
73
|
-
if (exp.length() > 1) {
|
|
74
|
-
children.push(syntax.grouping(exp));
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
children.push(exp);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (node instanceof Expression &&
|
|
82
|
-
(node.connector() === connector || node.length() === 1)) {
|
|
83
|
-
children = [...children, ...node.children()];
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
children.push(syntax.grouping(node));
|
|
87
|
-
}
|
|
88
|
-
this._connector = connector;
|
|
89
|
-
this._children = children;
|
|
90
|
-
}
|
|
91
|
-
else if (node instanceof Expression &&
|
|
92
|
-
!node.negated() &&
|
|
93
|
-
(node.connector() === connector || node.length() === 1)) {
|
|
94
|
-
this._children = [...this._children, ...node.children()];
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
this._children.push(node instanceof Expression && !node.negated()
|
|
98
|
-
? syntax.grouping(node)
|
|
99
|
-
: node);
|
|
100
|
-
}
|
|
101
|
-
return this;
|
|
102
|
-
}
|
|
103
|
-
or(exp) {
|
|
104
|
-
return this._add(typeof exp === 'function' ? exp(new Expression()) : exp, Connector.OR);
|
|
105
|
-
}
|
|
106
|
-
and(exp) {
|
|
107
|
-
return this._add(typeof exp === 'function' ? exp(new Expression()) : exp, Connector.AND);
|
|
108
|
-
}
|
|
109
|
-
not(exp) {
|
|
110
|
-
return this._add(Expression.not(typeof exp === 'function' ? exp(new Expression()) : exp), this._connector);
|
|
111
|
-
}
|
|
112
|
-
eq(left, right, normalize) {
|
|
113
|
-
return this._add(syntax.eq(left, right, normalize));
|
|
114
|
-
}
|
|
115
|
-
ne(left, right, normalize) {
|
|
116
|
-
return this._add(syntax.ne(left, right, normalize));
|
|
117
|
-
}
|
|
118
|
-
gt(left, right, normalize) {
|
|
119
|
-
return this._add(syntax.gt(left, right, normalize));
|
|
120
|
-
}
|
|
121
|
-
ge(left, right, normalize) {
|
|
122
|
-
return this._add(syntax.ge(left, right, normalize));
|
|
123
|
-
}
|
|
124
|
-
lt(left, right, normalize) {
|
|
125
|
-
return this._add(syntax.lt(left, right, normalize));
|
|
126
|
-
}
|
|
127
|
-
le(left, right, normalize) {
|
|
128
|
-
return this._add(syntax.le(left, right, normalize));
|
|
129
|
-
}
|
|
130
|
-
has(left, right, normalize) {
|
|
131
|
-
return this._add(syntax.has(left, right, normalize));
|
|
132
|
-
}
|
|
133
|
-
in(left, right, normalize) {
|
|
134
|
-
return this._add(syntax.in(left, right, normalize));
|
|
135
|
-
}
|
|
136
|
-
contains(left, right, normalize) {
|
|
137
|
-
return this._add(syntax.contains(left, right, normalize));
|
|
138
|
-
}
|
|
139
|
-
startsWith(left, right, normalize) {
|
|
140
|
-
return this._add(syntax.startsWith(left, right, normalize));
|
|
141
|
-
}
|
|
142
|
-
endsWith(left, right, normalize) {
|
|
143
|
-
return this._add(syntax.endsWith(left, right, normalize));
|
|
144
|
-
}
|
|
145
|
-
any(left, exp) {
|
|
146
|
-
return this._add(syntax.any(left, typeof exp === 'function' ? exp(new Expression()) : exp));
|
|
147
|
-
}
|
|
148
|
-
all(left, exp) {
|
|
149
|
-
return this._add(syntax.all(left, typeof exp === 'function' ? exp(new Expression()) : exp));
|
|
150
|
-
}
|
|
151
|
-
isof(left, type) {
|
|
152
|
-
return this._add(syntax.isof(left, type));
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
/*
|
|
156
|
-
export class FilterExpression<T> extends Expression<T> {
|
|
157
|
-
constructor({
|
|
158
|
-
children,
|
|
159
|
-
connector,
|
|
160
|
-
negated,
|
|
161
|
-
}: {
|
|
162
|
-
children?: Renderable[];
|
|
163
|
-
connector?: Connector;
|
|
164
|
-
negated?: boolean;
|
|
165
|
-
} = {}) {
|
|
166
|
-
super({ children, connector, negated });
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
get [Symbol.toStringTag]() {
|
|
170
|
-
return 'FilterExpression';
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
static e<T>() {
|
|
174
|
-
return new FilterExpression<T>({ connector: Connector.AND });
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
static and<T>() {
|
|
178
|
-
return new FilterExpression<T>({ connector: Connector.AND });
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
static or<T>() {
|
|
182
|
-
return new FilterExpression<T>({ connector: Connector.OR });
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
static not<T>(exp: FilterExpression<T>) {
|
|
186
|
-
return new FilterExpression<T>({
|
|
187
|
-
children: exp.children(),
|
|
188
|
-
connector: exp.connector(),
|
|
189
|
-
negated: true,
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
*/
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3F1ZXJ5L2V4cHJlc3Npb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFbEMsTUFBTSxDQUFOLElBQVksU0FHWDtBQUhELFdBQVksU0FBUztJQUNuQix3QkFBVyxDQUFBO0lBQ1gsc0JBQVMsQ0FBQTtBQUNYLENBQUMsRUFIVyxTQUFTLEtBQVQsU0FBUyxRQUdwQjtBQUVELE1BQU0sT0FBTyxVQUFVO0lBSXJCLFlBQVksRUFDVixRQUFRLEVBQ1IsU0FBUyxFQUNULE9BQU8sTUFLTCxFQUFFO1FBQ0osSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUM7UUFDN0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLElBQUksS0FBSyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztRQUN0QixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsTUFBTSxDQUFDLENBQUM7UUFDTixPQUFPLElBQUksVUFBVSxDQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRztRQUNSLE9BQU8sSUFBSSxVQUFVLENBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFFO1FBQ1AsT0FBTyxJQUFJLFVBQVUsQ0FBSSxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLENB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RUFDZCxHQUEwRDtRQUUxRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQ2QsTUFBTSxDQUFDLEdBQUcsQ0FDUixJQUFJLEVBQ0osT0FBTyxHQUFHLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxVQUFVLEVBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQzNELENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxHQUFHLENBQ0QsSUFBYyxFQUNkLEdBQTBEO1FBRTFELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FDZCxNQUFNLENBQUMsR0FBRyxDQUNSLElBQUksRUFDSixPQUFPLEdBQUcsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFVBQVUsRUFBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FDM0QsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUlELElBQUksQ0FBQyxJQUFTLEVBQUUsSUFBYTtRQUMzQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0Y7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFzQ0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFF1ZXJ5Q3VzdG9tVHlwZSB9IGZyb20gJy4vYnVpbGRlcic7XG5pbXBvcnQgdHlwZSB7IEZpZWxkLCBSZW5kZXJhYmxlIH0gZnJvbSAnLi9zeW50YXgnO1xuaW1wb3J0IHsgc3ludGF4IH0gZnJvbSAnLi9zeW50YXgnO1xuXG5leHBvcnQgZW51bSBDb25uZWN0b3Ige1xuICBBTkQgPSAnYW5kJyxcbiAgT1IgPSAnb3InLFxufVxuXG5leHBvcnQgY2xhc3MgRXhwcmVzc2lvbjxUPiBpbXBsZW1lbnRzIFJlbmRlcmFibGUge1xuICBwcml2YXRlIF9jb25uZWN0b3I6IENvbm5lY3RvcjtcbiAgcHJpdmF0ZSBfbmVnYXRlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBfY2hpbGRyZW46IFJlbmRlcmFibGVbXTtcbiAgY29uc3RydWN0b3Ioe1xuICAgIGNoaWxkcmVuLFxuICAgIGNvbm5lY3RvcixcbiAgICBuZWdhdGVkLFxuICB9OiB7XG4gICAgY2hpbGRyZW4/OiBSZW5kZXJhYmxlW107XG4gICAgY29ubmVjdG9yPzogQ29ubmVjdG9yO1xuICAgIG5lZ2F0ZWQ/OiBib29sZWFuO1xuICB9ID0ge30pIHtcbiAgICB0aGlzLl9jaGlsZHJlbiA9IGNoaWxkcmVuIHx8IFtdO1xuICAgIHRoaXMuX2Nvbm5lY3RvciA9IGNvbm5lY3RvciB8fCBDb25uZWN0b3IuQU5EO1xuICAgIHRoaXMuX25lZ2F0ZWQgPSBuZWdhdGVkIHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddKCkge1xuICAgIHJldHVybiAnRXhwcmVzc2lvbic7XG4gIH1cblxuICBzdGF0aWMgZTxUPigpIHtcbiAgICByZXR1cm4gbmV3IEV4cHJlc3Npb248VD4oeyBjb25uZWN0b3I6IENvbm5lY3Rvci5BTkQgfSk7XG4gIH1cblxuICBzdGF0aWMgYW5kPFQ+KCkge1xuICAgIHJldHVybiBuZXcgRXhwcmVzc2lvbjxUPih7IGNvbm5lY3RvcjogQ29ubmVjdG9yLkFORCB9KTtcbiAgfVxuXG4gIHN0YXRpYyBvcjxUPigpIHtcbiAgICByZXR1cm4gbmV3IEV4cHJlc3Npb248VD4oeyBjb25uZWN0b3I6IENvbm5lY3Rvci5PUiB9KTtcbiAgfVxuXG4gIHN0YXRpYyBub3Q8VD4oZXhwOiBFeHByZXNzaW9uPFQ+KSB7XG4gICAgcmV0dXJuIG5ldyBFeHByZXNzaW9uPFQ+KHtcbiAgICAgIGNoaWxkcmVuOiBleHAuY2hpbGRyZW4oKSxcbiAgICAgIGNvbm5lY3RvcjogZXhwLmNvbm5lY3RvcigpLFxuICAgICAgbmVnYXRlZDogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY2hpbGRyZW46IHRoaXMuX2NoaWxkcmVuLm1hcCgoYykgPT4gYy50b0pTT04oKSksXG4gICAgICBjb25uZWN0b3I6IHRoaXMuX2Nvbm5lY3RvcixcbiAgICAgIG5lZ2F0ZWQ6IHRoaXMuX25lZ2F0ZWQsXG4gICAgfTtcbiAgfVxuXG4gIGNoaWxkcmVuKCkge1xuICAgIHJldHVybiB0aGlzLl9jaGlsZHJlbjtcbiAgfVxuXG4gIGNvbm5lY3RvcigpIHtcbiAgICByZXR1cm4gdGhpcy5fY29ubmVjdG9yO1xuICB9XG5cbiAgbmVnYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fbmVnYXRlZDtcbiAgfVxuXG4gIGxlbmd0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY2hpbGRyZW4ubGVuZ3RoO1xuICB9XG5cbiAgcmVuZGVyKHtcbiAgICBhbGlhc2VzLFxuICAgIGVzY2FwZSxcbiAgfToge1xuICAgIGFsaWFzZXM/OiBRdWVyeUN1c3RvbVR5cGVbXTtcbiAgICBlc2NhcGU/OiBib29sZWFuO1xuICB9ID0ge30pOiBzdHJpbmcge1xuICAgIGxldCBjb250ZW50ID0gdGhpcy5fY2hpbGRyZW5cbiAgICAgIC5tYXAoKG4pID0+IG4ucmVuZGVyKHsgYWxpYXNlcywgZXNjYXBlIH0pKVxuICAgICAgLmpvaW4oYCAke3RoaXMuX2Nvbm5lY3Rvcn0gYCk7XG4gICAgaWYgKHRoaXMuX25lZ2F0ZWQpIHtcbiAgICAgIGNvbnRlbnQgPSBgbm90ICgke2NvbnRlbnR9KWA7XG4gICAgfVxuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBfYWRkKG5vZGU6IFJlbmRlcmFibGUsIGNvbm5lY3Rvcj86IENvbm5lY3Rvcik6IEV4cHJlc3Npb248VD4ge1xuICAgIGlmIChjb25uZWN0b3IgIT09IHVuZGVmaW5lZCAmJiB0aGlzLl9jb25uZWN0b3IgIT09IGNvbm5lY3Rvcikge1xuICAgICAgbGV0IGNoaWxkcmVuOiBSZW5kZXJhYmxlW10gPSBbXTtcbiAgICAgIGlmICh0aGlzLl9jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmICh0aGlzLl9jaGlsZHJlbi5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICBjaGlsZHJlbiA9IFsuLi50aGlzLl9jaGlsZHJlbl07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbGV0IGV4cCA9IG5ldyBFeHByZXNzaW9uPFQ+KHtcbiAgICAgICAgICAgIGNoaWxkcmVuOiB0aGlzLl9jaGlsZHJlbixcbiAgICAgICAgICAgIGNvbm5lY3RvcjogdGhpcy5fY29ubmVjdG9yLFxuICAgICAgICAgICAgbmVnYXRlZDogdGhpcy5fbmVnYXRlZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoZXhwLmxlbmd0aCgpID4gMSkge1xuICAgICAgICAgICAgY2hpbGRyZW4ucHVzaChzeW50YXguZ3JvdXBpbmcoZXhwKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNoaWxkcmVuLnB1c2goZXhwKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbm9kZSBpbnN0YW5jZW9mIEV4cHJlc3Npb24gJiZcbiAgICAgICAgKG5vZGUuY29ubmVjdG9yKCkgPT09IGNvbm5lY3RvciB8fCBub2RlLmxlbmd0aCgpID09PSAxKVxuICAgICAgKSB7XG4gICAgICAgIGNoaWxkcmVuID0gWy4uLmNoaWxkcmVuLCAuLi5ub2RlLmNoaWxkcmVuKCldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hpbGRyZW4ucHVzaChzeW50YXguZ3JvdXBpbmcobm9kZSkpO1xuICAgICAgfVxuICAgICAgdGhpcy5fY29ubmVjdG9yID0gY29ubmVjdG9yO1xuICAgICAgdGhpcy5fY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgbm9kZSBpbnN0YW5jZW9mIEV4cHJlc3Npb24gJiZcbiAgICAgICFub2RlLm5lZ2F0ZWQoKSAmJlxuICAgICAgKG5vZGUuY29ubmVjdG9yKCkgPT09IGNvbm5lY3RvciB8fCBub2RlLmxlbmd0aCgpID09PSAxKVxuICAgICkge1xuICAgICAgdGhpcy5fY2hpbGRyZW4gPSBbLi4udGhpcy5fY2hpbGRyZW4sIC4uLm5vZGUuY2hpbGRyZW4oKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2NoaWxkcmVuLnB1c2goXG4gICAgICAgIG5vZGUgaW5zdGFuY2VvZiBFeHByZXNzaW9uICYmICFub2RlLm5lZ2F0ZWQoKVxuICAgICAgICAgID8gc3ludGF4Lmdyb3VwaW5nKG5vZGUpXG4gICAgICAgICAgOiBub2RlXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIG9yKFxuICAgIGV4cDogRXhwcmVzc2lvbjxUPiB8ICgoeDogRXhwcmVzc2lvbjxUPikgPT4gRXhwcmVzc2lvbjxUPilcbiAgKTogRXhwcmVzc2lvbjxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZChcbiAgICAgIHR5cGVvZiBleHAgPT09ICdmdW5jdGlvbicgPyBleHAobmV3IEV4cHJlc3Npb248VD4oKSkgOiBleHAsXG4gICAgICBDb25uZWN0b3IuT1JcbiAgICApO1xuICB9XG5cbiAgYW5kKFxuICAgIGV4cDogRXhwcmVzc2lvbjxUPiB8ICgoeDogRXhwcmVzc2lvbjxUPikgPT4gRXhwcmVzc2lvbjxUPilcbiAgKTogRXhwcmVzc2lvbjxUPiB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZChcbiAgICAgIHR5cGVvZiBleHAgPT09ICdmdW5jdGlvbicgPyBleHAobmV3IEV4cHJlc3Npb248VD4oKSkgOiBleHAsXG4gICAgICBDb25uZWN0b3IuQU5EXG4gICAgKTtcbiAgfVxuXG4gIG5vdChcbiAgICBleHA6IEV4cHJlc3Npb248VD4gfCAoKHg6IEV4cHJlc3Npb248VD4pID0+IEV4cHJlc3Npb248VD4pXG4gICk6IEV4cHJlc3Npb248VD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGQoXG4gICAgICBFeHByZXNzaW9uLm5vdChcbiAgICAgICAgdHlwZW9mIGV4cCA9PT0gJ2Z1bmN0aW9uJyA/IGV4cChuZXcgRXhwcmVzc2lvbjxUPigpKSA6IGV4cFxuICAgICAgKSxcbiAgICAgIHRoaXMuX2Nvbm5lY3RvclxuICAgICk7XG4gIH1cblxuICBlcShsZWZ0OiBGaWVsZDxUPiwgcmlnaHQ6IGFueSwgbm9ybWFsaXplPzogYm9vbGVhbikge1xuICAgIHJldHVybiB0aGlzLl9hZGQoc3ludGF4LmVxKGxlZnQsIHJpZ2h0LCBub3JtYWxpemUpKTtcbiAgfVxuXG4gIG5lKGxlZnQ6IEZpZWxkPFQ+LCByaWdodDogYW55LCBub3JtYWxpemU/OiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZChzeW50YXgubmUobGVmdCwgcmlnaHQsIG5vcm1hbGl6ZSkpO1xuICB9XG5cbiAgZ3QobGVmdDogRmllbGQ8VD4sIHJpZ2h0OiBhbnksIG5vcm1hbGl6ZT86IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkKHN5bnRheC5ndChsZWZ0LCByaWdodCwgbm9ybWFsaXplKSk7XG4gIH1cblxuICBnZShsZWZ0OiBGaWVsZDxUPiwgcmlnaHQ6IGFueSwgbm9ybWFsaXplPzogYm9vbGVhbikge1xuICAgIHJldHVybiB0aGlzLl9hZGQoc3ludGF4LmdlKGxlZnQsIHJpZ2h0LCBub3JtYWxpemUpKTtcbiAgfVxuXG4gIGx0KGxlZnQ6IEZpZWxkPFQ+LCByaWdodDogYW55LCBub3JtYWxpemU/OiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZChzeW50YXgubHQobGVmdCwgcmlnaHQsIG5vcm1hbGl6ZSkpO1xuICB9XG5cbiAgbGUobGVmdDogRmllbGQ8VD4sIHJpZ2h0OiBhbnksIG5vcm1hbGl6ZT86IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkKHN5bnRheC5sZShsZWZ0LCByaWdodCwgbm9ybWFsaXplKSk7XG4gIH1cblxuICBoYXMobGVmdDogRmllbGQ8VD4sIHJpZ2h0OiBhbnksIG5vcm1hbGl6ZT86IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkKHN5bnRheC5oYXMobGVmdCwgcmlnaHQsIG5vcm1hbGl6ZSkpO1xuICB9XG5cbiAgaW4obGVmdDogRmllbGQ8VD4sIHJpZ2h0OiBhbnksIG5vcm1hbGl6ZT86IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkKHN5bnRheC5pbihsZWZ0LCByaWdodCwgbm9ybWFsaXplKSk7XG4gIH1cblxuICBjb250YWlucyhsZWZ0OiBGaWVsZDxUPiwgcmlnaHQ6IGFueSwgbm9ybWFsaXplPzogYm9vbGVhbikge1xuICAgIHJldHVybiB0aGlzLl9hZGQoc3ludGF4LmNvbnRhaW5zKGxlZnQsIHJpZ2h0LCBub3JtYWxpemUpKTtcbiAgfVxuXG4gIHN0YXJ0c1dpdGgobGVmdDogRmllbGQ8VD4sIHJpZ2h0OiBhbnksIG5vcm1hbGl6ZT86IGJvb2xlYW4pIHtcbiAgICByZXR1cm4gdGhpcy5fYWRkKHN5bnRheC5zdGFydHNXaXRoKGxlZnQsIHJpZ2h0LCBub3JtYWxpemUpKTtcbiAgfVxuXG4gIGVuZHNXaXRoKGxlZnQ6IEZpZWxkPFQ+LCByaWdodDogYW55LCBub3JtYWxpemU/OiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZChzeW50YXguZW5kc1dpdGgobGVmdCwgcmlnaHQsIG5vcm1hbGl6ZSkpO1xuICB9XG5cbiAgYW55PE4+KFxuICAgIGxlZnQ6IEZpZWxkPFQ+LFxuICAgIGV4cDogRXhwcmVzc2lvbjxOPiB8ICgoeDogRXhwcmVzc2lvbjxOPikgPT4gRXhwcmVzc2lvbjxOPilcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZChcbiAgICAgIHN5bnRheC5hbnkoXG4gICAgICAgIGxlZnQsXG4gICAgICAgIHR5cGVvZiBleHAgPT09ICdmdW5jdGlvbicgPyBleHAobmV3IEV4cHJlc3Npb248Tj4oKSkgOiBleHBcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgYWxsPE4+KFxuICAgIGxlZnQ6IEZpZWxkPFQ+LFxuICAgIGV4cDogRXhwcmVzc2lvbjxOPiB8ICgoeDogRXhwcmVzc2lvbjxOPikgPT4gRXhwcmVzc2lvbjxOPilcbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FkZChcbiAgICAgIHN5bnRheC5hbGwoXG4gICAgICAgIGxlZnQsXG4gICAgICAgIHR5cGVvZiBleHAgPT09ICdmdW5jdGlvbicgPyBleHAobmV3IEV4cHJlc3Npb248Tj4oKSkgOiBleHBcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgaXNvZih0eXBlOiBzdHJpbmcpOiBFeHByZXNzaW9uPFQ+O1xuICBpc29mKGxlZnQ6IEZpZWxkPFQ+LCB0eXBlOiBzdHJpbmcpOiBFeHByZXNzaW9uPFQ+O1xuICBpc29mKGxlZnQ6IGFueSwgdHlwZT86IHN0cmluZyk6IEV4cHJlc3Npb248VD4ge1xuICAgIHJldHVybiB0aGlzLl9hZGQoc3ludGF4Lmlzb2YobGVmdCwgdHlwZSkpO1xuICB9XG59XG5cbi8qXG5leHBvcnQgY2xhc3MgRmlsdGVyRXhwcmVzc2lvbjxUPiBleHRlbmRzIEV4cHJlc3Npb248VD4ge1xuICBjb25zdHJ1Y3Rvcih7XG4gICAgY2hpbGRyZW4sXG4gICAgY29ubmVjdG9yLFxuICAgIG5lZ2F0ZWQsXG4gIH06IHtcbiAgICBjaGlsZHJlbj86IFJlbmRlcmFibGVbXTtcbiAgICBjb25uZWN0b3I/OiBDb25uZWN0b3I7XG4gICAgbmVnYXRlZD86IGJvb2xlYW47XG4gIH0gPSB7fSkge1xuICAgIHN1cGVyKHsgY2hpbGRyZW4sIGNvbm5lY3RvciwgbmVnYXRlZCB9KTtcbiAgfVxuXG4gIGdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSgpIHtcbiAgICByZXR1cm4gJ0ZpbHRlckV4cHJlc3Npb24nO1xuICB9XG5cbiAgc3RhdGljIGU8VD4oKSB7XG4gICAgcmV0dXJuIG5ldyBGaWx0ZXJFeHByZXNzaW9uPFQ+KHsgY29ubmVjdG9yOiBDb25uZWN0b3IuQU5EIH0pO1xuICB9XG5cbiAgc3RhdGljIGFuZDxUPigpIHtcbiAgICByZXR1cm4gbmV3IEZpbHRlckV4cHJlc3Npb248VD4oeyBjb25uZWN0b3I6IENvbm5lY3Rvci5BTkQgfSk7XG4gIH1cblxuICBzdGF0aWMgb3I8VD4oKSB7XG4gICAgcmV0dXJuIG5ldyBGaWx0ZXJFeHByZXNzaW9uPFQ+KHsgY29ubmVjdG9yOiBDb25uZWN0b3IuT1IgfSk7XG4gIH1cblxuICBzdGF0aWMgbm90PFQ+KGV4cDogRmlsdGVyRXhwcmVzc2lvbjxUPikge1xuICAgIHJldHVybiBuZXcgRmlsdGVyRXhwcmVzc2lvbjxUPih7XG4gICAgICBjaGlsZHJlbjogZXhwLmNoaWxkcmVuKCksXG4gICAgICBjb25uZWN0b3I6IGV4cC5jb25uZWN0b3IoKSxcbiAgICAgIG5lZ2F0ZWQ6IHRydWUsXG4gICAgfSk7XG4gIH1cbn1cbiovXG4iXX0=
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import { Objects, Types } from '../../utils';
|
|
2
|
-
import { alias } from './builder';
|
|
3
|
-
import { QueryOptionNames } from '../../types';
|
|
4
|
-
import { Expression } from './expressions';
|
|
5
|
-
export class ODataQueryOptionHandler {
|
|
6
|
-
constructor(o, n) {
|
|
7
|
-
this.o = o;
|
|
8
|
-
this.n = n;
|
|
9
|
-
}
|
|
10
|
-
get name() {
|
|
11
|
-
return this.n;
|
|
12
|
-
}
|
|
13
|
-
toJSON() {
|
|
14
|
-
return this.o[this.n];
|
|
15
|
-
}
|
|
16
|
-
empty() {
|
|
17
|
-
return Types.isEmpty(this.o[this.n]);
|
|
18
|
-
}
|
|
19
|
-
//#region Primitive Value
|
|
20
|
-
value(v) {
|
|
21
|
-
return (v !== undefined && (this.o[this.n] = v)) || this.o[this.n];
|
|
22
|
-
}
|
|
23
|
-
//#endregion
|
|
24
|
-
//#region Array Value
|
|
25
|
-
assertArray() {
|
|
26
|
-
if (!Types.isArray(this.o[this.n]))
|
|
27
|
-
this.o[this.n] = this.o[this.n] !== undefined ? [this.o[this.n]] : [];
|
|
28
|
-
return this.o[this.n];
|
|
29
|
-
}
|
|
30
|
-
push(value) {
|
|
31
|
-
this.assertArray().push(value);
|
|
32
|
-
}
|
|
33
|
-
remove(value) {
|
|
34
|
-
this.o[this.n] = this.assertArray().filter((v) => v !== value);
|
|
35
|
-
// If only one... down to value
|
|
36
|
-
if (this.o[this.n].length === 1)
|
|
37
|
-
this.o[this.n] = this.o[this.n][0];
|
|
38
|
-
}
|
|
39
|
-
at(index) {
|
|
40
|
-
return this.assertArray()[index];
|
|
41
|
-
}
|
|
42
|
-
//#endregion
|
|
43
|
-
//#region HashMap Value
|
|
44
|
-
assertObject(create) {
|
|
45
|
-
if (!Types.isArray(this.o[this.n]) && Types.isPlainObject(this.o[this.n])) {
|
|
46
|
-
return this.o[this.n];
|
|
47
|
-
}
|
|
48
|
-
let arr = this.assertArray();
|
|
49
|
-
let obj = arr.find((v) => Types.isPlainObject(v));
|
|
50
|
-
if (!obj && create) {
|
|
51
|
-
obj = {};
|
|
52
|
-
arr.push(obj);
|
|
53
|
-
}
|
|
54
|
-
return obj;
|
|
55
|
-
}
|
|
56
|
-
set(path, value) {
|
|
57
|
-
let obj = this.assertObject(true);
|
|
58
|
-
Objects.set(obj, path, value);
|
|
59
|
-
}
|
|
60
|
-
get(path, def) {
|
|
61
|
-
let obj = this.assertObject(false) || {};
|
|
62
|
-
return Objects.get(obj, path, def);
|
|
63
|
-
}
|
|
64
|
-
unset(path) {
|
|
65
|
-
let obj = this.assertObject(true);
|
|
66
|
-
Objects.unset(obj, path);
|
|
67
|
-
if (Types.isArray(this.o[this.n])) {
|
|
68
|
-
this.o[this.n] = this.o[this.n].filter((v) => !Types.isEmpty(v));
|
|
69
|
-
if (this.o[this.n].length === 1)
|
|
70
|
-
this.o[this.n] = this.o[this.n][0];
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
has(path) {
|
|
74
|
-
let obj = this.assertObject(false) || {};
|
|
75
|
-
return Objects.has(obj, path);
|
|
76
|
-
}
|
|
77
|
-
assign(values) {
|
|
78
|
-
let obj = this.assertObject(true);
|
|
79
|
-
return Objects.merge(obj, values);
|
|
80
|
-
}
|
|
81
|
-
//#endregion
|
|
82
|
-
clear() {
|
|
83
|
-
delete this.o[this.n];
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
export class ODataQueryOptionsHandler {
|
|
87
|
-
constructor(options) {
|
|
88
|
-
this.options = options;
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* Create a new odata alias parameter
|
|
92
|
-
* @link https://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part2-url-conventions.html#sec_ParameterAliases
|
|
93
|
-
* @param value The value of the alias
|
|
94
|
-
* @param name The name of the alias
|
|
95
|
-
* @returns The alias
|
|
96
|
-
*/
|
|
97
|
-
alias(value, name) {
|
|
98
|
-
return alias(value, name);
|
|
99
|
-
}
|
|
100
|
-
select(opts) {
|
|
101
|
-
return this.options.option(QueryOptionNames.select, opts);
|
|
102
|
-
}
|
|
103
|
-
expand(opts) {
|
|
104
|
-
return this.options.option(QueryOptionNames.expand, opts);
|
|
105
|
-
}
|
|
106
|
-
compute(opts) {
|
|
107
|
-
if (Types.isFunction(opts)) {
|
|
108
|
-
return this.options.expression(QueryOptionNames.compute, opts({
|
|
109
|
-
e: () => Expression.e(),
|
|
110
|
-
and: () => Expression.and(),
|
|
111
|
-
or: () => Expression.or(),
|
|
112
|
-
not: (e) => Expression.not(e),
|
|
113
|
-
}));
|
|
114
|
-
}
|
|
115
|
-
return this.options.option(QueryOptionNames.compute, opts);
|
|
116
|
-
}
|
|
117
|
-
format(opts) {
|
|
118
|
-
return this.options.option(QueryOptionNames.format, opts);
|
|
119
|
-
}
|
|
120
|
-
transform(opts) {
|
|
121
|
-
return this.options.option(QueryOptionNames.transform, opts);
|
|
122
|
-
}
|
|
123
|
-
search(opts) {
|
|
124
|
-
return this.options.option(QueryOptionNames.search, opts);
|
|
125
|
-
}
|
|
126
|
-
filter(opts) {
|
|
127
|
-
if (Types.isFunction(opts)) {
|
|
128
|
-
return this.options.expression(QueryOptionNames.filter, opts({
|
|
129
|
-
e: () => Expression.e(),
|
|
130
|
-
and: () => Expression.and(),
|
|
131
|
-
or: () => Expression.or(),
|
|
132
|
-
not: (e) => Expression.not(e),
|
|
133
|
-
}));
|
|
134
|
-
}
|
|
135
|
-
return this.options.option(QueryOptionNames.filter, opts);
|
|
136
|
-
}
|
|
137
|
-
orderBy(opts) {
|
|
138
|
-
if (Types.isFunction(opts)) {
|
|
139
|
-
return this.options.expression(QueryOptionNames.orderBy, opts({
|
|
140
|
-
e: () => Expression.e(),
|
|
141
|
-
and: () => Expression.and(),
|
|
142
|
-
or: () => Expression.or(),
|
|
143
|
-
not: (e) => Expression.not(e),
|
|
144
|
-
}));
|
|
145
|
-
}
|
|
146
|
-
return this.options.option(QueryOptionNames.orderBy, opts);
|
|
147
|
-
}
|
|
148
|
-
top(opts) {
|
|
149
|
-
return this.options.option(QueryOptionNames.top, opts);
|
|
150
|
-
}
|
|
151
|
-
skip(opts) {
|
|
152
|
-
return this.options.option(QueryOptionNames.skip, opts);
|
|
153
|
-
}
|
|
154
|
-
skiptoken(opts) {
|
|
155
|
-
return this.options.option(QueryOptionNames.skiptoken, opts);
|
|
156
|
-
}
|
|
157
|
-
paging({ skip, skiptoken, top, } = {}) {
|
|
158
|
-
if (skiptoken !== undefined)
|
|
159
|
-
this.skiptoken(skiptoken);
|
|
160
|
-
else if (skip !== undefined)
|
|
161
|
-
this.skip(skip);
|
|
162
|
-
if (top !== undefined)
|
|
163
|
-
this.top(top);
|
|
164
|
-
}
|
|
165
|
-
clearPaging() {
|
|
166
|
-
this.skip().clear();
|
|
167
|
-
this.top().clear();
|
|
168
|
-
this.skiptoken().clear();
|
|
169
|
-
}
|
|
170
|
-
apply(query) {
|
|
171
|
-
if (query.select !== undefined) {
|
|
172
|
-
this.select(query.select);
|
|
173
|
-
}
|
|
174
|
-
if (query.expand !== undefined) {
|
|
175
|
-
this.expand(query.expand);
|
|
176
|
-
}
|
|
177
|
-
if (query.transform !== undefined) {
|
|
178
|
-
this.transform(query.transform);
|
|
179
|
-
}
|
|
180
|
-
if (query.search !== undefined) {
|
|
181
|
-
this.search(query.search);
|
|
182
|
-
}
|
|
183
|
-
if (query.filter !== undefined) {
|
|
184
|
-
this.filter(query.filter);
|
|
185
|
-
}
|
|
186
|
-
if (query.orderBy !== undefined) {
|
|
187
|
-
this.orderBy(query.orderBy);
|
|
188
|
-
}
|
|
189
|
-
this.paging(query);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLW9kYXRhL3NyYy9saWIvcmVzb3VyY2VzL3F1ZXJ5L2hhbmRsZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxLQUFLLEVBQThDLE1BQU0sV0FBVyxDQUFDO0FBRTlFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRzNDLE1BQU0sT0FBTyx1QkFBdUI7SUFDbEMsWUFDVSxDQUEwQixFQUMxQixDQUFtQjtRQURuQixNQUFDLEdBQUQsQ0FBQyxDQUF5QjtRQUMxQixNQUFDLEdBQUQsQ0FBQyxDQUFrQjtJQUMxQixDQUFDO0lBRUosSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNO1FBQ0osT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsS0FBSztRQUNILE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCx5QkFBeUI7SUFDekIsS0FBSyxDQUFDLENBQU87UUFDWCxPQUFPLENBQUMsQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUNELFlBQVk7SUFFWixx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Q0FBQztJQUNyQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYmplY3RzLCBUeXBlcyB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IGFsaWFzLCBFeHBhbmQsIEZpbHRlciwgT3JkZXJCeSwgU2VsZWN0LCBUcmFuc2Zvcm0gfSBmcm9tICcuL2J1aWxkZXInO1xuXG5pbXBvcnQgeyBRdWVyeU9wdGlvbk5hbWVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgRXhwcmVzc2lvbiB9IGZyb20gJy4vZXhwcmVzc2lvbnMnO1xuaW1wb3J0IHR5cGUgeyBPRGF0YVF1ZXJ5QXJndW1lbnRzLCBPRGF0YVF1ZXJ5T3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucyc7XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbzogeyBbbmFtZTogc3RyaW5nXTogYW55IH0sXG4gICAgcHJpdmF0ZSBuOiBRdWVyeU9wdGlvbk5hbWVzXG4gICkge31cblxuICBnZXQgbmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5uO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIHJldHVybiB0aGlzLm9bdGhpcy5uXTtcbiAgfVxuXG4gIGVtcHR5KCkge1xuICAgIHJldHVybiBUeXBlcy5pc0VtcHR5KHRoaXMub1t0aGlzLm5dKTtcbiAgfVxuXG4gIC8vI3JlZ2lvbiBQcmltaXRpdmUgVmFsdWVcbiAgdmFsdWUodj86IGFueSkge1xuICAgIHJldHVybiAodiAhPT0gdW5kZWZpbmVkICYmICh0aGlzLm9bdGhpcy5uXSA9IHYpKSB8fCB0aGlzLm9bdGhpcy5uXTtcbiAgfVxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gQXJyYXkgVmFsdWVcbiAgcHJpdmF0ZSBhc3NlcnRBcnJheSgpOiBhbnlbXSB7XG4gICAgaWYgKCFUeXBlcy5pc0FycmF5KHRoaXMub1t0aGlzLm5dKSlcbiAgICAgIHRoaXMub1t0aGlzLm5dID0gdGhpcy5vW3RoaXMubl0gIT09IHVuZGVmaW5lZCA/IFt0aGlzLm9bdGhpcy5uXV0gOiBbXTtcbiAgICByZXR1cm4gdGhpcy5vW3RoaXMubl07XG4gIH1cblxuICBwdXNoKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmFzc2VydEFycmF5KCkucHVzaCh2YWx1ZSk7XG4gIH1cblxuICByZW1vdmUodmFsdWU6IGFueSkge1xuICAgIHRoaXMub1t0aGlzLm5dID0gdGhpcy5hc3NlcnRBcnJheSgpLmZpbHRlcigodikgPT4gdiAhPT0gdmFsdWUpO1xuICAgIC8vIElmIG9ubHkgb25lLi4uIGRvd24gdG8gdmFsdWVcbiAgICBpZiAodGhpcy5vW3RoaXMubl0ubGVuZ3RoID09PSAxKSB0aGlzLm9bdGhpcy5uXSA9IHRoaXMub1t0aGlzLm5dWzBdO1xuICB9XG5cbiAgYXQoaW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmFzc2VydEFycmF5KClbaW5kZXhdO1xuICB9XG4gIC8vI2VuZHJlZ2lvblxuXG4gIC8vI3JlZ2lvbiBIYXNoTWFwIFZhbHVlXG4gIHByaXZhdGUgYXNzZXJ0T2JqZWN0KGNyZWF0ZTogYm9vbGVhbik6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICBpZiAoIVR5cGVzLmlzQXJyYXkodGhpcy5vW3RoaXMubl0pICYmIFR5cGVzLmlzUGxhaW5PYmplY3QodGhpcy5vW3RoaXMubl0pKSB7XG4gICAgICByZXR1cm4gdGhpcy5vW3RoaXMubl07XG4gICAgfVxuICAgIGxldCBhcnIgPSB0aGlzLmFzc2VydEFycmF5KCk7XG4gICAgbGV0IG9iaiA9IGFyci5maW5kKCh2KSA9PiBUeXBlcy5pc1BsYWluT2JqZWN0KHYpKTtcbiAgICBpZiAoIW9iaiAmJiBjcmVhdGUpIHtcbiAgICAgIG9iaiA9IHt9O1xuICAgICAgYXJyLnB1c2gob2JqKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIHNldChwYXRoOiBzdHJpbmcsIHZhbHVlOiBhbnkpIHtcbiAgICBsZXQgb2JqID0gdGhpcy5hc3NlcnRPYmplY3QodHJ1ZSk7XG4gICAgT2JqZWN0cy5zZXQob2JqLCBwYXRoLCB2YWx1ZSk7XG4gIH1cblxuICBnZXQocGF0aDogc3RyaW5nLCBkZWY/OiBhbnkpOiBhbnkge1xuICAgIGxldCBvYmogPSB0aGlzLmFzc2VydE9iamVjdChmYWxzZSkgfHwge307XG4gICAgcmV0dXJuIE9iamVjdHMuZ2V0KG9iaiwgcGF0aCwgZGVmKTtcbiAgfVxuXG4gIHVuc2V0KHBhdGg6IHN0cmluZykge1xuICAgIGxldCBvYmogPSB0aGlzLmFzc2VydE9iamVjdCh0cnVlKTtcbiAgICBPYmplY3RzLnVuc2V0KG9iaiwgcGF0aCk7XG5cbiAgICBpZiAoVHlwZXMuaXNBcnJheSh0aGlzLm9bdGhpcy5uXSkpIHtcbiAgICAgIHRoaXMub1t0aGlzLm5dID0gdGhpcy5vW3RoaXMubl0uZmlsdGVyKCh2OiBhbnkpID0+ICFUeXBlcy5pc0VtcHR5KHYpKTtcbiAgICAgIGlmICh0aGlzLm9bdGhpcy5uXS5sZW5ndGggPT09IDEpIHRoaXMub1t0aGlzLm5dID0gdGhpcy5vW3RoaXMubl1bMF07XG4gICAgfVxuICB9XG5cbiAgaGFzKHBhdGg6IHN0cmluZykge1xuICAgIGxldCBvYmogPSB0aGlzLmFzc2VydE9iamVjdChmYWxzZSkgfHwge307XG4gICAgcmV0dXJuIE9iamVjdHMuaGFzKG9iaiwgcGF0aCk7XG4gIH1cblxuICBhc3NpZ24odmFsdWVzOiB7IFthdHRyOiBzdHJpbmddOiBhbnkgfSkge1xuICAgIGxldCBvYmogPSB0aGlzLmFzc2VydE9iamVjdCh0cnVlKTtcbiAgICByZXR1cm4gT2JqZWN0cy5tZXJnZShvYmosIHZhbHVlcyk7XG4gIH1cbiAgLy8jZW5kcmVnaW9uXG5cbiAgY2xlYXIoKSB7XG4gICAgZGVsZXRlIHRoaXMub1t0aGlzLm5dO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPRGF0YVF1ZXJ5T3B0aW9uc0hhbmRsZXI8VD4ge1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgb3B0aW9uczogT0RhdGFRdWVyeU9wdGlvbnM8VD4pIHt9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBvZGF0YSBhbGlhcyBwYXJhbWV0ZXJcbiAgICogQGxpbmsgaHR0cHM6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL29kYXRhL29kYXRhL3Y0LjAxL29kYXRhLXY0LjAxLXBhcnQyLXVybC1jb252ZW50aW9ucy5odG1sI3NlY19QYXJhbWV0ZXJBbGlhc2VzXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGFsaWFzXG4gICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBhbGlhc1xuICAgKiBAcmV0dXJucyBUaGUgYWxpYXNcbiAgICovXG4gIGFsaWFzKHZhbHVlOiBhbnksIG5hbWU/OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYWxpYXModmFsdWUsIG5hbWUpO1xuICB9XG5cbiAgc2VsZWN0KG9wdHM6IFNlbGVjdDxUPik6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBzZWxlY3QoKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHNlbGVjdChvcHRzPzogU2VsZWN0PFQ+KTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxTZWxlY3Q8VD4+KFF1ZXJ5T3B0aW9uTmFtZXMuc2VsZWN0LCBvcHRzKTtcbiAgfVxuXG4gIGV4cGFuZChvcHRzOiBFeHBhbmQ8VD4pOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgZXhwYW5kKCk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBleHBhbmQob3B0cz86IEV4cGFuZDxUPik6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5vcHRpb248RXhwYW5kPFQ+PihRdWVyeU9wdGlvbk5hbWVzLmV4cGFuZCwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQGxpbmsgaHR0cHM6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL29kYXRhL29kYXRhL3Y0LjAxL29kYXRhLXY0LjAxLXBhcnQyLXVybC1jb252ZW50aW9ucy5odG1sI3NlY19TeXN0ZW1RdWVyeU9wdGlvbmNvbXB1dGVcbiAgICovXG4gIGNvbXB1dGUoXG4gICAgb3B0czogKGU6IHtcbiAgICAgIGU6IEV4cHJlc3Npb248VD47XG4gICAgICBhbmQ6IEV4cHJlc3Npb248VD47XG4gICAgICBvcjogRXhwcmVzc2lvbjxUPjtcbiAgICAgIG5vdDogdHlwZW9mIEV4cHJlc3Npb24ubm90O1xuICAgIH0pID0+IEV4cHJlc3Npb248VD5cbiAgKTogRXhwcmVzc2lvbjxUPjtcbiAgY29tcHV0ZShvcHRzOiBzdHJpbmcpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgY29tcHV0ZSgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgY29tcHV0ZShvcHRzPzogYW55KTogYW55IHtcbiAgICBpZiAoVHlwZXMuaXNGdW5jdGlvbihvcHRzKSkge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFxuICAgICAgICBRdWVyeU9wdGlvbk5hbWVzLmNvbXB1dGUsXG4gICAgICAgIG9wdHMoe1xuICAgICAgICAgIGU6ICgpID0+IEV4cHJlc3Npb24uZTxUPigpLFxuICAgICAgICAgIGFuZDogKCkgPT4gRXhwcmVzc2lvbi5hbmQ8VD4oKSxcbiAgICAgICAgICBvcjogKCkgPT4gRXhwcmVzc2lvbi5vcjxUPigpLFxuICAgICAgICAgIG5vdDogKGU6IEV4cHJlc3Npb248VD4pID0+IEV4cHJlc3Npb24ubm90KGUpLFxuICAgICAgICB9KSBhcyBFeHByZXNzaW9uPFQ+XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxzdHJpbmc+KFF1ZXJ5T3B0aW9uTmFtZXMuY29tcHV0ZSwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogQGxpbmsgaHR0cHM6Ly9kb2NzLm9hc2lzLW9wZW4ub3JnL29kYXRhL29kYXRhL3Y0LjAxL29kYXRhLXY0LjAxLXBhcnQyLXVybC1jb252ZW50aW9ucy5odG1sI3NlY19TeXN0ZW1RdWVyeU9wdGlvbmZvcm1hdFxuICAgKi9cbiAgZm9ybWF0KG9wdHM6IHN0cmluZyk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBmb3JtYXQoKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIGZvcm1hdChvcHRzPzogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxzdHJpbmc+KFF1ZXJ5T3B0aW9uTmFtZXMuZm9ybWF0LCBvcHRzKTtcbiAgfVxuXG4gIHRyYW5zZm9ybShvcHRzOiBUcmFuc2Zvcm08VD4pOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgdHJhbnNmb3JtKCk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICB0cmFuc2Zvcm0ob3B0cz86IFRyYW5zZm9ybTxUPik6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5vcHRpb248VHJhbnNmb3JtPFQ+PihRdWVyeU9wdGlvbk5hbWVzLnRyYW5zZm9ybSwgb3B0cyk7XG4gIH1cblxuICBzZWFyY2gob3B0czogc3RyaW5nKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHNlYXJjaCgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2VhcmNoKG9wdHM/OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPHN0cmluZz4oUXVlcnlPcHRpb25OYW1lcy5zZWFyY2gsIG9wdHMpO1xuICB9XG5cbiAgZmlsdGVyKFxuICAgIG9wdHM6IChlOiB7XG4gICAgICBlOiAoKSA9PiBFeHByZXNzaW9uPFQ+O1xuICAgICAgYW5kOiAoKSA9PiBFeHByZXNzaW9uPFQ+O1xuICAgICAgb3I6ICgpID0+IEV4cHJlc3Npb248VD47XG4gICAgICBub3Q6IChlOiBFeHByZXNzaW9uPFQ+KSA9PiBFeHByZXNzaW9uPFQ+O1xuICAgIH0pID0+IEV4cHJlc3Npb248VD5cbiAgKTogRXhwcmVzc2lvbjxUPjtcbiAgZmlsdGVyKG9wdHM6IEZpbHRlcjxUPik6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBmaWx0ZXIoKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIGZpbHRlcihvcHRzPzogYW55KTogYW55IHtcbiAgICBpZiAoVHlwZXMuaXNGdW5jdGlvbihvcHRzKSkge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5leHByZXNzaW9uKFxuICAgICAgICBRdWVyeU9wdGlvbk5hbWVzLmZpbHRlcixcbiAgICAgICAgb3B0cyh7XG4gICAgICAgICAgZTogKCkgPT4gRXhwcmVzc2lvbi5lPFQ+KCksXG4gICAgICAgICAgYW5kOiAoKSA9PiBFeHByZXNzaW9uLmFuZDxUPigpLFxuICAgICAgICAgIG9yOiAoKSA9PiBFeHByZXNzaW9uLm9yPFQ+KCksXG4gICAgICAgICAgbm90OiAoZTogRXhwcmVzc2lvbjxUPikgPT4gRXhwcmVzc2lvbi5ub3QoZSksXG4gICAgICAgIH0pIGFzIEV4cHJlc3Npb248VD5cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPEZpbHRlcjxUPj4oUXVlcnlPcHRpb25OYW1lcy5maWx0ZXIsIG9wdHMpO1xuICB9XG5cbiAgb3JkZXJCeShcbiAgICBvcHRzOiAoZToge1xuICAgICAgZTogKCkgPT4gRXhwcmVzc2lvbjxUPjtcbiAgICAgIGFuZDogKCkgPT4gRXhwcmVzc2lvbjxUPjtcbiAgICAgIG9yOiAoKSA9PiBFeHByZXNzaW9uPFQ+O1xuICAgICAgbm90OiAoZTogRXhwcmVzc2lvbjxUPikgPT4gRXhwcmVzc2lvbjxUPjtcbiAgICB9KSA9PiBFeHByZXNzaW9uPFQ+XG4gICk6IEV4cHJlc3Npb248VD47XG4gIG9yZGVyQnkob3B0czogT3JkZXJCeTxUPik6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBvcmRlckJ5KCk6IE9EYXRhUXVlcnlPcHRpb25IYW5kbGVyPFQ+O1xuICBvcmRlckJ5KG9wdHM/OiBhbnkpOiBhbnkge1xuICAgIGlmIChUeXBlcy5pc0Z1bmN0aW9uKG9wdHMpKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmV4cHJlc3Npb24oXG4gICAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMub3JkZXJCeSxcbiAgICAgICAgb3B0cyh7XG4gICAgICAgICAgZTogKCkgPT4gRXhwcmVzc2lvbi5lPFQ+KCksXG4gICAgICAgICAgYW5kOiAoKSA9PiBFeHByZXNzaW9uLmFuZDxUPigpLFxuICAgICAgICAgIG9yOiAoKSA9PiBFeHByZXNzaW9uLm9yPFQ+KCksXG4gICAgICAgICAgbm90OiAoZTogRXhwcmVzc2lvbjxUPikgPT4gRXhwcmVzc2lvbi5ub3QoZSksXG4gICAgICAgIH0pIGFzIEV4cHJlc3Npb248VD5cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPE9yZGVyQnk8VD4+KFF1ZXJ5T3B0aW9uTmFtZXMub3JkZXJCeSwgb3B0cyk7XG4gIH1cblxuICB0b3Aob3B0czogbnVtYmVyKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHRvcCgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgdG9wKG9wdHM/OiBudW1iZXIpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPG51bWJlcj4oUXVlcnlPcHRpb25OYW1lcy50b3AsIG9wdHMpO1xuICB9XG5cbiAgc2tpcChvcHRzOiBudW1iZXIpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2tpcCgpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2tpcChvcHRzPzogbnVtYmVyKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLm9wdGlvbjxudW1iZXI+KFF1ZXJ5T3B0aW9uTmFtZXMuc2tpcCwgb3B0cyk7XG4gIH1cblxuICBza2lwdG9rZW4ob3B0czogc3RyaW5nKTogT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8VD47XG4gIHNraXB0b2tlbigpOiBPRGF0YVF1ZXJ5T3B0aW9uSGFuZGxlcjxUPjtcbiAgc2tpcHRva2VuKG9wdHM/OiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMub3B0aW9uPHN0cmluZz4oUXVlcnlPcHRpb25OYW1lcy5za2lwdG9rZW4sIG9wdHMpO1xuICB9XG5cbiAgcGFnaW5nKHtcbiAgICBza2lwLFxuICAgIHNraXB0b2tlbixcbiAgICB0b3AsXG4gIH06IHsgc2tpcD86IG51bWJlcjsgc2tpcHRva2VuPzogc3RyaW5nOyB0b3A/OiBudW1iZXIgfSA9IHt9KSB7XG4gICAgaWYgKHNraXB0b2tlbiAhPT0gdW5kZWZpbmVkKSB0aGlzLnNraXB0b2tlbihza2lwdG9rZW4pO1xuICAgIGVsc2UgaWYgKHNraXAgIT09IHVuZGVmaW5lZCkgdGhpcy5za2lwKHNraXApO1xuICAgIGlmICh0b3AgIT09IHVuZGVmaW5lZCkgdGhpcy50b3AodG9wKTtcbiAgfVxuXG4gIGNsZWFyUGFnaW5nKCkge1xuICAgIHRoaXMuc2tpcCgpLmNsZWFyKCk7XG4gICAgdGhpcy50b3AoKS5jbGVhcigpO1xuICAgIHRoaXMuc2tpcHRva2VuKCkuY2xlYXIoKTtcbiAgfVxuXG4gIGFwcGx5KHF1ZXJ5OiBPRGF0YVF1ZXJ5QXJndW1lbnRzPFQ+KSB7XG4gICAgaWYgKHF1ZXJ5LnNlbGVjdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNlbGVjdChxdWVyeS5zZWxlY3QpO1xuICAgIH1cbiAgICBpZiAocXVlcnkuZXhwYW5kICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZXhwYW5kKHF1ZXJ5LmV4cGFuZCk7XG4gICAgfVxuICAgIGlmIChxdWVyeS50cmFuc2Zvcm0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50cmFuc2Zvcm0ocXVlcnkudHJhbnNmb3JtKTtcbiAgICB9XG4gICAgaWYgKHF1ZXJ5LnNlYXJjaCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnNlYXJjaChxdWVyeS5zZWFyY2gpO1xuICAgIH1cbiAgICBpZiAocXVlcnkuZmlsdGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZmlsdGVyKHF1ZXJ5LmZpbHRlcik7XG4gICAgfVxuICAgIGlmIChxdWVyeS5vcmRlckJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMub3JkZXJCeShxdWVyeS5vcmRlckJ5KTtcbiAgICB9XG4gICAgdGhpcy5wYWdpbmcocXVlcnkpO1xuICB9XG59XG4iXX0=
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { Objects, Types } from '../../utils';
|
|
2
|
-
import { buildPathAndQuery, } from './builder';
|
|
3
|
-
import { QueryOptionNames } from '../../types';
|
|
4
|
-
import { ODataQueryOptionHandler } from './handlers';
|
|
5
|
-
export class ODataQueryOptions {
|
|
6
|
-
constructor(options) {
|
|
7
|
-
this.options = options || {};
|
|
8
|
-
}
|
|
9
|
-
// Params
|
|
10
|
-
pathAndParams(escape = false) {
|
|
11
|
-
let aliases = [];
|
|
12
|
-
let options = [
|
|
13
|
-
QueryOptionNames.select,
|
|
14
|
-
QueryOptionNames.filter,
|
|
15
|
-
QueryOptionNames.search,
|
|
16
|
-
QueryOptionNames.compute,
|
|
17
|
-
QueryOptionNames.transform,
|
|
18
|
-
QueryOptionNames.orderBy,
|
|
19
|
-
QueryOptionNames.top,
|
|
20
|
-
QueryOptionNames.skip,
|
|
21
|
-
QueryOptionNames.skiptoken,
|
|
22
|
-
QueryOptionNames.expand,
|
|
23
|
-
QueryOptionNames.format,
|
|
24
|
-
]
|
|
25
|
-
.filter((key) => !Types.isEmpty(this.options[key]))
|
|
26
|
-
.reduce((acc, key) => {
|
|
27
|
-
let value = this.options[key];
|
|
28
|
-
if (Types.rawType(value) === 'Expression') {
|
|
29
|
-
value = value.render(aliases);
|
|
30
|
-
}
|
|
31
|
-
return Object.assign(acc, { [key]: value });
|
|
32
|
-
}, {});
|
|
33
|
-
return buildPathAndQuery(Object.assign(Object.assign({}, options), { aliases, escape }));
|
|
34
|
-
}
|
|
35
|
-
toString() {
|
|
36
|
-
const [path, params] = this.pathAndParams();
|
|
37
|
-
return (path +
|
|
38
|
-
Object.entries(params)
|
|
39
|
-
.filter(([, value]) => !Types.isEmpty(value))
|
|
40
|
-
.map(([key, value]) => `${key}=${value}`)
|
|
41
|
-
.join('&'));
|
|
42
|
-
}
|
|
43
|
-
toJSON() {
|
|
44
|
-
return Object.keys(this.options).reduce((acc, key) => {
|
|
45
|
-
let value = this.options[key];
|
|
46
|
-
if (Types.rawType(value) === 'Expression') {
|
|
47
|
-
value = value.toJSON();
|
|
48
|
-
}
|
|
49
|
-
return Object.assign(acc, { [key]: value });
|
|
50
|
-
}, {});
|
|
51
|
-
}
|
|
52
|
-
toQueryArguments() {
|
|
53
|
-
return {
|
|
54
|
-
select: this.options[QueryOptionNames.select],
|
|
55
|
-
expand: this.options[QueryOptionNames.expand],
|
|
56
|
-
transform: this.options[QueryOptionNames.transform],
|
|
57
|
-
compute: this.options[QueryOptionNames.compute],
|
|
58
|
-
search: this.options[QueryOptionNames.search],
|
|
59
|
-
filter: this.options[QueryOptionNames.filter],
|
|
60
|
-
orderBy: this.options[QueryOptionNames.orderBy],
|
|
61
|
-
top: this.options[QueryOptionNames.top],
|
|
62
|
-
skip: this.options[QueryOptionNames.skip],
|
|
63
|
-
skiptoken: this.options[QueryOptionNames.skiptoken],
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
clone() {
|
|
67
|
-
const options = Object.keys(this.options).reduce((acc, key) => {
|
|
68
|
-
let value = this.options[key];
|
|
69
|
-
if (Types.rawType(value) !== 'Expression') {
|
|
70
|
-
value = Objects.clone(value);
|
|
71
|
-
}
|
|
72
|
-
return Object.assign(acc, { [key]: value });
|
|
73
|
-
}, {});
|
|
74
|
-
return new ODataQueryOptions(options);
|
|
75
|
-
}
|
|
76
|
-
// Set Expression
|
|
77
|
-
expression(name, exp) {
|
|
78
|
-
return (this.options[name] = exp);
|
|
79
|
-
}
|
|
80
|
-
// Option Handler
|
|
81
|
-
option(name, opts) {
|
|
82
|
-
if (opts !== undefined)
|
|
83
|
-
this.options[name] = opts;
|
|
84
|
-
return new ODataQueryOptionHandler(this.options, name);
|
|
85
|
-
}
|
|
86
|
-
// Query Options tools
|
|
87
|
-
has(name) {
|
|
88
|
-
return this.options[name] !== undefined;
|
|
89
|
-
}
|
|
90
|
-
remove(...names) {
|
|
91
|
-
names.forEach((name) => this.option(name).clear());
|
|
92
|
-
}
|
|
93
|
-
keep(...names) {
|
|
94
|
-
this.options = Object.keys(this.options)
|
|
95
|
-
.filter((k) => names.indexOf(k) !== -1)
|
|
96
|
-
.reduce((acc, k) => Object.assign(acc, { [k]: this.options[k] }), {});
|
|
97
|
-
}
|
|
98
|
-
// Clear
|
|
99
|
-
clear() {
|
|
100
|
-
this.options = {};
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItb2RhdGEvc3JjL2xpYi9yZXNvdXJjZXMvcXVlcnkvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QyxPQUFPLEVBTUwsaUJBQWlCLEdBR2xCLE1BQU0sV0FBVyxDQUFDO0FBRW5CLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFpQnJELE1BQU0sT0FBTyxpQkFBaUI7SUFHNUIsWUFBWSxPQUFpQztRQUMzQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFNBQVM7SUFDVCxhQUFhLENBQUMsU0FBa0IsS0FBSztRQUNuQyxJQUFJLE9BQU8sR0FBc0IsRUFBRSxDQUFDO1FBQ3BDLElBQUksT0FBTyxHQUFHO1lBQ1osZ0JBQWdCLENBQUMsTUFBTTtZQUN2QixnQkFBZ0IsQ0FBQyxNQUFNO1lBQ3ZCLGdCQUFnQixDQUFDLE1BQU07WUFDdkIsZ0JBQWdCLENBQUMsT0FBTztZQUN4QixnQkFBZ0IsQ0FBQyxTQUFTO1lBQzFCLGdCQUFnQixDQUFDLE9BQU87WUFDeEIsZ0JBQWdCLENBQUMsR0FBRztZQUNwQixnQkFBZ0IsQ0FBQyxJQUFJO1lBQ3JCLGdCQUFnQixDQUFDLFNBQVM7WUFDMUIsZ0JBQWdCLENBQUMsTUFBTTtZQUN2QixnQkFBZ0IsQ0FBQyxNQUFNO1NBQ3hCO2FBQ0UsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ2xELE1B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QyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxDQUFDLEdBQUcsS0FBeUI7UUFDL0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7YUFDckMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzthQUMxRCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELFFBQVE7SUFDUixLQUFLO1FBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDcEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JqZWN0cywgVHlwZXMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQge1xuICBFeHBhbmQsXG4gIEZpbHRlcixcbiAgT3JkZXJCeSxcbiAgU2VsZWN0LFxuICBUcmFuc2Zvcm0sXG4gIGJ1aWxkUGF0aEFuZFF1ZXJ5LFxuICBRdWVyeUN1c3RvbVR5cGUsXG4gIGFsaWFzLFxufSBmcm9tICcuL2J1aWxkZXInO1xuXG5pbXBvcnQgeyBRdWVyeU9wdGlvbk5hbWVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXIgfSBmcm9tICcuL2hhbmRsZXJzJztcbmltcG9ydCB7IEV4cHJlc3Npb24gfSBmcm9tICcuL2V4cHJlc3Npb25zJztcblxuZXhwb3J0IHR5cGUgT0RhdGFRdWVyeUFyZ3VtZW50czxUPiA9IHtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuc2VsZWN0XT86IFNlbGVjdDxUPjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuZmlsdGVyXT86IEZpbHRlcjxUPjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuc2VhcmNoXT86IHN0cmluZztcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuY29tcHV0ZV0/OiBzdHJpbmc7XG4gIFtRdWVyeU9wdGlvbk5hbWVzLnRyYW5zZm9ybV0/OiBUcmFuc2Zvcm08VD47XG4gIFtRdWVyeU9wdGlvbk5hbWVzLm9yZGVyQnldPzogT3JkZXJCeTxUPjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMudG9wXT86IG51bWJlcjtcbiAgW1F1ZXJ5T3B0aW9uTmFtZXMuc2tpcF0/OiBudW1iZXI7XG4gIFtRdWVyeU9wdGlvbk5hbWVzLnNraXB0b2tlbl0/OiBzdHJpbmc7XG4gIFtRdWVyeU9wdGlvbk5hbWVzLmV4cGFuZF0/OiBFeHBhbmQ8VD47XG4gIFtRdWVyeU9wdGlvbk5hbWVzLmZvcm1hdF0/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY2xhc3MgT0RhdGFRdWVyeU9wdGlvbnM8VD4ge1xuICBvcHRpb25zOiB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfTtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zPzogeyBbbmFtZTogc3RyaW5nXTogYW55IH0pIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB9XG5cbiAgLy8gUGFyYW1zXG4gIHBhdGhBbmRQYXJhbXMoZXNjYXBlOiBib29sZWFuID0gZmFsc2UpOiBbc3RyaW5nLCB7IFtuYW1lOiBzdHJpbmddOiBhbnkgfV0ge1xuICAgIGxldCBhbGlhc2VzOiBRdWVyeUN1c3RvbVR5cGVbXSA9IFtdO1xuICAgIGxldCBvcHRpb25zID0gW1xuICAgICAgUXVlcnlPcHRpb25OYW1lcy5zZWxlY3QsXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLmZpbHRlcixcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMuc2VhcmNoLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5jb21wdXRlLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy50cmFuc2Zvcm0sXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLm9yZGVyQnksXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLnRvcCxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMuc2tpcCxcbiAgICAgIFF1ZXJ5T3B0aW9uTmFtZXMuc2tpcHRva2VuLFxuICAgICAgUXVlcnlPcHRpb25OYW1lcy5leHBhbmQsXG4gICAgICBRdWVyeU9wdGlvbk5hbWVzLmZvcm1hdCxcbiAgICBdXG4gICAgICAuZmlsdGVyKChrZXkpID0+ICFUeXBlcy5pc0VtcHR5KHRoaXMub3B0aW9uc1trZXldKSlcbiAgICAgIC5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMub3B0aW9uc1trZXldO1xuICAgICAgICBpZiAoVHlwZXMucmF3VHlwZSh2YWx1ZSkgPT09ICdFeHByZXNzaW9uJykge1xuICAgICAgICAgIHZhbHVlID0gdmFsdWUucmVuZGVyKGFsaWFzZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGFjYywgeyBba2V5XTogdmFsdWUgfSk7XG4gICAgICB9LCB7fSk7XG5cbiAgICByZXR1cm4gYnVpbGRQYXRoQW5kUXVlcnk8YW55Pih7IC4uLm9wdGlvbnMsIGFsaWFzZXMsIGVzY2FwZSB9KTtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgY29uc3QgW3BhdGgsIHBhcmFtc10gPSB0aGlzLnBhdGhBbmRQYXJhbXMoKTtcbiAgICByZXR1cm4gKFxuICAgICAgcGF0aCArXG4gICAgICBPYmplY3QuZW50cmllcyhwYXJhbXMpXG4gICAgICAgIC5maWx0ZXIoKFssIHZhbHVlXSkgPT4gIVR5cGVzLmlzRW1wdHkodmFsdWUpKVxuICAgICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IGAke2tleX09JHt2YWx1ZX1gKVxuICAgICAgICAuam9pbignJicpXG4gICAgKTtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5vcHRpb25zKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSB0aGlzLm9wdGlvbnNba2V5XTtcbiAgICAgIGlmIChUeXBlcy5yYXdUeXBlKHZhbHVlKSA9PT0gJ0V4cHJlc3Npb24nKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUudG9KU09OKCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW2tleV06IHZhbHVlIH0pO1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIHRvUXVlcnlBcmd1bWVudHMoKTogT0RhdGFRdWVyeUFyZ3VtZW50czxUPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNlbGVjdDogdGhpcy5vcHRpb25zW1F1ZXJ5T3B0aW9uTmFtZXMuc2VsZWN0XSxcbiAgICAgIGV4cGFuZDogdGhpcy5vcHRpb25zW1F1ZXJ5T3B0aW9uTmFtZXMuZXhwYW5kXSxcbiAgICAgIHRyYW5zZm9ybTogdGhpcy5vcHRpb25zW1F1ZXJ5T3B0aW9uTmFtZXMudHJhbnNmb3JtXSxcbiAgICAgIGNvbXB1dGU6IHRoaXMub3B0aW9uc1tRdWVyeU9wdGlvbk5hbWVzLmNvbXB1dGVdLFxuICAgICAgc2VhcmNoOiB0aGlzLm9wdGlvbnNbUXVlcnlPcHRpb25OYW1lcy5zZWFyY2hdLFxuICAgICAgZmlsdGVyOiB0aGlzLm9wdGlvbnNbUXVlcnlPcHRpb25OYW1lcy5maWx0ZXJdLFxuICAgICAgb3JkZXJCeTogdGhpcy5vcHRpb25zW1F1ZXJ5T3B0aW9uTmFtZXMub3JkZXJCeV0sXG4gICAgICB0b3A6IHRoaXMub3B0aW9uc1tRdWVyeU9wdGlvbk5hbWVzLnRvcF0sXG4gICAgICBza2lwOiB0aGlzLm9wdGlvbnNbUXVlcnlPcHRpb25OYW1lcy5za2lwXSxcbiAgICAgIHNraXB0b2tlbjogdGhpcy5vcHRpb25zW1F1ZXJ5T3B0aW9uTmFtZXMuc2tpcHRva2VuXSxcbiAgICB9IGFzIE9EYXRhUXVlcnlBcmd1bWVudHM8VD47XG4gIH1cblxuICBjbG9uZTxPPigpIHtcbiAgICBjb25zdCBvcHRpb25zID0gT2JqZWN0LmtleXModGhpcy5vcHRpb25zKS5yZWR1Y2UoKGFjYywga2V5KSA9PiB7XG4gICAgICBsZXQgdmFsdWUgPSB0aGlzLm9wdGlvbnNba2V5XTtcbiAgICAgIGlmIChUeXBlcy5yYXdUeXBlKHZhbHVlKSAhPT0gJ0V4cHJlc3Npb24nKSB7XG4gICAgICAgIHZhbHVlID0gT2JqZWN0cy5jbG9uZSh2YWx1ZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW2tleV06IHZhbHVlIH0pO1xuICAgIH0sIHt9KTtcbiAgICByZXR1cm4gbmV3IE9EYXRhUXVlcnlPcHRpb25zPE8+KG9wdGlvbnMpO1xuICB9XG5cbiAgLy8gU2V0IEV4cHJlc3Npb25cbiAgZXhwcmVzc2lvbihuYW1lOiBRdWVyeU9wdGlvbk5hbWVzLCBleHA6IEV4cHJlc3Npb248VD4pIHtcbiAgICByZXR1cm4gKHRoaXMub3B0aW9uc1tuYW1lXSA9IGV4cCk7XG4gIH1cblxuICAvLyBPcHRpb24gSGFuZGxlclxuICBvcHRpb248Tz4obmFtZTogUXVlcnlPcHRpb25OYW1lcywgb3B0cz86IE8pIHtcbiAgICBpZiAob3B0cyAhPT0gdW5kZWZpbmVkKSB0aGlzLm9wdGlvbnNbbmFtZV0gPSBvcHRzO1xuICAgIHJldHVybiBuZXcgT0RhdGFRdWVyeU9wdGlvbkhhbmRsZXI8Tz4odGhpcy5vcHRpb25zLCBuYW1lKTtcbiAgfVxuXG4gIC8vIFF1ZXJ5IE9wdGlvbnMgdG9vbHNcbiAgaGFzKG5hbWU6IFF1ZXJ5T3B0aW9uTmFtZXMpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zW25hbWVdICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICByZW1vdmUoLi4ubmFtZXM6IFF1ZXJ5T3B0aW9uTmFtZXNbXSkge1xuICAgIG5hbWVzLmZvckVhY2goKG5hbWUpID0+IHRoaXMub3B0aW9uKG5hbWUpLmNsZWFyKCkpO1xuICB9XG5cbiAga2VlcCguLi5uYW1lczogUXVlcnlPcHRpb25OYW1lc1tdKSB7XG4gICAgdGhpcy5vcHRpb25zID0gT2JqZWN0LmtleXModGhpcy5vcHRpb25zKVxuICAgICAgLmZpbHRlcigoaykgPT4gbmFtZXMuaW5kZXhPZihrIGFzIFF1ZXJ5T3B0aW9uTmFtZXMpICE9PSAtMSlcbiAgICAgIC5yZWR1Y2UoKGFjYywgaykgPT4gT2JqZWN0LmFzc2lnbihhY2MsIHsgW2tdOiB0aGlzLm9wdGlvbnNba10gfSksIHt9KTtcbiAgfVxuXG4gIC8vIENsZWFyXG4gIGNsZWFyKCkge1xuICAgIHRoaXMub3B0aW9ucyA9IHt9O1xuICB9XG59XG4iXX0=
|