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,107 +0,0 @@
|
|
|
1
|
-
import { BreezeEnum } from './enum';
|
|
2
|
-
/**
|
|
3
|
-
EntityState is an 'Enum' containing all of the valid states for an 'Entity'.
|
|
4
|
-
**/
|
|
5
|
-
export class EntityState extends BreezeEnum {
|
|
6
|
-
/** The 'Unchanged' state. **/
|
|
7
|
-
static Unchanged = new EntityState();
|
|
8
|
-
/** The 'Added' state. **/
|
|
9
|
-
static Added = new EntityState();
|
|
10
|
-
/** The 'Modified' state. **/
|
|
11
|
-
static Modified = new EntityState();
|
|
12
|
-
/** The 'Deleted' state. **/
|
|
13
|
-
static Deleted = new EntityState();
|
|
14
|
-
/** The 'Detached' state. **/
|
|
15
|
-
static Detached = new EntityState();
|
|
16
|
-
/**
|
|
17
|
-
Returns whether an entityState instance is EntityState.Unchanged.
|
|
18
|
-
> var es = anEntity.entityAspect.entityState;
|
|
19
|
-
> return es.isUnchanged();
|
|
20
|
-
|
|
21
|
-
is the same as
|
|
22
|
-
> return es === EntityState.Unchanged;
|
|
23
|
-
**/
|
|
24
|
-
isUnchanged() {
|
|
25
|
-
return this === EntityState.Unchanged;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
Return whether an entityState instance is EntityState.Added.
|
|
29
|
-
|
|
30
|
-
> var es = anEntity.entityAspect.entityState;
|
|
31
|
-
> return es.isAdded();
|
|
32
|
-
|
|
33
|
-
is the same as
|
|
34
|
-
> return es === EntityState.Added;
|
|
35
|
-
**/
|
|
36
|
-
isAdded() {
|
|
37
|
-
return this === EntityState.Added;
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
Returns whether an entityState instance is EntityState.Modified.
|
|
41
|
-
> var es = anEntity.entityAspect.entityState;
|
|
42
|
-
> return es.isModified();
|
|
43
|
-
|
|
44
|
-
is the same as
|
|
45
|
-
> return es === EntityState.Modified;
|
|
46
|
-
**/
|
|
47
|
-
isModified() {
|
|
48
|
-
return this === EntityState.Modified;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
Returns whether an entityState instance is EntityState.Deleted.
|
|
52
|
-
> var es = anEntity.entityAspect.entityState;
|
|
53
|
-
> return es.isDeleted();
|
|
54
|
-
|
|
55
|
-
is the same as
|
|
56
|
-
|
|
57
|
-
> return es === EntityState.Deleted;
|
|
58
|
-
**/
|
|
59
|
-
isDeleted() {
|
|
60
|
-
return this === EntityState.Deleted;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
Returns whether an entityState instance is EntityState.Detached.
|
|
64
|
-
> var es = anEntity.entityAspect.entityState;
|
|
65
|
-
> return es.isDetached();
|
|
66
|
-
|
|
67
|
-
is the same as
|
|
68
|
-
> return es === EntityState.Detached;
|
|
69
|
-
**/
|
|
70
|
-
isDetached() {
|
|
71
|
-
return this === EntityState.Detached;
|
|
72
|
-
}
|
|
73
|
-
/** Return true if EntityState is Deleted or Detached */
|
|
74
|
-
isDeletedOrDetached() {
|
|
75
|
-
return this === EntityState.Detached || this === EntityState.Detached;
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
Returns whether an entityState instance is EntityState.Unchanged or EntityState.Modified.
|
|
79
|
-
> var es = anEntity.entityAspect.entityState;
|
|
80
|
-
> return es.isUnchangedOrModified();
|
|
81
|
-
|
|
82
|
-
is the same as
|
|
83
|
-
> return es === EntityState.Unchanged || es === EntityState.Modified
|
|
84
|
-
**/
|
|
85
|
-
isUnchangedOrModified() {
|
|
86
|
-
return this === EntityState.Unchanged || this === EntityState.Modified;
|
|
87
|
-
}
|
|
88
|
-
/** Return true if EntityStatis is Added or Modified */
|
|
89
|
-
isAddedOrModified() {
|
|
90
|
-
return this === EntityState.Added || this === EntityState.Modified;
|
|
91
|
-
}
|
|
92
|
-
/** Returns whether an entityState instance is EntityState.Added or EntityState.Modified or EntityState.Deleted.
|
|
93
|
-
> var es = anEntity.entityAspect.entityState;
|
|
94
|
-
> return es.isAddedModifiedOrDeleted();
|
|
95
|
-
|
|
96
|
-
is the same as
|
|
97
|
-
> return es === EntityState.Added || es === EntityState.Modified || es === EntityState.Deleted
|
|
98
|
-
**/
|
|
99
|
-
isAddedModifiedOrDeleted() {
|
|
100
|
-
return this === EntityState.Added ||
|
|
101
|
-
this === EntityState.Modified ||
|
|
102
|
-
this === EntityState.Deleted;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
EntityState.prototype._$typeName = "EntityState";
|
|
106
|
-
Error['x'] = EntityState.resolveSymbols();
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VudGl0eS1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRXBDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVksU0FBUSxVQUFVO0lBRXpDLDhCQUE4QjtJQUM5QixNQUFNLENBQUMsU0FBUyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDckMsNEJBQTRCO0lBQzVCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUNqQyxnQ0FBZ0M7SUFDaEMsTUFBTSxDQUFDLFFBQVEsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLDhCQUE4QjtJQUM5QixNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDbkMsK0JBQStCO0lBQy9CLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUVwQzs7Ozs7OztPQU9HO0lBQ0gsV0FBVztRQUNULE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxTQUFTLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsT0FBTztRQUNMLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxVQUFVO1FBQ1IsT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxTQUFTO1FBQ1AsT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILFVBQVU7UUFDUixPQUFPLElBQUksS0FBSyxXQUFXLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCx3REFBd0Q7SUFDeEQsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxRQUFRLElBQUksSUFBSSxLQUFLLFdBQVcsQ0FBQyxRQUFRLENBQUM7SUFDeEUsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxxQkFBcUI7UUFDbkIsT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLFNBQVMsSUFBSSxJQUFJLEtBQUssV0FBVyxDQUFDLFFBQVEsQ0FBQztJQUN6RSxDQUFDO0lBRUQsdURBQXVEO0lBQ3ZELGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxLQUFLLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxLQUFLLFdBQVcsQ0FBQyxRQUFRLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILHdCQUF3QjtRQUN0QixPQUFPLElBQUksS0FBSyxXQUFXLENBQUMsS0FBSztZQUMvQixJQUFJLEtBQUssV0FBVyxDQUFDLFFBQVE7WUFDN0IsSUFBSSxLQUFLLFdBQVcsQ0FBQyxPQUFPLENBQUM7SUFDakMsQ0FBQzs7QUFHSCxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7QUFDakQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWV6ZUVudW0gfSBmcm9tICcuL2VudW0nO1xyXG5cclxuLyoqXHJcbkVudGl0eVN0YXRlIGlzIGFuICdFbnVtJyBjb250YWluaW5nIGFsbCBvZiB0aGUgdmFsaWQgc3RhdGVzIGZvciBhbiAnRW50aXR5Jy5cclxuKiovXHJcbmV4cG9ydCBjbGFzcyBFbnRpdHlTdGF0ZSBleHRlbmRzIEJyZWV6ZUVudW0ge1xyXG5cclxuICAvKiogVGhlICdVbmNoYW5nZWQnIHN0YXRlLiAqKi9cclxuICBzdGF0aWMgVW5jaGFuZ2VkID0gbmV3IEVudGl0eVN0YXRlKCk7XHJcbiAgLyoqICBUaGUgJ0FkZGVkJyBzdGF0ZS4gICoqL1xyXG4gIHN0YXRpYyBBZGRlZCA9IG5ldyBFbnRpdHlTdGF0ZSgpO1xyXG4gIC8qKiAgVGhlICdNb2RpZmllZCcgc3RhdGUuICAgKiovXHJcbiAgc3RhdGljIE1vZGlmaWVkID0gbmV3IEVudGl0eVN0YXRlKCk7XHJcbiAgLyoqICBUaGUgJ0RlbGV0ZWQnIHN0YXRlLiAgKiovXHJcbiAgc3RhdGljIERlbGV0ZWQgPSBuZXcgRW50aXR5U3RhdGUoKTtcclxuICAvKiogIFRoZSAnRGV0YWNoZWQnIHN0YXRlLiAgKiovXHJcbiAgc3RhdGljIERldGFjaGVkID0gbmV3IEVudGl0eVN0YXRlKCk7XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgd2hldGhlciBhbiBlbnRpdHlTdGF0ZSBpbnN0YW5jZSBpcyBFbnRpdHlTdGF0ZS5VbmNoYW5nZWQuXHJcbiAgPiAgICAgdmFyIGVzID0gYW5FbnRpdHkuZW50aXR5QXNwZWN0LmVudGl0eVN0YXRlO1xyXG4gID4gICAgIHJldHVybiBlcy5pc1VuY2hhbmdlZCgpO1xyXG5cclxuICBpcyB0aGUgc2FtZSBhc1xyXG4gID4gICAgIHJldHVybiBlcyA9PT0gRW50aXR5U3RhdGUuVW5jaGFuZ2VkO1xyXG4gICoqL1xyXG4gIGlzVW5jaGFuZ2VkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMgPT09IEVudGl0eVN0YXRlLlVuY2hhbmdlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybiB3aGV0aGVyIGFuIGVudGl0eVN0YXRlIGluc3RhbmNlIGlzIEVudGl0eVN0YXRlLkFkZGVkLlxyXG4gIFxyXG4gID4gICAgIHZhciBlcyA9IGFuRW50aXR5LmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZTtcclxuICA+ICAgICByZXR1cm4gZXMuaXNBZGRlZCgpO1xyXG5cclxuICBpcyB0aGUgc2FtZSBhc1xyXG4gID4gICAgIHJldHVybiBlcyA9PT0gRW50aXR5U3RhdGUuQWRkZWQ7XHJcbiAgKiovXHJcbiAgaXNBZGRlZCgpIHtcclxuICAgIHJldHVybiB0aGlzID09PSBFbnRpdHlTdGF0ZS5BZGRlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgd2hldGhlciBhbiBlbnRpdHlTdGF0ZSBpbnN0YW5jZSBpcyBFbnRpdHlTdGF0ZS5Nb2RpZmllZC5cclxuICA+ICAgICB2YXIgZXMgPSBhbkVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgPiAgICAgcmV0dXJuIGVzLmlzTW9kaWZpZWQoKTtcclxuXHJcbiAgaXMgdGhlIHNhbWUgYXNcclxuICA+ICAgICByZXR1cm4gZXMgPT09IEVudGl0eVN0YXRlLk1vZGlmaWVkO1xyXG4gICoqL1xyXG4gIGlzTW9kaWZpZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcyA9PT0gRW50aXR5U3RhdGUuTW9kaWZpZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIHdoZXRoZXIgYW4gZW50aXR5U3RhdGUgaW5zdGFuY2UgaXMgRW50aXR5U3RhdGUuRGVsZXRlZC5cclxuICA+ICAgICB2YXIgZXMgPSBhbkVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgPiAgICAgcmV0dXJuIGVzLmlzRGVsZXRlZCgpO1xyXG5cclxuICBpcyB0aGUgc2FtZSBhc1xyXG4gIFxyXG4gID4gICAgIHJldHVybiBlcyA9PT0gRW50aXR5U3RhdGUuRGVsZXRlZDtcclxuICAqKi9cclxuICBpc0RlbGV0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcyA9PT0gRW50aXR5U3RhdGUuRGVsZXRlZDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgd2hldGhlciBhbiBlbnRpdHlTdGF0ZSBpbnN0YW5jZSBpcyBFbnRpdHlTdGF0ZS5EZXRhY2hlZC5cclxuICA+ICAgICB2YXIgZXMgPSBhbkVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgPiAgICAgcmV0dXJuIGVzLmlzRGV0YWNoZWQoKTtcclxuXHJcbiAgaXMgdGhlIHNhbWUgYXNcclxuICA+ICAgICByZXR1cm4gZXMgPT09IEVudGl0eVN0YXRlLkRldGFjaGVkO1xyXG4gICoqL1xyXG4gIGlzRGV0YWNoZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcyA9PT0gRW50aXR5U3RhdGUuRGV0YWNoZWQ7XHJcbiAgfVxyXG5cclxuICAvKiogUmV0dXJuIHRydWUgaWYgRW50aXR5U3RhdGUgaXMgRGVsZXRlZCBvciBEZXRhY2hlZCAqL1xyXG4gIGlzRGVsZXRlZE9yRGV0YWNoZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcyA9PT0gRW50aXR5U3RhdGUuRGV0YWNoZWQgfHwgdGhpcyA9PT0gRW50aXR5U3RhdGUuRGV0YWNoZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIHdoZXRoZXIgYW4gZW50aXR5U3RhdGUgaW5zdGFuY2UgaXMgRW50aXR5U3RhdGUuVW5jaGFuZ2VkIG9yIEVudGl0eVN0YXRlLk1vZGlmaWVkLlxyXG4gID4gICAgIHZhciBlcyA9IGFuRW50aXR5LmVudGl0eUFzcGVjdC5lbnRpdHlTdGF0ZTtcclxuICA+ICAgICByZXR1cm4gZXMuaXNVbmNoYW5nZWRPck1vZGlmaWVkKCk7XHJcblxyXG4gIGlzIHRoZSBzYW1lIGFzXHJcbiAgPiAgICAgcmV0dXJuIGVzID09PSBFbnRpdHlTdGF0ZS5VbmNoYW5nZWQgfHwgZXMgPT09IEVudGl0eVN0YXRlLk1vZGlmaWVkXHJcbiAgKiovXHJcbiAgaXNVbmNoYW5nZWRPck1vZGlmaWVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMgPT09IEVudGl0eVN0YXRlLlVuY2hhbmdlZCB8fCB0aGlzID09PSBFbnRpdHlTdGF0ZS5Nb2RpZmllZDtcclxuICB9XHJcblxyXG4gIC8qKiBSZXR1cm4gdHJ1ZSBpZiBFbnRpdHlTdGF0aXMgaXMgQWRkZWQgb3IgTW9kaWZpZWQgKi9cclxuICBpc0FkZGVkT3JNb2RpZmllZCgpIHtcclxuICAgIHJldHVybiB0aGlzID09PSBFbnRpdHlTdGF0ZS5BZGRlZCB8fCB0aGlzID09PSBFbnRpdHlTdGF0ZS5Nb2RpZmllZDtcclxuICB9XHJcblxyXG4gIC8qKiBSZXR1cm5zIHdoZXRoZXIgYW4gZW50aXR5U3RhdGUgaW5zdGFuY2UgaXMgRW50aXR5U3RhdGUuQWRkZWQgb3IgRW50aXR5U3RhdGUuTW9kaWZpZWQgb3IgRW50aXR5U3RhdGUuRGVsZXRlZC5cclxuICA+ICAgICB2YXIgZXMgPSBhbkVudGl0eS5lbnRpdHlBc3BlY3QuZW50aXR5U3RhdGU7XHJcbiAgPiAgICAgcmV0dXJuIGVzLmlzQWRkZWRNb2RpZmllZE9yRGVsZXRlZCgpO1xyXG5cclxuICBpcyB0aGUgc2FtZSBhc1xyXG4gID4gICAgIHJldHVybiBlcyA9PT0gRW50aXR5U3RhdGUuQWRkZWQgfHwgZXMgPT09IEVudGl0eVN0YXRlLk1vZGlmaWVkIHx8IGVzID09PSBFbnRpdHlTdGF0ZS5EZWxldGVkXHJcbiAgKiovXHJcbiAgaXNBZGRlZE1vZGlmaWVkT3JEZWxldGVkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMgPT09IEVudGl0eVN0YXRlLkFkZGVkIHx8XHJcbiAgICAgIHRoaXMgPT09IEVudGl0eVN0YXRlLk1vZGlmaWVkIHx8XHJcbiAgICAgIHRoaXMgPT09IEVudGl0eVN0YXRlLkRlbGV0ZWQ7XHJcbiAgfVxyXG5cclxufVxyXG5FbnRpdHlTdGF0ZS5wcm90b3R5cGUuXyR0eXBlTmFtZSA9IFwiRW50aXR5U3RhdGVcIjtcclxuRXJyb3JbJ3gnXSA9IEVudGl0eVN0YXRlLnJlc29sdmVTeW1ib2xzKCk7XHJcbiJdfQ==
|
package/esm2022/src/enum.mjs
DELETED
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2012-2023 IdeaBlade, Inc. All Rights Reserved.
|
|
3
|
-
* Use, reproduction, distribution, and modification of this code is subject to the terms and
|
|
4
|
-
* conditions of the IdeaBlade Breeze license, available at http://www.breezejs.com/license
|
|
5
|
-
*
|
|
6
|
-
* Author: Jay Traband
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
Base class for all Breeze enumerations, such as EntityState, DataType, FetchStrategy, MergeStrategy etc.
|
|
10
|
-
A Breeze Enum is a namespaced set of constant values. Each Enum consists of a group of related constants, called 'symbols'.
|
|
11
|
-
Unlike enums in some other environments, each 'symbol' can have both methods and properties.
|
|
12
|
-
> class DayOfWeek extends BreezeEnum {
|
|
13
|
-
> dayIndex: number;
|
|
14
|
-
> isWeekend?: boolean;
|
|
15
|
-
> nextDay() {
|
|
16
|
-
> let nextIndex = (this.dayIndex + 1) % 7;
|
|
17
|
-
> return DayOfWeek.getSymbols()[nextIndex];
|
|
18
|
-
> }
|
|
19
|
-
>
|
|
20
|
-
> static Monday = new DayOfWeek( { dayIndex: 0});
|
|
21
|
-
> static Tuesday = new DayOfWeek( { dayIndex: 1 });
|
|
22
|
-
> static Wednesday = new DayOfWeek( { dayIndex: 2 });
|
|
23
|
-
> static Thursday = new DayOfWeek( { dayIndex: 3 });
|
|
24
|
-
> static Friday = new DayOfWeek( { dayIndex: 4 });
|
|
25
|
-
> static Saturday = new DayOfWeek( { dayIndex: 5, isWeekend: true });
|
|
26
|
-
> static Sunday = new DayOfWeek( { dayIndex: 6, isWeekend: true });
|
|
27
|
-
> }
|
|
28
|
-
>
|
|
29
|
-
> describe("DayOfWeek", () => {
|
|
30
|
-
> test("should support full enum capabilities", function() {
|
|
31
|
-
> // // custom methods
|
|
32
|
-
> let dowSymbols = DayOfWeek.getSymbols();
|
|
33
|
-
> expect(dowSymbols.length).toBe(7);
|
|
34
|
-
> expect(DayOfWeek.Monday.nextDay()).toBe(DayOfWeek.Tuesday);
|
|
35
|
-
> expect(DayOfWeek.Sunday.nextDay()).toBe(DayOfWeek.Monday);
|
|
36
|
-
> // // custom properties
|
|
37
|
-
> expect(DayOfWeek.Tuesday.isWeekend).toBe(undefined);
|
|
38
|
-
> expect(DayOfWeek.Saturday.isWeekend).toBe(true);
|
|
39
|
-
> // // Standard enum capabilities
|
|
40
|
-
> expect(DayOfWeek.Thursday instanceof DayOfWeek).toBe(true);
|
|
41
|
-
> expect(BreezeEnum.isSymbol(DayOfWeek.Wednesday)).toBe(true);
|
|
42
|
-
> expect(DayOfWeek.contains(DayOfWeek.Thursday)).toBe(true);
|
|
43
|
-
> expect(DayOfWeek.Friday.toString()).toBe("Friday");
|
|
44
|
-
> });
|
|
45
|
-
> });
|
|
46
|
-
Note that we have Error['x'] = ... in some places in the code to prevent Terser from optimizing out some important calls.
|
|
47
|
-
@dynamic
|
|
48
|
-
*/
|
|
49
|
-
export class BreezeEnum {
|
|
50
|
-
/** @hidden @internal */
|
|
51
|
-
static _resolvedNamesAndSymbols;
|
|
52
|
-
/** */
|
|
53
|
-
constructor(propertiesObj) {
|
|
54
|
-
if (propertiesObj) {
|
|
55
|
-
Object.keys(propertiesObj).forEach((key) => this[key] = propertiesObj[key]);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
Returns all of the symbols contained within this Enum.
|
|
60
|
-
> let symbols = DayOfWeek.getSymbols();
|
|
61
|
-
@return All of the symbols contained within this Enum.
|
|
62
|
-
**/
|
|
63
|
-
static getSymbols() {
|
|
64
|
-
return this.resolveSymbols().map(ks => ks.symbol);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
Returns the names of all of the symbols contained within this Enum.
|
|
68
|
-
> let symbols = DayOfWeek.getNames();
|
|
69
|
-
@return All of the names of the symbols contained within this Enum.
|
|
70
|
-
**/
|
|
71
|
-
static getNames() {
|
|
72
|
-
return this.resolveSymbols().map(ks => ks.name);
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
Returns an Enum symbol given its name.
|
|
76
|
-
> let dayOfWeek = DayOfWeek.from("Thursday");
|
|
77
|
-
> // nowdayOfWeek === DayOfWeek.Thursday
|
|
78
|
-
@param name - Name for which an enum symbol should be returned.
|
|
79
|
-
@return The symbol that matches the name or 'undefined' if not found.
|
|
80
|
-
**/
|
|
81
|
-
static fromName(name) {
|
|
82
|
-
return this[name];
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
Seals this enum so that no more symbols may be added to it. This should only be called after all symbols
|
|
86
|
-
have already been added to the Enum. This method also sets the 'name' property on each of the symbols.
|
|
87
|
-
> DayOfWeek.resolveSymbols();
|
|
88
|
-
**/
|
|
89
|
-
static resolveSymbols() {
|
|
90
|
-
if (this._resolvedNamesAndSymbols)
|
|
91
|
-
return this._resolvedNamesAndSymbols;
|
|
92
|
-
let result = [];
|
|
93
|
-
for (let key in this) {
|
|
94
|
-
if (this.hasOwnProperty(key)) {
|
|
95
|
-
let symb = this[key];
|
|
96
|
-
if (symb instanceof BreezeEnum) {
|
|
97
|
-
result.push({ name: key, symbol: symb });
|
|
98
|
-
this[key] = symb;
|
|
99
|
-
symb.name = key;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
this._resolvedNamesAndSymbols = result;
|
|
104
|
-
return result;
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
Returns whether an Enum contains a specified symbol.
|
|
108
|
-
> let symbol = DayOfWeek.Friday;
|
|
109
|
-
> if (DayOfWeek.contains(symbol)) {
|
|
110
|
-
> // do something
|
|
111
|
-
> }
|
|
112
|
-
@param sym - Object or symbol to test.
|
|
113
|
-
@return Whether this Enum contains the specified symbol.
|
|
114
|
-
**/
|
|
115
|
-
static contains(sym) {
|
|
116
|
-
if (!(sym instanceof BreezeEnum)) {
|
|
117
|
-
return false;
|
|
118
|
-
}
|
|
119
|
-
return this[sym.name] != null;
|
|
120
|
-
}
|
|
121
|
-
// /**
|
|
122
|
-
// Checks if an object is an Enum 'symbol'. Use the 'contains' method instead of this one
|
|
123
|
-
// if you want to test for a specific Enum.
|
|
124
|
-
// > if (Enum.isSymbol(DayOfWeek.Wednesday)) {
|
|
125
|
-
// > // do something ...
|
|
126
|
-
// > };
|
|
127
|
-
// **/
|
|
128
|
-
// static isSymbol(obj: any) {
|
|
129
|
-
// return obj instanceof BreezeEnum;
|
|
130
|
-
// };
|
|
131
|
-
/** Returns the string name of this Enum */
|
|
132
|
-
toString() {
|
|
133
|
-
return this.name;
|
|
134
|
-
}
|
|
135
|
-
/** Return enum name and symbol name */
|
|
136
|
-
toJSON() {
|
|
137
|
-
return {
|
|
138
|
-
_$typeName: this['_$typeName'] || this.constructor.name,
|
|
139
|
-
name: this.name
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBd0NFO0FBQ0YsTUFBTSxPQUFPLFVBQVU7SUFNckIsd0JBQXdCO0lBQ3hCLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBeUM7SUFFeEUsT0FBTztJQUNQLFlBQVksYUFBc0I7UUFDaEMsSUFBSSxhQUFhLEVBQUU7WUFDakIsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUM3RTtJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsUUFBUTtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLGNBQWM7UUFDbkIsSUFBSSxJQUFJLENBQUMsd0JBQXdCO1lBQUUsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUM7UUFDeEUsSUFBSSxNQUFNLEdBQTBDLEVBQUUsQ0FBQztRQUV2RCxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksRUFBRTtZQUNwQixJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzVCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckIsSUFBSSxJQUFJLFlBQVksVUFBVSxFQUFFO29CQUM5QixNQUFNLENBQUMsSUFBSSxDQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztvQkFDMUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7aUJBQ2pCO2FBQ0Y7U0FDRjtRQUNELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxNQUFNLENBQUM7UUFDdkMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFlO1FBQzdCLElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSxVQUFVLENBQUMsRUFBRTtZQUNoQyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBR0QsTUFBTTtJQUNOLDBGQUEwRjtJQUMxRiw0Q0FBNEM7SUFDNUMsa0RBQWtEO0lBQ2xELDhCQUE4QjtJQUM5QixXQUFXO0lBQ1gsTUFBTTtJQUNOLDhCQUE4QjtJQUM5QixzQ0FBc0M7SUFDdEMsS0FBSztJQUVMLDJDQUEyQztJQUMzQyxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ25CLENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsTUFBTTtRQUNKLE9BQU87WUFDTCxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFLLElBQUksQ0FBQyxXQUFtQixDQUFDLElBQUk7WUFDaEUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUM7SUFDSixDQUFDO0NBRUYiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgMjAxMi0yMDIzIElkZWFCbGFkZSwgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gIFxyXG4gKiBVc2UsIHJlcHJvZHVjdGlvbiwgZGlzdHJpYnV0aW9uLCBhbmQgbW9kaWZpY2F0aW9uIG9mIHRoaXMgY29kZSBpcyBzdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgXHJcbiAqIGNvbmRpdGlvbnMgb2YgdGhlIElkZWFCbGFkZSBCcmVlemUgbGljZW5zZSwgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuYnJlZXplanMuY29tL2xpY2Vuc2VcclxuICpcclxuICogQXV0aG9yOiBKYXkgVHJhYmFuZFxyXG4gKi9cclxuXHJcbi8qKlxyXG5CYXNlIGNsYXNzIGZvciBhbGwgQnJlZXplIGVudW1lcmF0aW9ucywgc3VjaCBhcyBFbnRpdHlTdGF0ZSwgRGF0YVR5cGUsIEZldGNoU3RyYXRlZ3ksIE1lcmdlU3RyYXRlZ3kgZXRjLlxyXG5BIEJyZWV6ZSBFbnVtIGlzIGEgbmFtZXNwYWNlZCBzZXQgb2YgY29uc3RhbnQgdmFsdWVzLiAgRWFjaCBFbnVtIGNvbnNpc3RzIG9mIGEgZ3JvdXAgb2YgcmVsYXRlZCBjb25zdGFudHMsIGNhbGxlZCAnc3ltYm9scycuXHJcblVubGlrZSBlbnVtcyBpbiBzb21lIG90aGVyIGVudmlyb25tZW50cywgZWFjaCAnc3ltYm9sJyBjYW4gaGF2ZSBib3RoIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMuXHJcbj4gICAgIGNsYXNzIERheU9mV2VlayBleHRlbmRzIEJyZWV6ZUVudW0ge1xyXG4+ICAgICAgIGRheUluZGV4OiBudW1iZXI7XHJcbj4gICAgICAgaXNXZWVrZW5kPzogYm9vbGVhbjtcclxuPiAgICAgICBuZXh0RGF5KCkge1xyXG4+ICAgICAgICAgbGV0IG5leHRJbmRleCA9ICh0aGlzLmRheUluZGV4ICsgMSkgJSA3O1xyXG4+ICAgICAgICAgcmV0dXJuIERheU9mV2Vlay5nZXRTeW1ib2xzKClbbmV4dEluZGV4XTtcclxuPiAgICAgICB9XHJcbj5cclxuPiAgICAgICBzdGF0aWMgTW9uZGF5ID0gbmV3IERheU9mV2VlayggeyBkYXlJbmRleDogMH0pO1xyXG4+ICAgICAgIHN0YXRpYyBUdWVzZGF5ID0gbmV3IERheU9mV2VlayggeyBkYXlJbmRleDogMSB9KTtcclxuPiAgICAgICBzdGF0aWMgV2VkbmVzZGF5ID0gbmV3IERheU9mV2VlayggeyBkYXlJbmRleDogMiB9KTtcclxuPiAgICAgICBzdGF0aWMgVGh1cnNkYXkgPSBuZXcgRGF5T2ZXZWVrKCB7IGRheUluZGV4OiAzIH0pO1xyXG4+ICAgICAgIHN0YXRpYyBGcmlkYXkgPSBuZXcgRGF5T2ZXZWVrKCB7IGRheUluZGV4OiA0IH0pO1xyXG4+ICAgICAgIHN0YXRpYyBTYXR1cmRheSA9IG5ldyBEYXlPZldlZWsoIHsgZGF5SW5kZXg6IDUsIGlzV2Vla2VuZDogdHJ1ZSB9KTtcclxuPiAgICAgICBzdGF0aWMgU3VuZGF5ID0gbmV3IERheU9mV2VlayggeyBkYXlJbmRleDogNiwgaXNXZWVrZW5kOiB0cnVlIH0pO1xyXG4+ICAgICB9XHJcbj5cclxuPiAgICAgZGVzY3JpYmUoXCJEYXlPZldlZWtcIiwgKCkgPT4ge1xyXG4+ICAgICAgIHRlc3QoXCJzaG91bGQgc3VwcG9ydCBmdWxsIGVudW0gY2FwYWJpbGl0aWVzXCIsIGZ1bmN0aW9uKCkge1xyXG4+ICAgICAgICAgLy8gLy8gY3VzdG9tIG1ldGhvZHNcclxuPiAgICAgICAgIGxldCBkb3dTeW1ib2xzID0gRGF5T2ZXZWVrLmdldFN5bWJvbHMoKTtcclxuPiAgICAgICAgIGV4cGVjdChkb3dTeW1ib2xzLmxlbmd0aCkudG9CZSg3KTtcclxuPiAgICAgICAgIGV4cGVjdChEYXlPZldlZWsuTW9uZGF5Lm5leHREYXkoKSkudG9CZShEYXlPZldlZWsuVHVlc2RheSk7XHJcbj4gICAgICAgICBleHBlY3QoRGF5T2ZXZWVrLlN1bmRheS5uZXh0RGF5KCkpLnRvQmUoRGF5T2ZXZWVrLk1vbmRheSk7XHJcbj4gICAgICAgLy8gLy8gY3VzdG9tIHByb3BlcnRpZXNcclxuPiAgICAgICAgIGV4cGVjdChEYXlPZldlZWsuVHVlc2RheS5pc1dlZWtlbmQpLnRvQmUodW5kZWZpbmVkKTtcclxuPiAgICAgICAgIGV4cGVjdChEYXlPZldlZWsuU2F0dXJkYXkuaXNXZWVrZW5kKS50b0JlKHRydWUpO1xyXG4+ICAgICAgIC8vIC8vIFN0YW5kYXJkIGVudW0gY2FwYWJpbGl0aWVzXHJcbj4gICAgICAgICBleHBlY3QoRGF5T2ZXZWVrLlRodXJzZGF5IGluc3RhbmNlb2YgRGF5T2ZXZWVrKS50b0JlKHRydWUpO1xyXG4+ICAgICAgICAgZXhwZWN0KEJyZWV6ZUVudW0uaXNTeW1ib2woRGF5T2ZXZWVrLldlZG5lc2RheSkpLnRvQmUodHJ1ZSk7XHJcbj4gICAgICAgICBleHBlY3QoRGF5T2ZXZWVrLmNvbnRhaW5zKERheU9mV2Vlay5UaHVyc2RheSkpLnRvQmUodHJ1ZSk7XHJcbj4gICAgICAgICBleHBlY3QoRGF5T2ZXZWVrLkZyaWRheS50b1N0cmluZygpKS50b0JlKFwiRnJpZGF5XCIpO1xyXG4+ICAgICAgIH0pO1xyXG4+ICAgfSk7XHJcbk5vdGUgdGhhdCB3ZSBoYXZlIEVycm9yWyd4J10gPSAuLi4gaW4gc29tZSBwbGFjZXMgaW4gdGhlIGNvZGUgdG8gcHJldmVudCBUZXJzZXIgZnJvbSBvcHRpbWl6aW5nIG91dCBzb21lIGltcG9ydGFudCBjYWxscy5cclxuQGR5bmFtaWNcclxuKi9cclxuZXhwb3J0IGNsYXNzIEJyZWV6ZUVudW0ge1xyXG4gIC8vIC8vIFRPRE86IHRoaW5rIGFib3V0IENvbXBvc2l0ZUVudW0gKGZsYWdzIGltcGwpLlxyXG4gIC8qKiBUaGUgbmFtZSBvZiB0aGlzIHN5bWJvbCAqL1xyXG4gIGRlY2xhcmUgbmFtZTogc3RyaW5nO1xyXG4gIC8qKiBUeXBlIG9mIHRoZSBlbnVtOyBzZXQgaW4gcHJvdG90eXBlIG9mIGVhY2ggZW51bSAqL1xyXG4gIGRlY2xhcmUgXyR0eXBlTmFtZTogc3RyaW5nO1xyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIHN0YXRpYyBfcmVzb2x2ZWROYW1lc0FuZFN5bWJvbHM6IHsgbmFtZTogc3RyaW5nLCBzeW1ib2w6IEJyZWV6ZUVudW0gfVtdO1xyXG5cclxuICAvKiogICovXHJcbiAgY29uc3RydWN0b3IocHJvcGVydGllc09iaj86IE9iamVjdCkge1xyXG4gICAgaWYgKHByb3BlcnRpZXNPYmopIHtcclxuICAgICAgT2JqZWN0LmtleXMocHJvcGVydGllc09iaikuZm9yRWFjaCgoa2V5KSA9PiB0aGlzW2tleV0gPSBwcm9wZXJ0aWVzT2JqW2tleV0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgUmV0dXJucyBhbGwgb2YgdGhlIHN5bWJvbHMgY29udGFpbmVkIHdpdGhpbiB0aGlzIEVudW0uXHJcbiAgPiAgICAgbGV0IHN5bWJvbHMgPSBEYXlPZldlZWsuZ2V0U3ltYm9scygpO1xyXG4gIEByZXR1cm4gQWxsIG9mIHRoZSBzeW1ib2xzIGNvbnRhaW5lZCB3aXRoaW4gdGhpcyBFbnVtLlxyXG4gICoqL1xyXG4gIHN0YXRpYyBnZXRTeW1ib2xzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZVN5bWJvbHMoKS5tYXAoa3MgPT4ga3Muc3ltYm9sKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgdGhlIG5hbWVzIG9mIGFsbCBvZiB0aGUgc3ltYm9scyBjb250YWluZWQgd2l0aGluIHRoaXMgRW51bS5cclxuICA+ICAgICBsZXQgc3ltYm9scyA9IERheU9mV2Vlay5nZXROYW1lcygpO1xyXG4gIEByZXR1cm4gIEFsbCBvZiB0aGUgbmFtZXMgb2YgdGhlIHN5bWJvbHMgY29udGFpbmVkIHdpdGhpbiB0aGlzIEVudW0uXHJcbiAgKiovXHJcbiAgc3RhdGljIGdldE5hbWVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZVN5bWJvbHMoKS5tYXAoa3MgPT4ga3MubmFtZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIGFuIEVudW0gc3ltYm9sIGdpdmVuIGl0cyBuYW1lLlxyXG4gID4gICAgIGxldCBkYXlPZldlZWsgPSBEYXlPZldlZWsuZnJvbShcIlRodXJzZGF5XCIpO1xyXG4gID4gICAgIC8vIG5vd2RheU9mV2VlayA9PT0gRGF5T2ZXZWVrLlRodXJzZGF5XHJcbiAgQHBhcmFtIG5hbWUgLSBOYW1lIGZvciB3aGljaCBhbiBlbnVtIHN5bWJvbCBzaG91bGQgYmUgcmV0dXJuZWQuXHJcbiAgQHJldHVybiBUaGUgc3ltYm9sIHRoYXQgbWF0Y2hlcyB0aGUgbmFtZSBvciAndW5kZWZpbmVkJyBpZiBub3QgZm91bmQuXHJcbiAgKiovXHJcbiAgc3RhdGljIGZyb21OYW1lKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXNbbmFtZV07XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBTZWFscyB0aGlzIGVudW0gc28gdGhhdCBubyBtb3JlIHN5bWJvbHMgbWF5IGJlIGFkZGVkIHRvIGl0LiBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBhbGwgc3ltYm9sc1xyXG4gIGhhdmUgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHRoZSBFbnVtLiBUaGlzIG1ldGhvZCBhbHNvIHNldHMgdGhlICduYW1lJyBwcm9wZXJ0eSBvbiBlYWNoIG9mIHRoZSBzeW1ib2xzLlxyXG4gID4gICAgIERheU9mV2Vlay5yZXNvbHZlU3ltYm9scygpO1xyXG4gICoqL1xyXG4gIHN0YXRpYyByZXNvbHZlU3ltYm9scygpIHtcclxuICAgIGlmICh0aGlzLl9yZXNvbHZlZE5hbWVzQW5kU3ltYm9scykgcmV0dXJuIHRoaXMuX3Jlc29sdmVkTmFtZXNBbmRTeW1ib2xzO1xyXG4gICAgbGV0IHJlc3VsdDoge25hbWU6IHN0cmluZywgc3ltYm9sOiBCcmVlemVFbnVtIH1bXSA9IFtdO1xyXG5cclxuICAgIGZvciAobGV0IGtleSBpbiB0aGlzKSB7XHJcbiAgICAgIGlmICh0aGlzLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBsZXQgc3ltYiA9IHRoaXNba2V5XTtcclxuICAgICAgICBpZiAoc3ltYiBpbnN0YW5jZW9mIEJyZWV6ZUVudW0pIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKCB7IG5hbWU6IGtleSwgc3ltYm9sOiBzeW1iIH0pO1xyXG4gICAgICAgICAgdGhpc1trZXldID0gc3ltYjtcclxuICAgICAgICAgIHN5bWIubmFtZSA9IGtleTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuX3Jlc29sdmVkTmFtZXNBbmRTeW1ib2xzID0gcmVzdWx0O1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFJldHVybnMgd2hldGhlciBhbiBFbnVtIGNvbnRhaW5zIGEgc3BlY2lmaWVkIHN5bWJvbC5cclxuICA+ICAgICBsZXQgc3ltYm9sID0gRGF5T2ZXZWVrLkZyaWRheTtcclxuICA+ICAgICBpZiAoRGF5T2ZXZWVrLmNvbnRhaW5zKHN5bWJvbCkpIHtcclxuICA+ICAgICAgICAgLy8gZG8gc29tZXRoaW5nXHJcbiAgPiAgICAgfVxyXG4gIEBwYXJhbSBzeW0gLSBPYmplY3Qgb3Igc3ltYm9sIHRvIHRlc3QuXHJcbiAgQHJldHVybiBXaGV0aGVyIHRoaXMgRW51bSBjb250YWlucyB0aGUgc3BlY2lmaWVkIHN5bWJvbC5cclxuICAqKi9cclxuICBzdGF0aWMgY29udGFpbnMoc3ltOiBCcmVlemVFbnVtKSB7XHJcbiAgICBpZiAoIShzeW0gaW5zdGFuY2VvZiBCcmVlemVFbnVtKSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXNbc3ltLm5hbWVdICE9IG51bGw7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gLyoqXHJcbiAgLy8gQ2hlY2tzIGlmIGFuIG9iamVjdCBpcyBhbiBFbnVtICdzeW1ib2wnLiBVc2UgdGhlICdjb250YWlucycgbWV0aG9kIGluc3RlYWQgb2YgdGhpcyBvbmUgXHJcbiAgLy8gaWYgeW91IHdhbnQgdG8gdGVzdCBmb3IgYSBzcGVjaWZpYyBFbnVtLiBcclxuICAvLyA+ICAgICBpZiAoRW51bS5pc1N5bWJvbChEYXlPZldlZWsuV2VkbmVzZGF5KSkge1xyXG4gIC8vID4gICAgICAgLy8gZG8gc29tZXRoaW5nIC4uLlxyXG4gIC8vID4gICAgIH07XHJcbiAgLy8gKiovXHJcbiAgLy8gc3RhdGljIGlzU3ltYm9sKG9iajogYW55KSB7XHJcbiAgLy8gICByZXR1cm4gb2JqIGluc3RhbmNlb2YgQnJlZXplRW51bTtcclxuICAvLyB9O1xyXG5cclxuICAvKiogUmV0dXJucyB0aGUgc3RyaW5nIG5hbWUgb2YgdGhpcyBFbnVtICovXHJcbiAgdG9TdHJpbmcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5uYW1lO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybiBlbnVtIG5hbWUgYW5kIHN5bWJvbCBuYW1lICovXHJcbiAgdG9KU09OKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgXyR0eXBlTmFtZTogdGhpc1snXyR0eXBlTmFtZSddIHx8ICh0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSkubmFtZSxcclxuICAgICAgbmFtZTogdGhpcy5uYW1lXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbn1cclxuXHJcblxyXG4iXX0=
|
package/esm2022/src/event.mjs
DELETED
|
@@ -1,264 +0,0 @@
|
|
|
1
|
-
import { core } from './core';
|
|
2
|
-
import { assertParam } from './assert-param';
|
|
3
|
-
function publishCore(that, data, errorCallback) {
|
|
4
|
-
let subscribers = that._subscribers;
|
|
5
|
-
if (!subscribers)
|
|
6
|
-
return true;
|
|
7
|
-
// subscribers from outer scope.
|
|
8
|
-
subscribers.forEach(function (s) {
|
|
9
|
-
try {
|
|
10
|
-
s.callback(data);
|
|
11
|
-
}
|
|
12
|
-
catch (e) {
|
|
13
|
-
e.context = "unable to publish on topic: " + that.name;
|
|
14
|
-
if (errorCallback) {
|
|
15
|
-
errorCallback(e);
|
|
16
|
-
}
|
|
17
|
-
else if (that._defaultErrorCallback) {
|
|
18
|
-
that._defaultErrorCallback(e);
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
fallbackErrorHandler(e);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
function fallbackErrorHandler(e) {
|
|
27
|
-
// TODO: maybe log this
|
|
28
|
-
// for now do nothing;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
Class to support basic event publication and subscription semantics.
|
|
32
|
-
@dynamic
|
|
33
|
-
**/
|
|
34
|
-
export class BreezeEvent {
|
|
35
|
-
/** @hidden @internal */
|
|
36
|
-
static __eventNameMap = {};
|
|
37
|
-
/** @hidden @internal */
|
|
38
|
-
static __nextUnsubKey = 1;
|
|
39
|
-
/** The name of this Event */
|
|
40
|
-
name;
|
|
41
|
-
/** The object doing the publication. i.e. the object to which this event is attached. */
|
|
42
|
-
publisher;
|
|
43
|
-
/** @hidden @internal */
|
|
44
|
-
_subscribers;
|
|
45
|
-
/** @hidden @internal */
|
|
46
|
-
_defaultErrorCallback;
|
|
47
|
-
/**
|
|
48
|
-
Constructor for an Event
|
|
49
|
-
> salaryEvent = new BreezeEvent("salaryEvent", person);
|
|
50
|
-
@param name - The name of the event.
|
|
51
|
-
@param publisher - The object that will be doing the publication. i.e. the object to which this event is attached.
|
|
52
|
-
@param defaultErrorCallback - Function to call when an error occurs during subscription execution.
|
|
53
|
-
If omitted then subscriber notification failures will be ignored.
|
|
54
|
-
**/
|
|
55
|
-
constructor(name, publisher, defaultErrorCallback) {
|
|
56
|
-
assertParam(name, "eventName").isNonEmptyString().check();
|
|
57
|
-
assertParam(publisher, "publisher").isObject().check();
|
|
58
|
-
this.name = name;
|
|
59
|
-
// register the name
|
|
60
|
-
BreezeEvent.__eventNameMap[name] = true;
|
|
61
|
-
this.publisher = publisher;
|
|
62
|
-
if (defaultErrorCallback) {
|
|
63
|
-
this._defaultErrorCallback = defaultErrorCallback;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
Publish data for this event.
|
|
68
|
-
> // Assume 'salaryEvent' is previously constructed Event
|
|
69
|
-
> salaryEvent.publish( { eventType: "payRaise", amount: 100 });
|
|
70
|
-
|
|
71
|
-
This event can also be published asychronously
|
|
72
|
-
> salaryEvent.publish( { eventType: "payRaise", amount: 100 }, true);
|
|
73
|
-
|
|
74
|
-
And we can add a handler in case the subscriber 'mishandles' the event.
|
|
75
|
-
> salaryEvent.publish( { eventType: "payRaise", amount: 100 }, true, function(error) {
|
|
76
|
-
> // do something with the 'error' object
|
|
77
|
-
> });
|
|
78
|
-
@param data - Data to publish
|
|
79
|
-
@param publishAsync - (default=false) Whether to publish asynchonously or not.
|
|
80
|
-
@param errorCallback - Function to be called for any errors that occur during publication. If omitted,
|
|
81
|
-
errors will be eaten.
|
|
82
|
-
@return false if event is disabled; true otherwise.
|
|
83
|
-
**/
|
|
84
|
-
publish(data, publishAsync = false, errorCallback) {
|
|
85
|
-
if (!BreezeEvent._isEnabled(this.name, this.publisher))
|
|
86
|
-
return false;
|
|
87
|
-
if (publishAsync === true) {
|
|
88
|
-
setTimeout(publishCore, 0, this, data, errorCallback);
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
publishCore(this, data, errorCallback);
|
|
92
|
-
}
|
|
93
|
-
return true;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
Publish data for this event asynchronously.
|
|
97
|
-
> // Assume 'salaryEvent' is previously constructed Event
|
|
98
|
-
> salaryEvent.publishAsync( { eventType: "payRaise", amount: 100 });
|
|
99
|
-
|
|
100
|
-
And we can add a handler in case the subscriber 'mishandles' the event.
|
|
101
|
-
> salaryEvent.publishAsync( { eventType: "payRaise", amount: 100 }, function(error) {
|
|
102
|
-
> // do something with the 'error' object
|
|
103
|
-
> });
|
|
104
|
-
@param data - Data to publish
|
|
105
|
-
@param errorCallback - Function to be called for any errors that occur during publication. If omitted,
|
|
106
|
-
errors will be eaten.
|
|
107
|
-
**/
|
|
108
|
-
publishAsync(data, errorCallback) {
|
|
109
|
-
this.publish(data, true, errorCallback);
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
Subscribe to this event.
|
|
113
|
-
> // Assume 'salaryEvent' is previously constructed Event
|
|
114
|
-
> salaryEvent.subscribe(function (eventArgs) {
|
|
115
|
-
> if (eventArgs.eventType === "payRaise") {
|
|
116
|
-
> // do something
|
|
117
|
-
> }
|
|
118
|
-
> });
|
|
119
|
-
|
|
120
|
-
There are several built in Breeze events, such as [[EntityAspect.propertyChanged]], [[EntityAspect.validationErrorsChanged]] as well.
|
|
121
|
-
> // Assume order is a preexisting 'order' entity
|
|
122
|
-
> order.entityAspect.propertyChanged.subscribe(function (pcEvent) {
|
|
123
|
-
> if ( pcEvent.propertyName === "OrderDate") {
|
|
124
|
-
> // do something
|
|
125
|
-
> }
|
|
126
|
-
> });
|
|
127
|
-
@param callback- Function to be called whenever 'data' is published for this event.
|
|
128
|
-
@param callback.data - {Object} Whatever 'data' was published. This should be documented on the specific event.
|
|
129
|
-
@return This is a key for 'unsubscription'. It can be passed to the 'unsubscribe' method.
|
|
130
|
-
**/
|
|
131
|
-
subscribe(callback) {
|
|
132
|
-
if (!this._subscribers) {
|
|
133
|
-
this._subscribers = [];
|
|
134
|
-
}
|
|
135
|
-
let unsubKey = BreezeEvent.__nextUnsubKey;
|
|
136
|
-
this._subscribers.push({ unsubKey: unsubKey, callback: callback });
|
|
137
|
-
++BreezeEvent.__nextUnsubKey;
|
|
138
|
-
return unsubKey;
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
Unsubscribe from this event.
|
|
142
|
-
> // Assume order is a preexisting 'order' entity
|
|
143
|
-
> let token = order.entityAspect.propertyChanged.subscribe(function (pcEvent) {
|
|
144
|
-
> // do something
|
|
145
|
-
> });
|
|
146
|
-
> // sometime later
|
|
147
|
-
> order.entityAspect.propertyChanged.unsubscribe(token);
|
|
148
|
-
@param unsubKey - The value returned from the 'subscribe' method may be used to unsubscribe here.
|
|
149
|
-
@return Whether unsubscription occured. This will return false if already unsubscribed or if the key simply
|
|
150
|
-
cannot be found.
|
|
151
|
-
**/
|
|
152
|
-
unsubscribe = function (unsubKey) {
|
|
153
|
-
if (!this._subscribers)
|
|
154
|
-
return false;
|
|
155
|
-
let subs = this._subscribers;
|
|
156
|
-
let ix = core.arrayIndexOf(subs, function (s) {
|
|
157
|
-
return s.unsubKey === unsubKey;
|
|
158
|
-
});
|
|
159
|
-
if (ix !== -1) {
|
|
160
|
-
subs.splice(ix, 1);
|
|
161
|
-
if (subs.length === 0) {
|
|
162
|
-
this._subscribers = null;
|
|
163
|
-
}
|
|
164
|
-
return true;
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
return false;
|
|
168
|
-
}
|
|
169
|
-
};
|
|
170
|
-
/** remove all subscribers */
|
|
171
|
-
clear() {
|
|
172
|
-
this._subscribers = null;
|
|
173
|
-
}
|
|
174
|
-
/** event bubbling - document later. */
|
|
175
|
-
// null or undefined 'getParentFn' means Event does not need to bubble i.e. that it is always enabled - .
|
|
176
|
-
static bubbleEvent(target, getParentFn) {
|
|
177
|
-
target._getEventParent = getParentFn || null;
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
Enables or disables the named event for an object and all of its children.
|
|
181
|
-
> BreezeEvent.enable(“propertyChanged”, myEntityManager, false)
|
|
182
|
-
|
|
183
|
-
will disable all EntityAspect.propertyChanged events within a EntityManager.
|
|
184
|
-
> BreezeEvent.enable(“propertyChanged”, myEntityManager, true)
|
|
185
|
-
|
|
186
|
-
will enable all EntityAspect.propertyChanged events within a EntityManager.
|
|
187
|
-
> BreezeEvent.enable(“propertyChanged”, myEntity.entityAspect, false)
|
|
188
|
-
|
|
189
|
-
will disable EntityAspect.propertyChanged events for a specific entity.
|
|
190
|
-
> BreezeEvent.enable(“propertyChanged”, myEntity.entityAspect, null)
|
|
191
|
-
|
|
192
|
-
will removes any enabling / disabling at the entity aspect level so now any 'Event.enable' calls at the EntityManager level,
|
|
193
|
-
made either previously or in the future, will control notification.
|
|
194
|
-
> BreezeEvent.enable(“validationErrorsChanged”, myEntityManager, function(em) {
|
|
195
|
-
> return em.customTag === “blue”;
|
|
196
|
-
> })
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
will either enable or disable myEntityManager based on the current value of a ‘customTag’ property on myEntityManager.
|
|
200
|
-
Note that this is dynamic, changing the customTag value will cause events to be enabled or disabled immediately.
|
|
201
|
-
@param eventName - The name of the event.
|
|
202
|
-
@param target - The object at which enabling or disabling will occur. All event notifications that occur to this object or
|
|
203
|
-
children of this object will be enabled or disabled.
|
|
204
|
-
@param isEnabled - A boolean, a null or a function that returns either a boolean or a null.
|
|
205
|
-
**/
|
|
206
|
-
static enable(eventName, obj, isEnabled) {
|
|
207
|
-
assertParam(eventName, "eventName").isNonEmptyString().check();
|
|
208
|
-
assertParam(obj, "obj").isObject().check();
|
|
209
|
-
assertParam(isEnabled, "isEnabled").isBoolean().isOptional().or().isFunction().check();
|
|
210
|
-
let ob = obj;
|
|
211
|
-
if (!ob._$eventMap) {
|
|
212
|
-
ob._$eventMap = {};
|
|
213
|
-
}
|
|
214
|
-
ob._$eventMap[eventName] = isEnabled;
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
Returns whether for a specific event and a specific object and its children, notification is enabled or disabled or not set.
|
|
218
|
-
> BreezeEvent.isEnabled(“propertyChanged”, myEntityManager)
|
|
219
|
-
>
|
|
220
|
-
@param eventName - The name of the event.
|
|
221
|
-
@param target - The object for which we want to know if notifications are enabled.
|
|
222
|
-
@return A null is returned if this value has not been set.
|
|
223
|
-
**/
|
|
224
|
-
static isEnabled(eventName, obj) {
|
|
225
|
-
assertParam(eventName, "eventName").isNonEmptyString().check();
|
|
226
|
-
assertParam(obj, "obj").isObject().check();
|
|
227
|
-
// null is ok - it just means that the object is at the top level.
|
|
228
|
-
if (obj._getEventParent === undefined) {
|
|
229
|
-
throw new Error("This object does not support event enabling/disabling");
|
|
230
|
-
}
|
|
231
|
-
// return ctor._isEnabled(getFullEventName(eventName), obj);
|
|
232
|
-
return BreezeEvent._isEnabled(eventName, 3);
|
|
233
|
-
}
|
|
234
|
-
/** @hidden @internal */
|
|
235
|
-
static _isEnabled = function (eventName, obj) {
|
|
236
|
-
let isEnabled = null;
|
|
237
|
-
let ob = obj;
|
|
238
|
-
let eventMap = ob._$eventMap;
|
|
239
|
-
if (eventMap) {
|
|
240
|
-
isEnabled = eventMap[eventName];
|
|
241
|
-
}
|
|
242
|
-
if (isEnabled != null) {
|
|
243
|
-
if (typeof isEnabled === 'function') {
|
|
244
|
-
return !!isEnabled(obj);
|
|
245
|
-
}
|
|
246
|
-
else {
|
|
247
|
-
return !!isEnabled;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
else {
|
|
251
|
-
let parent = ob._getEventParent && ob._getEventParent();
|
|
252
|
-
if (parent) {
|
|
253
|
-
return !!this._isEnabled(eventName, parent);
|
|
254
|
-
}
|
|
255
|
-
else {
|
|
256
|
-
// default if not explicitly disabled.
|
|
257
|
-
return true;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
};
|
|
261
|
-
}
|
|
262
|
-
// legacy support - deliberately not typed
|
|
263
|
-
core.Event = BreezeEvent;
|
|
264
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUM5QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsU0FBUyxXQUFXLENBQUksSUFBb0IsRUFBRSxJQUFPLEVBQUUsYUFBaUM7SUFDdEYsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztJQUNwQyxJQUFJLENBQUMsV0FBVztRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQzlCLGdDQUFnQztJQUNoQyxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztRQUM3QixJQUFJO1lBQ0YsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNsQjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsQ0FBQyxDQUFDLE9BQU8sR0FBRyw4QkFBOEIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3ZELElBQUksYUFBYSxFQUFFO2dCQUNqQixhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEI7aUJBQU0sSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMvQjtpQkFBTTtnQkFDTCxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN6QjtTQUNGO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsU0FBUyxvQkFBb0IsQ0FBQyxDQUFRO0lBQ3BDLHVCQUF1QjtJQUN2QixzQkFBc0I7QUFDeEIsQ0FBQztBQVNEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBQ3RCLHdCQUF3QjtJQUN4QixNQUFNLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUMzQix3QkFBd0I7SUFDeEIsTUFBTSxDQUFDLGNB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Q3pDLElBQVksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSB9IGZyb20gJy4vY29yZSc7XHJcbmltcG9ydCB7IGFzc2VydFBhcmFtIH0gZnJvbSAnLi9hc3NlcnQtcGFyYW0nO1xyXG5cclxuZnVuY3Rpb24gcHVibGlzaENvcmU8VD4odGhhdDogQnJlZXplRXZlbnQ8VD4sIGRhdGE6IFQsIGVycm9yQ2FsbGJhY2s/OiAoZTogRXJyb3IpID0+IGFueSkge1xyXG4gIGxldCBzdWJzY3JpYmVycyA9IHRoYXQuX3N1YnNjcmliZXJzO1xyXG4gIGlmICghc3Vic2NyaWJlcnMpIHJldHVybiB0cnVlO1xyXG4gIC8vIHN1YnNjcmliZXJzIGZyb20gb3V0ZXIgc2NvcGUuXHJcbiAgc3Vic2NyaWJlcnMuZm9yRWFjaChmdW5jdGlvbiAocykge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcy5jYWxsYmFjayhkYXRhKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgZS5jb250ZXh0ID0gXCJ1bmFibGUgdG8gcHVibGlzaCBvbiB0b3BpYzogXCIgKyB0aGF0Lm5hbWU7XHJcbiAgICAgIGlmIChlcnJvckNhbGxiYWNrKSB7XHJcbiAgICAgICAgZXJyb3JDYWxsYmFjayhlKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGF0Ll9kZWZhdWx0RXJyb3JDYWxsYmFjaykge1xyXG4gICAgICAgIHRoYXQuX2RlZmF1bHRFcnJvckNhbGxiYWNrKGUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGZhbGxiYWNrRXJyb3JIYW5kbGVyKGUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZhbGxiYWNrRXJyb3JIYW5kbGVyKGU6IEVycm9yKSB7XHJcbiAgLy8gVE9ETzogbWF5YmUgbG9nIHRoaXNcclxuICAvLyBmb3Igbm93IGRvIG5vdGhpbmc7XHJcbn1cclxuXHJcblxyXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuZXhwb3J0IGludGVyZmFjZSBTdWJzY3JpcHRpb24ge1xyXG4gIHVuc3ViS2V5OiBudW1iZXI7XHJcbiAgY2FsbGJhY2s6IChkYXRhOiBhbnkpID0+IGFueTtcclxufVxyXG5cclxuLyoqXHJcbkNsYXNzIHRvIHN1cHBvcnQgYmFzaWMgZXZlbnQgcHVibGljYXRpb24gYW5kIHN1YnNjcmlwdGlvbiBzZW1hbnRpY3MuXHJcbkBkeW5hbWljXHJcbioqL1xyXG5leHBvcnQgY2xhc3MgQnJlZXplRXZlbnQ8VD4ge1xyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIHN0YXRpYyBfX2V2ZW50TmFtZU1hcCA9IHt9O1xyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIHN0YXRpYyBfX25leHRVbnN1YktleSA9IDE7XHJcbiAgLyoqIFRoZSBuYW1lIG9mIHRoaXMgRXZlbnQgKi9cclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgLyoqIFRoZSBvYmplY3QgZG9pbmcgdGhlIHB1YmxpY2F0aW9uLiBpLmUuIHRoZSBvYmplY3QgdG8gd2hpY2ggdGhpcyBldmVudCBpcyBhdHRhY2hlZC4gKi9cclxuICBwdWJsaXNoZXI6IE9iamVjdDtcclxuXHJcbiAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbiAgX3N1YnNjcmliZXJzOiBTdWJzY3JpcHRpb25bXTtcclxuICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cclxuICBfZGVmYXVsdEVycm9yQ2FsbGJhY2s6IChlOiBFcnJvcikgPT4gYW55O1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgQ29uc3RydWN0b3IgZm9yIGFuIEV2ZW50XHJcbiAgPiAgICAgc2FsYXJ5RXZlbnQgPSBuZXcgQnJlZXplRXZlbnQoXCJzYWxhcnlFdmVudFwiLCBwZXJzb24pO1xyXG4gIEBwYXJhbSBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGV2ZW50LlxyXG4gIEBwYXJhbSBwdWJsaXNoZXIgLSBUaGUgb2JqZWN0IHRoYXQgd2lsbCBiZSBkb2luZyB0aGUgcHVibGljYXRpb24uIGkuZS4gdGhlIG9iamVjdCB0byB3aGljaCB0aGlzIGV2ZW50IGlzIGF0dGFjaGVkLlxyXG4gIEBwYXJhbSBkZWZhdWx0RXJyb3JDYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGNhbGwgd2hlbiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHN1YnNjcmlwdGlvbiBleGVjdXRpb24uIFxyXG4gIElmIG9taXR0ZWQgdGhlbiBzdWJzY3JpYmVyIG5vdGlmaWNhdGlvbiBmYWlsdXJlcyB3aWxsIGJlIGlnbm9yZWQuXHJcbiAgKiovXHJcbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBwdWJsaXNoZXI6IE9iamVjdCwgZGVmYXVsdEVycm9yQ2FsbGJhY2s/OiAoZTogRXJyb3IpID0+IGFueSkge1xyXG4gICAgYXNzZXJ0UGFyYW0obmFtZSwgXCJldmVudE5hbWVcIikuaXNOb25FbXB0eVN0cmluZygpLmNoZWNrKCk7XHJcbiAgICBhc3NlcnRQYXJhbShwdWJsaXNoZXIsIFwicHVibGlzaGVyXCIpLmlzT2JqZWN0KCkuY2hlY2soKTtcclxuXHJcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xyXG4gICAgLy8gcmVnaXN0ZXIgdGhlIG5hbWVcclxuICAgIEJyZWV6ZUV2ZW50Ll9fZXZlbnROYW1lTWFwW25hbWVdID0gdHJ1ZTtcclxuICAgIHRoaXMucHVibGlzaGVyID0gcHVibGlzaGVyO1xyXG4gICAgaWYgKGRlZmF1bHRFcnJvckNhbGxiYWNrKSB7XHJcbiAgICAgIHRoaXMuX2RlZmF1bHRFcnJvckNhbGxiYWNrID0gZGVmYXVsdEVycm9yQ2FsbGJhY2s7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBQdWJsaXNoIGRhdGEgZm9yIHRoaXMgZXZlbnQuXHJcbiAgPiAgICAgIC8vIEFzc3VtZSAnc2FsYXJ5RXZlbnQnIGlzIHByZXZpb3VzbHkgY29uc3RydWN0ZWQgRXZlbnRcclxuICA+ICAgICAgc2FsYXJ5RXZlbnQucHVibGlzaCggeyBldmVudFR5cGU6IFwicGF5UmFpc2VcIiwgYW1vdW50OiAxMDAgfSk7XHJcblxyXG4gIFRoaXMgZXZlbnQgY2FuIGFsc28gYmUgcHVibGlzaGVkIGFzeWNocm9ub3VzbHlcclxuICA+ICAgICAgc2FsYXJ5RXZlbnQucHVibGlzaCggeyBldmVudFR5cGU6IFwicGF5UmFpc2VcIiwgYW1vdW50OiAxMDAgfSwgdHJ1ZSk7XHJcblxyXG4gIEFuZCB3ZSBjYW4gYWRkIGEgaGFuZGxlciBpbiBjYXNlIHRoZSBzdWJzY3JpYmVyICdtaXNoYW5kbGVzJyB0aGUgZXZlbnQuXHJcbiAgPiAgICAgIHNhbGFyeUV2ZW50LnB1Ymxpc2goIHsgZXZlbnRUeXBlOiBcInBheVJhaXNlXCIsIGFtb3VudDogMTAwIH0sIHRydWUsIGZ1bmN0aW9uKGVycm9yKSB7XHJcbiAgPiAgICAgICAgICAvLyBkbyBzb21ldGhpbmcgd2l0aCB0aGUgJ2Vycm9yJyBvYmplY3RcclxuICA+ICAgICAgfSk7XHJcbiAgQHBhcmFtIGRhdGEgLSBEYXRhIHRvIHB1Ymxpc2hcclxuICBAcGFyYW0gcHVibGlzaEFzeW5jIC0gKGRlZmF1bHQ9ZmFsc2UpIFdoZXRoZXIgdG8gcHVibGlzaCBhc3luY2hvbm91c2x5IG9yIG5vdC5cclxuICBAcGFyYW0gZXJyb3JDYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBmb3IgYW55IGVycm9ycyB0aGF0IG9jY3VyIGR1cmluZyBwdWJsaWNhdGlvbi4gSWYgb21pdHRlZCxcclxuICBlcnJvcnMgd2lsbCBiZSBlYXRlbi5cclxuICBAcmV0dXJuIGZhbHNlIGlmIGV2ZW50IGlzIGRpc2FibGVkOyB0cnVlIG90aGVyd2lzZS5cclxuICAqKi9cclxuICBwdWJsaXNoKGRhdGE6IFQsIHB1Ymxpc2hBc3luYzogYm9vbGVhbiA9IGZhbHNlLCBlcnJvckNhbGxiYWNrPzogKGU6IEVycm9yKSA9PiBhbnkpIHtcclxuXHJcbiAgICBpZiAoIUJyZWV6ZUV2ZW50Ll9pc0VuYWJsZWQodGhpcy5uYW1lLCB0aGlzLnB1Ymxpc2hlcikpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAocHVibGlzaEFzeW5jID09PSB0cnVlKSB7XHJcbiAgICAgIHNldFRpbWVvdXQocHVibGlzaENvcmUsIDAsIHRoaXMsIGRhdGEsIGVycm9yQ2FsbGJhY2spO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcHVibGlzaENvcmUodGhpcywgZGF0YSwgZXJyb3JDYWxsYmFjayk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFB1Ymxpc2ggZGF0YSBmb3IgdGhpcyBldmVudCBhc3luY2hyb25vdXNseS5cclxuICA+ICAgICAgLy8gQXNzdW1lICdzYWxhcnlFdmVudCcgaXMgcHJldmlvdXNseSBjb25zdHJ1Y3RlZCBFdmVudFxyXG4gID4gICAgICBzYWxhcnlFdmVudC5wdWJsaXNoQXN5bmMoIHsgZXZlbnRUeXBlOiBcInBheVJhaXNlXCIsIGFtb3VudDogMTAwIH0pO1xyXG5cclxuICBBbmQgd2UgY2FuIGFkZCBhIGhhbmRsZXIgaW4gY2FzZSB0aGUgc3Vic2NyaWJlciAnbWlzaGFuZGxlcycgdGhlIGV2ZW50LlxyXG4gID4gICAgICBzYWxhcnlFdmVudC5wdWJsaXNoQXN5bmMoIHsgZXZlbnRUeXBlOiBcInBheVJhaXNlXCIsIGFtb3VudDogMTAwIH0sIGZ1bmN0aW9uKGVycm9yKSB7XHJcbiAgPiAgICAgICAgICAvLyBkbyBzb21ldGhpbmcgd2l0aCB0aGUgJ2Vycm9yJyBvYmplY3RcclxuICA+ICAgICAgfSk7XHJcbiAgQHBhcmFtIGRhdGEgLSBEYXRhIHRvIHB1Ymxpc2hcclxuICBAcGFyYW0gZXJyb3JDYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBmb3IgYW55IGVycm9ycyB0aGF0IG9jY3VyIGR1cmluZyBwdWJsaWNhdGlvbi4gSWYgb21pdHRlZCxcclxuICBlcnJvcnMgd2lsbCBiZSBlYXRlbi5cclxuICAqKi9cclxuICBwdWJsaXNoQXN5bmMoZGF0YTogVCwgZXJyb3JDYWxsYmFjazogKGU6IEVycm9yKSA9PiBhbnkpIHtcclxuICAgIHRoaXMucHVibGlzaChkYXRhLCB0cnVlLCBlcnJvckNhbGxiYWNrKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFN1YnNjcmliZSB0byB0aGlzIGV2ZW50LlxyXG4gID4gICAgICAvLyBBc3N1bWUgJ3NhbGFyeUV2ZW50JyBpcyBwcmV2aW91c2x5IGNvbnN0cnVjdGVkIEV2ZW50XHJcbiAgPiAgICAgIHNhbGFyeUV2ZW50LnN1YnNjcmliZShmdW5jdGlvbiAoZXZlbnRBcmdzKSB7XHJcbiAgPiAgICAgICAgICBpZiAoZXZlbnRBcmdzLmV2ZW50VHlwZSA9PT0gXCJwYXlSYWlzZVwiKSB7XHJcbiAgPiAgICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXHJcbiAgPiAgICAgICAgICB9XHJcbiAgPiAgICAgIH0pO1xyXG5cclxuICBUaGVyZSBhcmUgc2V2ZXJhbCBidWlsdCBpbiBCcmVlemUgZXZlbnRzLCBzdWNoIGFzIFtbRW50aXR5QXNwZWN0LnByb3BlcnR5Q2hhbmdlZF1dLCBbW0VudGl0eUFzcGVjdC52YWxpZGF0aW9uRXJyb3JzQ2hhbmdlZF1dIGFzIHdlbGwuXHJcbiAgPiAgICAgIC8vIEFzc3VtZSBvcmRlciBpcyBhIHByZWV4aXN0aW5nICdvcmRlcicgZW50aXR5XHJcbiAgPiAgICAgIG9yZGVyLmVudGl0eUFzcGVjdC5wcm9wZXJ0eUNoYW5nZWQuc3Vic2NyaWJlKGZ1bmN0aW9uIChwY0V2ZW50KSB7XHJcbiAgPiAgICAgICAgICBpZiAoIHBjRXZlbnQucHJvcGVydHlOYW1lID09PSBcIk9yZGVyRGF0ZVwiKSB7XHJcbiAgPiAgICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nXHJcbiAgPiAgICAgICAgICB9XHJcbiAgPiAgICAgIH0pO1xyXG4gIEBwYXJhbSBjYWxsYmFjay0gRnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW5ldmVyICdkYXRhJyBpcyBwdWJsaXNoZWQgZm9yIHRoaXMgZXZlbnQuXHJcbiAgQHBhcmFtIGNhbGxiYWNrLmRhdGEgLSB7T2JqZWN0fSBXaGF0ZXZlciAnZGF0YScgd2FzIHB1Ymxpc2hlZC4gIFRoaXMgc2hvdWxkIGJlIGRvY3VtZW50ZWQgb24gdGhlIHNwZWNpZmljIGV2ZW50LlxyXG4gIEByZXR1cm4gVGhpcyBpcyBhIGtleSBmb3IgJ3Vuc3Vic2NyaXB0aW9uJy4gIEl0IGNhbiBiZSBwYXNzZWQgdG8gdGhlICd1bnN1YnNjcmliZScgbWV0aG9kLlxyXG4gICoqL1xyXG4gIHN1YnNjcmliZShjYWxsYmFjazogKGRhdGE6IFQpID0+IGFueSkge1xyXG4gICAgaWYgKCF0aGlzLl9zdWJzY3JpYmVycykge1xyXG4gICAgICB0aGlzLl9zdWJzY3JpYmVycyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB1bnN1YktleSA9IEJyZWV6ZUV2ZW50Ll9fbmV4dFVuc3ViS2V5O1xyXG4gICAgdGhpcy5fc3Vic2NyaWJlcnMucHVzaCh7IHVuc3ViS2V5OiB1bnN1YktleSwgY2FsbGJhY2s6IGNhbGxiYWNrIH0pO1xyXG4gICAgKytCcmVlemVFdmVudC5fX25leHRVbnN1YktleTtcclxuICAgIHJldHVybiB1bnN1YktleTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gIFVuc3Vic2NyaWJlIGZyb20gdGhpcyBldmVudC5cclxuICA+ICAgICAgLy8gQXNzdW1lIG9yZGVyIGlzIGEgcHJlZXhpc3RpbmcgJ29yZGVyJyBlbnRpdHlcclxuICA+ICAgICAgbGV0IHRva2VuID0gb3JkZXIuZW50aXR5QXNwZWN0LnByb3BlcnR5Q2hhbmdlZC5zdWJzY3JpYmUoZnVuY3Rpb24gKHBjRXZlbnQpIHtcclxuICA+ICAgICAgICAgICAgICAvLyBkbyBzb21ldGhpbmdcclxuICA+ICAgICAgfSk7XHJcbiAgPiAgICAgIC8vIHNvbWV0aW1lIGxhdGVyXHJcbiAgPiAgICAgIG9yZGVyLmVudGl0eUFzcGVjdC5wcm9wZXJ0eUNoYW5nZWQudW5zdWJzY3JpYmUodG9rZW4pO1xyXG4gIEBwYXJhbSB1bnN1YktleSAtIFRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIHRoZSAnc3Vic2NyaWJlJyBtZXRob2QgbWF5IGJlIHVzZWQgdG8gdW5zdWJzY3JpYmUgaGVyZS5cclxuICBAcmV0dXJuIFdoZXRoZXIgdW5zdWJzY3JpcHRpb24gb2NjdXJlZC4gVGhpcyB3aWxsIHJldHVybiBmYWxzZSBpZiBhbHJlYWR5IHVuc3Vic2NyaWJlZCBvciBpZiB0aGUga2V5IHNpbXBseVxyXG4gIGNhbm5vdCBiZSBmb3VuZC5cclxuICAqKi9cclxuICB1bnN1YnNjcmliZSA9IGZ1bmN0aW9uICh1bnN1YktleTogbnVtYmVyKSB7XHJcbiAgICBpZiAoIXRoaXMuX3N1YnNjcmliZXJzKSByZXR1cm4gZmFsc2U7XHJcbiAgICBsZXQgc3VicyA9IHRoaXMuX3N1YnNjcmliZXJzO1xyXG4gICAgbGV0IGl4ID0gY29yZS5hcnJheUluZGV4T2Yoc3VicywgZnVuY3Rpb24gKHMpIHtcclxuICAgICAgcmV0dXJuIHMudW5zdWJLZXkgPT09IHVuc3ViS2V5O1xyXG4gICAgfSk7XHJcbiAgICBpZiAoaXggIT09IC0xKSB7XHJcbiAgICAgIHN1YnMuc3BsaWNlKGl4LCAxKTtcclxuICAgICAgaWYgKHN1YnMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhpcy5fc3Vic2NyaWJlcnMgPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIC8qKiByZW1vdmUgYWxsIHN1YnNjcmliZXJzICovXHJcbiAgY2xlYXIoKSB7XHJcbiAgICB0aGlzLl9zdWJzY3JpYmVycyA9IDxhbnk+bnVsbDtcclxuICB9XHJcblxyXG4gIC8qKiBldmVudCBidWJibGluZyAtIGRvY3VtZW50IGxhdGVyLiAqL1xyXG5cclxuICAvLyBudWxsIG9yIHVuZGVmaW5lZCAnZ2V0UGFyZW50Rm4nIG1lYW5zIEV2ZW50IGRvZXMgbm90IG5lZWQgdG8gYnViYmxlIGkuZS4gdGhhdCBpdCBpcyBhbHdheXMgZW5hYmxlZCAtIC5cclxuICBzdGF0aWMgYnViYmxlRXZlbnQodGFyZ2V0OiBhbnksIGdldFBhcmVudEZuPzogKCgpID0+IGFueSkpIHtcclxuICAgIHRhcmdldC5fZ2V0RXZlbnRQYXJlbnQgPSBnZXRQYXJlbnRGbiB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgRW5hYmxlcyBvciBkaXNhYmxlcyB0aGUgbmFtZWQgZXZlbnQgZm9yIGFuIG9iamVjdCBhbmQgYWxsIG9mIGl0cyBjaGlsZHJlbi5cclxuICA+ICAgICAgQnJlZXplRXZlbnQuZW5hYmxlKOKAnHByb3BlcnR5Q2hhbmdlZOKAnSwgbXlFbnRpdHlNYW5hZ2VyLCBmYWxzZSlcclxuXHJcbiAgd2lsbCBkaXNhYmxlIGFsbCBFbnRpdHlBc3BlY3QucHJvcGVydHlDaGFuZ2VkIGV2ZW50cyB3aXRoaW4gYSBFbnRpdHlNYW5hZ2VyLlxyXG4gID4gICAgICBCcmVlemVFdmVudC5lbmFibGUo4oCccHJvcGVydHlDaGFuZ2Vk4oCdLCBteUVudGl0eU1hbmFnZXIsIHRydWUpXHJcblxyXG4gIHdpbGwgZW5hYmxlIGFsbCBFbnRpdHlBc3BlY3QucHJvcGVydHlDaGFuZ2VkIGV2ZW50cyB3aXRoaW4gYSBFbnRpdHlNYW5hZ2VyLlxyXG4gID4gICAgICBCcmVlemVFdmVudC5lbmFibGUo4oCccHJvcGVydHlDaGFuZ2Vk4oCdLCBteUVudGl0eS5lbnRpdHlBc3BlY3QsIGZhbHNlKVxyXG5cclxuICB3aWxsIGRpc2FibGUgRW50aXR5QXNwZWN0LnByb3BlcnR5Q2hhbmdlZCBldmVudHMgZm9yIGEgc3BlY2lmaWMgZW50aXR5LlxyXG4gID4gICAgICBCcmVlemVFdmVudC5lbmFibGUo4oCccHJvcGVydHlDaGFuZ2Vk4oCdLCBteUVudGl0eS5lbnRpdHlBc3BlY3QsIG51bGwpXHJcblxyXG4gIHdpbGwgcmVtb3ZlcyBhbnkgZW5hYmxpbmcgLyBkaXNhYmxpbmcgYXQgdGhlIGVudGl0eSBhc3BlY3QgbGV2ZWwgc28gbm93IGFueSAnRXZlbnQuZW5hYmxlJyBjYWxscyBhdCB0aGUgRW50aXR5TWFuYWdlciBsZXZlbCxcclxuICBtYWRlIGVpdGhlciBwcmV2aW91c2x5IG9yIGluIHRoZSBmdXR1cmUsIHdpbGwgY29udHJvbCBub3RpZmljYXRpb24uXHJcbiAgPiAgICAgIEJyZWV6ZUV2ZW50LmVuYWJsZSjigJx2YWxpZGF0aW9uRXJyb3JzQ2hhbmdlZOKAnSwgbXlFbnRpdHlNYW5hZ2VyLCBmdW5jdGlvbihlbSkge1xyXG4gID4gICAgICAgICAgcmV0dXJuIGVtLmN1c3RvbVRhZyA9PT0g4oCcYmx1ZeKAnTtcclxuICA+ICAgICAgfSlcclxuXHJcblxyXG4gIHdpbGwgZWl0aGVyIGVuYWJsZSBvciBkaXNhYmxlIG15RW50aXR5TWFuYWdlciBiYXNlZCBvbiB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIOKAmGN1c3RvbVRhZ+KAmSBwcm9wZXJ0eSBvbiBteUVudGl0eU1hbmFnZXIuXHJcbiAgTm90ZSB0aGF0IHRoaXMgaXMgZHluYW1pYywgY2hhbmdpbmcgdGhlIGN1c3RvbVRhZyB2YWx1ZSB3aWxsIGNhdXNlIGV2ZW50cyB0byBiZSBlbmFibGVkIG9yIGRpc2FibGVkIGltbWVkaWF0ZWx5LlxyXG4gIEBwYXJhbSBldmVudE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXHJcbiAgQHBhcmFtIHRhcmdldCAtIFRoZSBvYmplY3QgYXQgd2hpY2ggZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHdpbGwgb2NjdXIuICBBbGwgZXZlbnQgbm90aWZpY2F0aW9ucyB0aGF0IG9jY3VyIHRvIHRoaXMgb2JqZWN0IG9yXHJcbiAgY2hpbGRyZW4gb2YgdGhpcyBvYmplY3Qgd2lsbCBiZSBlbmFibGVkIG9yIGRpc2FibGVkLlxyXG4gIEBwYXJhbSBpc0VuYWJsZWQgLSBBIGJvb2xlYW4sIGEgbnVsbCBvciBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBlaXRoZXIgYSBib29sZWFuIG9yIGEgbnVsbC5cclxuICAqKi9cclxuIHN0YXRpYyBlbmFibGUoZXZlbnROYW1lOiBzdHJpbmcsIG9iajogT2JqZWN0LCBpc0VuYWJsZWQ6IGJvb2xlYW4gfCAoKHg6IGFueSkgPT4gYm9vbGVhbikpIHtcclxuICAgIGFzc2VydFBhcmFtKGV2ZW50TmFtZSwgXCJldmVudE5hbWVcIikuaXNOb25FbXB0eVN0cmluZygpLmNoZWNrKCk7XHJcbiAgICBhc3NlcnRQYXJhbShvYmosIFwib2JqXCIpLmlzT2JqZWN0KCkuY2hlY2soKTtcclxuICAgIGFzc2VydFBhcmFtKGlzRW5hYmxlZCwgXCJpc0VuYWJsZWRcIikuaXNCb29sZWFuKCkuaXNPcHRpb25hbCgpLm9yKCkuaXNGdW5jdGlvbigpLmNoZWNrKCk7XHJcbiAgICBsZXQgb2IgPSA8YW55Pm9iajtcclxuICAgIGlmICghb2IuXyRldmVudE1hcCkge1xyXG4gICAgICBvYi5fJGV2ZW50TWFwID0ge307XHJcbiAgICB9XHJcbiAgICBvYi5fJGV2ZW50TWFwW2V2ZW50TmFtZV0gPSBpc0VuYWJsZWQ7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICBSZXR1cm5zIHdoZXRoZXIgZm9yIGEgc3BlY2lmaWMgZXZlbnQgYW5kIGEgc3BlY2lmaWMgb2JqZWN0IGFuZCBpdHMgY2hpbGRyZW4sIG5vdGlmaWNhdGlvbiBpcyBlbmFibGVkIG9yIGRpc2FibGVkIG9yIG5vdCBzZXQuXHJcbiAgPiAgICAgIEJyZWV6ZUV2ZW50LmlzRW5hYmxlZCjigJxwcm9wZXJ0eUNoYW5nZWTigJ0sIG15RW50aXR5TWFuYWdlcilcclxuICA+IFxyXG4gIEBwYXJhbSBldmVudE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQuXHJcbiAgQHBhcmFtIHRhcmdldCAtIFRoZSBvYmplY3QgZm9yIHdoaWNoIHdlIHdhbnQgdG8ga25vdyBpZiBub3RpZmljYXRpb25zIGFyZSBlbmFibGVkLlxyXG4gIEByZXR1cm4gQSBudWxsIGlzIHJldHVybmVkIGlmIHRoaXMgdmFsdWUgaGFzIG5vdCBiZWVuIHNldC5cclxuICAqKi9cclxuICBzdGF0aWMgaXNFbmFibGVkKGV2ZW50TmFtZTogc3RyaW5nLCBvYmo6IE9iamVjdCkge1xyXG4gICAgYXNzZXJ0UGFyYW0oZXZlbnROYW1lLCBcImV2ZW50TmFtZVwiKS5pc05vbkVtcHR5U3RyaW5nKCkuY2hlY2soKTtcclxuICAgIGFzc2VydFBhcmFtKG9iaiwgXCJvYmpcIikuaXNPYmplY3QoKS5jaGVjaygpO1xyXG4gICAgLy8gbnVsbCBpcyBvayAtIGl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgb2JqZWN0IGlzIGF0IHRoZSB0b3AgbGV2ZWwuXHJcbiAgICBpZiAoKDxhbnk+b2JqKS5fZ2V0RXZlbnRQYXJlbnQgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIG9iamVjdCBkb2VzIG5vdCBzdXBwb3J0IGV2ZW50IGVuYWJsaW5nL2Rpc2FibGluZ1wiKTtcclxuICAgIH1cclxuICAgIC8vIHJldHVybiBjdG9yLl9pc0VuYWJsZWQoZ2V0RnVsbEV2ZW50TmFtZShldmVudE5hbWUpLCBvYmopO1xyXG4gICAgcmV0dXJuIEJyZWV6ZUV2ZW50Ll9pc0VuYWJsZWQoZXZlbnROYW1lLCAzKTtcclxuICB9XHJcblxyXG4gIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gIHN0YXRpYyBfaXNFbmFibGVkID0gZnVuY3Rpb24gKGV2ZW50TmFtZTogc3RyaW5nLCBvYmo6IE9iamVjdCkge1xyXG4gICAgbGV0IGlzRW5hYmxlZDogYW55ID0gbnVsbDtcclxuICAgIGxldCBvYiA9IDxhbnk+b2JqO1xyXG4gICAgbGV0IGV2ZW50TWFwID0gb2IuXyRldmVudE1hcDtcclxuICAgIGlmIChldmVudE1hcCkge1xyXG4gICAgICBpc0VuYWJsZWQgPSBldmVudE1hcFtldmVudE5hbWVdO1xyXG4gICAgfVxyXG4gICAgaWYgKGlzRW5hYmxlZCAhPSBudWxsKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgaXNFbmFibGVkID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgcmV0dXJuICEhaXNFbmFibGVkKG9iaik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuICEhaXNFbmFibGVkO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgcGFyZW50ID0gb2IuX2dldEV2ZW50UGFyZW50ICYmIG9iLl9nZXRFdmVudFBhcmVudCgpO1xyXG4gICAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgcmV0dXJuICEhdGhpcy5faXNFbmFibGVkKGV2ZW50TmFtZSwgcGFyZW50KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBkZWZhdWx0IGlmIG5vdCBleHBsaWNpdGx5IGRpc2FibGVkLlxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcblxyXG59XHJcblxyXG4vLyBsZWdhY3kgc3VwcG9ydCAtIGRlbGliZXJhdGVseSBub3QgdHlwZWRcclxuKGNvcmUgYXMgYW55KS5FdmVudCA9IEJyZWV6ZUV2ZW50OyJdfQ==
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { core } from './core';
|
|
2
|
-
import { assertConfig } from './assert-param';
|
|
3
|
-
import { config, InterfaceDef } from './config';
|
|
4
|
-
/** Registers adapters used by Breeze */
|
|
5
|
-
export class InterfaceRegistry {
|
|
6
|
-
ajax = new InterfaceDef("ajax");
|
|
7
|
-
modelLibrary = new InterfaceDef("modelLibrary");
|
|
8
|
-
dataService = new InterfaceDef("dataService");
|
|
9
|
-
uriBuilder = new InterfaceDef("uriBuilder");
|
|
10
|
-
}
|
|
11
|
-
config.interfaceRegistry = new InterfaceRegistry();
|
|
12
|
-
config._interfaceRegistry = config.interfaceRegistry;
|
|
13
|
-
config.interfaceRegistry.modelLibrary.getDefaultInstance = function () {
|
|
14
|
-
if (!this.defaultInstance) {
|
|
15
|
-
throw new Error("Unable to locate the default implementation of the '" + this.name +
|
|
16
|
-
"' interface. Possible options are 'ko', 'backingStore' or 'backbone'. See the breeze.config.initializeAdapterInstances method.");
|
|
17
|
-
}
|
|
18
|
-
return this.defaultInstance;
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
Initializes a collection of adapter implementations and makes each one the default for its corresponding interface.
|
|
22
|
-
@method initializeAdapterInstances
|
|
23
|
-
@param config {Object}
|
|
24
|
-
@param [config.ajax] {String} - the name of a previously registered "ajax" adapter
|
|
25
|
-
@param [config.dataService] {String} - the name of a previously registered "dataService" adapter
|
|
26
|
-
@param [config.modelLibrary] {String} - the name of a previously registered "modelLibrary" adapter
|
|
27
|
-
@param [config.uriBuilder] {String} - the name of a previously registered "uriBuilder" adapter
|
|
28
|
-
@return [array of instances]
|
|
29
|
-
**/
|
|
30
|
-
config.initializeAdapterInstances = function (irConfig) {
|
|
31
|
-
assertConfig(irConfig)
|
|
32
|
-
.whereParam("dataService").isOptional()
|
|
33
|
-
.whereParam("modelLibrary").isOptional()
|
|
34
|
-
.whereParam("ajax").isOptional()
|
|
35
|
-
.whereParam("uriBuilder").isOptional()
|
|
36
|
-
.applyAll(this, false);
|
|
37
|
-
return core.objectMap(config, this.initializeAdapterInstance);
|
|
38
|
-
};
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLXJlZ2lzdHJ5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ludGVyZmFjZS1yZWdpc3RyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBZSxNQUFNLFVBQVUsQ0FBQztBQWU3RCx3Q0FBd0M7QUFDeEMsTUFBTSxPQUFPLGlCQUFpQjtJQUMxQixJQUFJLEdBQUcsSUFBSSxZQUFZLENBQWMsTUFBTSxDQUFDLENBQUM7SUFDN0MsWUFBWSxHQUFHLElBQUksWUFBWSxDQUFzQixjQUFjLENBQUMsQ0FBQztJQUNyRSxXQUFXLEdBQUcsSUFBSSxZQUFZLENBQXFCLGFBQWEsQ0FBQyxDQUFDO0lBQ2xFLFVBQVUsR0FBRyxJQUFJLFlBQVksQ0FBb0IsWUFBWSxDQUFDLENBQUM7Q0FDbEU7QUF1QkQsTUFBTSxDQUFDLGlCQUFpQixHQUFHLElBQUksaUJBQWlCLEVBQUUsQ0FBQztBQUNuRCxNQUFNLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDO0FBQ3JELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsa0JBQWtCLEdBQUc7SUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUU7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxzREFBc0QsR0FBRyxJQUFJLENBQUMsSUFBSTtZQUM5RSxpSUFBaUksQ0FBQyxDQUFDO0tBQzFJO0lBQ0QsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sQ0FBQywwQkFBMEIsR0FBRyxVQUFVLFFBQWlDO0lBQzNFLFlBQVksQ0FBQyxRQUFRLENBQUM7U0FDakIsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsRUFBRTtTQUN0QyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsVUFBVSxFQUFFO1NBQ3ZDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUU7U0FDL0IsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsRUFBRTtTQUNyQyxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzNCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDbEUsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29yZSB9IGZyb20gJy4vY29yZSc7XHJcbmltcG9ydCB7IGFzc2VydENvbmZpZyB9IGZyb20gJy4vYXNzZXJ0LXBhcmFtJztcclxuaW1wb3J0IHsgY29uZmlnLCBJbnRlcmZhY2VEZWYsIEJhc2VBZGFwdGVyIH0gZnJvbSAnLi9jb25maWcnO1xyXG5pbXBvcnQgeyBNYXBwaW5nQ29udGV4dCB9IGZyb20gJy4vbWFwcGluZy1jb250ZXh0JztcclxuaW1wb3J0IHsgRW50aXR5UXVlcnkgfSBmcm9tICcuL2VudGl0eS1xdWVyeSc7XHJcbmltcG9ydCB7IE1ldGFkYXRhU3RvcmUgfSBmcm9tICcuL2VudGl0eS1tZXRhZGF0YSc7XHJcbmltcG9ydCB7IEpzb25SZXN1bHRzQWRhcHRlciwgRGF0YVNlcnZpY2UgfSBmcm9tICcuL2RhdGEtc2VydmljZSc7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4vZW50aXR5LWFzcGVjdCc7XHJcbmltcG9ydCB7IFNhdmVDb250ZXh0LCBTYXZlQnVuZGxlLCBRdWVyeVJlc3VsdCwgU2F2ZVJlc3VsdCwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnLi9lbnRpdHktbWFuYWdlcic7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEludGVyZmFjZVJlZ2lzdHJ5Q29uZmlnIHtcclxuICAgIGFqYXg/OiBJbnRlcmZhY2VEZWY8QWpheEFkYXB0ZXI+O1xyXG4gICAgbW9kZWxMaWJyYXJ5PzogSW50ZXJmYWNlRGVmPE1vZGVsTGlicmFyeUFkYXB0ZXI+O1xyXG4gICAgZGF0YVNlcnZpY2U/OiBJbnRlcmZhY2VEZWY8RGF0YVNlcnZpY2VBZGFwdGVyPjtcclxuICAgIHVyaUJ1aWxkZXI/OiBJbnRlcmZhY2VEZWY8VXJpQnVpbGRlckFkYXB0ZXI+O1xyXG59XHJcblxyXG4vKiogUmVnaXN0ZXJzIGFkYXB0ZXJzIHVzZWQgYnkgQnJlZXplICovXHJcbmV4cG9ydCBjbGFzcyBJbnRlcmZhY2VSZWdpc3RyeSB7XHJcbiAgICBhamF4ID0gbmV3IEludGVyZmFjZURlZjxBamF4QWRhcHRlcj4oXCJhamF4XCIpO1xyXG4gICAgbW9kZWxMaWJyYXJ5ID0gbmV3IEludGVyZmFjZURlZjxNb2RlbExpYnJhcnlBZGFwdGVyPihcIm1vZGVsTGlicmFyeVwiKTtcclxuICAgIGRhdGFTZXJ2aWNlID0gbmV3IEludGVyZmFjZURlZjxEYXRhU2VydmljZUFkYXB0ZXI+KFwiZGF0YVNlcnZpY2VcIik7XHJcbiAgICB1cmlCdWlsZGVyID0gbmV3IEludGVyZmFjZURlZjxVcmlCdWlsZGVyQWRhcHRlcj4oXCJ1cmlCdWlsZGVyXCIpO1xyXG59XHJcblxyXG4vLyBUaGlzIG1vZHVsZSBkZXNjcmliZXMgdGhlIGludGVyZmFjZVJlZ2lzdHJ5IGJ5IGV4dGVuZGluZyBjb25maWdcclxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXHJcbmRlY2xhcmUgbW9kdWxlIFwiLi9jb25maWdcIiB7XHJcbiAgICBpbnRlcmZhY2UgQnJlZXplQ29uZmlnIHtcclxuICAgICAgICAvKipcclxuICAgICAgICBJbml0aWFsaXplcyBhIGNvbGxlY3Rpb24gb2YgYWRhcHRlciBpbXBsZW1lbnRhdGlvbnMgYW5kIG1ha2VzIGVhY2ggb25lIHRoZSBkZWZhdWx0IGZvciBpdHMgY29ycmVzcG9uZGluZyBpbnRlcmZhY2UuXHJcbiAgICAgICAgQG1ldGhvZCBpbml0aWFsaXplQWRhcHRlckluc3RhbmNlc1xyXG4gICAgICAgIEBwYXJhbSBjb25maWcge09iamVjdH1cclxuICAgICAgICBAcGFyYW0gW2NvbmZpZy5hamF4XSB7U3RyaW5nfSAtIHRoZSBuYW1lIG9mIGEgcHJldmlvdXNseSByZWdpc3RlcmVkIFwiYWpheFwiIGFkYXB0ZXJcclxuICAgICAgICBAcGFyYW0gW2NvbmZpZy5kYXRhU2VydmljZV0ge1N0cmluZ30gLSB0aGUgbmFtZSBvZiBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBcImRhdGFTZXJ2aWNlXCIgYWRhcHRlclxyXG4gICAgICAgIEBwYXJhbSBbY29uZmlnLm1vZGVsTGlicmFyeV0ge1N0cmluZ30gLSB0aGUgbmFtZSBvZiBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBcIm1vZGVsTGlicmFyeVwiIGFkYXB0ZXJcclxuICAgICAgICBAcGFyYW0gW2NvbmZpZy51cmlCdWlsZGVyXSB7U3RyaW5nfSAtIHRoZSBuYW1lIG9mIGEgcHJldmlvdXNseSByZWdpc3RlcmVkIFwidXJpQnVpbGRlclwiIGFkYXB0ZXJcclxuICAgICAgICBAcmV0dXJuIFthcnJheSBvZiBpbnN0YW5jZXNdXHJcbiAgICAgICAgKiovXHJcbiAgICAgICAgaW5pdGlhbGl6ZUFkYXB0ZXJJbnN0YW5jZXMoaXJDb25maWc6IEludGVyZmFjZVJlZ2lzdHJ5Q29uZmlnKTogdm9pZDtcclxuXHJcbiAgICAgICAgLy8gc3Ryb25nbHkgdHlwZWQgdmVyc2lvblxyXG4gICAgICAgIGludGVyZmFjZVJlZ2lzdHJ5OiBJbnRlcmZhY2VSZWdpc3RyeTtcclxuICAgIH1cclxufVxyXG5cclxuY29uZmlnLmludGVyZmFjZVJlZ2lzdHJ5ID0gbmV3IEludGVyZmFjZVJlZ2lzdHJ5KCk7XHJcbmNvbmZpZy5faW50ZXJmYWNlUmVnaXN0cnkgPSBjb25maWcuaW50ZXJmYWNlUmVnaXN0cnk7XHJcbmNvbmZpZy5pbnRlcmZhY2VSZWdpc3RyeS5tb2RlbExpYnJhcnkuZ2V0RGVmYXVsdEluc3RhbmNlID0gZnVuY3Rpb24oKSB7XHJcbiAgICBpZiAoIXRoaXMuZGVmYXVsdEluc3RhbmNlKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5hYmxlIHRvIGxvY2F0ZSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgJ1wiICsgdGhpcy5uYW1lICtcclxuICAgICAgICAgICAgXCInIGludGVyZmFjZS4gIFBvc3NpYmxlIG9wdGlvbnMgYXJlICdrbycsICdiYWNraW5nU3RvcmUnIG9yICdiYWNrYm9uZScuIFNlZSB0aGUgYnJlZXplLmNvbmZpZy5pbml0aWFsaXplQWRhcHRlckluc3RhbmNlcyBtZXRob2QuXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdEluc3RhbmNlO1xyXG59O1xyXG5cclxuLyoqXHJcbkluaXRpYWxpemVzIGEgY29sbGVjdGlvbiBvZiBhZGFwdGVyIGltcGxlbWVudGF0aW9ucyBhbmQgbWFrZXMgZWFjaCBvbmUgdGhlIGRlZmF1bHQgZm9yIGl0cyBjb3JyZXNwb25kaW5nIGludGVyZmFjZS5cclxuQG1ldGhvZCBpbml0aWFsaXplQWRhcHRlckluc3RhbmNlc1xyXG5AcGFyYW0gY29uZmlnIHtPYmplY3R9XHJcbkBwYXJhbSBbY29uZmlnLmFqYXhdIHtTdHJpbmd9IC0gdGhlIG5hbWUgb2YgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgXCJhamF4XCIgYWRhcHRlclxyXG5AcGFyYW0gW2NvbmZpZy5kYXRhU2VydmljZV0ge1N0cmluZ30gLSB0aGUgbmFtZSBvZiBhIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBcImRhdGFTZXJ2aWNlXCIgYWRhcHRlclxyXG5AcGFyYW0gW2NvbmZpZy5tb2RlbExpYnJhcnldIHtTdHJpbmd9IC0gdGhlIG5hbWUgb2YgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgXCJtb2RlbExpYnJhcnlcIiBhZGFwdGVyXHJcbkBwYXJhbSBbY29uZmlnLnVyaUJ1aWxkZXJdIHtTdHJpbmd9IC0gdGhlIG5hbWUgb2YgYSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQgXCJ1cmlCdWlsZGVyXCIgYWRhcHRlclxyXG5AcmV0dXJuIFthcnJheSBvZiBpbnN0YW5jZXNdXHJcbioqL1xyXG5jb25maWcuaW5pdGlhbGl6ZUFkYXB0ZXJJbnN0YW5jZXMgPSBmdW5jdGlvbiAoaXJDb25maWc6IEludGVyZmFjZVJlZ2lzdHJ5Q29uZmlnKSB7XHJcbiAgICBhc3NlcnRDb25maWcoaXJDb25maWcpXHJcbiAgICAgICAgLndoZXJlUGFyYW0oXCJkYXRhU2VydmljZVwiKS5pc09wdGlvbmFsKClcclxuICAgICAgICAud2hlcmVQYXJhbShcIm1vZGVsTGlicmFyeVwiKS5pc09wdGlvbmFsKClcclxuICAgICAgICAud2hlcmVQYXJhbShcImFqYXhcIikuaXNPcHRpb25hbCgpXHJcbiAgICAgICAgLndoZXJlUGFyYW0oXCJ1cmlCdWlsZGVyXCIpLmlzT3B0aW9uYWwoKVxyXG4gICAgICAgIC5hcHBseUFsbCh0aGlzLCBmYWxzZSk7XHJcbiAgICByZXR1cm4gY29yZS5vYmplY3RNYXAoY29uZmlnLCB0aGlzLmluaXRpYWxpemVBZGFwdGVySW5zdGFuY2UpO1xyXG59O1xyXG5cclxuLyoqIERhdGFTZXJ2aWNlQWRhcHRlciBBamF4IHJlcXVlc3QgY29uZmlndXJhdGlvbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFqYXhDb25maWcge1xyXG4gICAgdXJsOiBzdHJpbmc7XHJcbiAgICAvKiogR0VULCBQT1NULCBldGMuICovXHJcbiAgICB0eXBlPzogc3RyaW5nO1xyXG4gICAgLyoqIGpzb24sIGV0Yy4gKi9cclxuICAgIGRhdGFUeXBlPzogc3RyaW5nO1xyXG4gICAgY29udGVudFR5cGU/OiBzdHJpbmc7XHJcbiAgICBjcm9zc0RvbWFpbj86IHN0cmluZyB8IGJvb2xlYW47XHJcbiAgICBoZWFkZXJzPzoge307XHJcbiAgICBkYXRhPzogYW55O1xyXG4gICAgcGFyYW1zPzoge307XHJcbiAgICBzdWNjZXNzOiAocmVzOiBIdHRwUmVzcG9uc2UpID0+IHZvaWQ7XHJcbiAgICBlcnJvcjogKHJlczogKEh0dHBSZXNwb25zZSB8IEVycm9yKSkgPT4gdm9pZDtcclxufVxyXG5cclxuLyoqIFJlcXVlc3Qgc2VudCBieSBBamF4QWRhcHRlciAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFqYXhSZXF1ZXN0IHtcclxuICAgIC8qKiBBamF4QWRhcHRlciB0aGF0IGluaXRpYXRlZCB0aGUgcmVxdWVzdCAqL1xyXG4gICAgYWRhcHRlcjogQWpheEFkYXB0ZXI7XHJcbiAgICAvKiogUmVxdWVzdCBjb25maWd1cmF0aW9uICovXHJcbiAgICBjb25maWc6IFJlcXVlc3RJbml0O1xyXG4gICAgLyoqIGNvbmZpZyBmcm9tIHRoZSBEYXRhU2VydmljZUFkYXB0ZXIgdGhhdCBjYWxsZWQgdGhlIEFqYXhBZGFwdGVyICovXHJcbiAgICBkc2FDb25maWc6IEFqYXhDb25maWc7XHJcbiAgICAvKiogRnVuY3Rpb24gY2FsbGVkIG9uIHJlc3BvbnNlIGVycm9yICovXHJcbiAgICBlcnJvcjogKHN0YXR1czogbnVtYmVyLCBzdGF0dXNUZXh0OiBzdHJpbmcsIGJvZHk6IHN0cmluZywgcmVzcG9uc2U6IFJlc3BvbnNlLCBlcnJvclRocm93bjogYW55KSA9PiB2b2lkO1xyXG4gICAgLyoqIEZ1bmN0aW9uIGNhbGxlZCBvbiByZXNwb25zZSBzdWNjZXNzICovXHJcbiAgICBzdWNjZXNzOiAoZGF0YTogYW55LCBzdGF0dXNUZXh0OiBzdHJpbmcsIHJlc3BvbnNlOiBSZXNwb25zZSkgPT4gdm9pZDtcclxufVxyXG5cclxuLyoqIEhhbmRsZXMgQUpBWCByZXF1ZXN0cyB0byBzZXJ2ZXIgKi9cclxuZXhwb3J0IGludGVyZmFjZSBBamF4QWRhcHRlciBleHRlbmRzIEJhc2VBZGFwdGVyIHtcclxuICAgIC8qKiBGdW5jdGlvbiB0aGF0IHBlcmZvcm1zIHRoZSBhamF4IHJlcXVlc3QgYW5kIGNhbGxzIHRoZSBzdWNjZXNzIG9yIGVycm9yIGZ1bmN0aW9uICovXHJcbiAgICBhamF4KGNvbmZpZzogQWpheENvbmZpZyk6IHZvaWQ7XHJcbiAgICAvKiogQ29udGFpbmVyIGZvciBoZWFkZXJzIHRvIGJlIGFkZGVkIHRvIGVhY2ggcmVxdWVzdCAqL1xyXG4gICAgZGVmYXVsdFNldHRpbmdzOiB7IGhlYWRlcnM/OiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfSB9O1xyXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGFsbG93IG1hbmlwdWxhdGluZyB0aGUgcmVxdWVzdCBiZWZvcmUgc2VuZGluZyAqL1xyXG4gICAgcmVxdWVzdEludGVyY2VwdG9yPzogKHJlcTogQWpheFJlcXVlc3QpID0+IHZvaWQ7XHJcbn1cclxuXHJcbi8qKiBBZGFwdHMgYnJlZXplIGNoYW5nZS10cmFja2luZyB0byB0aGUgVUkgZnJhbWV3b3JrICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgTW9kZWxMaWJyYXJ5QWRhcHRlciBleHRlbmRzIEJhc2VBZGFwdGVyIHtcclxuICAgIGdldFRyYWNrYWJsZVByb3BlcnR5TmFtZXM6IChlbnRpdHk6IGFueSkgPT4gc3RyaW5nW107XHJcbiAgICBpbml0aWFsaXplRW50aXR5UHJvdG90eXBlKHByb3RvOiBPYmplY3QpOiB2b2lkO1xyXG4gICAgc3RhcnRUcmFja2luZyhlbnRpdHk6IGFueSwgZW50aXR5Q3RvcjogRnVuY3Rpb24pOiB2b2lkO1xyXG4gICAgY3JlYXRlQ3Rvcj86IEZ1bmN0aW9uO1xyXG59XHJcblxyXG4vKiogUmVzaGFwZXMgZGF0YSBtb3ZpbmcgYmV0d2VlbiBicmVlemUgYW5kIHNlcnZlciAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIERhdGFTZXJ2aWNlQWRhcHRlciBleHRlbmRzIEJhc2VBZGFwdGVyIHtcclxuICAgIGZldGNoTWV0YWRhdGEobWV0YWRhdGFTdG9yZTogTWV0YWRhdGFTdG9yZSwgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlKTogUHJvbWlzZTxhbnk+OyAgLy8gcmVzdWx0IG9mIFByb21pc2UgaXMgZWl0aGVyIHJhd01ldGFkYXRhIG9yIGEgc3RyaW5nIGV4cGxhaW5pbmcgd2h5IG5vdC5cclxuICAgIGV4ZWN1dGVRdWVyeShtYXBwaW5nQ29udGV4dDogTWFwcGluZ0NvbnRleHQpOiBQcm9taXNlPFF1ZXJ5UmVzdWx0PjsgICAvLyByZXN1bHQgb2YgZXhlY3V0ZVF1ZXJ5IHdpbGwgZ2V0IHBhc3NlZCB0byBKc29uUmVzdWx0c0FkYXB0ZXIgZXh0cmFjdFJlc3VsdHMgbWV0aG9kXHJcbiAgICBzYXZlQ2hhbmdlcyhzYXZlQ29udGV4dDogU2F2ZUNvbnRleHQsIHNhdmVCdW5kbGU6IFNhdmVCdW5kbGUpOiBQcm9taXNlPFNhdmVSZXN1bHQ+O1xyXG4gICAgY2hhbmdlUmVxdWVzdEludGVyY2VwdG9yOiBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3JDdG9yO1xyXG4gICAganNvblJlc3VsdHNBZGFwdGVyOiBKc29uUmVzdWx0c0FkYXB0ZXI7XHJcbn1cclxuXHJcbi8qKiBGdW5jdGlvbiBjYWxsZWQgYnkgQWpheEFkYXB0ZXIgYmVmb3JlIHNlbmRpbmcgcmVxdWVzdCAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEFqYXhSZXF1ZXN0SW50ZXJjZXB0b3Ige1xyXG4gICAgKHJlcTogQWpheFJlcXVlc3QpIDogdm9pZDtcclxuICAgIC8qKiBXaGV0aGVyIHRvIHJlbW92ZSB0aGUgaW50ZXJjZXB0b3IgYWZ0ZXIgaXQgaXMgY2FsbGVkICovXHJcbiAgICBvbmVUaW1lOiBib29sZWFuO1xyXG59XHJcblxyXG4vKiogQnVpbGRzIFVSSSBmb3IgcGVyZm9ybWluZyBxdWVyaWVzLiAgU2VyaWFsaXplcyB0aGUgRW50aXR5UXVlcnkgYWNjb3JkaW5nIHRvIHRoZSBVUkkgc3ludGF4LiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFVyaUJ1aWxkZXJBZGFwdGVyIGV4dGVuZHMgQmFzZUFkYXB0ZXIge1xyXG4gICAgYnVpbGRVcmkocXVlcnk6IEVudGl0eVF1ZXJ5LCBtZXRhZGF0YVN0b3JlOiBNZXRhZGF0YVN0b3JlKTogc3RyaW5nO1xyXG59XHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3JDdG9yIHtcclxuICAgIG5ldyAoc2F2ZUNvbnRleHQ6IFNhdmVDb250ZXh0LCBzYXZlQnVuZGxlOiBTYXZlQnVuZGxlKTogQ2hhbmdlUmVxdWVzdEludGVyY2VwdG9yO1xyXG59XHJcblxyXG4vKiogQWxsb3dzIG1hbmlwdWxhdGluZyBkYXRhIGluIERhdGFTZXJ2aWNlQWRhcHRlciBiZWZvcmUgc2VuZGluZyB0byBzZXJ2ZXIgKi9cclxuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VSZXF1ZXN0SW50ZXJjZXB0b3Ige1xyXG4gICAgb25lVGltZT86IGJvb2xlYW47XHJcbiAgICAvKipcclxuICAgICBQcmVwYXJlIGFuZCByZXR1cm4gdGhlIHNhdmUgZGF0YSBmb3IgYW4gZW50aXR5IGNoYW5nZS1zZXQuXHJcbiAgXHJcbiAgICAgVGhlIGFkYXB0ZXIgY2FsbHMgdGhpcyBtZXRob2QgZm9yIGVhY2ggZW50aXR5IGluIHRoZSBjaGFuZ2Utc2V0LFxyXG4gICAgIGFmdGVyIGl0IGhhcyBwcmVwYXJlZCBhIFwiY2hhbmdlIHJlcXVlc3RcIiBmb3IgdGhhdCBvYmplY3QuXHJcbiAgXHJcbiAgICAgVGhlIG1ldGhvZCBjYW4gZG8gYW55dGhpbmcgdG8gdGhlIHJlcXVlc3QgYnV0IGl0IG11c3QgcmV0dXJuIGEgdmFsaWQsIG5vbi1udWxsIHJlcXVlc3QuXHJcbiAgICAgQGV4YW1wbGVcclxuICAgICB0aGlzLmdldFJlcXVlc3QgPSBmdW5jdGlvbiAocmVxdWVzdCwgZW50aXR5LCBpbmRleCkge1xyXG4gICAgICAgICAgICAvLyBhbHRlciB0aGUgcmVxdWVzdCB0aGF0IHRoZSBhZGFwdGVyIHByZXBhcmVkIGZvciB0aGlzIGVudGl0eVxyXG4gICAgICAgICAgICAvLyBiYXNlZCBvbiB0aGUgZW50aXR5LCBzYXZlQ29udGV4dCwgYW5kIHNhdmVCdW5kbGVcclxuICAgICAgICAgICAgLy8gZS5nLiwgYWRkIGEgY3VzdG9tIGhlYWRlciBvciBwcnVuZSB0aGUgb3JpZ2luYWxWYWx1ZXNNYXBcclxuICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3Q7XHJcbiAgICAgICAgfTtcclxuICAgICBAbWV0aG9kIGdldFJlcXVlc3RcclxuICAgICBAcGFyYW0gcmVxdWVzdCB7T2JqZWN0fSBUaGUgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgYWRhcHRlcidzIHJlcXVlc3QgdG8gc2F2ZSB0aGlzIGVudGl0eS5cclxuICAgICBAcGFyYW0gZW50aXR5IHtFbnRpdHl9IFRoZSBlbnRpdHktdG8tYmUtc2F2ZSBhcyBpdCBpcyBpbiBjYWNoZVxyXG4gICAgIEBwYXJhbSBpbmRleCB7SW50ZWdlcn0gVGhlIHplcm8tYmFzZWQgaW5kZXggb2YgdGhpcyBlbnRpdHkgaW4gdGhlIGNoYW5nZS1zZXQgYXJyYXlcclxuICAgICBAcmV0dXJuIHtGdW5jdGlvbn0gVGhlIHBvdGVudGlhbGx5IHJldmlzZWQgcmVxdWVzdC5cclxuICAgICAqKi9cclxuICAgIGdldFJlcXVlc3QocmVxdWVzdDogYW55LCBlbnRpdHk6IEVudGl0eSwgaW5kZXg6IG51bWJlcik6IGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICBMYXN0IGNoYW5jZSB0byBjaGFuZ2UgYW55dGhpbmcgYWJvdXQgdGhlICdyZXF1ZXN0cycgYXJyYXlcclxuICAgICBhZnRlciBpdCBoYXMgYmVlbiBidWlsdCB3aXRoIHJlcXVlc3RzIGZvciBhbGwgb2YgdGhlIGVudGl0aWVzLXRvLWJlLXNhdmVkLlxyXG4gIFxyXG4gICAgIFRoZSAncmVxdWVzdHMnIGFycmF5IGlzIHRoZSBzYW1lIGFzICdzYXZlQnVuZGxlLmVudGl0aWVzJyBpbiBtYW55IGltcGxlbWVudGF0aW9uc1xyXG4gIFxyXG4gICAgIFRoaXMgbWV0aG9kIGNhbiBkbyBhbnl0aGluZyB0byB0aGUgYXJyYXkgaW5jbHVkaW5nIGFkZCBhbmQgcmVtb3ZlIHJlcXVlc3RzLlxyXG4gICAgIEl0J3MgdXAgdG8geW91IHRvIGVuc3VyZSB0aGF0IHNlcnZlciB3aWxsIGFjY2VwdCB0aGUgcmVxdWVzdHMgYXJyYXkgZGF0YSBhcyB2YWxpZC5cclxuICBcclxuICAgICBSZXR1cm5lZCB2YWx1ZSBpcyBpZ25vcmVkLlxyXG4gICAgIEBleGFtcGxlXHJcbiAgICAgdGhpcy5kb25lID0gZnVuY3Rpb24gKHJlcXVlc3RzKSB7XHJcbiAgICAgICAgICAgIC8vIGFsdGVyIHRoZSBhcnJheSBvZiByZXF1ZXN0cyByZXByZXNlbnRpbmcgdGhlIGVudGlyZSBjaGFuZ2Utc2V0XHJcbiAgICAgICAgICAgIC8vIGJhc2VkIG9uIHRoZSBzYXZlQ29udGV4dCBhbmQgc2F2ZUJ1bmRsZVxyXG4gICAgICAgIH07XHJcbiAgICAgQG1ldGhvZCBkb25lXHJcbiAgICAgQHBhcmFtIHJlcXVlc3RzIHtBcnJheSBvZiBPYmplY3R9IFRoZSBhZGFwdGVyJ3MgYXJyYXkgb2YgcmVxdWVzdCBmb3IgdGhpcyBjaGFuZ2VzZXQuXHJcbiAgICAgKiovXHJcbiAgICBkb25lKHJlcXVlc3RzOiBPYmplY3RbXSk6IHZvaWQ7XHJcbn0iXX0=
|