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,83 +1,81 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Functions to enable Breeze to use POST for queries when
|
|
3
|
-
* special parameters are passed using the .withParameters function.
|
|
4
|
-
*
|
|
5
|
-
* Copyright 2015-
|
|
6
|
-
* Use, reproduction, distribution, and modification of this code is subject to the terms and
|
|
7
|
-
* conditions of the IdeaBlade Breeze license, available at http://www.breezejs.com/license
|
|
8
|
-
*
|
|
9
|
-
* Author: Steve Schmitt
|
|
10
|
-
* Version:
|
|
11
|
-
* 1.2.0 - Moved into breeze-client repo and npm package
|
|
12
|
-
* 1.1.0 - revised: eliminated return object, configAjaxAdapter method; add ajaxPostEnabled flag
|
|
13
|
-
* 1.0.6 - original
|
|
14
|
-
*
|
|
15
|
-
* Special parameters:
|
|
16
|
-
* $method: ‘POST’ or ‘GET’ (the default)
|
|
17
|
-
* $encoding: ‘JSON’ or x-www-form-urlencoded (the default)
|
|
18
|
-
* $data: contains the data to be sent to the server
|
|
19
|
-
*
|
|
20
|
-
* Installation:
|
|
21
|
-
*
|
|
22
|
-
* AjaxPostWrapper.wrapAjax(ajaxAdapter);
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return; // already wrapped it.
|
|
37
|
-
}
|
|
38
|
-
let ajaxFunction = ajaxAdapter.ajax;
|
|
39
|
-
if (ajaxFunction) {
|
|
40
|
-
ajaxAdapter.ajax = function (settings) {
|
|
41
|
-
processSettings(settings);
|
|
42
|
-
return ajaxFunction.call(ajaxAdapter, settings);
|
|
43
|
-
};
|
|
44
|
-
ajaxAdapter.ajaxPostEnabled = true;
|
|
45
|
-
}
|
|
46
|
-
// Handle the POST-specific properties in the settings - $method, $data, $encoding
|
|
47
|
-
function processSettings(settings) {
|
|
48
|
-
let parameters = settings && settings.params;
|
|
49
|
-
if (!parameters)
|
|
50
|
-
return settings;
|
|
51
|
-
// wrapped data; handle the special properties
|
|
52
|
-
settings.type = parameters.$method || settings.type; // GET is default method
|
|
53
|
-
let data = parameters.$data;
|
|
54
|
-
if (data) {
|
|
55
|
-
// if $data exists, assume all of other parameters are guidance for building a POST
|
|
56
|
-
if (parameters.$encoding === 'JSON') {
|
|
57
|
-
// JSON encoding
|
|
58
|
-
settings.processData = false; // don't let JQuery form-encode it
|
|
59
|
-
settings.contentType = "application/json; charset=UTF-8";
|
|
60
|
-
if (typeof (data) === 'object') {
|
|
61
|
-
settings.data = JSON.stringify(data); // encode parameters as JSON
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
settings.data = data;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
settings.data = data;
|
|
69
|
-
}
|
|
70
|
-
// must be null or jQuery ajax adapter won't see settings.data
|
|
71
|
-
settings.params = null;
|
|
72
|
-
}
|
|
73
|
-
return settings;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Generated bundle index. Do not edit.
|
|
1
|
+
/**
|
|
2
|
+
* Functions to enable Breeze to use POST for queries when
|
|
3
|
+
* special parameters are passed using the .withParameters function.
|
|
4
|
+
*
|
|
5
|
+
* Copyright 2015-2026 IdeaBlade, Inc. All Rights Reserved.
|
|
6
|
+
* Use, reproduction, distribution, and modification of this code is subject to the terms and
|
|
7
|
+
* conditions of the IdeaBlade Breeze license, available at http://www.breezejs.com/license
|
|
8
|
+
*
|
|
9
|
+
* Author: Steve Schmitt
|
|
10
|
+
* Version:
|
|
11
|
+
* 1.2.0 - Moved into breeze-client repo and npm package
|
|
12
|
+
* 1.1.0 - revised: eliminated return object, configAjaxAdapter method; add ajaxPostEnabled flag
|
|
13
|
+
* 1.0.6 - original
|
|
14
|
+
*
|
|
15
|
+
* Special parameters:
|
|
16
|
+
* $method: ‘POST’ or ‘GET’ (the default)
|
|
17
|
+
* $encoding: ‘JSON’ or x-www-form-urlencoded (the default)
|
|
18
|
+
* $data: contains the data to be sent to the server
|
|
19
|
+
*
|
|
20
|
+
* Installation:
|
|
21
|
+
* const ajaxAdapter = config.getAdapterInstance<AjaxAdapter>('ajax');
|
|
22
|
+
* AjaxPostWrapper.wrapAjax(ajaxAdapter);
|
|
23
|
+
*
|
|
24
|
+
* Breeze 3 needs no ajax adapter, so there is one to wrap only if you registered one with
|
|
25
|
+
* configureBreeze({ ajax: MyAdapter }). Otherwise wrap your own fetch function instead.
|
|
26
|
+
*
|
|
27
|
+
* Example:
|
|
28
|
+
* const query = EntityQuery.from('SimilarCustomersPOST')
|
|
29
|
+
* .toType(Customer)
|
|
30
|
+
* .withParameters({
|
|
31
|
+
* $method: 'POST',
|
|
32
|
+
* $encoding: 'JSON',
|
|
33
|
+
* $data: { companyName: 'Hilo Hattie', contactName: 'Donald', city: 'Duck', country: 'USA', phone: '808-234-5678' }
|
|
34
|
+
* });
|
|
35
|
+
*
|
|
80
36
|
*/
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
37
|
+
export class AjaxPostWrapper {
|
|
38
|
+
static wrapAjax(ajaxAdapter) {
|
|
39
|
+
if (ajaxAdapter.ajaxPostEnabled) {
|
|
40
|
+
return; // already wrapped it.
|
|
41
|
+
}
|
|
42
|
+
let ajaxFunction = ajaxAdapter.ajax;
|
|
43
|
+
if (ajaxFunction) {
|
|
44
|
+
ajaxAdapter.ajax = function (settings) {
|
|
45
|
+
processSettings(settings);
|
|
46
|
+
return ajaxFunction.call(ajaxAdapter, settings);
|
|
47
|
+
};
|
|
48
|
+
ajaxAdapter.ajaxPostEnabled = true;
|
|
49
|
+
}
|
|
50
|
+
// Handle the POST-specific properties in the settings - $method, $data, $encoding
|
|
51
|
+
function processSettings(settings) {
|
|
52
|
+
let parameters = settings && settings.params;
|
|
53
|
+
if (!parameters)
|
|
54
|
+
return settings;
|
|
55
|
+
// wrapped data; handle the special properties
|
|
56
|
+
settings.type = parameters.$method || settings.type; // GET is default method
|
|
57
|
+
let data = parameters.$data;
|
|
58
|
+
if (data) {
|
|
59
|
+
// if $data exists, assume all of other parameters are guidance for building a POST
|
|
60
|
+
if (parameters.$encoding === 'JSON') {
|
|
61
|
+
// JSON encoding
|
|
62
|
+
settings.processData = false; // don't form-encode the body
|
|
63
|
+
settings.contentType = "application/json; charset=UTF-8";
|
|
64
|
+
if (typeof (data) === 'object') {
|
|
65
|
+
settings.data = JSON.stringify(data); // encode parameters as JSON
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
settings.data = data;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
settings.data = data;
|
|
73
|
+
}
|
|
74
|
+
// must be null or the ajax adapter won't see settings.data
|
|
75
|
+
settings.params = null;
|
|
76
|
+
}
|
|
77
|
+
return settings;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=adapter-ajax-post.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-ajax-post.js","sourceRoot":"","sources":["../../src/adapters/adapter-ajax-post.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,OAAO,eAAe;IAE1B,MAAM,CAAC,QAAQ,CAAC,WAA+B;QAE7C,IAAK,WAAmB,CAAC,eAAe,EAAE,CAAC;YACzC,OAAO,CAAC,sBAAsB;QAChC,CAAC;QAED,IAAI,YAAY,GAAG,WAAW,CAAC,IAAI,CAAC;QACpC,IAAI,YAAY,EAAE,CAAC;YACjB,WAAW,CAAC,IAAI,GAAG,UAAU,QAAQ;gBACnC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAC1B,OAAO,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAClD,CAAC,CAAC;YACD,WAAmB,CAAC,eAAe,GAAG,IAAI,CAAC;QAC9C,CAAC;QAGD,kFAAkF;QAClF,SAAS,eAAe,CAAC,QAAa;YACpC,IAAI,UAAU,GAAG,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC;YAC7C,IAAI,CAAC,UAAU;gBAAE,OAAO,QAAQ,CAAC;YAEjC,8CAA8C;YAC9C,QAAQ,CAAC,IAAI,GAAG,UAAU,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,wBAAwB;YAE7E,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC;YAC5B,IAAI,IAAI,EAAE,CAAC;gBACT,mFAAmF;gBACnF,IAAI,UAAU,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;oBACpC,gBAAgB;oBAChB,QAAQ,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,6BAA6B;oBAC3D,QAAQ,CAAC,WAAW,GAAG,iCAAiC,CAAC;oBAEzD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;wBAC/B,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,4BAA4B;oBACpE,CAAC;yBAAM,CAAC;wBACN,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;oBACvB,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;gBACvB,CAAC;gBACD,2DAA2D;gBAC3D,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC;YACzB,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;CAGF","sourcesContent":["import * as breeze from '../breeze.js';\r\n\r\n/**\r\n * Functions to enable Breeze to use POST for queries when\r\n * special parameters are passed using the .withParameters function.\r\n *\r\n * Copyright 2015-2026 IdeaBlade, Inc. All Rights Reserved.\r\n * Use, reproduction, distribution, and modification of this code is subject to the terms and\r\n * conditions of the IdeaBlade Breeze license, available at http://www.breezejs.com/license\r\n *\r\n * Author: Steve Schmitt\r\n * Version: \r\n * 1.2.0 - Moved into breeze-client repo and npm package\r\n * 1.1.0 - revised: eliminated return object, configAjaxAdapter method; add ajaxPostEnabled flag\r\n * 1.0.6 - original\r\n *\r\n * Special parameters:\r\n * $method: ‘POST’ or ‘GET’ (the default)\r\n * $encoding: ‘JSON’ or x-www-form-urlencoded (the default)\r\n * $data: contains the data to be sent to the server\r\n *\r\n * Installation:\r\n * const ajaxAdapter = config.getAdapterInstance<AjaxAdapter>('ajax');\r\n * AjaxPostWrapper.wrapAjax(ajaxAdapter);\r\n *\r\n * Breeze 3 needs no ajax adapter, so there is one to wrap only if you registered one with\r\n * configureBreeze({ ajax: MyAdapter }). Otherwise wrap your own fetch function instead.\r\n *\r\n * Example:\r\n * const query = EntityQuery.from('SimilarCustomersPOST')\r\n * .toType(Customer)\r\n * .withParameters({\r\n * $method: 'POST',\r\n * $encoding: 'JSON',\r\n * $data: { companyName: 'Hilo Hattie', contactName: 'Donald', city: 'Duck', country: 'USA', phone: '808-234-5678' }\r\n * });\r\n *\r\n */\r\nexport class AjaxPostWrapper {\r\n\r\n static wrapAjax(ajaxAdapter: breeze.AjaxAdapter) {\r\n\r\n if ((ajaxAdapter as any).ajaxPostEnabled) {\r\n return; // already wrapped it.\r\n }\r\n\r\n let ajaxFunction = ajaxAdapter.ajax;\r\n if (ajaxFunction) {\r\n ajaxAdapter.ajax = function (settings) {\r\n processSettings(settings);\r\n return ajaxFunction.call(ajaxAdapter, settings);\r\n };\r\n (ajaxAdapter as any).ajaxPostEnabled = true;\r\n }\r\n\r\n\r\n // Handle the POST-specific properties in the settings - $method, $data, $encoding\r\n function processSettings(settings: any) {\r\n let parameters = settings && settings.params;\r\n if (!parameters) return settings;\r\n\r\n // wrapped data; handle the special properties\r\n settings.type = parameters.$method || settings.type; // GET is default method\r\n\r\n let data = parameters.$data;\r\n if (data) {\r\n // if $data exists, assume all of other parameters are guidance for building a POST\r\n if (parameters.$encoding === 'JSON') {\r\n // JSON encoding\r\n settings.processData = false; // don't form-encode the body\r\n settings.contentType = \"application/json; charset=UTF-8\";\r\n\r\n if (typeof (data) === 'object') {\r\n settings.data = JSON.stringify(data); // encode parameters as JSON\r\n } else {\r\n settings.data = data;\r\n }\r\n } else {\r\n settings.data = data;\r\n }\r\n // must be null or the ajax adapter won't see settings.data\r\n settings.params = null;\r\n }\r\n\r\n return settings;\r\n }\r\n }\r\n\r\n\r\n}"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** Appends parameter to url, with appropriate delimiter */
|
|
2
|
-
export declare function appendQueryStringParameter(url: string, parameter: string): string;
|
|
3
|
-
/** Encodes the object into query string parameters */
|
|
4
|
-
export declare function encodeParams(obj: {}): string;
|
|
1
|
+
/** Appends parameter to url, with appropriate delimiter */
|
|
2
|
+
export declare function appendQueryStringParameter(url: string, parameter: string): string;
|
|
3
|
+
/** Encodes the object into query string parameters */
|
|
4
|
+
export declare function encodeParams(obj: {}): string;
|
|
@@ -1,92 +1,49 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
let separator = url.endsWith("?") ? "" : url.includes("?") ? "&" : "?";
|
|
8
|
-
return url + separator + parameter;
|
|
9
|
-
}
|
|
10
|
-
/** Encodes the object into query string parameters */
|
|
11
|
-
function encodeParams(obj) {
|
|
12
|
-
let query = '';
|
|
13
|
-
let subValue, innerObj, fullSubName;
|
|
14
|
-
for (let name in obj) {
|
|
15
|
-
if (!obj.hasOwnProperty(name)) {
|
|
16
|
-
continue;
|
|
17
|
-
}
|
|
18
|
-
let value = obj[name];
|
|
19
|
-
if (value instanceof Array) {
|
|
20
|
-
for (let i = 0; i < value.length; ++i) {
|
|
21
|
-
subValue = value[i];
|
|
22
|
-
fullSubName = name + '[' + i + ']';
|
|
23
|
-
innerObj = {};
|
|
24
|
-
innerObj[fullSubName] = subValue;
|
|
25
|
-
query += encodeParams(innerObj) + '&';
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
else if (value && value.toISOString) { // a feature of Date-like things
|
|
29
|
-
query += encodeURIComponent(name) + '=' + encodeURIComponent(value.toISOString()) + '&';
|
|
30
|
-
}
|
|
31
|
-
else if (value instanceof Object) {
|
|
32
|
-
for (let subName in value) {
|
|
33
|
-
if (obj.hasOwnProperty(name)) {
|
|
34
|
-
subValue = value[subName];
|
|
35
|
-
fullSubName = name + '[' + subName + ']';
|
|
36
|
-
innerObj = {};
|
|
37
|
-
innerObj[fullSubName] = subValue;
|
|
38
|
-
query += encodeParams(innerObj) + '&';
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
else if (value === null) {
|
|
43
|
-
query += encodeURIComponent(name) + '=&';
|
|
44
|
-
}
|
|
45
|
-
else if (value !== undefined) {
|
|
46
|
-
query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return query.length ? query.substr(0, query.length - 1) : query;
|
|
1
|
+
/** Appends parameter to url, with appropriate delimiter */
|
|
2
|
+
export function appendQueryStringParameter(url, parameter) {
|
|
3
|
+
if (!parameter)
|
|
4
|
+
return url;
|
|
5
|
+
let separator = url.endsWith("?") ? "" : url.includes("?") ? "&" : "?";
|
|
6
|
+
return url + separator + parameter;
|
|
50
7
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
//# sourceMappingURL=
|
|
8
|
+
/** Encodes the object into query string parameters */
|
|
9
|
+
export function encodeParams(obj) {
|
|
10
|
+
let query = '';
|
|
11
|
+
let subValue, innerObj, fullSubName;
|
|
12
|
+
for (let name in obj) {
|
|
13
|
+
if (!obj.hasOwnProperty(name)) {
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
let value = obj[name];
|
|
17
|
+
if (value instanceof Array) {
|
|
18
|
+
for (let i = 0; i < value.length; ++i) {
|
|
19
|
+
subValue = value[i];
|
|
20
|
+
fullSubName = name + '[' + i + ']';
|
|
21
|
+
innerObj = {};
|
|
22
|
+
innerObj[fullSubName] = subValue;
|
|
23
|
+
query += encodeParams(innerObj) + '&';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
else if (value && value.toISOString) { // a feature of Date-like things
|
|
27
|
+
query += encodeURIComponent(name) + '=' + encodeURIComponent(value.toISOString()) + '&';
|
|
28
|
+
}
|
|
29
|
+
else if (value instanceof Object) {
|
|
30
|
+
for (let subName in value) {
|
|
31
|
+
if (obj.hasOwnProperty(name)) {
|
|
32
|
+
subValue = value[subName];
|
|
33
|
+
fullSubName = name + '[' + subName + ']';
|
|
34
|
+
innerObj = {};
|
|
35
|
+
innerObj[fullSubName] = subValue;
|
|
36
|
+
query += encodeParams(innerObj) + '&';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
else if (value === null) {
|
|
41
|
+
query += encodeURIComponent(name) + '=&';
|
|
42
|
+
}
|
|
43
|
+
else if (value !== undefined) {
|
|
44
|
+
query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return query.length ? query.substr(0, query.length - 1) : query;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=adapter-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-core.js","sourceRoot":"","sources":["../../src/adapters/adapter-core.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,MAAM,UAAU,0BAA0B,CAAC,GAAW,EAAE,SAAiB;IACvE,IAAI,CAAC,SAAS;QAAE,OAAO,GAAG,CAAC;IAE3B,IAAI,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAEvE,OAAO,GAAG,GAAG,SAAS,GAAG,SAAS,CAAC;AACrC,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,YAAY,CAAC,GAAO;IAClC,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,IAAI,QAAa,EAAE,QAAa,EAAE,WAAgB,CAAC;IAEnD,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,SAAS;QAAC,CAAC;QAE5C,IAAI,KAAK,GAAI,GAA2B,CAAC,IAAI,CAAC,CAAC;QAE/C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;gBACtC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACpB,WAAW,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;gBACnC,QAAQ,GAAG,EAAE,CAAC;gBACd,QAAQ,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;gBACjC,KAAK,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;YACxC,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,gCAAgC;YACvE,KAAK,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,GAAG,CAAC;QAC1F,CAAC;aAAM,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;YACnC,KAAK,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;gBAC1B,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC7B,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;oBAC1B,WAAW,GAAG,IAAI,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC;oBACzC,QAAQ,GAAG,EAAE,CAAC;oBACd,QAAQ,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;oBACjC,KAAK,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;gBACxC,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1B,KAAK,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QAC3C,CAAC;aAAM,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC/B,KAAK,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAClE,CAAC","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 as Record<string, any>)[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"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AbstractDataServiceAdapter } from './abstract-data-service-adapter.js';
|
|
2
|
+
import { BreezeConfig } from '../config/config.js';
|
|
3
|
+
import { JsonResultsAdapter } from '../metadata/data-service.js';
|
|
4
|
+
/** @hidden */
|
|
5
|
+
export declare class DataServiceWebApiAdapter extends AbstractDataServiceAdapter {
|
|
6
|
+
constructor();
|
|
7
|
+
static register(config?: BreezeConfig): DataServiceWebApiAdapter;
|
|
8
|
+
jsonResultsAdapter: JsonResultsAdapter;
|
|
9
|
+
}
|
|
@@ -1,107 +1,105 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
let
|
|
20
|
-
let
|
|
21
|
-
let
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
let
|
|
52
|
-
let
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
let
|
|
83
|
-
let
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
export { DataServiceWebApiAdapter };
|
|
107
|
-
//# sourceMappingURL=breeze-client-adapter-data-service-webapi.mjs.map
|
|
1
|
+
import { AbstractDataServiceAdapter } from './abstract-data-service-adapter.js';
|
|
2
|
+
import { config as globalConfig } from '../config/config.js';
|
|
3
|
+
import { AutoGeneratedKeyType, MetadataStore } from '../metadata/entity-metadata.js';
|
|
4
|
+
import { JsonResultsAdapter } from '../metadata/data-service.js';
|
|
5
|
+
import { DataType } from '../metadata/data-type.js';
|
|
6
|
+
/** @hidden */
|
|
7
|
+
export class DataServiceWebApiAdapter extends AbstractDataServiceAdapter {
|
|
8
|
+
constructor() {
|
|
9
|
+
super();
|
|
10
|
+
this.name = "webApi";
|
|
11
|
+
}
|
|
12
|
+
static register(config) {
|
|
13
|
+
config = config || globalConfig;
|
|
14
|
+
config.registerAdapter("dataService", DataServiceWebApiAdapter);
|
|
15
|
+
return config.initializeAdapterInstance("dataService", "webApi", true);
|
|
16
|
+
}
|
|
17
|
+
/** @hidden @internal */
|
|
18
|
+
_prepareSaveBundle(saveContext, saveBundle) {
|
|
19
|
+
let changeRequestInterceptor = this._createChangeRequestInterceptor(saveContext, saveBundle);
|
|
20
|
+
let em = saveContext.entityManager;
|
|
21
|
+
let metadataStore = em.metadataStore;
|
|
22
|
+
let helper = em.helper;
|
|
23
|
+
let serSaveBundle = {};
|
|
24
|
+
serSaveBundle.entities = saveBundle.entities.map(function (e, ix) {
|
|
25
|
+
let rawEntity = helper.unwrapInstance(e, transformValue);
|
|
26
|
+
let autoGeneratedKey;
|
|
27
|
+
if (e.entityType.autoGeneratedKeyType !== AutoGeneratedKeyType.None) {
|
|
28
|
+
autoGeneratedKey = {
|
|
29
|
+
propertyName: e.entityType.keyProperties[0].nameOnServer,
|
|
30
|
+
autoGeneratedKeyType: e.entityType.autoGeneratedKeyType.name
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
let originalValuesOnServer = helper.unwrapOriginalValues(e, metadataStore);
|
|
34
|
+
rawEntity.entityAspect = {
|
|
35
|
+
entityTypeName: e.entityType.name,
|
|
36
|
+
defaultResourceName: e.entityType.defaultResourceName,
|
|
37
|
+
entityState: e.entityAspect.entityState.name,
|
|
38
|
+
originalValuesMap: originalValuesOnServer,
|
|
39
|
+
autoGeneratedKey: autoGeneratedKey
|
|
40
|
+
};
|
|
41
|
+
rawEntity = changeRequestInterceptor.getRequest(rawEntity, e, ix);
|
|
42
|
+
return rawEntity;
|
|
43
|
+
});
|
|
44
|
+
serSaveBundle.saveOptions = { tag: saveBundle.saveOptions.tag };
|
|
45
|
+
changeRequestInterceptor.done(serSaveBundle.entities);
|
|
46
|
+
return serSaveBundle;
|
|
47
|
+
}
|
|
48
|
+
/** @hidden @internal */
|
|
49
|
+
_prepareSaveResult(saveContext, data) {
|
|
50
|
+
// use the jsonResultAdapter to extractResults and extractKeyMappings
|
|
51
|
+
let jra = saveContext.dataService.jsonResultsAdapter || this.jsonResultsAdapter;
|
|
52
|
+
let entities = jra.extractSaveResults(data) || [];
|
|
53
|
+
let keyMappings = jra.extractKeyMappings(data) || [];
|
|
54
|
+
let deletedKeys = jra.extractDeletedKeys ? (jra.extractDeletedKeys(data)) || [] : [];
|
|
55
|
+
if (keyMappings.length) {
|
|
56
|
+
// HACK: need to change the 'case' of properties in the saveResult
|
|
57
|
+
// but KeyMapping properties internally are still ucase. ugh...
|
|
58
|
+
keyMappings = keyMappings.map(function (km) {
|
|
59
|
+
if (km.entityTypeName)
|
|
60
|
+
return km; // it's already lower case
|
|
61
|
+
let kmHack = km;
|
|
62
|
+
let entityTypeName = MetadataStore.normalizeTypeName(kmHack.EntityTypeName);
|
|
63
|
+
return { entityTypeName: entityTypeName, tempValue: kmHack.TempValue, realValue: kmHack.RealValue };
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
if (deletedKeys.length) {
|
|
67
|
+
deletedKeys = deletedKeys.map(function (dk) {
|
|
68
|
+
if (dk.entityTypeName)
|
|
69
|
+
return dk; // it's already lower case
|
|
70
|
+
let entityTypeName = MetadataStore.normalizeTypeName(dk.EntityTypeName);
|
|
71
|
+
// NOTE the dk.KeyValue => keyValues transition - needed because we are deserializing an .NET EntityKey
|
|
72
|
+
return { entityTypeName: entityTypeName, keyValues: dk.KeyValue };
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return { entities: entities, keyMappings: keyMappings, deletedKeys: deletedKeys };
|
|
76
|
+
}
|
|
77
|
+
jsonResultsAdapter = new JsonResultsAdapter({
|
|
78
|
+
name: "webApi_default",
|
|
79
|
+
visitNode: function (node, mappingContext, nodeContext) {
|
|
80
|
+
if (node == null)
|
|
81
|
+
return {};
|
|
82
|
+
let entityTypeName = MetadataStore.normalizeTypeName(node.$type);
|
|
83
|
+
let entityType = entityTypeName && mappingContext.entityManager.metadataStore._getStructuralType(entityTypeName, true);
|
|
84
|
+
let propertyName = nodeContext.propertyName;
|
|
85
|
+
let ignore = propertyName && propertyName.substr(0, 1) === "$";
|
|
86
|
+
return {
|
|
87
|
+
entityType: entityType,
|
|
88
|
+
nodeId: node.$id,
|
|
89
|
+
nodeRefId: node.$ref,
|
|
90
|
+
ignore: ignore
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/** Transform data properties while unwrapping entities before save */
|
|
96
|
+
function transformValue(prop, val) {
|
|
97
|
+
if (prop.dataType === DataType.DateOnly) {
|
|
98
|
+
val = DataType.toDateOnlyString(val);
|
|
99
|
+
}
|
|
100
|
+
return val;
|
|
101
|
+
}
|
|
102
|
+
// NOTE: this module deliberately does NOT register itself on import.
|
|
103
|
+
// Registration is explicit - pass the adapter to configureBreeze, or call
|
|
104
|
+
// SomeAdapter.register(). Importing a module should not mutate global state.
|
|
105
|
+
//# sourceMappingURL=adapter-data-service-webapi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter-data-service-webapi.js","sourceRoot":"","sources":["../../src/adapters/adapter-data-service-webapi.ts"],"names":[],"mappings":"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","sourcesContent":["import { AbstractDataServiceAdapter } from './abstract-data-service-adapter.js';\r\nimport { config as globalConfig, BreezeConfig } from '../config/config.js';\r\nimport { AutoGeneratedKeyType, DataProperty, MetadataStore } from '../metadata/entity-metadata.js';\r\nimport type { SaveContext, SaveBundle, KeyMapping } from '../manager/entity-manager.js';\r\nimport { JsonResultsAdapter } from '../metadata/data-service.js';\r\nimport type { NodeContext } from '../metadata/data-service.js';\r\nimport { MappingContext } from '../query/mapping-context.js';\r\nimport { DataType } from '../metadata/data-type.js';\r\n\r\n/** @hidden */\r\nexport class DataServiceWebApiAdapter extends AbstractDataServiceAdapter {\r\n\r\n constructor() {\r\n super();\r\n this.name = \"webApi\";\r\n }\r\n\r\n static register(config?: BreezeConfig) {\r\n config = config || globalConfig;\r\n config.registerAdapter(\"dataService\", DataServiceWebApiAdapter);\r\n return config.initializeAdapterInstance(\"dataService\", \"webApi\", true) as DataServiceWebApiAdapter;\r\n }\r\n\r\n /** @hidden @internal */\r\n _prepareSaveBundle(saveContext: SaveContext, saveBundle: SaveBundle) {\r\n let changeRequestInterceptor = this._createChangeRequestInterceptor(saveContext, saveBundle);\r\n let em = saveContext.entityManager;\r\n let metadataStore = em.metadataStore;\r\n let helper = em.helper;\r\n let serSaveBundle: any = {};\r\n serSaveBundle.entities = saveBundle.entities.map(function (e, ix) {\r\n let rawEntity = helper.unwrapInstance(e, transformValue);\r\n\r\n let autoGeneratedKey: Object | undefined;\r\n if (e.entityType.autoGeneratedKeyType !== AutoGeneratedKeyType.None) {\r\n autoGeneratedKey = {\r\n propertyName: e.entityType.keyProperties[0].nameOnServer,\r\n autoGeneratedKeyType: e.entityType.autoGeneratedKeyType.name\r\n };\r\n }\r\n\r\n let originalValuesOnServer = helper.unwrapOriginalValues(e, metadataStore);\r\n rawEntity.entityAspect = {\r\n entityTypeName: e.entityType.name,\r\n defaultResourceName: e.entityType.defaultResourceName,\r\n entityState: e.entityAspect.entityState.name,\r\n originalValuesMap: originalValuesOnServer,\r\n autoGeneratedKey: autoGeneratedKey\r\n };\r\n rawEntity = changeRequestInterceptor.getRequest(rawEntity, e, ix);\r\n return rawEntity;\r\n });\r\n\r\n serSaveBundle.saveOptions = { tag: saveBundle.saveOptions.tag };\r\n changeRequestInterceptor.done(serSaveBundle.entities);\r\n return serSaveBundle;\r\n }\r\n\r\n /** @hidden @internal */\r\n _prepareSaveResult(saveContext: SaveContext, data: any) {\r\n // use the jsonResultAdapter to extractResults and extractKeyMappings\r\n let jra = saveContext.dataService.jsonResultsAdapter || this.jsonResultsAdapter;\r\n let entities = jra.extractSaveResults(data) || [];\r\n let keyMappings: KeyMapping[] = jra.extractKeyMappings(data) || [];\r\n let deletedKeys = jra.extractDeletedKeys ? (jra.extractDeletedKeys(data)) || [] : [];\r\n\r\n if (keyMappings.length) {\r\n // HACK: need to change the 'case' of properties in the saveResult\r\n // but KeyMapping properties internally are still ucase. ugh...\r\n keyMappings = keyMappings.map(function (km) {\r\n if (km.entityTypeName) return km; // it's already lower case\r\n let kmHack = km as any;\r\n let entityTypeName = MetadataStore.normalizeTypeName(kmHack.EntityTypeName);\r\n return { entityTypeName: entityTypeName, tempValue: kmHack.TempValue, realValue: kmHack.RealValue };\r\n });\r\n }\r\n\r\n if (deletedKeys.length) {\r\n deletedKeys = deletedKeys.map(function (dk) {\r\n if (dk.entityTypeName) return dk; // it's already lower case\r\n let entityTypeName = MetadataStore.normalizeTypeName(dk.EntityTypeName);\r\n // NOTE the dk.KeyValue => keyValues transition - needed because we are deserializing an .NET EntityKey\r\n return { entityTypeName: entityTypeName, keyValues: dk.KeyValue };\r\n });\r\n }\r\n\r\n return { entities: entities, keyMappings: keyMappings, deletedKeys: deletedKeys };\r\n\r\n }\r\n\r\n jsonResultsAdapter: JsonResultsAdapter = new JsonResultsAdapter({\r\n\r\n name: \"webApi_default\",\r\n\r\n visitNode: function (node: any, mappingContext: MappingContext, nodeContext: NodeContext) {\r\n if (node == null) return {};\r\n let entityTypeName = MetadataStore.normalizeTypeName(node.$type);\r\n let entityType = entityTypeName && mappingContext.entityManager.metadataStore._getStructuralType(entityTypeName, true);\r\n let propertyName = nodeContext.propertyName;\r\n let ignore = propertyName && propertyName.substr(0, 1) === \"$\";\r\n\r\n return {\r\n entityType: entityType,\r\n nodeId: node.$id,\r\n nodeRefId: node.$ref,\r\n ignore: ignore\r\n } as any;\r\n }\r\n\r\n });\r\n\r\n}\r\n\r\n/** Transform data properties while unwrapping entities before save */\r\nfunction transformValue(prop: DataProperty, val: any) {\r\n if (prop.dataType === DataType.DateOnly) {\r\n val = DataType.toDateOnlyString(val);\r\n }\r\n return val;\r\n}\r\n\r\n\r\n// NOTE: this module deliberately does NOT register itself on import.\r\n// Registration is explicit - pass the adapter to configureBreeze, or call\r\n// SomeAdapter.register(). Importing a module should not mutate global state.\r\n\r\n"]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { BreezeConfig } from '../config/config.js';
|
|
2
|
+
import type { ModelLibraryAdapter } from '../config/interface-registry.js';
|
|
3
|
+
import type { Entity, StructuralObject } from '../entity/entity-aspect.js';
|
|
4
|
+
/**
|
|
5
|
+
* Change tracking for plain JavaScript objects.
|
|
6
|
+
*
|
|
7
|
+
* Each mapped property becomes an accessor **on the prototype** - defined once per type, not per
|
|
8
|
+
* instance - and the values live in a `_backingStore` object on the instance. A get reads the
|
|
9
|
+
* store; a set hands the property, the new value and an accessor for the old one to the entity's
|
|
10
|
+
* `_$interceptor`, which is where change tracking actually happens.
|
|
11
|
+
*
|
|
12
|
+
* That split is why this file is cheap and the interceptor is not: of the time spent setting a
|
|
13
|
+
* tracked property, about 96% is change tracking (validation alone is around 63%) and about 2% is
|
|
14
|
+
* the plumbing here. Optimise the interceptor, or turn off `validateOnPropertyChange`; there is
|
|
15
|
+
* very little to win in this file.
|
|
16
|
+
*/
|
|
17
|
+
export declare class ModelLibraryBackingStoreAdapter implements ModelLibraryAdapter {
|
|
18
|
+
name: string;
|
|
19
|
+
constructor();
|
|
20
|
+
static register(config?: BreezeConfig): ModelLibraryBackingStoreAdapter;
|
|
21
|
+
initialize(): void;
|
|
22
|
+
/**
|
|
23
|
+
* The value of a property as it is stored, without creating anything. A collection navigation
|
|
24
|
+
* is created on first read (see makeCollectionNavPropDescription), so code that only wants to
|
|
25
|
+
* look at existing related entities asks with this instead of `getProperty` - otherwise
|
|
26
|
+
* attaching or deleting an entity would materialise every collection it has.
|
|
27
|
+
*/
|
|
28
|
+
peekProperty(entity: StructuralObject, propertyName: string): any;
|
|
29
|
+
getTrackablePropertyNames(entity: Entity): string[];
|
|
30
|
+
initializeEntityPrototype(proto: any): void;
|
|
31
|
+
startTracking(entity: StructuralObject, proto: any): void;
|
|
32
|
+
}
|