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
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @constructor
|
|
6
6
|
*
|
|
7
|
-
* @author Jelle De Loecker
|
|
7
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
8
8
|
* @since 1.0.0
|
|
9
9
|
* @version 1.0.0
|
|
10
10
|
*/
|
|
@@ -16,7 +16,7 @@ var Controller = Function.inherits('Alchemy.Client.Base', 'Alchemy.Client.Contro
|
|
|
16
16
|
/**
|
|
17
17
|
* Map these events to methods
|
|
18
18
|
*
|
|
19
|
-
* @author Jelle De Loecker
|
|
19
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
20
20
|
* @since 1.1.1
|
|
21
21
|
* @version 1.1.1
|
|
22
22
|
*/
|
|
@@ -29,7 +29,7 @@ Controller.mapEventToMethod({
|
|
|
29
29
|
/**
|
|
30
30
|
* Add action object
|
|
31
31
|
*
|
|
32
|
-
* @author Jelle De Loecker
|
|
32
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
33
33
|
* @since 1.0.0
|
|
34
34
|
* @version 1.0.0
|
|
35
35
|
*/
|
|
@@ -46,7 +46,7 @@ Controller.constitute(function addActions() {
|
|
|
46
46
|
/**
|
|
47
47
|
* Add an action
|
|
48
48
|
*
|
|
49
|
-
* @author Jelle De Loecker
|
|
49
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
50
50
|
* @since 1.0.0
|
|
51
51
|
* @version 1.0.0
|
|
52
52
|
*/
|
|
@@ -89,14 +89,14 @@ Controller.setStatic(function setAction(name, fnc, on_server) {
|
|
|
89
89
|
/**
|
|
90
90
|
* Object where components are stored
|
|
91
91
|
*
|
|
92
|
-
* @type
|
|
92
|
+
* @type {Object}
|
|
93
93
|
*/
|
|
94
94
|
Controller.prepareProperty('components', Object);
|
|
95
95
|
|
|
96
96
|
/**
|
|
97
97
|
* The controller name
|
|
98
98
|
*
|
|
99
|
-
* @type
|
|
99
|
+
* @type {string}
|
|
100
100
|
*/
|
|
101
101
|
Controller.prepareProperty('name', function name() {
|
|
102
102
|
return this.constructor.name;
|
|
@@ -105,7 +105,7 @@ Controller.prepareProperty('name', function name() {
|
|
|
105
105
|
/**
|
|
106
106
|
* The model linked to this controller
|
|
107
107
|
*
|
|
108
|
-
* @author Jelle De Loecker
|
|
108
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
109
109
|
* @since 1.0.0
|
|
110
110
|
* @version 1.0.5
|
|
111
111
|
*
|
|
@@ -123,7 +123,7 @@ Controller.prepareProperty(function model() {
|
|
|
123
123
|
/**
|
|
124
124
|
* Alias to the viewRender
|
|
125
125
|
*
|
|
126
|
-
* @type
|
|
126
|
+
* @type {Hawkejs.ViewRender}
|
|
127
127
|
*/
|
|
128
128
|
Controller.setProperty(function view_render() {
|
|
129
129
|
return this.conduit.view_render;
|
|
@@ -132,11 +132,11 @@ Controller.setProperty(function view_render() {
|
|
|
132
132
|
/**
|
|
133
133
|
* Enable a component
|
|
134
134
|
*
|
|
135
|
-
* @author Jelle De Loecker
|
|
135
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
136
136
|
* @since 1.0.0
|
|
137
137
|
* @version 1.0.0
|
|
138
138
|
*
|
|
139
|
-
* @param {
|
|
139
|
+
* @param {string} name The name of the component
|
|
140
140
|
* @param {Object} options
|
|
141
141
|
*/
|
|
142
142
|
Controller.setMethod(function addComponent(name, options) {
|
|
@@ -162,11 +162,11 @@ Controller.setMethod(function addComponent(name, options) {
|
|
|
162
162
|
/**
|
|
163
163
|
* Change the response URL (or disable it)
|
|
164
164
|
*
|
|
165
|
-
* @author Jelle De Loecker
|
|
165
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
166
166
|
* @since 1.3.0
|
|
167
167
|
* @version 1.3.0
|
|
168
168
|
*
|
|
169
|
-
* @param {
|
|
169
|
+
* @param {string|RURL|boolean} new_url
|
|
170
170
|
*/
|
|
171
171
|
Controller.setMethod(function setResponseUrl(new_url) {
|
|
172
172
|
|
|
@@ -179,11 +179,11 @@ Controller.setMethod(function setResponseUrl(new_url) {
|
|
|
179
179
|
/**
|
|
180
180
|
* Set a variable for ViewRender, through conduit
|
|
181
181
|
*
|
|
182
|
-
* @author Jelle De Loecker
|
|
182
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
183
183
|
* @since 0.2.0
|
|
184
184
|
* @version 0.2.0
|
|
185
185
|
*
|
|
186
|
-
* @param {
|
|
186
|
+
* @param {string} name
|
|
187
187
|
* @param {Mixed} value
|
|
188
188
|
*/
|
|
189
189
|
Controller.setMethod(function set(name, value) {
|
|
@@ -198,11 +198,11 @@ Controller.setMethod(function set(name, value) {
|
|
|
198
198
|
/**
|
|
199
199
|
* Set a variable for ViewRender, encode HTML if it's a string
|
|
200
200
|
*
|
|
201
|
-
* @author Jelle De Loecker
|
|
201
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
202
202
|
* @since 0.4.1
|
|
203
203
|
* @version 0.4.1
|
|
204
204
|
*
|
|
205
|
-
* @param {
|
|
205
|
+
* @param {string} name
|
|
206
206
|
* @param {Mixed} value
|
|
207
207
|
*/
|
|
208
208
|
Controller.setMethod(function safeSet(name, value) {
|
|
@@ -221,11 +221,11 @@ Controller.setMethod(function safeSet(name, value) {
|
|
|
221
221
|
/**
|
|
222
222
|
* Set the page title
|
|
223
223
|
*
|
|
224
|
-
* @author Jelle De Loecker
|
|
224
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
225
225
|
* @since 0.4.1
|
|
226
226
|
* @version 0.4.1
|
|
227
227
|
*
|
|
228
|
-
* @param {
|
|
228
|
+
* @param {string} title
|
|
229
229
|
*/
|
|
230
230
|
Controller.setMethod(function setTitle(title) {
|
|
231
231
|
this.set('pagetitle', title);
|
|
@@ -235,11 +235,11 @@ Controller.setMethod(function setTitle(title) {
|
|
|
235
235
|
/**
|
|
236
236
|
* Set an internal variable for ViewRender
|
|
237
237
|
*
|
|
238
|
-
* @author Jelle De Loecker
|
|
238
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
239
239
|
* @since 0.2.0
|
|
240
240
|
* @version 1.0.0
|
|
241
241
|
*
|
|
242
|
-
* @param {
|
|
242
|
+
* @param {string} name
|
|
243
243
|
* @param {Mixed} value
|
|
244
244
|
*/
|
|
245
245
|
Controller.setMethod(function internal(name, value) {
|
|
@@ -254,11 +254,11 @@ Controller.setMethod(function internal(name, value) {
|
|
|
254
254
|
/**
|
|
255
255
|
* Expose a variable for ViewRender
|
|
256
256
|
*
|
|
257
|
-
* @author Jelle De Loecker
|
|
257
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
258
258
|
* @since 0.2.0
|
|
259
259
|
* @version 1.0.0
|
|
260
260
|
*
|
|
261
|
-
* @param {
|
|
261
|
+
* @param {string} name
|
|
262
262
|
* @param {Mixed} value
|
|
263
263
|
*/
|
|
264
264
|
Controller.setMethod(function expose(name, value) {
|
|
@@ -273,12 +273,12 @@ Controller.setMethod(function expose(name, value) {
|
|
|
273
273
|
/**
|
|
274
274
|
* Render the given template
|
|
275
275
|
*
|
|
276
|
-
* @author Jelle De Loecker
|
|
276
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
277
277
|
* @since 1.0.0
|
|
278
278
|
* @version 1.1.0
|
|
279
279
|
*
|
|
280
|
-
* @param
|
|
281
|
-
* @param
|
|
280
|
+
* @param {number} status
|
|
281
|
+
* @param {Array} templates
|
|
282
282
|
*/
|
|
283
283
|
Controller.setMethod(function render(status, templates) {
|
|
284
284
|
|
|
@@ -309,11 +309,11 @@ Controller.setMethod(function render(status, templates) {
|
|
|
309
309
|
/**
|
|
310
310
|
* End the response
|
|
311
311
|
*
|
|
312
|
-
* @author Jelle De Loecker
|
|
312
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
313
313
|
* @since 1.1.0
|
|
314
314
|
* @version 1.1.0
|
|
315
315
|
*
|
|
316
|
-
* @param {
|
|
316
|
+
* @param {string|Object} message
|
|
317
317
|
*/
|
|
318
318
|
Controller.setMethod(function end(message) {
|
|
319
319
|
return this.conduit.end(message);
|
|
@@ -322,12 +322,12 @@ Controller.setMethod(function end(message) {
|
|
|
322
322
|
/**
|
|
323
323
|
* Perform the wanted action and fire expected events
|
|
324
324
|
*
|
|
325
|
-
* @author Jelle De Loecker
|
|
325
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
326
326
|
* @since 0.2.0
|
|
327
|
-
* @version 1.
|
|
327
|
+
* @version 1.4.0
|
|
328
328
|
*
|
|
329
|
-
* @param
|
|
330
|
-
* @param
|
|
329
|
+
* @param {string} name The name of the action to execute
|
|
330
|
+
* @param {Array} args Arguments to apply to the action
|
|
331
331
|
*/
|
|
332
332
|
Controller.setMethod(async function doAction(name, args) {
|
|
333
333
|
|
|
@@ -362,8 +362,8 @@ Controller.setMethod(async function doAction(name, args) {
|
|
|
362
362
|
// @TODO: Add support for objects with language keys
|
|
363
363
|
let title = route.options.title;
|
|
364
364
|
|
|
365
|
-
if (alchemy.settings && alchemy.settings.title_suffix) {
|
|
366
|
-
title += alchemy.settings.title_suffix;
|
|
365
|
+
if (alchemy.settings && alchemy.settings.frontend.title_suffix) {
|
|
366
|
+
title += alchemy.settings.frontend.title_suffix;
|
|
367
367
|
}
|
|
368
368
|
|
|
369
369
|
this.setTitle(title);
|
|
@@ -384,9 +384,24 @@ Controller.setMethod(async function doAction(name, args) {
|
|
|
384
384
|
}
|
|
385
385
|
|
|
386
386
|
try {
|
|
387
|
-
await this.issueEvent('initializing');
|
|
388
|
-
|
|
389
|
-
|
|
387
|
+
let result = await this.issueEvent('initializing');
|
|
388
|
+
|
|
389
|
+
if (result === false) {
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
result = await this.issueEvent('filtering');
|
|
394
|
+
|
|
395
|
+
if (result === false) {
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
result = await this.issueEvent('starting', [name]);
|
|
400
|
+
|
|
401
|
+
if (result === false) {
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
|
|
390
405
|
await this.constructor.actions[name].apply(this, args);
|
|
391
406
|
} catch (err) {
|
|
392
407
|
this.conduit.error(err);
|
|
@@ -396,11 +411,11 @@ Controller.setMethod(async function doAction(name, args) {
|
|
|
396
411
|
/**
|
|
397
412
|
* Create client controller class for specific controller name
|
|
398
413
|
*
|
|
399
|
-
* @author Jelle De Loecker <jelle@
|
|
414
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
400
415
|
* @since 1.0.5
|
|
401
416
|
* @version 1.0.5
|
|
402
417
|
*
|
|
403
|
-
* @param {
|
|
418
|
+
* @param {string} controller_name
|
|
404
419
|
*/
|
|
405
420
|
Controller.setStatic(function getClass(controller_name) {
|
|
406
421
|
|
|
@@ -423,7 +438,7 @@ Controller.setStatic(function getClass(controller_name) {
|
|
|
423
438
|
|
|
424
439
|
if (ControllerClass == null) {
|
|
425
440
|
model_constructor = Function.create(class_name, function ControllerConstructor(record, options) {
|
|
426
|
-
ControllerConstructor.
|
|
441
|
+
ControllerConstructor.super.call(this, record, options);
|
|
427
442
|
});
|
|
428
443
|
|
|
429
444
|
// @TODO: inherit from parents
|