breeze-client 2.2.2 → 3.0.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/LICENSE +1 -1
- package/README.md +83 -63
- package/adapters/abstract-data-service-adapter.d.ts +120 -0
- package/adapters/abstract-data-service-adapter.js +395 -0
- package/adapters/abstract-data-service-adapter.js.map +1 -0
- package/adapters/adapter-ajax-fetch.d.ts +12 -0
- package/adapters/adapter-ajax-fetch.js +13 -0
- package/adapters/adapter-ajax-fetch.js.map +1 -0
- package/{adapter-ajax-post → adapters}/adapter-ajax-post.d.ts +40 -36
- package/{fesm2022/breeze-client-adapter-ajax-post.mjs → adapters/adapter-ajax-post.js} +80 -82
- package/adapters/adapter-ajax-post.js.map +1 -0
- package/{adapter-ajax-fetch → adapters}/adapter-core.d.ts +4 -4
- package/{fesm2022/breeze-client-adapter-uri-builder-json.mjs → adapters/adapter-core.js} +48 -91
- package/adapters/adapter-core.js.map +1 -0
- package/adapters/adapter-data-service-webapi.d.ts +9 -0
- package/{fesm2022/breeze-client-adapter-data-service-webapi.mjs → adapters/adapter-data-service-webapi.js} +105 -107
- package/adapters/adapter-data-service-webapi.js.map +1 -0
- package/adapters/adapter-model-library-backing-store.d.ts +32 -0
- package/adapters/adapter-model-library-backing-store.js +321 -0
- package/adapters/adapter-model-library-backing-store.js.map +1 -0
- package/adapters/adapter-uri-builder-json.d.ts +11 -0
- package/adapters/adapter-uri-builder-json.js +40 -0
- package/adapters/adapter-uri-builder-json.js.map +1 -0
- package/adapters/http.d.ts +52 -0
- package/adapters/http.js +202 -0
- package/adapters/http.js.map +1 -0
- package/angular/adapter-angular-httpclient.d.ts +21 -0
- package/angular/adapter-angular-httpclient.js +70 -0
- package/angular/adapter-angular-httpclient.js.map +1 -0
- package/breeze.d.ts +215 -0
- package/breeze.js +141 -0
- package/breeze.js.map +1 -0
- package/config/config.d.ts +212 -0
- package/config/config.js +392 -0
- package/config/config.js.map +1 -0
- package/config/configure.d.ts +66 -0
- package/config/configure.js +46 -0
- package/config/configure.js.map +1 -0
- package/config/default-adapters.d.ts +1 -0
- package/config/default-adapters.js +40 -0
- package/config/default-adapters.js.map +1 -0
- package/config/interface-registry.d.ts +191 -0
- package/config/interface-registry.js +5 -0
- package/config/interface-registry.js.map +1 -0
- package/{src → core}/assert-param.d.ts +52 -60
- package/core/assert-param.js +390 -0
- package/core/assert-param.js.map +1 -0
- package/core/core.d.ts +285 -0
- package/core/core.js +772 -0
- package/core/core.js.map +1 -0
- package/core/enum.d.ts +116 -0
- package/core/enum.js +167 -0
- package/core/enum.js.map +1 -0
- package/core/event.d.ts +169 -0
- package/core/event.js +338 -0
- package/core/event.js.map +1 -0
- package/entity/array.d.ts +3 -0
- package/entity/array.js +4 -0
- package/entity/array.js.map +1 -0
- package/entity/complex-array.d.ts +17 -0
- package/entity/complex-array.js +104 -0
- package/entity/complex-array.js.map +1 -0
- package/entity/default-property-interceptor.d.ts +1 -0
- package/entity/default-property-interceptor.js +496 -0
- package/entity/default-property-interceptor.js.map +1 -0
- package/{src → entity}/entity-action.d.ts +36 -42
- package/entity/entity-action.js +45 -0
- package/entity/entity-action.js.map +1 -0
- package/entity/entity-aspect.d.ts +457 -0
- package/entity/entity-aspect.js +1262 -0
- package/entity/entity-aspect.js.map +1 -0
- package/entity/entity-base.d.ts +55 -0
- package/entity/entity-base.js +41 -0
- package/entity/entity-base.js.map +1 -0
- package/entity/entity-group.d.ts +1 -0
- package/entity/entity-group.js +224 -0
- package/entity/entity-group.js.map +1 -0
- package/entity/entity-key.d.ts +95 -0
- package/entity/entity-key.js +189 -0
- package/entity/entity-key.js.map +1 -0
- package/{src → entity}/entity-state.d.ts +112 -84
- package/entity/entity-state.js +135 -0
- package/entity/entity-state.js.map +1 -0
- package/entity/key-generator.d.ts +57 -0
- package/entity/key-generator.js +155 -0
- package/entity/key-generator.js.map +1 -0
- package/entity/observable-array.d.ts +25 -0
- package/entity/observable-array.js +230 -0
- package/entity/observable-array.js.map +1 -0
- package/entity/primitive-array.d.ts +12 -0
- package/entity/primitive-array.js +71 -0
- package/entity/primitive-array.js.map +1 -0
- package/entity/relation-array.d.ts +24 -0
- package/entity/relation-array.js +176 -0
- package/entity/relation-array.js.map +1 -0
- package/entity/unattached-children-map.d.ts +1 -0
- package/entity/unattached-children-map.js +105 -0
- package/entity/unattached-children-map.js.map +1 -0
- package/generate-entity-classes.js +1176 -0
- package/manager/entity-manager.d.ts +801 -0
- package/manager/entity-manager.js +2395 -0
- package/manager/entity-manager.js.map +1 -0
- package/{src → manager}/save-options.d.ts +48 -42
- package/manager/save-options.js +51 -0
- package/manager/save-options.js.map +1 -0
- package/{src → metadata}/data-service.d.ts +229 -184
- package/metadata/data-service.js +246 -0
- package/metadata/data-service.js.map +1 -0
- package/metadata/data-type.d.ts +122 -0
- package/metadata/data-type.js +465 -0
- package/metadata/data-type.js.map +1 -0
- package/metadata/entity-metadata.d.ts +1193 -0
- package/metadata/entity-metadata.js +2502 -0
- package/metadata/entity-metadata.js.map +1 -0
- package/{src → metadata}/local-query-comparison-options.d.ts +65 -59
- package/metadata/local-query-comparison-options.js +69 -0
- package/metadata/local-query-comparison-options.js.map +1 -0
- package/{src → metadata}/naming-convention.d.ts +75 -72
- package/metadata/naming-convention.js +97 -0
- package/metadata/naming-convention.js.map +1 -0
- package/mixins/mixin-get-entity-graph.d.ts +63 -0
- package/{fesm2022/breeze-client-mixin-get-entity-graph.mjs → mixins/mixin-get-entity-graph.js} +331 -253
- package/mixins/mixin-get-entity-graph.js.map +1 -0
- package/mixins/mixin-save-queuing.d.ts +98 -0
- package/{fesm2022/breeze-client-mixin-save-queuing.mjs → mixins/mixin-save-queuing.js} +493 -365
- package/mixins/mixin-save-queuing.js.map +1 -0
- package/package.json +63 -94
- package/query/entity-query.d.ts +521 -0
- package/query/entity-query.js +1149 -0
- package/query/entity-query.js.map +1 -0
- package/{src → query}/mapping-context.d.ts +44 -46
- package/query/mapping-context.js +412 -0
- package/query/mapping-context.js.map +1 -0
- package/query/predicate.d.ts +394 -0
- package/query/predicate.js +1294 -0
- package/query/predicate.js.map +1 -0
- package/query/property-path.d.ts +252 -0
- package/query/property-path.js +2 -0
- package/query/property-path.js.map +1 -0
- package/{src → query}/query-options.d.ts +143 -119
- package/query/query-options.js +180 -0
- package/query/query-options.js.map +1 -0
- package/rxjs/breeze-rxjs.d.ts +72 -0
- package/rxjs/breeze-rxjs.js +117 -0
- package/rxjs/breeze-rxjs.js.map +1 -0
- package/validation/validate.d.ts +583 -0
- package/validation/validate.js +961 -0
- package/validation/validate.js.map +1 -0
- package/{src → validation}/validation-options.d.ts +67 -63
- package/validation/validation-options.js +70 -0
- package/validation/validation-options.js.map +1 -0
- package/adapter-ajax-angularjs/adapter-ajax-angularjs.d.ts +0 -17
- package/adapter-ajax-angularjs/adapter-core.d.ts +0 -4
- package/adapter-ajax-angularjs/index.d.ts +0 -5
- package/adapter-ajax-fetch/adapter-ajax-fetch.d.ts +0 -18
- package/adapter-ajax-fetch/index.d.ts +0 -5
- package/adapter-ajax-httpclient/adapter-ajax-httpclient.d.ts +0 -13
- package/adapter-ajax-httpclient/adapter-core.d.ts +0 -4
- package/adapter-ajax-httpclient/index.d.ts +0 -5
- package/adapter-ajax-jquery/adapter-ajax-jquery.d.ts +0 -15
- package/adapter-ajax-jquery/index.d.ts +0 -5
- package/adapter-ajax-post/index.d.ts +0 -5
- package/adapter-data-service-odata/adapter-core.d.ts +0 -4
- package/adapter-data-service-odata/adapter-data-service-odata.d.ts +0 -17
- package/adapter-data-service-odata/index.d.ts +0 -5
- package/adapter-data-service-webapi/adapter-data-service-webapi.d.ts +0 -15
- package/adapter-data-service-webapi/index.d.ts +0 -5
- package/adapter-model-library-backing-store/adapter-model-library-backing-store.d.ts +0 -10
- package/adapter-model-library-backing-store/index.d.ts +0 -5
- package/adapter-model-library-ko/adapter-model-library-ko.d.ts +0 -10
- package/adapter-model-library-ko/index.d.ts +0 -5
- package/adapter-uri-builder-json/adapter-core.d.ts +0 -4
- package/adapter-uri-builder-json/adapter-uri-builder-json.d.ts +0 -8
- package/adapter-uri-builder-json/index.d.ts +0 -5
- package/adapter-uri-builder-odata/adapter-core.d.ts +0 -4
- package/adapter-uri-builder-odata/adapter-uri-builder-odata.d.ts +0 -8
- package/adapter-uri-builder-odata/index.d.ts +0 -5
- package/esm2022/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +0 -135
- package/esm2022/adapter-ajax-angularjs/adapter-core.mjs +0 -49
- package/esm2022/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +0 -5
- package/esm2022/adapter-ajax-fetch/adapter-ajax-fetch.mjs +0 -135
- package/esm2022/adapter-ajax-fetch/adapter-core.mjs +0 -49
- package/esm2022/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +0 -5
- package/esm2022/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +0 -139
- package/esm2022/adapter-ajax-httpclient/adapter-core.mjs +0 -49
- package/esm2022/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +0 -5
- package/esm2022/adapter-ajax-jquery/adapter-ajax-jquery.mjs +0 -107
- package/esm2022/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +0 -5
- package/esm2022/adapter-ajax-post/adapter-ajax-post.mjs +0 -77
- package/esm2022/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +0 -5
- package/esm2022/adapter-data-service-odata/adapter-core.mjs +0 -49
- package/esm2022/adapter-data-service-odata/adapter-data-service-odata.mjs +0 -461
- package/esm2022/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +0 -5
- package/esm2022/adapter-data-service-webapi/adapter-data-service-webapi.mjs +0 -100
- package/esm2022/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +0 -5
- package/esm2022/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +0 -269
- package/esm2022/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +0 -5
- package/esm2022/adapter-model-library-ko/adapter-model-library-ko.mjs +0 -241
- package/esm2022/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +0 -5
- package/esm2022/adapter-uri-builder-json/adapter-core.mjs +0 -49
- package/esm2022/adapter-uri-builder-json/adapter-uri-builder-json.mjs +0 -37
- package/esm2022/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +0 -5
- package/esm2022/adapter-uri-builder-odata/adapter-core.mjs +0 -49
- package/esm2022/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +0 -191
- package/esm2022/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +0 -5
- package/esm2022/breeze-client.mjs +0 -5
- package/esm2022/index.mjs +0 -2
- package/esm2022/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +0 -5
- package/esm2022/mixin-get-entity-graph/mixin-get-entity-graph.mjs +0 -269
- package/esm2022/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +0 -5
- package/esm2022/mixin-save-queuing/mixin-save-queuing.mjs +0 -421
- package/esm2022/src/abstract-data-service-adapter.mjs +0 -325
- package/esm2022/src/array.mjs +0 -4
- package/esm2022/src/assert-param.mjs +0 -330
- package/esm2022/src/breeze.mjs +0 -85
- package/esm2022/src/complex-array.mjs +0 -117
- package/esm2022/src/config.mjs +0 -232
- package/esm2022/src/core.mjs +0 -712
- package/esm2022/src/csdl-metadata-parser.mjs +0 -385
- package/esm2022/src/data-service.mjs +0 -221
- package/esm2022/src/data-type.mjs +0 -510
- package/esm2022/src/default-property-interceptor.mjs +0 -460
- package/esm2022/src/entity-action.mjs +0 -45
- package/esm2022/src/entity-aspect.mjs +0 -897
- package/esm2022/src/entity-group.mjs +0 -192
- package/esm2022/src/entity-key.mjs +0 -125
- package/esm2022/src/entity-manager.mjs +0 -2163
- package/esm2022/src/entity-metadata.mjs +0 -2242
- package/esm2022/src/entity-query.mjs +0 -1024
- package/esm2022/src/entity-state.mjs +0 -107
- package/esm2022/src/enum.mjs +0 -143
- package/esm2022/src/event.mjs +0 -264
- package/esm2022/src/interface-registry.mjs +0 -39
- package/esm2022/src/key-generator.mjs +0 -110
- package/esm2022/src/local-query-comparison-options.mjs +0 -65
- package/esm2022/src/mapping-context.mjs +0 -411
- package/esm2022/src/naming-convention.mjs +0 -92
- package/esm2022/src/observable-array.mjs +0 -183
- package/esm2022/src/predicate.mjs +0 -1259
- package/esm2022/src/primitive-array.mjs +0 -85
- package/esm2022/src/query-options.mjs +0 -152
- package/esm2022/src/relation-array.mjs +0 -173
- package/esm2022/src/save-options.mjs +0 -41
- package/esm2022/src/unattached-children-map.mjs +0 -56
- package/esm2022/src/validate.mjs +0 -995
- package/esm2022/src/validation-options.mjs +0 -64
- package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs +0 -190
- package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-ajax-fetch.mjs +0 -190
- package/fesm2022/breeze-client-adapter-ajax-fetch.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs +0 -194
- package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-ajax-jquery.mjs +0 -114
- package/fesm2022/breeze-client-adapter-ajax-jquery.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-ajax-post.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-data-service-odata.mjs +0 -516
- package/fesm2022/breeze-client-adapter-data-service-odata.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-data-service-webapi.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs +0 -276
- package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-model-library-ko.mjs +0 -248
- package/fesm2022/breeze-client-adapter-model-library-ko.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-uri-builder-json.mjs.map +0 -1
- package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs +0 -246
- package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs.map +0 -1
- package/fesm2022/breeze-client-mixin-get-entity-graph.mjs.map +0 -1
- package/fesm2022/breeze-client-mixin-save-queuing.mjs.map +0 -1
- package/fesm2022/breeze-client.mjs +0 -14144
- package/fesm2022/breeze-client.mjs.map +0 -1
- package/index.d.ts +0 -1
- package/mixin-get-entity-graph/index.d.ts +0 -5
- package/mixin-get-entity-graph/mixin-get-entity-graph.d.ts +0 -31
- package/mixin-save-queuing/index.d.ts +0 -5
- package/mixin-save-queuing/mixin-save-queuing.d.ts +0 -32
- package/src/abstract-data-service-adapter.d.ts +0 -84
- package/src/array.d.ts +0 -3
- package/src/breeze.d.ts +0 -139
- package/src/complex-array.d.ts +0 -13
- package/src/config.d.ts +0 -104
- package/src/core.d.ts +0 -164
- package/src/csdl-metadata-parser.d.ts +0 -7
- package/src/data-type.d.ts +0 -89
- package/src/default-property-interceptor.d.ts +0 -4
- package/src/entity-aspect.d.ts +0 -332
- package/src/entity-group.d.ts +0 -28
- package/src/entity-key.d.ts +0 -77
- package/src/entity-manager.d.ts +0 -680
- package/src/entity-metadata.d.ts +0 -988
- package/src/entity-query.d.ts +0 -444
- package/src/enum.d.ts +0 -100
- package/src/event.d.ts +0 -142
- package/src/interface-registry.d.ts +0 -150
- package/src/key-generator.d.ts +0 -12
- package/src/observable-array.d.ts +0 -52
- package/src/predicate.d.ts +0 -376
- package/src/primitive-array.d.ts +0 -7
- package/src/relation-array.d.ts +0 -18
- package/src/unattached-children-map.d.ts +0 -19
- package/src/validate.d.ts +0 -650
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { core } from './core';
|
|
2
|
-
import { observableArray } from './observable-array';
|
|
3
|
-
import { BreezeEvent } from './event';
|
|
4
|
-
// TODO: mixin impl is not very typesafe
|
|
5
|
-
// Not needed
|
|
6
|
-
// interface IPrimitiveArray extends IObservableArray {
|
|
7
|
-
// [index: number]: any;
|
|
8
|
-
// parent?: IStructuralObject;
|
|
9
|
-
// parentProperty?: DataProperty;
|
|
10
|
-
// }
|
|
11
|
-
let primitiveArrayMixin = {
|
|
12
|
-
// complexArray will have the following props
|
|
13
|
-
// parent
|
|
14
|
-
// propertyPath
|
|
15
|
-
// parentProperty
|
|
16
|
-
// addedItems - only if modified
|
|
17
|
-
// removedItems - only if modified
|
|
18
|
-
// each complexAspect of any entity within a complexArray
|
|
19
|
-
// will have its own _complexState = "A/M";
|
|
20
|
-
/**
|
|
21
|
-
Primitive arrays are not actually classes, they are objects that mimic arrays. A primitive array is collection of
|
|
22
|
-
primitive types associated with a data property on a single entity or complex object. i.e. customer.invoiceNumbers.
|
|
23
|
-
This collection looks like an array in that the basic methods on arrays such as 'push', 'pop', 'shift', 'unshift', 'splice'
|
|
24
|
-
are all provided as well as several special purpose methods.
|
|
25
|
-
@class {primitiveArray}
|
|
26
|
-
**/
|
|
27
|
-
/**
|
|
28
|
-
An [[Event]] that fires whenever the contents of this array changed. This event
|
|
29
|
-
is fired any time a new entity is attached or added to the EntityManager and happens to belong to this collection.
|
|
30
|
-
Adds that occur as a result of query or import operations are batched so that all of the adds or removes to any individual
|
|
31
|
-
collections are collected into a single notification event for each relation array.
|
|
32
|
-
@example
|
|
33
|
-
// assume order is an order entity attached to an EntityManager.
|
|
34
|
-
orders.arrayChanged.subscribe(
|
|
35
|
-
function (arrayChangedArgs) {
|
|
36
|
-
let addedEntities = arrayChangedArgs.added;
|
|
37
|
-
let removedEntities = arrayChanged.removed;
|
|
38
|
-
});
|
|
39
|
-
@event arrayChanged
|
|
40
|
-
@param added {Array of Primitives} An array of all of the items added to this collection.
|
|
41
|
-
@param removed {Array of Primitives} An array of all of the items removed from this collection.
|
|
42
|
-
@readOnly
|
|
43
|
-
**/
|
|
44
|
-
// virtual impls
|
|
45
|
-
_getGoodAdds: function (adds) {
|
|
46
|
-
return adds;
|
|
47
|
-
},
|
|
48
|
-
_beforeChange: function () {
|
|
49
|
-
let entityAspect = this.getEntityAspect();
|
|
50
|
-
if (entityAspect.entityState.isUnchanged()) {
|
|
51
|
-
entityAspect.setModified();
|
|
52
|
-
}
|
|
53
|
-
if (entityAspect.entityState.isModified() && !this._origValues) {
|
|
54
|
-
this._origValues = this.slice(0);
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
_processAdds: function (adds) {
|
|
58
|
-
// nothing needed
|
|
59
|
-
},
|
|
60
|
-
_processRemoves: function (removes) {
|
|
61
|
-
// nothing needed;
|
|
62
|
-
},
|
|
63
|
-
_rejectChanges: function () {
|
|
64
|
-
if (!this._origValues)
|
|
65
|
-
return;
|
|
66
|
-
this.length = 0;
|
|
67
|
-
Array.prototype.push.apply(this, this._origValues);
|
|
68
|
-
},
|
|
69
|
-
_acceptChanges: function () {
|
|
70
|
-
this._origValues = null;
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
// local functions
|
|
74
|
-
/** For use by breeze plugin authors only. The class is for use in building a [[IModelLibraryAdapter]] implementation.
|
|
75
|
-
@adapter (see [[IModelLibraryAdapter]])
|
|
76
|
-
@hidden
|
|
77
|
-
*/
|
|
78
|
-
export function makePrimitiveArray(arr, parent, parentProperty) {
|
|
79
|
-
let arrX = arr;
|
|
80
|
-
observableArray.initializeParent(arrX, parent, parentProperty);
|
|
81
|
-
arrX.arrayChanged = new BreezeEvent("arrayChanged", arrX);
|
|
82
|
-
core.extend(arrX, observableArray.mixin);
|
|
83
|
-
return core.extend(arrX, primitiveArrayMixin);
|
|
84
|
-
}
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbWl0aXZlLWFycmF5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3ByaW1pdGl2ZS1hcnJheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFHLE1BQU0sUUFBUSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBSXRDLHdDQUF3QztBQUV4QyxhQUFhO0FBQ2IsdURBQXVEO0FBQ3ZELDBCQUEwQjtBQUMxQixnQ0FBZ0M7QUFDaEMsbUNBQW1DO0FBQ25DLElBQUk7QUFFSixJQUFJLG1CQUFtQixHQUFHO0lBRXhCLDZDQUE2QztJQUM3QyxZQUFZO0lBQ1osa0JBQWtCO0lBQ2xCLG9CQUFvQjtJQUNwQixvQ0FBb0M7SUFDcEMsc0NBQXNDO0lBQ3RDLDBEQUEwRDtJQUMxRCw0Q0FBNEM7SUFFNUM7Ozs7OztPQU1HO0lBRUg7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFFRCxnQkFBZ0I7SUFDbEIsWUFBWSxFQUFHLFVBQVMsSUFBVztRQUNqQyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxhQUFhLEVBQUU7UUFDYixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDMUMsSUFBSSxZQUFZLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQzFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM1QjtRQUNELElBQUksWUFBWSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDOUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xDO0lBQ0gsQ0FBQztJQUVELFlBQVksRUFBRSxVQUFTLElBQVc7UUFDaEMsaUJBQWlCO0lBQ25CLENBQUM7SUFFRCxlQUFlLEVBQUUsVUFBUyxPQUFjO1FBQ3RDLGtCQUFrQjtJQUNwQixDQUFDO0lBR0QsY0FBYyxFQUFFO1FBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTztRQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNoQixLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsY0FBYyxFQUFFO1FBQ2QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztDQUNGLENBQUM7QUFDQSxrQkFBa0I7QUFFcEI7OztFQUdFO0FBQ0YsTUFBTSxVQUFVLGtCQUFrQixDQUFDLEdBQVUsRUFBRSxNQUF3QixFQUFFLGNBQTRCO0lBQ25HLElBQUksSUFBSSxHQUFHLEdBQVUsQ0FBQztJQUN0QixlQUFlLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksV0FBVyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQ2hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb3JlICB9IGZyb20gJy4vY29yZSc7XHJcbmltcG9ydCB7IG9ic2VydmFibGVBcnJheSB9IGZyb20gJy4vb2JzZXJ2YWJsZS1hcnJheSc7XHJcbmltcG9ydCB7IEJyZWV6ZUV2ZW50IH0gZnJvbSAnLi9ldmVudCc7XHJcbmltcG9ydCB7IFN0cnVjdHVyYWxPYmplY3QgfSBmcm9tICcuL2VudGl0eS1hc3BlY3QnO1xyXG5pbXBvcnQgeyBEYXRhUHJvcGVydHkgfSBmcm9tICcuL2VudGl0eS1tZXRhZGF0YSc7XHJcblxyXG4vLyBUT0RPOiBtaXhpbiBpbXBsIGlzIG5vdCB2ZXJ5IHR5cGVzYWZlXHJcblxyXG4vLyBOb3QgbmVlZGVkXHJcbi8vIGludGVyZmFjZSBJUHJpbWl0aXZlQXJyYXkgZXh0ZW5kcyBJT2JzZXJ2YWJsZUFycmF5IHtcclxuLy8gICBbaW5kZXg6IG51bWJlcl06IGFueTtcclxuLy8gICBwYXJlbnQ/OiBJU3RydWN0dXJhbE9iamVjdDtcclxuLy8gICBwYXJlbnRQcm9wZXJ0eT86IERhdGFQcm9wZXJ0eTtcclxuLy8gfVxyXG5cclxubGV0IHByaW1pdGl2ZUFycmF5TWl4aW4gPSB7XHJcblxyXG4gIC8vIGNvbXBsZXhBcnJheSB3aWxsIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9wc1xyXG4gIC8vICAgIHBhcmVudFxyXG4gIC8vICAgIHByb3BlcnR5UGF0aFxyXG4gIC8vICAgIHBhcmVudFByb3BlcnR5XHJcbiAgLy8gICAgYWRkZWRJdGVtcyAgLSBvbmx5IGlmIG1vZGlmaWVkXHJcbiAgLy8gICAgcmVtb3ZlZEl0ZW1zICAtIG9ubHkgaWYgbW9kaWZpZWRcclxuICAvLyAgZWFjaCBjb21wbGV4QXNwZWN0IG9mIGFueSBlbnRpdHkgd2l0aGluIGEgY29tcGxleEFycmF5XHJcbiAgLy8gIHdpbGwgaGF2ZSBpdHMgb3duIF9jb21wbGV4U3RhdGUgPSBcIkEvTVwiO1xyXG5cclxuICAvKipcclxuICBQcmltaXRpdmUgYXJyYXlzIGFyZSBub3QgYWN0dWFsbHkgY2xhc3NlcywgdGhleSBhcmUgb2JqZWN0cyB0aGF0IG1pbWljIGFycmF5cy4gQSBwcmltaXRpdmUgYXJyYXkgaXMgY29sbGVjdGlvbiBvZlxyXG4gIHByaW1pdGl2ZSB0eXBlcyBhc3NvY2lhdGVkIHdpdGggYSBkYXRhIHByb3BlcnR5IG9uIGEgc2luZ2xlIGVudGl0eSBvciBjb21wbGV4IG9iamVjdC4gaS5lLiBjdXN0b21lci5pbnZvaWNlTnVtYmVycy5cclxuICBUaGlzIGNvbGxlY3Rpb24gbG9va3MgbGlrZSBhbiBhcnJheSBpbiB0aGF0IHRoZSBiYXNpYyBtZXRob2RzIG9uIGFycmF5cyBzdWNoIGFzICdwdXNoJywgJ3BvcCcsICdzaGlmdCcsICd1bnNoaWZ0JywgJ3NwbGljZSdcclxuICBhcmUgYWxsIHByb3ZpZGVkIGFzIHdlbGwgYXMgc2V2ZXJhbCBzcGVjaWFsIHB1cnBvc2UgbWV0aG9kcy5cclxuICBAY2xhc3Mge3ByaW1pdGl2ZUFycmF5fVxyXG4gICoqL1xyXG5cclxuICAvKipcclxuICBBbiBbW0V2ZW50XV0gdGhhdCBmaXJlcyB3aGVuZXZlciB0aGUgY29udGVudHMgb2YgdGhpcyBhcnJheSBjaGFuZ2VkLiAgVGhpcyBldmVudFxyXG4gIGlzIGZpcmVkIGFueSB0aW1lIGEgbmV3IGVudGl0eSBpcyBhdHRhY2hlZCBvciBhZGRlZCB0byB0aGUgRW50aXR5TWFuYWdlciBhbmQgaGFwcGVucyB0byBiZWxvbmcgdG8gdGhpcyBjb2xsZWN0aW9uLlxyXG4gIEFkZHMgdGhhdCBvY2N1ciBhcyBhIHJlc3VsdCBvZiBxdWVyeSBvciBpbXBvcnQgb3BlcmF0aW9ucyBhcmUgYmF0Y2hlZCBzbyB0aGF0IGFsbCBvZiB0aGUgYWRkcyBvciByZW1vdmVzIHRvIGFueSBpbmRpdmlkdWFsXHJcbiAgY29sbGVjdGlvbnMgYXJlIGNvbGxlY3RlZCBpbnRvIGEgc2luZ2xlIG5vdGlmaWNhdGlvbiBldmVudCBmb3IgZWFjaCByZWxhdGlvbiBhcnJheS5cclxuICBAZXhhbXBsZVxyXG4gICAgICAvLyBhc3N1bWUgb3JkZXIgaXMgYW4gb3JkZXIgZW50aXR5IGF0dGFjaGVkIHRvIGFuIEVudGl0eU1hbmFnZXIuXHJcbiAgICAgIG9yZGVycy5hcnJheUNoYW5nZWQuc3Vic2NyaWJlKFxyXG4gICAgICBmdW5jdGlvbiAoYXJyYXlDaGFuZ2VkQXJncykge1xyXG4gICAgICAgICAgbGV0IGFkZGVkRW50aXRpZXMgPSBhcnJheUNoYW5nZWRBcmdzLmFkZGVkO1xyXG4gICAgICAgICAgbGV0IHJlbW92ZWRFbnRpdGllcyA9IGFycmF5Q2hhbmdlZC5yZW1vdmVkO1xyXG4gICAgICB9KTtcclxuICBAZXZlbnQgYXJyYXlDaGFuZ2VkXHJcbiAgQHBhcmFtIGFkZGVkIHtBcnJheSBvZiBQcmltaXRpdmVzfSBBbiBhcnJheSBvZiBhbGwgb2YgdGhlIGl0ZW1zIGFkZGVkIHRvIHRoaXMgY29sbGVjdGlvbi5cclxuICBAcGFyYW0gcmVtb3ZlZCB7QXJyYXkgb2YgUHJpbWl0aXZlc30gQW4gYXJyYXkgb2YgYWxsIG9mIHRoZSBpdGVtcyByZW1vdmVkIGZyb20gdGhpcyBjb2xsZWN0aW9uLlxyXG4gIEByZWFkT25seVxyXG4gICoqL1xyXG5cclxuICAgIC8vIHZpcnR1YWwgaW1wbHNcclxuICBfZ2V0R29vZEFkZHM6ICBmdW5jdGlvbihhZGRzOiBhbnlbXSkge1xyXG4gICAgcmV0dXJuIGFkZHM7XHJcbiAgfSxcclxuXHJcbiAgX2JlZm9yZUNoYW5nZTogZnVuY3Rpb24oKSB7XHJcbiAgICBsZXQgZW50aXR5QXNwZWN0ID0gdGhpcy5nZXRFbnRpdHlBc3BlY3QoKTtcclxuICAgIGlmIChlbnRpdHlBc3BlY3QuZW50aXR5U3RhdGUuaXNVbmNoYW5nZWQoKSkge1xyXG4gICAgICBlbnRpdHlBc3BlY3Quc2V0TW9kaWZpZWQoKTtcclxuICAgIH1cclxuICAgIGlmIChlbnRpdHlBc3BlY3QuZW50aXR5U3RhdGUuaXNNb2RpZmllZCgpICYmICF0aGlzLl9vcmlnVmFsdWVzKSB7XHJcbiAgICAgIHRoaXMuX29yaWdWYWx1ZXMgPSB0aGlzLnNsaWNlKDApO1xyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIF9wcm9jZXNzQWRkczogZnVuY3Rpb24oYWRkczogYW55W10pIHtcclxuICAgIC8vIG5vdGhpbmcgbmVlZGVkXHJcbiAgfSxcclxuXHJcbiAgX3Byb2Nlc3NSZW1vdmVzOiBmdW5jdGlvbihyZW1vdmVzOiBhbnlbXSkge1xyXG4gICAgLy8gbm90aGluZyBuZWVkZWQ7XHJcbiAgfSxcclxuXHJcblxyXG4gIF9yZWplY3RDaGFuZ2VzOiBmdW5jdGlvbigpIHtcclxuICAgIGlmICghdGhpcy5fb3JpZ1ZhbHVlcykgcmV0dXJuO1xyXG4gICAgdGhpcy5sZW5ndGggPSAwO1xyXG4gICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodGhpcywgdGhpcy5fb3JpZ1ZhbHVlcyk7XHJcbiAgfSxcclxuXHJcbiAgX2FjY2VwdENoYW5nZXM6IGZ1bmN0aW9uKCkge1xyXG4gICAgdGhpcy5fb3JpZ1ZhbHVlcyA9IG51bGw7XHJcbiAgfVxyXG59O1xyXG4gIC8vIGxvY2FsIGZ1bmN0aW9uc1xyXG5cclxuLyoqIEZvciB1c2UgYnkgYnJlZXplIHBsdWdpbiBhdXRob3JzIG9ubHkuIFRoZSBjbGFzcyBpcyBmb3IgdXNlIGluIGJ1aWxkaW5nIGEgW1tJTW9kZWxMaWJyYXJ5QWRhcHRlcl1dIGltcGxlbWVudGF0aW9uLiBcclxuQGFkYXB0ZXIgKHNlZSBbW0lNb2RlbExpYnJhcnlBZGFwdGVyXV0pICAgIFxyXG5AaGlkZGVuIFxyXG4qL1xyXG5leHBvcnQgZnVuY3Rpb24gbWFrZVByaW1pdGl2ZUFycmF5KGFycjogYW55W10sIHBhcmVudDogU3RydWN0dXJhbE9iamVjdCwgcGFyZW50UHJvcGVydHk6IERhdGFQcm9wZXJ0eSkge1xyXG4gIGxldCBhcnJYID0gYXJyIGFzIGFueTtcclxuICBvYnNlcnZhYmxlQXJyYXkuaW5pdGlhbGl6ZVBhcmVudChhcnJYLCBwYXJlbnQsIHBhcmVudFByb3BlcnR5KTtcclxuICBhcnJYLmFycmF5Q2hhbmdlZCA9IG5ldyBCcmVlemVFdmVudChcImFycmF5Q2hhbmdlZFwiLCBhcnJYKTtcclxuICBjb3JlLmV4dGVuZChhcnJYLCBvYnNlcnZhYmxlQXJyYXkubWl4aW4pO1xyXG4gIHJldHVybiBjb3JlLmV4dGVuZChhcnJYLCBwcmltaXRpdmVBcnJheU1peGluKTtcclxufVxyXG5cclxuXHJcbiJdfQ==
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import { core } from './core';
|
|
2
|
-
import { BreezeEnum } from './enum';
|
|
3
|
-
import { assertConfig } from './assert-param';
|
|
4
|
-
/**
|
|
5
|
-
MergeStrategy is an 'Enum' that determines how entities are merged into an EntityManager.
|
|
6
|
-
|
|
7
|
-
@class MergeStrategy
|
|
8
|
-
@static
|
|
9
|
-
**/
|
|
10
|
-
export class MergeStrategy extends BreezeEnum {
|
|
11
|
-
/**
|
|
12
|
-
MergeStrategy.PreserveChanges updates the cached entity with the incoming values unless the cached entity is in a changed
|
|
13
|
-
state (added, modified, deleted) in which case the incoming values are ignored. The updated cached entity’s EntityState will
|
|
14
|
-
remain [[EntityState.Unchanged]] unless you’re importing entities in which case the new EntityState will
|
|
15
|
-
be that of the imported entities.
|
|
16
|
-
**/
|
|
17
|
-
static PreserveChanges = new MergeStrategy();
|
|
18
|
-
/**
|
|
19
|
-
MergeStrategy.OverwriteChanges always updates the cached entity with incoming values even if the entity is in
|
|
20
|
-
a changed state (added, modified, deleted). After the merge, the pending changes are lost.
|
|
21
|
-
The new EntityState will be [[EntityState/Unchanged]] unless you’re importing entities
|
|
22
|
-
in which case the new EntityState will be that of the imported entities.
|
|
23
|
-
**/
|
|
24
|
-
static OverwriteChanges = new MergeStrategy();
|
|
25
|
-
/**
|
|
26
|
-
SkipMerge is used to ignore incoming values. Adds the incoming entity to the cache only if there is no cached entity with the same key.
|
|
27
|
-
This is the fastest merge strategy but your existing cached data will remain “stale”.
|
|
28
|
-
**/
|
|
29
|
-
static SkipMerge = new MergeStrategy();
|
|
30
|
-
/**
|
|
31
|
-
Disallowed is used to throw an exception if there is an incoming entity with the same key as an entity already in the cache.
|
|
32
|
-
Use this strategy when you want to be sure that the incoming entity is not already in cache.
|
|
33
|
-
This is the default strategy for EntityManager.attachEntity.
|
|
34
|
-
**/
|
|
35
|
-
static Disallowed = new MergeStrategy();
|
|
36
|
-
}
|
|
37
|
-
MergeStrategy.prototype._$typeName = "MergeStrategy";
|
|
38
|
-
Error['x'] = MergeStrategy.resolveSymbols();
|
|
39
|
-
/**
|
|
40
|
-
FetchStrategy is an 'Enum' that determines how and where entities are retrieved from as a result of a query.
|
|
41
|
-
**/
|
|
42
|
-
export class FetchStrategy extends BreezeEnum {
|
|
43
|
-
/**
|
|
44
|
-
FromServer is used to tell the query to execute the query against a remote data source on the server.
|
|
45
|
-
**/
|
|
46
|
-
static FromServer = new FetchStrategy();
|
|
47
|
-
/**
|
|
48
|
-
FromLocalCache is used to tell the query to execute the query against a local EntityManager instead of going to a remote server.
|
|
49
|
-
**/
|
|
50
|
-
static FromLocalCache = new FetchStrategy();
|
|
51
|
-
}
|
|
52
|
-
FetchStrategy.prototype._$typeName = "FetchStrategy";
|
|
53
|
-
Error['x'] = FetchStrategy.resolveSymbols();
|
|
54
|
-
/**
|
|
55
|
-
A QueryOptions instance is used to specify the 'options' under which a query will occur.
|
|
56
|
-
**/
|
|
57
|
-
export class QueryOptions {
|
|
58
|
-
/**
|
|
59
|
-
The default instance for use whenever QueryOptions are not specified.
|
|
60
|
-
**/
|
|
61
|
-
static defaultInstance = new QueryOptions({
|
|
62
|
-
fetchStrategy: FetchStrategy.FromServer,
|
|
63
|
-
mergeStrategy: MergeStrategy.PreserveChanges,
|
|
64
|
-
includeDeleted: false
|
|
65
|
-
});
|
|
66
|
-
/**
|
|
67
|
-
QueryOptions constructor
|
|
68
|
-
> var newQo = new QueryOptions( { mergeStrategy: MergeStrategy.OverwriteChanges });
|
|
69
|
-
> // assume em1 is a preexisting EntityManager
|
|
70
|
-
> em1.setProperties( { queryOptions: newQo });
|
|
71
|
-
Any QueryOptions property that is not defined will be defaulted from any QueryOptions defined at a higher level in the breeze hierarchy, i.e.
|
|
72
|
-
- from query.queryOptions
|
|
73
|
-
- to entityManager.queryOptions
|
|
74
|
-
- to QueryOptions.defaultInstance;
|
|
75
|
-
|
|
76
|
-
@param config - A configuration object.
|
|
77
|
-
**/
|
|
78
|
-
constructor(config) {
|
|
79
|
-
QueryOptions._updateWithConfig(this, config);
|
|
80
|
-
}
|
|
81
|
-
static resolve(queryOptionsArray) {
|
|
82
|
-
return new QueryOptions(core.resolveProperties(queryOptionsArray, ["fetchStrategy", "mergeStrategy", "includeDeleted"]));
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
Returns a copy of this QueryOptions with the specified [[MergeStrategy]],
|
|
86
|
-
[[FetchStrategy]], or 'includeDeleted' option applied.
|
|
87
|
-
> // Given an EntityManager instance, em
|
|
88
|
-
> var queryOptions = em.queryOptions.using(MergeStrategy.PreserveChanges);
|
|
89
|
-
|
|
90
|
-
or
|
|
91
|
-
> var queryOptions = em.queryOptions.using(FetchStrategy.FromLocalCache);
|
|
92
|
-
|
|
93
|
-
or
|
|
94
|
-
> var queryOptions = em.queryOptions.using({ mergeStrategy: MergeStrategy.OverwriteChanges });
|
|
95
|
-
|
|
96
|
-
or
|
|
97
|
-
> var queryOptions = em.queryOptions.using({
|
|
98
|
-
> includeDeleted: true,
|
|
99
|
-
> fetchStrategy: FetchStrategy.FromLocalCache
|
|
100
|
-
> });
|
|
101
|
-
@param config - A configuration object or a standalone [[MergeStrategy]] or [[FetchStrategy]]
|
|
102
|
-
@return A new QueryOptions instance.
|
|
103
|
-
**/
|
|
104
|
-
using(qoConfig) {
|
|
105
|
-
if (!qoConfig)
|
|
106
|
-
return this;
|
|
107
|
-
let result = new QueryOptions(this);
|
|
108
|
-
if (qoConfig instanceof MergeStrategy) {
|
|
109
|
-
qoConfig = { mergeStrategy: qoConfig };
|
|
110
|
-
}
|
|
111
|
-
else if (qoConfig instanceof FetchStrategy) {
|
|
112
|
-
qoConfig = { fetchStrategy: qoConfig };
|
|
113
|
-
}
|
|
114
|
-
return QueryOptions._updateWithConfig(result, qoConfig);
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
Sets the 'defaultInstance' by creating a copy of the current 'defaultInstance' and then applying all of the properties of the current instance.
|
|
118
|
-
The current instance is returned unchanged.
|
|
119
|
-
> var newQo = new QueryOptions( { mergeStrategy: MergeStrategy.OverwriteChanges });
|
|
120
|
-
> newQo.setAsDefault();
|
|
121
|
-
**/
|
|
122
|
-
setAsDefault() {
|
|
123
|
-
return core.setAsDefault(this, QueryOptions);
|
|
124
|
-
}
|
|
125
|
-
toJSON() {
|
|
126
|
-
return core.toJson(this, {
|
|
127
|
-
fetchStrategy: null,
|
|
128
|
-
mergeStrategy: null,
|
|
129
|
-
includeDeleted: false
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
static fromJSON(json) {
|
|
133
|
-
return new QueryOptions({
|
|
134
|
-
fetchStrategy: FetchStrategy.fromName(json.fetchStrategy),
|
|
135
|
-
mergeStrategy: MergeStrategy.fromName(json.mergeStrategy),
|
|
136
|
-
includeDeleted: json.includeDeleted === true
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
/** @hidden @internal */
|
|
140
|
-
static _updateWithConfig(obj, config) {
|
|
141
|
-
if (config) {
|
|
142
|
-
assertConfig(config)
|
|
143
|
-
.whereParam("fetchStrategy").isEnumOf(FetchStrategy).isOptional()
|
|
144
|
-
.whereParam("mergeStrategy").isEnumOf(MergeStrategy).isOptional()
|
|
145
|
-
.whereParam("includeDeleted").isBoolean().isOptional()
|
|
146
|
-
.applyAll(obj);
|
|
147
|
-
}
|
|
148
|
-
return obj;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
QueryOptions.prototype._$typeName = "QueryOptions";
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9xdWVyeS1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDOUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUM7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sYUFBYyxTQUFRLFVBQVU7SUFFM0M7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsZUFBZSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7SUFDN0M7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztJQUU5Qzs7O09BR0c7SUFDSCxNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7SUFFdkM7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxVQUFVLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQzs7QUFJMUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsZUFBZSxDQUFDO0FBQ3JELEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUM7QUFFNUM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sYUFBYyxTQUFRLFVBQVU7SUFFM0M7O09BRUc7SUFDSCxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7SUFDeEM7O09BRUc7SUFDSCxNQUFNLENBQUMsY0FBYyxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7O0FBRzlDLGFBQWEsQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLGVBQWUsQ0FBQztBQUNyRCxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO0FBWTVDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFlBQVk7SUFVdkI7O09BRUc7SUFDSCxNQUFNLENBQUMsZUFBZSxHQUFHLElBQUksWUFBWSxDQUFDO1FBQ3hDLGFBQWEsRUFBRSxhQUFhLENBQUMsVUFBVTtRQUN2QyxhQUFhLEVBQUUsYUFBYSxDQUFDLGVBQWU7UUFDNUMsY0FBYyxFQUFFLEtBQUs7S0FDdEIsQ0FBQyxDQUFDO0lBRUg7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxZQUFZLE1BQTJCO1FBQ3JDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPLENBQUMsaUJBQXdCO1FBQ3JDLE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFLENBQUMsZUFBZSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzSCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FtQkc7SUFDSCxLQUFLLENBQUMsUUFBNEQ7UUFDaEUsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQztRQUMzQixJQUFJLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxJQUFLLFFBQVEsWUFBWSxhQUFhLEVBQUU7WUFDdEMsUUFBUSxHQUFHLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxDQUFDO1NBQ3hDO2FBQU0sSUFBSyxRQUFRLFlBQVksYUFBYSxFQUFFO1lBQzdDLFFBQVEsR0FBRyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsQ0FBQztTQUN4QztRQUNELE9BQU8sWUFBWSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxZQUFZLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDdkIsYUFBYSxFQUFFLElBQUk7WUFDbkIsYUFBYSxFQUFFLElBQUk7WUFDbkIsY0FBYyxFQUFFLEtBQUs7U0FDdEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBUztRQUN2QixPQUFPLElBQUksWUFBWSxDQUFDO1lBQ3RCLGFBQWEsRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFDekQsYUFBYSxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztZQUN6RCxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsS0FBSyxJQUFJO1NBQzdDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCx3QkFBd0I7SUFDaEIsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQWlCLEVBQUUsTUFBMkI7UUFDN0UsSUFBSSxNQUFNLEVBQUU7WUFDVixZQUFZLENBQUMsTUFBTSxDQUFDO2lCQUNqQixVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsRUFBRTtpQkFDaEUsVUFBVSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxVQUFVLEVBQUU7aUJBQ2hFLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLFVBQVUsRUFBRTtpQkFDckQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ2xCO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDOztBQUdILFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvcmUgfSBmcm9tICcuL2NvcmUnO1xyXG5pbXBvcnQgeyBCcmVlemVFbnVtIH0gZnJvbSAnLi9lbnVtJztcclxuaW1wb3J0IHsgYXNzZXJ0Q29uZmlnIH0gZnJvbSAnLi9hc3NlcnQtcGFyYW0nO1xyXG5cclxuLyoqXHJcbk1lcmdlU3RyYXRlZ3kgaXMgYW4gJ0VudW0nIHRoYXQgZGV0ZXJtaW5lcyBob3cgZW50aXRpZXMgYXJlIG1lcmdlZCBpbnRvIGFuIEVudGl0eU1hbmFnZXIuXHJcblxyXG5AY2xhc3MgTWVyZ2VTdHJhdGVneVxyXG5Ac3RhdGljXHJcbioqL1xyXG5leHBvcnQgY2xhc3MgTWVyZ2VTdHJhdGVneSBleHRlbmRzIEJyZWV6ZUVudW0ge1xyXG5cclxuICAvKipcclxuICBNZXJnZVN0cmF0ZWd5LlByZXNlcnZlQ2hhbmdlcyB1cGRhdGVzIHRoZSBjYWNoZWQgZW50aXR5IHdpdGggdGhlIGluY29taW5nIHZhbHVlcyB1bmxlc3MgdGhlIGNhY2hlZCBlbnRpdHkgaXMgaW4gYSBjaGFuZ2VkXHJcbiAgc3RhdGUgKGFkZGVkLCBtb2RpZmllZCwgZGVsZXRlZCkgaW4gd2hpY2ggY2FzZSB0aGUgaW5jb21pbmcgdmFsdWVzIGFyZSBpZ25vcmVkLiBUaGUgdXBkYXRlZCBjYWNoZWQgZW50aXR54oCZcyBFbnRpdHlTdGF0ZSB3aWxsXHJcbiAgcmVtYWluIFtbRW50aXR5U3RhdGUuVW5jaGFuZ2VkXV0gdW5sZXNzIHlvdeKAmXJlIGltcG9ydGluZyBlbnRpdGllcyBpbiB3aGljaCBjYXNlIHRoZSBuZXcgRW50aXR5U3RhdGUgd2lsbFxyXG4gIGJlIHRoYXQgb2YgdGhlIGltcG9ydGVkIGVudGl0aWVzLlxyXG4gICoqL1xyXG4gIHN0YXRpYyBQcmVzZXJ2ZUNoYW5nZXMgPSBuZXcgTWVyZ2VTdHJhdGVneSgpO1xyXG4gIC8qKlxyXG4gIE1lcmdlU3RyYXRlZ3kuT3ZlcndyaXRlQ2hhbmdlcyBhbHdheXMgdXBkYXRlcyB0aGUgY2FjaGVkIGVudGl0eSB3aXRoIGluY29taW5nIHZhbHVlcyBldmVuIGlmIHRoZSBlbnRpdHkgaXMgaW5cclxuICBhIGNoYW5nZWQgc3RhdGUgKGFkZGVkLCBtb2RpZmllZCwgZGVsZXRlZCkuIEFmdGVyIHRoZSBtZXJnZSwgdGhlIHBlbmRpbmcgY2hhbmdlcyBhcmUgbG9zdC5cclxuICBUaGUgbmV3IEVudGl0eVN0YXRlIHdpbGwgYmUgIFtbRW50aXR5U3RhdGUvVW5jaGFuZ2VkXV0gdW5sZXNzIHlvdeKAmXJlIGltcG9ydGluZyBlbnRpdGllc1xyXG4gIGluIHdoaWNoIGNhc2UgdGhlIG5ldyBFbnRpdHlTdGF0ZSB3aWxsIGJlIHRoYXQgb2YgdGhlIGltcG9ydGVkIGVudGl0aWVzLlxyXG4gICoqL1xyXG4gIHN0YXRpYyBPdmVyd3JpdGVDaGFuZ2VzID0gbmV3IE1lcmdlU3RyYXRlZ3koKTtcclxuXHJcbiAgLyoqXHJcbiAgU2tpcE1lcmdlIGlzIHVzZWQgdG8gaWdub3JlIGluY29taW5nIHZhbHVlcy4gQWRkcyB0aGUgaW5jb21pbmcgZW50aXR5IHRvIHRoZSBjYWNoZSBvbmx5IGlmIHRoZXJlIGlzIG5vIGNhY2hlZCBlbnRpdHkgd2l0aCB0aGUgc2FtZSBrZXkuXHJcbiAgVGhpcyBpcyB0aGUgZmFzdGVzdCBtZXJnZSBzdHJhdGVneSBidXQgeW91ciBleGlzdGluZyBjYWNoZWQgZGF0YSB3aWxsIHJlbWFpbiDigJxzdGFsZeKAnS5cclxuICAqKi9cclxuICBzdGF0aWMgU2tpcE1lcmdlID0gbmV3IE1lcmdlU3RyYXRlZ3koKTtcclxuXHJcbiAgLyoqXHJcbiAgRGlzYWxsb3dlZCBpcyB1c2VkIHRvIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhbiBpbmNvbWluZyBlbnRpdHkgd2l0aCB0aGUgc2FtZSBrZXkgYXMgYW4gZW50aXR5IGFscmVhZHkgaW4gdGhlIGNhY2hlLlxyXG4gIFVzZSB0aGlzIHN0cmF0ZWd5IHdoZW4geW91IHdhbnQgdG8gYmUgc3VyZSB0aGF0IHRoZSBpbmNvbWluZyBlbnRpdHkgaXMgbm90IGFscmVhZHkgaW4gY2FjaGUuXHJcbiAgVGhpcyBpcyB0aGUgZGVmYXVsdCBzdHJhdGVneSBmb3IgRW50aXR5TWFuYWdlci5hdHRhY2hFbnRpdHkuXHJcbiAgKiovXHJcbiAgc3RhdGljIERpc2FsbG93ZWQgPSBuZXcgTWVyZ2VTdHJhdGVneSgpO1xyXG5cclxuXHJcbn1cclxuTWVyZ2VTdHJhdGVneS5wcm90b3R5cGUuXyR0eXBlTmFtZSA9IFwiTWVyZ2VTdHJhdGVneVwiO1xyXG5FcnJvclsneCddID0gTWVyZ2VTdHJhdGVneS5yZXNvbHZlU3ltYm9scygpO1xyXG5cclxuLyoqXHJcbkZldGNoU3RyYXRlZ3kgaXMgYW4gJ0VudW0nIHRoYXQgZGV0ZXJtaW5lcyBob3cgYW5kIHdoZXJlIGVudGl0aWVzIGFyZSByZXRyaWV2ZWQgZnJvbSBhcyBhIHJlc3VsdCBvZiBhIHF1ZXJ5LlxyXG4qKi9cclxuZXhwb3J0IGNsYXNzIEZldGNoU3RyYXRlZ3kgZXh0ZW5kcyBCcmVlemVFbnVtIHtcclxuXHJcbiAgLyoqXHJcbiAgRnJvbVNlcnZlciBpcyB1c2VkIHRvIHRlbGwgdGhlIHF1ZXJ5IHRvIGV4ZWN1dGUgdGhlIHF1ZXJ5IGFnYWluc3QgYSByZW1vdGUgZGF0YSBzb3VyY2Ugb24gdGhlIHNlcnZlci5cclxuICAqKi9cclxuICBzdGF0aWMgRnJvbVNlcnZlciA9IG5ldyBGZXRjaFN0cmF0ZWd5KCk7XHJcbiAgLyoqXHJcbiAgRnJvbUxvY2FsQ2FjaGUgaXMgdXNlZCB0byB0ZWxsIHRoZSBxdWVyeSB0byBleGVjdXRlIHRoZSBxdWVyeSBhZ2FpbnN0IGEgbG9jYWwgRW50aXR5TWFuYWdlciBpbnN0ZWFkIG9mIGdvaW5nIHRvIGEgcmVtb3RlIHNlcnZlci5cclxuICAqKi9cclxuICBzdGF0aWMgRnJvbUxvY2FsQ2FjaGUgPSBuZXcgRmV0Y2hTdHJhdGVneSgpO1xyXG5cclxufVxyXG5GZXRjaFN0cmF0ZWd5LnByb3RvdHlwZS5fJHR5cGVOYW1lID0gXCJGZXRjaFN0cmF0ZWd5XCI7XHJcbkVycm9yWyd4J10gPSBGZXRjaFN0cmF0ZWd5LnJlc29sdmVTeW1ib2xzKCk7XHJcblxyXG4vKiogQ29uZmlndXJhdGlvbiBpbmZvIHRvIGJlIHBhc3NlZCB0byB0aGUgW1tRdWVyeU9wdGlvbnNdXSBjb25zdHJ1Y3Rvci4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBRdWVyeU9wdGlvbnNDb25maWcge1xyXG4gIC8qKiBUaGUgW1tGZXRjaFN0cmF0ZWd5XV0gdG8gdXNlIHdpdGggYW55IHF1ZXJpZXMuKi9cclxuICBmZXRjaFN0cmF0ZWd5PzogRmV0Y2hTdHJhdGVneTtcclxuICAvKiogVGhlIFtbTWVyZ2VTdHJhdGVneV1dIHRvIHVzZSB3aXRoIGFueSBxdWVyaWVzLiovXHJcbiAgbWVyZ2VTdHJhdGVneT86IE1lcmdlU3RyYXRlZ3k7XHJcbiAgLyoqIFdoZXRoZXIgdG8gaW5jbHVkZSBjYWNoZWQgZGVsZXRlZCBlbnRpdGllcyBpbiBhIHF1ZXJ5IHJlc3VsdCAoZmFsc2UgYnkgZGVmYXVsdCkuIF9fUmVhZCBPbmx5X18gKi9cclxuICBpbmNsdWRlRGVsZXRlZD86IGJvb2xlYW47XHJcbn1cclxuXHJcbi8qKlxyXG5BIFF1ZXJ5T3B0aW9ucyBpbnN0YW5jZSBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlICdvcHRpb25zJyB1bmRlciB3aGljaCBhIHF1ZXJ5IHdpbGwgb2NjdXIuXHJcbioqL1xyXG5leHBvcnQgY2xhc3MgUXVlcnlPcHRpb25zIHtcclxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICBkZWNsYXJlIF8kdHlwZU5hbWU6IHN0cmluZztcclxuICAvKiogVGhlIFtbRmV0Y2hTdHJhdGVneV1dIHRvIHVzZSB3aXRoIGFueSBxdWVyaWVzLiBfX1JlYWQgT25seV9fICovXHJcbiAgZGVjbGFyZSBmZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5O1xyXG4gIC8qKiBUaGUgW1tNZXJnZVN0cmF0ZWd5XV0gdG8gdXNlIHdpdGggYW55IHF1ZXJpZXMuIF9fUmVhZCBPbmx5X18gKi9cclxuICBkZWNsYXJlIG1lcmdlU3RyYXRlZ3k6IE1lcmdlU3RyYXRlZ3k7XHJcbiAgLyoqIFdoZXRoZXIgdG8gaW5jbHVkZSBjYWNoZWQgZGVsZXRlZCBlbnRpdGllcyBpbiBhIHF1ZXJ5IHJlc3VsdCAoZmFsc2UgYnkgZGVmYXVsdCkuIF9fUmVhZCBPbmx5X18gKi9cclxuICBkZWNsYXJlIGluY2x1ZGVEZWxldGVkOiBib29sZWFuO1xyXG5cclxuICAvKipcclxuICBUaGUgZGVmYXVsdCBpbnN0YW5jZSBmb3IgdXNlIHdoZW5ldmVyIFF1ZXJ5T3B0aW9ucyBhcmUgbm90IHNwZWNpZmllZC5cclxuICAqKi9cclxuICBzdGF0aWMgZGVmYXVsdEluc3RhbmNlID0gbmV3IFF1ZXJ5T3B0aW9ucyh7XHJcbiAgICBmZXRjaFN0cmF0ZWd5OiBGZXRjaFN0cmF0ZWd5LkZyb21TZXJ2ZXIsXHJcbiAgICBtZXJnZVN0cmF0ZWd5OiBNZXJnZVN0cmF0ZWd5LlByZXNlcnZlQ2hhbmdlcyxcclxuICAgIGluY2x1ZGVEZWxldGVkOiBmYWxzZVxyXG4gIH0pO1xyXG5cclxuICAvKipcclxuICBRdWVyeU9wdGlvbnMgY29uc3RydWN0b3JcclxuICA+ICAgICB2YXIgbmV3UW8gPSBuZXcgUXVlcnlPcHRpb25zKCB7IG1lcmdlU3RyYXRlZ3k6IE1lcmdlU3RyYXRlZ3kuT3ZlcndyaXRlQ2hhbmdlcyB9KTtcclxuICA+ICAgICAvLyBhc3N1bWUgZW0xIGlzIGEgcHJlZXhpc3RpbmcgRW50aXR5TWFuYWdlclxyXG4gID4gICAgIGVtMS5zZXRQcm9wZXJ0aWVzKCB7IHF1ZXJ5T3B0aW9uczogbmV3UW8gfSk7XHJcbiAgQW55IFF1ZXJ5T3B0aW9ucyBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBkZWZpbmVkIHdpbGwgYmUgZGVmYXVsdGVkIGZyb20gYW55IFF1ZXJ5T3B0aW9ucyBkZWZpbmVkIGF0IGEgaGlnaGVyIGxldmVsIGluIHRoZSBicmVlemUgaGllcmFyY2h5LCBpLmUuXHJcbiAgLSAgZnJvbSBxdWVyeS5xdWVyeU9wdGlvbnNcclxuICAtICB0byAgIGVudGl0eU1hbmFnZXIucXVlcnlPcHRpb25zXHJcbiAgLSAgdG8gICBRdWVyeU9wdGlvbnMuZGVmYXVsdEluc3RhbmNlO1xyXG5cclxuICBAcGFyYW0gY29uZmlnIC0gQSBjb25maWd1cmF0aW9uIG9iamVjdC5cclxuICAqKi9cclxuICBjb25zdHJ1Y3Rvcihjb25maWc/OiBRdWVyeU9wdGlvbnNDb25maWcpIHtcclxuICAgIFF1ZXJ5T3B0aW9ucy5fdXBkYXRlV2l0aENvbmZpZyh0aGlzLCBjb25maWcpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHJlc29sdmUocXVlcnlPcHRpb25zQXJyYXk6IGFueVtdKSB7XHJcbiAgICByZXR1cm4gbmV3IFF1ZXJ5T3B0aW9ucyhjb3JlLnJlc29sdmVQcm9wZXJ0aWVzKHF1ZXJ5T3B0aW9uc0FycmF5LCBbXCJmZXRjaFN0cmF0ZWd5XCIsIFwibWVyZ2VTdHJhdGVneVwiLCBcImluY2x1ZGVEZWxldGVkXCJdKSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIGEgY29weSBvZiB0aGlzIFF1ZXJ5T3B0aW9ucyB3aXRoIHRoZSBzcGVjaWZpZWQgW1tNZXJnZVN0cmF0ZWd5XV0sXHJcbiAgW1tGZXRjaFN0cmF0ZWd5XV0sIG9yICdpbmNsdWRlRGVsZXRlZCcgb3B0aW9uIGFwcGxpZWQuXHJcbiAgPiAgICAgLy8gR2l2ZW4gYW4gRW50aXR5TWFuYWdlciBpbnN0YW5jZSwgZW1cclxuICA+ICAgICB2YXIgcXVlcnlPcHRpb25zID0gZW0ucXVlcnlPcHRpb25zLnVzaW5nKE1lcmdlU3RyYXRlZ3kuUHJlc2VydmVDaGFuZ2VzKTtcclxuXHJcbiAgb3JcclxuICA+ICAgICB2YXIgcXVlcnlPcHRpb25zID0gZW0ucXVlcnlPcHRpb25zLnVzaW5nKEZldGNoU3RyYXRlZ3kuRnJvbUxvY2FsQ2FjaGUpO1xyXG5cclxuICBvclxyXG4gID4gICAgIHZhciBxdWVyeU9wdGlvbnMgPSBlbS5xdWVyeU9wdGlvbnMudXNpbmcoeyBtZXJnZVN0cmF0ZWd5OiBNZXJnZVN0cmF0ZWd5Lk92ZXJ3cml0ZUNoYW5nZXMgfSk7XHJcblxyXG4gIG9yXHJcbiAgPiAgICAgdmFyIHF1ZXJ5T3B0aW9ucyA9IGVtLnF1ZXJ5T3B0aW9ucy51c2luZyh7XHJcbiAgPiAgICAgICAgaW5jbHVkZURlbGV0ZWQ6IHRydWUsXHJcbiAgPiAgICAgICAgZmV0Y2hTdHJhdGVneTogIEZldGNoU3RyYXRlZ3kuRnJvbUxvY2FsQ2FjaGUgXHJcbiAgPiAgICAgfSk7XHJcbiAgQHBhcmFtIGNvbmZpZyAtIEEgY29uZmlndXJhdGlvbiBvYmplY3Qgb3IgYSBzdGFuZGFsb25lIFtbTWVyZ2VTdHJhdGVneV1dIG9yIFtbRmV0Y2hTdHJhdGVneV1dIFxyXG4gIEByZXR1cm4gQSBuZXcgUXVlcnlPcHRpb25zIGluc3RhbmNlLlxyXG4gICoqL1xyXG4gIHVzaW5nKHFvQ29uZmlnOiBRdWVyeU9wdGlvbnNDb25maWcgfCBNZXJnZVN0cmF0ZWd5IHwgRmV0Y2hTdHJhdGVneSkge1xyXG4gICAgaWYgKCFxb0NvbmZpZykgcmV0dXJuIHRoaXM7XHJcbiAgICBsZXQgcmVzdWx0ID0gbmV3IFF1ZXJ5T3B0aW9ucyh0aGlzKTtcclxuICAgIGlmICggcW9Db25maWcgaW5zdGFuY2VvZiBNZXJnZVN0cmF0ZWd5KSB7XHJcbiAgICAgIHFvQ29uZmlnID0geyBtZXJnZVN0cmF0ZWd5OiBxb0NvbmZpZyB9O1xyXG4gICAgfSBlbHNlIGlmICggcW9Db25maWcgaW5zdGFuY2VvZiBGZXRjaFN0cmF0ZWd5KSB7XHJcbiAgICAgIHFvQ29uZmlnID0geyBmZXRjaFN0cmF0ZWd5OiBxb0NvbmZpZyB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIFF1ZXJ5T3B0aW9ucy5fdXBkYXRlV2l0aENvbmZpZyhyZXN1bHQsIHFvQ29uZmlnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFNldHMgdGhlICdkZWZhdWx0SW5zdGFuY2UnIGJ5IGNyZWF0aW5nIGEgY29weSBvZiB0aGUgY3VycmVudCAnZGVmYXVsdEluc3RhbmNlJyBhbmQgdGhlbiBhcHBseWluZyBhbGwgb2YgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UuXHJcbiAgVGhlIGN1cnJlbnQgaW5zdGFuY2UgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLlxyXG4gID4gICAgIHZhciBuZXdRbyA9IG5ldyBRdWVyeU9wdGlvbnMoIHsgbWVyZ2VTdHJhdGVneTogTWVyZ2VTdHJhdGVneS5PdmVyd3JpdGVDaGFuZ2VzIH0pO1xyXG4gID4gICAgIG5ld1FvLnNldEFzRGVmYXVsdCgpO1xyXG4gICoqL1xyXG4gIHNldEFzRGVmYXVsdCgpIHtcclxuICAgIHJldHVybiBjb3JlLnNldEFzRGVmYXVsdCh0aGlzLCBRdWVyeU9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgdG9KU09OKCkge1xyXG4gICAgcmV0dXJuIGNvcmUudG9Kc29uKHRoaXMsIHtcclxuICAgICAgZmV0Y2hTdHJhdGVneTogbnVsbCxcclxuICAgICAgbWVyZ2VTdHJhdGVneTogbnVsbCxcclxuICAgICAgaW5jbHVkZURlbGV0ZWQ6IGZhbHNlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uOiBhbnkpIHtcclxuICAgIHJldHVybiBuZXcgUXVlcnlPcHRpb25zKHtcclxuICAgICAgZmV0Y2hTdHJhdGVneTogRmV0Y2hTdHJhdGVneS5mcm9tTmFtZShqc29uLmZldGNoU3RyYXRlZ3kpLFxyXG4gICAgICBtZXJnZVN0cmF0ZWd5OiBNZXJnZVN0cmF0ZWd5LmZyb21OYW1lKGpzb24ubWVyZ2VTdHJhdGVneSksXHJcbiAgICAgIGluY2x1ZGVEZWxldGVkOiBqc29uLmluY2x1ZGVEZWxldGVkID09PSB0cnVlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIHByaXZhdGUgc3RhdGljIF91cGRhdGVXaXRoQ29uZmlnKG9iajogUXVlcnlPcHRpb25zLCBjb25maWc/OiBRdWVyeU9wdGlvbnNDb25maWcpIHtcclxuICAgIGlmIChjb25maWcpIHtcclxuICAgICAgYXNzZXJ0Q29uZmlnKGNvbmZpZylcclxuICAgICAgICAud2hlcmVQYXJhbShcImZldGNoU3RyYXRlZ3lcIikuaXNFbnVtT2YoRmV0Y2hTdHJhdGVneSkuaXNPcHRpb25hbCgpXHJcbiAgICAgICAgLndoZXJlUGFyYW0oXCJtZXJnZVN0cmF0ZWd5XCIpLmlzRW51bU9mKE1lcmdlU3RyYXRlZ3kpLmlzT3B0aW9uYWwoKVxyXG4gICAgICAgIC53aGVyZVBhcmFtKFwiaW5jbHVkZURlbGV0ZWRcIikuaXNCb29sZWFuKCkuaXNPcHRpb25hbCgpXHJcbiAgICAgICAgLmFwcGx5QWxsKG9iaik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb2JqO1xyXG4gIH1cclxuXHJcbn1cclxuUXVlcnlPcHRpb25zLnByb3RvdHlwZS5fJHR5cGVOYW1lID0gXCJRdWVyeU9wdGlvbnNcIjtcclxuIl19
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import { core } from './core';
|
|
2
|
-
import { EntityQuery } from './entity-query';
|
|
3
|
-
import { EntityState } from './entity-state';
|
|
4
|
-
import { BreezeEvent } from './event';
|
|
5
|
-
import { observableArray } from './observable-array';
|
|
6
|
-
let relationArrayMixin = {
|
|
7
|
-
/**
|
|
8
|
-
Relation arrays are not actually classes, they are objects that mimic arrays. A relation array is collection of
|
|
9
|
-
entities associated with a navigation property on a single entity. i.e. customer.orders or order.orderDetails.
|
|
10
|
-
This collection looks like an array in that the basic methods on arrays such as 'push', 'pop', 'shift', 'unshift', 'splice'
|
|
11
|
-
are all provided as well as several special purpose methods.
|
|
12
|
-
@class {relationArray}
|
|
13
|
-
**/
|
|
14
|
-
/**
|
|
15
|
-
An [[Event]] that fires whenever the contents of this array changed. This event
|
|
16
|
-
is fired any time a new entity is attached or added to the EntityManager and happens to belong to this collection.
|
|
17
|
-
Adds that occur as a result of query or import operations are batched so that all of the adds or removes to any individual
|
|
18
|
-
collections are collected into a single notification event for each relation array.
|
|
19
|
-
@example
|
|
20
|
-
// assume order is an order entity attached to an EntityManager.
|
|
21
|
-
orders.arrayChanged.subscribe(
|
|
22
|
-
function (arrayChangedArgs) {
|
|
23
|
-
let addedEntities = arrayChangedArgs.added;
|
|
24
|
-
let removedEntities = arrayChanged.removed;
|
|
25
|
-
});
|
|
26
|
-
@event arrayChanged
|
|
27
|
-
@param added {Array of Entity} An array of all of the entities added to this collection.
|
|
28
|
-
@param removed {Array of Entity} An array of all of the removed from this collection.
|
|
29
|
-
@readOnly
|
|
30
|
-
**/
|
|
31
|
-
/**
|
|
32
|
-
Performs an asynchronous load of all other the entities associated with this relationArray.
|
|
33
|
-
@example
|
|
34
|
-
// assume orders is an empty, as yet unpopulated, relation array of orders
|
|
35
|
-
// associated with a specific customer.
|
|
36
|
-
orders.load().then(...)
|
|
37
|
-
@method load
|
|
38
|
-
@param [callback] {Function}
|
|
39
|
-
@param [errorCallback] {Function}
|
|
40
|
-
@return {Promise}
|
|
41
|
-
**/
|
|
42
|
-
load: function (callback, errorCallback) {
|
|
43
|
-
let parent = this.parentEntity;
|
|
44
|
-
let query = EntityQuery.fromEntityNavigation(this.parentEntity, this.navigationProperty);
|
|
45
|
-
let em = parent.entityAspect.entityManager;
|
|
46
|
-
return em.executeQuery(query, callback, errorCallback);
|
|
47
|
-
},
|
|
48
|
-
_getEventParent: function () {
|
|
49
|
-
return this.parentEntity.entityAspect;
|
|
50
|
-
},
|
|
51
|
-
_getPendingPubs: function () {
|
|
52
|
-
let em = this.parentEntity.entityAspect.entityManager;
|
|
53
|
-
return em && em._pendingPubs;
|
|
54
|
-
},
|
|
55
|
-
// virtual impls
|
|
56
|
-
_getGoodAdds: function (adds) {
|
|
57
|
-
return getGoodAdds(this, adds);
|
|
58
|
-
},
|
|
59
|
-
_processAdds: function (adds) {
|
|
60
|
-
processAdds(this, adds);
|
|
61
|
-
},
|
|
62
|
-
_processRemoves: function (removes) {
|
|
63
|
-
processRemoves(this, removes);
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
function getGoodAdds(relationArray, adds) {
|
|
67
|
-
let goodAdds = checkForDups(relationArray, adds);
|
|
68
|
-
if (!goodAdds.length) {
|
|
69
|
-
return goodAdds;
|
|
70
|
-
}
|
|
71
|
-
let parentEntity = relationArray.parentEntity;
|
|
72
|
-
let entityManager = parentEntity.entityAspect.entityManager;
|
|
73
|
-
// we do not want to attach an entity during loading
|
|
74
|
-
// because these will all be 'attached' at a later step.
|
|
75
|
-
if (entityManager && !entityManager.isLoading) {
|
|
76
|
-
goodAdds.forEach(function (add) {
|
|
77
|
-
if (add.entityAspect.entityState.isDetached()) {
|
|
78
|
-
relationArray._inProgress = true;
|
|
79
|
-
try {
|
|
80
|
-
entityManager.attachEntity(add, EntityState.Added);
|
|
81
|
-
}
|
|
82
|
-
finally {
|
|
83
|
-
relationArray._inProgress = false;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
return goodAdds;
|
|
89
|
-
}
|
|
90
|
-
function processAdds(relationArray, adds) {
|
|
91
|
-
let parentEntity = relationArray.parentEntity;
|
|
92
|
-
let np = relationArray.navigationProperty;
|
|
93
|
-
let addsInProcess = relationArray._addsInProcess;
|
|
94
|
-
let invNp = np.inverse;
|
|
95
|
-
let startIx = addsInProcess.length;
|
|
96
|
-
try {
|
|
97
|
-
adds.forEach(function (childEntity) {
|
|
98
|
-
addsInProcess.push(childEntity);
|
|
99
|
-
if (invNp) {
|
|
100
|
-
childEntity.setProperty(invNp.name, parentEntity);
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
// This occurs with a unidirectional 1-n navigation - in this case
|
|
104
|
-
// we need to update the fks instead of the navProp
|
|
105
|
-
let pks = parentEntity.entityType.keyProperties;
|
|
106
|
-
np.invForeignKeyNames.forEach(function (fk, i) {
|
|
107
|
-
childEntity.setProperty(fk, parentEntity.getProperty(pks[i].name));
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
finally {
|
|
113
|
-
addsInProcess.splice(startIx, adds.length);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
function processRemoves(relationArray, removes) {
|
|
117
|
-
let inp = relationArray.navigationProperty.inverse;
|
|
118
|
-
if (inp) {
|
|
119
|
-
removes.forEach(function (childEntity) {
|
|
120
|
-
childEntity.setProperty(inp.name, null);
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
function checkForDups(relationArray, adds) {
|
|
125
|
-
// don't allow dups in this array. - also prevents recursion
|
|
126
|
-
let parentEntity = relationArray.parentEntity;
|
|
127
|
-
let navProp = relationArray.navigationProperty;
|
|
128
|
-
let inverseProp = navProp.inverse;
|
|
129
|
-
let goodAdds;
|
|
130
|
-
if (inverseProp) {
|
|
131
|
-
goodAdds = adds.filter(function (a) {
|
|
132
|
-
if (relationArray._addsInProcess.indexOf(a) >= 0) {
|
|
133
|
-
return false;
|
|
134
|
-
}
|
|
135
|
-
let inverseValue = a.getProperty(inverseProp.name);
|
|
136
|
-
return inverseValue !== parentEntity;
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
// This occurs with a unidirectional 1->N relation ( where there is no n -> 1)
|
|
141
|
-
// in this case we compare fks.
|
|
142
|
-
let fkPropNames = navProp.invForeignKeyNames;
|
|
143
|
-
let keyProps = parentEntity.entityType.keyProperties;
|
|
144
|
-
goodAdds = adds.filter(function (a) {
|
|
145
|
-
if (relationArray._addsInProcess.indexOf(a) >= 0) {
|
|
146
|
-
return false;
|
|
147
|
-
}
|
|
148
|
-
return fkPropNames.some(function (fk, i) {
|
|
149
|
-
let keyProp = keyProps[i].name;
|
|
150
|
-
let keyVal = parentEntity.getProperty(keyProp);
|
|
151
|
-
let fkVal = a.getProperty(fk);
|
|
152
|
-
return keyVal !== fkVal;
|
|
153
|
-
});
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
return goodAdds;
|
|
157
|
-
}
|
|
158
|
-
/** For use by breeze plugin authors only. The class is for use in building a [[IModelLibraryAdapter]] implementation.
|
|
159
|
-
@adapter (see [[IModelLibraryAdapter]])
|
|
160
|
-
@hidden
|
|
161
|
-
*/
|
|
162
|
-
export function makeRelationArray(arr, parentEntity, navigationProperty) {
|
|
163
|
-
let arrX = arr;
|
|
164
|
-
arrX.parentEntity = parentEntity;
|
|
165
|
-
arrX.navigationProperty = navigationProperty;
|
|
166
|
-
arrX.arrayChanged = new BreezeEvent("arrayChanged", arrX);
|
|
167
|
-
// array of pushes currently in process on this relation array - used to prevent recursion.
|
|
168
|
-
arrX._addsInProcess = [];
|
|
169
|
-
// need to use mixins here instead of inheritance because we are starting from an existing array object.
|
|
170
|
-
core.extend(arrX, observableArray.mixin);
|
|
171
|
-
return core.extend(arrX, relationArrayMixin);
|
|
172
|
-
}
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb24tYXJyYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVsYXRpb24tYXJyYXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUk5QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdEMsT0FBTyxFQUFtQixlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQWN0RSxJQUFJLGtCQUFrQixHQUFHO0lBRXZCOzs7Ozs7T0FNRztJQUVIOzs7Ozs7Ozs7Ozs7Ozs7O09BZ0JHO0lBR0g7Ozs7Ozs7Ozs7T0FVRztJQUNILElBQUksRUFBRSxVQUFTLFFBQStCLEVBQUUsYUFBa0M7UUFDaEYsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUMvQixJQUFJLEtBQUssR0FBRyxXQUFXLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN6RixJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQztRQUMzQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsZUFBZSxFQUFFO1FBQ2YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztJQUN4QyxDQUFDO0lBRUQsZUFBZSxFQUFFO1FBQ2YsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO1FBQ3RELE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxZQUFZLENBQUM7SUFD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Q0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztnQkFDckMsSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDL0IsSUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDL0MsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDOUIsT0FBTyxNQUFNLEtBQUssS0FBSyxDQUFDO1lBQzFCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7S0FDSjtJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7O0VBR0U7QUFDRixNQUFNLFVBQVUsaUJBQWlCLENBQUMsR0FBVSxFQUFFLFlBQW9CLEVBQUUsa0JBQXNDO0lBQ3hHLElBQUksSUFBSSxHQUFHLEdBQVUsQ0FBQztJQUN0QixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztJQUNqQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7SUFDN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFdBQVcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUQsMkZBQTJGO0lBQzNGLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLHdHQUF3RztJQUN4RyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBa0IsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSB9IGZyb20gJy4vY29yZSc7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4vZW50aXR5LWFzcGVjdCc7XHJcbmltcG9ydCB7IFF1ZXJ5RXJyb3JDYWxsYmFjaywgUXVlcnlSZXN1bHQsIFF1ZXJ5U3VjY2Vzc0NhbGxiYWNrIH0gZnJvbSAnLi9lbnRpdHktbWFuYWdlcic7XHJcbmltcG9ydCB7IERhdGFQcm9wZXJ0eSwgTmF2aWdhdGlvblByb3BlcnR5IH0gZnJvbSAnLi9lbnRpdHktbWV0YWRhdGEnO1xyXG5pbXBvcnQgeyBFbnRpdHlRdWVyeSB9IGZyb20gJy4vZW50aXR5LXF1ZXJ5JztcclxuaW1wb3J0IHsgRW50aXR5U3RhdGUgfSBmcm9tICcuL2VudGl0eS1zdGF0ZSc7XHJcbmltcG9ydCB7IEJyZWV6ZUV2ZW50IH0gZnJvbSAnLi9ldmVudCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGVBcnJheSwgb2JzZXJ2YWJsZUFycmF5IH0gZnJvbSAnLi9vYnNlcnZhYmxlLWFycmF5JztcclxuXHJcbi8vIFRPRE86IG1peGluIGltcGwgaXMgbm90IHZlcnkgdHlwZXNhZmVcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUmVsYXRpb25BcnJheSBleHRlbmRzIE9ic2VydmFibGVBcnJheSB7XHJcbiAgW2luZGV4OiBudW1iZXJdOiBFbnRpdHk7XHJcbiAgcGFyZW50RW50aXR5OiBFbnRpdHk7XHJcbiAgcGFyZW50UHJvcGVydHk/OiBEYXRhUHJvcGVydHk7XHJcbiAgbmF2aWdhdGlvblByb3BlcnR5OiBOYXZpZ2F0aW9uUHJvcGVydHk7XHJcbiAgX2luUHJvZ3Jlc3M/OiBib29sZWFuO1xyXG4gIF9hZGRzSW5Qcm9jZXNzOiBFbnRpdHlbXTtcclxuICBsb2FkKHF1ZXJ5U3VjY2Vzc0NhbGxiYWNrPzogUXVlcnlTdWNjZXNzQ2FsbGJhY2ssIHF1ZXJ5RXJyb3JDYWxsYmFjaz86IFF1ZXJ5RXJyb3JDYWxsYmFjayk6IFByb21pc2U8UXVlcnlSZXN1bHQ+OyBcclxufVxyXG5cclxubGV0IHJlbGF0aW9uQXJyYXlNaXhpbiA9IHtcclxuXHJcbiAgLyoqXHJcbiAgUmVsYXRpb24gYXJyYXlzIGFyZSBub3QgYWN0dWFsbHkgY2xhc3NlcywgdGhleSBhcmUgb2JqZWN0cyB0aGF0IG1pbWljIGFycmF5cy4gQSByZWxhdGlvbiBhcnJheSBpcyBjb2xsZWN0aW9uIG9mXHJcbiAgZW50aXRpZXMgYXNzb2NpYXRlZCB3aXRoIGEgbmF2aWdhdGlvbiBwcm9wZXJ0eSBvbiBhIHNpbmdsZSBlbnRpdHkuIGkuZS4gY3VzdG9tZXIub3JkZXJzIG9yIG9yZGVyLm9yZGVyRGV0YWlscy5cclxuICBUaGlzIGNvbGxlY3Rpb24gbG9va3MgbGlrZSBhbiBhcnJheSBpbiB0aGF0IHRoZSBiYXNpYyBtZXRob2RzIG9uIGFycmF5cyBzdWNoIGFzICdwdXNoJywgJ3BvcCcsICdzaGlmdCcsICd1bnNoaWZ0JywgJ3NwbGljZSdcclxuICBhcmUgYWxsIHByb3ZpZGVkIGFzIHdlbGwgYXMgc2V2ZXJhbCBzcGVjaWFsIHB1cnBvc2UgbWV0aG9kcy5cclxuICBAY2xhc3Mge3JlbGF0aW9uQXJyYXl9XHJcbiAgKiovXHJcblxyXG4gIC8qKlxyXG4gIEFuIFtbRXZlbnRdXSB0aGF0IGZpcmVzIHdoZW5ldmVyIHRoZSBjb250ZW50cyBvZiB0aGlzIGFycmF5IGNoYW5nZWQuICBUaGlzIGV2ZW50XHJcbiAgaXMgZmlyZWQgYW55IHRpbWUgYSBuZXcgZW50aXR5IGlzIGF0dGFjaGVkIG9yIGFkZGVkIHRvIHRoZSBFbnRpdHlNYW5hZ2VyIGFuZCBoYXBwZW5zIHRvIGJlbG9uZyB0byB0aGlzIGNvbGxlY3Rpb24uXHJcbiAgQWRkcyB0aGF0IG9jY3VyIGFzIGEgcmVzdWx0IG9mIHF1ZXJ5IG9yIGltcG9ydCBvcGVyYXRpb25zIGFyZSBiYXRjaGVkIHNvIHRoYXQgYWxsIG9mIHRoZSBhZGRzIG9yIHJlbW92ZXMgdG8gYW55IGluZGl2aWR1YWxcclxuICBjb2xsZWN0aW9ucyBhcmUgY29sbGVjdGVkIGludG8gYSBzaW5nbGUgbm90aWZpY2F0aW9uIGV2ZW50IGZvciBlYWNoIHJlbGF0aW9uIGFycmF5LlxyXG4gIEBleGFtcGxlXHJcbiAgICAgIC8vIGFzc3VtZSBvcmRlciBpcyBhbiBvcmRlciBlbnRpdHkgYXR0YWNoZWQgdG8gYW4gRW50aXR5TWFuYWdlci5cclxuICAgICAgb3JkZXJzLmFycmF5Q2hhbmdlZC5zdWJzY3JpYmUoXHJcbiAgICAgIGZ1bmN0aW9uIChhcnJheUNoYW5nZWRBcmdzKSB7XHJcbiAgICAgICAgICBsZXQgYWRkZWRFbnRpdGllcyA9IGFycmF5Q2hhbmdlZEFyZ3MuYWRkZWQ7XHJcbiAgICAgICAgICBsZXQgcmVtb3ZlZEVudGl0aWVzID0gYXJyYXlDaGFuZ2VkLnJlbW92ZWQ7XHJcbiAgICAgIH0pO1xyXG4gIEBldmVudCBhcnJheUNoYW5nZWRcclxuICBAcGFyYW0gYWRkZWQge0FycmF5IG9mIEVudGl0eX0gQW4gYXJyYXkgb2YgYWxsIG9mIHRoZSBlbnRpdGllcyBhZGRlZCB0byB0aGlzIGNvbGxlY3Rpb24uXHJcbiAgQHBhcmFtIHJlbW92ZWQge0FycmF5IG9mIEVudGl0eX0gQW4gYXJyYXkgb2YgYWxsIG9mIHRoZSByZW1vdmVkIGZyb20gdGhpcyBjb2xsZWN0aW9uLlxyXG4gIEByZWFkT25seVxyXG4gICoqL1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgUGVyZm9ybXMgYW4gYXN5bmNocm9ub3VzIGxvYWQgb2YgYWxsIG90aGVyIHRoZSBlbnRpdGllcyBhc3NvY2lhdGVkIHdpdGggdGhpcyByZWxhdGlvbkFycmF5LlxyXG4gIEBleGFtcGxlXHJcbiAgICAgIC8vIGFzc3VtZSBvcmRlcnMgaXMgYW4gZW1wdHksIGFzIHlldCB1bnBvcHVsYXRlZCwgcmVsYXRpb24gYXJyYXkgb2Ygb3JkZXJzXHJcbiAgICAgIC8vIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIGN1c3RvbWVyLlxyXG4gICAgICBvcmRlcnMubG9hZCgpLnRoZW4oLi4uKVxyXG4gIEBtZXRob2QgbG9hZFxyXG4gIEBwYXJhbSBbY2FsbGJhY2tdIHtGdW5jdGlvbn1cclxuICBAcGFyYW0gW2Vycm9yQ2FsbGJhY2tdIHtGdW5jdGlvbn1cclxuICBAcmV0dXJuIHtQcm9taXNlfVxyXG4gICoqL1xyXG4gIGxvYWQ6IGZ1bmN0aW9uKGNhbGxiYWNrPzogUXVlcnlTdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2s/OiBRdWVyeUVycm9yQ2FsbGJhY2spOiBQcm9taXNlPFF1ZXJ5UmVzdWx0PiB7XHJcbiAgICBsZXQgcGFyZW50ID0gdGhpcy5wYXJlbnRFbnRpdHk7XHJcbiAgICBsZXQgcXVlcnkgPSBFbnRpdHlRdWVyeS5mcm9tRW50aXR5TmF2aWdhdGlvbih0aGlzLnBhcmVudEVudGl0eSwgdGhpcy5uYXZpZ2F0aW9uUHJvcGVydHkpO1xyXG4gICAgbGV0IGVtID0gcGFyZW50LmVudGl0eUFzcGVjdC5lbnRpdHlNYW5hZ2VyO1xyXG4gICAgcmV0dXJuIGVtLmV4ZWN1dGVRdWVyeShxdWVyeSwgY2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spO1xyXG4gIH0sXHJcblxyXG4gIF9nZXRFdmVudFBhcmVudDogZnVuY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5wYXJlbnRFbnRpdHkuZW50aXR5QXNwZWN0O1xyXG4gIH0sXHJcblxyXG4gIF9nZXRQZW5kaW5nUHViczogZnVuY3Rpb24oKSB7XHJcbiAgICBsZXQgZW0gPSB0aGlzLnBhcmVudEVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5TWFuYWdlcjtcclxuICAgIHJldHVybiBlbSAmJiBlbS5fcGVuZGluZ1B1YnM7XHJcbiAgfSxcclxuXHJcbiAgLy8gdmlydHVhbCBpbXBsc1xyXG4gIF9nZXRHb29kQWRkczogZnVuY3Rpb24oYWRkczogRW50aXR5W10pIHtcclxuICAgIHJldHVybiBnZXRHb29kQWRkcyh0aGlzLCBhZGRzKTtcclxuICB9LFxyXG5cclxuICBfcHJvY2Vzc0FkZHM6IGZ1bmN0aW9uKGFkZHM6IEVudGl0eVtdKSB7XHJcbiAgICBwcm9jZXNzQWRkcyh0aGlzLCBhZGRzKTtcclxuICB9LFxyXG5cclxuICBfcHJvY2Vzc1JlbW92ZXM6IGZ1bmN0aW9uKHJlbW92ZXM6IEVudGl0eVtdKSB7XHJcbiAgICBwcm9jZXNzUmVtb3Zlcyh0aGlzLCByZW1vdmVzKTtcclxuICB9XHJcblxyXG59O1xyXG5cclxuZnVuY3Rpb24gZ2V0R29vZEFkZHMocmVsYXRpb25BcnJheTogUmVsYXRpb25BcnJheSwgYWRkczogRW50aXR5W10pIHtcclxuICBsZXQgZ29vZEFkZHMgPSBjaGVja0ZvckR1cHMocmVsYXRpb25BcnJheSwgYWRkcyk7XHJcbiAgaWYgKCFnb29kQWRkcy5sZW5ndGgpIHtcclxuICAgIHJldHVybiBnb29kQWRkcztcclxuICB9XHJcbiAgbGV0IHBhcmVudEVudGl0eSA9IHJlbGF0aW9uQXJyYXkucGFyZW50RW50aXR5O1xyXG4gIGxldCBlbnRpdHlNYW5hZ2VyID0gcGFyZW50RW50aXR5LmVudGl0eUFzcGVjdC5lbnRpdHlNYW5hZ2VyO1xyXG4gIC8vIHdlIGRvIG5vdCB3YW50IHRvIGF0dGFjaCBhbiBlbnRpdHkgZHVyaW5nIGxvYWRpbmdcclxuICAvLyBiZWNhdXNlIHRoZXNlIHdpbGwgYWxsIGJlICdhdHRhY2hlZCcgYXQgYSBsYXRlciBzdGVwLlxyXG4gIGlmIChlbnRpdHlNYW5hZ2VyICYmICFlbnRpdHlNYW5hZ2VyLmlzTG9hZGluZykge1xyXG4gICAgZ29vZEFkZHMuZm9yRWFjaChmdW5jdGlvbiAoYWRkKSB7XHJcbiAgICAgIGlmIChhZGQuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlLmlzRGV0YWNoZWQoKSkge1xyXG4gICAgICAgIHJlbGF0aW9uQXJyYXkuX2luUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBlbnRpdHlNYW5hZ2VyIS5hdHRhY2hFbnRpdHkoYWRkLCBFbnRpdHlTdGF0ZS5BZGRlZCk7XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgIHJlbGF0aW9uQXJyYXkuX2luUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICByZXR1cm4gZ29vZEFkZHM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHByb2Nlc3NBZGRzKHJlbGF0aW9uQXJyYXk6IFJlbGF0aW9uQXJyYXksIGFkZHM6IEVudGl0eVtdKSB7XHJcbiAgbGV0IHBhcmVudEVudGl0eSA9IHJlbGF0aW9uQXJyYXkucGFyZW50RW50aXR5O1xyXG4gIGxldCBucCA9IHJlbGF0aW9uQXJyYXkubmF2aWdhdGlvblByb3BlcnR5O1xyXG4gIGxldCBhZGRzSW5Qcm9jZXNzID0gcmVsYXRpb25BcnJheS5fYWRkc0luUHJvY2VzcztcclxuXHJcbiAgbGV0IGludk5wID0gbnAuaW52ZXJzZTtcclxuICBsZXQgc3RhcnRJeCA9IGFkZHNJblByb2Nlc3MubGVuZ3RoO1xyXG4gIHRyeSB7XHJcbiAgICBhZGRzLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkRW50aXR5KSB7XHJcbiAgICAgIGFkZHNJblByb2Nlc3MucHVzaChjaGlsZEVudGl0eSk7XHJcbiAgICAgIGlmIChpbnZOcCkge1xyXG4gICAgICAgIGNoaWxkRW50aXR5LnNldFByb3BlcnR5KGludk5wLm5hbWUsIHBhcmVudEVudGl0eSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gVGhpcyBvY2N1cnMgd2l0aCBhIHVuaWRpcmVjdGlvbmFsIDEtbiBuYXZpZ2F0aW9uIC0gaW4gdGhpcyBjYXNlXHJcbiAgICAgICAgLy8gd2UgbmVlZCB0byB1cGRhdGUgdGhlIGZrcyBpbnN0ZWFkIG9mIHRoZSBuYXZQcm9wXHJcbiAgICAgICAgbGV0IHBrcyA9IHBhcmVudEVudGl0eS5lbnRpdHlUeXBlLmtleVByb3BlcnRpZXM7XHJcbiAgICAgICAgbnAuaW52Rm9yZWlnbktleU5hbWVzLmZvckVhY2goZnVuY3Rpb24gKGZrLCBpKSB7XHJcbiAgICAgICAgICBjaGlsZEVudGl0eS5zZXRQcm9wZXJ0eShmaywgcGFyZW50RW50aXR5LmdldFByb3BlcnR5KHBrc1tpXS5uYW1lKSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0gZmluYWxseSB7XHJcbiAgICBhZGRzSW5Qcm9jZXNzLnNwbGljZShzdGFydEl4LCBhZGRzLmxlbmd0aCk7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuZnVuY3Rpb24gcHJvY2Vzc1JlbW92ZXMocmVsYXRpb25BcnJheTogUmVsYXRpb25BcnJheSwgcmVtb3ZlczogRW50aXR5W10pIHtcclxuICBsZXQgaW5wID0gcmVsYXRpb25BcnJheS5uYXZpZ2F0aW9uUHJvcGVydHkuaW52ZXJzZTtcclxuICBpZiAoaW5wKSB7XHJcbiAgICByZW1vdmVzLmZvckVhY2goZnVuY3Rpb24gKGNoaWxkRW50aXR5KSB7XHJcbiAgICAgIGNoaWxkRW50aXR5LnNldFByb3BlcnR5KGlucCEubmFtZSwgbnVsbCk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNoZWNrRm9yRHVwcyhyZWxhdGlvbkFycmF5OiBSZWxhdGlvbkFycmF5LCBhZGRzOiBFbnRpdHlbXSkge1xyXG4gIC8vIGRvbid0IGFsbG93IGR1cHMgaW4gdGhpcyBhcnJheS4gLSBhbHNvIHByZXZlbnRzIHJlY3Vyc2lvblxyXG4gIGxldCBwYXJlbnRFbnRpdHkgPSByZWxhdGlvbkFycmF5LnBhcmVudEVudGl0eTtcclxuICBsZXQgbmF2UHJvcCA9IHJlbGF0aW9uQXJyYXkubmF2aWdhdGlvblByb3BlcnR5O1xyXG4gIGxldCBpbnZlcnNlUHJvcCA9IG5hdlByb3AuaW52ZXJzZTtcclxuICBsZXQgZ29vZEFkZHM6IEVudGl0eVtdO1xyXG4gIGlmIChpbnZlcnNlUHJvcCkge1xyXG4gICAgZ29vZEFkZHMgPSBhZGRzLmZpbHRlcihmdW5jdGlvbiAoYSkge1xyXG4gICAgICBpZiAocmVsYXRpb25BcnJheS5fYWRkc0luUHJvY2Vzcy5pbmRleE9mKGEpID49IDApIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGludmVyc2VWYWx1ZSA9IGEuZ2V0UHJvcGVydHkoaW52ZXJzZVByb3AhLm5hbWUpO1xyXG4gICAgICByZXR1cm4gaW52ZXJzZVZhbHVlICE9PSBwYXJlbnRFbnRpdHk7XHJcbiAgICB9KTtcclxuICB9IGVsc2Uge1xyXG4gICAgLy8gVGhpcyBvY2N1cnMgd2l0aCBhIHVuaWRpcmVjdGlvbmFsIDEtPk4gcmVsYXRpb24gKCB3aGVyZSB0aGVyZSBpcyBubyBuIC0+IDEpXHJcbiAgICAvLyBpbiB0aGlzIGNhc2Ugd2UgY29tcGFyZSBma3MuXHJcbiAgICBsZXQgZmtQcm9wTmFtZXMgPSBuYXZQcm9wLmludkZvcmVpZ25LZXlOYW1lcztcclxuICAgIGxldCBrZXlQcm9wcyA9IHBhcmVudEVudGl0eS5lbnRpdHlUeXBlLmtleVByb3BlcnRpZXM7XHJcbiAgICBnb29kQWRkcyA9IGFkZHMuZmlsdGVyKGZ1bmN0aW9uIChhKSB7XHJcbiAgICAgIGlmIChyZWxhdGlvbkFycmF5Ll9hZGRzSW5Qcm9jZXNzLmluZGV4T2YoYSkgPj0gMCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmtQcm9wTmFtZXMuc29tZShmdW5jdGlvbiAoZmssIGkpIHtcclxuICAgICAgICBsZXQga2V5UHJvcCA9IGtleVByb3BzW2ldLm5hbWU7XHJcbiAgICAgICAgbGV0IGtleVZhbCA9IHBhcmVudEVudGl0eS5nZXRQcm9wZXJ0eShrZXlQcm9wKTtcclxuICAgICAgICBsZXQgZmtWYWwgPSBhLmdldFByb3BlcnR5KGZrKTtcclxuICAgICAgICByZXR1cm4ga2V5VmFsICE9PSBma1ZhbDtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmV0dXJuIGdvb2RBZGRzO1xyXG59XHJcblxyXG4vKiogRm9yIHVzZSBieSBicmVlemUgcGx1Z2luIGF1dGhvcnMgb25seS4gVGhlIGNsYXNzIGlzIGZvciB1c2UgaW4gYnVpbGRpbmcgYSBbW0lNb2RlbExpYnJhcnlBZGFwdGVyXV0gaW1wbGVtZW50YXRpb24uIFxyXG5AYWRhcHRlciAoc2VlIFtbSU1vZGVsTGlicmFyeUFkYXB0ZXJdXSkgICAgXHJcbkBoaWRkZW4gXHJcbiovXHJcbmV4cG9ydCBmdW5jdGlvbiBtYWtlUmVsYXRpb25BcnJheShhcnI6IGFueVtdLCBwYXJlbnRFbnRpdHk6IEVudGl0eSwgbmF2aWdhdGlvblByb3BlcnR5OiBOYXZpZ2F0aW9uUHJvcGVydHkpOiBSZWxhdGlvbkFycmF5IHtcclxuICBsZXQgYXJyWCA9IGFyciBhcyBhbnk7XHJcbiAgYXJyWC5wYXJlbnRFbnRpdHkgPSBwYXJlbnRFbnRpdHk7XHJcbiAgYXJyWC5uYXZpZ2F0aW9uUHJvcGVydHkgPSBuYXZpZ2F0aW9uUHJvcGVydHk7XHJcbiAgYXJyWC5hcnJheUNoYW5nZWQgPSBuZXcgQnJlZXplRXZlbnQoXCJhcnJheUNoYW5nZWRcIiwgYXJyWCk7XHJcbiAgLy8gYXJyYXkgb2YgcHVzaGVzIGN1cnJlbnRseSBpbiBwcm9jZXNzIG9uIHRoaXMgcmVsYXRpb24gYXJyYXkgLSB1c2VkIHRvIHByZXZlbnQgcmVjdXJzaW9uLlxyXG4gIGFyclguX2FkZHNJblByb2Nlc3MgPSBbXTtcclxuICAvLyBuZWVkIHRvIHVzZSBtaXhpbnMgaGVyZSBpbnN0ZWFkIG9mIGluaGVyaXRhbmNlIGJlY2F1c2Ugd2UgYXJlIHN0YXJ0aW5nIGZyb20gYW4gZXhpc3RpbmcgYXJyYXkgb2JqZWN0LlxyXG4gIGNvcmUuZXh0ZW5kKGFyclgsIG9ic2VydmFibGVBcnJheS5taXhpbik7XHJcbiAgcmV0dXJuIGNvcmUuZXh0ZW5kKGFyclgsIHJlbGF0aW9uQXJyYXlNaXhpbikgYXMgUmVsYXRpb25BcnJheTtcclxufVxyXG4iXX0=
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { core } from './core';
|
|
2
|
-
import { assertConfig } from './assert-param';
|
|
3
|
-
import { DataService } from './data-service';
|
|
4
|
-
/**
|
|
5
|
-
A SaveOptions instance is used to specify the 'options' under which a save will occur.
|
|
6
|
-
**/
|
|
7
|
-
export class SaveOptions {
|
|
8
|
-
/** The default value whenever SaveOptions are not specified. */
|
|
9
|
-
static defaultInstance = new SaveOptions({ allowConcurrentSaves: false });
|
|
10
|
-
constructor(config) {
|
|
11
|
-
SaveOptions._updateWithConfig(this, config);
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
Sets the 'defaultInstance' by creating a copy of the current 'defaultInstance' and then applying all of the properties of the current instance.
|
|
15
|
-
The current instance is returned unchanged.
|
|
16
|
-
**/
|
|
17
|
-
setAsDefault() {
|
|
18
|
-
return core.setAsDefault(this, SaveOptions);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
Returns a copy of this SaveOptions with the specified config options applied.
|
|
22
|
-
> var saveOptions = em1.saveOptions.using( {resourceName: "anotherResource" });
|
|
23
|
-
**/
|
|
24
|
-
using(config) {
|
|
25
|
-
return SaveOptions._updateWithConfig(this, config);
|
|
26
|
-
}
|
|
27
|
-
/** @hidden @internal */
|
|
28
|
-
static _updateWithConfig(obj, config) {
|
|
29
|
-
if (config) {
|
|
30
|
-
assertConfig(config)
|
|
31
|
-
.whereParam("resourceName").isOptional().isString()
|
|
32
|
-
.whereParam("dataService").isOptional().isInstanceOf(DataService)
|
|
33
|
-
.whereParam("allowConcurrentSaves").isBoolean().isOptional()
|
|
34
|
-
.whereParam("tag").isOptional()
|
|
35
|
-
.applyAll(obj);
|
|
36
|
-
}
|
|
37
|
-
return obj;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
SaveOptions.prototype._$typeName = "SaveOptions";
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NhdmUtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFjN0M7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQVl0QixnRUFBZ0U7SUFDaEUsTUFBTSxDQUFDLGVBQWUsR0FBRyxJQUFJLFdBQVcsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7SUFFekUsWUFBWSxNQUEwQjtRQUNwQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFHRDs7O09BR0c7SUFDSCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLE1BQXlCO1FBQzdCLE9BQU8sV0FBVyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsd0JBQXdCO0lBQ2hCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFnQixFQUFFLE1BQXlCO1FBQzFFLElBQUksTUFBTSxFQUFFO1lBQ1YsWUFBWSxDQUFDLE1BQU0sQ0FBQztpQkFDZixVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFO2lCQUNsRCxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztpQkFDaEUsVUFBVSxDQUFDLHNCQUFzQixDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsVUFBVSxFQUFFO2lCQUMzRCxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUFFO2lCQUM5QixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEI7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7O0FBR0gsV0FBVyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSB9IGZyb20gJy4vY29yZSc7XHJcbmltcG9ydCB7IGFzc2VydENvbmZpZyB9IGZyb20gJy4vYXNzZXJ0LXBhcmFtJztcclxuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuL2RhdGEtc2VydmljZSc7XHJcblxyXG4vKiogQ29uZmlndXJhdGlvbiBpbmZvIHRvIGJlIHBhc3NlZCB0byB0aGUgW1tTYXZlT3B0aW9uc11dIGNvbnN0cnVjdG9yICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2F2ZU9wdGlvbnNDb25maWcge1xyXG4gIC8qKiBSZXNvdXJjZSBuYW1lIHRvIGJlIHVzZWQgZHVyaW5nIHRoZSBzYXZlIC0gdGhpcyBkZWZhdWx0cyB0byBcIlNhdmVDaGFuZ2VzXCIgKi9cclxuICByZXNvdXJjZU5hbWU/OiBzdHJpbmc7XHJcbiAgLyoqIFRoZSBEYXRhU2VydmljZSB0byBiZSB1c2VkIGZvciB0aGlzIHNhdmUuICovXHJcbiAgZGF0YVNlcnZpY2U/OiBEYXRhU2VydmljZTtcclxuICAvKiogV2hldGhlciBtdWx0aXBsZSBzYXZlcyBjYW4gYmUgaW4tZmxpZ2h0IGF0IHRoZSBzYW1lIHRpbWUuIFRoZSBkZWZhdWx0IGlzIGZhbHNlLiAqL1xyXG4gIGFsbG93Q29uY3VycmVudFNhdmVzPzogYm9vbGVhbjtcclxuICAvKiogRnJlZSBmb3JtIHZhbHVlIHRoYXQgd2lsbCBiZSBzZW50IHRvIHRoZSBzZXJ2ZXIgZHVyaW5nIHRoZSBzYXZlLiAqL1xyXG4gIHRhZz86IGFueTtcclxufVxyXG5cclxuLyoqXHJcbkEgU2F2ZU9wdGlvbnMgaW5zdGFuY2UgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSAnb3B0aW9ucycgdW5kZXIgd2hpY2ggYSBzYXZlIHdpbGwgb2NjdXIuXHJcbioqL1xyXG5leHBvcnQgY2xhc3MgU2F2ZU9wdGlvbnMge1xyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIGRlY2xhcmUgXyR0eXBlTmFtZTogc3RyaW5nOyAvLyBvbiBwcm90b1xyXG4gIC8qKiBSZXNvdXJjZSBuYW1lIHRvIGJlIHVzZWQgZHVyaW5nIHRoZSBzYXZlIC0gdGhpcyBkZWZhdWx0cyB0byBcIlNhdmVDaGFuZ2VzXCIuIF9fUmVhZCBPbmx5X18gKi9cclxuICBkZWNsYXJlIHJlc291cmNlTmFtZTogc3RyaW5nO1xyXG4gIC8qKiBUaGUgRGF0YVNlcnZpY2UgdG8gYmUgdXNlZCBmb3IgdGhpcyBzYXZlLiBfX1JlYWQgT25seV9fICovXHJcbiAgZGVjbGFyZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2U7XHJcbiAgLyoqIFdoZXRoZXIgbXVsdGlwbGUgc2F2ZXMgY2FuIGJlIGluLWZsaWdodCBhdCB0aGUgc2FtZSB0aW1lLiBUaGUgZGVmYXVsdCBpcyBmYWxzZS4gX19SZWFkIE9ubHlfXyAqL1xyXG4gIGRlY2xhcmUgYWxsb3dDb25jdXJyZW50U2F2ZXM6IGJvb2xlYW47XHJcbiAgLyoqIEZyZWUgZm9ybSB2YWx1ZSB0aGF0IHdpbGwgYmUgc2VudCB0byB0aGUgc2VydmVyIGR1cmluZyB0aGUgc2F2ZS4gX19SZWFkIE9ubHlfXyAqL1xyXG4gIGRlY2xhcmUgdGFnOiBhbnk7XHJcblxyXG4gIC8qKiBUaGUgZGVmYXVsdCB2YWx1ZSB3aGVuZXZlciBTYXZlT3B0aW9ucyBhcmUgbm90IHNwZWNpZmllZC4gKi9cclxuICBzdGF0aWMgZGVmYXVsdEluc3RhbmNlID0gbmV3IFNhdmVPcHRpb25zKHsgYWxsb3dDb25jdXJyZW50U2F2ZXM6IGZhbHNlfSk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz86IFNhdmVPcHRpb25zQ29uZmlnKSB7XHJcbiAgICBTYXZlT3B0aW9ucy5fdXBkYXRlV2l0aENvbmZpZyh0aGlzLCBjb25maWcpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gIFNldHMgdGhlICdkZWZhdWx0SW5zdGFuY2UnIGJ5IGNyZWF0aW5nIGEgY29weSBvZiB0aGUgY3VycmVudCAnZGVmYXVsdEluc3RhbmNlJyBhbmQgdGhlbiBhcHBseWluZyBhbGwgb2YgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UuXHJcbiAgVGhlIGN1cnJlbnQgaW5zdGFuY2UgaXMgcmV0dXJuZWQgdW5jaGFuZ2VkLlxyXG4gICoqL1xyXG4gIHNldEFzRGVmYXVsdCgpIHtcclxuICAgIHJldHVybiBjb3JlLnNldEFzRGVmYXVsdCh0aGlzLCBTYXZlT3B0aW9ucyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIGEgY29weSBvZiB0aGlzIFNhdmVPcHRpb25zIHdpdGggdGhlIHNwZWNpZmllZCBjb25maWcgb3B0aW9ucyBhcHBsaWVkLlxyXG4gID4gICAgIHZhciBzYXZlT3B0aW9ucyA9IGVtMS5zYXZlT3B0aW9ucy51c2luZygge3Jlc291cmNlTmFtZTogXCJhbm90aGVyUmVzb3VyY2VcIiB9KTtcclxuICAqKi9cclxuICB1c2luZyhjb25maWc6IFNhdmVPcHRpb25zQ29uZmlnKSB7XHJcbiAgICByZXR1cm4gU2F2ZU9wdGlvbnMuX3VwZGF0ZVdpdGhDb25maWcodGhpcywgY29uZmlnKTtcclxuICB9XHJcblxyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIHByaXZhdGUgc3RhdGljIF91cGRhdGVXaXRoQ29uZmlnKG9iajogU2F2ZU9wdGlvbnMsIGNvbmZpZzogU2F2ZU9wdGlvbnNDb25maWcpIHtcclxuICAgIGlmIChjb25maWcpIHtcclxuICAgICAgYXNzZXJ0Q29uZmlnKGNvbmZpZylcclxuICAgICAgICAgIC53aGVyZVBhcmFtKFwicmVzb3VyY2VOYW1lXCIpLmlzT3B0aW9uYWwoKS5pc1N0cmluZygpXHJcbiAgICAgICAgICAud2hlcmVQYXJhbShcImRhdGFTZXJ2aWNlXCIpLmlzT3B0aW9uYWwoKS5pc0luc3RhbmNlT2YoRGF0YVNlcnZpY2UpXHJcbiAgICAgICAgICAud2hlcmVQYXJhbShcImFsbG93Q29uY3VycmVudFNhdmVzXCIpLmlzQm9vbGVhbigpLmlzT3B0aW9uYWwoKVxyXG4gICAgICAgICAgLndoZXJlUGFyYW0oXCJ0YWdcIikuaXNPcHRpb25hbCgpXHJcbiAgICAgICAgICAuYXBwbHlBbGwob2JqKTtcclxuICAgIH1cclxuICAgIHJldHVybiBvYmo7XHJcbiAgfVxyXG5cclxufVxyXG5TYXZlT3B0aW9ucy5wcm90b3R5cGUuXyR0eXBlTmFtZSA9IFwiU2F2ZU9wdGlvbnNcIjtcclxuXHJcblxyXG5cclxuIl19
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { core } from './core';
|
|
2
|
-
/** @hidden @internal */
|
|
3
|
-
// Represents entities not yet attached to navigationProperties.
|
|
4
|
-
export class UnattachedChildrenMap {
|
|
5
|
-
// key is EntityKey.toString(), value is array of { navigationProperty, children }
|
|
6
|
-
map = {};
|
|
7
|
-
addChild(parentEntityKey, navigationProperty, child) {
|
|
8
|
-
let tuple = this.getTuple(parentEntityKey, navigationProperty);
|
|
9
|
-
if (!tuple) {
|
|
10
|
-
tuple = { navigationProperty: navigationProperty, children: [] };
|
|
11
|
-
core.getArray(this.map, parentEntityKey.toString()).push(tuple);
|
|
12
|
-
}
|
|
13
|
-
tuple.children.push(child);
|
|
14
|
-
}
|
|
15
|
-
removeChildren(parentEntityKeyString, navigationProperty) {
|
|
16
|
-
let tuples = this.map[parentEntityKeyString];
|
|
17
|
-
if (!tuples)
|
|
18
|
-
return;
|
|
19
|
-
core.arrayRemoveItem(tuples, (t) => {
|
|
20
|
-
return t.navigationProperty === navigationProperty;
|
|
21
|
-
});
|
|
22
|
-
if (!tuples.length) {
|
|
23
|
-
delete this.map[parentEntityKeyString];
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
getTuple(parentEntityKey, navigationProperty) {
|
|
27
|
-
let tuples = this.getTuples(parentEntityKey);
|
|
28
|
-
if (!tuples)
|
|
29
|
-
return null;
|
|
30
|
-
let tuple = core.arrayFirst(tuples, function (t) {
|
|
31
|
-
return t.navigationProperty === navigationProperty;
|
|
32
|
-
});
|
|
33
|
-
return tuple;
|
|
34
|
-
}
|
|
35
|
-
getTuples(parentEntityKey) {
|
|
36
|
-
let allTuples = [];
|
|
37
|
-
let tuples = this.map[parentEntityKey.toString()];
|
|
38
|
-
if (tuples) {
|
|
39
|
-
allTuples = allTuples.concat(tuples);
|
|
40
|
-
}
|
|
41
|
-
let entityType = parentEntityKey.entityType;
|
|
42
|
-
while (entityType.baseEntityType) {
|
|
43
|
-
entityType = entityType.baseEntityType;
|
|
44
|
-
let baseKey = parentEntityKey.toString(entityType);
|
|
45
|
-
tuples = this.map[baseKey];
|
|
46
|
-
if (tuples) {
|
|
47
|
-
allTuples = allTuples.concat(tuples);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return (allTuples.length) ? allTuples : undefined;
|
|
51
|
-
}
|
|
52
|
-
getTuplesByString(parentEntityKeyString) {
|
|
53
|
-
return this.map[parentEntityKeyString];
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5hdHRhY2hlZC1jaGlsZHJlbi1tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdW5hdHRhY2hlZC1jaGlsZHJlbi1tYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQVc5Qix3QkFBd0I7QUFDeEIsaUVBQWlFO0FBQ2pFLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsa0ZBQWtGO0lBQ2xGLEdBQUcsR0FBcUMsRUFBRSxDQUFDO0lBRzNDLFFBQVEsQ0FBQyxlQUEwQixFQUFFLGtCQUFzQyxFQUFFLEtBQWE7UUFDeEYsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsS0FBSyxHQUFHLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDO1lBQ2pFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDakU7UUFDRCxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsY0FBYyxDQUFDLHFCQUE2QixFQUFFLGtCQUFzQztRQUNsRixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDdEMsT0FBTyxDQUFDLENBQUMsa0JBQWtCLEtBQUssa0JBQWtCLENBQUM7UUFDckQsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNsQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUN4QztJQUNILENBQUM7SUFFRCxRQUFRLENBQUMsZUFBMEIsRUFBRSxrQkFBc0M7UUFDekUsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3pCLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQztZQUM3QyxPQUFPLENBQUMsQ0FBQyxrQkFBa0IsS0FBSyxrQkFBa0IsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFNBQVMsQ0FBQyxlQUEwQjtRQUNsQyxJQUFJLFNBQVMsR0FBZ0IsRUFBRSxDQUFDO1FBQ2hDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDbEQsSUFBSSxNQUFNLEVBQUU7WUFDVixTQUFTLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUN0QztRQUNELElBQUksVUFBVSxHQUFHLGVBQWUsQ0FBQyxVQUFVLENBQUM7UUFDNUMsT0FBTyxVQUFVLENBQUMsY0FBYyxFQUFFO1lBQ2hDLFVBQVUsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDO1lBQ3ZDLElBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkQsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDM0IsSUFBSSxNQUFNLEVBQUU7Z0JBQ1YsU0FBUyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDdEM7U0FDRjtRQUNELE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3BELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxxQkFBNkI7UUFDN0MsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDekMsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSB9IGZyb20gJy4vY29yZSc7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4vZW50aXR5LWFzcGVjdCc7XHJcbmltcG9ydCB7IE5hdmlnYXRpb25Qcm9wZXJ0eSB9IGZyb20gJy4vZW50aXR5LW1ldGFkYXRhJztcclxuaW1wb3J0IHsgRW50aXR5S2V5IH0gZnJvbSAnLi9lbnRpdHkta2V5JztcclxuXHJcbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIElOYXZUdXBsZSB7XHJcbiAgbmF2aWdhdGlvblByb3BlcnR5OiBOYXZpZ2F0aW9uUHJvcGVydHk7XHJcbiAgY2hpbGRyZW46IEVudGl0eVtdO1xyXG59XHJcblxyXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuLy8gUmVwcmVzZW50cyBlbnRpdGllcyBub3QgeWV0IGF0dGFjaGVkIHRvIG5hdmlnYXRpb25Qcm9wZXJ0aWVzLiBcclxuZXhwb3J0IGNsYXNzIFVuYXR0YWNoZWRDaGlsZHJlbk1hcCB7XHJcbiAgLy8ga2V5IGlzIEVudGl0eUtleS50b1N0cmluZygpLCB2YWx1ZSBpcyBhcnJheSBvZiB7IG5hdmlnYXRpb25Qcm9wZXJ0eSwgY2hpbGRyZW4gfVxyXG4gIG1hcDogeyBbaW5kZXg6IHN0cmluZ106IElOYXZUdXBsZVtdIH0gPSB7fTtcclxuXHJcblxyXG4gIGFkZENoaWxkKHBhcmVudEVudGl0eUtleTogRW50aXR5S2V5LCBuYXZpZ2F0aW9uUHJvcGVydHk6IE5hdmlnYXRpb25Qcm9wZXJ0eSwgY2hpbGQ6IEVudGl0eSkge1xyXG4gICAgbGV0IHR1cGxlID0gdGhpcy5nZXRUdXBsZShwYXJlbnRFbnRpdHlLZXksIG5hdmlnYXRpb25Qcm9wZXJ0eSk7XHJcbiAgICBpZiAoIXR1cGxlKSB7XHJcbiAgICAgIHR1cGxlID0geyBuYXZpZ2F0aW9uUHJvcGVydHk6IG5hdmlnYXRpb25Qcm9wZXJ0eSwgY2hpbGRyZW46IFtdIH07XHJcbiAgICAgIGNvcmUuZ2V0QXJyYXkodGhpcy5tYXAsIHBhcmVudEVudGl0eUtleS50b1N0cmluZygpKS5wdXNoKHR1cGxlKTtcclxuICAgIH1cclxuICAgIHR1cGxlLmNoaWxkcmVuLnB1c2goY2hpbGQpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlQ2hpbGRyZW4ocGFyZW50RW50aXR5S2V5U3RyaW5nOiBzdHJpbmcsIG5hdmlnYXRpb25Qcm9wZXJ0eTogTmF2aWdhdGlvblByb3BlcnR5KSB7XHJcbiAgICBsZXQgdHVwbGVzID0gdGhpcy5tYXBbcGFyZW50RW50aXR5S2V5U3RyaW5nXTtcclxuICAgIGlmICghdHVwbGVzKSByZXR1cm47XHJcbiAgICBjb3JlLmFycmF5UmVtb3ZlSXRlbSh0dXBsZXMsICh0OiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHQubmF2aWdhdGlvblByb3BlcnR5ID09PSBuYXZpZ2F0aW9uUHJvcGVydHk7XHJcbiAgICB9KTtcclxuICAgIGlmICghdHVwbGVzLmxlbmd0aCkge1xyXG4gICAgICBkZWxldGUgdGhpcy5tYXBbcGFyZW50RW50aXR5S2V5U3RyaW5nXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFR1cGxlKHBhcmVudEVudGl0eUtleTogRW50aXR5S2V5LCBuYXZpZ2F0aW9uUHJvcGVydHk6IE5hdmlnYXRpb25Qcm9wZXJ0eSkge1xyXG4gICAgbGV0IHR1cGxlcyA9IHRoaXMuZ2V0VHVwbGVzKHBhcmVudEVudGl0eUtleSk7XHJcbiAgICBpZiAoIXR1cGxlcykgcmV0dXJuIG51bGw7XHJcbiAgICBsZXQgdHVwbGUgPSBjb3JlLmFycmF5Rmlyc3QodHVwbGVzLCBmdW5jdGlvbiAodCkge1xyXG4gICAgICByZXR1cm4gdC5uYXZpZ2F0aW9uUHJvcGVydHkgPT09IG5hdmlnYXRpb25Qcm9wZXJ0eTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHR1cGxlO1xyXG4gIH1cclxuXHJcbiAgZ2V0VHVwbGVzKHBhcmVudEVudGl0eUtleTogRW50aXR5S2V5KSB7XHJcbiAgICBsZXQgYWxsVHVwbGVzOiBJTmF2VHVwbGVbXSA9IFtdO1xyXG4gICAgbGV0IHR1cGxlcyA9IHRoaXMubWFwW3BhcmVudEVudGl0eUtleS50b1N0cmluZygpXTtcclxuICAgIGlmICh0dXBsZXMpIHtcclxuICAgICAgYWxsVHVwbGVzID0gYWxsVHVwbGVzLmNvbmNhdCh0dXBsZXMpO1xyXG4gICAgfVxyXG4gICAgbGV0IGVudGl0eVR5cGUgPSBwYXJlbnRFbnRpdHlLZXkuZW50aXR5VHlwZTtcclxuICAgIHdoaWxlIChlbnRpdHlUeXBlLmJhc2VFbnRpdHlUeXBlKSB7XHJcbiAgICAgIGVudGl0eVR5cGUgPSBlbnRpdHlUeXBlLmJhc2VFbnRpdHlUeXBlO1xyXG4gICAgICBsZXQgYmFzZUtleSA9IHBhcmVudEVudGl0eUtleS50b1N0cmluZyhlbnRpdHlUeXBlKTtcclxuICAgICAgdHVwbGVzID0gdGhpcy5tYXBbYmFzZUtleV07XHJcbiAgICAgIGlmICh0dXBsZXMpIHtcclxuICAgICAgICBhbGxUdXBsZXMgPSBhbGxUdXBsZXMuY29uY2F0KHR1cGxlcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiAoYWxsVHVwbGVzLmxlbmd0aCkgPyBhbGxUdXBsZXMgOiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRUdXBsZXNCeVN0cmluZyhwYXJlbnRFbnRpdHlLZXlTdHJpbmc6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMubWFwW3BhcmVudEVudGl0eUtleVN0cmluZ107XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
|