breeze-client 2.2.1 → 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 +62 -93
  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
@@ -0,0 +1,95 @@
1
+ import { EntityType, MetadataStore } from '../metadata/entity-metadata.js';
2
+ import type { Entity } from './entity-aspect.js';
3
+ /**
4
+ An EntityKey is an object that represents the unique identity of an entity. EntityKey's are immutable.
5
+
6
+
7
+ */
8
+ export declare class EntityKey {
9
+ /** The 'EntityType' that this is a key for. __Read Only__ */
10
+ entityType: EntityType;
11
+ /** An array of the values for this key. This will usually only have a single element,
12
+ unless the entity type has a multipart key. __Read Only__ */
13
+ values: any[];
14
+ /**
15
+ Constructs a new EntityKey. Each entity within an EntityManager will have a unique EntityKey.
16
+ ```ts
17
+ // assume Employee is registered with the MetadataStore
18
+ const entityKey = new EntityKey(Employee, 1);
19
+ ```
20
+
21
+ EntityKey's may also be found by calling EntityAspect.getKey()
22
+ ```ts
23
+ // assume employee1 is an existing Employee entity
24
+ const empKey = employee1.entityAspect.getKey();
25
+ ```
26
+
27
+ A key of more than one property is clearest given by name, in any order:
28
+ ```ts
29
+ const detailKey = new EntityKey(OrderDetail, { orderID: 10248, productID: 11 });
30
+ ```
31
+
32
+ or as an array, in the order of the type's {@link EntityType.keyProperties}: the order of the
33
+ key's definition on the server - `HasKey(od => new { od.OrderID, od.ProductID })` - which a
34
+ generated entity class states in its doc comment, as `Key: orderID, productID`.
35
+ ```ts
36
+ const sameKey = new EntityKey(OrderDetail, [10248, 11]);
37
+ ```
38
+ A wrong order is not an error - it is a valid key for another row - which is why the named form
39
+ is better for these.
40
+ @param entityType - The {@link EntityType} of the entity, or a class registered for it with
41
+ {@link MetadataStore.registerEntityTypeCtor}.
42
+ @param keyValues - The key's value; for a key of more than one property, an object of values by
43
+ property name, or an array in key order. A named value that is not part of the key, or a key
44
+ property with no value, throws.
45
+ */
46
+ constructor(entityType: EntityType | (new () => Entity), keyValues: any);
47
+ /** Returns the plain form of this key - `{ entityType, values }`, with the entity type's qualified
48
+ name - which `JSON.stringify` uses and {@link EntityKey.fromJSON} turns back into a key. Breeze
49
+ uses it to record temporary keys in an {@link EntityManager.exportEntities} bundle. */
50
+ toJSON(): {
51
+ /** The qualified name of the key's entity type, such as `"Customer:#Northwind.Models"`. */
52
+ entityType: string;
53
+ /** The key's values, one per key property. */
54
+ values: any[];
55
+ };
56
+ /** Recreates a key from the output of {@link EntityKey.toJSON}, looking its entity type up in
57
+ `metadataStore`. Throws if the type is not there. Used by {@link EntityManager.importEntities}. */
58
+ static fromJSON(json: any, metadataStore: MetadataStore): EntityKey;
59
+ /**
60
+ Used to compare EntityKeys are determine if they refer to the same Entity.
61
+ There is also an static version of 'equals' with the same functionality.
62
+
63
+ ```ts
64
+ // assume Employee is registered with the MetadataStore
65
+ const empKey1 = new EntityKey(Employee, 1);
66
+ // assume employee1 is an existing Employee entity
67
+ const empKey2 = employee1.entityAspect.getKey();
68
+ if (empKey1.equals(empKey2)) {
69
+ // do something ...
70
+ }
71
+ ```
72
+ */
73
+ equals(entityKey: EntityKey): boolean;
74
+ /** Returns this key as a string: the entity type's qualified name, a hyphen, and the key values
75
+ joined by `:::` - such as `"Order:#Northwind.Models-10248"`. Given `altEntityType`, that type's
76
+ name is used instead. Breeze uses this form in error messages and as the property names of an
77
+ {@link ITempKeyMap}. */
78
+ toString(altEntityType?: EntityType): string;
79
+ /**
80
+ Used to compare EntityKeys are determine if they refer to the same Entity.
81
+ There is also an instance version of 'equals' with the same functionality.
82
+ ```ts
83
+ // assume Employee is registered with the MetadataStore
84
+ const empKey1 = new EntityKey(Employee, 1);
85
+ // assume employee1 is an existing Employee entity
86
+ const empKey2 = employee1.entityAspect.getKey();
87
+ if (EntityKey.equals(empKey1, empKey2)) {
88
+ // do something ...
89
+ }
90
+ ```
91
+ */
92
+ static equals(k1: EntityKey, k2: EntityKey): boolean;
93
+ /** hidden */
94
+ static createKeyString(keyValues: any[]): string;
95
+ }
@@ -0,0 +1,189 @@
1
+ import { core } from '../core/core.js';
2
+ import { paramError } from '../core/assert-param.js';
3
+ import { EntityType, entityTypeForCtor } from '../metadata/entity-metadata.js';
4
+ import { DataType } from '../metadata/data-type.js';
5
+ /**
6
+ An EntityKey is an object that represents the unique identity of an entity. EntityKey's are immutable.
7
+
8
+
9
+ */
10
+ export class EntityKey {
11
+ /** @hidden @internal */
12
+ static ENTITY_KEY_DELIMITER = ":::";
13
+ /** The 'EntityType' that this is a key for. __Read Only__ */
14
+ entityType;
15
+ /** An array of the values for this key. This will usually only have a single element,
16
+ unless the entity type has a multipart key. __Read Only__ */
17
+ values;
18
+ /** @hidden @internal */
19
+ _keyInGroup;
20
+ /** @hidden @internal */
21
+ _subtypes;
22
+ /**
23
+ Constructs a new EntityKey. Each entity within an EntityManager will have a unique EntityKey.
24
+ ```ts
25
+ // assume Employee is registered with the MetadataStore
26
+ const entityKey = new EntityKey(Employee, 1);
27
+ ```
28
+
29
+ EntityKey's may also be found by calling EntityAspect.getKey()
30
+ ```ts
31
+ // assume employee1 is an existing Employee entity
32
+ const empKey = employee1.entityAspect.getKey();
33
+ ```
34
+
35
+ A key of more than one property is clearest given by name, in any order:
36
+ ```ts
37
+ const detailKey = new EntityKey(OrderDetail, { orderID: 10248, productID: 11 });
38
+ ```
39
+
40
+ or as an array, in the order of the type's {@link EntityType.keyProperties}: the order of the
41
+ key's definition on the server - `HasKey(od => new { od.OrderID, od.ProductID })` - which a
42
+ generated entity class states in its doc comment, as `Key: orderID, productID`.
43
+ ```ts
44
+ const sameKey = new EntityKey(OrderDetail, [10248, 11]);
45
+ ```
46
+ A wrong order is not an error - it is a valid key for another row - which is why the named form
47
+ is better for these.
48
+ @param entityType - The {@link EntityType} of the entity, or a class registered for it with
49
+ {@link MetadataStore.registerEntityTypeCtor}.
50
+ @param keyValues - The key's value; for a key of more than one property, an object of values by
51
+ property name, or an array in key order. A named value that is not part of the key, or a key
52
+ property with no value, throws.
53
+ */
54
+ constructor(entityType, keyValues) {
55
+ // A class stands for its registered type. Checked by typeof first, so the EntityType that
56
+ // Breeze itself always passes costs one comparison.
57
+ if (typeof entityType === "function")
58
+ entityType = entityTypeForCtor(entityType);
59
+ // Inline, not assertParam: an EntityKey is built for every entity and again for every
60
+ // foreign key the relationship fixup resolves. Same wording.
61
+ if (!(entityType instanceof EntityType)) {
62
+ throw paramError('entityType', "must be an instance of 'EntityType'");
63
+ }
64
+ // Only types that take part in an inheritance hierarchy need this, and getSelfAndSubtypes
65
+ // allocates an array and walks the hierarchy to find that out. Guarding on `subtypes` keeps
66
+ // the common case - a type with no subtypes, where the walk can only return [this] -
67
+ // allocation-free. `subtypes` is filled while metadata is built and not touched after.
68
+ if (entityType.subtypes.length > 0) {
69
+ let subtypes = entityType.getSelfAndSubtypes();
70
+ if (subtypes.length > 1) {
71
+ this._subtypes = subtypes.filter(function (st) {
72
+ return st.isAbstract === false;
73
+ });
74
+ }
75
+ }
76
+ if (!Array.isArray(keyValues)) {
77
+ keyValues = isPlainObject(keyValues) ? keyValuesByName(entityType, keyValues) : [keyValues];
78
+ }
79
+ this.entityType = entityType;
80
+ entityType.keyProperties.forEach(function (kp, i) {
81
+ // insure that guid keys are comparable.
82
+ if (kp.dataType === DataType.Guid) {
83
+ keyValues[i] = keyValues[i] && keyValues[i].toLowerCase ? keyValues[i].toLowerCase() : keyValues[i];
84
+ }
85
+ });
86
+ this.values = keyValues;
87
+ this._keyInGroup = EntityKey.createKeyString(keyValues);
88
+ }
89
+ /** Returns the plain form of this key - `{ entityType, values }`, with the entity type's qualified
90
+ name - which `JSON.stringify` uses and {@link EntityKey.fromJSON} turns back into a key. Breeze
91
+ uses it to record temporary keys in an {@link EntityManager.exportEntities} bundle. */
92
+ toJSON() {
93
+ return {
94
+ /** The qualified name of the key's entity type, such as `"Customer:#Northwind.Models"`. */
95
+ entityType: this.entityType.name,
96
+ /** The key's values, one per key property. */
97
+ values: this.values
98
+ };
99
+ }
100
+ /** Recreates a key from the output of {@link EntityKey.toJSON}, looking its entity type up in
101
+ `metadataStore`. Throws if the type is not there. Used by {@link EntityManager.importEntities}. */
102
+ static fromJSON(json, metadataStore) {
103
+ let et = metadataStore._getStructuralType(json.entityType, true);
104
+ return new EntityKey(et, json.values);
105
+ }
106
+ /**
107
+ Used to compare EntityKeys are determine if they refer to the same Entity.
108
+ There is also an static version of 'equals' with the same functionality.
109
+
110
+ ```ts
111
+ // assume Employee is registered with the MetadataStore
112
+ const empKey1 = new EntityKey(Employee, 1);
113
+ // assume employee1 is an existing Employee entity
114
+ const empKey2 = employee1.entityAspect.getKey();
115
+ if (empKey1.equals(empKey2)) {
116
+ // do something ...
117
+ }
118
+ ```
119
+ */
120
+ equals(entityKey) {
121
+ if (!(entityKey instanceof EntityKey))
122
+ return false;
123
+ return (this.entityType === entityKey.entityType) &&
124
+ core.arrayEquals(this.values, entityKey.values);
125
+ }
126
+ /** Returns this key as a string: the entity type's qualified name, a hyphen, and the key values
127
+ joined by `:::` - such as `"Order:#Northwind.Models-10248"`. Given `altEntityType`, that type's
128
+ name is used instead. Breeze uses this form in error messages and as the property names of an
129
+ {@link ITempKeyMap}. */
130
+ /*
131
+ Returns a human readable representation of this EntityKey.
132
+ */
133
+ toString(altEntityType) {
134
+ return (altEntityType || this.entityType).name + '-' + this._keyInGroup;
135
+ }
136
+ /**
137
+ Used to compare EntityKeys are determine if they refer to the same Entity.
138
+ There is also an instance version of 'equals' with the same functionality.
139
+ ```ts
140
+ // assume Employee is registered with the MetadataStore
141
+ const empKey1 = new EntityKey(Employee, 1);
142
+ // assume employee1 is an existing Employee entity
143
+ const empKey2 = employee1.entityAspect.getKey();
144
+ if (EntityKey.equals(empKey1, empKey2)) {
145
+ // do something ...
146
+ }
147
+ ```
148
+ */
149
+ static equals(k1, k2) {
150
+ if (!(k1 instanceof EntityKey))
151
+ return false;
152
+ return k1.equals(k2);
153
+ }
154
+ /** @hidden @internal */
155
+ // TODO: we may want to compare to default values later.
156
+ _isEmpty() {
157
+ return this.values.join("").length === 0;
158
+ }
159
+ /** hidden */
160
+ // TODO: think about giving _ prefix or documenting.
161
+ static createKeyString(keyValues) {
162
+ return keyValues.join(EntityKey.ENTITY_KEY_DELIMITER);
163
+ }
164
+ }
165
+ EntityKey.prototype._$typeName = "EntityKey";
166
+ /** An object literal - not an array, a Date, or any other object a single key value could be. */
167
+ function isPlainObject(value) {
168
+ if (value === null || typeof value !== 'object')
169
+ return false;
170
+ const proto = Object.getPrototypeOf(value);
171
+ return proto === Object.prototype || proto === null;
172
+ }
173
+ /** The key values given by name, put in the order of the type's key properties. */
174
+ function keyValuesByName(entityType, values) {
175
+ const keyProps = entityType.keyProperties;
176
+ const names = keyProps.map(kp => kp.name);
177
+ for (const name of Object.keys(values)) {
178
+ if (!names.includes(name)) {
179
+ throw new Error(`'${name}' is not part of the key of ${entityType.name}, which is ${names.join(', ')}.`);
180
+ }
181
+ }
182
+ return keyProps.map(kp => {
183
+ if (!(kp.name in values)) {
184
+ throw new Error(`The key of ${entityType.name} is ${names.join(', ')}; no value was given for '${kp.name}'.`);
185
+ }
186
+ return values[kp.name];
187
+ });
188
+ }
189
+ //# sourceMappingURL=entity-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-key.js","sourceRoot":"","sources":["../../src/entity/entity-key.ts"],"names":[],"mappings":"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","sourcesContent":["import { core } from '../core/core.js';\nimport { paramError } from '../core/assert-param.js';\nimport { EntityType, MetadataStore, entityTypeForCtor } from '../metadata/entity-metadata.js';\nimport type { Entity } from './entity-aspect.js';\nimport { DataType } from '../metadata/data-type.js';\n\n/**\nAn EntityKey is an object that represents the unique identity of an entity. EntityKey's are immutable.\n\n\n*/\nexport class EntityKey {\n /** @hidden @internal */\n declare _$typeName: string; // actually placed on prototype\n /** @hidden @internal */\n static ENTITY_KEY_DELIMITER = \":::\";\n /** The 'EntityType' that this is a key for. __Read Only__ */\n entityType: EntityType;\n /** An array of the values for this key. This will usually only have a single element, \n unless the entity type has a multipart key. __Read Only__ */\n values: any[];\n /** @hidden @internal */\n _keyInGroup: string;\n /** @hidden @internal */\n _subtypes: EntityType[];\n\n /**\n Constructs a new EntityKey. Each entity within an EntityManager will have a unique EntityKey.\n ```ts\n // assume Employee is registered with the MetadataStore\n const entityKey = new EntityKey(Employee, 1);\n ```\n\n EntityKey's may also be found by calling EntityAspect.getKey()\n ```ts\n // assume employee1 is an existing Employee entity\n const empKey = employee1.entityAspect.getKey();\n ```\n\n A key of more than one property is clearest given by name, in any order:\n ```ts\n const detailKey = new EntityKey(OrderDetail, { orderID: 10248, productID: 11 });\n ```\n\n or as an array, in the order of the type's {@link EntityType.keyProperties}: the order of the\n key's definition on the server - `HasKey(od => new { od.OrderID, od.ProductID })` - which a\n generated entity class states in its doc comment, as `Key: orderID, productID`.\n ```ts\n const sameKey = new EntityKey(OrderDetail, [10248, 11]);\n ```\n A wrong order is not an error - it is a valid key for another row - which is why the named form\n is better for these.\n @param entityType - The {@link EntityType} of the entity, or a class registered for it with\n {@link MetadataStore.registerEntityTypeCtor}.\n @param keyValues - The key's value; for a key of more than one property, an object of values by\n property name, or an array in key order. A named value that is not part of the key, or a key\n property with no value, throws.\n */\n constructor(entityType: EntityType | (new () => Entity), keyValues: any) {\n // A class stands for its registered type. Checked by typeof first, so the EntityType that\n // Breeze itself always passes costs one comparison.\n if (typeof entityType === \"function\") entityType = entityTypeForCtor(entityType);\n // Inline, not assertParam: an EntityKey is built for every entity and again for every\n // foreign key the relationship fixup resolves. Same wording.\n if (!(entityType instanceof EntityType)) {\n throw paramError('entityType', \"must be an instance of 'EntityType'\");\n }\n // Only types that take part in an inheritance hierarchy need this, and getSelfAndSubtypes\n // allocates an array and walks the hierarchy to find that out. Guarding on `subtypes` keeps\n // the common case - a type with no subtypes, where the walk can only return [this] -\n // allocation-free. `subtypes` is filled while metadata is built and not touched after.\n if (entityType.subtypes.length > 0) {\n let subtypes = entityType.getSelfAndSubtypes();\n if (subtypes.length > 1) {\n this._subtypes = subtypes.filter(function (st) {\n return st.isAbstract === false;\n });\n }\n }\n\n if (!Array.isArray(keyValues)) {\n keyValues = isPlainObject(keyValues) ? keyValuesByName(entityType, keyValues) : [keyValues];\n }\n\n this.entityType = entityType;\n entityType.keyProperties.forEach(function (kp, i) {\n // insure that guid keys are comparable.\n if (kp.dataType === DataType.Guid) {\n keyValues[i] = keyValues[i] && keyValues[i].toLowerCase ? keyValues[i].toLowerCase() : keyValues[i];\n }\n });\n\n this.values = keyValues;\n this._keyInGroup = EntityKey.createKeyString(keyValues);\n\n }\n\n\n /** Returns the plain form of this key - `{ entityType, values }`, with the entity type's qualified\n name - which `JSON.stringify` uses and {@link EntityKey.fromJSON} turns back into a key. Breeze\n uses it to record temporary keys in an {@link EntityManager.exportEntities} bundle. */\n toJSON() {\n return {\n /** The qualified name of the key's entity type, such as `\"Customer:#Northwind.Models\"`. */\n entityType: this.entityType.name,\n /** The key's values, one per key property. */\n values: this.values\n };\n }\n\n /** Recreates a key from the output of {@link EntityKey.toJSON}, looking its entity type up in\n `metadataStore`. Throws if the type is not there. Used by {@link EntityManager.importEntities}. */\n static fromJSON(json: any, metadataStore: MetadataStore) {\n let et = metadataStore._getStructuralType(json.entityType, true) as EntityType;\n return new EntityKey(et, json.values);\n }\n\n /**\n Used to compare EntityKeys are determine if they refer to the same Entity.\n There is also an static version of 'equals' with the same functionality.\n\n ```ts\n // assume Employee is registered with the MetadataStore\n const empKey1 = new EntityKey(Employee, 1);\n // assume employee1 is an existing Employee entity\n const empKey2 = employee1.entityAspect.getKey();\n if (empKey1.equals(empKey2)) {\n // do something ...\n }\n ```\n */\n equals(entityKey: EntityKey): boolean {\n if (!(entityKey instanceof EntityKey)) return false;\n return (this.entityType === entityKey.entityType) &&\n core.arrayEquals(this.values, entityKey.values);\n }\n\n /** Returns this key as a string: the entity type's qualified name, a hyphen, and the key values\n joined by `:::` - such as `\"Order:#Northwind.Models-10248\"`. Given `altEntityType`, that type's\n name is used instead. Breeze uses this form in error messages and as the property names of an\n {@link ITempKeyMap}. */\n /*\n Returns a human readable representation of this EntityKey.\n */\n toString(altEntityType?: EntityType) {\n return (altEntityType || this.entityType).name + '-' + this._keyInGroup;\n }\n\n /**\n Used to compare EntityKeys are determine if they refer to the same Entity.\n There is also an instance version of 'equals' with the same functionality.\n ```ts\n // assume Employee is registered with the MetadataStore\n const empKey1 = new EntityKey(Employee, 1);\n // assume employee1 is an existing Employee entity\n const empKey2 = employee1.entityAspect.getKey();\n if (EntityKey.equals(empKey1, empKey2)) {\n // do something ...\n }\n ```\n */\n static equals(k1: EntityKey, k2: EntityKey) {\n if (!(k1 instanceof EntityKey)) return false;\n return k1.equals(k2);\n }\n\n /** @hidden @internal */\n // TODO: we may want to compare to default values later.\n _isEmpty() {\n return this.values.join(\"\").length === 0;\n }\n\n /** hidden */\n // TODO: think about giving _ prefix or documenting.\n static createKeyString(keyValues: any[]) {\n return keyValues.join(EntityKey.ENTITY_KEY_DELIMITER);\n }\n\n}\nEntityKey.prototype._$typeName = \"EntityKey\";\n\n/** An object literal - not an array, a Date, or any other object a single key value could be. */\nfunction isPlainObject(value: any): value is Record<string, any> {\n if (value === null || typeof value !== 'object') return false;\n const proto = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\n\n/** The key values given by name, put in the order of the type's key properties. */\nfunction keyValuesByName(entityType: EntityType, values: Record<string, any>) {\n const keyProps = entityType.keyProperties;\n const names = keyProps.map(kp => kp.name);\n for (const name of Object.keys(values)) {\n if (!names.includes(name)) {\n throw new Error(`'${name}' is not part of the key of ${entityType.name}, which is ${names.join(', ')}.`);\n }\n }\n return keyProps.map(kp => {\n if (!(kp.name in values)) {\n throw new Error(`The key of ${entityType.name} is ${names.join(', ')}; no value was given for '${kp.name}'.`);\n }\n return values[kp.name];\n });\n}\n\n\n"]}
@@ -1,84 +1,112 @@
1
- import { BreezeEnum } from './enum';
2
- /**
3
- EntityState is an 'Enum' containing all of the valid states for an 'Entity'.
4
- **/
5
- export declare class EntityState extends BreezeEnum {
6
- /** The 'Unchanged' state. **/
7
- static Unchanged: EntityState;
8
- /** The 'Added' state. **/
9
- static Added: EntityState;
10
- /** The 'Modified' state. **/
11
- static Modified: EntityState;
12
- /** The 'Deleted' state. **/
13
- static Deleted: EntityState;
14
- /** The 'Detached' state. **/
15
- static Detached: EntityState;
16
- /**
17
- Returns whether an entityState instance is EntityState.Unchanged.
18
- > var es = anEntity.entityAspect.entityState;
19
- > return es.isUnchanged();
20
-
21
- is the same as
22
- > return es === EntityState.Unchanged;
23
- **/
24
- isUnchanged(): boolean;
25
- /**
26
- Return whether an entityState instance is EntityState.Added.
27
-
28
- > var es = anEntity.entityAspect.entityState;
29
- > return es.isAdded();
30
-
31
- is the same as
32
- > return es === EntityState.Added;
33
- **/
34
- isAdded(): boolean;
35
- /**
36
- Returns whether an entityState instance is EntityState.Modified.
37
- > var es = anEntity.entityAspect.entityState;
38
- > return es.isModified();
39
-
40
- is the same as
41
- > return es === EntityState.Modified;
42
- **/
43
- isModified(): boolean;
44
- /**
45
- Returns whether an entityState instance is EntityState.Deleted.
46
- > var es = anEntity.entityAspect.entityState;
47
- > return es.isDeleted();
48
-
49
- is the same as
50
-
51
- > return es === EntityState.Deleted;
52
- **/
53
- isDeleted(): boolean;
54
- /**
55
- Returns whether an entityState instance is EntityState.Detached.
56
- > var es = anEntity.entityAspect.entityState;
57
- > return es.isDetached();
58
-
59
- is the same as
60
- > return es === EntityState.Detached;
61
- **/
62
- isDetached(): boolean;
63
- /** Return true if EntityState is Deleted or Detached */
64
- isDeletedOrDetached(): boolean;
65
- /**
66
- Returns whether an entityState instance is EntityState.Unchanged or EntityState.Modified.
67
- > var es = anEntity.entityAspect.entityState;
68
- > return es.isUnchangedOrModified();
69
-
70
- is the same as
71
- > return es === EntityState.Unchanged || es === EntityState.Modified
72
- **/
73
- isUnchangedOrModified(): boolean;
74
- /** Return true if EntityStatis is Added or Modified */
75
- isAddedOrModified(): boolean;
76
- /** Returns whether an entityState instance is EntityState.Added or EntityState.Modified or EntityState.Deleted.
77
- > var es = anEntity.entityAspect.entityState;
78
- > return es.isAddedModifiedOrDeleted();
79
-
80
- is the same as
81
- > return es === EntityState.Added || es === EntityState.Modified || es === EntityState.Deleted
82
- **/
83
- isAddedModifiedOrDeleted(): boolean;
84
- }
1
+ import { BreezeEnum } from '../core/enum.js';
2
+ /**
3
+ EntityState is an 'Enum' containing all of the valid states for an 'Entity'.
4
+ */
5
+ export declare class EntityState extends BreezeEnum {
6
+ /** The 'Unchanged' state. */
7
+ static Unchanged: EntityState;
8
+ /** The 'Added' state. */
9
+ static Added: EntityState;
10
+ /** The 'Modified' state. */
11
+ static Modified: EntityState;
12
+ /** The 'Deleted' state. */
13
+ static Deleted: EntityState;
14
+ /** The 'Detached' state. */
15
+ static Detached: EntityState;
16
+ /**
17
+ Returns whether an entityState instance is EntityState.Unchanged.
18
+ ```ts
19
+ var es = anEntity.entityAspect.entityState;
20
+ return es.isUnchanged();
21
+ ```
22
+
23
+ is the same as
24
+ ```ts
25
+ return es === EntityState.Unchanged;
26
+ ```
27
+ */
28
+ isUnchanged(): boolean;
29
+ /**
30
+ Return whether an entityState instance is EntityState.Added.
31
+
32
+ ```ts
33
+ var es = anEntity.entityAspect.entityState;
34
+ return es.isAdded();
35
+ ```
36
+
37
+ is the same as
38
+ ```ts
39
+ return es === EntityState.Added;
40
+ ```
41
+ */
42
+ isAdded(): boolean;
43
+ /**
44
+ Returns whether an entityState instance is EntityState.Modified.
45
+ ```ts
46
+ var es = anEntity.entityAspect.entityState;
47
+ return es.isModified();
48
+ ```
49
+
50
+ is the same as
51
+ ```ts
52
+ return es === EntityState.Modified;
53
+ ```
54
+ */
55
+ isModified(): boolean;
56
+ /**
57
+ Returns whether an entityState instance is EntityState.Deleted.
58
+ ```ts
59
+ var es = anEntity.entityAspect.entityState;
60
+ return es.isDeleted();
61
+ ```
62
+
63
+ is the same as
64
+
65
+ ```ts
66
+ return es === EntityState.Deleted;
67
+ ```
68
+ */
69
+ isDeleted(): boolean;
70
+ /**
71
+ Returns whether an entityState instance is EntityState.Detached.
72
+ ```ts
73
+ var es = anEntity.entityAspect.entityState;
74
+ return es.isDetached();
75
+ ```
76
+
77
+ is the same as
78
+ ```ts
79
+ return es === EntityState.Detached;
80
+ ```
81
+ */
82
+ isDetached(): boolean;
83
+ /** Return true if EntityState is Deleted or Detached */
84
+ isDeletedOrDetached(): boolean;
85
+ /**
86
+ Returns whether an entityState instance is EntityState.Unchanged or EntityState.Modified.
87
+ ```ts
88
+ var es = anEntity.entityAspect.entityState;
89
+ return es.isUnchangedOrModified();
90
+ ```
91
+
92
+ is the same as
93
+ ```ts
94
+ return es === EntityState.Unchanged || es === EntityState.Modified
95
+ ```
96
+ */
97
+ isUnchangedOrModified(): boolean;
98
+ /** Return true if EntityStatis is Added or Modified */
99
+ isAddedOrModified(): boolean;
100
+ /** Returns whether an entityState instance is EntityState.Added or EntityState.Modified or EntityState.Deleted.
101
+ ```ts
102
+ var es = anEntity.entityAspect.entityState;
103
+ return es.isAddedModifiedOrDeleted();
104
+ ```
105
+
106
+ is the same as
107
+ ```ts
108
+ return es === EntityState.Added || es === EntityState.Modified || es === EntityState.Deleted
109
+ ```
110
+ */
111
+ isAddedModifiedOrDeleted(): boolean;
112
+ }
@@ -0,0 +1,135 @@
1
+ import { BreezeEnum } from '../core/enum.js';
2
+ /**
3
+ EntityState is an 'Enum' containing all of the valid states for an 'Entity'.
4
+ */
5
+ export class EntityState extends BreezeEnum {
6
+ /** The 'Unchanged' state. */
7
+ static Unchanged = new EntityState();
8
+ /** The 'Added' state. */
9
+ static Added = new EntityState();
10
+ /** The 'Modified' state. */
11
+ static Modified = new EntityState();
12
+ /** The 'Deleted' state. */
13
+ static Deleted = new EntityState();
14
+ /** The 'Detached' state. */
15
+ static Detached = new EntityState();
16
+ /**
17
+ Returns whether an entityState instance is EntityState.Unchanged.
18
+ ```ts
19
+ var es = anEntity.entityAspect.entityState;
20
+ return es.isUnchanged();
21
+ ```
22
+
23
+ is the same as
24
+ ```ts
25
+ return es === EntityState.Unchanged;
26
+ ```
27
+ */
28
+ isUnchanged() {
29
+ return this === EntityState.Unchanged;
30
+ }
31
+ /**
32
+ Return whether an entityState instance is EntityState.Added.
33
+
34
+ ```ts
35
+ var es = anEntity.entityAspect.entityState;
36
+ return es.isAdded();
37
+ ```
38
+
39
+ is the same as
40
+ ```ts
41
+ return es === EntityState.Added;
42
+ ```
43
+ */
44
+ isAdded() {
45
+ return this === EntityState.Added;
46
+ }
47
+ /**
48
+ Returns whether an entityState instance is EntityState.Modified.
49
+ ```ts
50
+ var es = anEntity.entityAspect.entityState;
51
+ return es.isModified();
52
+ ```
53
+
54
+ is the same as
55
+ ```ts
56
+ return es === EntityState.Modified;
57
+ ```
58
+ */
59
+ isModified() {
60
+ return this === EntityState.Modified;
61
+ }
62
+ /**
63
+ Returns whether an entityState instance is EntityState.Deleted.
64
+ ```ts
65
+ var es = anEntity.entityAspect.entityState;
66
+ return es.isDeleted();
67
+ ```
68
+
69
+ is the same as
70
+
71
+ ```ts
72
+ return es === EntityState.Deleted;
73
+ ```
74
+ */
75
+ isDeleted() {
76
+ return this === EntityState.Deleted;
77
+ }
78
+ /**
79
+ Returns whether an entityState instance is EntityState.Detached.
80
+ ```ts
81
+ var es = anEntity.entityAspect.entityState;
82
+ return es.isDetached();
83
+ ```
84
+
85
+ is the same as
86
+ ```ts
87
+ return es === EntityState.Detached;
88
+ ```
89
+ */
90
+ isDetached() {
91
+ return this === EntityState.Detached;
92
+ }
93
+ /** Return true if EntityState is Deleted or Detached */
94
+ isDeletedOrDetached() {
95
+ return this === EntityState.Deleted || this === EntityState.Detached;
96
+ }
97
+ /**
98
+ Returns whether an entityState instance is EntityState.Unchanged or EntityState.Modified.
99
+ ```ts
100
+ var es = anEntity.entityAspect.entityState;
101
+ return es.isUnchangedOrModified();
102
+ ```
103
+
104
+ is the same as
105
+ ```ts
106
+ return es === EntityState.Unchanged || es === EntityState.Modified
107
+ ```
108
+ */
109
+ isUnchangedOrModified() {
110
+ return this === EntityState.Unchanged || this === EntityState.Modified;
111
+ }
112
+ /** Return true if EntityStatis is Added or Modified */
113
+ isAddedOrModified() {
114
+ return this === EntityState.Added || this === EntityState.Modified;
115
+ }
116
+ /** Returns whether an entityState instance is EntityState.Added or EntityState.Modified or EntityState.Deleted.
117
+ ```ts
118
+ var es = anEntity.entityAspect.entityState;
119
+ return es.isAddedModifiedOrDeleted();
120
+ ```
121
+
122
+ is the same as
123
+ ```ts
124
+ return es === EntityState.Added || es === EntityState.Modified || es === EntityState.Deleted
125
+ ```
126
+ */
127
+ isAddedModifiedOrDeleted() {
128
+ return this === EntityState.Added ||
129
+ this === EntityState.Modified ||
130
+ this === EntityState.Deleted;
131
+ }
132
+ }
133
+ EntityState.prototype._$typeName = "EntityState";
134
+ EntityState.resolveSymbols();
135
+ //# sourceMappingURL=entity-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-state.js","sourceRoot":"","sources":["../../src/entity/entity-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;EAEE;AACF,MAAM,OAAO,WAAY,SAAQ,UAAU;IAEzC,6BAA6B;IAC7B,MAAM,CAAC,SAAS,GAAG,IAAI,WAAW,EAAE,CAAC;IACrC,2BAA2B;IAC3B,MAAM,CAAC,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;IACjC,+BAA+B;IAC/B,MAAM,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;IACpC,6BAA6B;IAC7B,MAAM,CAAC,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IACnC,8BAA8B;IAC9B,MAAM,CAAC,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;IAEpC;;;;;;;;;;;MAWE;IACF,WAAW;QACT,OAAO,IAAI,KAAK,WAAW,CAAC,SAAS,CAAC;IACxC,CAAC;IAED;;;;;;;;;;;;MAYE;IACF,OAAO;QACL,OAAO,IAAI,KAAK,WAAW,CAAC,KAAK,CAAC;IACpC,CAAC;IAED;;;;;;;;;;;MAWE;IACF,UAAU;QACR,OAAO,IAAI,KAAK,WAAW,CAAC,QAAQ,CAAC;IACvC,CAAC;IAED;;;;;;;;;;;;MAYE;IACF,SAAS;QACP,OAAO,IAAI,KAAK,WAAW,CAAC,OAAO,CAAC;IACtC,CAAC;IAED;;;;;;;;;;;MAWE;IACF,UAAU;QACR,OAAO,IAAI,KAAK,WAAW,CAAC,QAAQ,CAAC;IACvC,CAAC;IAED,wDAAwD;IACxD,mBAAmB;QACjB,OAAO,IAAI,KAAK,WAAW,CAAC,OAAO,IAAI,IAAI,KAAK,WAAW,CAAC,QAAQ,CAAC;IACvE,CAAC;IAED;;;;;;;;;;;MAWE;IACF,qBAAqB;QACnB,OAAO,IAAI,KAAK,WAAW,CAAC,SAAS,IAAI,IAAI,KAAK,WAAW,CAAC,QAAQ,CAAC;IACzE,CAAC;IAED,uDAAuD;IACvD,iBAAiB;QACf,OAAO,IAAI,KAAK,WAAW,CAAC,KAAK,IAAI,IAAI,KAAK,WAAW,CAAC,QAAQ,CAAC;IACrE,CAAC;IAED;;;;;;;;;;MAUE;IACF,wBAAwB;QACtB,OAAO,IAAI,KAAK,WAAW,CAAC,KAAK;YAC/B,IAAI,KAAK,WAAW,CAAC,QAAQ;YAC7B,IAAI,KAAK,WAAW,CAAC,OAAO,CAAC;IACjC,CAAC;;AAGH,WAAW,CAAC,SAAS,CAAC,UAAU,GAAG,aAAa,CAAC;AACjD,WAAW,CAAC,cAAc,EAAE,CAAC","sourcesContent":["import { BreezeEnum } from '../core/enum.js';\r\n\r\n/**\r\nEntityState is an 'Enum' containing all of the valid states for an 'Entity'.\r\n*/\r\nexport class EntityState extends BreezeEnum {\r\n\r\n /** The 'Unchanged' state. */\r\n static Unchanged = new EntityState();\r\n /** The 'Added' state. */\r\n static Added = new EntityState();\r\n /** The 'Modified' state. */\r\n static Modified = new EntityState();\r\n /** The 'Deleted' state. */\r\n static Deleted = new EntityState();\r\n /** The 'Detached' state. */\r\n static Detached = new EntityState();\r\n\r\n /**\r\n Returns whether an entityState instance is EntityState.Unchanged.\r\n ```ts\r\n var es = anEntity.entityAspect.entityState;\r\n return es.isUnchanged();\r\n ```\r\n\r\n is the same as\r\n ```ts\r\n return es === EntityState.Unchanged;\r\n ```\r\n */\r\n isUnchanged() {\r\n return this === EntityState.Unchanged;\r\n }\r\n\r\n /**\r\n Return whether an entityState instance is EntityState.Added.\r\n \r\n ```ts\r\n var es = anEntity.entityAspect.entityState;\r\n return es.isAdded();\r\n ```\r\n\r\n is the same as\r\n ```ts\r\n return es === EntityState.Added;\r\n ```\r\n */\r\n isAdded() {\r\n return this === EntityState.Added;\r\n }\r\n\r\n /**\r\n Returns whether an entityState instance is EntityState.Modified.\r\n ```ts\r\n var es = anEntity.entityAspect.entityState;\r\n return es.isModified();\r\n ```\r\n\r\n is the same as\r\n ```ts\r\n return es === EntityState.Modified;\r\n ```\r\n */\r\n isModified() {\r\n return this === EntityState.Modified;\r\n }\r\n\r\n /**\r\n Returns whether an entityState instance is EntityState.Deleted.\r\n ```ts\r\n var es = anEntity.entityAspect.entityState;\r\n return es.isDeleted();\r\n ```\r\n\r\n is the same as\r\n \r\n ```ts\r\n return es === EntityState.Deleted;\r\n ```\r\n */\r\n isDeleted() {\r\n return this === EntityState.Deleted;\r\n }\r\n\r\n /**\r\n Returns whether an entityState instance is EntityState.Detached.\r\n ```ts\r\n var es = anEntity.entityAspect.entityState;\r\n return es.isDetached();\r\n ```\r\n\r\n is the same as\r\n ```ts\r\n return es === EntityState.Detached;\r\n ```\r\n */\r\n isDetached() {\r\n return this === EntityState.Detached;\r\n }\r\n\r\n /** Return true if EntityState is Deleted or Detached */\r\n isDeletedOrDetached() {\r\n return this === EntityState.Deleted || this === EntityState.Detached;\r\n }\r\n\r\n /**\r\n Returns whether an entityState instance is EntityState.Unchanged or EntityState.Modified.\r\n ```ts\r\n var es = anEntity.entityAspect.entityState;\r\n return es.isUnchangedOrModified();\r\n ```\r\n\r\n is the same as\r\n ```ts\r\n return es === EntityState.Unchanged || es === EntityState.Modified\r\n ```\r\n */\r\n isUnchangedOrModified() {\r\n return this === EntityState.Unchanged || this === EntityState.Modified;\r\n }\r\n\r\n /** Return true if EntityStatis is Added or Modified */\r\n isAddedOrModified() {\r\n return this === EntityState.Added || this === EntityState.Modified;\r\n }\r\n\r\n /** Returns whether an entityState instance is EntityState.Added or EntityState.Modified or EntityState.Deleted.\r\n ```ts\r\n var es = anEntity.entityAspect.entityState;\r\n return es.isAddedModifiedOrDeleted();\r\n ```\r\n\r\n is the same as\r\n ```ts\r\n return es === EntityState.Added || es === EntityState.Modified || es === EntityState.Deleted\r\n ```\r\n */\r\n isAddedModifiedOrDeleted() {\r\n return this === EntityState.Added ||\r\n this === EntityState.Modified ||\r\n this === EntityState.Deleted;\r\n }\r\n\r\n}\r\nEntityState.prototype._$typeName = \"EntityState\";\r\nEntityState.resolveSymbols();\r\n"]}