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,276 +0,0 @@
|
|
|
1
|
-
import * as breeze from 'breeze-client';
|
|
2
|
-
|
|
3
|
-
let core = breeze.core;
|
|
4
|
-
class ModelLibraryBackingStoreAdapter {
|
|
5
|
-
name;
|
|
6
|
-
constructor() {
|
|
7
|
-
this.name = "backingStore";
|
|
8
|
-
}
|
|
9
|
-
static register(config) {
|
|
10
|
-
config = config || breeze.config;
|
|
11
|
-
config.registerAdapter("modelLibrary", ModelLibraryBackingStoreAdapter);
|
|
12
|
-
return config.initializeAdapterInstance("modelLibrary", "backingStore", true);
|
|
13
|
-
}
|
|
14
|
-
initialize() {
|
|
15
|
-
}
|
|
16
|
-
getTrackablePropertyNames(entity) {
|
|
17
|
-
let names = [];
|
|
18
|
-
for (let p in entity) {
|
|
19
|
-
if (p === "entityAspect" || p === "entityType")
|
|
20
|
-
continue;
|
|
21
|
-
if (p === "_$typeName" || p === "_pendingSets" || p === "_backingStore")
|
|
22
|
-
continue;
|
|
23
|
-
let val = entity[p];
|
|
24
|
-
if (!core.isFunction(val)) {
|
|
25
|
-
names.push(p);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return names;
|
|
29
|
-
}
|
|
30
|
-
// This method is called during Metadata initialization
|
|
31
|
-
initializeEntityPrototype(proto) {
|
|
32
|
-
proto.getProperty = function (propertyName) {
|
|
33
|
-
return this[propertyName];
|
|
34
|
-
};
|
|
35
|
-
proto.setProperty = function (propertyName, value) {
|
|
36
|
-
//if (!this._backingStore.hasOwnProperty(propertyName)) {
|
|
37
|
-
// throw new Error("Unknown property name:" + propertyName);
|
|
38
|
-
//}
|
|
39
|
-
this[propertyName] = value;
|
|
40
|
-
// allow setProperty chaining.
|
|
41
|
-
return this;
|
|
42
|
-
};
|
|
43
|
-
movePropDefsToProto(proto);
|
|
44
|
-
}
|
|
45
|
-
// This method is called when an EntityAspect is first created - this will occur as part of the entityType.createEntity call.
|
|
46
|
-
// which can be called either directly or via standard query materialization
|
|
47
|
-
// entity is either an entity or a complexObject
|
|
48
|
-
startTracking(entity, proto) {
|
|
49
|
-
// can't touch the normal property sets within this method - access the backingStore directly instead.
|
|
50
|
-
let bs = movePropsToBackingStore(entity);
|
|
51
|
-
// assign default values to the entity
|
|
52
|
-
let stype = breeze.EntityAspect.isEntity(entity) ? entity.entityType : entity.complexType;
|
|
53
|
-
stype.getProperties().forEach(function (prop) {
|
|
54
|
-
let propName = prop.name;
|
|
55
|
-
let val = entity[propName];
|
|
56
|
-
if (prop instanceof breeze.DataProperty) {
|
|
57
|
-
if (prop.isComplexProperty) {
|
|
58
|
-
if (prop.isScalar) {
|
|
59
|
-
val = prop.dataType._createInstanceCore(entity, prop);
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
val = breeze.makeComplexArray([], entity, prop);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
else if (!prop.isScalar) {
|
|
66
|
-
val = breeze.makePrimitiveArray([], entity, prop);
|
|
67
|
-
}
|
|
68
|
-
else if (val === undefined) {
|
|
69
|
-
val = prop.defaultValue;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
else if (prop.isNavigationProperty) {
|
|
73
|
-
if (val !== undefined && val !== null) {
|
|
74
|
-
throw new Error("Cannot assign a navigation property in an entity ctor.: " + propName);
|
|
75
|
-
}
|
|
76
|
-
if (prop.isScalar) {
|
|
77
|
-
// TODO: change this to nullstob later.
|
|
78
|
-
val = null;
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
val = breeze.makeRelationArray([], entity, prop);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
throw new Error("unknown property: " + propName);
|
|
86
|
-
}
|
|
87
|
-
// can't touch the normal property sets within this method (IE9 Bug) - so we access the backingStore directly instead.
|
|
88
|
-
// otherwise we could just do
|
|
89
|
-
// entity[propName] = val
|
|
90
|
-
// after all of the interception logic had been injected.
|
|
91
|
-
if (prop.isSettable || prop.isNavigationProperty) {
|
|
92
|
-
bs[propName] = val;
|
|
93
|
-
}
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
breeze.config.registerAdapter("modelLibrary", ModelLibraryBackingStoreAdapter);
|
|
98
|
-
// private methods
|
|
99
|
-
// This method is called during Metadata initialization to correctly "wrap" properties.
|
|
100
|
-
function movePropDefsToProto(proto) {
|
|
101
|
-
let stype = (proto.entityType || proto.complexType);
|
|
102
|
-
let extra = stype._extra;
|
|
103
|
-
let alreadyWrapped = extra.alreadyWrappedProps || {};
|
|
104
|
-
stype.getProperties().forEach(function (prop) {
|
|
105
|
-
let propName = prop.name;
|
|
106
|
-
// we only want to wrap props that haven't already been wrapped
|
|
107
|
-
if (alreadyWrapped[propName])
|
|
108
|
-
return;
|
|
109
|
-
// If property is already defined on the prototype then wrap it in another propertyDescriptor.
|
|
110
|
-
// otherwise create a propDescriptor for it.
|
|
111
|
-
let descr;
|
|
112
|
-
if (propName in proto) {
|
|
113
|
-
descr = wrapPropDescription(proto, prop);
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
descr = makePropDescription(proto, prop);
|
|
117
|
-
}
|
|
118
|
-
// descr will be null for a wrapped descr that is not configurable
|
|
119
|
-
if (descr != null) {
|
|
120
|
-
Object.defineProperty(proto, propName, descr);
|
|
121
|
-
}
|
|
122
|
-
alreadyWrapped[propName] = true;
|
|
123
|
-
});
|
|
124
|
-
extra.alreadyWrappedProps = alreadyWrapped;
|
|
125
|
-
}
|
|
126
|
-
// This method is called when an instance is first created via materialization or createEntity.
|
|
127
|
-
// this method cannot be called while a 'defineProperty' accessor is executing
|
|
128
|
-
// because of IE bug mentioned above.
|
|
129
|
-
function movePropsToBackingStore(instance) {
|
|
130
|
-
let bs = getBackingStore(instance);
|
|
131
|
-
let proto = Object.getPrototypeOf(instance);
|
|
132
|
-
let stype = (proto.entityType || proto.complexType);
|
|
133
|
-
stype.getProperties().forEach(function (prop) {
|
|
134
|
-
let propName = prop.name;
|
|
135
|
-
if (prop.isUnmapped) {
|
|
136
|
-
// insure that any unmapped properties that were added after entityType
|
|
137
|
-
// was first created are wrapped with a property descriptor.
|
|
138
|
-
if (!core.getPropertyDescriptor(proto, propName)) {
|
|
139
|
-
let descr = makePropDescription(proto, prop);
|
|
140
|
-
Object.defineProperty(proto, propName, descr);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
if (!instance.hasOwnProperty(propName))
|
|
144
|
-
return;
|
|
145
|
-
// pulls off the value, removes the instance property and then rewrites it via ES5 accessor
|
|
146
|
-
let value = instance[propName];
|
|
147
|
-
delete instance[propName];
|
|
148
|
-
instance[propName] = value;
|
|
149
|
-
});
|
|
150
|
-
return bs;
|
|
151
|
-
}
|
|
152
|
-
function makePropDescription(proto, property) {
|
|
153
|
-
let propName = property.name;
|
|
154
|
-
let pendingStores = proto._pendingBackingStores;
|
|
155
|
-
if (!pendingStores) {
|
|
156
|
-
pendingStores = [];
|
|
157
|
-
proto._pendingBackingStores = pendingStores;
|
|
158
|
-
}
|
|
159
|
-
let descr = {
|
|
160
|
-
get: function () {
|
|
161
|
-
let bs = this._backingStore || getBackingStore(this);
|
|
162
|
-
return bs[propName];
|
|
163
|
-
},
|
|
164
|
-
set: function (value) {
|
|
165
|
-
// IE9 cannot touch instance._backingStore here
|
|
166
|
-
let bs = this._backingStore || getPendingBackingStore(this);
|
|
167
|
-
let accessorFn = getAccessorFn(bs, propName);
|
|
168
|
-
this._$interceptor(property, value, accessorFn);
|
|
169
|
-
},
|
|
170
|
-
enumerable: true,
|
|
171
|
-
configurable: true
|
|
172
|
-
};
|
|
173
|
-
descr.set.rawSet = function (value) {
|
|
174
|
-
let bs = this._backingStore || getPendingBackingStore(this);
|
|
175
|
-
let accessorFn = getAccessorFn(bs, propName);
|
|
176
|
-
accessorFn(value);
|
|
177
|
-
};
|
|
178
|
-
return descr;
|
|
179
|
-
}
|
|
180
|
-
function getAccessorFn(bs, propName) {
|
|
181
|
-
return function () {
|
|
182
|
-
if (arguments.length === 0) {
|
|
183
|
-
return bs[propName];
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
bs[propName] = arguments[0];
|
|
187
|
-
return undefined;
|
|
188
|
-
}
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
function wrapPropDescription(proto, property) {
|
|
192
|
-
if (!proto.hasOwnProperty(property.name)) {
|
|
193
|
-
let nextProto = Object.getPrototypeOf(proto);
|
|
194
|
-
return wrapPropDescription(nextProto, property);
|
|
195
|
-
}
|
|
196
|
-
let propDescr = Object.getOwnPropertyDescriptor(proto, property.name);
|
|
197
|
-
if (!propDescr)
|
|
198
|
-
return undefined;
|
|
199
|
-
// if not configurable; we can't touch it - so leave.
|
|
200
|
-
if (!propDescr.configurable)
|
|
201
|
-
return undefined;
|
|
202
|
-
// if a data descriptor - don't change it - this is basically a static property - i.e. defined on every instance of the type with the same value.
|
|
203
|
-
if (propDescr.value)
|
|
204
|
-
return undefined;
|
|
205
|
-
// if a read only property descriptor - no need to change it.
|
|
206
|
-
if (!propDescr.set)
|
|
207
|
-
return undefined;
|
|
208
|
-
let localAccessorFn = function (entity) {
|
|
209
|
-
return function () {
|
|
210
|
-
if (!propDescr)
|
|
211
|
-
return undefined;
|
|
212
|
-
if (arguments.length === 0) {
|
|
213
|
-
return propDescr.get.bind(entity)();
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
let set = propDescr.set;
|
|
217
|
-
let rawSet = set.rawSet || set;
|
|
218
|
-
rawSet.bind(entity)(arguments[0]);
|
|
219
|
-
return undefined;
|
|
220
|
-
}
|
|
221
|
-
};
|
|
222
|
-
};
|
|
223
|
-
let newDescr = {
|
|
224
|
-
get: function () {
|
|
225
|
-
if (!propDescr)
|
|
226
|
-
return undefined;
|
|
227
|
-
return propDescr.get.bind(this)();
|
|
228
|
-
},
|
|
229
|
-
set: function (value) {
|
|
230
|
-
this._$interceptor(property, value, localAccessorFn(this));
|
|
231
|
-
},
|
|
232
|
-
enumerable: propDescr.enumerable,
|
|
233
|
-
configurable: true
|
|
234
|
-
};
|
|
235
|
-
newDescr.set.rawSet = propDescr.set;
|
|
236
|
-
return newDescr;
|
|
237
|
-
}
|
|
238
|
-
function getBackingStore(instance) {
|
|
239
|
-
let proto = Object.getPrototypeOf(instance);
|
|
240
|
-
processPendingStores(proto);
|
|
241
|
-
let bs = instance._backingStore;
|
|
242
|
-
if (!bs) {
|
|
243
|
-
bs = {};
|
|
244
|
-
instance._backingStore = bs;
|
|
245
|
-
}
|
|
246
|
-
return bs;
|
|
247
|
-
}
|
|
248
|
-
// workaround for IE9 bug where instance properties cannot be changed when executing a property 'set' method.
|
|
249
|
-
function getPendingBackingStore(instance) {
|
|
250
|
-
let proto = Object.getPrototypeOf(instance);
|
|
251
|
-
let pendingStores = proto._pendingBackingStores;
|
|
252
|
-
let pending = core.arrayFirst(pendingStores, function (pending) {
|
|
253
|
-
return pending.entity === instance;
|
|
254
|
-
});
|
|
255
|
-
if (pending)
|
|
256
|
-
return pending.backingStore;
|
|
257
|
-
let bs = {};
|
|
258
|
-
pendingStores.push({ entity: instance, backingStore: bs });
|
|
259
|
-
return bs;
|
|
260
|
-
}
|
|
261
|
-
function processPendingStores(proto) {
|
|
262
|
-
let pendingStores = proto._pendingBackingStores;
|
|
263
|
-
if (pendingStores) {
|
|
264
|
-
pendingStores.forEach(function (pending) {
|
|
265
|
-
pending.entity._backingStore = pending.backingStore;
|
|
266
|
-
});
|
|
267
|
-
pendingStores.length = 0;
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
/**
|
|
272
|
-
* Generated bundle index. Do not edit.
|
|
273
|
-
*/
|
|
274
|
-
|
|
275
|
-
export { ModelLibraryBackingStoreAdapter };
|
|
276
|
-
//# sourceMappingURL=breeze-client-adapter-model-library-backing-store.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"breeze-client-adapter-model-library-backing-store.mjs","sources":["../../src/adapter-model-library-backing-store.ts","../../src/breeze-client-adapter-model-library-backing-store.ts"],"sourcesContent":["import * as breeze from 'breeze-client';\r\n\r\nlet core = breeze.core;\r\n\r\nexport class ModelLibraryBackingStoreAdapter implements breeze.ModelLibraryAdapter {\r\n name: string;\r\n\r\n constructor() {\r\n this.name = \"backingStore\";\r\n }\r\n\r\n static register(config?: breeze.BreezeConfig) {\r\n config = config || breeze.config;\r\n config.registerAdapter(\"modelLibrary\", ModelLibraryBackingStoreAdapter);\r\n return config.initializeAdapterInstance(\"modelLibrary\", \"backingStore\", true) as ModelLibraryBackingStoreAdapter;\r\n }\r\n\r\n initialize() {\r\n }\r\n\r\n getTrackablePropertyNames(entity: breeze.Entity) {\r\n let names: string[] = [];\r\n for (let p in entity) {\r\n if (p === \"entityAspect\" || p === \"entityType\") continue;\r\n if (p === \"_$typeName\" || p === \"_pendingSets\" || p === \"_backingStore\") continue;\r\n let val = entity[p];\r\n if (!core.isFunction(val)) {\r\n names.push(p);\r\n }\r\n }\r\n return names;\r\n }\r\n\r\n // This method is called during Metadata initialization\r\n initializeEntityPrototype(proto: any) {\r\n\r\n proto.getProperty = function (propertyName: string) {\r\n return this[propertyName];\r\n };\r\n\r\n proto.setProperty = function (propertyName: string, value: any) {\r\n //if (!this._backingStore.hasOwnProperty(propertyName)) {\r\n // throw new Error(\"Unknown property name:\" + propertyName);\r\n //}\r\n this[propertyName] = value;\r\n // allow setProperty chaining.\r\n return this;\r\n };\r\n\r\n movePropDefsToProto(proto);\r\n }\r\n\r\n // This method is called when an EntityAspect is first created - this will occur as part of the entityType.createEntity call.\r\n // which can be called either directly or via standard query materialization\r\n\r\n // entity is either an entity or a complexObject\r\n startTracking(entity: breeze.StructuralObject, proto: any) {\r\n // can't touch the normal property sets within this method - access the backingStore directly instead.\r\n let bs = movePropsToBackingStore(entity);\r\n\r\n // assign default values to the entity\r\n let stype = breeze.EntityAspect.isEntity(entity) ? entity.entityType : entity.complexType;\r\n stype.getProperties().forEach(function (prop) {\r\n\r\n let propName = prop.name;\r\n let val = entity[propName];\r\n\r\n if (prop instanceof breeze.DataProperty) {\r\n if (prop.isComplexProperty) {\r\n if (prop.isScalar) {\r\n val = (prop.dataType as breeze.ComplexType)._createInstanceCore(entity, prop);\r\n } else {\r\n val = breeze.makeComplexArray([], entity, prop);\r\n }\r\n } else if (!prop.isScalar) {\r\n val = breeze.makePrimitiveArray([], entity, prop);\r\n } else if (val === undefined) {\r\n val = prop.defaultValue;\r\n }\r\n\r\n } else if (prop.isNavigationProperty) {\r\n if (val !== undefined && val !== null) {\r\n throw new Error(\"Cannot assign a navigation property in an entity ctor.: \" + propName);\r\n }\r\n if (prop.isScalar) {\r\n // TODO: change this to nullstob later.\r\n val = null;\r\n } else {\r\n val = breeze.makeRelationArray([], entity as breeze.Entity, prop);\r\n }\r\n } else {\r\n throw new Error(\"unknown property: \" + propName);\r\n }\r\n // can't touch the normal property sets within this method (IE9 Bug) - so we access the backingStore directly instead.\r\n // otherwise we could just do\r\n // entity[propName] = val\r\n // after all of the interception logic had been injected.\r\n if ((prop as breeze.DataProperty).isSettable || prop.isNavigationProperty) {\r\n bs[propName] = val;\r\n }\r\n });\r\n }\r\n}\r\n\r\nbreeze.config.registerAdapter(\"modelLibrary\", ModelLibraryBackingStoreAdapter);\r\n\r\n// private methods\r\n\r\n// This method is called during Metadata initialization to correctly \"wrap\" properties.\r\nfunction movePropDefsToProto(proto: any) {\r\n let stype = (proto.entityType || proto.complexType) as breeze.StructuralType;\r\n let extra = stype._extra;\r\n\r\n let alreadyWrapped = extra.alreadyWrappedProps || {};\r\n\r\n stype.getProperties().forEach(function (prop) {\r\n let propName = prop.name;\r\n // we only want to wrap props that haven't already been wrapped\r\n if (alreadyWrapped[propName]) return;\r\n\r\n // If property is already defined on the prototype then wrap it in another propertyDescriptor.\r\n // otherwise create a propDescriptor for it.\r\n let descr: any;\r\n if (propName in proto) {\r\n descr = wrapPropDescription(proto, prop);\r\n } else {\r\n descr = makePropDescription(proto, prop);\r\n }\r\n // descr will be null for a wrapped descr that is not configurable\r\n if (descr != null) {\r\n Object.defineProperty(proto, propName, descr);\r\n }\r\n alreadyWrapped[propName] = true;\r\n });\r\n extra.alreadyWrappedProps = alreadyWrapped;\r\n}\r\n\r\n// This method is called when an instance is first created via materialization or createEntity.\r\n// this method cannot be called while a 'defineProperty' accessor is executing\r\n// because of IE bug mentioned above.\r\n\r\nfunction movePropsToBackingStore(instance: any) {\r\n\r\n let bs = getBackingStore(instance);\r\n let proto = Object.getPrototypeOf(instance);\r\n let stype = (proto.entityType || proto.complexType) as breeze.StructuralType;\r\n stype.getProperties().forEach(function (prop) {\r\n let propName = prop.name;\r\n if (prop.isUnmapped) {\r\n // insure that any unmapped properties that were added after entityType\r\n // was first created are wrapped with a property descriptor.\r\n if (!core.getPropertyDescriptor(proto, propName)) {\r\n let descr = makePropDescription(proto, prop);\r\n Object.defineProperty(proto, propName, descr);\r\n }\r\n }\r\n if (!instance.hasOwnProperty(propName)) return;\r\n // pulls off the value, removes the instance property and then rewrites it via ES5 accessor\r\n let value = instance[propName];\r\n delete instance[propName];\r\n instance[propName] = value;\r\n });\r\n return bs;\r\n}\r\n\r\nfunction makePropDescription(proto: any, property: breeze.EntityProperty) {\r\n let propName = property.name;\r\n let pendingStores = proto._pendingBackingStores;\r\n if (!pendingStores) {\r\n pendingStores = [];\r\n proto._pendingBackingStores = pendingStores;\r\n }\r\n let descr = {\r\n get: function () {\r\n let bs = this._backingStore || getBackingStore(this);\r\n return bs[propName];\r\n },\r\n set: function (value: any) {\r\n // IE9 cannot touch instance._backingStore here\r\n let bs = this._backingStore || getPendingBackingStore(this);\r\n let accessorFn = getAccessorFn(bs, propName);\r\n this._$interceptor(property, value, accessorFn);\r\n },\r\n enumerable: true,\r\n configurable: true\r\n };\r\n\r\n (descr.set as any).rawSet = function (value: any) {\r\n let bs = this._backingStore || getPendingBackingStore(this);\r\n let accessorFn = getAccessorFn(bs, propName);\r\n accessorFn(value);\r\n };\r\n return descr;\r\n\r\n}\r\n\r\nfunction getAccessorFn(bs: {}, propName: string): any {\r\n return function () {\r\n if (arguments.length === 0) {\r\n return bs[propName];\r\n } else {\r\n bs[propName] = arguments[0];\r\n return undefined;\r\n }\r\n };\r\n}\r\n\r\nfunction wrapPropDescription(proto: any, property: breeze.EntityProperty): any {\r\n if (!proto.hasOwnProperty(property.name)) {\r\n let nextProto = Object.getPrototypeOf(proto);\r\n return wrapPropDescription(nextProto, property);\r\n }\r\n\r\n let propDescr = Object.getOwnPropertyDescriptor(proto, property.name);\r\n if (!propDescr) return undefined;\r\n // if not configurable; we can't touch it - so leave.\r\n if (!propDescr.configurable) return undefined;\r\n // if a data descriptor - don't change it - this is basically a static property - i.e. defined on every instance of the type with the same value.\r\n if (propDescr.value) return undefined;\r\n // if a read only property descriptor - no need to change it.\r\n if (!propDescr.set) return undefined;\r\n\r\n let localAccessorFn = function (entity: any) {\r\n return function () {\r\n if (!propDescr) return undefined;\r\n if (arguments.length === 0) {\r\n return propDescr.get!.bind(entity)();\r\n } else {\r\n let set = propDescr.set;\r\n let rawSet = (set as any).rawSet || set;\r\n rawSet.bind(entity)(arguments[0]);\r\n return undefined;\r\n }\r\n };\r\n };\r\n\r\n let newDescr = {\r\n get: function () {\r\n if (!propDescr) return undefined;\r\n return propDescr.get!.bind(this)();\r\n },\r\n set: function (value: any) {\r\n this._$interceptor(property, value, localAccessorFn(this));\r\n },\r\n enumerable: propDescr.enumerable,\r\n configurable: true\r\n };\r\n (newDescr.set as any).rawSet = propDescr.set;\r\n return newDescr;\r\n}\r\n\r\n\r\nfunction getBackingStore(instance: any) {\r\n let proto = Object.getPrototypeOf(instance);\r\n processPendingStores(proto);\r\n let bs = instance._backingStore;\r\n if (!bs) {\r\n bs = {};\r\n instance._backingStore = bs;\r\n }\r\n return bs;\r\n}\r\n\r\n// workaround for IE9 bug where instance properties cannot be changed when executing a property 'set' method.\r\nfunction getPendingBackingStore(instance: any) {\r\n let proto = Object.getPrototypeOf(instance);\r\n let pendingStores = proto._pendingBackingStores;\r\n let pending = core.arrayFirst(pendingStores, function (pending) {\r\n return pending.entity === instance;\r\n });\r\n if (pending) return (pending as any).backingStore;\r\n let bs = {};\r\n pendingStores.push({ entity: instance, backingStore: bs });\r\n return bs;\r\n}\r\n\r\nfunction processPendingStores(proto: any) {\r\n let pendingStores = proto._pendingBackingStores;\r\n if (pendingStores) {\r\n pendingStores.forEach(function (pending: any) {\r\n pending.entity._backingStore = pending.backingStore;\r\n });\r\n pendingStores.length = 0;\r\n }\r\n}\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './adapter-model-library-backing-store';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
import * as breeze from 'breeze-client';
|
|
2
|
-
|
|
3
|
-
let core = breeze.core;
|
|
4
|
-
let canIsolateES5Props = core.isES5Supported;
|
|
5
|
-
let ko;
|
|
6
|
-
class ModelLibraryKnockoutAdapter {
|
|
7
|
-
name;
|
|
8
|
-
constructor() {
|
|
9
|
-
this.name = "ko";
|
|
10
|
-
}
|
|
11
|
-
static register(config) {
|
|
12
|
-
config = config || breeze.config;
|
|
13
|
-
config.registerAdapter("modelLibrary", ModelLibraryKnockoutAdapter);
|
|
14
|
-
return config.initializeAdapterInstance("modelLibrary", "ko", true);
|
|
15
|
-
}
|
|
16
|
-
initialize() {
|
|
17
|
-
ko = core.requireLib("ko;knockout", "The Knockout library");
|
|
18
|
-
ko.extenders.intercept = function (target, interceptorOptions) {
|
|
19
|
-
let instance = interceptorOptions.instance;
|
|
20
|
-
let property = interceptorOptions.property;
|
|
21
|
-
// create a computed observable to intercept writes to our observable
|
|
22
|
-
let result;
|
|
23
|
-
if (target.splice) {
|
|
24
|
-
result = ko.computed({
|
|
25
|
-
read: target //always return the original observables value
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
else {
|
|
29
|
-
result = ko.computed({
|
|
30
|
-
read: target,
|
|
31
|
-
write: function (newValue) {
|
|
32
|
-
instance._$interceptor(property, newValue, target);
|
|
33
|
-
return instance;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
//return the new computed observable
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
getTrackablePropertyNames(entity) {
|
|
42
|
-
let names = [];
|
|
43
|
-
for (let p in entity) {
|
|
44
|
-
if (p === "entityType")
|
|
45
|
-
continue;
|
|
46
|
-
if (p === "_$typeName")
|
|
47
|
-
continue;
|
|
48
|
-
let propDescr = getES5PropDescriptor(entity, p);
|
|
49
|
-
if (propDescr && propDescr.get) {
|
|
50
|
-
names.push(p);
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
let val = entity[p];
|
|
54
|
-
if (ko.isObservable(val)) {
|
|
55
|
-
names.push(p);
|
|
56
|
-
}
|
|
57
|
-
else if (!core.isFunction(val)) {
|
|
58
|
-
names.push(p);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return names;
|
|
63
|
-
}
|
|
64
|
-
initializeEntityPrototype(proto) {
|
|
65
|
-
proto.getProperty = function (propertyName) {
|
|
66
|
-
return this[propertyName]();
|
|
67
|
-
};
|
|
68
|
-
proto.setProperty = function (propertyName, value) {
|
|
69
|
-
this[propertyName](value);
|
|
70
|
-
// allow set property chaining.
|
|
71
|
-
return this;
|
|
72
|
-
};
|
|
73
|
-
if (canIsolateES5Props) {
|
|
74
|
-
isolateES5Props(proto);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
startTracking(entity, proto) {
|
|
78
|
-
// create ko's for each property and assign defaultValues
|
|
79
|
-
let stype = (entity.entityType || entity.complexType);
|
|
80
|
-
let es5Descriptors = stype._extra.es5Descriptors || {};
|
|
81
|
-
// sort unmapped properties to the end
|
|
82
|
-
stype.getProperties().sort(function (p1, p2) {
|
|
83
|
-
let v1 = p1.isUnmapped ? 1 : 0;
|
|
84
|
-
let v2 = p2.isUnmapped ? 1 : 0;
|
|
85
|
-
return v1 - v2;
|
|
86
|
-
}).forEach(function (prop) {
|
|
87
|
-
let propName = prop.name;
|
|
88
|
-
let val = entity[propName];
|
|
89
|
-
let propDescr = es5Descriptors[propName];
|
|
90
|
-
let koObj;
|
|
91
|
-
// check if property is an ES5 property
|
|
92
|
-
if (propDescr) {
|
|
93
|
-
let getFn = propDescr.get.bind(entity);
|
|
94
|
-
if (propDescr.set) {
|
|
95
|
-
let setFn = propDescr.set.bind(entity);
|
|
96
|
-
let rawAccessorFn = function (newValue) {
|
|
97
|
-
if (arguments.length === 0) {
|
|
98
|
-
getFn();
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
setFn(newValue);
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
koObj = ko.computed({
|
|
106
|
-
read: function () {
|
|
107
|
-
stype._koDummy();
|
|
108
|
-
return getFn();
|
|
109
|
-
},
|
|
110
|
-
write: function (newValue) {
|
|
111
|
-
entity._$interceptor(prop, newValue, rawAccessorFn);
|
|
112
|
-
stype._koDummy.valueHasMutated();
|
|
113
|
-
return entity;
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
koObj = ko.computed({
|
|
119
|
-
read: getFn,
|
|
120
|
-
write: function () {
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
// check if property is already exposed as a ko object
|
|
125
|
-
}
|
|
126
|
-
else if (ko.isObservable(val)) {
|
|
127
|
-
if (prop.isNavigationProperty) {
|
|
128
|
-
throw new Error("Cannot assign a navigation property in an entity ctor.: " + propName);
|
|
129
|
-
}
|
|
130
|
-
koObj = val;
|
|
131
|
-
// otherwise
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
val = initializeValueForProp(entity, prop, val);
|
|
135
|
-
koObj = prop.isScalar ? ko.observable(val) : ko.observableArray(val);
|
|
136
|
-
}
|
|
137
|
-
if (prop.isScalar) {
|
|
138
|
-
if (propDescr) {
|
|
139
|
-
Object.defineProperty(entity, propName, {
|
|
140
|
-
enumerable: true,
|
|
141
|
-
configurable: true,
|
|
142
|
-
writable: true,
|
|
143
|
-
value: koObj
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
let koExt = koObj.extend({ intercept: { instance: entity, property: prop } });
|
|
148
|
-
entity[propName] = koExt;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
else {
|
|
152
|
-
val._koObj = koObj;
|
|
153
|
-
// code to suppress extra breeze notification when
|
|
154
|
-
// ko's array methods are called.
|
|
155
|
-
koObj.subscribe(onBeforeChange, null, "beforeChange");
|
|
156
|
-
// code to insure that any direct breeze changes notify ko
|
|
157
|
-
val.arrayChanged.subscribe(onArrayChanged);
|
|
158
|
-
koObj.equalityComparer = function () {
|
|
159
|
-
throw new Error("Collection navigation properties may NOT be set.");
|
|
160
|
-
};
|
|
161
|
-
entity[propName] = koObj;
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
breeze.config.registerAdapter("modelLibrary", ModelLibraryKnockoutAdapter);
|
|
167
|
-
// private fns
|
|
168
|
-
function getES5PropDescriptor(proto, propName) {
|
|
169
|
-
if (!canIsolateES5Props) {
|
|
170
|
-
return null;
|
|
171
|
-
}
|
|
172
|
-
if (proto.hasOwnProperty(propName)) {
|
|
173
|
-
return Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(proto, propName);
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
let nextProto = Object.getPrototypeOf(proto);
|
|
177
|
-
return nextProto ? getES5PropDescriptor(nextProto, propName) : null;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
function initializeValueForProp(entity, prop, val) {
|
|
181
|
-
if (prop instanceof breeze.DataProperty) {
|
|
182
|
-
if (prop.isComplexProperty) {
|
|
183
|
-
// TODO: right now we create Empty complexObjects here - these should actually come from the entity
|
|
184
|
-
if (prop.isScalar) {
|
|
185
|
-
val = prop.dataType._createInstanceCore(entity, prop);
|
|
186
|
-
}
|
|
187
|
-
else {
|
|
188
|
-
val = breeze.makeComplexArray([], entity, prop);
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
else if (!prop.isScalar) {
|
|
192
|
-
val = breeze.makePrimitiveArray([], entity, prop);
|
|
193
|
-
}
|
|
194
|
-
else if (val === undefined) {
|
|
195
|
-
val = prop.defaultValue;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
else if (prop instanceof breeze.NavigationProperty) {
|
|
199
|
-
if (val !== undefined) {
|
|
200
|
-
throw new Error("Cannot assign a navigation property in an entity ctor.: " + prop.name);
|
|
201
|
-
}
|
|
202
|
-
if (prop.isScalar) {
|
|
203
|
-
// TODO: change this to nullEntity later.
|
|
204
|
-
val = null;
|
|
205
|
-
}
|
|
206
|
-
else {
|
|
207
|
-
val = breeze.makeRelationArray([], entity, prop);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
else {
|
|
211
|
-
throw new Error("unknown property: " + prop.name);
|
|
212
|
-
}
|
|
213
|
-
return val;
|
|
214
|
-
}
|
|
215
|
-
function onBeforeChange(args) {
|
|
216
|
-
args._koObj._suppressBreeze = true;
|
|
217
|
-
}
|
|
218
|
-
function onArrayChanged(args) {
|
|
219
|
-
let koObj = args.array._koObj;
|
|
220
|
-
if (koObj._suppressBreeze) {
|
|
221
|
-
koObj._suppressBreeze = false;
|
|
222
|
-
}
|
|
223
|
-
else {
|
|
224
|
-
koObj.valueHasMutated();
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
function isolateES5Props(proto) {
|
|
228
|
-
let stype = (proto.entityType || proto.complexType);
|
|
229
|
-
let es5Descriptors = {};
|
|
230
|
-
stype.getProperties().forEach(function (prop) {
|
|
231
|
-
let propDescr = getES5PropDescriptor(proto, prop.name);
|
|
232
|
-
if (propDescr) {
|
|
233
|
-
es5Descriptors[prop.name] = propDescr;
|
|
234
|
-
}
|
|
235
|
-
});
|
|
236
|
-
if (!core.isEmpty(es5Descriptors)) {
|
|
237
|
-
let extra = stype._extra;
|
|
238
|
-
extra.es5Descriptors = es5Descriptors;
|
|
239
|
-
stype._koDummy = ko.observable(null);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
* Generated bundle index. Do not edit.
|
|
245
|
-
*/
|
|
246
|
-
|
|
247
|
-
export { ModelLibraryKnockoutAdapter };
|
|
248
|
-
//# sourceMappingURL=breeze-client-adapter-model-library-ko.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"breeze-client-adapter-model-library-ko.mjs","sources":["../../src/adapter-model-library-ko.ts","../../src/breeze-client-adapter-model-library-ko.ts"],"sourcesContent":["import * as breeze from 'breeze-client';\r\n\r\nlet core = breeze.core;\r\n\r\nlet canIsolateES5Props = core.isES5Supported;\r\nlet ko: any;\r\n\r\nexport class ModelLibraryKnockoutAdapter implements breeze.ModelLibraryAdapter {\r\n name: string;\r\n constructor() {\r\n this.name = \"ko\";\r\n }\r\n\r\n static register(config?: breeze.BreezeConfig) {\r\n config = config || breeze.config;\r\n config.registerAdapter(\"modelLibrary\", ModelLibraryKnockoutAdapter);\r\n return config.initializeAdapterInstance(\"modelLibrary\", \"ko\", true) as ModelLibraryKnockoutAdapter;\r\n }\r\n\r\n initialize() {\r\n ko = core.requireLib(\"ko;knockout\", \"The Knockout library\");\r\n ko.extenders.intercept = function (target: any, interceptorOptions: any) {\r\n let instance = interceptorOptions.instance;\r\n let property = interceptorOptions.property;\r\n\r\n // create a computed observable to intercept writes to our observable\r\n let result: any;\r\n if (target.splice) {\r\n result = ko.computed({\r\n read: target //always return the original observables value\r\n });\r\n } else {\r\n result = ko.computed({\r\n read: target, //always return the original observables value\r\n write: function (newValue: any) {\r\n instance._$interceptor(property, newValue, target);\r\n return instance;\r\n }\r\n });\r\n }\r\n //return the new computed observable\r\n return result;\r\n };\r\n\r\n }\r\n\r\n getTrackablePropertyNames(entity: any) {\r\n let names: string[] = [];\r\n for (let p in entity) {\r\n if (p === \"entityType\") continue;\r\n if (p === \"_$typeName\") continue;\r\n\r\n let propDescr = getES5PropDescriptor(entity, p);\r\n if (propDescr && propDescr.get) {\r\n names.push(p);\r\n } else {\r\n let val = entity[p];\r\n if (ko.isObservable(val)) {\r\n names.push(p);\r\n } else if (!core.isFunction(val)) {\r\n names.push(p);\r\n }\r\n }\r\n }\r\n return names;\r\n }\r\n\r\n initializeEntityPrototype(proto: any) {\r\n\r\n proto.getProperty = function (propertyName: string) {\r\n return this[propertyName]();\r\n };\r\n\r\n proto.setProperty = function (propertyName: string, value: any) {\r\n this[propertyName](value);\r\n // allow set property chaining.\r\n return this;\r\n };\r\n\r\n if (canIsolateES5Props) {\r\n isolateES5Props(proto);\r\n }\r\n\r\n }\r\n\r\n startTracking(entity: any, proto: any) {\r\n // create ko's for each property and assign defaultValues\r\n\r\n let stype = (entity.entityType || entity.complexType) as breeze.StructuralType;\r\n let es5Descriptors = stype._extra.es5Descriptors || {};\r\n\r\n // sort unmapped properties to the end\r\n stype.getProperties().sort(function (p1, p2) {\r\n let v1 = p1.isUnmapped ? 1 : 0;\r\n let v2 = p2.isUnmapped ? 1 : 0;\r\n return v1 - v2;\r\n }).forEach(function (prop) {\r\n let propName = prop.name;\r\n let val = entity[propName];\r\n let propDescr = es5Descriptors[propName];\r\n let koObj: any;\r\n\r\n // check if property is an ES5 property\r\n if (propDescr) {\r\n let getFn = propDescr.get.bind(entity);\r\n if (propDescr.set) {\r\n let setFn = propDescr.set.bind(entity);\r\n let rawAccessorFn = function (newValue: any) {\r\n if (arguments.length === 0) {\r\n getFn();\r\n return;\r\n } else {\r\n setFn(newValue);\r\n }\r\n };\r\n koObj = ko.computed({\r\n read: function () {\r\n (stype as any)._koDummy();\r\n return getFn();\r\n },\r\n write: function (newValue: any) {\r\n entity._$interceptor(prop, newValue, rawAccessorFn);\r\n (stype as any)._koDummy.valueHasMutated();\r\n return entity;\r\n }\r\n });\r\n } else {\r\n koObj = ko.computed({\r\n read: getFn,\r\n write: function () {\r\n }\r\n\r\n });\r\n }\r\n // check if property is already exposed as a ko object\r\n } else if (ko.isObservable(val)) {\r\n if (prop.isNavigationProperty) {\r\n throw new Error(\"Cannot assign a navigation property in an entity ctor.: \" + propName);\r\n }\r\n koObj = val;\r\n // otherwise\r\n } else {\r\n val = initializeValueForProp(entity, prop, val);\r\n koObj = prop.isScalar ? ko.observable(val) : ko.observableArray(val);\r\n }\r\n\r\n\r\n if (prop.isScalar) {\r\n if (propDescr) {\r\n Object.defineProperty(entity, propName, {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: koObj\r\n });\r\n } else {\r\n let koExt = koObj.extend({ intercept: { instance: entity, property: prop } });\r\n entity[propName] = koExt;\r\n }\r\n } else {\r\n val._koObj = koObj;\r\n // code to suppress extra breeze notification when\r\n // ko's array methods are called.\r\n koObj.subscribe(onBeforeChange, null, \"beforeChange\");\r\n // code to insure that any direct breeze changes notify ko\r\n val.arrayChanged.subscribe(onArrayChanged);\r\n\r\n koObj.equalityComparer = function () {\r\n throw new Error(\"Collection navigation properties may NOT be set.\");\r\n };\r\n entity[propName] = koObj;\r\n }\r\n\r\n });\r\n\r\n }\r\n}\r\n\r\nbreeze.config.registerAdapter(\"modelLibrary\", ModelLibraryKnockoutAdapter);\r\n\r\n\r\n// private fns\r\n\r\nfunction getES5PropDescriptor(proto: any, propName: string): any {\r\n if (!canIsolateES5Props) {\r\n return null;\r\n }\r\n if (proto.hasOwnProperty(propName)) {\r\n return Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(proto, propName);\r\n } else {\r\n let nextProto = Object.getPrototypeOf(proto);\r\n return nextProto ? getES5PropDescriptor(nextProto, propName) : null;\r\n }\r\n}\r\n\r\nfunction initializeValueForProp(entity: any, prop: breeze.EntityProperty, val: any) {\r\n if (prop instanceof breeze.DataProperty) {\r\n if (prop.isComplexProperty) {\r\n // TODO: right now we create Empty complexObjects here - these should actually come from the entity\r\n if (prop.isScalar) {\r\n val = (prop.dataType as breeze.ComplexType)._createInstanceCore(entity, prop);\r\n } else {\r\n val = breeze.makeComplexArray([], entity, prop);\r\n }\r\n } else if (!prop.isScalar) {\r\n val = breeze.makePrimitiveArray([], entity, prop);\r\n } else if (val === undefined) {\r\n val = prop.defaultValue;\r\n }\r\n\r\n } else if (prop instanceof breeze.NavigationProperty) {\r\n if (val !== undefined) {\r\n throw new Error(\"Cannot assign a navigation property in an entity ctor.: \" + prop.name);\r\n }\r\n if (prop.isScalar) {\r\n // TODO: change this to nullEntity later.\r\n val = null;\r\n } else {\r\n val = breeze.makeRelationArray([], entity, prop);\r\n }\r\n } else {\r\n throw new Error(\"unknown property: \" + (prop as any).name);\r\n }\r\n return val;\r\n}\r\n\r\n\r\nfunction onBeforeChange(args: any) {\r\n args._koObj._suppressBreeze = true;\r\n}\r\n\r\nfunction onArrayChanged(args: any) {\r\n let koObj = args.array._koObj;\r\n if (koObj._suppressBreeze) {\r\n koObj._suppressBreeze = false;\r\n } else {\r\n koObj.valueHasMutated();\r\n }\r\n}\r\n\r\nfunction isolateES5Props(proto: any) {\r\n let stype = (proto.entityType || proto.complexType) as breeze.StructuralType;\r\n let es5Descriptors = {};\r\n stype.getProperties().forEach(function (prop) {\r\n let propDescr = getES5PropDescriptor(proto, prop.name);\r\n if (propDescr) {\r\n es5Descriptors[prop.name] = propDescr;\r\n }\r\n });\r\n if (!core.isEmpty(es5Descriptors)) {\r\n let extra = stype._extra;\r\n extra.es5Descriptors = es5Descriptors;\r\n (stype as any)._koDummy = ko.observable(null);\r\n }\r\n}\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './adapter-model-library-ko';\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"breeze-client-adapter-uri-builder-json.mjs","sources":["../../src/adapter-core.ts","../../src/adapter-uri-builder-json.ts","../../src/breeze-client-adapter-uri-builder-json.ts"],"sourcesContent":["/** Appends parameter to url, with appropriate delimiter */\r\nexport function appendQueryStringParameter(url: string, parameter: string) {\r\n if (!parameter) return url;\r\n\r\n let separator = url.endsWith(\"?\") ? \"\" : url.includes(\"?\") ? \"&\" : \"?\";\r\n\r\n return url + separator + parameter;\r\n}\r\n\r\n/** Encodes the object into query string parameters */\r\nexport function encodeParams(obj: {}) {\r\n let query = '';\r\n let subValue: any, innerObj: any, fullSubName: any;\r\n\r\n for (let name in obj) {\r\n if (!obj.hasOwnProperty(name)) { continue; }\r\n\r\n let value = obj[name];\r\n\r\n if (value instanceof Array) {\r\n for (let i = 0; i < value.length; ++i) {\r\n subValue = value[i];\r\n fullSubName = name + '[' + i + ']';\r\n innerObj = {};\r\n innerObj[fullSubName] = subValue;\r\n query += encodeParams(innerObj) + '&';\r\n }\r\n } else if (value && value.toISOString) { // a feature of Date-like things\r\n query += encodeURIComponent(name) + '=' + encodeURIComponent(value.toISOString()) + '&';\r\n } else if (value instanceof Object) {\r\n for (let subName in value) {\r\n if (obj.hasOwnProperty(name)) {\r\n subValue = value[subName];\r\n fullSubName = name + '[' + subName + ']';\r\n innerObj = {};\r\n innerObj[fullSubName] = subValue;\r\n query += encodeParams(innerObj) + '&';\r\n }\r\n }\r\n } else if (value === null) {\r\n query += encodeURIComponent(name) + '=&';\r\n } else if (value !== undefined) {\r\n query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';\r\n }\r\n }\r\n\r\n return query.length ? query.substr(0, query.length - 1) : query;\r\n}\r\n","import * as breeze from 'breeze-client';\r\nimport { appendQueryStringParameter } from './adapter-core';\r\n\r\nexport class UriBuilderJsonAdapter implements breeze.UriBuilderAdapter {\r\n name: string;\r\n\r\n constructor() {\r\n this.name = \"json\";\r\n }\r\n\r\n static register(config?: breeze.BreezeConfig) {\r\n config = config || breeze.config;\r\n config.registerAdapter(\"uriBuilder\", UriBuilderJsonAdapter);\r\n return config.initializeAdapterInstance(\"uriBuilder\", \"json\", true) as UriBuilderJsonAdapter;\r\n }\r\n\r\n initialize() {}\r\n\r\n buildUri(entityQuery: breeze.EntityQuery, metadataStore: breeze.MetadataStore) {\r\n // force entityType validation;\r\n let entityType = entityQuery._getFromEntityType(metadataStore, false);\r\n if (!entityType) entityType = new breeze.EntityType(metadataStore);\r\n let json = entityQuery.toJSONExt( { entityType: entityType, toNameOnServer: true}) as any;\r\n json.from = undefined;\r\n json.queryOptions = undefined;\r\n if (json.parameters && json.parameters.$data) {\r\n // remove parameters if doing ajax post\r\n json.parameters = undefined;\r\n }\r\n\r\n let jsonString = JSON.stringify(json);\r\n if (jsonString.length > 2) {\r\n let urlBody = encodeURIComponent(jsonString);\r\n return appendQueryStringParameter(entityQuery.resourceName, urlBody);\r\n } else {\r\n return entityQuery.resourceName;\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\nbreeze.config.registerAdapter(\"uriBuilder\", UriBuilderJsonAdapter);\r\n\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './adapter-uri-builder-json';\n"],"names":[],"mappings":"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"}
|