alchemymvc 1.3.21 → 1.4.0-alpha.1

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 (155) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -3
  3. package/lib/app/behaviour/publishable_behaviour.js +5 -5
  4. package/lib/app/behaviour/revision_behaviour.js +10 -10
  5. package/lib/app/behaviour/sluggable_behaviour.js +14 -14
  6. package/lib/app/conduit/electron_conduit.js +9 -9
  7. package/lib/app/conduit/http_conduit.js +13 -13
  8. package/lib/app/conduit/loopback_conduit.js +15 -15
  9. package/lib/app/conduit/socket_conduit.js +43 -43
  10. package/lib/app/config/routes.js +26 -0
  11. package/lib/app/controller/00-default_app_controller.js +21 -0
  12. package/lib/app/controller/alchemy_info_controller.js +12 -12
  13. package/lib/app/datasource/mongo_datasource.js +16 -16
  14. package/lib/app/element/00-default_app_element.js +19 -0
  15. package/lib/app/element/time_ago.js +5 -5
  16. package/lib/app/helper/00-default_app_helper.js +11 -0
  17. package/lib/app/helper/alchemy_helper.js +22 -22
  18. package/lib/app/helper/backed_map.js +1 -1
  19. package/lib/app/helper/breadcrumb.js +10 -10
  20. package/lib/app/helper/client_collection.js +3 -3
  21. package/lib/app/helper/cron.js +29 -29
  22. package/lib/app/helper/enum_values.js +6 -6
  23. package/lib/app/helper/pagination_helper.js +36 -36
  24. package/lib/app/helper/router_helper.js +35 -35
  25. package/lib/app/helper/socket_helper.js +57 -57
  26. package/lib/app/helper/syncable.js +84 -59
  27. package/lib/app/helper_component/paginate_component.js +9 -9
  28. package/lib/app/helper_controller/component.js +1 -1
  29. package/lib/app/helper_controller/conduit.js +31 -31
  30. package/lib/app/helper_controller/controller.js +54 -39
  31. package/lib/app/helper_datasource/00-nosql_datasource.js +624 -70
  32. package/lib/app/helper_datasource/05-fallback_datasource.js +10 -10
  33. package/lib/app/helper_datasource/idb_datasource.js +6 -6
  34. package/lib/app/helper_datasource/indexed_db.js +22 -22
  35. package/lib/app/helper_datasource/remote_datasource.js +5 -5
  36. package/lib/app/helper_error/http_error.js +4 -4
  37. package/lib/app/helper_error/model_error.js +2 -2
  38. package/lib/app/helper_error/validation_error.js +12 -12
  39. package/lib/app/helper_field/00-objectid_field.js +7 -7
  40. package/lib/app/helper_field/05-string_field.js +16 -12
  41. package/lib/app/helper_field/06-text_field.js +2 -4
  42. package/lib/app/helper_field/10-number_field.js +9 -12
  43. package/lib/app/helper_field/11-date_field.js +15 -15
  44. package/lib/app/helper_field/15-local_temporal_field.js +10 -10
  45. package/lib/app/helper_field/20-decimal_field.js +8 -9
  46. package/lib/app/helper_field/belongsto_field.js +1 -1
  47. package/lib/app/helper_field/big_int_field.js +8 -8
  48. package/lib/app/helper_field/boolean_field.js +9 -11
  49. package/lib/app/helper_field/datetime_field.js +3 -3
  50. package/lib/app/helper_field/enum_field.js +13 -8
  51. package/lib/app/helper_field/fixed_decimal_field.js +6 -7
  52. package/lib/app/helper_field/geopoint_field.js +9 -10
  53. package/lib/app/helper_field/habtm_field.js +3 -3
  54. package/lib/app/helper_field/hasoneparent_field.js +1 -1
  55. package/lib/app/helper_field/html_field.js +2 -4
  56. package/lib/app/helper_field/integer_field.js +8 -11
  57. package/lib/app/helper_field/local_date_field.js +5 -5
  58. package/lib/app/helper_field/local_date_time_field.js +5 -5
  59. package/lib/app/helper_field/local_time_field.js +5 -5
  60. package/lib/app/helper_field/mixed_field.js +5 -5
  61. package/lib/app/helper_field/object_field.js +8 -8
  62. package/lib/app/helper_field/password_field.js +3 -3
  63. package/lib/app/helper_field/regexp_field.js +7 -9
  64. package/lib/app/helper_field/schema_field.js +91 -88
  65. package/lib/app/helper_field/settings_field.js +92 -0
  66. package/lib/app/helper_field/time_field.js +6 -6
  67. package/lib/app/helper_field/url_field.js +2 -4
  68. package/lib/app/helper_model/00-base_criteria.js +662 -0
  69. package/lib/app/helper_model/05-criteria_expressions.js +605 -0
  70. package/lib/app/helper_model/10-model_criteria.js +1182 -0
  71. package/lib/app/helper_model/data_provider.js +2 -2
  72. package/lib/app/helper_model/document.js +103 -92
  73. package/lib/app/helper_model/document_list.js +14 -14
  74. package/lib/app/helper_model/field_config.js +11 -11
  75. package/lib/app/helper_model/field_set.js +17 -17
  76. package/lib/app/helper_model/model.js +203 -124
  77. package/lib/app/helper_model/remote_data_provider.js +2 -2
  78. package/lib/app/helper_validator/00_validator.js +16 -16
  79. package/lib/app/helper_validator/not_empty_validator.js +9 -9
  80. package/lib/app/model/00-default_app_model.js +18 -0
  81. package/lib/app/model/05-system_model.js +27 -0
  82. package/lib/app/model/{alchemy_migration_model.js → system_migration_model.js} +4 -4
  83. package/lib/app/model/system_setting_model.js +154 -0
  84. package/lib/app/model/{alchemy_task_history_model.js → system_task_history_model.js} +7 -7
  85. package/lib/app/model/{alchemy_task_model.js → system_task_model.js} +11 -11
  86. package/lib/bootstrap.js +22 -312
  87. package/lib/class/accumulator.js +5 -5
  88. package/lib/class/behaviour.js +5 -5
  89. package/lib/class/component.js +3 -3
  90. package/lib/class/conduit.js +203 -163
  91. package/lib/class/controller.js +42 -42
  92. package/lib/class/datasource.js +74 -79
  93. package/lib/class/document.js +74 -95
  94. package/lib/class/document_list.js +5 -5
  95. package/lib/class/element.js +17 -17
  96. package/lib/class/error.js +3 -3
  97. package/lib/class/field.js +169 -91
  98. package/lib/class/field_value.js +6 -6
  99. package/lib/class/helper.js +3 -3
  100. package/lib/class/inode.js +17 -17
  101. package/lib/class/inode_dir.js +12 -12
  102. package/lib/class/inode_file.js +50 -25
  103. package/lib/class/inode_list.js +4 -4
  104. package/lib/class/migration.js +4 -4
  105. package/lib/class/model.js +182 -168
  106. package/lib/class/path_definition.js +22 -22
  107. package/lib/class/path_evaluator.js +5 -5
  108. package/lib/class/path_param_definition.js +7 -7
  109. package/lib/class/plugin.js +312 -0
  110. package/lib/class/postponement.js +29 -29
  111. package/lib/class/reciprocal.js +8 -8
  112. package/lib/class/route.js +33 -33
  113. package/lib/class/router.js +73 -73
  114. package/lib/class/schema.js +21 -21
  115. package/lib/class/schema_client.js +73 -67
  116. package/lib/class/session.js +63 -29
  117. package/lib/class/session_scene.js +4 -4
  118. package/lib/class/sitemap.js +16 -16
  119. package/lib/class/task.js +39 -39
  120. package/lib/class/task_service.js +43 -47
  121. package/lib/{init → core}/alchemy.js +413 -374
  122. package/lib/{init/functions.js → core/alchemy_functions.js} +171 -108
  123. package/lib/core/alchemy_load_functions.js +715 -0
  124. package/lib/core/base.js +50 -62
  125. package/lib/core/client_alchemy.js +144 -152
  126. package/lib/core/client_base.js +39 -52
  127. package/lib/core/discovery.js +16 -18
  128. package/lib/core/middleware.js +54 -43
  129. package/lib/core/{routing.js → prefix.js} +14 -16
  130. package/lib/core/setting.js +1684 -0
  131. package/lib/core/stage.js +758 -0
  132. package/lib/scripts/create_constants.js +119 -0
  133. package/lib/{init/languages.js → scripts/create_languages.js} +5 -5
  134. package/lib/scripts/create_settings.js +449 -0
  135. package/lib/scripts/create_shared_constants.js +95 -0
  136. package/lib/scripts/create_stages.js +55 -0
  137. package/lib/scripts/init_alchemy.js +51 -0
  138. package/lib/{init/requirements.js → scripts/preload_modules.js} +15 -2
  139. package/lib/scripts/setup_devwatch.js +238 -0
  140. package/lib/stages/00-load_core.js +342 -0
  141. package/lib/stages/05-load_app.js +57 -0
  142. package/lib/stages/10-datasource.js +61 -0
  143. package/lib/stages/15-tasks.js +27 -0
  144. package/lib/stages/20-settings.js +68 -0
  145. package/lib/stages/50-routes.js +218 -0
  146. package/lib/stages/90-server.js +347 -0
  147. package/package.json +5 -7
  148. package/lib/app/helper_model/criteria.js +0 -2294
  149. package/lib/app/helper_model/db_query.js +0 -1488
  150. package/lib/app/routes.js +0 -11
  151. package/lib/core/socket.js +0 -171
  152. package/lib/init/constants.js +0 -158
  153. package/lib/init/devwatch.js +0 -238
  154. package/lib/init/load_functions.js +0 -973
  155. package/lib/stages.js +0 -513
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @constructor
5
5
  *
6
- * @author Jelle De Loecker <jelle@develry.be>
6
+ * @author Jelle De Loecker <jelle@elevenways.be>
7
7
  * @since 0.2.0
8
8
  * @version 1.1.0
9
9
  */
@@ -12,7 +12,7 @@ const DateField = Function.inherits('Alchemy.Field', 'Date');
12
12
  /**
13
13
  * Set the datatype name
14
14
  *
15
- * @author Jelle De Loecker <jelle@develry.be>
15
+ * @author Jelle De Loecker <jelle@elevenways.be>
16
16
  * @since 0.2.0
17
17
  * @version 1.1.0
18
18
  */
@@ -21,7 +21,7 @@ DateField.setDatatype('date');
21
21
  /**
22
22
  * Dates are self-contained objects
23
23
  *
24
- * @author Jelle De Loecker <jelle@develry.be>
24
+ * @author Jelle De Loecker <jelle@elevenways.be>
25
25
  * @since 1.1.0
26
26
  * @version 1.1.0
27
27
  */
@@ -30,15 +30,15 @@ DateField.setSelfContained(true);
30
30
  /**
31
31
  * Cast the given value to this field's type
32
32
  *
33
- * @author Jelle De Loecker <jelle@develry.be>
33
+ * @author Jelle De Loecker <jelle@elevenways.be>
34
34
  * @since 0.2.0
35
- * @version 0.5.0
35
+ * @version 1.4.0
36
36
  *
37
- * @param {Mixed} value
37
+ * @param {*} value
38
38
  *
39
39
  * @return {Date}
40
40
  */
41
- DateField.setMethod(function cast(value) {
41
+ DateField.setCastFunction(function cast(value) {
42
42
 
43
43
  // Don't cast falsy values,
44
44
  // that'll result in a date around 1970
@@ -57,15 +57,15 @@ DateField.setMethod(function cast(value) {
57
57
  /**
58
58
  * Split date into multiple fields
59
59
  *
60
- * @author Jelle De Loecker <jelle@develry.be>
60
+ * @author Jelle De Loecker <jelle@elevenways.be>
61
61
  * @since 0.5.0
62
62
  * @version 0.5.0
63
63
  *
64
- * @param {Mixed} value The field's own value
64
+ * @param {*} value The field's own value
65
65
  * @param {Object} data The main record
66
66
  * @param {Datasource} datasource The datasource instance
67
67
  *
68
- * @return {Mixed}
68
+ * @return {*}
69
69
  */
70
70
  DateField.setMethod(function _toDatasource(value, data, datasource, callback) {
71
71
 
@@ -101,13 +101,13 @@ DateField.setMethod(function _toDatasource(value, data, datasource, callback) {
101
101
  /**
102
102
  * Convert from database to app
103
103
  *
104
- * @author Jelle De Loecker <jelle@develry.be>
104
+ * @author Jelle De Loecker <jelle@elevenways.be>
105
105
  * @since 1.1.0
106
106
  * @version 1.1.0
107
107
  *
108
108
  * @param {Object} query The original query
109
109
  * @param {Object} options The original query options
110
- * @param {Mixed} value The field value, as stored in the DB
110
+ * @param {*} value The field value, as stored in the DB
111
111
  * @param {Function} callback
112
112
  */
113
113
  DateField.setMethod(function _toApp(query, options, value, callback) {
@@ -122,14 +122,14 @@ DateField.setMethod(function _toApp(query, options, value, callback) {
122
122
  /**
123
123
  * Cast the given value to this field's type for search in a db
124
124
  *
125
- * @author Jelle De Loecker <jelle@develry.be>
125
+ * @author Jelle De Loecker <jelle@elevenways.be>
126
126
  * @since 0.5.0
127
127
  * @version 1.1.0
128
128
  *
129
- * @param {Mixed} value
129
+ * @param {*} value
130
130
  * @param {FieldExpression} expression
131
131
  *
132
- * @return {Mixed}
132
+ * @return {*}
133
133
  */
134
134
  DateField.setMethod(function castCondition(value, expression) {
135
135
 
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @constructor
5
5
  *
6
- * @author Jelle De Loecker <jelle@elevenways.be>
6
+ * @author Jelle De Loecker <jelle@elevenways.be>
7
7
  * @since 1.3.20
8
8
  * @version 1.3.20
9
9
  */
@@ -12,7 +12,7 @@ const LocalTemporal = Function.inherits('Alchemy.Field.Date', 'LocalTemporal');
12
12
  /**
13
13
  * Mark this class as being abstract
14
14
  *
15
- * @author Jelle De Loecker <jelle@elevenways.be>
15
+ * @author Jelle De Loecker <jelle@elevenways.be>
16
16
  * @since 1.3.20
17
17
  * @version 1.3.20
18
18
  */
@@ -21,14 +21,14 @@ LocalTemporal.makeAbstractClass();
21
21
  /**
22
22
  * Cast the given value to this field's type for search in a db
23
23
  *
24
- * @author Jelle De Loecker <jelle@elevenways.be>
24
+ * @author Jelle De Loecker <jelle@elevenways.be>
25
25
  * @since 1.3.20
26
26
  * @version 1.3.20
27
27
  *
28
- * @param {Mixed} value
28
+ * @param {*} value
29
29
  * @param {Array} field_paths The path to the field
30
30
  *
31
- * @return {Mixed}
31
+ * @return {*}
32
32
  */
33
33
  LocalTemporal.setMethod(function _castCondition(value, field_paths) {
34
34
 
@@ -49,15 +49,15 @@ LocalTemporal.setMethod(function _castCondition(value, field_paths) {
49
49
  /**
50
50
  * Prepare the value to be stored in the database
51
51
  *
52
- * @author Jelle De Loecker <jelle@elevenways.be>
52
+ * @author Jelle De Loecker <jelle@elevenways.be>
53
53
  * @since 1.3.20
54
54
  * @version 1.3.20
55
55
  *
56
- * @param {Mixed} value The field's own value
56
+ * @param {*} value The field's own value
57
57
  * @param {Object} data The main record
58
58
  * @param {Datasource} datasource The datasource instance
59
59
  *
60
- * @return {Mixed}
60
+ * @return {*}
61
61
  */
62
62
  LocalTemporal.setMethod(function _toDatasource(value, data, datasource, callback) {
63
63
 
@@ -77,13 +77,13 @@ LocalTemporal.setMethod(function _toDatasource(value, data, datasource, callback
77
77
  /**
78
78
  * Convert from database to app
79
79
  *
80
- * @author Jelle De Loecker <jelle@elevenways.be>
80
+ * @author Jelle De Loecker <jelle@elevenways.be>
81
81
  * @since 1.3.20
82
82
  * @version 1.3.20
83
83
  *
84
84
  * @param {Object} query The original query
85
85
  * @param {Object} options The original query options
86
- * @param {Mixed} value The field value, as stored in the DB
86
+ * @param {*} value The field value, as stored in the DB
87
87
  * @param {Function} callback
88
88
  */
89
89
  LocalTemporal.setMethod(function _toApp(query, options, value, callback) {
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @constructor
5
5
  *
6
- * @author Jelle De Loecker <jelle@elevenways.be>
6
+ * @author Jelle De Loecker <jelle@elevenways.be>
7
7
  * @since 1.3.20
8
8
  * @version 1.3.20
9
9
  */
@@ -12,19 +12,18 @@ const DecimalField = Function.inherits('Alchemy.Field.Number', 'Decimal');
12
12
  /**
13
13
  * Cast the given value to this field's type
14
14
  *
15
- * @author Jelle De Loecker <jelle@elevenways.be>
15
+ * @author Jelle De Loecker <jelle@elevenways.be>
16
16
  * @since 1.3.20
17
- * @version 1.3.20
17
+ * @version 1.4.0
18
18
  *
19
19
  * @param {Mixed} value
20
20
  *
21
21
  * @return {Decimal}
22
22
  */
23
- DecimalField.setMethod(function cast(value) {
23
+ DecimalField.setCastFunction(function cast(value) {
24
24
 
25
- // Allow null
26
25
  if (value == null) {
27
- return value;
26
+ return Decimal.ZERO;
28
27
  }
29
28
 
30
29
  if (value instanceof Classes.Develry.Decimal) {
@@ -39,7 +38,7 @@ DecimalField.setMethod(function cast(value) {
39
38
  /**
40
39
  * Cast the given value to this field's type for search in a db
41
40
  *
42
- * @author Jelle De Loecker <jelle@elevenways.be>
41
+ * @author Jelle De Loecker <jelle@elevenways.be>
43
42
  * @since 1.3.20
44
43
  * @version 1.3.20
45
44
  *
@@ -63,7 +62,7 @@ DecimalField.setMethod(function _castCondition(value, field_paths) {
63
62
  /**
64
63
  * Prepare the value to be stored in the database
65
64
  *
66
- * @author Jelle De Loecker <jelle@elevenways.be>
65
+ * @author Jelle De Loecker <jelle@elevenways.be>
67
66
  * @since 1.3.20
68
67
  * @version 1.3.20
69
68
  *
@@ -84,7 +83,7 @@ DecimalField.setMethod(function _toDatasource(value, data, datasource, callback)
84
83
  /**
85
84
  * Convert from database to app
86
85
  *
87
- * @author Jelle De Loecker <jelle@elevenways.be>
86
+ * @author Jelle De Loecker <jelle@elevenways.be>
88
87
  * @since 1.3.20
89
88
  * @version 1.3.20
90
89
  *
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @constructor
5
5
  *
6
- * @author Jelle De Loecker <jelle@develry.be>
6
+ * @author Jelle De Loecker <jelle@elevenways.be>
7
7
  * @since 0.2.0
8
8
  * @version 1.1.0
9
9
  */
@@ -9,7 +9,7 @@ if (Blast.isNode) {
9
9
  *
10
10
  * @constructor
11
11
  *
12
- * @author Jelle De Loecker <jelle@elevenways.be>
12
+ * @author Jelle De Loecker <jelle@elevenways.be>
13
13
  * @since 1.3.6
14
14
  * @version 1.3.6
15
15
  */
@@ -18,7 +18,7 @@ const BigIntField = Function.inherits('Alchemy.Field.Number', 'BigInt');
18
18
  /**
19
19
  * Set the datatype name
20
20
  *
21
- * @author Jelle De Loecker <jelle@elevenways.be>
21
+ * @author Jelle De Loecker <jelle@elevenways.be>
22
22
  * @since 1.3.6
23
23
  * @version 1.3.6
24
24
  */
@@ -27,15 +27,15 @@ BigIntField.setDatatype('bigint');
27
27
  /**
28
28
  * Cast the given value to this field's type
29
29
  *
30
- * @author Jelle De Loecker <jelle@elevenways.be>
30
+ * @author Jelle De Loecker <jelle@elevenways.be>
31
31
  * @since 1.3.6
32
- * @version 1.3.6
32
+ * @version 1.4.0
33
33
  *
34
34
  * @param {Mixed} value
35
35
  *
36
36
  * @return {BigInt}
37
37
  */
38
- BigIntField.setMethod(function cast(value) {
38
+ BigIntField.setCastFunction(function cast(value) {
39
39
 
40
40
  // Allow null
41
41
  if (value == null) {
@@ -48,7 +48,7 @@ BigIntField.setMethod(function cast(value) {
48
48
  /**
49
49
  * Cast the given value to this field's type for search in a db
50
50
  *
51
- * @author Jelle De Loecker <jelle@elevenways.be>
51
+ * @author Jelle De Loecker <jelle@elevenways.be>
52
52
  * @since 1.3.6
53
53
  * @version 1.3.21
54
54
  *
@@ -68,7 +68,7 @@ BigIntField.setMethod(function _castCondition(value, field_paths) {
68
68
  /**
69
69
  * Convert the value for the given datasource
70
70
  *
71
- * @author Jelle De Loecker <jelle@elevenways.be>
71
+ * @author Jelle De Loecker <jelle@elevenways.be>
72
72
  * @since 1.3.6
73
73
  * @version 1.3.20
74
74
  *
@@ -89,7 +89,7 @@ BigIntField.setMethod(function _toDatasource(value, data, datasource, callback)
89
89
  /**
90
90
  * Convert from database to app
91
91
  *
92
- * @author Jelle De Loecker <jelle@elevenways.be>
92
+ * @author Jelle De Loecker <jelle@elevenways.be>
93
93
  * @since 1.3.6
94
94
  * @version 1.3.20
95
95
  *
@@ -3,18 +3,16 @@
3
3
  *
4
4
  * @constructor
5
5
  *
6
- * @author Jelle De Loecker <jelle@develry.be>
6
+ * @author Jelle De Loecker <jelle@elevenways.be>
7
7
  * @since 0.2.0
8
8
  * @version 1.1.0
9
9
  */
10
- var BooleanField = Function.inherits('Alchemy.Field', function Boolean(schema, name, options) {
11
- Boolean.super.call(this, schema, name, options);
12
- });
10
+ const BooleanField = Function.inherits('Alchemy.Field', 'Boolean');
13
11
 
14
12
  /**
15
13
  * Set the datatype name
16
14
  *
17
- * @author Jelle De Loecker <jelle@develry.be>
15
+ * @author Jelle De Loecker <jelle@elevenways.be>
18
16
  * @since 0.2.0
19
17
  * @version 1.1.0
20
18
  */
@@ -23,28 +21,28 @@ BooleanField.setDatatype('boolean');
23
21
  /**
24
22
  * Cast the given value to this field's type
25
23
  *
26
- * @author Jelle De Loecker <jelle@develry.be>
24
+ * @author Jelle De Loecker <jelle@elevenways.be>
27
25
  * @since 0.2.0
28
26
  * @version 0.2.0
29
27
  *
30
- * @param {Mixed} value
28
+ * @param {*} value
31
29
  *
32
- * @return {Boolean}
30
+ * @return {boolean}
33
31
  */
34
- BooleanField.setMethod(function cast(value) {
32
+ BooleanField.setCastFunction(function cast(value) {
35
33
  return Boolean(value);
36
34
  });
37
35
 
38
36
  /**
39
37
  * See if the given vlaue is considered not-empty for this field
40
38
  *
41
- * @author Jelle De Loecker <jelle@elevenways.be>
39
+ * @author Jelle De Loecker <jelle@elevenways.be>
42
40
  * @since 1.3.7
43
41
  * @version 1.3.7
44
42
  *
45
43
  * @param {Mixed} value
46
44
  *
47
- * @return {Boolean}
45
+ * @return {boolean}
48
46
  */
49
47
  BooleanField.setMethod(function valueHasContent(value) {
50
48
 
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @constructor
5
5
  *
6
- * @author Jelle De Loecker <jelle@develry.be>
6
+ * @author Jelle De Loecker <jelle@elevenways.be>
7
7
  * @since 0.2.0
8
8
  * @version 1.1.0
9
9
  */
@@ -14,7 +14,7 @@ var Datetime = Function.inherits('Alchemy.Field.Date', function Datetime(schema,
14
14
  /**
15
15
  * Set the datatype name
16
16
  *
17
- * @author Jelle De Loecker <jelle@develry.be>
17
+ * @author Jelle De Loecker <jelle@elevenways.be>
18
18
  * @since 1.1.0
19
19
  * @version 1.1.0
20
20
  */
@@ -23,7 +23,7 @@ Datetime.setDatatype('datetime');
23
23
  /**
24
24
  * Split date into multiple fields
25
25
  *
26
- * @author Jelle De Loecker <jelle@develry.be>
26
+ * @author Jelle De Loecker <jelle@elevenways.be>
27
27
  * @since 0.5.0
28
28
  * @version 1.1.0
29
29
  *
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @constructor
5
5
  *
6
- * @author Jelle De Loecker <jelle@develry.be>
6
+ * @author Jelle De Loecker <jelle@elevenways.be>
7
7
  * @since 0.2.0
8
8
  * @version 1.2.1
9
9
  */
@@ -19,7 +19,7 @@ var Enum = Function.inherits('Alchemy.Field', function Enum(schema, name, option
19
19
  /**
20
20
  * Set the datatype name
21
21
  *
22
- * @author Jelle De Loecker <jelle@develry.be>
22
+ * @author Jelle De Loecker <jelle@elevenways.be>
23
23
  * @since 0.2.0
24
24
  * @version 1.1.0
25
25
  */
@@ -28,22 +28,27 @@ Enum.setDatatype('string');
28
28
  /**
29
29
  * Cast the given value to this field's type
30
30
  *
31
- * @author Jelle De Loecker <jelle@develry.be>
31
+ * @author Jelle De Loecker <jelle@elevenways.be>
32
32
  * @since 0.2.0
33
- * @version 0.2.0
33
+ * @version 1.4.0
34
34
  *
35
- * @param {Mixed} value
35
+ * @param {*} value
36
36
  *
37
37
  * @return {ObjectId}
38
38
  */
39
- Enum.setMethod(function cast(value) {
39
+ Enum.setCastFunction(function cast(value) {
40
+
41
+ if (value == null) {
42
+ return '';
43
+ }
44
+
40
45
  return String(value);
41
46
  });
42
47
 
43
48
  /**
44
49
  * Get the enum values of this field
45
50
  *
46
- * @author Jelle De Loecker <jelle@develry.be>
51
+ * @author Jelle De Loecker <jelle@elevenways.be>
47
52
  * @since 0.2.0
48
53
  * @version 1.3.0
49
54
  *
@@ -65,7 +70,7 @@ Enum.setMethod(function getValues() {
65
70
  /**
66
71
  * Get the client-side options
67
72
  *
68
- * @author Jelle De Loecker <jelle@develry.be>
73
+ * @author Jelle De Loecker <jelle@elevenways.be>
69
74
  * @since 1.1.0
70
75
  * @version 1.2.1
71
76
  *
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @constructor
5
5
  *
6
- * @author Jelle De Loecker <jelle@elevenways.be>
6
+ * @author Jelle De Loecker <jelle@elevenways.be>
7
7
  * @since 1.3.20
8
8
  * @version 1.3.20
9
9
  */
@@ -19,19 +19,18 @@ const FixedDecimalField = Function.inherits('Alchemy.Field.Decimal', function Fi
19
19
  /**
20
20
  * Cast the given value to this field's type
21
21
  *
22
- * @author Jelle De Loecker <jelle@elevenways.be>
22
+ * @author Jelle De Loecker <jelle@elevenways.be>
23
23
  * @since 1.3.20
24
- * @version 1.3.20
24
+ * @version 1.4.0
25
25
  *
26
- * @param {Mixed} value
26
+ * @param {*} value
27
27
  *
28
28
  * @return {Decimal}
29
29
  */
30
- FixedDecimalField.setMethod(function cast(value) {
30
+ FixedDecimalField.setCastFunction(function cast(value) {
31
31
 
32
- // Allow null
33
32
  if (value == null) {
34
- return value;
33
+ value = 0;
35
34
  }
36
35
 
37
36
  if (value instanceof Classes.Develry.Decimal) {
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @constructor
5
5
  *
6
- * @author Jelle De Loecker <jelle@develry.be>
6
+ * @author Jelle De Loecker <jelle@elevenways.be>
7
7
  * @since 0.2.0
8
8
  * @version 1.1.0
9
9
  */
@@ -27,7 +27,7 @@ var Geopoint = Function.inherits('Alchemy.Field', function Geopoint(schema, name
27
27
  /**
28
28
  * Set the datatype name
29
29
  *
30
- * @author Jelle De Loecker <jelle@develry.be>
30
+ * @author Jelle De Loecker <jelle@elevenways.be>
31
31
  * @since 0.2.0
32
32
  * @version 1.1.0
33
33
  */
@@ -36,7 +36,7 @@ Geopoint.setDatatype('object');
36
36
  /**
37
37
  * This field value is self-contained
38
38
  *
39
- * @author Jelle De Loecker <jelle@develry.be>
39
+ * @author Jelle De Loecker <jelle@elevenways.be>
40
40
  * @since 1.1.0
41
41
  * @version 1.1.0
42
42
  */
@@ -45,18 +45,15 @@ Geopoint.setSelfContained(true);
45
45
  /**
46
46
  * Cast the given value to this field's type
47
47
  *
48
- * @author Jelle De Loecker <jelle@develry.be>
48
+ * @author Jelle De Loecker <jelle@elevenways.be>
49
49
  * @since 0.2.0
50
50
  * @version 1.1.0
51
51
  *
52
- * @param {Mixed} value
52
+ * @param {*} value
53
53
  *
54
54
  * @return {Date}
55
55
  */
56
- Geopoint.setMethod(function cast(value, to_datasource) {
57
-
58
- var coordinates,
59
- result;
56
+ Geopoint.setCastFunction(function cast(value, to_datasource) {
60
57
 
61
58
  if (!value) {
62
59
  return null;
@@ -67,6 +64,8 @@ Geopoint.setMethod(function cast(value, to_datasource) {
67
64
  value = value.point;
68
65
  }
69
66
 
67
+ let coordinates;
68
+
70
69
  if (Array.isArray(value)) {
71
70
  coordinates = value;
72
71
  } else if (Array.isArray(value.coordinates)) {
@@ -74,7 +73,7 @@ Geopoint.setMethod(function cast(value, to_datasource) {
74
73
  }
75
74
 
76
75
  // Should be like {type: 'Point', coordinates: [51,3]}
77
- result = {
76
+ let result = {
78
77
  type: 'Point',
79
78
  coordinates: coordinates
80
79
  };
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @constructor
5
5
  *
6
- * @author Jelle De Loecker <jelle@develry.be>
6
+ * @author Jelle De Loecker <jelle@elevenways.be>
7
7
  * @since 0.2.0
8
8
  * @version 1.1.0
9
9
  */
@@ -16,7 +16,7 @@ var HABTM = Function.inherits('Alchemy.Field', function HasAndBelongsToMany(sche
16
16
  /**
17
17
  * Cast the given value to this field's type
18
18
  *
19
- * @author Jelle De Loecker <jelle@develry.be>
19
+ * @author Jelle De Loecker <jelle@elevenways.be>
20
20
  * @since 0.2.0
21
21
  * @version 1.1.0
22
22
  *
@@ -24,7 +24,7 @@ var HABTM = Function.inherits('Alchemy.Field', function HasAndBelongsToMany(sche
24
24
  *
25
25
  * @return {ObjectId}
26
26
  */
27
- HABTM.setMethod(function cast(value, to_datasource) {
27
+ HABTM.setCastFunction(function cast(value, to_datasource) {
28
28
 
29
29
  var result,
30
30
  temp,
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @constructor
5
5
  *
6
- * @author Jelle De Loecker <jelle@develry.be>
6
+ * @author Jelle De Loecker <jelle@elevenways.be>
7
7
  * @since 0.2.0
8
8
  * @version 1.1.0
9
9
  */
@@ -3,10 +3,8 @@
3
3
  *
4
4
  * @constructor
5
5
  *
6
- * @author Jelle De Loecker <jelle@develry.be>
6
+ * @author Jelle De Loecker <jelle@elevenways.be>
7
7
  * @since 1.0.6
8
8
  * @version 1.1.0
9
9
  */
10
- var Html = Function.inherits('Alchemy.Field.Text', function Html(schema, name, options) {
11
- Html.super.call(this, schema, name, options);
12
- });
10
+ const Html = Function.inherits('Alchemy.Field.Text', 'Html');
@@ -3,30 +3,27 @@
3
3
  *
4
4
  * @constructor
5
5
  *
6
- * @author Jelle De Loecker <jelle@develry.be>
6
+ * @author Jelle De Loecker <jelle@elevenways.be>
7
7
  * @since 1.1.0
8
8
  * @version 1.1.0
9
9
  */
10
- var IntegerField = Function.inherits('Alchemy.Field.Number', function Integer(schema, name, options) {
11
- Integer.super.call(this, schema, name, options);
12
- });
10
+ const IntegerField = Function.inherits('Alchemy.Field.Number', 'Integer');
13
11
 
14
12
  /**
15
13
  * Cast the given value to this field's type
16
14
  *
17
- * @author Jelle De Loecker <jelle@develry.be>
15
+ * @author Jelle De Loecker <jelle@elevenways.be>
18
16
  * @since 1.1.0
19
- * @version 1.1.0
17
+ * @version 1.4.0
20
18
  *
21
- * @param {Mixed} value
19
+ * @param {*} value
22
20
  *
23
- * @return {Number}
21
+ * @return {number}
24
22
  */
25
- IntegerField.setMethod(function cast(value) {
23
+ IntegerField.setCastFunction(function cast(value) {
26
24
 
27
- // Allow null
28
25
  if (value == null) {
29
- return value;
26
+ return 0;
30
27
  }
31
28
 
32
29
  return Math.round(value);
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @constructor
5
5
  *
6
- * @author Jelle De Loecker <jelle@elevenways.be>
6
+ * @author Jelle De Loecker <jelle@elevenways.be>
7
7
  * @since 1.3.20
8
8
  * @version 1.3.20
9
9
  */
@@ -12,7 +12,7 @@ const LocalDate = Function.inherits('Alchemy.Field.LocalTemporal', 'LocalDate');
12
12
  /**
13
13
  * Set the datatype name
14
14
  *
15
- * @author Jelle De Loecker <jelle@elevenways.be>
15
+ * @author Jelle De Loecker <jelle@elevenways.be>
16
16
  * @since 1.3.20
17
17
  * @version 1.3.20
18
18
  */
@@ -21,15 +21,15 @@ LocalDate.setDatatype('date');
21
21
  /**
22
22
  * Cast the given value to this field's type
23
23
  *
24
- * @author Jelle De Loecker <jelle@elevenways.be>
24
+ * @author Jelle De Loecker <jelle@elevenways.be>
25
25
  * @since 1.3.20
26
26
  * @version 1.3.20
27
27
  *
28
- * @param {Mixed} value
28
+ * @param {*} value
29
29
  *
30
30
  * @return {Develry.LocalDate}
31
31
  */
32
- LocalDate.setMethod(function cast(value) {
32
+ LocalDate.setCastFunction(function cast(value) {
33
33
 
34
34
  if (value == null || value === '') {
35
35
  return null;