@singularsystems/neo-core 1.0.0-alpha.3 → 1.0.0-alpha.4

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 (296) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/ApiClient/ApiClientBase.d.ts +5 -5
  3. package/dist/ApiClient/ApiClientBase.js +13 -13
  4. package/dist/ApiClient/ReadApiClient.d.ts +16 -16
  5. package/dist/ApiClient/ReadApiClient.js +24 -24
  6. package/dist/ApiClient/UpdateableApiClient.d.ts +28 -28
  7. package/dist/ApiClient/UpdateableApiClient.js +33 -33
  8. package/dist/AppServices/AppService.d.ts +46 -46
  9. package/dist/AppServices/AppService.js +25 -25
  10. package/dist/AppServices/Config/ConfigModel.d.ts +21 -20
  11. package/dist/AppServices/Config/ConfigModel.js +28 -17
  12. package/dist/AppServices/Config/ConfigService.d.ts +15 -15
  13. package/dist/AppServices/Config/ConfigService.js +49 -53
  14. package/dist/AppServices/Module.d.ts +11 -11
  15. package/dist/AppServices/Module.js +13 -13
  16. package/dist/AppServices/NeoContainer.d.ts +22 -22
  17. package/dist/AppServices/NeoContainer.js +42 -42
  18. package/dist/AppServices/NeoModule.d.ts +3 -3
  19. package/dist/AppServices/NeoModule.js +30 -30
  20. package/dist/AppServices/NeoTypes.d.ts +61 -61
  21. package/dist/AppServices/NeoTypes.js +42 -42
  22. package/dist/AppServices/ServiceIdentifier.d.ts +23 -23
  23. package/dist/AppServices/ServiceIdentifier.js +38 -39
  24. package/dist/AppServices/index.d.ts +7 -7
  25. package/dist/AppServices/index.js +7 -7
  26. package/dist/Components/AnimationHelper.d.ts +69 -69
  27. package/dist/Components/AnimationHelper.js +182 -182
  28. package/dist/Components/BootstrapHelpers.d.ts +8 -8
  29. package/dist/Components/BootstrapHelpers.js +30 -30
  30. package/dist/Components/BootstrapTypes.d.ts +35 -35
  31. package/dist/Components/BootstrapTypes.js +1 -1
  32. package/dist/Components/ButtonOptions.d.ts +63 -61
  33. package/dist/Components/ButtonOptions.js +1 -1
  34. package/dist/Components/ContextMenu/ContextMenu.d.ts +16 -16
  35. package/dist/Components/ContextMenu/ContextMenu.js +1 -1
  36. package/dist/Components/ContextMenu/MenuUtils.d.ts +16 -16
  37. package/dist/Components/ContextMenu/MenuUtils.js +34 -34
  38. package/dist/Components/DatePicker/DatePicker.d.ts +70 -69
  39. package/dist/Components/DatePicker/DatePicker.js +502 -487
  40. package/dist/Components/DatePicker/DatePickerOptions.d.ts +43 -34
  41. package/dist/Components/DatePicker/DatePickerOptions.js +33 -33
  42. package/dist/Components/ErrorHandler.d.ts +59 -55
  43. package/dist/Components/ErrorHandler.js +210 -138
  44. package/dist/Components/FileManager/BoundFileManager.d.ts +18 -18
  45. package/dist/Components/FileManager/BoundFileManager.js +60 -60
  46. package/dist/Components/FileManager/FileManager.d.ts +80 -78
  47. package/dist/Components/FileManager/FileManager.js +277 -257
  48. package/dist/Components/FileManager/FileUploadBatch.d.ts +37 -37
  49. package/dist/Components/FileManager/FileUploadBatch.js +83 -82
  50. package/dist/Components/FileManager/IFileManagerOptions.d.ts +42 -42
  51. package/dist/Components/FileManager/IFileManagerOptions.js +1 -1
  52. package/dist/Components/FormOptions.d.ts +34 -34
  53. package/dist/Components/FormOptions.js +1 -1
  54. package/dist/Components/ICollapsableOptions.d.ts +11 -11
  55. package/dist/Components/ICollapsableOptions.js +1 -1
  56. package/dist/Components/Modal/ModalHelper.d.ts +31 -31
  57. package/dist/Components/Modal/ModalHelper.js +174 -174
  58. package/dist/Components/Modal/ModalOptions.d.ts +61 -61
  59. package/dist/Components/Modal/ModalOptions.js +1 -1
  60. package/dist/Components/Modal/ModalStore.d.ts +32 -32
  61. package/dist/Components/Modal/ModalStore.js +82 -82
  62. package/dist/Components/Modal/ModalUtils.d.ts +61 -61
  63. package/dist/Components/Modal/ModalUtils.js +109 -109
  64. package/dist/Components/Notifications/INotificationHelper.d.ts +56 -56
  65. package/dist/Components/Notifications/INotificationHelper.js +1 -1
  66. package/dist/Components/Notifications/Notification.d.ts +32 -32
  67. package/dist/Components/Notifications/Notification.js +26 -27
  68. package/dist/Components/Notifications/NotificationHelper.d.ts +63 -63
  69. package/dist/Components/Notifications/NotificationHelper.js +111 -112
  70. package/dist/Components/Notifications/NotificationStore.d.ts +34 -34
  71. package/dist/Components/Notifications/NotificationStore.js +78 -79
  72. package/dist/Components/PositionHelper.d.ts +10 -10
  73. package/dist/Components/PositionHelper.js +43 -43
  74. package/dist/Components/TaskRunner/Decorators.d.ts +6 -6
  75. package/dist/Components/TaskRunner/Decorators.js +24 -24
  76. package/dist/Components/TaskRunner/ProgressState.d.ts +22 -22
  77. package/dist/Components/TaskRunner/ProgressState.js +71 -72
  78. package/dist/Components/TaskRunner/TaskRunner.d.ts +114 -114
  79. package/dist/Components/TaskRunner/TaskRunner.js +253 -244
  80. package/dist/Components/TooltipOptions.d.ts +8 -8
  81. package/dist/Components/TooltipOptions.js +1 -1
  82. package/dist/Components/index.d.ts +22 -22
  83. package/dist/Components/index.js +13 -13
  84. package/dist/ConnectionManager.d.ts +45 -45
  85. package/dist/ConnectionManager.js +60 -61
  86. package/dist/Data/ApiDataSource.d.ts +46 -46
  87. package/dist/Data/ApiDataSource.js +140 -144
  88. package/dist/Data/AsyncDataSource.d.ts +35 -35
  89. package/dist/Data/AsyncDataSource.js +79 -80
  90. package/dist/Data/CacheService.d.ts +40 -40
  91. package/dist/Data/CacheService.js +63 -64
  92. package/dist/Data/DataCacheEntry.d.ts +42 -42
  93. package/dist/Data/DataCacheEntry.js +80 -80
  94. package/dist/Data/DataView.d.ts +43 -43
  95. package/dist/Data/DataView.js +173 -172
  96. package/dist/Data/Deserialiser.d.ts +42 -42
  97. package/dist/Data/Deserialiser.js +255 -255
  98. package/dist/Data/Paging/PageManager.d.ts +167 -167
  99. package/dist/Data/Paging/PageManager.js +323 -323
  100. package/dist/Data/Paging/PageRequest.d.ts +24 -24
  101. package/dist/Data/Paging/PageRequest.js +38 -39
  102. package/dist/Data/Paging/PageResult.d.ts +10 -10
  103. package/dist/Data/Paging/PageResult.js +14 -14
  104. package/dist/Data/Serialiser.d.ts +41 -41
  105. package/dist/Data/Serialiser.js +201 -201
  106. package/dist/Data/SortOperation.d.ts +8 -8
  107. package/dist/Data/SortOperation.js +26 -26
  108. package/dist/Data/StaticDataSource.d.ts +9 -9
  109. package/dist/Data/StaticDataSource.js +27 -27
  110. package/dist/Data/WindowedDataView.d.ts +8 -8
  111. package/dist/Data/WindowedDataView.js +49 -50
  112. package/dist/Data/index.d.ts +15 -15
  113. package/dist/Data/index.js +15 -15
  114. package/dist/Dates/DateUtils.d.ts +47 -47
  115. package/dist/Dates/DateUtils.js +226 -226
  116. package/dist/Dates/TimeSpan.d.ts +24 -24
  117. package/dist/Dates/TimeSpan.js +46 -46
  118. package/dist/DebounceHelper.d.ts +44 -38
  119. package/dist/DebounceHelper.js +122 -95
  120. package/dist/Extensions.d.ts +82 -82
  121. package/dist/Extensions.js +182 -182
  122. package/dist/FileUtils.d.ts +6 -6
  123. package/dist/FileUtils.js +37 -37
  124. package/dist/Globals.d.ts +19 -19
  125. package/dist/Globals.js +41 -41
  126. package/dist/JsonSchema/ClassMetadata.d.ts +25 -25
  127. package/dist/JsonSchema/ClassMetadata.js +53 -53
  128. package/dist/JsonSchema/JsonData.d.ts +16 -16
  129. package/dist/JsonSchema/JsonData.js +97 -97
  130. package/dist/JsonSchema/JsonSchemaTypes.d.ts +37 -37
  131. package/dist/JsonSchema/JsonSchemaTypes.js +1 -1
  132. package/dist/JsonSchema/PropertyMetadata.d.ts +8 -8
  133. package/dist/JsonSchema/PropertyMetadata.js +8 -8
  134. package/dist/JsonSchema/TypeCache.d.ts +16 -16
  135. package/dist/JsonSchema/TypeCache.js +44 -44
  136. package/dist/JsonSchema/TypeMetadata.d.ts +45 -45
  137. package/dist/JsonSchema/TypeMetadata.js +170 -170
  138. package/dist/JsonSchema/index.d.ts +7 -7
  139. package/dist/JsonSchema/index.js +6 -6
  140. package/dist/Localisation/ILocalisationService.d.ts +11 -11
  141. package/dist/Localisation/ILocalisationService.js +1 -1
  142. package/dist/Localisation/LocalisationService.d.ts +4 -4
  143. package/dist/Localisation/LocalisationService.js +17 -17
  144. package/dist/Localisation/index.d.ts +1 -1
  145. package/dist/Localisation/index.js +1 -1
  146. package/dist/Misc.d.ts +6 -6
  147. package/dist/Misc.js +6 -6
  148. package/dist/Model/BaseModels/AuditValues.d.ts +12 -12
  149. package/dist/Model/BaseModels/AuditValues.js +46 -48
  150. package/dist/Model/BaseModels/CriteriaBase.d.ts +18 -16
  151. package/dist/Model/BaseModels/CriteriaBase.js +45 -34
  152. package/dist/Model/BaseModels/FileDescriptorBase.d.ts +12 -12
  153. package/dist/Model/BaseModels/FileDescriptorBase.js +22 -22
  154. package/dist/Model/BaseModels/ReasonedUserEvent.d.ts +5 -4
  155. package/dist/Model/BaseModels/ReasonedUserEvent.js +23 -19
  156. package/dist/Model/BaseModels/UserEvent.d.ts +9 -8
  157. package/dist/Model/BaseModels/UserEvent.js +36 -32
  158. package/dist/Model/BindableBase.d.ts +46 -40
  159. package/dist/Model/BindableBase.js +79 -76
  160. package/dist/Model/Decorators.d.ts +47 -44
  161. package/dist/Model/Decorators.js +182 -177
  162. package/dist/Model/EnumHelper.d.ts +54 -54
  163. package/dist/Model/EnumHelper.js +104 -100
  164. package/dist/Model/IAutoRunner.d.ts +5 -5
  165. package/dist/Model/IAutoRunner.js +1 -1
  166. package/dist/Model/IModelBase.d.ts +92 -79
  167. package/dist/Model/IModelBase.js +1 -1
  168. package/dist/Model/IModelCreatorBase.d.ts +9 -9
  169. package/dist/Model/IModelCreatorBase.js +1 -1
  170. package/dist/Model/List.d.ts +79 -77
  171. package/dist/Model/List.js +208 -198
  172. package/dist/Model/LookupBase.d.ts +13 -6
  173. package/dist/Model/LookupBase.js +19 -10
  174. package/dist/Model/Misc.d.ts +83 -81
  175. package/dist/Model/Misc.js +59 -59
  176. package/dist/Model/ModelBase.d.ts +88 -86
  177. package/dist/Model/ModelBase.js +182 -180
  178. package/dist/Model/ModelCreatorBase.d.ts +24 -23
  179. package/dist/Model/ModelCreatorBase.js +92 -92
  180. package/dist/Model/ModelFieldInfo.d.ts +29 -12
  181. package/dist/Model/ModelFieldInfo.js +35 -26
  182. package/dist/Model/ModelGraphTraverser.d.ts +35 -35
  183. package/dist/Model/ModelGraphTraverser.js +101 -99
  184. package/dist/Model/NeoModel.d.ts +6 -6
  185. package/dist/Model/NeoModel.js +13 -13
  186. package/dist/Model/NeoTypeInfo.d.ts +52 -41
  187. package/dist/Model/NeoTypeInfo.js +300 -250
  188. package/dist/Model/ObservableProperty.d.ts +8 -8
  189. package/dist/Model/ObservableProperty.js +41 -41
  190. package/dist/Model/ObservableValue.d.ts +9 -9
  191. package/dist/Model/ObservableValue.js +25 -26
  192. package/dist/Model/PropertyInfo.d.ts +83 -81
  193. package/dist/Model/PropertyInfo.js +138 -137
  194. package/dist/Model/PropertyInstance.d.ts +84 -48
  195. package/dist/Model/PropertyInstance.js +173 -113
  196. package/dist/Model/ValueObject.d.ts +3 -3
  197. package/dist/Model/ValueObject.js +10 -10
  198. package/dist/Model/index.d.ts +15 -14
  199. package/dist/Model/index.js +13 -12
  200. package/dist/NumberUtils.d.ts +63 -49
  201. package/dist/NumberUtils.js +247 -197
  202. package/dist/Routing/IMenuItemProvider.d.ts +9 -9
  203. package/dist/Routing/IMenuItemProvider.js +1 -1
  204. package/dist/Routing/IMenuRoute.d.ts +18 -18
  205. package/dist/Routing/IMenuRoute.js +1 -1
  206. package/dist/Routing/INavigationHelper.d.ts +7 -7
  207. package/dist/Routing/INavigationHelper.js +1 -1
  208. package/dist/Routing/IPageLeaveHandler.d.ts +23 -23
  209. package/dist/Routing/IPageLeaveHandler.js +7 -7
  210. package/dist/Routing/IRoute.d.ts +27 -27
  211. package/dist/Routing/IRoute.js +1 -1
  212. package/dist/Routing/IRouteSecurityService.d.ts +14 -14
  213. package/dist/Routing/IRouteSecurityService.js +1 -1
  214. package/dist/Routing/MenuItemProvider.d.ts +17 -17
  215. package/dist/Routing/MenuItemProvider.js +53 -54
  216. package/dist/Routing/RouteSecurityService.d.ts +18 -18
  217. package/dist/Routing/RouteSecurityService.js +35 -36
  218. package/dist/Routing/index.d.ts +7 -7
  219. package/dist/Routing/index.js +3 -3
  220. package/dist/Security/IAuthenticationService.d.ts +41 -36
  221. package/dist/Security/IAuthenticationService.js +1 -1
  222. package/dist/Security/IAuthorisationService.d.ts +11 -11
  223. package/dist/Security/IAuthorisationService.js +1 -1
  224. package/dist/Security/ILoginErrorHandler.d.ts +4 -4
  225. package/dist/Security/ILoginErrorHandler.js +1 -1
  226. package/dist/Security/ISecurityService.d.ts +10 -10
  227. package/dist/Security/ISecurityService.js +1 -1
  228. package/dist/Security/IUser.d.ts +10 -10
  229. package/dist/Security/IUser.js +1 -1
  230. package/dist/Security/IUserRole.d.ts +6 -6
  231. package/dist/Security/IUserRole.js +1 -1
  232. package/dist/Security/LoginErrorHandler.d.ts +15 -15
  233. package/dist/Security/LoginErrorHandler.js +97 -98
  234. package/dist/Security/Oidc/OidcAuthService.d.ts +67 -60
  235. package/dist/Security/Oidc/OidcAuthService.js +216 -189
  236. package/dist/Security/Oidc/OidcTypes.d.ts +46 -29
  237. package/dist/Security/Oidc/OidcTypes.js +1 -1
  238. package/dist/Security/Oidc/OidcUser.d.ts +9 -9
  239. package/dist/Security/Oidc/OidcUser.js +33 -33
  240. package/dist/Security/SecurityService.d.ts +12 -12
  241. package/dist/Security/SecurityService.js +33 -34
  242. package/dist/Security/SignInResult.d.ts +13 -13
  243. package/dist/Security/SignInResult.js +8 -8
  244. package/dist/Security/User.d.ts +12 -12
  245. package/dist/Security/User.js +24 -24
  246. package/dist/Security/index.d.ts +10 -10
  247. package/dist/Security/index.js +5 -5
  248. package/dist/Settings.d.ts +71 -57
  249. package/dist/Settings.js +100 -87
  250. package/dist/SignalR/HubBase.d.ts +70 -70
  251. package/dist/SignalR/HubBase.js +164 -164
  252. package/dist/SignalR/HubReceiver.d.ts +11 -11
  253. package/dist/SignalR/HubReceiver.js +25 -25
  254. package/dist/SignalR/HubSubscription.d.ts +12 -12
  255. package/dist/SignalR/HubSubscription.js +14 -14
  256. package/dist/SignalR/index.d.ts +3 -3
  257. package/dist/SignalR/index.js +1 -1
  258. package/dist/StringUtils.d.ts +7 -7
  259. package/dist/StringUtils.js +24 -24
  260. package/dist/Utils.d.ts +81 -80
  261. package/dist/Utils.js +220 -218
  262. package/dist/Validation/Decorators.d.ts +12 -12
  263. package/dist/Validation/Decorators.js +52 -52
  264. package/dist/Validation/DisplayHelper.d.ts +20 -19
  265. package/dist/Validation/DisplayHelper.js +104 -104
  266. package/dist/Validation/Misc.d.ts +10 -10
  267. package/dist/Validation/Misc.js +11 -11
  268. package/dist/Validation/ModelProxy.d.ts +20 -20
  269. package/dist/Validation/ModelProxy.js +46 -46
  270. package/dist/Validation/RuleContext.d.ts +86 -86
  271. package/dist/Validation/RuleContext.js +130 -130
  272. package/dist/Validation/Rules.d.ts +70 -70
  273. package/dist/Validation/Rules.js +177 -177
  274. package/dist/Validation/ValidationHelpers.d.ts +12 -12
  275. package/dist/Validation/ValidationHelpers.js +57 -57
  276. package/dist/Validation/ValidationRules.d.ts +18 -18
  277. package/dist/Validation/ValidationRules.js +34 -34
  278. package/dist/Validation/ValidationState.d.ts +42 -42
  279. package/dist/Validation/ValidationState.js +74 -74
  280. package/dist/Validation/Validators/IModelValidator.d.ts +28 -24
  281. package/dist/Validation/Validators/IModelValidator.js +1 -1
  282. package/dist/Validation/Validators/IPropertyValidator.d.ts +21 -21
  283. package/dist/Validation/Validators/IPropertyValidator.js +15 -15
  284. package/dist/Validation/Validators/ModelValidator.d.ts +46 -45
  285. package/dist/Validation/Validators/ModelValidator.js +143 -137
  286. package/dist/Validation/Validators/PropertyValidator.d.ts +21 -21
  287. package/dist/Validation/Validators/PropertyValidator.js +64 -67
  288. package/dist/Validation/Validators/RuleValidator.d.ts +19 -19
  289. package/dist/Validation/Validators/RuleValidator.js +51 -55
  290. package/dist/Validation/index.d.ts +9 -9
  291. package/dist/Validation/index.js +7 -7
  292. package/dist/Views/IViewBase.d.ts +5 -5
  293. package/dist/Views/IViewBase.js +1 -1
  294. package/dist/index.d.ts +37 -36
  295. package/dist/index.js +44 -43
  296. package/package.json +11 -10
@@ -1,42 +1,42 @@
1
- import { IModelBase, IBindableBase } from '../Model/IModelBase';
2
- import { PropertyInfoMap } from '../Model/PropertyInfo';
3
- interface IMapOptions {
4
- includeEntityIdentifiers?: boolean;
5
- }
6
- export interface IDeserialiseOptions {
7
- /**
8
- * True if array items that aren't in the from list must be removed from the to list.
9
- */
10
- removeOldItems?: boolean;
11
- /**
12
- * Set to true or IMapOptions object if this is a mapping operation.
13
- * Objects will be left new and dirty, or will inherit the from objects state if it has any.
14
- * EntityIdentifiers will be set based on options.
15
- */
16
- isMap?: boolean | IMapOptions;
17
- /**
18
- * If true, will set extra properties on the deserialised type from the raw data.
19
- * By default, only properties explicitly defined on the target type will be set.
20
- */
21
- allowExtraProperties?: boolean;
22
- }
23
- export declare class Deserialiser {
24
- private objectRefs;
25
- private suspendedObjects;
26
- private options;
27
- /**
28
- * Called before an object is deserialised. Object tracking should be suspended here. Must return the property info list.
29
- */
30
- protected beginObjectDeserialise(object: any): PropertyInfoMap | null;
31
- /**
32
- * Called after an object has been deserialised. Object tracking should be re-enabled here.
33
- */
34
- protected endObjectDeserialise(object: any, wasCreated: boolean): void;
35
- deserialise(from: object, to: IBindableBase | IBindableBase[], rootType?: new () => IModelBase, options?: IDeserialiseOptions, justCreated?: boolean): void;
36
- private cleanUp;
37
- private deserialiseArray;
38
- private deserialiseDictionary;
39
- private deserialiseObject;
40
- private getReferencedObject;
41
- }
42
- export {};
1
+ import { IModelBase, IBindableBase } from '../Model/IModelBase';
2
+ import { PropertyInfoMap } from '../Model/PropertyInfo';
3
+ interface IMapOptions {
4
+ includeEntityIdentifiers?: boolean;
5
+ }
6
+ export interface IDeserialiseOptions {
7
+ /**
8
+ * True if array items that aren't in the from list must be removed from the to list.
9
+ */
10
+ removeOldItems?: boolean;
11
+ /**
12
+ * Set to true or IMapOptions object if this is a mapping operation.
13
+ * Objects will be left new and dirty, or will inherit the from objects state if it has any.
14
+ * EntityIdentifiers will be set based on options.
15
+ */
16
+ isMap?: boolean | IMapOptions;
17
+ /**
18
+ * If true, will set extra properties on the deserialised type from the raw data.
19
+ * By default, only properties explicitly defined on the target type will be set.
20
+ */
21
+ allowExtraProperties?: boolean;
22
+ }
23
+ export declare class Deserialiser {
24
+ private objectRefs;
25
+ private suspendedObjects;
26
+ private options;
27
+ /**
28
+ * Called before an object is deserialised. Object tracking should be suspended here. Must return the property info list.
29
+ */
30
+ protected beginObjectDeserialise(object: any): PropertyInfoMap | null;
31
+ /**
32
+ * Called after an object has been deserialised. Object tracking should be re-enabled here.
33
+ */
34
+ protected endObjectDeserialise(object: any, wasCreated: boolean): void;
35
+ deserialise(from: object, to: IBindableBase | IBindableBase[], rootType?: new () => IModelBase, options?: IDeserialiseOptions, justCreated?: boolean): void;
36
+ private cleanUp;
37
+ private deserialiseArray;
38
+ private deserialiseDictionary;
39
+ private deserialiseObject;
40
+ private getReferencedObject;
41
+ }
42
+ export {};
@@ -1,255 +1,255 @@
1
- import { TrackingState, SerialiseType, DataType, RelationType } from '../Model/Misc';
2
- import { Utils } from '../Utils';
3
- import Decimal from 'decimal.js-light';
4
- var Deserialiser = /** @class */ (function () {
5
- function Deserialiser() {
6
- this.objectRefs = {};
7
- this.suspendedObjects = [];
8
- this.options = {};
9
- }
10
- /**
11
- * Called before an object is deserialised. Object tracking should be suspended here. Must return the property info list.
12
- */
13
- Deserialiser.prototype.beginObjectDeserialise = function (object) {
14
- var neoTypeInfo = object.constructor.neo;
15
- if (!neoTypeInfo) {
16
- throw "Tried to deserialise into an object without @NeoModel decorator.";
17
- }
18
- var propertyMap = neoTypeInfo === null || neoTypeInfo === void 0 ? void 0 : neoTypeInfo.propertyMap;
19
- if (propertyMap && object.isSuspended !== undefined) {
20
- object.isSuspended = true;
21
- this.suspendedObjects.push(object);
22
- }
23
- return propertyMap;
24
- };
25
- /**
26
- * Called after an object has been deserialised. Object tracking should be re-enabled here.
27
- */
28
- Deserialiser.prototype.endObjectDeserialise = function (object, wasCreated) {
29
- if (object.onDeserialiseCompleted !== undefined) {
30
- object.onDeserialiseCompleted(wasCreated);
31
- }
32
- };
33
- Deserialiser.prototype.deserialise = function (from, to, rootType, options, justCreated) {
34
- var _this = this;
35
- if (options === void 0) { options = {}; }
36
- if (justCreated === void 0) { justCreated = false; }
37
- this.options = options;
38
- this.objectRefs = {};
39
- this.suspendedObjects = [];
40
- try {
41
- Utils.batchUpdate(function () {
42
- if (from instanceof Array) {
43
- _this.deserialiseArray(from, to, rootType);
44
- }
45
- else {
46
- _this.deserialiseObject(from, to, justCreated);
47
- }
48
- });
49
- }
50
- catch (error) {
51
- throw "Deserialise error. ".concat(error);
52
- }
53
- finally {
54
- this.cleanUp();
55
- }
56
- };
57
- Deserialiser.prototype.cleanUp = function () {
58
- var _this = this;
59
- Utils.nextTick(function () {
60
- for (var _i = 0, _a = _this.suspendedObjects; _i < _a.length; _i++) {
61
- var obj = _a[_i];
62
- obj.isSuspended = false;
63
- }
64
- });
65
- };
66
- Deserialiser.prototype.deserialiseArray = function (from, to, type) {
67
- if (!to) {
68
- throw "Cannot deserialise array into a non initialised property.";
69
- }
70
- else if (!(to instanceof Array)) {
71
- throw "Tried to deserialise array into a non array type.";
72
- }
73
- //create an index of the to objects
74
- var toIndex = {};
75
- for (var i = 0; i < to.length; i++) {
76
- toIndex[to[i].entityIdentifier] = to[i];
77
- }
78
- if (this.options.removeOldItems) {
79
- to.length = 0;
80
- }
81
- for (var i = 0; i < from.length; i++) {
82
- var fromItem = from[i];
83
- var toItem = null;
84
- var addToList = true;
85
- var deserialise = true;
86
- var hasIdentifier = false;
87
- // find the object, if not found, create a new instance.
88
- if (fromItem.entityIdentifier && fromItem.entityIdentifier !== Utils.emptyGuid()) {
89
- toItem = toIndex[fromItem.entityIdentifier];
90
- hasIdentifier = true;
91
- }
92
- if (toItem) {
93
- // its already in the list
94
- addToList = false;
95
- }
96
- else {
97
- if (fromItem.$ref) {
98
- toItem = this.getReferencedObject(fromItem.$ref);
99
- deserialise = false;
100
- }
101
- else {
102
- if (type) {
103
- toItem = new type();
104
- }
105
- else {
106
- toItem = to.createChild();
107
- }
108
- }
109
- }
110
- if (deserialise)
111
- this.deserialiseObject(fromItem, toItem, addToList);
112
- if (addToList || this.options.removeOldItems) {
113
- to.push(toItem);
114
- if (hasIdentifier) {
115
- toIndex[fromItem.entityIdentifier] = toItem;
116
- }
117
- }
118
- }
119
- var list = to;
120
- if (list.deletedList) {
121
- list.clearDeletedList();
122
- }
123
- };
124
- Deserialiser.prototype.deserialiseDictionary = function (from, to, parentProperty) {
125
- for (var key in from) {
126
- var fromItem = from[key];
127
- if (fromItem.$ref) {
128
- to[key] = this.getReferencedObject(fromItem.$ref);
129
- }
130
- else {
131
- var mustCreate = !to[key];
132
- if (mustCreate) {
133
- to[key] = parentProperty.createValueInstance();
134
- }
135
- this.deserialiseObject(fromItem, to[key], mustCreate);
136
- }
137
- }
138
- };
139
- Deserialiser.prototype.deserialiseObject = function (from, to, justCreated) {
140
- if (!from || !to) {
141
- throw "From and to objects are required.";
142
- }
143
- if (to instanceof Array) {
144
- throw "Tried to deserialise object into an array type.";
145
- }
146
- var typeName = to.constructor.name;
147
- var propertyInfoList = this.beginObjectDeserialise(to);
148
- if (from.$id) {
149
- this.objectRefs[from.$id] = { from: from, to: to };
150
- }
151
- if (!propertyInfoList)
152
- propertyInfoList = {};
153
- for (var key in from) {
154
- if (from.hasOwnProperty(key)) {
155
- var propertyInfo = propertyInfoList[key];
156
- var canDeserialise = this.options.allowExtraProperties;
157
- if (propertyInfo) {
158
- canDeserialise = !propertyInfo.isComputed && !propertyInfo.isReadOnly &&
159
- ((propertyInfo.serialise === SerialiseType.Always) ||
160
- (propertyInfo.serialise === SerialiseType.NotNull) ||
161
- (propertyInfo.serialise === SerialiseType.MappingOnly && !!this.options.isMap) ||
162
- (propertyInfo.serialise === SerialiseType.FullOnly && (this.options.removeOldItems || justCreated)));
163
- }
164
- if (canDeserialise) {
165
- try {
166
- var fromValue = from[key];
167
- if (propertyInfo) {
168
- if (fromValue && propertyInfo.propertyType === DataType.Date) {
169
- to[key] = new Date(fromValue);
170
- }
171
- else if (fromValue !== null && propertyInfo.propertyType === DataType.Decimal) {
172
- to[key] = new Decimal(fromValue);
173
- }
174
- else {
175
- if (fromValue instanceof Array && !propertyInfo.assignOnDeserialise) {
176
- if (!to[key] || !(to[key] instanceof Array) || to[key].childObjectType) {
177
- // Deserialise into full list.
178
- this.deserialiseArray(fromValue, to[key], undefined);
179
- }
180
- else {
181
- // Plain array
182
- to[key] = fromValue;
183
- }
184
- }
185
- else if (propertyInfo.relationType === RelationType.Dictionary) {
186
- if (!to[key]) {
187
- to[key] = {};
188
- }
189
- this.deserialiseDictionary(fromValue, to[key], propertyInfo);
190
- }
191
- else if (fromValue instanceof Object && !propertyInfo.assignOnDeserialise) {
192
- // Properties of type Parent are ignored. Parent will be set when the item is added to a list.
193
- if (propertyInfo.relationType !== RelationType.Parent) {
194
- if (fromValue.$ref) {
195
- to[key] = this.getReferencedObject(fromValue.$ref);
196
- }
197
- else {
198
- var mustCreate = !to[key];
199
- if (mustCreate) {
200
- to[key] = propertyInfo.createValueInstance();
201
- }
202
- this.deserialiseObject(fromValue, to[key], mustCreate);
203
- }
204
- }
205
- }
206
- else {
207
- // Simple value, or null
208
- to[key] = fromValue;
209
- }
210
- }
211
- }
212
- else {
213
- // No type information, set raw value.
214
- to[key] = fromValue;
215
- }
216
- }
217
- catch (error) {
218
- throw "Error deserialising property '".concat(key, "' on type '").concat(typeName, "': ").concat(error);
219
- }
220
- }
221
- }
222
- }
223
- //ignore empty guids
224
- if (to.entityIdentifier !== undefined) {
225
- var toModel = to;
226
- if ((!this.options.isMap || this.options.isMap.includeEntityIdentifiers) &&
227
- from.entityIdentifier && from.entityIdentifier.indexOf('000000000000') === -1) {
228
- toModel.entityIdentifier = from.entityIdentifier;
229
- }
230
- if (!this.options.isMap) {
231
- if (!from.trackingState) {
232
- toModel.isSelfDirty = false;
233
- toModel.isNew = false;
234
- }
235
- else if (from.trackingState === TrackingState.Deleted) {
236
- //TODO: handle deleted objects coming from server?
237
- }
238
- else {
239
- toModel.isSelfDirty = true;
240
- toModel.isNew = from.trackingState === TrackingState.Added;
241
- }
242
- }
243
- }
244
- this.endObjectDeserialise(to, justCreated);
245
- };
246
- Deserialiser.prototype.getReferencedObject = function (id) {
247
- var found = this.objectRefs[id];
248
- if (!found) {
249
- throw "Cannot find $id: ".concat(id, ".");
250
- }
251
- return found.to;
252
- };
253
- return Deserialiser;
254
- }());
255
- export { Deserialiser };
1
+ import { TrackingState, SerialiseType, DataType, RelationType } from '../Model/Misc';
2
+ import { Utils } from '../Utils';
3
+ import Decimal from 'decimal.js-light';
4
+ var Deserialiser = /** @class */ (function () {
5
+ function Deserialiser() {
6
+ this.objectRefs = {};
7
+ this.suspendedObjects = [];
8
+ this.options = {};
9
+ }
10
+ /**
11
+ * Called before an object is deserialised. Object tracking should be suspended here. Must return the property info list.
12
+ */
13
+ Deserialiser.prototype.beginObjectDeserialise = function (object) {
14
+ var neoTypeInfo = object.constructor.neo;
15
+ if (!neoTypeInfo) {
16
+ throw "Tried to deserialise into an object without @NeoModel decorator.";
17
+ }
18
+ var propertyMap = neoTypeInfo === null || neoTypeInfo === void 0 ? void 0 : neoTypeInfo.propertyMap;
19
+ if (propertyMap && object.isSuspended !== undefined) {
20
+ object.isSuspended = true;
21
+ this.suspendedObjects.push(object);
22
+ }
23
+ return propertyMap;
24
+ };
25
+ /**
26
+ * Called after an object has been deserialised. Object tracking should be re-enabled here.
27
+ */
28
+ Deserialiser.prototype.endObjectDeserialise = function (object, wasCreated) {
29
+ if (object.onDeserialiseCompleted !== undefined) {
30
+ object.onDeserialiseCompleted(wasCreated);
31
+ }
32
+ };
33
+ Deserialiser.prototype.deserialise = function (from, to, rootType, options, justCreated) {
34
+ var _this = this;
35
+ if (options === void 0) { options = {}; }
36
+ if (justCreated === void 0) { justCreated = false; }
37
+ this.options = options;
38
+ this.objectRefs = {};
39
+ this.suspendedObjects = [];
40
+ try {
41
+ Utils.batchUpdate(function () {
42
+ if (from instanceof Array) {
43
+ _this.deserialiseArray(from, to, rootType);
44
+ }
45
+ else {
46
+ _this.deserialiseObject(from, to, justCreated);
47
+ }
48
+ });
49
+ }
50
+ catch (error) {
51
+ throw "Deserialise error. ".concat(error);
52
+ }
53
+ finally {
54
+ this.cleanUp();
55
+ }
56
+ };
57
+ Deserialiser.prototype.cleanUp = function () {
58
+ var _this = this;
59
+ Utils.nextTick(function () {
60
+ for (var _i = 0, _a = _this.suspendedObjects; _i < _a.length; _i++) {
61
+ var obj = _a[_i];
62
+ obj.isSuspended = false;
63
+ }
64
+ });
65
+ };
66
+ Deserialiser.prototype.deserialiseArray = function (from, to, type) {
67
+ if (!to) {
68
+ throw "Cannot deserialise array into a non initialised property.";
69
+ }
70
+ else if (!(to instanceof Array)) {
71
+ throw "Tried to deserialise array into a non array type.";
72
+ }
73
+ //create an index of the to objects
74
+ var toIndex = {};
75
+ for (var i = 0; i < to.length; i++) {
76
+ toIndex[to[i].entityIdentifier] = to[i];
77
+ }
78
+ if (this.options.removeOldItems) {
79
+ to.length = 0;
80
+ }
81
+ for (var i = 0; i < from.length; i++) {
82
+ var fromItem = from[i];
83
+ var toItem = null;
84
+ var addToList = true;
85
+ var deserialise = true;
86
+ var hasIdentifier = false;
87
+ // find the object, if not found, create a new instance.
88
+ if (fromItem.entityIdentifier && fromItem.entityIdentifier !== Utils.emptyGuid()) {
89
+ toItem = toIndex[fromItem.entityIdentifier];
90
+ hasIdentifier = true;
91
+ }
92
+ if (toItem) {
93
+ // its already in the list
94
+ addToList = false;
95
+ }
96
+ else {
97
+ if (fromItem.$ref) {
98
+ toItem = this.getReferencedObject(fromItem.$ref);
99
+ deserialise = false;
100
+ }
101
+ else {
102
+ if (type) {
103
+ toItem = new type();
104
+ }
105
+ else {
106
+ toItem = to.createChild();
107
+ }
108
+ }
109
+ }
110
+ if (deserialise)
111
+ this.deserialiseObject(fromItem, toItem, addToList);
112
+ if (addToList || this.options.removeOldItems) {
113
+ to.push(toItem);
114
+ if (hasIdentifier) {
115
+ toIndex[fromItem.entityIdentifier] = toItem;
116
+ }
117
+ }
118
+ }
119
+ var list = to;
120
+ if (list.deletedList) {
121
+ list.clearDeletedList();
122
+ }
123
+ };
124
+ Deserialiser.prototype.deserialiseDictionary = function (from, to, parentProperty) {
125
+ for (var key in from) {
126
+ var fromItem = from[key];
127
+ if (fromItem.$ref) {
128
+ to[key] = this.getReferencedObject(fromItem.$ref);
129
+ }
130
+ else {
131
+ var mustCreate = !to[key];
132
+ if (mustCreate) {
133
+ to[key] = parentProperty.createValueInstance();
134
+ }
135
+ this.deserialiseObject(fromItem, to[key], mustCreate);
136
+ }
137
+ }
138
+ };
139
+ Deserialiser.prototype.deserialiseObject = function (from, to, justCreated) {
140
+ if (!from || !to) {
141
+ throw "From and to objects are required.";
142
+ }
143
+ if (to instanceof Array) {
144
+ throw "Tried to deserialise object into an array type.";
145
+ }
146
+ var typeName = to.constructor.name;
147
+ var propertyInfoList = this.beginObjectDeserialise(to);
148
+ if (from.$id) {
149
+ this.objectRefs[from.$id] = { from: from, to: to };
150
+ }
151
+ if (!propertyInfoList)
152
+ propertyInfoList = {};
153
+ for (var key in from) {
154
+ if (from.hasOwnProperty(key)) {
155
+ var propertyInfo = propertyInfoList[key];
156
+ var canDeserialise = this.options.allowExtraProperties;
157
+ if (propertyInfo) {
158
+ canDeserialise = !propertyInfo.isComputed && !propertyInfo.isReadOnly &&
159
+ ((propertyInfo.serialise === SerialiseType.Always) ||
160
+ (propertyInfo.serialise === SerialiseType.NotNull) ||
161
+ (propertyInfo.serialise === SerialiseType.MappingOnly && !!this.options.isMap) ||
162
+ (propertyInfo.serialise === SerialiseType.FullOnly && (this.options.removeOldItems || justCreated)));
163
+ }
164
+ if (canDeserialise) {
165
+ try {
166
+ var fromValue = from[key];
167
+ if (propertyInfo) {
168
+ if (fromValue && propertyInfo.propertyType === DataType.Date) {
169
+ to[key] = new Date(fromValue);
170
+ }
171
+ else if (fromValue !== null && propertyInfo.propertyType === DataType.Decimal) {
172
+ to[key] = new Decimal(fromValue);
173
+ }
174
+ else {
175
+ if (fromValue instanceof Array && !propertyInfo.assignOnDeserialise) {
176
+ if (!to[key] || !(to[key] instanceof Array) || to[key].childObjectType) {
177
+ // Deserialise into full list.
178
+ this.deserialiseArray(fromValue, to[key], undefined);
179
+ }
180
+ else {
181
+ // Plain array
182
+ to[key] = fromValue;
183
+ }
184
+ }
185
+ else if (propertyInfo.relationType === RelationType.Dictionary) {
186
+ if (!to[key]) {
187
+ to[key] = {};
188
+ }
189
+ this.deserialiseDictionary(fromValue, to[key], propertyInfo);
190
+ }
191
+ else if (fromValue instanceof Object && !propertyInfo.assignOnDeserialise) {
192
+ // Properties of type Parent are ignored. Parent will be set when the item is added to a list.
193
+ if (propertyInfo.relationType !== RelationType.Parent) {
194
+ if (fromValue.$ref) {
195
+ to[key] = this.getReferencedObject(fromValue.$ref);
196
+ }
197
+ else {
198
+ var mustCreate = !to[key];
199
+ if (mustCreate) {
200
+ to[key] = propertyInfo.createValueInstance();
201
+ }
202
+ this.deserialiseObject(fromValue, to[key], mustCreate);
203
+ }
204
+ }
205
+ }
206
+ else {
207
+ // Simple value, or null
208
+ to[key] = fromValue;
209
+ }
210
+ }
211
+ }
212
+ else {
213
+ // No type information, set raw value.
214
+ to[key] = fromValue;
215
+ }
216
+ }
217
+ catch (error) {
218
+ throw "Error deserialising property '".concat(key, "' on type '").concat(typeName, "': ").concat(error);
219
+ }
220
+ }
221
+ }
222
+ }
223
+ //ignore empty guids
224
+ if (to.entityIdentifier !== undefined) {
225
+ var toModel = to;
226
+ if ((!this.options.isMap || this.options.isMap.includeEntityIdentifiers) &&
227
+ from.entityIdentifier && from.entityIdentifier.indexOf('000000000000') === -1) {
228
+ toModel.entityIdentifier = from.entityIdentifier;
229
+ }
230
+ if (!this.options.isMap) {
231
+ if (!from.trackingState) {
232
+ toModel.isSelfDirty = false;
233
+ toModel.isNew = false;
234
+ }
235
+ else if (from.trackingState === TrackingState.Deleted) {
236
+ //TODO: handle deleted objects coming from server?
237
+ }
238
+ else {
239
+ toModel.isSelfDirty = true;
240
+ toModel.isNew = from.trackingState === TrackingState.Added;
241
+ }
242
+ }
243
+ }
244
+ this.endObjectDeserialise(to, justCreated);
245
+ };
246
+ Deserialiser.prototype.getReferencedObject = function (id) {
247
+ var found = this.objectRefs[id];
248
+ if (!found) {
249
+ throw "Cannot find $id: ".concat(id, ".");
250
+ }
251
+ return found.to;
252
+ };
253
+ return Deserialiser;
254
+ }());
255
+ export { Deserialiser };