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
@@ -9,11 +9,11 @@ const SESSION_KEY = 'Syncables',
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.10
14
14
  * @version 1.3.10
15
15
  *
16
- * @param {String} type
16
+ * @param {string} type
17
17
  */
18
18
  const Syncable = Function.inherits('Alchemy.Base', function Syncable(type) {
19
19
 
@@ -42,13 +42,13 @@ if (Blast.isNode) {
42
42
  /**
43
43
  * Handle an incoming linkup
44
44
  *
45
- * @author Jelle De Loecker <jelle@elevenways.be>
45
+ * @author Jelle De Loecker <jelle@elevenways.be>
46
46
  * @since 1.3.10
47
47
  * @version 1.3.10
48
48
  *
49
- * @param {Conduit}
50
- * @param {Linkup}
51
- * @param {Object}
49
+ * @param {Conduit}
50
+ * @param {Linkup}
51
+ * @param {Object}
52
52
  */
53
53
  Syncable.setStatic(function handleLink(conduit, linkup, config) {
54
54
 
@@ -87,7 +87,7 @@ if (Blast.isNode) {
87
87
  /**
88
88
  * Attach a client
89
89
  *
90
- * @author Jelle De Loecker <jelle@elevenways.be>
90
+ * @author Jelle De Loecker <jelle@elevenways.be>
91
91
  * @since 1.3.10
92
92
  * @version 1.3.10
93
93
  */
@@ -142,12 +142,12 @@ if (Blast.isNode) {
142
142
  /**
143
143
  * Handle an upstream method request
144
144
  *
145
- * @author Jelle De Loecker <jelle@elevenways.be>
145
+ * @author Jelle De Loecker <jelle@elevenways.be>
146
146
  * @since 1.3.10
147
147
  * @version 1.3.10
148
148
  *
149
- * @param {String} name
150
- * @param {Array} args
149
+ * @param {string} name
150
+ * @param {Array} args
151
151
  */
152
152
  Syncable.setMethod(function handleUpstreamMethodRequest(name, args) {
153
153
 
@@ -168,7 +168,7 @@ if (Blast.isNode) {
168
168
  * Register a client by one of their conduits.
169
169
  * Only clients that are registered can be synced.
170
170
  *
171
- * @author Jelle De Loecker <jelle@elevenways.be>
171
+ * @author Jelle De Loecker <jelle@elevenways.be>
172
172
  * @since 1.3.10
173
173
  * @version 1.3.10
174
174
  *
@@ -203,7 +203,7 @@ if (Blast.isBrowser) {
203
203
  /**
204
204
  * Start the sync link from the browser to the server
205
205
  *
206
- * @author Jelle De Loecker <jelle@elevenways.be>
206
+ * @author Jelle De Loecker <jelle@elevenways.be>
207
207
  * @since 1.3.10
208
208
  * @version 1.3.10
209
209
  */
@@ -241,13 +241,13 @@ if (Blast.isBrowser) {
241
241
  * Add a syncable method.
242
242
  * The method itself should probably NOT trigger changes
243
243
  *
244
- * @author Jelle De Loecker <jelle@elevenways.be>
244
+ * @author Jelle De Loecker <jelle@elevenways.be>
245
245
  * @since 1.3.10
246
246
  * @version 1.3.10
247
247
  *
248
- * @param {Object} data
248
+ * @param {Object} data
249
249
  *
250
- * @return {Syncable}
250
+ * @return {Syncable}
251
251
  */
252
252
  Syncable.setStatic(function setSyncMethod(types, method) {
253
253
  return this.setHandledMethod(types, method, function handler(method, args) {
@@ -262,17 +262,42 @@ Syncable.setStatic(function setSyncMethod(types, method) {
262
262
  });
263
263
  });
264
264
 
265
+ /**
266
+ * Add a method that will only be called on the client.
267
+ * No response will be returned, since it is sent to multiple clients.
268
+ *
269
+ * @author Jelle De Loecker <jelle@elevenways.be>
270
+ * @since 1.3.22
271
+ * @version 1.3.22
272
+ *
273
+ * @param {Object} data
274
+ *
275
+ * @return {Syncable}
276
+ */
277
+ Syncable.setStatic(function setClientMethod(types, method) {
278
+ return this.setHandledMethod(types, method, function handler(method, args) {
279
+
280
+ if (this.is_server) {
281
+ this.addLog('call', [method.name, args]);
282
+ return;
283
+ }
284
+
285
+ let result = method.apply(this, args);
286
+ return result;
287
+ });
288
+ });
289
+
265
290
  /**
266
291
  * Add a method that fetches info from the server.
267
292
  * The response is always a promise.
268
293
  *
269
- * @author Jelle De Loecker <jelle@elevenways.be>
294
+ * @author Jelle De Loecker <jelle@elevenways.be>
270
295
  * @since 1.3.10
271
296
  * @version 1.3.10
272
297
  *
273
- * @param {Object} data
298
+ * @param {Object} data
274
299
  *
275
- * @return {Syncable}
300
+ * @return {Syncable}
276
301
  */
277
302
  Syncable.setStatic(function setUpstreamMethod(types, method) {
278
303
  let result = this.setHandledMethod(types, method, function handler(method, args) {
@@ -314,15 +339,15 @@ Syncable.setStatic(function setUpstreamMethod(types, method) {
314
339
  /**
315
340
  * Add a method that may or may not use types
316
341
  *
317
- * @author Jelle De Loecker <jelle@elevenways.be>
342
+ * @author Jelle De Loecker <jelle@elevenways.be>
318
343
  * @since 1.3.10
319
344
  * @version 1.3.10
320
345
  *
321
- * @param {Array} types The optional types of the method
322
- * @param {Function} method The main method implementation
323
- * @param {Function} handler The handler
346
+ * @param {Array} types The optional types of the method
347
+ * @param {Function} method The main method implementation
348
+ * @param {Function} handler The handler
324
349
  *
325
- * @return {Syncable}
350
+ * @return {Syncable}
326
351
  */
327
352
  Syncable.setStatic(function setHandledMethod(types, method, handler) {
328
353
 
@@ -349,12 +374,12 @@ Syncable.setStatic(function setHandledMethod(types, method, handler) {
349
374
  /**
350
375
  * Add a property
351
376
  *
352
- * @author Jelle De Loecker <jelle@elevenways.be>
377
+ * @author Jelle De Loecker <jelle@elevenways.be>
353
378
  * @since 1.3.10
354
379
  * @version 1.3.10
355
380
  *
356
- * @param {String} name
357
- * @param {Object} options
381
+ * @param {string} name
382
+ * @param {Object} options
358
383
  */
359
384
  Syncable.setStatic(function setStateProperty(name, options) {
360
385
 
@@ -422,13 +447,13 @@ Syncable.setStatic(function setStateProperty(name, options) {
422
447
  /**
423
448
  * Undry this value
424
449
  *
425
- * @author Jelle De Loecker <jelle@elevenways.be>
450
+ * @author Jelle De Loecker <jelle@elevenways.be>
426
451
  * @since 1.3.10
427
452
  * @version 1.3.10
428
453
  *
429
- * @param {Object} data
454
+ * @param {Object} data
430
455
  *
431
- * @return {Syncable}
456
+ * @return {Syncable}
432
457
  */
433
458
  Syncable.setStatic(function unDry(data) {
434
459
 
@@ -462,7 +487,7 @@ Syncable.setStatic(function unDry(data) {
462
487
  /**
463
488
  * Is this the server instance?
464
489
  *
465
- * @author Jelle De Loecker <jelle@elevenways.be>
490
+ * @author Jelle De Loecker <jelle@elevenways.be>
466
491
  * @since 1.3.10
467
492
  * @version 1.3.10
468
493
  *
@@ -475,11 +500,11 @@ Syncable.setProperty(function is_server() {
475
500
  /**
476
501
  * Enforce the ID property
477
502
  *
478
- * @author Jelle De Loecker <jelle@elevenways.be>
503
+ * @author Jelle De Loecker <jelle@elevenways.be>
479
504
  * @since 1.3.10
480
505
  * @version 1.3.10
481
506
  *
482
- * @type {String}
507
+ * @type {string}
483
508
  */
484
509
  Syncable.enforceProperty(function id(new_value) {
485
510
 
@@ -498,7 +523,7 @@ Syncable.enforceProperty(function id(new_value) {
498
523
  /**
499
524
  * Enforce the queues property
500
525
  *
501
- * @author Jelle De Loecker <jelle@elevenways.be>
526
+ * @author Jelle De Loecker <jelle@elevenways.be>
502
527
  * @since 1.3.10
503
528
  * @version 1.3.10
504
529
  *
@@ -533,11 +558,11 @@ Syncable.enforceProperty(function queues(new_value) {
533
558
  /**
534
559
  * Enforce the state property
535
560
  *
536
- * @author Jelle De Loecker <jelle@elevenways.be>
561
+ * @author Jelle De Loecker <jelle@elevenways.be>
537
562
  * @since 1.3.10
538
563
  * @version 1.3.10
539
564
  *
540
- * @type {String}
565
+ * @type {string}
541
566
  */
542
567
  Syncable.enforceProperty(function state(new_value) {
543
568
 
@@ -551,11 +576,11 @@ Syncable.enforceProperty(function state(new_value) {
551
576
  /**
552
577
  * Enforce the version property
553
578
  *
554
- * @author Jelle De Loecker <jelle@elevenways.be>
579
+ * @author Jelle De Loecker <jelle@elevenways.be>
555
580
  * @since 1.3.10
556
581
  * @version 1.3.10
557
582
  *
558
- * @type {String}
583
+ * @type {string}
559
584
  */
560
585
  Syncable.enforceProperty(function version(new_value) {
561
586
 
@@ -569,7 +594,7 @@ Syncable.enforceProperty(function version(new_value) {
569
594
  /**
570
595
  * Clone for hawkejs
571
596
  *
572
- * @author Jelle De Loecker <jelle@elevenways.be>
597
+ * @author Jelle De Loecker <jelle@elevenways.be>
573
598
  * @since 1.3.10
574
599
  * @version 1.3.10
575
600
  */
@@ -580,7 +605,7 @@ Syncable.setMethod(function toHawkejs() {
580
605
  /**
581
606
  * Serialize this syncable
582
607
  *
583
- * @author Jelle De Loecker <jelle@elevenways.be>
608
+ * @author Jelle De Loecker <jelle@elevenways.be>
584
609
  * @since 1.3.10
585
610
  * @version 1.3.10
586
611
  */
@@ -614,7 +639,7 @@ Syncable.setMethod(function toDry() {
614
639
  /**
615
640
  * Process an update
616
641
  *
617
- * @author Jelle De Loecker <jelle@elevenways.be>
642
+ * @author Jelle De Loecker <jelle@elevenways.be>
618
643
  * @since 1.3.10
619
644
  * @version 1.3.10
620
645
  */
@@ -646,7 +671,7 @@ Syncable.setMethod(function processUpdate(update) {
646
671
  /**
647
672
  * Send the actual update
648
673
  *
649
- * @author Jelle De Loecker <jelle@elevenways.be>
674
+ * @author Jelle De Loecker <jelle@elevenways.be>
650
675
  * @since 1.3.10
651
676
  * @version 1.3.10
652
677
  */
@@ -665,11 +690,11 @@ Syncable.setMethod(function sendUpdates() {
665
690
  /**
666
691
  * Emit a change event for a certain property
667
692
  *
668
- * @author Jelle De Loecker <jelle@elevenways.be>
693
+ * @author Jelle De Loecker <jelle@elevenways.be>
669
694
  * @since 1.3.10
670
695
  * @version 1.3.10
671
696
  *
672
- * @param {String} property
697
+ * @param {string} property
673
698
  */
674
699
  Syncable.setMethod(function emitPropertyChange(property) {
675
700
  let value = this[property];
@@ -679,11 +704,11 @@ Syncable.setMethod(function emitPropertyChange(property) {
679
704
  /**
680
705
  * Listen for a change event for a certain property
681
706
  *
682
- * @author Jelle De Loecker <jelle@elevenways.be>
707
+ * @author Jelle De Loecker <jelle@elevenways.be>
683
708
  * @since 1.3.10
684
709
  * @version 1.3.10
685
710
  *
686
- * @param {String} property
711
+ * @param {string} property
687
712
  * @param {Function} callback
688
713
  */
689
714
  Syncable.setMethod(function watchProperty(property, callback) {
@@ -695,11 +720,11 @@ Syncable.setMethod(function watchProperty(property, callback) {
695
720
  /**
696
721
  * Watch a queue for changes
697
722
  *
698
- * @author Jelle De Loecker <jelle@elevenways.be>
723
+ * @author Jelle De Loecker <jelle@elevenways.be>
699
724
  * @since 1.3.10
700
725
  * @version 1.3.10
701
726
  *
702
- * @param {String} name
727
+ * @param {string} name
703
728
  * @param {Function} callback
704
729
  */
705
730
  Syncable.setMethod(function watchQueue(name, callback) {
@@ -727,11 +752,11 @@ Syncable.setMethod(function watchQueue(name, callback) {
727
752
  /**
728
753
  * Clear all the entries in a queue
729
754
  *
730
- * @author Jelle De Loecker <jelle@elevenways.be>
755
+ * @author Jelle De Loecker <jelle@elevenways.be>
731
756
  * @since 1.3.10
732
757
  * @version 1.3.10
733
758
  *
734
- * @param {String} name
759
+ * @param {string} name
735
760
  */
736
761
  Syncable.setAfterMethod('ready', function clearQueue(name) {
737
762
 
@@ -750,7 +775,7 @@ Syncable.setAfterMethod('ready', function clearQueue(name) {
750
775
  * Schedule a queue callback
751
776
  * (This tries to keep events in different queues still use the same order)
752
777
  *
753
- * @author Jelle De Loecker <jelle@elevenways.be>
778
+ * @author Jelle De Loecker <jelle@elevenways.be>
754
779
  * @since 1.3.10
755
780
  * @version 1.3.10
756
781
  */
@@ -778,7 +803,7 @@ Syncable.setAfterMethod('ready', function scheduleQueueCallback(config, callback
778
803
  /**
779
804
  * Actually do the queued callbacks
780
805
  *
781
- * @author Jelle De Loecker <jelle@elevenways.be>
806
+ * @author Jelle De Loecker <jelle@elevenways.be>
782
807
  * @since 1.3.10
783
808
  * @version 1.3.10
784
809
  */
@@ -805,11 +830,11 @@ Syncable.setAfterMethod('ready', function processQueueCallbacks() {
805
830
  * Push something to a queue.
806
831
  * If there are listeners, they will be called immediately.
807
832
  *
808
- * @author Jelle De Loecker <jelle@elevenways.be>
833
+ * @author Jelle De Loecker <jelle@elevenways.be>
809
834
  * @since 1.3.10
810
835
  * @version 1.3.10
811
836
  *
812
- * @param {String} name
837
+ * @param {string} name
813
838
  */
814
839
  Syncable.setAfterMethod('ready', function pushQueue(name, ...args) {
815
840
 
@@ -844,7 +869,7 @@ Syncable.setAfterMethod('ready', function pushQueue(name, ...args) {
844
869
  /**
845
870
  * Send an update to the given link
846
871
  *
847
- * @author Jelle De Loecker <jelle@elevenways.be>
872
+ * @author Jelle De Loecker <jelle@elevenways.be>
848
873
  * @since 1.3.10
849
874
  * @version 1.3.10
850
875
  */
@@ -879,7 +904,7 @@ Syncable.setMethod(function sendUpdateToLink(link) {
879
904
  /**
880
905
  * Queue an update to all the listeners
881
906
  *
882
- * @author Jelle De Loecker <jelle@elevenways.be>
907
+ * @author Jelle De Loecker <jelle@elevenways.be>
883
908
  * @since 1.3.10
884
909
  * @version 1.3.10
885
910
  */
@@ -897,7 +922,7 @@ Syncable.setMethod(function queueUpdate() {
897
922
  /**
898
923
  * Add something to the log
899
924
  *
900
- * @author Jelle De Loecker <jelle@elevenways.be>
925
+ * @author Jelle De Loecker <jelle@elevenways.be>
901
926
  * @since 1.3.10
902
927
  * @version 1.3.10
903
928
  */
@@ -916,7 +941,7 @@ Syncable.setMethod(function _addLog(type, args) {
916
941
  /**
917
942
  * Add something to the log and increase the version
918
943
  *
919
- * @author Jelle De Loecker <jelle@elevenways.be>
944
+ * @author Jelle De Loecker <jelle@elevenways.be>
920
945
  * @since 1.3.10
921
946
  * @version 1.3.10
922
947
  */
@@ -928,7 +953,7 @@ Syncable.setMethod(function addLog(type, args) {
928
953
  /**
929
954
  * Set a property to a specific value
930
955
  *
931
- * @author Jelle De Loecker <jelle@elevenways.be>
956
+ * @author Jelle De Loecker <jelle@elevenways.be>
932
957
  * @since 1.3.10
933
958
  * @version 1.3.10
934
959
  */
@@ -948,7 +973,7 @@ Syncable.setMethod(function setProperty(key, value) {
948
973
  * Release the syncable
949
974
  * (On your own side)
950
975
  *
951
- * @author Jelle De Loecker <jelle@elevenways.be>
976
+ * @author Jelle De Loecker <jelle@elevenways.be>
952
977
  * @since 1.3.10
953
978
  * @version 1.3.10
954
979
  */
@@ -4,23 +4,23 @@
4
4
  * @constructor
5
5
  * @extends Alchemy.Component
6
6
  *
7
- * @author Jelle De Loecker <jelle@develry.be>
8
- * @since 0.0.1
9
- * @version 1.0.0
7
+ * @author Jelle De Loecker <jelle@elevenways.be>
8
+ * @since 0.0.1
9
+ * @version 1.0.0
10
10
  */
11
11
  const Paginate = Function.inherits('Alchemy.Client.Component', 'Paginate');
12
12
 
13
13
  /**
14
14
  * Perform a query
15
15
  *
16
- * @author Jelle De Loecker <jelle@elevenways.be>
16
+ * @author Jelle De Loecker <jelle@elevenways.be>
17
17
  * @since 0.0.1
18
- * @version 1.3.4
18
+ * @version 1.4.0
19
19
  *
20
- * @param {Model} model
21
- * @param {Criteria} criteria
20
+ * @param {Model} model
21
+ * @param {Criteria} criteria
22
22
  *
23
- * @return {Pledge}
23
+ * @return {Pledge}
24
24
  */
25
25
  Paginate.setMethod(function find(model, criteria) {
26
26
 
@@ -31,7 +31,7 @@ Paginate.setMethod(function find(model, criteria) {
31
31
  model = this.getModel(model);
32
32
  }
33
33
 
34
- criteria = Blast.Classes.Alchemy.Criteria.Criteria.cast(criteria, model);
34
+ criteria = Classes.Alchemy.Criteria.Model.cast(criteria, model);
35
35
 
36
36
  let page_size = criteria.options.page_size || 10,
37
37
  skipless = criteria.options.skipless,
@@ -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 1.0.0
8
8
  * @version 1.0.0
9
9
  *
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * @constructor
6
6
  *
7
- * @author Jelle De Loecker <jelle@develry.be>
7
+ * @author Jelle De Loecker <jelle@elevenways.be>
8
8
  * @since 1.0.0
9
9
  * @version 1.1.3
10
10
  */
@@ -32,7 +32,7 @@ var Conduit = Function.inherits('Alchemy.Client.Base', 'Alchemy.Client.Conduit',
32
32
  /**
33
33
  * Handle a local url
34
34
  *
35
- * @author Jelle De Loecker <jelle@develry.be>
35
+ * @author Jelle De Loecker <jelle@elevenways.be>
36
36
  * @since 1.1.0
37
37
  * @version 1.2.2
38
38
  *
@@ -202,7 +202,7 @@ Conduit.setStatic(function handleUrlLocal(url, options) {
202
202
  /**
203
203
  * When this response was sent
204
204
  *
205
- * @author Jelle De Loecker <jelle@develry.be>
205
+ * @author Jelle De Loecker <jelle@elevenways.be>
206
206
  * @since 1.1.0
207
207
  * @version 1.1.0
208
208
  */
@@ -211,7 +211,7 @@ Conduit.setProperty('ended', false);
211
211
  /**
212
212
  * The "body" property
213
213
  *
214
- * @author Jelle De Loecker <jelle@develry.be>
214
+ * @author Jelle De Loecker <jelle@elevenways.be>
215
215
  * @since 1.0.0
216
216
  * @version 1.0.0
217
217
  */
@@ -230,7 +230,7 @@ Conduit.setProperty(function body() {
230
230
  /**
231
231
  * The "view_render" property
232
232
  *
233
- * @author Jelle De Loecker <jelle@develry.be>
233
+ * @author Jelle De Loecker <jelle@elevenways.be>
234
234
  * @since 1.0.0
235
235
  * @version 1.1.0
236
236
  */
@@ -241,7 +241,7 @@ Conduit.setProperty(function view_render() {
241
241
  /**
242
242
  * The "renderer" property
243
243
  *
244
- * @author Jelle De Loecker <jelle@develry.be>
244
+ * @author Jelle De Loecker <jelle@elevenways.be>
245
245
  * @since 1.1.0
246
246
  * @version 1.1.5
247
247
  */
@@ -269,7 +269,7 @@ Conduit.setProperty(function renderer() {
269
269
  /**
270
270
  * Throw an error when a conduit is checksummed
271
271
  *
272
- * @author Jelle De Loecker <jelle@develry.be>
272
+ * @author Jelle De Loecker <jelle@elevenways.be>
273
273
  * @since 1.1.0
274
274
  * @version 1.1.0
275
275
  */
@@ -280,11 +280,11 @@ Conduit.setMethod(Blast.checksumSymbol, function toChecksum() {
280
280
  /**
281
281
  * Get a parameter from the route, post or get query or cookie
282
282
  *
283
- * @author Jelle De Loecker <jelle@develry.be>
283
+ * @author Jelle De Loecker <jelle@elevenways.be>
284
284
  * @since 0.2.0
285
285
  * @version 1.0.0
286
286
  *
287
- * @param {String} name
287
+ * @param {string} name
288
288
  * @param {Mixed} value Overrides the value if set
289
289
  */
290
290
  Conduit.setMethod(function param(name, value) {
@@ -325,11 +325,11 @@ Conduit.setMethod(function param(name, value) {
325
325
  /**
326
326
  * Set a variable for ViewRender
327
327
  *
328
- * @author Jelle De Loecker <jelle@develry.be>
328
+ * @author Jelle De Loecker <jelle@elevenways.be>
329
329
  * @since 0.2.0
330
330
  * @version 0.2.0
331
331
  *
332
- * @param {String} name
332
+ * @param {string} name
333
333
  * @param {Mixed} value
334
334
  */
335
335
  Conduit.setMethod(function set(name, value) {
@@ -344,11 +344,11 @@ Conduit.setMethod(function set(name, value) {
344
344
  /**
345
345
  * Set an internal variable for ViewRender
346
346
  *
347
- * @author Jelle De Loecker <jelle@develry.be>
347
+ * @author Jelle De Loecker <jelle@elevenways.be>
348
348
  * @since 0.2.0
349
349
  * @version 0.2.0
350
350
  *
351
- * @param {String} name
351
+ * @param {string} name
352
352
  * @param {Mixed} value
353
353
  */
354
354
  Conduit.setMethod(function internal(name, value) {
@@ -363,11 +363,11 @@ Conduit.setMethod(function internal(name, value) {
363
363
  /**
364
364
  * Expose a variable for ViewRender
365
365
  *
366
- * @author Jelle De Loecker <jelle@develry.be>
366
+ * @author Jelle De Loecker <jelle@elevenways.be>
367
367
  * @since 0.2.0
368
368
  * @version 0.2.0
369
369
  *
370
- * @param {String} name
370
+ * @param {string} name
371
371
  * @param {Mixed} value
372
372
  */
373
373
  Conduit.setMethod(function expose(name, value) {
@@ -382,13 +382,13 @@ Conduit.setMethod(function expose(name, value) {
382
382
  /**
383
383
  * Get the best locale to use for this connection
384
384
  *
385
- * @author Jelle De Loecker <jelle@develry.be>
385
+ * @author Jelle De Loecker <jelle@elevenways.be>
386
386
  * @since 1.0.0
387
387
  * @version 1.0.0
388
388
  *
389
389
  * @param {Array} locales Locales to choose from
390
390
  *
391
- * @return {String}
391
+ * @return {string}
392
392
  */
393
393
  Conduit.setMethod(function chooseBestLocale(locales) {
394
394
 
@@ -408,13 +408,13 @@ Conduit.setMethod(function chooseBestLocale(locales) {
408
408
  /**
409
409
  * Check if this request has a permission
410
410
  *
411
- * @author Jelle De Loecker <jelle@elevenways.be>
411
+ * @author Jelle De Loecker <jelle@elevenways.be>
412
412
  * @since 1.2.5
413
413
  * @version 1.2.5
414
414
  *
415
- * @param {String} permission
415
+ * @param {string} permission
416
416
  *
417
- * @return {Boolean} True if the user has the permission, false otherwise
417
+ * @return {boolean} True if the user has the permission, false otherwise
418
418
  */
419
419
  Conduit.setMethod(function hasPermission(permission) {
420
420
 
@@ -432,11 +432,11 @@ if (Blast.isNode) {
432
432
  /**
433
433
  * End the call
434
434
  *
435
- * @author Jelle De Loecker <jelle@develry.be>
435
+ * @author Jelle De Loecker <jelle@elevenways.be>
436
436
  * @since 1.0.0
437
437
  * @version 1.1.0
438
438
  *
439
- * @param {String} name
439
+ * @param {string} name
440
440
  * @param {Mixed} value Overrides the value if set
441
441
  */
442
442
  Conduit.setMethod(function end(message) {
@@ -451,11 +451,11 @@ Conduit.setMethod(function end(message) {
451
451
  /**
452
452
  * Get/set cookies
453
453
  *
454
- * @author Jelle De Loecker <jelle@develry.be>
454
+ * @author Jelle De Loecker <jelle@elevenways.be>
455
455
  * @since 1.0.0
456
456
  * @version 1.0.0
457
457
  *
458
- * @param {String} name
458
+ * @param {string} name
459
459
  * @param {Mixed} value Overrides the value if set
460
460
  */
461
461
  Conduit.setMethod(function cookie(name, value) {
@@ -465,11 +465,11 @@ Conduit.setMethod(function cookie(name, value) {
465
465
  /**
466
466
  * Throw an error
467
467
  *
468
- * @author Jelle De Loecker <jelle@develry.be>
468
+ * @author Jelle De Loecker <jelle@elevenways.be>
469
469
  * @since 1.0.0
470
470
  * @version 1.0.0
471
471
  *
472
- * @param {Number} status Response statuscode
472
+ * @param {number} status Response statuscode
473
473
  * @param {Error} message Optional error to send
474
474
  */
475
475
  Conduit.setMethod(function error(status, message) {
@@ -484,12 +484,12 @@ Conduit.setMethod(function error(status, message) {
484
484
  /**
485
485
  * Local redirect
486
486
  *
487
- * @author Jelle De Loecker <jelle@develry.be>
487
+ * @author Jelle De Loecker <jelle@elevenways.be>
488
488
  * @since 1.1.0
489
489
  * @version 1.1.0
490
490
  *
491
- * @param {Number} status 3xx redirection codes. 302 (temporary redirect) by default
492
- * @param {String|Object} options Options or url
491
+ * @param {number} status 3xx redirection codes. 302 (temporary redirect) by default
492
+ * @param {string|Object} options Options or url
493
493
  */
494
494
  Conduit.setMethod(async function redirect(status, options) {
495
495
 
@@ -515,7 +515,7 @@ Conduit.setMethod(async function redirect(status, options) {
515
515
  /**
516
516
  * Get the alchemy routes, compile paths
517
517
  *
518
- * @author Jelle De Loecker <jelle@develry.be>
518
+ * @author Jelle De Loecker <jelle@elevenways.be>
519
519
  * @since 1.0.0
520
520
  * @version 1.0.0
521
521
  *
@@ -554,7 +554,7 @@ Hawkejs.Scene.setMethod(function getAlchemyRoutes() {
554
554
  /**
555
555
  * Intercept Scene#openUrl calls
556
556
  *
557
- * @author Jelle De Loecker <jelle@develry.be>
557
+ * @author Jelle De Loecker <jelle@elevenways.be>
558
558
  * @since 1.0.0
559
559
  * @version 1.1.0
560
560
  *