@singularsystems/neo-core 1.0.0-alpha.3 → 1.0.0-beta.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/CHANGELOG.md +15 -0
  2. package/README.md +1 -1
  3. package/dist/ApiClient/ApiClientBase.d.ts +5 -5
  4. package/dist/ApiClient/ApiClientBase.js +13 -13
  5. package/dist/ApiClient/ReadApiClient.d.ts +16 -16
  6. package/dist/ApiClient/ReadApiClient.js +24 -24
  7. package/dist/ApiClient/UpdateableApiClient.d.ts +28 -28
  8. package/dist/ApiClient/UpdateableApiClient.js +33 -33
  9. package/dist/AppServices/AppService.d.ts +46 -46
  10. package/dist/AppServices/AppService.js +25 -25
  11. package/dist/AppServices/Config/ConfigModel.d.ts +21 -20
  12. package/dist/AppServices/Config/ConfigModel.js +28 -17
  13. package/dist/AppServices/Config/ConfigService.d.ts +15 -15
  14. package/dist/AppServices/Config/ConfigService.js +49 -53
  15. package/dist/AppServices/Module.d.ts +11 -11
  16. package/dist/AppServices/Module.js +13 -13
  17. package/dist/AppServices/NeoContainer.d.ts +22 -22
  18. package/dist/AppServices/NeoContainer.js +42 -42
  19. package/dist/AppServices/NeoModule.d.ts +3 -3
  20. package/dist/AppServices/NeoModule.js +30 -30
  21. package/dist/AppServices/NeoTypes.d.ts +61 -61
  22. package/dist/AppServices/NeoTypes.js +42 -42
  23. package/dist/AppServices/ServiceIdentifier.d.ts +23 -23
  24. package/dist/AppServices/ServiceIdentifier.js +38 -39
  25. package/dist/AppServices/index.d.ts +7 -7
  26. package/dist/AppServices/index.js +7 -7
  27. package/dist/Components/AnimationHelper.d.ts +69 -69
  28. package/dist/Components/AnimationHelper.js +182 -182
  29. package/dist/Components/BootstrapHelpers.d.ts +8 -8
  30. package/dist/Components/BootstrapHelpers.js +30 -30
  31. package/dist/Components/BootstrapTypes.d.ts +35 -35
  32. package/dist/Components/BootstrapTypes.js +1 -1
  33. package/dist/Components/ButtonOptions.d.ts +63 -61
  34. package/dist/Components/ButtonOptions.js +1 -1
  35. package/dist/Components/ContextMenu/ContextMenu.d.ts +16 -16
  36. package/dist/Components/ContextMenu/ContextMenu.js +1 -1
  37. package/dist/Components/ContextMenu/MenuUtils.d.ts +16 -16
  38. package/dist/Components/ContextMenu/MenuUtils.js +34 -34
  39. package/dist/Components/DatePicker/DatePicker.d.ts +70 -69
  40. package/dist/Components/DatePicker/DatePicker.js +510 -487
  41. package/dist/Components/DatePicker/DatePickerOptions.d.ts +43 -34
  42. package/dist/Components/DatePicker/DatePickerOptions.js +33 -33
  43. package/dist/Components/ErrorHandler.d.ts +63 -55
  44. package/dist/Components/ErrorHandler.js +211 -138
  45. package/dist/Components/FileManager/BoundFileManager.d.ts +18 -18
  46. package/dist/Components/FileManager/BoundFileManager.js +60 -60
  47. package/dist/Components/FileManager/FileManager.d.ts +80 -78
  48. package/dist/Components/FileManager/FileManager.js +277 -257
  49. package/dist/Components/FileManager/FileUploadBatch.d.ts +37 -37
  50. package/dist/Components/FileManager/FileUploadBatch.js +83 -82
  51. package/dist/Components/FileManager/IFileManagerOptions.d.ts +42 -42
  52. package/dist/Components/FileManager/IFileManagerOptions.js +1 -1
  53. package/dist/Components/FormOptions.d.ts +34 -34
  54. package/dist/Components/FormOptions.js +1 -1
  55. package/dist/Components/ICollapsableOptions.d.ts +11 -11
  56. package/dist/Components/ICollapsableOptions.js +1 -1
  57. package/dist/Components/Modal/ModalHelper.d.ts +31 -31
  58. package/dist/Components/Modal/ModalHelper.js +174 -174
  59. package/dist/Components/Modal/ModalOptions.d.ts +61 -61
  60. package/dist/Components/Modal/ModalOptions.js +1 -1
  61. package/dist/Components/Modal/ModalStore.d.ts +32 -32
  62. package/dist/Components/Modal/ModalStore.js +82 -82
  63. package/dist/Components/Modal/ModalUtils.d.ts +61 -61
  64. package/dist/Components/Modal/ModalUtils.js +109 -109
  65. package/dist/Components/Notifications/INotificationHelper.d.ts +56 -56
  66. package/dist/Components/Notifications/INotificationHelper.js +1 -1
  67. package/dist/Components/Notifications/Notification.d.ts +32 -32
  68. package/dist/Components/Notifications/Notification.js +26 -27
  69. package/dist/Components/Notifications/NotificationHelper.d.ts +63 -63
  70. package/dist/Components/Notifications/NotificationHelper.js +111 -112
  71. package/dist/Components/Notifications/NotificationStore.d.ts +34 -34
  72. package/dist/Components/Notifications/NotificationStore.js +78 -79
  73. package/dist/Components/PositionHelper.d.ts +10 -10
  74. package/dist/Components/PositionHelper.js +43 -43
  75. package/dist/Components/TaskRunner/Decorators.d.ts +6 -6
  76. package/dist/Components/TaskRunner/Decorators.js +24 -24
  77. package/dist/Components/TaskRunner/ProgressState.d.ts +22 -22
  78. package/dist/Components/TaskRunner/ProgressState.js +71 -72
  79. package/dist/Components/TaskRunner/TaskRunner.d.ts +114 -114
  80. package/dist/Components/TaskRunner/TaskRunner.js +253 -244
  81. package/dist/Components/TooltipOptions.d.ts +8 -8
  82. package/dist/Components/TooltipOptions.js +1 -1
  83. package/dist/Components/index.d.ts +22 -22
  84. package/dist/Components/index.js +13 -13
  85. package/dist/ConnectionManager.d.ts +45 -45
  86. package/dist/ConnectionManager.js +60 -61
  87. package/dist/Data/ApiDataSource.d.ts +46 -46
  88. package/dist/Data/ApiDataSource.js +140 -144
  89. package/dist/Data/AsyncDataSource.d.ts +35 -35
  90. package/dist/Data/AsyncDataSource.js +79 -80
  91. package/dist/Data/CacheService.d.ts +40 -40
  92. package/dist/Data/CacheService.js +63 -64
  93. package/dist/Data/DataCacheEntry.d.ts +42 -42
  94. package/dist/Data/DataCacheEntry.js +80 -80
  95. package/dist/Data/DataView.d.ts +43 -43
  96. package/dist/Data/DataView.js +173 -172
  97. package/dist/Data/Deserialiser.d.ts +42 -42
  98. package/dist/Data/Deserialiser.js +255 -255
  99. package/dist/Data/Paging/PageManager.d.ts +167 -167
  100. package/dist/Data/Paging/PageManager.js +323 -323
  101. package/dist/Data/Paging/PageRequest.d.ts +24 -24
  102. package/dist/Data/Paging/PageRequest.js +38 -39
  103. package/dist/Data/Paging/PageResult.d.ts +10 -10
  104. package/dist/Data/Paging/PageResult.js +14 -14
  105. package/dist/Data/Serialiser.d.ts +41 -41
  106. package/dist/Data/Serialiser.js +201 -201
  107. package/dist/Data/SortOperation.d.ts +8 -8
  108. package/dist/Data/SortOperation.js +26 -26
  109. package/dist/Data/StaticDataSource.d.ts +9 -9
  110. package/dist/Data/StaticDataSource.js +27 -27
  111. package/dist/Data/WindowedDataView.d.ts +8 -8
  112. package/dist/Data/WindowedDataView.js +49 -50
  113. package/dist/Data/index.d.ts +15 -15
  114. package/dist/Data/index.js +15 -15
  115. package/dist/Dates/DateUtils.d.ts +47 -47
  116. package/dist/Dates/DateUtils.js +226 -226
  117. package/dist/Dates/TimeSpan.d.ts +24 -24
  118. package/dist/Dates/TimeSpan.js +46 -46
  119. package/dist/DebounceHelper.d.ts +44 -38
  120. package/dist/DebounceHelper.js +122 -95
  121. package/dist/Extensions.d.ts +82 -82
  122. package/dist/Extensions.js +182 -182
  123. package/dist/FileUtils.d.ts +6 -6
  124. package/dist/FileUtils.js +37 -37
  125. package/dist/Globals.d.ts +19 -19
  126. package/dist/Globals.js +41 -41
  127. package/dist/JsonSchema/ClassMetadata.d.ts +25 -25
  128. package/dist/JsonSchema/ClassMetadata.js +53 -53
  129. package/dist/JsonSchema/JsonData.d.ts +16 -16
  130. package/dist/JsonSchema/JsonData.js +97 -97
  131. package/dist/JsonSchema/JsonSchemaTypes.d.ts +37 -37
  132. package/dist/JsonSchema/JsonSchemaTypes.js +1 -1
  133. package/dist/JsonSchema/PropertyMetadata.d.ts +8 -8
  134. package/dist/JsonSchema/PropertyMetadata.js +8 -8
  135. package/dist/JsonSchema/TypeCache.d.ts +16 -16
  136. package/dist/JsonSchema/TypeCache.js +44 -44
  137. package/dist/JsonSchema/TypeMetadata.d.ts +45 -45
  138. package/dist/JsonSchema/TypeMetadata.js +170 -170
  139. package/dist/JsonSchema/index.d.ts +7 -7
  140. package/dist/JsonSchema/index.js +6 -6
  141. package/dist/Localisation/ILocalisationService.d.ts +11 -11
  142. package/dist/Localisation/ILocalisationService.js +1 -1
  143. package/dist/Localisation/LocalisationService.d.ts +4 -4
  144. package/dist/Localisation/LocalisationService.js +17 -17
  145. package/dist/Localisation/index.d.ts +1 -1
  146. package/dist/Localisation/index.js +1 -1
  147. package/dist/Misc.d.ts +6 -6
  148. package/dist/Misc.js +6 -6
  149. package/dist/Model/BaseModels/AuditValues.d.ts +12 -12
  150. package/dist/Model/BaseModels/AuditValues.js +46 -48
  151. package/dist/Model/BaseModels/CriteriaBase.d.ts +18 -16
  152. package/dist/Model/BaseModels/CriteriaBase.js +45 -34
  153. package/dist/Model/BaseModels/FileDescriptorBase.d.ts +12 -12
  154. package/dist/Model/BaseModels/FileDescriptorBase.js +22 -22
  155. package/dist/Model/BaseModels/ReasonedUserEvent.d.ts +5 -4
  156. package/dist/Model/BaseModels/ReasonedUserEvent.js +23 -19
  157. package/dist/Model/BaseModels/UserEvent.d.ts +9 -8
  158. package/dist/Model/BaseModels/UserEvent.js +36 -32
  159. package/dist/Model/BindableBase.d.ts +46 -40
  160. package/dist/Model/BindableBase.js +82 -76
  161. package/dist/Model/Decorators.d.ts +50 -44
  162. package/dist/Model/Decorators.js +189 -177
  163. package/dist/Model/EnumHelper.d.ts +54 -54
  164. package/dist/Model/EnumHelper.js +104 -100
  165. package/dist/Model/IAutoRunner.d.ts +5 -5
  166. package/dist/Model/IAutoRunner.js +1 -1
  167. package/dist/Model/IModelBase.d.ts +101 -79
  168. package/dist/Model/IModelBase.js +1 -1
  169. package/dist/Model/IModelCreatorBase.d.ts +9 -9
  170. package/dist/Model/IModelCreatorBase.js +1 -1
  171. package/dist/Model/List.d.ts +79 -77
  172. package/dist/Model/List.js +208 -198
  173. package/dist/Model/LookupBase.d.ts +13 -6
  174. package/dist/Model/LookupBase.js +19 -10
  175. package/dist/Model/MethodInfo.d.ts +8 -0
  176. package/dist/Model/MethodInfo.js +7 -0
  177. package/dist/Model/Misc.d.ts +83 -81
  178. package/dist/Model/Misc.js +59 -59
  179. package/dist/Model/ModelBase.d.ts +88 -86
  180. package/dist/Model/ModelBase.js +189 -180
  181. package/dist/Model/ModelCreatorBase.d.ts +23 -23
  182. package/dist/Model/ModelCreatorBase.js +91 -92
  183. package/dist/Model/ModelFieldInfo.d.ts +29 -12
  184. package/dist/Model/ModelFieldInfo.js +35 -26
  185. package/dist/Model/ModelGraphTraverser.d.ts +35 -35
  186. package/dist/Model/ModelGraphTraverser.js +101 -99
  187. package/dist/Model/NeoModel.d.ts +6 -6
  188. package/dist/Model/NeoModel.js +13 -13
  189. package/dist/Model/NeoTypeInfo.d.ts +55 -41
  190. package/dist/Model/NeoTypeInfo.js +319 -250
  191. package/dist/Model/ObservableProperty.d.ts +8 -8
  192. package/dist/Model/ObservableProperty.js +41 -41
  193. package/dist/Model/ObservableValue.d.ts +9 -9
  194. package/dist/Model/ObservableValue.js +25 -26
  195. package/dist/Model/PropertyInfo.d.ts +83 -81
  196. package/dist/Model/PropertyInfo.js +137 -137
  197. package/dist/Model/PropertyInstance.d.ts +84 -48
  198. package/dist/Model/PropertyInstance.js +173 -113
  199. package/dist/Model/ValueObject.d.ts +3 -3
  200. package/dist/Model/ValueObject.js +10 -10
  201. package/dist/Model/index.d.ts +15 -14
  202. package/dist/Model/index.js +13 -12
  203. package/dist/NumberUtils.d.ts +63 -49
  204. package/dist/NumberUtils.js +247 -197
  205. package/dist/Routing/IMenuItemProvider.d.ts +9 -9
  206. package/dist/Routing/IMenuItemProvider.js +1 -1
  207. package/dist/Routing/IMenuRoute.d.ts +18 -18
  208. package/dist/Routing/IMenuRoute.js +1 -1
  209. package/dist/Routing/INavigationHelper.d.ts +7 -7
  210. package/dist/Routing/INavigationHelper.js +1 -1
  211. package/dist/Routing/IPageLeaveHandler.d.ts +23 -23
  212. package/dist/Routing/IPageLeaveHandler.js +7 -7
  213. package/dist/Routing/IRoute.d.ts +27 -27
  214. package/dist/Routing/IRoute.js +1 -1
  215. package/dist/Routing/IRouteSecurityService.d.ts +14 -14
  216. package/dist/Routing/IRouteSecurityService.js +1 -1
  217. package/dist/Routing/MenuItemProvider.d.ts +17 -17
  218. package/dist/Routing/MenuItemProvider.js +53 -54
  219. package/dist/Routing/RouteSecurityService.d.ts +18 -18
  220. package/dist/Routing/RouteSecurityService.js +35 -36
  221. package/dist/Routing/index.d.ts +7 -7
  222. package/dist/Routing/index.js +3 -3
  223. package/dist/Security/IAuthenticationService.d.ts +41 -36
  224. package/dist/Security/IAuthenticationService.js +1 -1
  225. package/dist/Security/IAuthorisationService.d.ts +11 -11
  226. package/dist/Security/IAuthorisationService.js +1 -1
  227. package/dist/Security/ILoginErrorHandler.d.ts +4 -4
  228. package/dist/Security/ILoginErrorHandler.js +1 -1
  229. package/dist/Security/ISecurityService.d.ts +10 -10
  230. package/dist/Security/ISecurityService.js +1 -1
  231. package/dist/Security/IUser.d.ts +10 -10
  232. package/dist/Security/IUser.js +1 -1
  233. package/dist/Security/IUserRole.d.ts +6 -6
  234. package/dist/Security/IUserRole.js +1 -1
  235. package/dist/Security/LoginErrorHandler.d.ts +15 -15
  236. package/dist/Security/LoginErrorHandler.js +97 -98
  237. package/dist/Security/Oidc/OidcAuthService.d.ts +67 -60
  238. package/dist/Security/Oidc/OidcAuthService.js +216 -189
  239. package/dist/Security/Oidc/OidcTypes.d.ts +46 -29
  240. package/dist/Security/Oidc/OidcTypes.js +1 -1
  241. package/dist/Security/Oidc/OidcUser.d.ts +9 -9
  242. package/dist/Security/Oidc/OidcUser.js +33 -33
  243. package/dist/Security/SecurityService.d.ts +12 -12
  244. package/dist/Security/SecurityService.js +33 -34
  245. package/dist/Security/SignInResult.d.ts +13 -13
  246. package/dist/Security/SignInResult.js +8 -8
  247. package/dist/Security/User.d.ts +12 -12
  248. package/dist/Security/User.js +24 -24
  249. package/dist/Security/index.d.ts +10 -10
  250. package/dist/Security/index.js +5 -5
  251. package/dist/Settings.d.ts +71 -57
  252. package/dist/Settings.js +100 -87
  253. package/dist/SignalR/HubBase.d.ts +70 -70
  254. package/dist/SignalR/HubBase.js +164 -164
  255. package/dist/SignalR/HubReceiver.d.ts +11 -11
  256. package/dist/SignalR/HubReceiver.js +25 -25
  257. package/dist/SignalR/HubSubscription.d.ts +12 -12
  258. package/dist/SignalR/HubSubscription.js +14 -14
  259. package/dist/SignalR/index.d.ts +3 -3
  260. package/dist/SignalR/index.js +1 -1
  261. package/dist/StringUtils.d.ts +7 -7
  262. package/dist/StringUtils.js +24 -24
  263. package/dist/Utils.d.ts +81 -80
  264. package/dist/Utils.js +220 -218
  265. package/dist/Validation/Decorators.d.ts +12 -12
  266. package/dist/Validation/Decorators.js +52 -52
  267. package/dist/Validation/DisplayHelper.d.ts +20 -19
  268. package/dist/Validation/DisplayHelper.js +104 -104
  269. package/dist/Validation/Misc.d.ts +10 -10
  270. package/dist/Validation/Misc.js +11 -11
  271. package/dist/Validation/ModelProxy.d.ts +20 -20
  272. package/dist/Validation/ModelProxy.js +46 -46
  273. package/dist/Validation/RuleContext.d.ts +86 -86
  274. package/dist/Validation/RuleContext.js +130 -130
  275. package/dist/Validation/Rules.d.ts +70 -70
  276. package/dist/Validation/Rules.js +177 -177
  277. package/dist/Validation/ValidationHelpers.d.ts +12 -12
  278. package/dist/Validation/ValidationHelpers.js +57 -57
  279. package/dist/Validation/ValidationRules.d.ts +18 -18
  280. package/dist/Validation/ValidationRules.js +34 -34
  281. package/dist/Validation/ValidationState.d.ts +42 -42
  282. package/dist/Validation/ValidationState.js +74 -74
  283. package/dist/Validation/Validators/IModelValidator.d.ts +28 -24
  284. package/dist/Validation/Validators/IModelValidator.js +1 -1
  285. package/dist/Validation/Validators/IPropertyValidator.d.ts +21 -21
  286. package/dist/Validation/Validators/IPropertyValidator.js +15 -15
  287. package/dist/Validation/Validators/ModelValidator.d.ts +46 -45
  288. package/dist/Validation/Validators/ModelValidator.js +143 -137
  289. package/dist/Validation/Validators/PropertyValidator.d.ts +21 -21
  290. package/dist/Validation/Validators/PropertyValidator.js +64 -67
  291. package/dist/Validation/Validators/RuleValidator.d.ts +19 -19
  292. package/dist/Validation/Validators/RuleValidator.js +51 -55
  293. package/dist/Validation/index.d.ts +9 -9
  294. package/dist/Validation/index.js +7 -7
  295. package/dist/Views/IViewBase.d.ts +5 -5
  296. package/dist/Views/IViewBase.js +1 -1
  297. package/dist/index.d.ts +37 -36
  298. package/dist/index.js +44 -43
  299. package/package.json +11 -10
@@ -1,201 +1,201 @@
1
- import { TrackingState, SerialiseType, RelationType, TimeZoneFormat, DataType } from '../Model/Misc';
2
- import { Deserialiser } from './Deserialiser';
3
- import ValueObject from '../Model/ValueObject';
4
- import DateUtils from '../Dates/DateUtils';
5
- import Globals from '../Globals';
6
- var referenceIdKey = Symbol("referenceId");
7
- var JSFormatter = /** @class */ (function () {
8
- function JSFormatter() {
9
- }
10
- JSFormatter.serialise = function (object, options) {
11
- if (options === void 0) { options = {}; }
12
- var s = new Serialiser();
13
- return s.serialise(object, options);
14
- };
15
- /**
16
- * Deserialises a plain javascript object into a NeoModel instance
17
- * @param from plain javascript object
18
- * @param to object or array
19
- * @param rootType constructor for the root type. E.g. if deserialising into an array of Animal, pass in Animal.
20
- * @param options Deserialise options
21
- * @param justCreated True if the object being deserialised was just created (for its onDeserialise method).
22
- */
23
- JSFormatter.deserialise = function (from, to, rootType, options, justCreated) {
24
- if (options === void 0) { options = {}; }
25
- if (justCreated === void 0) { justCreated = false; }
26
- if (!from) {
27
- throw "Cannot deserialise from null value.";
28
- }
29
- var d = new Deserialiser();
30
- d.deserialise(from, to, rootType, options, justCreated);
31
- };
32
- return JSFormatter;
33
- }());
34
- export { JSFormatter };
35
- var Serialiser = /** @class */ (function () {
36
- function Serialiser() {
37
- this.objectRefs = {};
38
- this.options = {};
39
- this.currentID = 1;
40
- }
41
- Serialiser.prototype.serialise = function (fromObject, options) {
42
- if (options === void 0) { options = {}; }
43
- this.options = options;
44
- var to;
45
- this.currentID = 1;
46
- if (fromObject instanceof Array) {
47
- to = [];
48
- this.serialiseArray(fromObject, to);
49
- }
50
- else {
51
- to = {};
52
- this.serialiseObject(fromObject, to);
53
- }
54
- this.cleanUpObjects();
55
- return to;
56
- };
57
- /**
58
- * removes the temporary ids from the from objects.
59
- */
60
- Serialiser.prototype.cleanUpObjects = function () {
61
- for (var id in this.objectRefs) {
62
- var refInfo = this.objectRefs[id];
63
- delete refInfo.from[referenceIdKey];
64
- // Remove $id property if object is not referenced by anything.
65
- if (!refInfo.isReferenced) {
66
- delete refInfo.to.$id;
67
- }
68
- }
69
- this.objectRefs = {};
70
- };
71
- Serialiser.prototype.serialiseObject = function (from, to, isDictionary) {
72
- if (isDictionary === void 0) { isDictionary = false; }
73
- //check that this object hasnt already been serialised.
74
- var referenceId = from[referenceIdKey];
75
- if (!referenceId) {
76
- referenceId = this.currentID++;
77
- from[referenceIdKey] = referenceId;
78
- }
79
- var referenceInfo = this.objectRefs[referenceId];
80
- if (referenceInfo) {
81
- //already serialised this object
82
- referenceInfo.isReferenced = true;
83
- to.$ref = referenceInfo.to.$id;
84
- return;
85
- }
86
- else {
87
- this.objectRefs[referenceId] = { from: from, to: to };
88
- to.$id = referenceId.toString();
89
- }
90
- //Set tracking state
91
- if (!this.options.suppressTrackingState && !isDictionary) {
92
- if (from.isNew) {
93
- to.trackingState = TrackingState.Added;
94
- }
95
- else if (from.isSelfDirty) {
96
- to.trackingState = TrackingState.Modified;
97
- }
98
- else {
99
- to.trackingState = TrackingState.Unchanged;
100
- }
101
- to.entityIdentifier = from.entityIdentifier;
102
- }
103
- //Loop through serialisable properties
104
- var typeInfo = from.constructor.neo;
105
- if (!typeInfo && !isDictionary) {
106
- throw "Object is not decorated with @NeoModel. Either add @NeoModel, suppress serialisation on the property, or add @Attributes.Raw() to the property.";
107
- }
108
- var propertyMap = isDictionary ? {} : typeInfo.propertyMap;
109
- for (var key in from) {
110
- if (from.hasOwnProperty(key) && key.indexOf("__") !== 0) {
111
- try {
112
- var propertyInfo = isDictionary ? {} : propertyMap[key];
113
- if (propertyInfo &&
114
- !propertyInfo.isComputed && !propertyInfo.isReadOnly && // Safari seems to enumerate properties like isDirty, other browsers wont include these properties.
115
- propertyInfo.serialise !== SerialiseType.Never &&
116
- propertyInfo.serialise !== SerialiseType.MappingOnly &&
117
- (propertyInfo.serialise !== SerialiseType.FullOnly || this.options.includeClean)) {
118
- var fromValue = from[key];
119
- var isChildObject = (fromValue && fromValue instanceof Object && !(fromValue instanceof Date) && !(fromValue instanceof Globals.decimalType)) || propertyInfo.relationType === RelationType.ChildObject;
120
- if (fromValue instanceof Array) {
121
- // Arrays of simple types are always included.
122
- if (!this.options.suppressChildren || (fromValue.length > 0 && !(fromValue[0] instanceof Object))) {
123
- to[key] = [];
124
- this.serialiseArray(fromValue, to[key]);
125
- }
126
- }
127
- else if (isChildObject && !propertyInfo.assignOnDeserialise) {
128
- if (!fromValue || (propertyInfo.relationType === RelationType.Parent && !fromValue[referenceIdKey])) {
129
- // Parents must only be included if they reference an already serialised object.
130
- // Otherwise serialising a leaf node will serialise up the tree and the entire graph will be serialised.
131
- }
132
- else {
133
- var shouldSerialise = !this.options.suppressChildren || fromValue instanceof ValueObject || propertyInfo.relationType === RelationType.Dictionary;
134
- if (fromValue.canSerialise !== undefined) {
135
- shouldSerialise = fromValue.canSerialise(shouldSerialise);
136
- }
137
- if (shouldSerialise) {
138
- to[key] = {};
139
- this.serialiseObject(fromValue, to[key], propertyInfo.relationType === RelationType.Dictionary);
140
- }
141
- }
142
- }
143
- else {
144
- // Simple values and dates
145
- if (fromValue !== null || propertyInfo.serialise !== SerialiseType.NotNull) {
146
- if (fromValue !== null && propertyInfo.propertyType === DataType.Decimal) {
147
- to[key] = fromValue.toNumber();
148
- }
149
- else if (propertyInfo.timeZoneSerialisation === TimeZoneFormat.None && fromValue instanceof Date) {
150
- to[key] = DateUtils.format(fromValue, "yyyy-MM-dd") + "T00:00:00";
151
- }
152
- else {
153
- to[key] = fromValue;
154
- }
155
- }
156
- }
157
- }
158
- }
159
- catch (error) {
160
- throw "Error serialising property '".concat(key, "' on type '").concat(from.constructor.name, "': ").concat(error);
161
- }
162
- }
163
- }
164
- };
165
- Serialiser.prototype.serialiseArray = function (fromArray, toArray) {
166
- for (var i = 0; i < fromArray.length; i++) {
167
- var fromItem = fromArray[i];
168
- if (fromItem instanceof Object && !(fromItem instanceof Date)) {
169
- //complex object
170
- var shouldSerialise = this.options.includeClean || !!fromItem.isDirty;
171
- if (fromItem.canSerialise !== undefined) {
172
- shouldSerialise = fromItem.canSerialise(shouldSerialise);
173
- }
174
- if (shouldSerialise) {
175
- var toItem = {};
176
- this.serialiseObject(fromItem, toItem);
177
- toArray.push(toItem);
178
- }
179
- }
180
- else {
181
- //simple value
182
- toArray.push(fromItem);
183
- }
184
- }
185
- // add the deleted items.
186
- var list = fromArray;
187
- if (list.deletedList) {
188
- for (var i = 0; i < list.deletedList.length; i++) {
189
- var fromItem = list.deletedList[i];
190
- if (!fromItem.isNew) {
191
- var toItem = {};
192
- this.serialiseObject(fromItem, toItem);
193
- toItem.trackingState = TrackingState.Deleted;
194
- toArray.push(toItem);
195
- }
196
- }
197
- }
198
- };
199
- return Serialiser;
200
- }());
201
- export { Serialiser };
1
+ import { TrackingState, SerialiseType, RelationType, TimeZoneFormat, DataType } from '../Model/Misc';
2
+ import { Deserialiser } from './Deserialiser';
3
+ import ValueObject from '../Model/ValueObject';
4
+ import DateUtils from '../Dates/DateUtils';
5
+ import Globals from '../Globals';
6
+ var referenceIdKey = Symbol("referenceId");
7
+ var JSFormatter = /** @class */ (function () {
8
+ function JSFormatter() {
9
+ }
10
+ JSFormatter.serialise = function (object, options) {
11
+ if (options === void 0) { options = {}; }
12
+ var s = new Serialiser();
13
+ return s.serialise(object, options);
14
+ };
15
+ /**
16
+ * Deserialises a plain javascript object into a NeoModel instance
17
+ * @param from plain javascript object
18
+ * @param to object or array
19
+ * @param rootType constructor for the root type. E.g. if deserialising into an array of Animal, pass in Animal.
20
+ * @param options Deserialise options
21
+ * @param justCreated True if the object being deserialised was just created (for its onDeserialise method).
22
+ */
23
+ JSFormatter.deserialise = function (from, to, rootType, options, justCreated) {
24
+ if (options === void 0) { options = {}; }
25
+ if (justCreated === void 0) { justCreated = false; }
26
+ if (!from) {
27
+ throw "Cannot deserialise from null value.";
28
+ }
29
+ var d = new Deserialiser();
30
+ d.deserialise(from, to, rootType, options, justCreated);
31
+ };
32
+ return JSFormatter;
33
+ }());
34
+ export { JSFormatter };
35
+ var Serialiser = /** @class */ (function () {
36
+ function Serialiser() {
37
+ this.objectRefs = {};
38
+ this.options = {};
39
+ this.currentID = 1;
40
+ }
41
+ Serialiser.prototype.serialise = function (fromObject, options) {
42
+ if (options === void 0) { options = {}; }
43
+ this.options = options;
44
+ var to;
45
+ this.currentID = 1;
46
+ if (fromObject instanceof Array) {
47
+ to = [];
48
+ this.serialiseArray(fromObject, to);
49
+ }
50
+ else {
51
+ to = {};
52
+ this.serialiseObject(fromObject, to);
53
+ }
54
+ this.cleanUpObjects();
55
+ return to;
56
+ };
57
+ /**
58
+ * removes the temporary ids from the from objects.
59
+ */
60
+ Serialiser.prototype.cleanUpObjects = function () {
61
+ for (var id in this.objectRefs) {
62
+ var refInfo = this.objectRefs[id];
63
+ delete refInfo.from[referenceIdKey];
64
+ // Remove $id property if object is not referenced by anything.
65
+ if (!refInfo.isReferenced) {
66
+ delete refInfo.to.$id;
67
+ }
68
+ }
69
+ this.objectRefs = {};
70
+ };
71
+ Serialiser.prototype.serialiseObject = function (from, to, isDictionary) {
72
+ if (isDictionary === void 0) { isDictionary = false; }
73
+ //check that this object hasnt already been serialised.
74
+ var referenceId = from[referenceIdKey];
75
+ if (!referenceId) {
76
+ referenceId = this.currentID++;
77
+ from[referenceIdKey] = referenceId;
78
+ }
79
+ var referenceInfo = this.objectRefs[referenceId];
80
+ if (referenceInfo) {
81
+ //already serialised this object
82
+ referenceInfo.isReferenced = true;
83
+ to.$ref = referenceInfo.to.$id;
84
+ return;
85
+ }
86
+ else {
87
+ this.objectRefs[referenceId] = { from: from, to: to };
88
+ to.$id = referenceId.toString();
89
+ }
90
+ //Set tracking state
91
+ if (!this.options.suppressTrackingState && !isDictionary) {
92
+ if (from.isNew) {
93
+ to.trackingState = TrackingState.Added;
94
+ }
95
+ else if (from.isSelfDirty) {
96
+ to.trackingState = TrackingState.Modified;
97
+ }
98
+ else {
99
+ to.trackingState = TrackingState.Unchanged;
100
+ }
101
+ to.entityIdentifier = from.entityIdentifier;
102
+ }
103
+ //Loop through serialisable properties
104
+ var typeInfo = from.constructor.neo;
105
+ if (!typeInfo && !isDictionary) {
106
+ throw "Object is not decorated with @NeoModel. Either add @NeoModel, suppress serialisation on the property, or add @Attributes.Raw() to the property.";
107
+ }
108
+ var propertyMap = isDictionary ? {} : typeInfo.propertyMap;
109
+ for (var key in from) {
110
+ if (from.hasOwnProperty(key) && key.indexOf("__") !== 0) {
111
+ try {
112
+ var propertyInfo = isDictionary ? {} : propertyMap[key];
113
+ if (propertyInfo &&
114
+ !propertyInfo.isComputed && !propertyInfo.isReadOnly && // Safari seems to enumerate properties like isDirty, other browsers wont include these properties.
115
+ propertyInfo.serialise !== SerialiseType.Never &&
116
+ propertyInfo.serialise !== SerialiseType.MappingOnly &&
117
+ (propertyInfo.serialise !== SerialiseType.FullOnly || this.options.includeClean)) {
118
+ var fromValue = from[key];
119
+ var isChildObject = (fromValue && fromValue instanceof Object && !(fromValue instanceof Date) && !(fromValue instanceof Globals.decimalType)) || propertyInfo.relationType === RelationType.ChildObject;
120
+ if (fromValue instanceof Array) {
121
+ // Arrays of simple types are always included.
122
+ if (!this.options.suppressChildren || (fromValue.length > 0 && !(fromValue[0] instanceof Object))) {
123
+ to[key] = [];
124
+ this.serialiseArray(fromValue, to[key]);
125
+ }
126
+ }
127
+ else if (isChildObject && !propertyInfo.assignOnDeserialise) {
128
+ if (!fromValue || (propertyInfo.relationType === RelationType.Parent && !fromValue[referenceIdKey])) {
129
+ // Parents must only be included if they reference an already serialised object.
130
+ // Otherwise serialising a leaf node will serialise up the tree and the entire graph will be serialised.
131
+ }
132
+ else {
133
+ var shouldSerialise = !this.options.suppressChildren || fromValue instanceof ValueObject || propertyInfo.relationType === RelationType.Dictionary;
134
+ if (fromValue.canSerialise !== undefined) {
135
+ shouldSerialise = fromValue.canSerialise(shouldSerialise);
136
+ }
137
+ if (shouldSerialise) {
138
+ to[key] = {};
139
+ this.serialiseObject(fromValue, to[key], propertyInfo.relationType === RelationType.Dictionary);
140
+ }
141
+ }
142
+ }
143
+ else {
144
+ // Simple values and dates
145
+ if (fromValue !== null || propertyInfo.serialise !== SerialiseType.NotNull) {
146
+ if (fromValue !== null && propertyInfo.propertyType === DataType.Decimal) {
147
+ to[key] = fromValue.toNumber();
148
+ }
149
+ else if (propertyInfo.timeZoneSerialisation === TimeZoneFormat.None && fromValue instanceof Date) {
150
+ to[key] = DateUtils.format(fromValue, "yyyy-MM-dd") + "T00:00:00";
151
+ }
152
+ else {
153
+ to[key] = fromValue;
154
+ }
155
+ }
156
+ }
157
+ }
158
+ }
159
+ catch (error) {
160
+ throw "Error serialising property '".concat(key, "' on type '").concat(from.constructor.name, "': ").concat(error);
161
+ }
162
+ }
163
+ }
164
+ };
165
+ Serialiser.prototype.serialiseArray = function (fromArray, toArray) {
166
+ for (var i = 0; i < fromArray.length; i++) {
167
+ var fromItem = fromArray[i];
168
+ if (fromItem instanceof Object && !(fromItem instanceof Date)) {
169
+ //complex object
170
+ var shouldSerialise = this.options.includeClean || !!fromItem.isDirty;
171
+ if (fromItem.canSerialise !== undefined) {
172
+ shouldSerialise = fromItem.canSerialise(shouldSerialise);
173
+ }
174
+ if (shouldSerialise) {
175
+ var toItem = {};
176
+ this.serialiseObject(fromItem, toItem);
177
+ toArray.push(toItem);
178
+ }
179
+ }
180
+ else {
181
+ //simple value
182
+ toArray.push(fromItem);
183
+ }
184
+ }
185
+ // add the deleted items.
186
+ var list = fromArray;
187
+ if (list.deletedList) {
188
+ for (var i = 0; i < list.deletedList.length; i++) {
189
+ var fromItem = list.deletedList[i];
190
+ if (!fromItem.isNew) {
191
+ var toItem = {};
192
+ this.serialiseObject(fromItem, toItem);
193
+ toItem.trackingState = TrackingState.Deleted;
194
+ toArray.push(toItem);
195
+ }
196
+ }
197
+ }
198
+ };
199
+ return Serialiser;
200
+ }());
201
+ export { Serialiser };
@@ -1,8 +1,8 @@
1
- import PropertyInfo from '../Model/PropertyInfo';
2
- export declare class SortOperation {
3
- column: PropertyInfo;
4
- sortAscending: boolean;
5
- constructor(column: PropertyInfo, sortAscending: boolean);
6
- static fromPrevious(previousSort: SortOperation | null, column: PropertyInfo, sortAscending?: boolean): SortOperation;
7
- static getDefaultSortAscending(property: PropertyInfo): boolean;
8
- }
1
+ import PropertyInfo from '../Model/PropertyInfo';
2
+ export declare class SortOperation {
3
+ column: PropertyInfo;
4
+ sortAscending: boolean;
5
+ constructor(column: PropertyInfo, sortAscending: boolean);
6
+ static fromPrevious(previousSort: SortOperation | null, column: PropertyInfo, sortAscending?: boolean): SortOperation;
7
+ static getDefaultSortAscending(property: PropertyInfo): boolean;
8
+ }
@@ -1,26 +1,26 @@
1
- import { Misc } from '../';
2
- var SortOperation = /** @class */ (function () {
3
- function SortOperation(column, sortAscending) {
4
- this.column = column;
5
- this.sortAscending = sortAscending;
6
- }
7
- SortOperation.fromPrevious = function (previousSort, column, sortAscending) {
8
- var propertyHasChanged = !previousSort || (column !== previousSort.column);
9
- var newSortAscending;
10
- if (sortAscending !== undefined) {
11
- newSortAscending = sortAscending;
12
- }
13
- else if (propertyHasChanged) {
14
- newSortAscending = this.getDefaultSortAscending(column);
15
- }
16
- else {
17
- newSortAscending = !previousSort.sortAscending;
18
- }
19
- return new SortOperation(column, newSortAscending);
20
- };
21
- SortOperation.getDefaultSortAscending = function (property) {
22
- return Misc.Settings.sortDescendingTypes.indexOf(property.propertyType) < 0;
23
- };
24
- return SortOperation;
25
- }());
26
- export { SortOperation };
1
+ import { Misc } from '../';
2
+ var SortOperation = /** @class */ (function () {
3
+ function SortOperation(column, sortAscending) {
4
+ this.column = column;
5
+ this.sortAscending = sortAscending;
6
+ }
7
+ SortOperation.fromPrevious = function (previousSort, column, sortAscending) {
8
+ var propertyHasChanged = !previousSort || (column !== previousSort.column);
9
+ var newSortAscending;
10
+ if (sortAscending !== undefined) {
11
+ newSortAscending = sortAscending;
12
+ }
13
+ else if (propertyHasChanged) {
14
+ newSortAscending = this.getDefaultSortAscending(column);
15
+ }
16
+ else {
17
+ newSortAscending = !previousSort.sortAscending;
18
+ }
19
+ return new SortOperation(column, newSortAscending);
20
+ };
21
+ SortOperation.getDefaultSortAscending = function (property) {
22
+ return Misc.Settings.sortDescendingTypes.indexOf(property.propertyType) < 0;
23
+ };
24
+ return SortOperation;
25
+ }());
26
+ export { SortOperation };
@@ -1,9 +1,9 @@
1
- import { AsyncDataSource, IAsyncDataSource } from './AsyncDataSource';
2
- import { IEnumItem } from '../Model/EnumHelper';
3
- export declare class StaticDataSource<T> extends AsyncDataSource<T> {
4
- constructor(staticData: T);
5
- static fromEnum(enumObject: any): StaticDataSource<IEnumItem[]>;
6
- getDataAsync(): Promise<T>;
7
- get willLoad(): boolean;
8
- copy(): IAsyncDataSource<T>;
9
- }
1
+ import { AsyncDataSource, IAsyncDataSource } from './AsyncDataSource';
2
+ import { IEnumItem } from '../Model/EnumHelper';
3
+ export declare class StaticDataSource<T> extends AsyncDataSource<T> {
4
+ constructor(staticData: T);
5
+ static fromEnum(enumObject: any): StaticDataSource<IEnumItem[]>;
6
+ getDataAsync(): Promise<Awaited<T>>;
7
+ get willLoad(): boolean;
8
+ copy(): IAsyncDataSource<T>;
9
+ }
@@ -1,27 +1,27 @@
1
- import { __extends } from "tslib";
2
- import { AsyncDataSource } from './AsyncDataSource';
3
- import { EnumHelper } from '../Model/EnumHelper';
4
- var StaticDataSource = /** @class */ (function (_super) {
5
- __extends(StaticDataSource, _super);
6
- function StaticDataSource(staticData) {
7
- return _super.call(this, staticData) || this;
8
- }
9
- StaticDataSource.fromEnum = function (enumObject) {
10
- return new StaticDataSource(EnumHelper.asList(enumObject));
11
- };
12
- StaticDataSource.prototype.getDataAsync = function () {
13
- return Promise.resolve(this.data);
14
- };
15
- Object.defineProperty(StaticDataSource.prototype, "willLoad", {
16
- get: function () {
17
- return false;
18
- },
19
- enumerable: false,
20
- configurable: true
21
- });
22
- StaticDataSource.prototype.copy = function () {
23
- return new StaticDataSource(this.data);
24
- };
25
- return StaticDataSource;
26
- }(AsyncDataSource));
27
- export { StaticDataSource };
1
+ import { __extends } from "tslib";
2
+ import { AsyncDataSource } from './AsyncDataSource';
3
+ import { EnumHelper } from '../Model/EnumHelper';
4
+ var StaticDataSource = /** @class */ (function (_super) {
5
+ __extends(StaticDataSource, _super);
6
+ function StaticDataSource(staticData) {
7
+ return _super.call(this, staticData) || this;
8
+ }
9
+ StaticDataSource.fromEnum = function (enumObject) {
10
+ return new StaticDataSource(EnumHelper.asList(enumObject));
11
+ };
12
+ StaticDataSource.prototype.getDataAsync = function () {
13
+ return Promise.resolve(this.data);
14
+ };
15
+ Object.defineProperty(StaticDataSource.prototype, "willLoad", {
16
+ get: function () {
17
+ return false;
18
+ },
19
+ enumerable: false,
20
+ configurable: true
21
+ });
22
+ StaticDataSource.prototype.copy = function () {
23
+ return new StaticDataSource(this.data);
24
+ };
25
+ return StaticDataSource;
26
+ }(AsyncDataSource));
27
+ export { StaticDataSource };
@@ -1,8 +1,8 @@
1
- import { DataViewBase } from './DataView';
2
- export declare class WindowedDataView<T> extends DataViewBase<T> {
3
- _position: number;
4
- get position(): number;
5
- set position(value: number);
6
- maxItems: number;
7
- getItems(): T[];
8
- }
1
+ import { DataViewBase } from './DataView';
2
+ export declare class WindowedDataView<T> extends DataViewBase<T> {
3
+ _position: number;
4
+ get position(): number;
5
+ set position(value: number);
6
+ maxItems: number;
7
+ getItems(): T[];
8
+ }