@singularsystems/neo-core 1.0.0-alpha.2 → 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,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
+ }