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.
Files changed (299) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +83 -63
  3. package/adapters/abstract-data-service-adapter.d.ts +120 -0
  4. package/adapters/abstract-data-service-adapter.js +395 -0
  5. package/adapters/abstract-data-service-adapter.js.map +1 -0
  6. package/adapters/adapter-ajax-fetch.d.ts +12 -0
  7. package/adapters/adapter-ajax-fetch.js +13 -0
  8. package/adapters/adapter-ajax-fetch.js.map +1 -0
  9. package/{adapter-ajax-post → adapters}/adapter-ajax-post.d.ts +40 -36
  10. package/{fesm2022/breeze-client-adapter-ajax-post.mjs → adapters/adapter-ajax-post.js} +80 -82
  11. package/adapters/adapter-ajax-post.js.map +1 -0
  12. package/{adapter-ajax-fetch → adapters}/adapter-core.d.ts +4 -4
  13. package/{fesm2022/breeze-client-adapter-uri-builder-json.mjs → adapters/adapter-core.js} +48 -91
  14. package/adapters/adapter-core.js.map +1 -0
  15. package/adapters/adapter-data-service-webapi.d.ts +9 -0
  16. package/{fesm2022/breeze-client-adapter-data-service-webapi.mjs → adapters/adapter-data-service-webapi.js} +105 -107
  17. package/adapters/adapter-data-service-webapi.js.map +1 -0
  18. package/adapters/adapter-model-library-backing-store.d.ts +32 -0
  19. package/adapters/adapter-model-library-backing-store.js +321 -0
  20. package/adapters/adapter-model-library-backing-store.js.map +1 -0
  21. package/adapters/adapter-uri-builder-json.d.ts +11 -0
  22. package/adapters/adapter-uri-builder-json.js +40 -0
  23. package/adapters/adapter-uri-builder-json.js.map +1 -0
  24. package/adapters/http.d.ts +52 -0
  25. package/adapters/http.js +202 -0
  26. package/adapters/http.js.map +1 -0
  27. package/angular/adapter-angular-httpclient.d.ts +21 -0
  28. package/angular/adapter-angular-httpclient.js +70 -0
  29. package/angular/adapter-angular-httpclient.js.map +1 -0
  30. package/breeze.d.ts +215 -0
  31. package/breeze.js +141 -0
  32. package/breeze.js.map +1 -0
  33. package/config/config.d.ts +212 -0
  34. package/config/config.js +392 -0
  35. package/config/config.js.map +1 -0
  36. package/config/configure.d.ts +66 -0
  37. package/config/configure.js +46 -0
  38. package/config/configure.js.map +1 -0
  39. package/config/default-adapters.d.ts +1 -0
  40. package/config/default-adapters.js +40 -0
  41. package/config/default-adapters.js.map +1 -0
  42. package/config/interface-registry.d.ts +191 -0
  43. package/config/interface-registry.js +5 -0
  44. package/config/interface-registry.js.map +1 -0
  45. package/{src → core}/assert-param.d.ts +52 -60
  46. package/core/assert-param.js +390 -0
  47. package/core/assert-param.js.map +1 -0
  48. package/core/core.d.ts +285 -0
  49. package/core/core.js +772 -0
  50. package/core/core.js.map +1 -0
  51. package/core/enum.d.ts +116 -0
  52. package/core/enum.js +167 -0
  53. package/core/enum.js.map +1 -0
  54. package/core/event.d.ts +169 -0
  55. package/core/event.js +338 -0
  56. package/core/event.js.map +1 -0
  57. package/entity/array.d.ts +3 -0
  58. package/entity/array.js +4 -0
  59. package/entity/array.js.map +1 -0
  60. package/entity/complex-array.d.ts +17 -0
  61. package/entity/complex-array.js +104 -0
  62. package/entity/complex-array.js.map +1 -0
  63. package/entity/default-property-interceptor.d.ts +1 -0
  64. package/entity/default-property-interceptor.js +496 -0
  65. package/entity/default-property-interceptor.js.map +1 -0
  66. package/{src → entity}/entity-action.d.ts +36 -42
  67. package/entity/entity-action.js +45 -0
  68. package/entity/entity-action.js.map +1 -0
  69. package/entity/entity-aspect.d.ts +457 -0
  70. package/entity/entity-aspect.js +1262 -0
  71. package/entity/entity-aspect.js.map +1 -0
  72. package/entity/entity-base.d.ts +55 -0
  73. package/entity/entity-base.js +41 -0
  74. package/entity/entity-base.js.map +1 -0
  75. package/entity/entity-group.d.ts +1 -0
  76. package/entity/entity-group.js +224 -0
  77. package/entity/entity-group.js.map +1 -0
  78. package/entity/entity-key.d.ts +95 -0
  79. package/entity/entity-key.js +189 -0
  80. package/entity/entity-key.js.map +1 -0
  81. package/{src → entity}/entity-state.d.ts +112 -84
  82. package/entity/entity-state.js +135 -0
  83. package/entity/entity-state.js.map +1 -0
  84. package/entity/key-generator.d.ts +57 -0
  85. package/entity/key-generator.js +155 -0
  86. package/entity/key-generator.js.map +1 -0
  87. package/entity/observable-array.d.ts +25 -0
  88. package/entity/observable-array.js +230 -0
  89. package/entity/observable-array.js.map +1 -0
  90. package/entity/primitive-array.d.ts +12 -0
  91. package/entity/primitive-array.js +71 -0
  92. package/entity/primitive-array.js.map +1 -0
  93. package/entity/relation-array.d.ts +24 -0
  94. package/entity/relation-array.js +176 -0
  95. package/entity/relation-array.js.map +1 -0
  96. package/entity/unattached-children-map.d.ts +1 -0
  97. package/entity/unattached-children-map.js +105 -0
  98. package/entity/unattached-children-map.js.map +1 -0
  99. package/generate-entity-classes.js +1176 -0
  100. package/manager/entity-manager.d.ts +801 -0
  101. package/manager/entity-manager.js +2395 -0
  102. package/manager/entity-manager.js.map +1 -0
  103. package/{src → manager}/save-options.d.ts +48 -42
  104. package/manager/save-options.js +51 -0
  105. package/manager/save-options.js.map +1 -0
  106. package/{src → metadata}/data-service.d.ts +229 -184
  107. package/metadata/data-service.js +246 -0
  108. package/metadata/data-service.js.map +1 -0
  109. package/metadata/data-type.d.ts +122 -0
  110. package/metadata/data-type.js +465 -0
  111. package/metadata/data-type.js.map +1 -0
  112. package/metadata/entity-metadata.d.ts +1193 -0
  113. package/metadata/entity-metadata.js +2502 -0
  114. package/metadata/entity-metadata.js.map +1 -0
  115. package/{src → metadata}/local-query-comparison-options.d.ts +65 -59
  116. package/metadata/local-query-comparison-options.js +69 -0
  117. package/metadata/local-query-comparison-options.js.map +1 -0
  118. package/{src → metadata}/naming-convention.d.ts +75 -72
  119. package/metadata/naming-convention.js +97 -0
  120. package/metadata/naming-convention.js.map +1 -0
  121. package/mixins/mixin-get-entity-graph.d.ts +63 -0
  122. package/{fesm2022/breeze-client-mixin-get-entity-graph.mjs → mixins/mixin-get-entity-graph.js} +331 -253
  123. package/mixins/mixin-get-entity-graph.js.map +1 -0
  124. package/mixins/mixin-save-queuing.d.ts +98 -0
  125. package/{fesm2022/breeze-client-mixin-save-queuing.mjs → mixins/mixin-save-queuing.js} +493 -365
  126. package/mixins/mixin-save-queuing.js.map +1 -0
  127. package/package.json +63 -94
  128. package/query/entity-query.d.ts +521 -0
  129. package/query/entity-query.js +1149 -0
  130. package/query/entity-query.js.map +1 -0
  131. package/{src → query}/mapping-context.d.ts +44 -46
  132. package/query/mapping-context.js +412 -0
  133. package/query/mapping-context.js.map +1 -0
  134. package/query/predicate.d.ts +394 -0
  135. package/query/predicate.js +1294 -0
  136. package/query/predicate.js.map +1 -0
  137. package/query/property-path.d.ts +252 -0
  138. package/query/property-path.js +2 -0
  139. package/query/property-path.js.map +1 -0
  140. package/{src → query}/query-options.d.ts +143 -119
  141. package/query/query-options.js +180 -0
  142. package/query/query-options.js.map +1 -0
  143. package/rxjs/breeze-rxjs.d.ts +72 -0
  144. package/rxjs/breeze-rxjs.js +117 -0
  145. package/rxjs/breeze-rxjs.js.map +1 -0
  146. package/validation/validate.d.ts +583 -0
  147. package/validation/validate.js +961 -0
  148. package/validation/validate.js.map +1 -0
  149. package/{src → validation}/validation-options.d.ts +67 -63
  150. package/validation/validation-options.js +70 -0
  151. package/validation/validation-options.js.map +1 -0
  152. package/adapter-ajax-angularjs/adapter-ajax-angularjs.d.ts +0 -17
  153. package/adapter-ajax-angularjs/adapter-core.d.ts +0 -4
  154. package/adapter-ajax-angularjs/index.d.ts +0 -5
  155. package/adapter-ajax-fetch/adapter-ajax-fetch.d.ts +0 -18
  156. package/adapter-ajax-fetch/index.d.ts +0 -5
  157. package/adapter-ajax-httpclient/adapter-ajax-httpclient.d.ts +0 -13
  158. package/adapter-ajax-httpclient/adapter-core.d.ts +0 -4
  159. package/adapter-ajax-httpclient/index.d.ts +0 -5
  160. package/adapter-ajax-jquery/adapter-ajax-jquery.d.ts +0 -15
  161. package/adapter-ajax-jquery/index.d.ts +0 -5
  162. package/adapter-ajax-post/index.d.ts +0 -5
  163. package/adapter-data-service-odata/adapter-core.d.ts +0 -4
  164. package/adapter-data-service-odata/adapter-data-service-odata.d.ts +0 -17
  165. package/adapter-data-service-odata/index.d.ts +0 -5
  166. package/adapter-data-service-webapi/adapter-data-service-webapi.d.ts +0 -15
  167. package/adapter-data-service-webapi/index.d.ts +0 -5
  168. package/adapter-model-library-backing-store/adapter-model-library-backing-store.d.ts +0 -10
  169. package/adapter-model-library-backing-store/index.d.ts +0 -5
  170. package/adapter-model-library-ko/adapter-model-library-ko.d.ts +0 -10
  171. package/adapter-model-library-ko/index.d.ts +0 -5
  172. package/adapter-uri-builder-json/adapter-core.d.ts +0 -4
  173. package/adapter-uri-builder-json/adapter-uri-builder-json.d.ts +0 -8
  174. package/adapter-uri-builder-json/index.d.ts +0 -5
  175. package/adapter-uri-builder-odata/adapter-core.d.ts +0 -4
  176. package/adapter-uri-builder-odata/adapter-uri-builder-odata.d.ts +0 -8
  177. package/adapter-uri-builder-odata/index.d.ts +0 -5
  178. package/esm2022/adapter-ajax-angularjs/adapter-ajax-angularjs.mjs +0 -135
  179. package/esm2022/adapter-ajax-angularjs/adapter-core.mjs +0 -49
  180. package/esm2022/adapter-ajax-angularjs/breeze-client-adapter-ajax-angularjs.mjs +0 -5
  181. package/esm2022/adapter-ajax-fetch/adapter-ajax-fetch.mjs +0 -135
  182. package/esm2022/adapter-ajax-fetch/adapter-core.mjs +0 -49
  183. package/esm2022/adapter-ajax-fetch/breeze-client-adapter-ajax-fetch.mjs +0 -5
  184. package/esm2022/adapter-ajax-httpclient/adapter-ajax-httpclient.mjs +0 -139
  185. package/esm2022/adapter-ajax-httpclient/adapter-core.mjs +0 -49
  186. package/esm2022/adapter-ajax-httpclient/breeze-client-adapter-ajax-httpclient.mjs +0 -5
  187. package/esm2022/adapter-ajax-jquery/adapter-ajax-jquery.mjs +0 -107
  188. package/esm2022/adapter-ajax-jquery/breeze-client-adapter-ajax-jquery.mjs +0 -5
  189. package/esm2022/adapter-ajax-post/adapter-ajax-post.mjs +0 -77
  190. package/esm2022/adapter-ajax-post/breeze-client-adapter-ajax-post.mjs +0 -5
  191. package/esm2022/adapter-data-service-odata/adapter-core.mjs +0 -49
  192. package/esm2022/adapter-data-service-odata/adapter-data-service-odata.mjs +0 -461
  193. package/esm2022/adapter-data-service-odata/breeze-client-adapter-data-service-odata.mjs +0 -5
  194. package/esm2022/adapter-data-service-webapi/adapter-data-service-webapi.mjs +0 -100
  195. package/esm2022/adapter-data-service-webapi/breeze-client-adapter-data-service-webapi.mjs +0 -5
  196. package/esm2022/adapter-model-library-backing-store/adapter-model-library-backing-store.mjs +0 -269
  197. package/esm2022/adapter-model-library-backing-store/breeze-client-adapter-model-library-backing-store.mjs +0 -5
  198. package/esm2022/adapter-model-library-ko/adapter-model-library-ko.mjs +0 -241
  199. package/esm2022/adapter-model-library-ko/breeze-client-adapter-model-library-ko.mjs +0 -5
  200. package/esm2022/adapter-uri-builder-json/adapter-core.mjs +0 -49
  201. package/esm2022/adapter-uri-builder-json/adapter-uri-builder-json.mjs +0 -37
  202. package/esm2022/adapter-uri-builder-json/breeze-client-adapter-uri-builder-json.mjs +0 -5
  203. package/esm2022/adapter-uri-builder-odata/adapter-core.mjs +0 -49
  204. package/esm2022/adapter-uri-builder-odata/adapter-uri-builder-odata.mjs +0 -191
  205. package/esm2022/adapter-uri-builder-odata/breeze-client-adapter-uri-builder-odata.mjs +0 -5
  206. package/esm2022/breeze-client.mjs +0 -5
  207. package/esm2022/index.mjs +0 -2
  208. package/esm2022/mixin-get-entity-graph/breeze-client-mixin-get-entity-graph.mjs +0 -5
  209. package/esm2022/mixin-get-entity-graph/mixin-get-entity-graph.mjs +0 -269
  210. package/esm2022/mixin-save-queuing/breeze-client-mixin-save-queuing.mjs +0 -5
  211. package/esm2022/mixin-save-queuing/mixin-save-queuing.mjs +0 -421
  212. package/esm2022/src/abstract-data-service-adapter.mjs +0 -325
  213. package/esm2022/src/array.mjs +0 -4
  214. package/esm2022/src/assert-param.mjs +0 -330
  215. package/esm2022/src/breeze.mjs +0 -85
  216. package/esm2022/src/complex-array.mjs +0 -117
  217. package/esm2022/src/config.mjs +0 -232
  218. package/esm2022/src/core.mjs +0 -712
  219. package/esm2022/src/csdl-metadata-parser.mjs +0 -385
  220. package/esm2022/src/data-service.mjs +0 -221
  221. package/esm2022/src/data-type.mjs +0 -510
  222. package/esm2022/src/default-property-interceptor.mjs +0 -460
  223. package/esm2022/src/entity-action.mjs +0 -45
  224. package/esm2022/src/entity-aspect.mjs +0 -897
  225. package/esm2022/src/entity-group.mjs +0 -192
  226. package/esm2022/src/entity-key.mjs +0 -125
  227. package/esm2022/src/entity-manager.mjs +0 -2163
  228. package/esm2022/src/entity-metadata.mjs +0 -2242
  229. package/esm2022/src/entity-query.mjs +0 -1024
  230. package/esm2022/src/entity-state.mjs +0 -107
  231. package/esm2022/src/enum.mjs +0 -143
  232. package/esm2022/src/event.mjs +0 -264
  233. package/esm2022/src/interface-registry.mjs +0 -39
  234. package/esm2022/src/key-generator.mjs +0 -110
  235. package/esm2022/src/local-query-comparison-options.mjs +0 -65
  236. package/esm2022/src/mapping-context.mjs +0 -411
  237. package/esm2022/src/naming-convention.mjs +0 -92
  238. package/esm2022/src/observable-array.mjs +0 -183
  239. package/esm2022/src/predicate.mjs +0 -1259
  240. package/esm2022/src/primitive-array.mjs +0 -85
  241. package/esm2022/src/query-options.mjs +0 -152
  242. package/esm2022/src/relation-array.mjs +0 -173
  243. package/esm2022/src/save-options.mjs +0 -41
  244. package/esm2022/src/unattached-children-map.mjs +0 -56
  245. package/esm2022/src/validate.mjs +0 -995
  246. package/esm2022/src/validation-options.mjs +0 -64
  247. package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs +0 -190
  248. package/fesm2022/breeze-client-adapter-ajax-angularjs.mjs.map +0 -1
  249. package/fesm2022/breeze-client-adapter-ajax-fetch.mjs +0 -190
  250. package/fesm2022/breeze-client-adapter-ajax-fetch.mjs.map +0 -1
  251. package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs +0 -194
  252. package/fesm2022/breeze-client-adapter-ajax-httpclient.mjs.map +0 -1
  253. package/fesm2022/breeze-client-adapter-ajax-jquery.mjs +0 -114
  254. package/fesm2022/breeze-client-adapter-ajax-jquery.mjs.map +0 -1
  255. package/fesm2022/breeze-client-adapter-ajax-post.mjs.map +0 -1
  256. package/fesm2022/breeze-client-adapter-data-service-odata.mjs +0 -516
  257. package/fesm2022/breeze-client-adapter-data-service-odata.mjs.map +0 -1
  258. package/fesm2022/breeze-client-adapter-data-service-webapi.mjs.map +0 -1
  259. package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs +0 -276
  260. package/fesm2022/breeze-client-adapter-model-library-backing-store.mjs.map +0 -1
  261. package/fesm2022/breeze-client-adapter-model-library-ko.mjs +0 -248
  262. package/fesm2022/breeze-client-adapter-model-library-ko.mjs.map +0 -1
  263. package/fesm2022/breeze-client-adapter-uri-builder-json.mjs.map +0 -1
  264. package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs +0 -246
  265. package/fesm2022/breeze-client-adapter-uri-builder-odata.mjs.map +0 -1
  266. package/fesm2022/breeze-client-mixin-get-entity-graph.mjs.map +0 -1
  267. package/fesm2022/breeze-client-mixin-save-queuing.mjs.map +0 -1
  268. package/fesm2022/breeze-client.mjs +0 -14144
  269. package/fesm2022/breeze-client.mjs.map +0 -1
  270. package/index.d.ts +0 -1
  271. package/mixin-get-entity-graph/index.d.ts +0 -5
  272. package/mixin-get-entity-graph/mixin-get-entity-graph.d.ts +0 -31
  273. package/mixin-save-queuing/index.d.ts +0 -5
  274. package/mixin-save-queuing/mixin-save-queuing.d.ts +0 -32
  275. package/src/abstract-data-service-adapter.d.ts +0 -84
  276. package/src/array.d.ts +0 -3
  277. package/src/breeze.d.ts +0 -139
  278. package/src/complex-array.d.ts +0 -13
  279. package/src/config.d.ts +0 -104
  280. package/src/core.d.ts +0 -164
  281. package/src/csdl-metadata-parser.d.ts +0 -7
  282. package/src/data-type.d.ts +0 -89
  283. package/src/default-property-interceptor.d.ts +0 -4
  284. package/src/entity-aspect.d.ts +0 -332
  285. package/src/entity-group.d.ts +0 -28
  286. package/src/entity-key.d.ts +0 -77
  287. package/src/entity-manager.d.ts +0 -680
  288. package/src/entity-metadata.d.ts +0 -988
  289. package/src/entity-query.d.ts +0 -444
  290. package/src/enum.d.ts +0 -100
  291. package/src/event.d.ts +0 -142
  292. package/src/interface-registry.d.ts +0 -150
  293. package/src/key-generator.d.ts +0 -12
  294. package/src/observable-array.d.ts +0 -52
  295. package/src/predicate.d.ts +0 -376
  296. package/src/primitive-array.d.ts +0 -7
  297. package/src/relation-array.d.ts +0 -18
  298. package/src/unattached-children-map.d.ts +0 -19
  299. package/src/validate.d.ts +0 -650
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2012-2025 IdeaBlade
3
+ Copyright (c) 2012-2026 IdeaBlade
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,63 +1,83 @@
1
- <p align="center"><a href="http://www.getbreezenow.com/" target="_blank"><img src="http://breeze.github.io/images/logos/BreezeJsB.png" alt="Breeze" width="100"/></a></p>
2
-
3
- # [Breeze](http://breeze.github.io/doc-main/) Data Management for JavaScript Clients
4
-
5
- **Breeze** is a library that helps you manage data in rich client applications. If you store data in a database, query and save those data as complex object graphs, and share these graphs across multiple screens of your JavaScript client, Breeze is for you.
6
-
7
- Client-side querying, caching, dynamic object graphs, change tracking and notification, model validation, batch save, offline … all part of rich data management with Breeze. Breeze clients communicate with any remote service that speaks HTTP and JSON.
8
-
9
- **Breeze** lets you develop applications using the same powerful idioms on the client and server. You can
10
-
11
- - query with a rich query syntax
12
- - navigate the graph of related entities
13
- - track changes as you add/change/delete entities
14
- - perform client-side validation
15
- - save all changes in a single transaction
16
- - use the same entity model on the server and client
17
-
18
- ## Install from npm
19
-
20
- npm install breeze-client
21
- or
22
-
23
- npm install breeze-client@cjs
24
-
25
- The version tagged `cjs` uses an older Angular Package Format, and includes ES5 and ES2015 versions, as well as UMD bundles.
26
-
27
- The version tagged `latest` (and `mjs`) uses updated [Angular Package Format](https://docs.google.com/document/d/1CZC2rcpxffTDfRDs6p1cfbmKNLA6x5O-NtkJglDaBVs/preview) and ES2022 .mjs modules. It has `esm2022` and `fesm2022` folders, but no UMD `bundles` folder.
28
-
29
- If you want the latest module format, and don't care about UMD bundles, use `breeze-client`.
30
-
31
- If you need UMD bundles, or need backward compatibility with ES5 or ES2015, use `breeze-client@cjs`.
32
-
33
- ## Documentation
34
-
35
- See the [docs](http://breeze.github.io/doc-js/features.html) for more info about what Breeze does and how to use it.
36
-
37
- Set the [release notes](http://breeze.github.io/doc-js/release-notes.html) for changes in the latest version.
38
-
39
- ## Examples
40
-
41
- See some [examples](https://github.com/Breeze/northwind-demo) of how to use breeze with Angular, Aurelia, React, and Vue in the [Northwind-Demo](https://github.com/Breeze/northwind-demo).
42
-
43
- See the [TempHire](https://github.com/Breeze/temphire.angular) application for a richer example showing proper architectural patterns.
44
-
45
- ## Sources
46
-
47
- The sources for this package are in the [breeze-client](https://github.com/Breeze/breeze-client) repo. Please file issues and pull requests against that repo.
48
-
49
- ## Upgrading Breeze
50
-
51
- See the [UPGRADE](https://github.com/Breeze/breeze-client/blob/master/UPGRADE.md) document for information on upgrading from Breeze 1.x to 2.x.
52
-
53
- ## Building Breeze
54
-
55
- See the [BUILD](https://github.com/Breeze/breeze-client/blob/master/BUILD.md) document for instructions on building the Breeze and its API docs.
56
-
57
- <hr>
58
-
59
- If you have discovered a bug or missing feature, please create an issue in the [breeze-client github repo](https://github.com/Breeze/breeze-client).
60
-
61
- If you have questions about using Breeze, please ask on [Stack Overflow](https://stackoverflow.com/questions/tagged/breeze).
62
-
63
- If you need help developing your application, please contact us at [IdeaBlade](mailto:info@ideablade.com).
1
+ <p align="center"><a href="http://breeze.github.io/" target="_blank"><img src="http://breeze.github.io/images/logos/BreezeJsB.png" alt="Breeze" width="100"/></a></p>
2
+
3
+ # Breeze Data Management for JavaScript Clients
4
+
5
+ **Breeze** is a library from [IdeaBlade](https://www.ideablade.com/) that helps you manage
6
+ data in rich client applications. If you store data in a database, query and save it as
7
+ complex object graphs, and share those graphs across screens, Breeze is for you.
8
+
9
+ Client-side querying, caching, dynamic object graphs, change tracking and notification,
10
+ model validation, batch save, offline — all part of rich data management with Breeze.
11
+ Breeze clients talk to any remote service that speaks HTTP and JSON.
12
+
13
+ > **This is breeze-client 3**, published to npm as `breeze-client` 3.0.0.
14
+ > 2.x is maintained in [breeze-client](https://github.com/Breeze/breeze-client).
15
+
16
+ ## What v3 is
17
+
18
+ Same public API, rewritten for modern TypeScript, with a build you can read in one sitting.
19
+
20
+ - **ESM only**, one package, one npm tag. No CommonJS, no UMD, no `mjs`/`cjs` dist-tags.
21
+ - **One `tsc` invocation.** No ng-packagr, no second `node_modules`, no `downlevel-dts`.
22
+ - **No runtime dependencies.**
23
+ - **Knockout, jQuery, AngularJS and OData removed**, including CSDL/EDMX metadata parsing.
24
+ - Angular support moves to its own package so Angular and RxJS stay out of the core build.
25
+
26
+ Source is 42 files / 15,630 lines, down from 51 / 19,708.
27
+
28
+ ## Documentation
29
+
30
+ | | |
31
+ |---|---|
32
+ | [UPGRADE.md](./UPGRADE.md) | **Converting an app from 2.x** — every consumer-facing change |
33
+ | [TESTING.md](./TESTING.md) | **Running the tests** — creating the database, starting the server |
34
+ | [DOCS.md](./DOCS.md) | **Building and viewing the docs** — the guides and the API reference |
35
+ | [BUILD-AND-PACK.md](./BUILD-AND-PACK.md) | **Packing the library and trying it in another app** without publishing |
36
+ | [CHANGES-DEV.md](./CHANGES-DEV.md) | Structural changes, for people working on Breeze itself |
37
+ | [STATUS.md](./STATUS.md) | What is done, what is in flight, what is next |
38
+
39
+ The user documentation is at [breeze.github.io/breeze-client-v3](https://breeze.github.io/breeze-client-v3/).
40
+ The 2.x documentation is still at [breeze.github.io/doc-js](https://breeze.github.io/doc-js/?v2).
41
+
42
+ ## Install
43
+
44
+ ```bash
45
+ npm install breeze-client
46
+ ```
47
+
48
+ ```ts
49
+ import { EntityManager, EntityQuery } from 'breeze-client';
50
+
51
+ const em = new EntityManager('/breeze/Northwind');
52
+ const { results } = await em.executeQuery(EntityQuery.from('Customers').take(10));
53
+ ```
54
+
55
+ That is all a Breeze .NET server needs. There are no adapters to import or register, and
56
+ property names are camel-cased by default: `CompanyName` on the server is `companyName`
57
+ on the client. If your server already sends the names the client should use, call
58
+ `NamingConvention.none.setAsDefault()` at startup, before creating an `EntityManager`.
59
+ 2.x defaulted to `none` — see [UPGRADE.md](./UPGRADE.md).
60
+
61
+ ## Building
62
+
63
+ ```bash
64
+ npm install
65
+ npm run typecheck # tsc --noEmit
66
+ npm run build # -> dist/
67
+ ```
68
+
69
+ ## Server
70
+
71
+ The .NET server lives in
72
+ [breeze-server-v3](https://github.com/Breeze/breeze-server-v3). The integration tests in
73
+ this repo run against it.
74
+
75
+ ---
76
+
77
+ If you have discovered a bug or missing feature, please create an issue.
78
+
79
+ If you have questions about using Breeze, please ask on
80
+ [Stack Overflow](https://stackoverflow.com/questions/tagged/breeze).
81
+
82
+ If you need help developing your application, please contact us at
83
+ [IdeaBlade](mailto:info@ideablade.com).
@@ -0,0 +1,120 @@
1
+ import { DataServiceAdapter, AjaxAdapter, AjaxConfig, ChangeRequestInterceptorCtor, ChangeRequestInterceptor } from '../config/interface-registry.js';
2
+ import { MappingContext } from '../query/mapping-context.js';
3
+ import { DataService, JsonResultsAdapter } from '../metadata/data-service.js';
4
+ import { HttpResponse, SaveContext, SaveBundle, ServerError, SaveResult, QueryResult } from '../manager/entity-manager.js';
5
+ import { MetadataStore } from '../metadata/entity-metadata.js';
6
+ /** For use by breeze plugin authors only. The class is used as the base class for most {@link DataServiceAdapter} implementations
7
+ @adapter (see {@link DataServiceAdapter})
8
+ @hidden
9
+ */
10
+ export declare abstract class AbstractDataServiceAdapter implements DataServiceAdapter {
11
+ /** The name of this adapter. */
12
+ name: string;
13
+ /**
14
+ * The ajax adapter requests go through: the registered default if there is one, otherwise
15
+ * a built-in one that uses `config.fetch`.
16
+ * @deprecated Make requests with `_ajax`, and supply the transport with
17
+ * `configureBreeze({ fetch })`.
18
+ */
19
+ ajaxImpl: AjaxAdapter;
20
+ checkForRecomposition(interfaceInitializedArgs: any): void;
21
+ initialize(): void;
22
+ /**
23
+ * Sends one request. Resolves with the response, or rejects with a `ServerError`.
24
+ *
25
+ * Subclasses should make their requests through this method rather than through
26
+ * `ajaxImpl`, whose callback-shaped contract is kept only for compatibility. This is the
27
+ * only place in the class that deals in success/error callbacks.
28
+ */
29
+ protected _ajax(config: Omit<AjaxConfig, 'success' | 'error'>, errorMessagePrefix?: string, prepareResponse?: (httpResponse: HttpResponse) => void): Promise<HttpResponse>;
30
+ fetchMetadata(metadataStore: MetadataStore, dataService: DataService): Promise<any>;
31
+ /** Execute the query in the mappingContext. */
32
+ executeQuery(mappingContext: MappingContext): Promise<QueryResult>;
33
+ /** Set up ajax parameters for query GET. This puts the query into the request querystring, in whatever syntax the UriBuilder produces. */
34
+ _makeQueryGetParams(mappingContext: MappingContext): {
35
+ type: string;
36
+ url: string;
37
+ params: Object;
38
+ dataType: string;
39
+ crossDomain: boolean;
40
+ };
41
+ /** Set up ajax parameters for query POST. This put the query into the request body as JSON. */
42
+ _makeQueryPostParams(mappingContext: MappingContext): {
43
+ type: string;
44
+ url: string;
45
+ params: Object;
46
+ dataType: string;
47
+ processData: boolean;
48
+ contentType: string;
49
+ data: string;
50
+ crossDomain: boolean;
51
+ };
52
+ saveChanges(saveContext: SaveContext, saveBundle: SaveBundle): Promise<SaveResult>;
53
+ /** Abstract method that needs to be overwritten in any concrete DataServiceAdapter subclass.
54
+ The return value from this method should be a serializable object that will be sent to the server after calling JSON.stringify on it.
55
+ */
56
+ _prepareSaveBundle(saveContext: SaveContext, saveBundle: SaveBundle): any;
57
+ /**
58
+ Returns a constructor function for a "ChangeRequestInterceptor"
59
+ that can tweak the saveBundle both as it is built and when it is completed
60
+ by a concrete DataServiceAdapater.
61
+
62
+ Initialized with a default, no-op implementation that developers can replace with a
63
+ substantive implementation that changes the individual entity change requests
64
+ or aspects of the entire 'saveBundle' without having to write their own DataService adapters.
65
+ ```ts
66
+ let adapter = breeze.config.getAdapterInstance('dataService');
67
+ adapter.changeRequestInterceptor = function (saveContext, saveBundle) {
68
+ this.getRequest = function (request, entity, index) {
69
+ // alter the request that the adapter prepared for this entity
70
+ // based on the entity, saveContext, and saveBundle
71
+ // e.g., add a custom header or prune the originalValuesMap
72
+ return request;
73
+ };
74
+ this.done = function (requests) {
75
+ // alter the array of requests representing the entire change-set
76
+ // based on the saveContext and saveBundle
77
+ };
78
+ }
79
+ ```
80
+
81
+ @param saveContext - The BreezeJS "context" for the save operation.
82
+ @param saveBundle - Contains the array of entities-to-be-saved (AKA, the entity change-set).
83
+ @returns Constructor for a "ChangeRequestInterceptor".
84
+ */
85
+ changeRequestInterceptor: ChangeRequestInterceptorCtor;
86
+ /**
87
+ * Creates the change request interceptor for one save, from `changeRequestInterceptor`.
88
+ * Call it at the start of `_prepareSaveBundle`, pass each entity's request through its
89
+ * `getRequest`, and pass the finished array to its `done`.
90
+ *
91
+ * Falls back to a no-op interceptor when `changeRequestInterceptor` is not set. If the
92
+ * interceptor it creates has `oneTime` set, the adapter goes back to the no-op
93
+ * interceptor afterwards, so only this save is intercepted.
94
+ * @throws if the interceptor has no `getRequest` or `done` method.
95
+ */
96
+ protected _createChangeRequestInterceptor(saveContext: SaveContext, saveBundle: SaveBundle): ChangeRequestInterceptor;
97
+ /** Abstract method that needs to be overwritten in any concrete DataServiceAdapter sublclass.
98
+ This method needs to take the result returned the server and convert it into an ISaveResult.
99
+ */
100
+ _prepareSaveResult(saveContext: SaveContext, data: any): SaveResult;
101
+ /** Utility method that may be used in any concrete DataServiceAdapter sublclass to handle any
102
+ http connection issues. For an error with status 0 - the request got no response - it says in
103
+ the message that the server could not be reached, keeping any message the transport gave.
104
+ An aborted request is left alone. `makeHttpError` already applies it.
105
+ */
106
+ static _catchNoConnectionError(err: ServerError): void;
107
+ /**
108
+ * Builds the Breeze error for a failed HTTP response: an `Error` carrying `status`,
109
+ * `statusText`, `url`, `body` and `httpResponse`, whose message comes from the response
110
+ * body (a .NET exception, or `{ message, errors }`). For a save, it also carries the
111
+ * server's per-entity `entityErrors`, if `httpResponse.saveContext` is set.
112
+ *
113
+ * `_ajax` uses it for every failed request. Call it when your adapter makes a request some
114
+ * other way, then throw or reject with the result.
115
+ * @param httpResponse - The failed response.
116
+ * @param messagePrefix - Put at the start of the message, followed by "; ".
117
+ */
118
+ static makeHttpError(httpResponse: HttpResponse, messagePrefix?: string): ServerError;
119
+ jsonResultsAdapter: JsonResultsAdapter;
120
+ }