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.
- package/LICENSE +1 -1
- package/README.md +3 -3
- package/lib/app/behaviour/publishable_behaviour.js +5 -5
- package/lib/app/behaviour/revision_behaviour.js +10 -10
- package/lib/app/behaviour/sluggable_behaviour.js +14 -14
- package/lib/app/conduit/electron_conduit.js +9 -9
- package/lib/app/conduit/http_conduit.js +13 -13
- package/lib/app/conduit/loopback_conduit.js +15 -15
- package/lib/app/conduit/socket_conduit.js +43 -43
- package/lib/app/config/routes.js +26 -0
- package/lib/app/controller/00-default_app_controller.js +21 -0
- package/lib/app/controller/alchemy_info_controller.js +12 -12
- package/lib/app/datasource/mongo_datasource.js +16 -16
- package/lib/app/element/00-default_app_element.js +19 -0
- package/lib/app/element/time_ago.js +5 -5
- package/lib/app/helper/00-default_app_helper.js +11 -0
- package/lib/app/helper/alchemy_helper.js +22 -22
- package/lib/app/helper/backed_map.js +1 -1
- package/lib/app/helper/breadcrumb.js +10 -10
- package/lib/app/helper/client_collection.js +3 -3
- package/lib/app/helper/cron.js +29 -29
- package/lib/app/helper/enum_values.js +6 -6
- package/lib/app/helper/pagination_helper.js +36 -36
- package/lib/app/helper/router_helper.js +35 -35
- package/lib/app/helper/socket_helper.js +57 -57
- package/lib/app/helper/syncable.js +84 -59
- package/lib/app/helper_component/paginate_component.js +9 -9
- package/lib/app/helper_controller/component.js +1 -1
- package/lib/app/helper_controller/conduit.js +31 -31
- package/lib/app/helper_controller/controller.js +54 -39
- package/lib/app/helper_datasource/00-nosql_datasource.js +624 -70
- package/lib/app/helper_datasource/05-fallback_datasource.js +10 -10
- package/lib/app/helper_datasource/idb_datasource.js +6 -6
- package/lib/app/helper_datasource/indexed_db.js +22 -22
- package/lib/app/helper_datasource/remote_datasource.js +5 -5
- package/lib/app/helper_error/http_error.js +4 -4
- package/lib/app/helper_error/model_error.js +2 -2
- package/lib/app/helper_error/validation_error.js +12 -12
- package/lib/app/helper_field/00-objectid_field.js +7 -7
- package/lib/app/helper_field/05-string_field.js +16 -12
- package/lib/app/helper_field/06-text_field.js +2 -4
- package/lib/app/helper_field/10-number_field.js +9 -12
- package/lib/app/helper_field/11-date_field.js +15 -15
- package/lib/app/helper_field/15-local_temporal_field.js +10 -10
- package/lib/app/helper_field/20-decimal_field.js +8 -9
- package/lib/app/helper_field/belongsto_field.js +1 -1
- package/lib/app/helper_field/big_int_field.js +8 -8
- package/lib/app/helper_field/boolean_field.js +9 -11
- package/lib/app/helper_field/datetime_field.js +3 -3
- package/lib/app/helper_field/enum_field.js +13 -8
- package/lib/app/helper_field/fixed_decimal_field.js +6 -7
- package/lib/app/helper_field/geopoint_field.js +9 -10
- package/lib/app/helper_field/habtm_field.js +3 -3
- package/lib/app/helper_field/hasoneparent_field.js +1 -1
- package/lib/app/helper_field/html_field.js +2 -4
- package/lib/app/helper_field/integer_field.js +8 -11
- package/lib/app/helper_field/local_date_field.js +5 -5
- package/lib/app/helper_field/local_date_time_field.js +5 -5
- package/lib/app/helper_field/local_time_field.js +5 -5
- package/lib/app/helper_field/mixed_field.js +5 -5
- package/lib/app/helper_field/object_field.js +8 -8
- package/lib/app/helper_field/password_field.js +3 -3
- package/lib/app/helper_field/regexp_field.js +7 -9
- package/lib/app/helper_field/schema_field.js +91 -88
- package/lib/app/helper_field/settings_field.js +92 -0
- package/lib/app/helper_field/time_field.js +6 -6
- package/lib/app/helper_field/url_field.js +2 -4
- package/lib/app/helper_model/00-base_criteria.js +662 -0
- package/lib/app/helper_model/05-criteria_expressions.js +605 -0
- package/lib/app/helper_model/10-model_criteria.js +1182 -0
- package/lib/app/helper_model/data_provider.js +2 -2
- package/lib/app/helper_model/document.js +103 -92
- package/lib/app/helper_model/document_list.js +14 -14
- package/lib/app/helper_model/field_config.js +11 -11
- package/lib/app/helper_model/field_set.js +17 -17
- package/lib/app/helper_model/model.js +203 -124
- package/lib/app/helper_model/remote_data_provider.js +2 -2
- package/lib/app/helper_validator/00_validator.js +16 -16
- package/lib/app/helper_validator/not_empty_validator.js +9 -9
- package/lib/app/model/00-default_app_model.js +18 -0
- package/lib/app/model/05-system_model.js +27 -0
- package/lib/app/model/{alchemy_migration_model.js → system_migration_model.js} +4 -4
- package/lib/app/model/system_setting_model.js +154 -0
- package/lib/app/model/{alchemy_task_history_model.js → system_task_history_model.js} +7 -7
- package/lib/app/model/{alchemy_task_model.js → system_task_model.js} +11 -11
- package/lib/bootstrap.js +22 -312
- package/lib/class/accumulator.js +5 -5
- package/lib/class/behaviour.js +5 -5
- package/lib/class/component.js +3 -3
- package/lib/class/conduit.js +203 -163
- package/lib/class/controller.js +42 -42
- package/lib/class/datasource.js +74 -79
- package/lib/class/document.js +74 -95
- package/lib/class/document_list.js +5 -5
- package/lib/class/element.js +17 -17
- package/lib/class/error.js +3 -3
- package/lib/class/field.js +169 -91
- package/lib/class/field_value.js +6 -6
- package/lib/class/helper.js +3 -3
- package/lib/class/inode.js +17 -17
- package/lib/class/inode_dir.js +12 -12
- package/lib/class/inode_file.js +50 -25
- package/lib/class/inode_list.js +4 -4
- package/lib/class/migration.js +4 -4
- package/lib/class/model.js +182 -168
- package/lib/class/path_definition.js +22 -22
- package/lib/class/path_evaluator.js +5 -5
- package/lib/class/path_param_definition.js +7 -7
- package/lib/class/plugin.js +312 -0
- package/lib/class/postponement.js +29 -29
- package/lib/class/reciprocal.js +8 -8
- package/lib/class/route.js +33 -33
- package/lib/class/router.js +73 -73
- package/lib/class/schema.js +21 -21
- package/lib/class/schema_client.js +73 -67
- package/lib/class/session.js +63 -29
- package/lib/class/session_scene.js +4 -4
- package/lib/class/sitemap.js +16 -16
- package/lib/class/task.js +39 -39
- package/lib/class/task_service.js +43 -47
- package/lib/{init → core}/alchemy.js +413 -374
- package/lib/{init/functions.js → core/alchemy_functions.js} +171 -108
- package/lib/core/alchemy_load_functions.js +715 -0
- package/lib/core/base.js +50 -62
- package/lib/core/client_alchemy.js +144 -152
- package/lib/core/client_base.js +39 -52
- package/lib/core/discovery.js +16 -18
- package/lib/core/middleware.js +54 -43
- package/lib/core/{routing.js → prefix.js} +14 -16
- package/lib/core/setting.js +1684 -0
- package/lib/core/stage.js +758 -0
- package/lib/scripts/create_constants.js +119 -0
- package/lib/{init/languages.js → scripts/create_languages.js} +5 -5
- package/lib/scripts/create_settings.js +449 -0
- package/lib/scripts/create_shared_constants.js +95 -0
- package/lib/scripts/create_stages.js +55 -0
- package/lib/scripts/init_alchemy.js +51 -0
- package/lib/{init/requirements.js → scripts/preload_modules.js} +15 -2
- package/lib/scripts/setup_devwatch.js +238 -0
- package/lib/stages/00-load_core.js +342 -0
- package/lib/stages/05-load_app.js +57 -0
- package/lib/stages/10-datasource.js +61 -0
- package/lib/stages/15-tasks.js +27 -0
- package/lib/stages/20-settings.js +68 -0
- package/lib/stages/50-routes.js +218 -0
- package/lib/stages/90-server.js +347 -0
- package/package.json +5 -7
- package/lib/app/helper_model/criteria.js +0 -2294
- package/lib/app/helper_model/db_query.js +0 -1488
- package/lib/app/routes.js +0 -11
- package/lib/core/socket.js +0 -171
- package/lib/init/constants.js +0 -158
- package/lib/init/devwatch.js +0 -238
- package/lib/init/load_functions.js +0 -973
- package/lib/stages.js +0 -513
package/lib/class/task.js
CHANGED
|
@@ -11,7 +11,7 @@ const running = alchemy.shared('Task.running', 'Array'),
|
|
|
11
11
|
/**
|
|
12
12
|
* The base "Task" class
|
|
13
13
|
*
|
|
14
|
-
* @author Jelle De Loecker
|
|
14
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
15
15
|
* @since 0.3.0
|
|
16
16
|
* @version 0.5.0
|
|
17
17
|
*/
|
|
@@ -56,11 +56,11 @@ const Task = Function.inherits('Alchemy.Base', 'Alchemy.Task', function Task() {
|
|
|
56
56
|
* Add a forced cron schedule:
|
|
57
57
|
* this task will always run at the given time
|
|
58
58
|
*
|
|
59
|
-
* @author Jelle De Loecker
|
|
59
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
60
60
|
* @since 1.3.17
|
|
61
61
|
* @version 1.3.17
|
|
62
62
|
*
|
|
63
|
-
* @param {
|
|
63
|
+
* @param {string} cron_schedule
|
|
64
64
|
* @param {Object} settings
|
|
65
65
|
*/
|
|
66
66
|
Task.setStatic(function addForcedCronSchedule(cron_schedule, settings) {
|
|
@@ -78,11 +78,11 @@ Task.setStatic(function addForcedCronSchedule(cron_schedule, settings) {
|
|
|
78
78
|
* Add a fallback cron schedule:
|
|
79
79
|
* this task will run at the given time if no other schedule is found
|
|
80
80
|
*
|
|
81
|
-
* @author Jelle De Loecker
|
|
81
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
82
82
|
* @since 1.3.17
|
|
83
83
|
* @version 1.3.17
|
|
84
84
|
*
|
|
85
|
-
* @param {
|
|
85
|
+
* @param {string} cron_schedule
|
|
86
86
|
* @param {Object} settings
|
|
87
87
|
*/
|
|
88
88
|
Task.setStatic(function addFallbackCronSchedule(cron_schedule, settings) {
|
|
@@ -99,7 +99,7 @@ Task.setStatic(function addFallbackCronSchedule(cron_schedule, settings) {
|
|
|
99
99
|
/**
|
|
100
100
|
* Each command has a configuration schema
|
|
101
101
|
*
|
|
102
|
-
* @author Jelle De Loecker
|
|
102
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
103
103
|
* @since 0.3.0
|
|
104
104
|
* @version 0.5.0
|
|
105
105
|
*/
|
|
@@ -112,7 +112,7 @@ Task.constitute(function setSchema() {
|
|
|
112
112
|
/**
|
|
113
113
|
* Return the class-wide schema
|
|
114
114
|
*
|
|
115
|
-
* @type
|
|
115
|
+
* @type {Schema}
|
|
116
116
|
*/
|
|
117
117
|
Task.setProperty(function schema() {
|
|
118
118
|
return this.constructor.schema;
|
|
@@ -131,14 +131,14 @@ Task.startNewGroup();
|
|
|
131
131
|
/**
|
|
132
132
|
* Indicate this command can be paused
|
|
133
133
|
*
|
|
134
|
-
* @type
|
|
134
|
+
* @type {boolean}
|
|
135
135
|
*/
|
|
136
136
|
Task.setProperty('can_be_paused', true);
|
|
137
137
|
|
|
138
138
|
/**
|
|
139
139
|
* Indicate this command can be stopped
|
|
140
140
|
*
|
|
141
|
-
* @type
|
|
141
|
+
* @type {Schema}
|
|
142
142
|
*/
|
|
143
143
|
Task.setProperty('can_be_stopped', true);
|
|
144
144
|
|
|
@@ -147,7 +147,7 @@ Task.setProperty('can_be_stopped', true);
|
|
|
147
147
|
* only set when command block should never use
|
|
148
148
|
* `_getDescription`
|
|
149
149
|
*
|
|
150
|
-
* @type
|
|
150
|
+
* @type {boolean}
|
|
151
151
|
*/
|
|
152
152
|
Task.setProperty('static_description', '');
|
|
153
153
|
|
|
@@ -155,7 +155,7 @@ Task.setProperty('static_description', '');
|
|
|
155
155
|
* Always execute `_getDescription`, even when
|
|
156
156
|
* there are no settings
|
|
157
157
|
*
|
|
158
|
-
* @type
|
|
158
|
+
* @type {boolean}
|
|
159
159
|
*/
|
|
160
160
|
Task.setProperty('force_description_callback', false);
|
|
161
161
|
|
|
@@ -166,7 +166,7 @@ Task.setProperty('force_description_callback', false);
|
|
|
166
166
|
* @since 1.3.17
|
|
167
167
|
* @version 1.3.17
|
|
168
168
|
*
|
|
169
|
-
* @type {
|
|
169
|
+
* @type {boolean}
|
|
170
170
|
*/
|
|
171
171
|
Task.setProperty(function has_started() {
|
|
172
172
|
return this[STATUS] > STARTING;
|
|
@@ -179,7 +179,7 @@ Task.setProperty(function has_started() {
|
|
|
179
179
|
* @since 1.3.17
|
|
180
180
|
* @version 1.3.17
|
|
181
181
|
*
|
|
182
|
-
* @type {
|
|
182
|
+
* @type {boolean}
|
|
183
183
|
*/
|
|
184
184
|
Task.setProperty(function is_paused() {
|
|
185
185
|
return this[STATUS] == PAUSED;
|
|
@@ -192,7 +192,7 @@ Task.setProperty(function is_paused() {
|
|
|
192
192
|
* @since 1.3.17
|
|
193
193
|
* @version 1.3.17
|
|
194
194
|
*
|
|
195
|
-
* @type {
|
|
195
|
+
* @type {boolean}
|
|
196
196
|
*/
|
|
197
197
|
Task.setProperty(function has_stopped() {
|
|
198
198
|
return this[STATUS] == STOPPED;
|
|
@@ -226,11 +226,11 @@ Task.setMethod(function toJSON() {
|
|
|
226
226
|
/**
|
|
227
227
|
* Callback with a nice description
|
|
228
228
|
*
|
|
229
|
-
* @author Jelle De Loecker
|
|
229
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
230
230
|
* @since 0.3.0
|
|
231
231
|
* @version 1.3.17
|
|
232
232
|
*
|
|
233
|
-
* @return {Promise<
|
|
233
|
+
* @return {Promise<string>}
|
|
234
234
|
*/
|
|
235
235
|
Task.setMethod(async function getDescription() {
|
|
236
236
|
|
|
@@ -249,11 +249,11 @@ Task.setMethod(async function getDescription() {
|
|
|
249
249
|
* Callback with a nice description,
|
|
250
250
|
* should be modified upon extension
|
|
251
251
|
*
|
|
252
|
-
* @author Jelle De Loecker
|
|
252
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
253
253
|
* @since 0.3.0
|
|
254
254
|
* @version 0.3.0
|
|
255
255
|
*
|
|
256
|
-
* @return {Promise<
|
|
256
|
+
* @return {Promise<string>}
|
|
257
257
|
*/
|
|
258
258
|
Task.setMethod(async function _getDescription() {
|
|
259
259
|
return this.constructor.title || this.name;
|
|
@@ -263,7 +263,7 @@ Task.setMethod(async function _getDescription() {
|
|
|
263
263
|
* The main function to execute. Should not be called directly.
|
|
264
264
|
* Needs to be overridden by child classes.
|
|
265
265
|
*
|
|
266
|
-
* @author Jelle De Loecker
|
|
266
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
267
267
|
* @since 0.5.0
|
|
268
268
|
* @version 1.3.17
|
|
269
269
|
*/
|
|
@@ -274,7 +274,7 @@ Task.setMethod(async function executor() {
|
|
|
274
274
|
/**
|
|
275
275
|
* Set the payload/settings
|
|
276
276
|
*
|
|
277
|
-
* @author Jelle De Loecker
|
|
277
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
278
278
|
* @since 1.3.17
|
|
279
279
|
* @version 1.3.17
|
|
280
280
|
*
|
|
@@ -287,7 +287,7 @@ Task.setMethod(function setPayload(payload) {
|
|
|
287
287
|
/**
|
|
288
288
|
* Set the original AlchemyTask document
|
|
289
289
|
*
|
|
290
|
-
* @author Jelle De Loecker
|
|
290
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
291
291
|
* @since 1.3.17
|
|
292
292
|
* @version 1.3.17
|
|
293
293
|
*
|
|
@@ -300,7 +300,7 @@ Task.setMethod(function setAlchemyTaskDocument(doc) {
|
|
|
300
300
|
/**
|
|
301
301
|
* Set the AlchemyTaskHistory document
|
|
302
302
|
*
|
|
303
|
-
* @author Jelle De Loecker
|
|
303
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
304
304
|
* @since 1.3.17
|
|
305
305
|
* @version 1.3.17
|
|
306
306
|
*
|
|
@@ -313,7 +313,7 @@ Task.setMethod(function setAlchemyTaskHistoryDocument(doc) {
|
|
|
313
313
|
/**
|
|
314
314
|
* Start executing the command
|
|
315
315
|
*
|
|
316
|
-
* @author Jelle De Loecker
|
|
316
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
317
317
|
* @since 0.3.0
|
|
318
318
|
* @version 1.3.17
|
|
319
319
|
*
|
|
@@ -329,7 +329,7 @@ Task.setMethod(async function start(payload) {
|
|
|
329
329
|
this.setPayload(payload);
|
|
330
330
|
}
|
|
331
331
|
|
|
332
|
-
const History = Model.get('
|
|
332
|
+
const History = Model.get('System.TaskHistory');
|
|
333
333
|
|
|
334
334
|
this[STATUS] = STARTED;
|
|
335
335
|
this[RUNNING_PLEDGE] = new Pledge();
|
|
@@ -398,7 +398,7 @@ Task.setMethod(async function start(payload) {
|
|
|
398
398
|
/**
|
|
399
399
|
* Stop the running command
|
|
400
400
|
*
|
|
401
|
-
* @author Jelle De Loecker
|
|
401
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
402
402
|
* @since 0.3.0
|
|
403
403
|
* @version 1.3.17
|
|
404
404
|
*/
|
|
@@ -418,7 +418,7 @@ Task.setMethod(async function stop() {
|
|
|
418
418
|
/**
|
|
419
419
|
* Pause the running command
|
|
420
420
|
*
|
|
421
|
-
* @author Jelle De Loecker
|
|
421
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
422
422
|
* @since 0.3.0
|
|
423
423
|
* @version 1.3.17
|
|
424
424
|
*/
|
|
@@ -445,7 +445,7 @@ Task.setMethod(function pause() {
|
|
|
445
445
|
/**
|
|
446
446
|
* Resume this task if it has been paused
|
|
447
447
|
*
|
|
448
|
-
* @author Jelle De Loecker
|
|
448
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
449
449
|
* @since 0.3.0
|
|
450
450
|
* @version 1.3.17
|
|
451
451
|
*/
|
|
@@ -476,7 +476,7 @@ Task.setMethod(function resume() {
|
|
|
476
476
|
/**
|
|
477
477
|
* Get a parameter from the payload by the given name
|
|
478
478
|
*
|
|
479
|
-
* @author Jelle De Loecker
|
|
479
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
480
480
|
* @since 1.3.17
|
|
481
481
|
* @version 1.3.17
|
|
482
482
|
*/
|
|
@@ -487,7 +487,7 @@ Task.setMethod(function getParam(name) {
|
|
|
487
487
|
/**
|
|
488
488
|
* Wait for the pause to resolve
|
|
489
489
|
*
|
|
490
|
-
* @author Jelle De Loecker
|
|
490
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
491
491
|
* @since 1.3.17
|
|
492
492
|
* @version 1.3.21
|
|
493
493
|
*/
|
|
@@ -509,7 +509,7 @@ Task.setMethod(function waitUntilResumed() {
|
|
|
509
509
|
/**
|
|
510
510
|
* Wait if the system is too busy
|
|
511
511
|
*
|
|
512
|
-
* @author Jelle De Loecker
|
|
512
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
513
513
|
* @since 1.3.21
|
|
514
514
|
* @version 1.3.21
|
|
515
515
|
*/
|
|
@@ -525,7 +525,7 @@ Task.setMethod(function waitIfTooBusy() {
|
|
|
525
525
|
/**
|
|
526
526
|
* Do a loop until the system is no longer busy
|
|
527
527
|
*
|
|
528
|
-
* @author Jelle De Loecker
|
|
528
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
529
529
|
* @since 1.3.21
|
|
530
530
|
* @version 1.3.21
|
|
531
531
|
*/
|
|
@@ -549,12 +549,12 @@ async function doAsyncLoopUntilNotBusy(max_tries) {
|
|
|
549
549
|
/**
|
|
550
550
|
* Report command progress
|
|
551
551
|
*
|
|
552
|
-
* @author Jelle De Loecker
|
|
552
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
553
553
|
* @since 0.3.0
|
|
554
554
|
* @version 1.3.17
|
|
555
555
|
*
|
|
556
|
-
* @param {
|
|
557
|
-
* @param {
|
|
556
|
+
* @param {number} percentage Percentage that is done as a decimal (between 0 & 1)
|
|
557
|
+
* @param {string} type The type of status
|
|
558
558
|
*
|
|
559
559
|
* @return {Object}
|
|
560
560
|
*/
|
|
@@ -636,12 +636,12 @@ Task.setMethod(function report(percentage, type) {
|
|
|
636
636
|
* Report progress, Janeway monkey-patches this method
|
|
637
637
|
* and uses it to display the progress bar.
|
|
638
638
|
*
|
|
639
|
-
* @author Jelle De Loecker
|
|
639
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
640
640
|
* @since 0.5.0
|
|
641
641
|
* @version 0.5.0
|
|
642
642
|
*
|
|
643
|
-
* @param {
|
|
644
|
-
* @param {
|
|
643
|
+
* @param {number} value A value between 0-100
|
|
644
|
+
* @param {string} label An optional label
|
|
645
645
|
*/
|
|
646
646
|
Task.setMethod(function reportProgress(value, label) {
|
|
647
647
|
this.progress = value;
|
|
@@ -650,7 +650,7 @@ Task.setMethod(function reportProgress(value, label) {
|
|
|
650
650
|
/**
|
|
651
651
|
* Log command messages
|
|
652
652
|
*
|
|
653
|
-
* @author Jelle De Loecker
|
|
653
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
654
654
|
* @since 0.3.0
|
|
655
655
|
* @version 0.3.0
|
|
656
656
|
*/
|
|
@@ -673,7 +673,7 @@ Task.setMethod(function log() {
|
|
|
673
673
|
/**
|
|
674
674
|
* Start executing a task
|
|
675
675
|
*
|
|
676
|
-
* @author Jelle De Loecker
|
|
676
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
677
677
|
* @since 0.3.0
|
|
678
678
|
* @version 0.5.0
|
|
679
679
|
*
|
|
@@ -8,9 +8,9 @@ let running_task_menu,
|
|
|
8
8
|
/**
|
|
9
9
|
* The TaskService class
|
|
10
10
|
*
|
|
11
|
-
* @author Jelle De Loecker
|
|
11
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
12
12
|
* @since 1.3.17
|
|
13
|
-
* @version 1.
|
|
13
|
+
* @version 1.4.0
|
|
14
14
|
*/
|
|
15
15
|
const Service = Function.inherits('Alchemy.Base', 'Alchemy.Task', function TaskService() {
|
|
16
16
|
|
|
@@ -19,7 +19,7 @@ const Service = Function.inherits('Alchemy.Base', 'Alchemy.Task', function TaskS
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
// Get the AlchemyTask model
|
|
22
|
-
this.AlchemyTask = Model.get('
|
|
22
|
+
this.AlchemyTask = Model.get('System.Task');
|
|
23
23
|
|
|
24
24
|
// Keep track of all running tasks
|
|
25
25
|
this.running_tasks = [];
|
|
@@ -33,20 +33,16 @@ const Service = Function.inherits('Alchemy.Base', 'Alchemy.Task', function TaskS
|
|
|
33
33
|
this.initSchedules();
|
|
34
34
|
|
|
35
35
|
singleton = this;
|
|
36
|
-
|
|
37
|
-
if (alchemy.settings.janeway_task_menu) {
|
|
38
|
-
this.createJanewayTaskMenu();
|
|
39
|
-
}
|
|
40
36
|
});
|
|
41
37
|
|
|
42
38
|
/**
|
|
43
39
|
* Get a TaskSchedule instance for the given taks
|
|
44
40
|
*
|
|
45
|
-
* @author Jelle De Loecker
|
|
41
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
46
42
|
* @since 1.3.17
|
|
47
43
|
* @version 1.3.17
|
|
48
44
|
*
|
|
49
|
-
* @return {TaskSchedules|
|
|
45
|
+
* @return {TaskSchedules|string}
|
|
50
46
|
*/
|
|
51
47
|
Service.setMethod(function getTaskSchedules(constructor) {
|
|
52
48
|
|
|
@@ -75,15 +71,15 @@ Service.setMethod(function getTaskSchedules(constructor) {
|
|
|
75
71
|
/**
|
|
76
72
|
* Checksum the given cron schedule & settings
|
|
77
73
|
*
|
|
78
|
-
* @author Jelle De Loecker
|
|
74
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
79
75
|
* @since 1.3.17
|
|
80
76
|
* @version 1.3.17
|
|
81
77
|
*
|
|
82
|
-
* @param {
|
|
78
|
+
* @param {string} type_path
|
|
83
79
|
* @param {Cron} cron
|
|
84
80
|
* @param {Object} settings
|
|
85
81
|
*
|
|
86
|
-
* @return {
|
|
82
|
+
* @return {string}
|
|
87
83
|
*/
|
|
88
84
|
Service.setMethod(function checksumSystemSchedule(type_path, cron, settings) {
|
|
89
85
|
|
|
@@ -103,9 +99,9 @@ Service.setMethod(function checksumSystemSchedule(type_path, cron, settings) {
|
|
|
103
99
|
/**
|
|
104
100
|
* Initialize the schedules on boot
|
|
105
101
|
*
|
|
106
|
-
* @author Jelle De Loecker
|
|
102
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
107
103
|
* @since 1.3.17
|
|
108
|
-
* @version 1.
|
|
104
|
+
* @version 1.4.0
|
|
109
105
|
*/
|
|
110
106
|
Service.setMethod(async function initSchedules() {
|
|
111
107
|
|
|
@@ -172,7 +168,7 @@ Service.setMethod(async function initSchedules() {
|
|
|
172
168
|
let entry = required_system_schedules.get(checksum);
|
|
173
169
|
|
|
174
170
|
// If the checksum is not in the required system schedules, remove it
|
|
175
|
-
if (!entry) {
|
|
171
|
+
if (!entry || !entry.cron) {
|
|
176
172
|
await record.remove();
|
|
177
173
|
}
|
|
178
174
|
|
|
@@ -231,7 +227,7 @@ Service.setMethod(async function initSchedules() {
|
|
|
231
227
|
/**
|
|
232
228
|
* Create the Janeway task menu
|
|
233
229
|
*
|
|
234
|
-
* @author Jelle De Loecker
|
|
230
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
235
231
|
* @since 1.3.17
|
|
236
232
|
* @version 1.3.21
|
|
237
233
|
*/
|
|
@@ -303,7 +299,7 @@ Service.setMethod(function createJanewayTaskMenu() {
|
|
|
303
299
|
/**
|
|
304
300
|
* Update all the schedule `setTimeout` calls that need it
|
|
305
301
|
*
|
|
306
|
-
* @author Jelle De Loecker
|
|
302
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
307
303
|
* @since 1.3.17
|
|
308
304
|
* @version 1.3.17
|
|
309
305
|
*/
|
|
@@ -316,7 +312,7 @@ Service.setMethod(function updateTimeoutCalls() {
|
|
|
316
312
|
/**
|
|
317
313
|
* Schedule forced tasks
|
|
318
314
|
*
|
|
319
|
-
* @author Jelle De Loecker
|
|
315
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
320
316
|
* @since 1.3.17
|
|
321
317
|
* @version 1.3.17
|
|
322
318
|
*/
|
|
@@ -336,13 +332,13 @@ Service.setMethod(async function rescheduleAllTasks() {
|
|
|
336
332
|
/**
|
|
337
333
|
* Get the constructor of the given task type
|
|
338
334
|
*
|
|
339
|
-
* @author Jelle De Loecker
|
|
335
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
340
336
|
* @since 1.3.17
|
|
341
337
|
* @version 1.3.17
|
|
342
338
|
*
|
|
343
|
-
* @param {
|
|
339
|
+
* @param {string|Function} task_type_path
|
|
344
340
|
*
|
|
345
|
-
* @return {Function|
|
|
341
|
+
* @return {Function|boolean}
|
|
346
342
|
*/
|
|
347
343
|
Service.setMethod(function getTaskConstructor(task_type_path) {
|
|
348
344
|
|
|
@@ -367,11 +363,11 @@ Service.setMethod(function getTaskConstructor(task_type_path) {
|
|
|
367
363
|
/**
|
|
368
364
|
* Reschedule all tasks of the given type
|
|
369
365
|
*
|
|
370
|
-
* @author Jelle De Loecker
|
|
366
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
371
367
|
* @since 1.3.17
|
|
372
368
|
* @version 1.3.17
|
|
373
369
|
*
|
|
374
|
-
* @param {
|
|
370
|
+
* @param {string|Function} task_class
|
|
375
371
|
*/
|
|
376
372
|
Service.setMethod(async function rescheduleTasksOfType(task_class) {
|
|
377
373
|
|
|
@@ -389,7 +385,7 @@ Service.setMethod(async function rescheduleTasksOfType(task_class) {
|
|
|
389
385
|
|
|
390
386
|
schedules.clearAll();
|
|
391
387
|
|
|
392
|
-
const Task = Model.get('
|
|
388
|
+
const Task = Model.get('System.Task');
|
|
393
389
|
const crit = Task.find();
|
|
394
390
|
crit.where('type').equals(task_class.type_path);
|
|
395
391
|
const records = await Task.find('all', crit);
|
|
@@ -445,7 +441,7 @@ Service.setMethod(async function rescheduleTasksOfType(task_class) {
|
|
|
445
441
|
/**
|
|
446
442
|
* Simple class to keep track of a task's schedule
|
|
447
443
|
*
|
|
448
|
-
* @author Jelle De Loecker
|
|
444
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
449
445
|
* @since 1.3.17
|
|
450
446
|
* @version 1.3.17
|
|
451
447
|
*/
|
|
@@ -457,7 +453,7 @@ class TaskSchedules {
|
|
|
457
453
|
/**
|
|
458
454
|
* Initialize the instance
|
|
459
455
|
*
|
|
460
|
-
* @author Jelle De Loecker
|
|
456
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
461
457
|
* @since 1.3.17
|
|
462
458
|
* @version 1.3.17
|
|
463
459
|
*/
|
|
@@ -468,7 +464,7 @@ class TaskSchedules {
|
|
|
468
464
|
/**
|
|
469
465
|
* Getter for the amount of schedules
|
|
470
466
|
*
|
|
471
|
-
* @author Jelle De Loecker
|
|
467
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
472
468
|
* @since 1.3.17
|
|
473
469
|
* @version 1.3.17
|
|
474
470
|
*/
|
|
@@ -479,7 +475,7 @@ class TaskSchedules {
|
|
|
479
475
|
/**
|
|
480
476
|
* Add a schedule (with the given settings)
|
|
481
477
|
*
|
|
482
|
-
* @author Jelle De Loecker
|
|
478
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
483
479
|
* @since 1.3.17
|
|
484
480
|
* @version 1.3.17
|
|
485
481
|
*
|
|
@@ -496,7 +492,7 @@ class TaskSchedules {
|
|
|
496
492
|
/**
|
|
497
493
|
* Update all the timeout calls that need it.
|
|
498
494
|
*
|
|
499
|
-
* @author Jelle De Loecker
|
|
495
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
500
496
|
* @since 1.3.17
|
|
501
497
|
* @version 1.3.17
|
|
502
498
|
*/
|
|
@@ -509,7 +505,7 @@ class TaskSchedules {
|
|
|
509
505
|
/**
|
|
510
506
|
* Create a start menu entry for the given record
|
|
511
507
|
*
|
|
512
|
-
* @author Jelle De Loecker
|
|
508
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
513
509
|
* @since 1.3.17
|
|
514
510
|
* @version 1.3.17
|
|
515
511
|
*/
|
|
@@ -531,7 +527,7 @@ class TaskSchedules {
|
|
|
531
527
|
/**
|
|
532
528
|
* Start a task from the menu
|
|
533
529
|
*
|
|
534
|
-
* @author Jelle De Loecker
|
|
530
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
535
531
|
* @since 1.3.17
|
|
536
532
|
* @version 1.3.20
|
|
537
533
|
*/
|
|
@@ -547,7 +543,7 @@ class TaskSchedules {
|
|
|
547
543
|
/**
|
|
548
544
|
* Clear all the schedules
|
|
549
545
|
*
|
|
550
|
-
* @author Jelle De Loecker
|
|
546
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
551
547
|
* @since 1.3.17
|
|
552
548
|
* @version 1.3.17
|
|
553
549
|
*/
|
|
@@ -570,7 +566,7 @@ class TaskSchedules {
|
|
|
570
566
|
/**
|
|
571
567
|
* Simple class to keep track of a task's schedule
|
|
572
568
|
*
|
|
573
|
-
* @author Jelle De Loecker
|
|
569
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
574
570
|
* @since 1.3.17
|
|
575
571
|
* @version 1.3.17
|
|
576
572
|
*/
|
|
@@ -594,7 +590,7 @@ class TaskSchedule {
|
|
|
594
590
|
/**
|
|
595
591
|
* Initialize the instance
|
|
596
592
|
*
|
|
597
|
-
* @author Jelle De Loecker
|
|
593
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
598
594
|
* @since 1.3.17
|
|
599
595
|
* @version 1.3.17
|
|
600
596
|
*
|
|
@@ -613,7 +609,7 @@ class TaskSchedule {
|
|
|
613
609
|
/**
|
|
614
610
|
* Create a new instance with the current settings
|
|
615
611
|
*
|
|
616
|
-
* @author Jelle De Loecker
|
|
612
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
617
613
|
* @since 1.3.17
|
|
618
614
|
* @version 1.3.17
|
|
619
615
|
*/
|
|
@@ -629,7 +625,7 @@ class TaskSchedule {
|
|
|
629
625
|
/**
|
|
630
626
|
* Calculate the next scheduled date
|
|
631
627
|
*
|
|
632
|
-
* @author Jelle De Loecker
|
|
628
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
633
629
|
* @since 1.3.17
|
|
634
630
|
* @version 1.3.17
|
|
635
631
|
*/
|
|
@@ -642,7 +638,7 @@ class TaskSchedule {
|
|
|
642
638
|
* With the current scheduled date,
|
|
643
639
|
* check if the timeout call needs to be updated.
|
|
644
640
|
*
|
|
645
|
-
* @author Jelle De Loecker
|
|
641
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
646
642
|
* @since 1.3.17
|
|
647
643
|
* @version 1.3.17
|
|
648
644
|
*/
|
|
@@ -668,7 +664,7 @@ class TaskSchedule {
|
|
|
668
664
|
* Propose a new scheduled date.
|
|
669
665
|
* If another date is already set, the closest one will be used.
|
|
670
666
|
*
|
|
671
|
-
* @author Jelle De Loecker
|
|
667
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
672
668
|
* @since 1.3.17
|
|
673
669
|
* @version 1.3.17
|
|
674
670
|
*/
|
|
@@ -691,13 +687,13 @@ class TaskSchedule {
|
|
|
691
687
|
* Get the AlchemyTaskHistory document for the given date.
|
|
692
688
|
* If it does not exist yet, it will be created.
|
|
693
689
|
*
|
|
694
|
-
* @author Jelle De Loecker
|
|
690
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
695
691
|
* @since 1.3.17
|
|
696
692
|
* @version 1.3.17
|
|
697
693
|
*/
|
|
698
694
|
async getHistoryDocumentForDate(date) {
|
|
699
695
|
|
|
700
|
-
const TaskHistory = Model.get('
|
|
696
|
+
const TaskHistory = Model.get('System.TaskHistory');
|
|
701
697
|
const crit = TaskHistory.find();
|
|
702
698
|
|
|
703
699
|
crit.where('scheduled_at').equals(date);
|
|
@@ -738,7 +734,7 @@ class TaskSchedule {
|
|
|
738
734
|
* Set the next scheduled date.
|
|
739
735
|
* Current date will be overridden no matter what.
|
|
740
736
|
*
|
|
741
|
-
* @author Jelle De Loecker
|
|
737
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
742
738
|
* @since 1.3.17
|
|
743
739
|
* @version 1.3.17
|
|
744
740
|
*/
|
|
@@ -777,7 +773,7 @@ class TaskSchedule {
|
|
|
777
773
|
/**
|
|
778
774
|
* Do something when the Janeway menu item is clicked.
|
|
779
775
|
*
|
|
780
|
-
* @author Jelle De Loecker
|
|
776
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
781
777
|
* @since 1.3.17
|
|
782
778
|
* @version 1.3.17
|
|
783
779
|
*/
|
|
@@ -788,7 +784,7 @@ class TaskSchedule {
|
|
|
788
784
|
/**
|
|
789
785
|
* Actually set the date & timeout (and history document)
|
|
790
786
|
*
|
|
791
|
-
* @author Jelle De Loecker
|
|
787
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
792
788
|
* @since 1.3.17
|
|
793
789
|
* @version 1.3.17
|
|
794
790
|
*/
|
|
@@ -813,7 +809,7 @@ class TaskSchedule {
|
|
|
813
809
|
/**
|
|
814
810
|
* Does the current process own this task?
|
|
815
811
|
*
|
|
816
|
-
* @author Jelle De Loecker
|
|
812
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
817
813
|
* @since 1.3.17
|
|
818
814
|
* @version 1.3.17
|
|
819
815
|
*/
|
|
@@ -854,7 +850,7 @@ class TaskSchedule {
|
|
|
854
850
|
/**
|
|
855
851
|
* Do a manual start
|
|
856
852
|
*
|
|
857
|
-
* @author Jelle De Loecker
|
|
853
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
858
854
|
* @since 1.3.17
|
|
859
855
|
* @version 1.3.20
|
|
860
856
|
*
|
|
@@ -877,7 +873,7 @@ class TaskSchedule {
|
|
|
877
873
|
/**
|
|
878
874
|
* Actually run the task
|
|
879
875
|
*
|
|
880
|
-
* @author Jelle De Loecker
|
|
876
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
881
877
|
* @since 1.3.17
|
|
882
878
|
* @version 1.3.20
|
|
883
879
|
*/
|
|
@@ -944,7 +940,7 @@ class TaskSchedule {
|
|
|
944
940
|
/**
|
|
945
941
|
* Clear the timer
|
|
946
942
|
*
|
|
947
|
-
* @author Jelle De Loecker
|
|
943
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
948
944
|
* @since 1.3.17
|
|
949
945
|
* @version 1.3.17
|
|
950
946
|
*/
|