@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,250 +1,300 @@
1
- import { __spreadArray } from "tslib";
2
- import { ExpressionRule, CallbackRule } from '../Validation/Rules';
3
- import PropertyInstance from './PropertyInstance';
4
- import PropertyInfo from './PropertyInfo';
5
- import Globals from '../Globals';
6
- import { ValidationRules } from '../Validation/ValidationRules';
7
- import ModelProxy from '../Validation/ModelProxy';
8
- import NeoTypes from '../AppServices/NeoTypes';
9
- import { RelationType } from './Misc';
10
- var ignoredPropertyNames = ["$mobx"];
11
- var inversifyMetadataKey = "inversify:tagged";
12
- var NeoTypeInfo = /** @class */ (function () {
13
- function NeoTypeInfo() {
14
- this._inheritsBindableBase = false;
15
- this._inheritsModelBase = false;
16
- // Property info for each property on this type.
17
- this.properties = [];
18
- // Property info dictionary for easy lookup.
19
- this.propertyMap = {};
20
- // Properties of type List<T>, or marked with the ChildList or ChildObject decorator.
21
- this.children = [];
22
- // Properties marked with the parent decorator, multiple if a class can be child of more than one type.
23
- this.parentProperties = [];
24
- // List of rules added to the object only (not a property).
25
- this.objectRules = [];
26
- // Property instances for each property. These have the attachedTo properties set to null, so only static information is available.
27
- this.meta = {};
28
- // Main display member for drop downs etc.
29
- this.displayMember = null;
30
- }
31
- Object.defineProperty(NeoTypeInfo.prototype, "inheritsBindableBase", {
32
- get: function () {
33
- return this._inheritsBindableBase;
34
- },
35
- enumerable: false,
36
- configurable: true
37
- });
38
- Object.defineProperty(NeoTypeInfo.prototype, "inheritsModelBase", {
39
- get: function () {
40
- return this._inheritsModelBase;
41
- },
42
- enumerable: false,
43
- configurable: true
44
- });
45
- Object.defineProperty(NeoTypeInfo.prototype, "metaItem", {
46
- get: function () {
47
- if (!this._metaItem) {
48
- this._metaItem = { meta: this.meta };
49
- populateMetaItem(this._metaItem, 0);
50
- }
51
- return this._metaItem;
52
- },
53
- enumerable: false,
54
- configurable: true
55
- });
56
- NeoTypeInfo.prototype.initialise = function (objectConstructor) {
57
- this.objectConstructor = objectConstructor;
58
- };
59
- NeoTypeInfo.prototype.addPropertyInfo = function (propertyInfo) {
60
- this.propertyMap[propertyInfo.propertyName] = propertyInfo;
61
- this.properties.push(propertyInfo);
62
- this.meta[propertyInfo.propertyName] = new PropertyInstance(null, propertyInfo);
63
- };
64
- NeoTypeInfo.prototype.getOrAddProperty = function (propertyName) {
65
- var propertyInfo = this.propertyMap[propertyName];
66
- if (!propertyInfo) {
67
- propertyInfo = new PropertyInfo(propertyName);
68
- this.addPropertyInfo(propertyInfo);
69
- }
70
- return propertyInfo;
71
- };
72
- NeoTypeInfo.prototype.addComputed = function (propertyName, descriptor, isComputed) {
73
- if (isComputed === void 0) { isComputed = true; }
74
- var pi = this.getOrAddProperty(propertyName);
75
- if (pi.isComputed === null) {
76
- pi.isComputed = isComputed;
77
- pi.noTrack = true;
78
- }
79
- pi.isReadOnly = descriptor.set === undefined;
80
- pi.descriptor = descriptor;
81
- };
82
- NeoTypeInfo.prototype.addAttributeRule = function (propertyName, rule) {
83
- this.getOrAddProperty(propertyName).addAttributeRule(rule);
84
- };
85
- /**
86
- * Ensures the type has all the information it needs in order to convert instances of this type.
87
- * E.g. Making sure each property has a property info object.
88
- * */
89
- NeoTypeInfo.prototype.ensureStaticRuntimeInfo = function (instance) {
90
- if (!this.modelCreator) {
91
- this.modelCreator = Globals.appService.get(NeoTypes.Core.ModelCreator);
92
- var baseType = Object.getPrototypeOf(this.objectConstructor.prototype);
93
- if (baseType != Object.prototype) {
94
- this.merge(baseType.constructor);
95
- }
96
- else {
97
- this._inheritsBindableBase = this.modelCreator.isBindableBase(this.objectConstructor);
98
- }
99
- this.modelCreator.initialise(this, this.objectConstructor);
100
- if (instance && this.modelCreator.shouldInitialiseAllMembers) {
101
- for (var _i = 0, _a = Object.getOwnPropertyNames(instance); _i < _a.length; _i++) {
102
- var propertyName = _a[_i];
103
- if (ignoredPropertyNames.indexOf(propertyName) < 0) {
104
- var pi = this.getOrAddProperty(propertyName);
105
- pi.setupFromInstance(instance);
106
- }
107
- }
108
- }
109
- if (instance)
110
- this.addRules(instance);
111
- }
112
- };
113
- NeoTypeInfo.prototype.addRules = function (instance) {
114
- if (instance.addBusinessRules !== undefined) {
115
- var validationRules = new ValidationRules();
116
- instance.addBusinessRules(validationRules);
117
- if (validationRules.rules.some(function (c) { return c instanceof CallbackRule && c.hasBoundFunction; })) {
118
- console.error("Warning: ".concat(this.objectConstructor.name, " has rules which have been added using a bound function, or arrow function."));
119
- }
120
- var modelProxy = new ModelProxy(instance);
121
- for (var _i = 0, _a = validationRules.rules; _i < _a.length; _i++) {
122
- var rule = _a[_i];
123
- var properties = rule.getDisplayProperties(this.propertyMap);
124
- if (properties === undefined && rule instanceof ExpressionRule) {
125
- properties = modelProxy.tryExtractProperties(rule);
126
- }
127
- if (properties && properties.length) {
128
- for (var _b = 0, properties_1 = properties; _b < properties_1.length; _b++) {
129
- var property = properties_1[_b];
130
- property.rules.push(rule);
131
- }
132
- }
133
- else {
134
- this.objectRules.push(rule);
135
- }
136
- }
137
- }
138
- };
139
- /** Copy the property info list from each base type into the current type. */
140
- NeoTypeInfo.prototype.merge = function (baseConstructor) {
141
- // Convert base class to a neo type
142
- var base = ensureTypeInfo(baseConstructor).neo;
143
- base.ensureStaticRuntimeInfo();
144
- for (var _i = 0, _a = base.properties; _i < _a.length; _i++) {
145
- var propertyInfo = _a[_i];
146
- this.addPropertyInfo(propertyInfo.clone());
147
- }
148
- for (var _b = 0, _c = base.children; _b < _c.length; _b++) {
149
- var child = _c[_b];
150
- this.children.push(this.propertyMap[child.propertyName]);
151
- }
152
- for (var _d = 0, _e = base.parentProperties; _d < _e.length; _d++) {
153
- var parent_1 = _e[_d];
154
- this.parentProperties.push(this.propertyMap[parent_1.propertyName]);
155
- }
156
- if (!this.parentProperty && base.parentProperty) {
157
- this.parentProperty = this.propertyMap[base.parentProperty.propertyName];
158
- }
159
- this._inheritsBindableBase = base._inheritsBindableBase;
160
- if (this.modelCreator.isModelBase(this.objectConstructor) || base._inheritsModelBase) {
161
- this._inheritsModelBase = true;
162
- }
163
- };
164
- NeoTypeInfo.prototype.ensureInitialised = function () {
165
- if (!this.modelCreator) {
166
- // create a new instance which will cause the type to be setup.
167
- this.getOverrideConstructor()();
168
- }
169
- };
170
- /** Gets the override constructor which can setup a neo model. */
171
- NeoTypeInfo.prototype.getOverrideConstructor = function () {
172
- var self = this;
173
- var baseType = Object.getPrototypeOf(self.objectConstructor);
174
- if ((baseType === null || baseType === void 0 ? void 0 : baseType.name) === "neoConstructor") {
175
- return function () {
176
- throw Error(self.objectConstructor.name + " cannot inherit from a model decorated with @NeoModel.");
177
- };
178
- }
179
- var newConstructor = function neoConstructor() {
180
- var _a;
181
- var args = [];
182
- for (var _i = 0; _i < arguments.length; _i++) {
183
- args[_i] = arguments[_i];
184
- }
185
- var instance = new ((_a = self.objectConstructor).bind.apply(_a, __spreadArray([void 0], args, false)))();
186
- return self.makeObservable(instance);
187
- };
188
- // Copy statics from the original constructor, and all base classes to the new constructor.
189
- baseType = this.objectConstructor;
190
- while (baseType && baseType !== Function.prototype) {
191
- for (var _i = 0, _a = Object.getOwnPropertyNames(baseType); _i < _a.length; _i++) {
192
- var propertyName = _a[_i];
193
- if (propertyName !== "prototype" && propertyName !== "caller" && propertyName !== "arguments" && propertyName !== "neo") {
194
- if (newConstructor[propertyName] === undefined) {
195
- var descriptor = Object.getOwnPropertyDescriptor(baseType, propertyName);
196
- if (descriptor.value !== void 0) {
197
- if (typeof descriptor.value === 'function') {
198
- newConstructor[propertyName] = baseType[propertyName];
199
- }
200
- else {
201
- // Define a property on this constructor pointing to the original property.
202
- this.defineProxyProperty(baseType, newConstructor, propertyName);
203
- }
204
- }
205
- }
206
- }
207
- }
208
- baseType = Object.getPrototypeOf(baseType);
209
- }
210
- // Copy inversify metadata:
211
- Reflect.defineMetadata(inversifyMetadataKey, Reflect.getMetadata(inversifyMetadataKey, this.objectConstructor), newConstructor);
212
- newConstructor.neo = self.objectConstructor.neo;
213
- newConstructor.prototype = self.objectConstructor.prototype;
214
- return newConstructor;
215
- };
216
- NeoTypeInfo.prototype.makeObservable = function (instance) {
217
- this.ensureStaticRuntimeInfo(instance);
218
- return this.modelCreator.convertInstance(instance);
219
- };
220
- NeoTypeInfo.prototype.defineProxyProperty = function (baseType, newConstructor, propertyKey) {
221
- Object.defineProperty(newConstructor, propertyKey, {
222
- get: function () { return baseType[propertyKey]; },
223
- set: function (value) { return baseType[propertyKey] = value; }
224
- });
225
- };
226
- return NeoTypeInfo;
227
- }());
228
- export { NeoTypeInfo };
229
- export function ensureTypeInfo(constructor) {
230
- if (!constructor.hasOwnProperty("neo")) {
231
- constructor.neo = new NeoTypeInfo();
232
- constructor.neo.initialise(constructor);
233
- }
234
- return constructor;
235
- }
236
- function populateMetaItem(item, level) {
237
- if (level < 5) {
238
- for (var propertyKey in item.meta) {
239
- var propertyInfo = item.meta[propertyKey].propertyInfo;
240
- if ((propertyInfo.relationType === RelationType.ChildObject || propertyInfo.relationType === RelationType.ValueObject)) {
241
- var propertyType = propertyInfo.type;
242
- if (propertyType) {
243
- var childItem = { meta: propertyType.neo.meta };
244
- populateMetaItem(childItem, level + 1);
245
- item[propertyKey] = childItem;
246
- }
247
- }
248
- }
249
- }
250
- }
1
+ import { __spreadArray } from "tslib";
2
+ import { ExpressionRule, CallbackRule } from '../Validation/Rules';
3
+ import PropertyInstance from './PropertyInstance';
4
+ import PropertyInfo from './PropertyInfo';
5
+ import Globals from '../Globals';
6
+ import { ValidationRules } from '../Validation/ValidationRules';
7
+ import ModelProxy from '../Validation/ModelProxy';
8
+ import NeoTypes from '../AppServices/NeoTypes';
9
+ import { RelationType } from './Misc';
10
+ var ignoredPropertyNames = ["$mobx"];
11
+ var inversifyMetadataKey = "inversify:tagged";
12
+ var hasConvertedSymbol = Symbol("hasConvertedModel");
13
+ var NeoTypeInfo = /** @class */ (function () {
14
+ function NeoTypeInfo() {
15
+ this._inheritsBindableBase = false;
16
+ this._inheritsModelBase = false;
17
+ // Property info for each property on this type.
18
+ this.properties = [];
19
+ // Property info dictionary for easy lookup.
20
+ this.propertyMap = {};
21
+ // Properties of type List<T>, or marked with the ChildList or ChildObject decorator.
22
+ this.children = [];
23
+ // Properties marked with the parent decorator, multiple if a class can be child of more than one type.
24
+ this.parentProperties = [];
25
+ // List of rules added to the object only (not a property).
26
+ this.objectRules = [];
27
+ // Property instances for each property. These have the attachedTo properties set to null, so only static information is available.
28
+ this.meta = {};
29
+ // Main display member for drop downs etc.
30
+ this.displayMember = null;
31
+ }
32
+ Object.defineProperty(NeoTypeInfo.prototype, "inheritsBindableBase", {
33
+ get: function () {
34
+ return this._inheritsBindableBase;
35
+ },
36
+ enumerable: false,
37
+ configurable: true
38
+ });
39
+ Object.defineProperty(NeoTypeInfo.prototype, "inheritsModelBase", {
40
+ get: function () {
41
+ return this._inheritsModelBase;
42
+ },
43
+ enumerable: false,
44
+ configurable: true
45
+ });
46
+ Object.defineProperty(NeoTypeInfo.prototype, "metaItem", {
47
+ get: function () {
48
+ if (!this._metaItem) {
49
+ this._metaItem = { meta: this.meta };
50
+ populateMetaItem(this._metaItem, 0);
51
+ }
52
+ return this._metaItem;
53
+ },
54
+ enumerable: false,
55
+ configurable: true
56
+ });
57
+ NeoTypeInfo.prototype.initialise = function (objectConstructor) {
58
+ this.objectConstructor = objectConstructor;
59
+ };
60
+ NeoTypeInfo.prototype.addPropertyInfo = function (propertyInfo) {
61
+ this.propertyMap[propertyInfo.propertyName] = propertyInfo;
62
+ this.properties.push(propertyInfo);
63
+ this.meta[propertyInfo.propertyName] = new PropertyInstance(null, propertyInfo);
64
+ };
65
+ NeoTypeInfo.prototype.getOrAddProperty = function (propertyName) {
66
+ var propertyInfo = this.propertyMap[propertyName];
67
+ if (!propertyInfo) {
68
+ propertyInfo = new PropertyInfo(propertyName);
69
+ this.addPropertyInfo(propertyInfo);
70
+ }
71
+ return propertyInfo;
72
+ };
73
+ NeoTypeInfo.prototype.addComputed = function (propertyName, descriptor, isComputed) {
74
+ if (isComputed === void 0) { isComputed = true; }
75
+ var pi = this.getOrAddProperty(propertyName);
76
+ if (pi.isComputed === null) {
77
+ pi.isComputed = isComputed;
78
+ pi.noTrack = true;
79
+ }
80
+ pi.isReadOnly = descriptor.set === undefined;
81
+ pi.descriptor = descriptor;
82
+ };
83
+ NeoTypeInfo.prototype.addAttributeRule = function (propertyName, rule) {
84
+ this.getOrAddProperty(propertyName).addAttributeRule(rule);
85
+ };
86
+ /**
87
+ * Ensures the type has all the information it needs in order to convert instances of this type.
88
+ * E.g. Making sure each property has a property info object.
89
+ * */
90
+ NeoTypeInfo.prototype.ensureStaticRuntimeInfo = function (instance) {
91
+ if (!this.modelCreator) {
92
+ this.modelCreator = Globals.appService.get(NeoTypes.Core.ModelCreator);
93
+ var baseType = Object.getPrototypeOf(this.objectConstructor.prototype);
94
+ if (baseType != Object.prototype) {
95
+ this.merge(baseType.constructor);
96
+ }
97
+ else {
98
+ this._inheritsBindableBase = this.modelCreator.isBindableBase(this.objectConstructor);
99
+ }
100
+ this.modelCreator.initialise(this, this.objectConstructor);
101
+ if (instance && this.modelCreator.shouldInitialiseAllMembers) {
102
+ for (var _i = 0, _a = Object.getOwnPropertyNames(instance); _i < _a.length; _i++) {
103
+ var propertyName = _a[_i];
104
+ if (ignoredPropertyNames.indexOf(propertyName) < 0) {
105
+ var pi = this.getOrAddProperty(propertyName);
106
+ pi.setupFromInstance(instance);
107
+ }
108
+ }
109
+ }
110
+ if (instance)
111
+ this.addRules(instance);
112
+ }
113
+ };
114
+ NeoTypeInfo.prototype.addRules = function (instance) {
115
+ if (instance.addBusinessRules !== undefined) {
116
+ var validationRules = new ValidationRules();
117
+ instance.addBusinessRules(validationRules);
118
+ if (validationRules.rules.some(function (c) { return c instanceof CallbackRule && c.hasBoundFunction; })) {
119
+ console.error("Warning: ".concat(this.objectConstructor.name, " has rules which have been added using a bound function, or arrow function."));
120
+ }
121
+ var modelProxy = new ModelProxy(instance);
122
+ for (var _i = 0, _a = validationRules.rules; _i < _a.length; _i++) {
123
+ var rule = _a[_i];
124
+ var properties = rule.getDisplayProperties(this.propertyMap);
125
+ if (properties === undefined && rule instanceof ExpressionRule) {
126
+ properties = modelProxy.tryExtractProperties(rule);
127
+ }
128
+ if (properties && properties.length) {
129
+ for (var _b = 0, properties_1 = properties; _b < properties_1.length; _b++) {
130
+ var property = properties_1[_b];
131
+ property.rules.push(rule);
132
+ }
133
+ }
134
+ else {
135
+ this.objectRules.push(rule);
136
+ }
137
+ }
138
+ }
139
+ };
140
+ /** Copy the property info list from each base type into the current type. */
141
+ NeoTypeInfo.prototype.merge = function (baseConstructor) {
142
+ // Convert base class to a neo type
143
+ var base = ensureTypeInfo(baseConstructor).neo;
144
+ base.ensureStaticRuntimeInfo();
145
+ for (var _i = 0, _a = base.properties; _i < _a.length; _i++) {
146
+ var propertyInfo = _a[_i];
147
+ this.addPropertyInfo(propertyInfo.clone());
148
+ }
149
+ for (var _b = 0, _c = base.children; _b < _c.length; _b++) {
150
+ var child = _c[_b];
151
+ this.children.push(this.propertyMap[child.propertyName]);
152
+ }
153
+ for (var _d = 0, _e = base.parentProperties; _d < _e.length; _d++) {
154
+ var parent_1 = _e[_d];
155
+ this.parentProperties.push(this.propertyMap[parent_1.propertyName]);
156
+ }
157
+ if (!this.parentProperty && base.parentProperty) {
158
+ this.parentProperty = this.propertyMap[base.parentProperty.propertyName];
159
+ }
160
+ this._inheritsBindableBase = base._inheritsBindableBase;
161
+ if (this.modelCreator.isModelBase(this.objectConstructor) || base._inheritsModelBase) {
162
+ this._inheritsModelBase = true;
163
+ }
164
+ };
165
+ NeoTypeInfo.prototype.ensureInitialised = function () {
166
+ if (!this.modelCreator) {
167
+ // create a new instance which will cause the type to be setup.
168
+ this.createInstance();
169
+ }
170
+ };
171
+ NeoTypeInfo.prototype.createInstance = function () {
172
+ var args = [];
173
+ for (var _i = 0; _i < arguments.length; _i++) {
174
+ args[_i] = arguments[_i];
175
+ }
176
+ if (this.wrapperConstructor) {
177
+ return this.wrapperConstructor(args);
178
+ }
179
+ else {
180
+ return new this.objectConstructor(args);
181
+ }
182
+ };
183
+ /** Gets the override constructor which can setup a neo model. */
184
+ NeoTypeInfo.prototype.getOverrideConstructor = function () {
185
+ if (!this.wrapperConstructor) {
186
+ this.wrapperConstructor = this.createWrapperConstructor();
187
+ }
188
+ return this.wrapperConstructor;
189
+ };
190
+ NeoTypeInfo.prototype.createWrapperConstructor = function () {
191
+ var self = this;
192
+ var baseType = Object.getPrototypeOf(self.objectConstructor);
193
+ if ((baseType === null || baseType === void 0 ? void 0 : baseType.name) === "neoConstructor") {
194
+ return function () {
195
+ throw Error(self.objectConstructor.name + " cannot inherit from a model decorated with @NeoModel.");
196
+ };
197
+ }
198
+ var newConstructor = function neoConstructor() {
199
+ var _a;
200
+ var args = [];
201
+ for (var _i = 0; _i < arguments.length; _i++) {
202
+ args[_i] = arguments[_i];
203
+ }
204
+ var instance = new ((_a = self.objectConstructor).bind.apply(_a, __spreadArray([void 0], args, false)))();
205
+ return self.makeObservable(instance);
206
+ };
207
+ // Copy statics from the original constructor, and all base classes to the new constructor.
208
+ baseType = this.objectConstructor;
209
+ while (baseType && baseType !== Function.prototype) {
210
+ for (var _i = 0, _a = Object.getOwnPropertyNames(baseType); _i < _a.length; _i++) {
211
+ var propertyName = _a[_i];
212
+ if (propertyName !== "prototype" && propertyName !== "caller" && propertyName !== "arguments" && propertyName !== "neo") {
213
+ // @ts-ignore
214
+ if (newConstructor[propertyName] === undefined) {
215
+ var descriptor = Object.getOwnPropertyDescriptor(baseType, propertyName);
216
+ if (descriptor.value !== void 0) {
217
+ if (typeof descriptor.value === 'function') {
218
+ // @ts-ignore
219
+ newConstructor[propertyName] = baseType[propertyName];
220
+ }
221
+ else {
222
+ // Define a property on this constructor pointing to the original property.
223
+ this.defineProxyProperty(baseType, newConstructor, propertyName);
224
+ }
225
+ }
226
+ }
227
+ }
228
+ }
229
+ baseType = Object.getPrototypeOf(baseType);
230
+ }
231
+ // Copy inversify metadata:
232
+ Reflect.defineMetadata(inversifyMetadataKey, Reflect.getMetadata(inversifyMetadataKey, this.objectConstructor), newConstructor);
233
+ newConstructor.neo = self.objectConstructor.neo;
234
+ newConstructor.prototype = self.objectConstructor.prototype;
235
+ return newConstructor;
236
+ };
237
+ NeoTypeInfo.prototype.makeObservable = function (instance, options) {
238
+ options = options !== null && options !== void 0 ? options : {};
239
+ if (!options.skipConversion) {
240
+ this.ensureStaticRuntimeInfo(instance);
241
+ if (options.makeObservable === undefined) {
242
+ options.makeObservable = this.inheritsModelBase;
243
+ }
244
+ if (instance[hasConvertedSymbol]) {
245
+ throw Error("makeObservable() or makeBindable() has been called multiple times on type ".concat(this.objectConstructor.name, ". Make sure this is only called on the last derived type."));
246
+ }
247
+ else {
248
+ instance[hasConvertedSymbol] = true;
249
+ }
250
+ return this.modelCreator.convertInstance(instance, options);
251
+ }
252
+ return instance;
253
+ };
254
+ NeoTypeInfo.prototype.defineProxyProperty = function (baseType, newConstructor, propertyKey) {
255
+ Object.defineProperty(newConstructor, propertyKey, {
256
+ get: function () { return baseType[propertyKey]; },
257
+ set: function (value) { return baseType[propertyKey] = value; }
258
+ });
259
+ };
260
+ /**
261
+ * Makes a class instance observable.
262
+ * Must be called in the constructor, preferably directly after the super() call.
263
+ * This method can be used as an alternative to the @NeoModel decorator.
264
+ */
265
+ NeoTypeInfo.makeObservable = function (instance, options) {
266
+ var ctor = instance.constructor;
267
+ ensureTypeInfo(ctor);
268
+ ctor.neo.makeObservable(instance, options);
269
+ };
270
+ /** Ensures the type and its metadata are initialised. */
271
+ NeoTypeInfo.ensureInitialised = function (constructor) {
272
+ var typeInfo = ensureTypeInfo(constructor).neo;
273
+ typeInfo.ensureInitialised();
274
+ return typeInfo;
275
+ };
276
+ return NeoTypeInfo;
277
+ }());
278
+ export { NeoTypeInfo };
279
+ export function ensureTypeInfo(constructor) {
280
+ if (!constructor.hasOwnProperty("neo")) {
281
+ constructor.neo = new NeoTypeInfo();
282
+ constructor.neo.initialise(constructor);
283
+ }
284
+ return constructor;
285
+ }
286
+ function populateMetaItem(item, level) {
287
+ if (level < 5) {
288
+ for (var propertyKey in item.meta) {
289
+ var propertyInfo = item.meta[propertyKey].propertyInfo;
290
+ if ((propertyInfo.relationType === RelationType.ChildObject || propertyInfo.relationType === RelationType.ValueObject)) {
291
+ var propertyType = propertyInfo.type;
292
+ if (propertyType) {
293
+ var childItem = { meta: propertyType.neo.meta };
294
+ populateMetaItem(childItem, level + 1);
295
+ item[propertyKey] = childItem;
296
+ }
297
+ }
298
+ }
299
+ }
300
+ }
@@ -1,8 +1,8 @@
1
- import PropertyInfo from './PropertyInfo';
2
- import PropertyInstance from './PropertyInstance';
3
- export declare class ObservableProperty {
4
- /** Creates an observable property which can be used for binding. */
5
- static create(displayName: string, defaultValue: any, options?: Partial<PropertyInfo>, isRequired?: boolean): PropertyInstance;
6
- /** Creates an observable property which can be used for binding. The value will be required when bound in an editor. */
7
- static required(displayName: string, defaultValue: any, options?: Partial<PropertyInfo>): PropertyInstance;
8
- }
1
+ import PropertyInfo from './PropertyInfo';
2
+ import PropertyInstance from './PropertyInstance';
3
+ export declare class ObservableProperty {
4
+ /** Creates an observable property which can be used for binding. */
5
+ static create(displayName: string, defaultValue: any, options?: Partial<PropertyInfo>, isRequired?: boolean): PropertyInstance;
6
+ /** Creates an observable property which can be used for binding. The value will be required when bound in an editor. */
7
+ static required(displayName: string, defaultValue: any, options?: Partial<PropertyInfo>): PropertyInstance;
8
+ }