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
@@ -4,7 +4,7 @@ var iostream = alchemy.use('socket.io-stream'),
4
4
  /**
5
5
  * The Socket Conduit Class
6
6
  *
7
- * @author Jelle De Loecker <jelle@develry.be>
7
+ * @author Jelle De Loecker <jelle@elevenways.be>
8
8
  * @since 0.2.0
9
9
  * @version 1.3.10
10
10
  *
@@ -102,7 +102,7 @@ var SocketConduit = Function.inherits('Alchemy.Conduit', function Socket(socket,
102
102
  /**
103
103
  * Return the client IP address
104
104
  *
105
- * @author Jelle De Loecker <jelle@elevenways.be>
105
+ * @author Jelle De Loecker <jelle@elevenways.be>
106
106
  * @since 0.2.1
107
107
  * @version 1.3.1
108
108
  */
@@ -135,11 +135,11 @@ SocketConduit.setProperty(function ip() {
135
135
  /**
136
136
  * Is this client still connected?
137
137
  *
138
- * @author Jelle De Loecker <jelle@elevenways.be>
138
+ * @author Jelle De Loecker <jelle@elevenways.be>
139
139
  * @since 1.3.16
140
140
  * @version 1.3.16
141
141
  *
142
- * @type {Boolean}
142
+ * @type {boolean}
143
143
  */
144
144
  SocketConduit.setProperty(function is_connected() {
145
145
  return this.socket?.connected || false;
@@ -148,7 +148,7 @@ SocketConduit.setProperty(function is_connected() {
148
148
  /**
149
149
  * Parse the request, get information from the url
150
150
  *
151
- * @author Jelle De Loecker <jelle@develry.be>
151
+ * @author Jelle De Loecker <jelle@elevenways.be>
152
152
  * @since 0.2.0
153
153
  * @version 0.2.0
154
154
  */
@@ -160,9 +160,9 @@ SocketConduit.setMethod(function parseRequest() {
160
160
  /**
161
161
  * Handle a client announcement
162
162
  *
163
- * @author Jelle De Loecker <jelle@develry.be>
163
+ * @author Jelle De Loecker <jelle@elevenways.be>
164
164
  * @since 0.2.0
165
- * @version 1.1.0
165
+ * @version 1.4.0
166
166
  *
167
167
  * @param {Object} data
168
168
  */
@@ -182,7 +182,7 @@ SocketConduit.setMethod(function parseAnnouncement() {
182
182
  // Tell the client we're ready
183
183
  this.websocket.emit('ready');
184
184
 
185
- if (alchemy.settings.debug) {
185
+ if (alchemy.settings.debugging.debug) {
186
186
  log.info('Established websocket connection to', this.ip, 'using', this.useragent.family, this.useragent.major);
187
187
  }
188
188
  });
@@ -190,7 +190,7 @@ SocketConduit.setMethod(function parseAnnouncement() {
190
190
  /**
191
191
  * Handle an incoming linkup
192
192
  *
193
- * @author Jelle De Loecker <jelle@develry.be>
193
+ * @author Jelle De Loecker <jelle@elevenways.be>
194
194
  * @since 0.2.0
195
195
  * @version 0.4.0
196
196
  *
@@ -267,7 +267,7 @@ SocketConduit.setMethod(function onLinkup(packet) {
267
267
  /**
268
268
  * Handle a client packet
269
269
  *
270
- * @author Jelle De Loecker <jelle@develry.be>
270
+ * @author Jelle De Loecker <jelle@elevenways.be>
271
271
  * @since 0.2.0
272
272
  * @version 1.1.4
273
273
  *
@@ -395,7 +395,7 @@ SocketConduit.setMethod(function onPayload(packet) {
395
395
  /**
396
396
  * Handle a client response
397
397
  *
398
- * @author Jelle De Loecker <jelle@develry.be>
398
+ * @author Jelle De Loecker <jelle@elevenways.be>
399
399
  * @since 0.2.0
400
400
  * @version 0.2.0
401
401
  *
@@ -413,11 +413,11 @@ SocketConduit.setMethod(function onResponse(packet) {
413
413
  /**
414
414
  * Submit a message to the client
415
415
  *
416
- * @author Jelle De Loecker <jelle@develry.be>
416
+ * @author Jelle De Loecker <jelle@elevenways.be>
417
417
  * @since 0.0.1
418
418
  * @version 1.0.5
419
419
  *
420
- * @param {String} type
420
+ * @param {string} type
421
421
  * @param {Object} data
422
422
  * @param {IOStream} stream
423
423
  * @param {Function} callback
@@ -487,7 +487,7 @@ SocketConduit.setMethod(function submit(type, data, stream, callback) {
487
487
  /**
488
488
  * Create a stream we can send through a websocket connection
489
489
  *
490
- * @author Jelle De Loecker <jelle@develry.be>
490
+ * @author Jelle De Loecker <jelle@elevenways.be>
491
491
  * @since 0.2.0
492
492
  * @version 0.2.0
493
493
  */
@@ -498,7 +498,7 @@ SocketConduit.setMethod(function createStream() {
498
498
  /**
499
499
  * Create a linkup to the client
500
500
  *
501
- * @author Jelle De Loecker <jelle@develry.be>
501
+ * @author Jelle De Loecker <jelle@elevenways.be>
502
502
  * @since 0.2.0
503
503
  * @version 0.2.0
504
504
  */
@@ -529,13 +529,13 @@ SocketConduit.setMethod(function linkup(type, data, cb) {
529
529
  /**
530
530
  * The Linkup class
531
531
  *
532
- * @author Jelle De Loecker <jelle@develry.be>
533
- * @since 0.2.0
534
- * @version 0.2.0
532
+ * @author Jelle De Loecker <jelle@elevenways.be>
533
+ * @since 0.2.0
534
+ * @version 0.2.0
535
535
  *
536
536
  * @param {SocketConduit} conduit
537
- * @param {String} type
538
- * @param {String} id
537
+ * @param {string} type
538
+ * @param {string} id
539
539
  * @param {Object} data
540
540
  */
541
541
  var Linkup = Function.inherits('Informer', function Linkup(conduit, type, id, data) {
@@ -566,9 +566,9 @@ var Linkup = Function.inherits('Informer', function Linkup(conduit, type, id, da
566
566
  /**
567
567
  * Add a reference to its scene_id
568
568
  *
569
- * @author Jelle De Loecker <jelle@elevenways.be>
570
- * @since 1.3.10
571
- * @version 1.3.10
569
+ * @author Jelle De Loecker <jelle@elevenways.be>
570
+ * @since 1.3.10
571
+ * @version 1.3.10
572
572
  */
573
573
  Linkup.setProperty(function scene_id() {
574
574
  return this.conduit?.scene_id;
@@ -577,9 +577,9 @@ Linkup.setProperty(function scene_id() {
577
577
  /**
578
578
  * Destroy this link
579
579
  *
580
- * @author Jelle De Loecker <jelle@elevenways.be>
581
- * @since 0.2.0
582
- * @version 1.3.10
580
+ * @author Jelle De Loecker <jelle@elevenways.be>
581
+ * @since 0.2.0
582
+ * @version 1.3.10
583
583
  */
584
584
  Linkup.setMethod(function destroy() {
585
585
 
@@ -596,9 +596,9 @@ Linkup.setMethod(function destroy() {
596
596
  /**
597
597
  * Make sure the linkup is removed
598
598
  *
599
- * @author Jelle De Loecker <jelle@elevenways.be>
600
- * @since 1.3.10
601
- * @version 1.3.10
599
+ * @author Jelle De Loecker <jelle@elevenways.be>
600
+ * @since 1.3.10
601
+ * @version 1.3.10
602
602
  */
603
603
  Linkup.setMethod(function _destroy() {
604
604
 
@@ -611,11 +611,11 @@ Linkup.setMethod(function _destroy() {
611
611
  /**
612
612
  * Submit a message to the client
613
613
  *
614
- * @author Jelle De Loecker <jelle@develry.be>
615
- * @since 0.2.0
616
- * @version 0.2.0
614
+ * @author Jelle De Loecker <jelle@elevenways.be>
615
+ * @since 0.2.0
616
+ * @version 0.2.0
617
617
  *
618
- * @param {String} type
618
+ * @param {string} type
619
619
  * @param {Object} data
620
620
  * @param {IOStream} stream
621
621
  * @param {Function} callback
@@ -627,11 +627,11 @@ Linkup.setMethod(function submit(type, data, stream, callback) {
627
627
  /**
628
628
  * Submit a message to the server on this link and return a promise
629
629
  *
630
- * @author Jelle De Loecker <jelle@elevenways.be>
631
- * @since 1.1.2
632
- * @version 1.1.2
630
+ * @author Jelle De Loecker <jelle@elevenways.be>
631
+ * @since 1.1.2
632
+ * @version 1.1.2
633
633
  *
634
- * @param {String} type
634
+ * @param {string} type
635
635
  * @param {Object} data
636
636
  */
637
637
  Linkup.setMethod(function demand(type, data, stream) {
@@ -660,9 +660,9 @@ Linkup.setMethod(function demand(type, data, stream) {
660
660
  /**
661
661
  * Create a stream
662
662
  *
663
- * @author Jelle De Loecker <jelle@develry.be>
664
- * @since 0.2.0
665
- * @version 0.2.0
663
+ * @author Jelle De Loecker <jelle@elevenways.be>
664
+ * @since 0.2.0
665
+ * @version 0.2.0
666
666
  */
667
667
  Linkup.setMethod(function createStream() {
668
668
  return this.conduit.createStream();
@@ -671,9 +671,9 @@ Linkup.setMethod(function createStream() {
671
671
  /**
672
672
  * Send an error to the client
673
673
  *
674
- * @author Jelle De Loecker <jelle@develry.be>
675
- * @since 0.2.0
676
- * @version 0.2.0
674
+ * @author Jelle De Loecker <jelle@elevenways.be>
675
+ * @since 0.2.0
676
+ * @version 0.2.0
677
677
  *
678
678
  * @param {Error} err
679
679
  * @param {Function} callback
@@ -0,0 +1,26 @@
1
+ Router.add({
2
+ name : 'APIResource',
3
+ paths : '/api/{action}',
4
+ handler : 'Api#{action}',
5
+ methods : ['get', 'post'],
6
+ visible_location : false,
7
+ is_system_route : true,
8
+ });
9
+
10
+ Router.add({
11
+ name : 'AlchemyInfo',
12
+ paths : '/alchemy-info',
13
+ handler : 'AlchemyInfo#info',
14
+ methods : ['get'],
15
+ is_system_route : true,
16
+ });
17
+
18
+ Router.POSTPONED_ROUTE = Router.add({
19
+ name : 'AlchemyInfo#postponed',
20
+ paths : '/alchemy/postponed/{id}',
21
+ methods : ['get'],
22
+ can_be_postponed : false,
23
+ is_system_route : true,
24
+ });
25
+
26
+ Router.linkup('Syncable#linkup', 'syncablelink', 'AlchemyInfo#syncable');
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The default App Controller class:
3
+ * The main app can use this to extend from and add custom functionality.
4
+ *
5
+ * @author Jelle De Loecker <jelle@elevenways.be>
6
+ * @since 1.4.0
7
+ * @version 1.4.0
8
+ *
9
+ * @param {Alchemy.Conduit} conduit
10
+ * @param {Object} options
11
+ */
12
+ const App = Function.inherits('Alchemy.Controller', 'App');
13
+
14
+ /**
15
+ * Mark this class as being abstract
16
+ *
17
+ * @author Jelle De Loecker <jelle@elevenways.be>
18
+ * @since 1.4.0
19
+ * @version 1.4.0
20
+ */
21
+ App.makeAbstractClass();
@@ -4,9 +4,9 @@
4
4
  * @constructor
5
5
  * @extends Alchemy.Controller
6
6
  *
7
- * @author Jelle De Loecker <jelle@elevenways.be>
8
- * @since 0.2.0
9
- * @version 0.2.0
7
+ * @author Jelle De Loecker <jelle@elevenways.be>
8
+ * @since 0.2.0
9
+ * @version 0.2.0
10
10
  */
11
11
  var Info = Function.inherits('Alchemy.Controller.App', function AlchemyInfo(conduit, options) {
12
12
  AlchemyInfo.super.call(this, conduit, options);
@@ -15,7 +15,7 @@ var Info = Function.inherits('Alchemy.Controller.App', function AlchemyInfo(cond
15
15
  /**
16
16
  * Set information variables
17
17
  *
18
- * @author Jelle De Loecker <jelle@elevenways.be>
18
+ * @author Jelle De Loecker <jelle@elevenways.be>
19
19
  * @since 0.2.0
20
20
  * @version 1.3.5
21
21
  */
@@ -88,14 +88,14 @@ Info.setMethod(function setInfoVariables() {
88
88
  /**
89
89
  * Show information on this setup
90
90
  *
91
- * @author Jelle De Loecker <jelle@elevenways.be>
91
+ * @author Jelle De Loecker <jelle@elevenways.be>
92
92
  * @since 0.2.0
93
- * @version 1.0.0
93
+ * @version 1.4.0
94
94
  */
95
95
  Info.setAction(function info(conduit, name) {
96
96
 
97
97
  // Don't show the page if info_page is false
98
- if (!alchemy.settings.info_page) {
98
+ if (!alchemy.settings.debugging.info_page) {
99
99
  return conduit.notFound();
100
100
  }
101
101
 
@@ -108,13 +108,13 @@ Info.setAction(function info(conduit, name) {
108
108
  /**
109
109
  * Return the appcache manifest
110
110
  *
111
- * @author Jelle De Loecker <jelle@elevenways.be>
111
+ * @author Jelle De Loecker <jelle@elevenways.be>
112
112
  * @since 1.0.7
113
- * @version 1.0.7
113
+ * @version 1.4.0
114
114
  */
115
115
  Info.setAction(async function appcache(conduit) {
116
116
 
117
- if (!alchemy.settings.offline_clients) {
117
+ if (!alchemy.settings.frontend.appcache) {
118
118
  return conduit.notFound();
119
119
  }
120
120
 
@@ -128,7 +128,7 @@ Info.setAction(async function appcache(conduit) {
128
128
  /**
129
129
  * Resume a postponed action
130
130
  *
131
- * @author Jelle De Loecker <jelle@elevenways.be>
131
+ * @author Jelle De Loecker <jelle@elevenways.be>
132
132
  * @since 1.1.0
133
133
  * @version 1.3.1
134
134
  */
@@ -147,7 +147,7 @@ Info.setAction(function postponed(conduit, id) {
147
147
  /**
148
148
  * Syncable link
149
149
  *
150
- * @author Jelle De Loecker <jelle@elevenways.be>
150
+ * @author Jelle De Loecker <jelle@elevenways.be>
151
151
  * @since 1.3.10
152
152
  * @version 1.3.10
153
153
  */
@@ -4,7 +4,7 @@ const mongo = alchemy.use('mongodb'),
4
4
  /**
5
5
  * MongoDb Datasource
6
6
  *
7
- * @author Jelle De Loecker <jelle@develry.be>
7
+ * @author Jelle De Loecker <jelle@elevenways.be>
8
8
  * @since 0.2.0
9
9
  * @version 1.3.16
10
10
  */
@@ -66,7 +66,7 @@ Mongo.setSupport('querying_associations', true);
66
66
  /**
67
67
  * Get find options for the MongoDB server
68
68
  *
69
- * @author Jelle De Loecker <jelle@develry.be>
69
+ * @author Jelle De Loecker <jelle@elevenways.be>
70
70
  * @since 1.0.0
71
71
  * @version 1.0.0
72
72
  *
@@ -106,7 +106,7 @@ Mongo.setProperty('allowed_find_options', [
106
106
  /**
107
107
  * Convert the given value to a BigInt
108
108
  *
109
- * @author Jelle De Loecker <jelle@elevenways.be>
109
+ * @author Jelle De Loecker <jelle@elevenways.be>
110
110
  * @since 1.3.20
111
111
  * @version 1.3.20
112
112
  *
@@ -130,7 +130,7 @@ Mongo.setMethod(function castToBigInt(value) {
130
130
  /**
131
131
  * Convert the given value from a BigInt (for use in DB)
132
132
  *
133
- * @author Jelle De Loecker <jelle@elevenways.be>
133
+ * @author Jelle De Loecker <jelle@elevenways.be>
134
134
  * @since 1.3.20
135
135
  * @version 1.3.20
136
136
  *
@@ -150,7 +150,7 @@ Mongo.setMethod(function convertBigIntForDatasource(value) {
150
150
  /**
151
151
  * Convert the given value to a Decimal (for use in JS)
152
152
  *
153
- * @author Jelle De Loecker <jelle@elevenways.be>
153
+ * @author Jelle De Loecker <jelle@elevenways.be>
154
154
  * @since 1.3.20
155
155
  * @version 1.3.20
156
156
  *
@@ -174,11 +174,11 @@ Mongo.setMethod(function castToDecimal(value) {
174
174
  /**
175
175
  * Convert the given decimal for use in DB
176
176
  *
177
- * @author Jelle De Loecker <jelle@elevenways.be>
177
+ * @author Jelle De Loecker <jelle@elevenways.be>
178
178
  * @since 1.3.20
179
179
  * @version 1.3.20
180
180
  *
181
- * @param {Decimal|String} value
181
+ * @param {Decimal|string} value
182
182
  *
183
183
  * @return {Mongo.Decimal128}
184
184
  */
@@ -198,7 +198,7 @@ Mongo.setMethod(function convertDecimalForDatasource(value) {
198
198
  /**
199
199
  * Get find options for the MongoDB server
200
200
  *
201
- * @author Jelle De Loecker <jelle@develry.be>
201
+ * @author Jelle De Loecker <jelle@elevenways.be>
202
202
  * @since 1.0.0
203
203
  * @version 1.0.0
204
204
  *
@@ -229,7 +229,7 @@ Mongo.setMethod(function normalizeFindOptions(options) {
229
229
  /**
230
230
  * Get a connection to the database
231
231
  *
232
- * @author Jelle De Loecker <jelle@develry.be>
232
+ * @author Jelle De Loecker <jelle@elevenways.be>
233
233
  * @since 0.2.0
234
234
  * @version 1.3.16
235
235
  */
@@ -271,11 +271,11 @@ Mongo.decorateMethod(Blast.Decorators.memoize({ignore_arguments: true}), functio
271
271
  /**
272
272
  * Get a mongodb collection
273
273
  *
274
- * @author Jelle De Loecker <jelle@develry.be>
274
+ * @author Jelle De Loecker <jelle@elevenways.be>
275
275
  * @since 0.2.0
276
276
  * @version 1.3.16
277
277
  *
278
- * @param {String} name
278
+ * @param {string} name
279
279
  * @param {Function} callback
280
280
  *
281
281
  * @return {Pledge<Collection>}
@@ -319,7 +319,7 @@ Mongo.setMethod(function collection(name, callback) {
319
319
  /**
320
320
  * Query the database
321
321
  *
322
- * @author Jelle De Loecker <jelle@develry.be>
322
+ * @author Jelle De Loecker <jelle@elevenways.be>
323
323
  * @since 0.2.0
324
324
  * @version 1.3.16
325
325
  */
@@ -464,7 +464,7 @@ Mongo.setMethod(function _read(model, criteria, callback) {
464
464
  /**
465
465
  * Create a record in the database
466
466
  *
467
- * @author Jelle De Loecker <jelle@develry.be>
467
+ * @author Jelle De Loecker <jelle@elevenways.be>
468
468
  * @since 0.2.0
469
469
  * @version 1.3.16
470
470
  */
@@ -514,7 +514,7 @@ Mongo.setMethod(function _create(model, data, options, callback) {
514
514
  /**
515
515
  * Update a record in the database
516
516
  *
517
- * @author Jelle De Loecker <jelle@develry.be>
517
+ * @author Jelle De Loecker <jelle@elevenways.be>
518
518
  * @since 0.2.0
519
519
  * @version 1.3.16
520
520
  */
@@ -628,7 +628,7 @@ Mongo.setMethod(function _update(model, data, options, callback) {
628
628
  * Remove a record from the database
629
629
  *
630
630
  * @author Kjell Keisse <kjell@codedor.be>
631
- * @author Jelle De Loecker <jelle@develry.be>
631
+ * @author Jelle De Loecker <jelle@elevenways.be>
632
632
  * @since 0.2.0
633
633
  * @version 1.3.16
634
634
  */
@@ -657,7 +657,7 @@ Mongo.setMethod(function _remove(model, query, options, callback) {
657
657
  /**
658
658
  * Ensure an index in the database
659
659
  *
660
- * @author Jelle De Loecker <jelle@develry.be>
660
+ * @author Jelle De Loecker <jelle@elevenways.be>
661
661
  * @since 0.2.0
662
662
  * @version 1.3.17
663
663
  */
@@ -0,0 +1,19 @@
1
+ /**
2
+ * The App custom element.
3
+ * The main app can use this to extend from and add custom functionality.
4
+ *
5
+ * @author Jelle De Loecker <jelle@elevenways.be>
6
+ * @since 1.4.0
7
+ * @version 1.4.0
8
+ */
9
+ const App = Function.inherits('Alchemy.Element', 'App');
10
+
11
+ /**
12
+ * Mark this as an "abstract" class
13
+ * This will make sure this isn't registered as an `<al-app>` element
14
+ *
15
+ * @author Jelle De Loecker <jelle@elevenways.be>
16
+ * @since 1.4.0
17
+ * @version 1.4.0
18
+ */
19
+ App.makeAbstractClass(true);
@@ -3,7 +3,7 @@ const TIMEOUT_ID = Symbol('timeout_id');
3
3
  /**
4
4
  * The custom al-time-ago element
5
5
  *
6
- * @author Jelle De Loecker <jelle@develry.be>
6
+ * @author Jelle De Loecker <jelle@elevenways.be>
7
7
  * @since 0.1.0
8
8
  * @version 0.1.0
9
9
  */
@@ -12,7 +12,7 @@ const TimeAgo = Function.inherits('Alchemy.Element', 'TimeAgo');
12
12
  /**
13
13
  * Set the time
14
14
  *
15
- * @author Jelle De Loecker <jelle@develry.be>
15
+ * @author Jelle De Loecker <jelle@elevenways.be>
16
16
  * @since 0.1.0
17
17
  * @version 0.1.0
18
18
  */
@@ -50,7 +50,7 @@ TimeAgo.setAttribute(function date(str) {
50
50
  /**
51
51
  * Get the value
52
52
  *
53
- * @author Jelle De Loecker <jelle@develry.be>
53
+ * @author Jelle De Loecker <jelle@elevenways.be>
54
54
  * @since 0.1.0
55
55
  * @version 0.1.0
56
56
  */
@@ -68,7 +68,7 @@ TimeAgo.setProperty(function value() {
68
68
  /**
69
69
  * The element has been inserted in the dom
70
70
  *
71
- * @author Jelle De Loecker <jelle@develry.be>
71
+ * @author Jelle De Loecker <jelle@elevenways.be>
72
72
  * @since 0.1.0
73
73
  * @version 0.1.0
74
74
  */
@@ -79,7 +79,7 @@ TimeAgo.setMethod(function connected() {
79
79
  /**
80
80
  * Refresh the content
81
81
  *
82
- * @author Jelle De Loecker <jelle@elevenways.be>
82
+ * @author Jelle De Loecker <jelle@elevenways.be>
83
83
  * @since 0.1.0
84
84
  * @version 1.3.17
85
85
  */
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The App helper.
3
+ * The main app can use this to extend from and add custom functionality.
4
+ *
5
+ * @author Jelle De Loecker <jelle@elevenways.be>
6
+ * @since 1.4.0
7
+ * @version 1.4.0
8
+ *
9
+ * @param {Hawkejs.Renderer}
10
+ */
11
+ const App = Function.inherits('Alchemy.Helper', 'App');
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * The Alchemy helper
3
3
  *
4
- * @author Jelle De Loecker <jelle@develry.be>
4
+ * @author Jelle De Loecker <jelle@elevenways.be>
5
5
  * @since 0.0.1
6
6
  * @version 1.0.0
7
7
  *
@@ -14,7 +14,7 @@ var Alchemy = Function.inherits('Alchemy.Helper', function Alchemy(view) {
14
14
  /**
15
15
  * Function to execute on the client side, when the scene is made
16
16
  *
17
- * @author Jelle De Loecker <jelle@develry.be>
17
+ * @author Jelle De Loecker <jelle@elevenways.be>
18
18
  * @since 0.2.0
19
19
  * @version 1.0.7
20
20
  *
@@ -28,11 +28,11 @@ Alchemy.setStatic(function onScene(scene, options) {
28
28
  /**
29
29
  * Perform a resource request
30
30
  *
31
- * @author Jelle De Loecker <jelle@elevenways.be>
31
+ * @author Jelle De Loecker <jelle@elevenways.be>
32
32
  * @since 0.0.1
33
33
  * @version 1.3.21
34
34
  *
35
- * @param {String|Object} options
35
+ * @param {string|Object} options
36
36
  * @param {Object} data
37
37
  * @param {Function} callback
38
38
  *
@@ -163,13 +163,13 @@ Alchemy.setMethod(function getResource(options, data, callback) {
163
163
  /**
164
164
  * Register & recompile a callback
165
165
  *
166
- * @author Jelle De Loecker <jelle@develry.be>
167
- * @since 0.2.0
168
- * @version 0.2.0
166
+ * @author Jelle De Loecker <jelle@elevenways.be>
167
+ * @since 0.2.0
168
+ * @version 0.2.0
169
169
  *
170
- * @param {Function} callback
170
+ * @param {Function} callback
171
171
  *
172
- * @return {Function}
172
+ * @return {Function}
173
173
  */
174
174
  Alchemy.setMethod(function registerCallback(callback) {
175
175
 
@@ -201,9 +201,9 @@ Alchemy.setMethod(function registerCallback(callback) {
201
201
  /**
202
202
  * Register a group and possible id
203
203
  *
204
- * @author Jelle De Loecker <jelle@develry.be>
205
- * @since 0.2.0
206
- * @version 0.2.0
204
+ * @author Jelle De Loecker <jelle@elevenways.be>
205
+ * @since 0.2.0
206
+ * @version 0.2.0
207
207
  */
208
208
  Alchemy.setMethod(function registerGroup(name, id, callback) {
209
209
 
@@ -233,9 +233,9 @@ Alchemy.setMethod(function registerGroup(name, id, callback) {
233
233
  /**
234
234
  * Get the group data
235
235
  *
236
- * @author Jelle De Loecker <jelle@develry.be>
237
- * @since 0.2.0
238
- * @version 0.2.0
236
+ * @author Jelle De Loecker <jelle@elevenways.be>
237
+ * @since 0.2.0
238
+ * @version 0.2.0
239
239
  */
240
240
  Alchemy.setMethod(function getGroupData(name, callback) {
241
241
 
@@ -257,9 +257,9 @@ Alchemy.setMethod(function getGroupData(name, callback) {
257
257
  * Aggregate data.
258
258
  * The callback needs to be named and be unique per scope structure
259
259
  *
260
- * @author Jelle De Loecker <jelle@develry.be>
261
- * @since 0.2.0
262
- * @version 0.2.0
260
+ * @author Jelle De Loecker <jelle@elevenways.be>
261
+ * @since 0.2.0
262
+ * @version 0.2.0
263
263
  */
264
264
  Alchemy.setMethod(function group(name, id, callback) {
265
265
 
@@ -294,11 +294,11 @@ Alchemy.setMethod(function group(name, id, callback) {
294
294
  /**
295
295
  * Print a segment
296
296
  *
297
- * @author Jelle De Loecker <jelle@elevenways.be>
297
+ * @author Jelle De Loecker <jelle@elevenways.be>
298
298
  * @since 0.5.0
299
299
  * @version 1.3.17
300
300
  *
301
- * @param {String|Object} options
301
+ * @param {string|Object} options
302
302
  * @param {Object} data
303
303
  *
304
304
  * @return {HePlaceholder}
@@ -370,11 +370,11 @@ Alchemy.setMethod(function segment(options, data) {
370
370
  /**
371
371
  * Get the current locale
372
372
  *
373
- * @author Jelle De Loecker <jelle@develry.be>
373
+ * @author Jelle De Loecker <jelle@elevenways.be>
374
374
  * @since 1.1.0
375
375
  * @version 1.1.0
376
376
  *
377
- * @return {String}
377
+ * @return {string}
378
378
  */
379
379
  Alchemy.setMethod(function getLocale() {
380
380
 
@@ -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.2.1
8
8
  * @version 1.3.5
9
9
  */