alchemymvc 1.3.22 → 1.4.0-alpha.2
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 +96 -59
- 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 +27 -18
- 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 +62 -62
- 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 +6 -6
- 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 +201 -123
- 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 +152 -150
- 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 +26 -26
- package/lib/class/inode_list.js +4 -4
- package/lib/class/migration.js +4 -4
- package/lib/class/model.js +146 -165
- 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 +105 -82
- 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 +411 -373
- package/lib/{init/functions.js → core/alchemy_functions.js} +113 -91
- 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 +27 -50
- 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 -979
- package/lib/stages.js +0 -515
package/lib/core/base.js
CHANGED
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
'use strict';
|
|
2
1
|
const CONDUIT = Symbol('conduit');
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* Alchemy's Base class
|
|
6
5
|
*
|
|
7
|
-
* @author Jelle De Loecker
|
|
6
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
8
7
|
* @since 0.3.0
|
|
9
8
|
* @version 0.3.0
|
|
10
9
|
*/
|
|
11
|
-
|
|
10
|
+
const Base = Function.inherits('Informer', 'Alchemy', function Base() {});
|
|
12
11
|
|
|
13
12
|
/**
|
|
14
13
|
* Add group support to Protoblast
|
|
15
14
|
*
|
|
16
|
-
* @author Jelle De Loecker <jelle@
|
|
15
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
17
16
|
* @since 0.3.0
|
|
18
17
|
* @version 0.3.0
|
|
19
18
|
*/
|
|
@@ -33,7 +32,7 @@ __Protoblast.getGroup = function getGroup(name) {
|
|
|
33
32
|
/**
|
|
34
33
|
* Set basic behaviour
|
|
35
34
|
*
|
|
36
|
-
* @author Jelle De Loecker <jelle@
|
|
35
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
37
36
|
* @since 0.3.0
|
|
38
37
|
* @version 1.3.17
|
|
39
38
|
*/
|
|
@@ -204,11 +203,11 @@ Base.setStatic(function createClassTitle(suggested_root) {
|
|
|
204
203
|
/**
|
|
205
204
|
* Make this start a new group
|
|
206
205
|
*
|
|
207
|
-
* @author Jelle De Loecker <jelle@
|
|
206
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
208
207
|
* @since 1.0.0
|
|
209
208
|
* @version 1.0.0
|
|
210
209
|
*
|
|
211
|
-
* @param {
|
|
210
|
+
* @param {boolean} value
|
|
212
211
|
*/
|
|
213
212
|
Base.setStatic(function startNewGroup(value) {
|
|
214
213
|
|
|
@@ -231,22 +230,20 @@ Base.setStatic(function startNewGroup(value) {
|
|
|
231
230
|
/**
|
|
232
231
|
* Get all the children of this class
|
|
233
232
|
*
|
|
234
|
-
* @author Jelle De Loecker <jelle@
|
|
233
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
235
234
|
* @since 1.0.0
|
|
236
|
-
* @version 1.
|
|
235
|
+
* @version 1.4.0
|
|
237
236
|
*/
|
|
238
237
|
Base.setStatic(function getAllChildren() {
|
|
239
238
|
|
|
240
|
-
|
|
241
|
-
i;
|
|
239
|
+
let result = [];
|
|
242
240
|
|
|
243
241
|
if (!this.children) {
|
|
244
242
|
return result;
|
|
245
243
|
}
|
|
246
244
|
|
|
247
|
-
for (
|
|
248
|
-
result.push(
|
|
249
|
-
result.include(this.children[i].getAllChildren());
|
|
245
|
+
for (let child of this.children) {
|
|
246
|
+
result.push(child, ...child.getAllChildren());
|
|
250
247
|
}
|
|
251
248
|
|
|
252
249
|
return result;
|
|
@@ -255,7 +252,7 @@ Base.setStatic(function getAllChildren() {
|
|
|
255
252
|
/**
|
|
256
253
|
* Find a member of this group
|
|
257
254
|
*
|
|
258
|
-
* @author Jelle De Loecker
|
|
255
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
259
256
|
* @since 0.3.0
|
|
260
257
|
* @version 1.3.0
|
|
261
258
|
*/
|
|
@@ -295,7 +292,7 @@ Base.setStatic(function getMember(name) {
|
|
|
295
292
|
/**
|
|
296
293
|
* Set a deprecated property
|
|
297
294
|
*
|
|
298
|
-
* @author Jelle De Loecker <jelle@
|
|
295
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
299
296
|
* @since 1.0.0
|
|
300
297
|
* @version 1.1.0
|
|
301
298
|
*/
|
|
@@ -312,11 +309,11 @@ Base.setStatic(function setDeprecatedProperty(old_key, new_key) {
|
|
|
312
309
|
/**
|
|
313
310
|
* Get path to this class
|
|
314
311
|
*
|
|
315
|
-
* @author Jelle De Loecker <jelle@
|
|
312
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
316
313
|
* @since 1.0.0
|
|
317
314
|
* @version 1.0.0
|
|
318
315
|
*
|
|
319
|
-
* @return {
|
|
316
|
+
* @return {string}
|
|
320
317
|
*/
|
|
321
318
|
Base.setStatic(function getClassPath() {
|
|
322
319
|
|
|
@@ -330,13 +327,13 @@ Base.setStatic(function getClassPath() {
|
|
|
330
327
|
/**
|
|
331
328
|
* Get path to this class, but after the given namespace piece
|
|
332
329
|
*
|
|
333
|
-
* @author Jelle De Loecker <jelle@
|
|
330
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
334
331
|
* @since 1.0.0
|
|
335
332
|
* @version 1.0.0
|
|
336
333
|
*
|
|
337
|
-
* @param {
|
|
334
|
+
* @param {string} after Only return the path after the given class
|
|
338
335
|
*
|
|
339
|
-
* @return {
|
|
336
|
+
* @return {string}
|
|
340
337
|
*/
|
|
341
338
|
Base.setStatic(function getClassPathAfter(after) {
|
|
342
339
|
|
|
@@ -362,7 +359,7 @@ Base.setStatic(function getClassPathAfter(after) {
|
|
|
362
359
|
/**
|
|
363
360
|
* Set the 'shared group' prefix
|
|
364
361
|
*
|
|
365
|
-
* @author Jelle De Loecker <jelle@
|
|
362
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
366
363
|
* @since 0.3.0
|
|
367
364
|
* @version 1.0.0
|
|
368
365
|
*/
|
|
@@ -373,7 +370,7 @@ Base.setStatic('shared_group_prefix', '');
|
|
|
373
370
|
* This property will not be inherited by children,
|
|
374
371
|
* instead it'll always be set to false (unless overridden)
|
|
375
372
|
*
|
|
376
|
-
* @author Jelle De Loecker <jelle@
|
|
373
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
377
374
|
* @since 0.3.0
|
|
378
375
|
* @version 1.0.0
|
|
379
376
|
*/
|
|
@@ -383,7 +380,7 @@ Base.setStatic('is_abstract_class', true, false);
|
|
|
383
380
|
* Does this class start a new group of children?
|
|
384
381
|
* Like `is_abstract_class`, this does not get inherited.
|
|
385
382
|
*
|
|
386
|
-
* @author Jelle De Loecker <jelle@
|
|
383
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
387
384
|
* @since 0.3.0
|
|
388
385
|
* @version 1.0.0
|
|
389
386
|
*/
|
|
@@ -430,7 +427,7 @@ Base.setProperty(function conduit() {
|
|
|
430
427
|
/**
|
|
431
428
|
* Enable all inherited classes to get a class group
|
|
432
429
|
*
|
|
433
|
-
* @author Jelle De Loecker <jelle@
|
|
430
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
434
431
|
* @since 0.3.0
|
|
435
432
|
* @version 0.3.0
|
|
436
433
|
*/
|
|
@@ -441,11 +438,11 @@ Base.setMethod(function getClassGroup(name) {
|
|
|
441
438
|
/**
|
|
442
439
|
* Get path to this class
|
|
443
440
|
*
|
|
444
|
-
* @author Jelle De Loecker <jelle@
|
|
441
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
445
442
|
* @since 1.0.0
|
|
446
443
|
* @version 1.0.0
|
|
447
444
|
*
|
|
448
|
-
* @return {
|
|
445
|
+
* @return {string}
|
|
449
446
|
*/
|
|
450
447
|
Base.setMethod(function getClassPath() {
|
|
451
448
|
return this.constructor.getClassPath();
|
|
@@ -454,13 +451,13 @@ Base.setMethod(function getClassPath() {
|
|
|
454
451
|
/**
|
|
455
452
|
* Get path to this class
|
|
456
453
|
*
|
|
457
|
-
* @author Jelle De Loecker <jelle@
|
|
454
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
458
455
|
* @since 1.0.0
|
|
459
456
|
* @version 1.0.0
|
|
460
457
|
*
|
|
461
|
-
* @param {
|
|
458
|
+
* @param {string} after Only return the path after the given class
|
|
462
459
|
*
|
|
463
|
-
* @return {
|
|
460
|
+
* @return {string}
|
|
464
461
|
*/
|
|
465
462
|
Base.setMethod(function getClassPathAfter(after) {
|
|
466
463
|
return this.constructor.getClassPathAfter(after);
|
|
@@ -473,7 +470,7 @@ Base.setMethod(function getClassPathAfter(after) {
|
|
|
473
470
|
* @since 1.0.0
|
|
474
471
|
* @version 1.3.20
|
|
475
472
|
*
|
|
476
|
-
* @param {
|
|
473
|
+
* @param {string} name The name of the method to call
|
|
477
474
|
* @param {Array} args The arguments to pass
|
|
478
475
|
* @param {Function} next The callback to call afterwards
|
|
479
476
|
*/
|
|
@@ -552,7 +549,7 @@ Base.setStatic(function getClientClass() {
|
|
|
552
549
|
/**
|
|
553
550
|
* Attach a conduit to a certain instance
|
|
554
551
|
*
|
|
555
|
-
* @author Jelle De Loecker
|
|
552
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
556
553
|
* @since 0.3.0
|
|
557
554
|
* @version 0.3.0
|
|
558
555
|
*
|
|
@@ -565,29 +562,35 @@ Base.setMethod(function attachConduit(conduit) {
|
|
|
565
562
|
/**
|
|
566
563
|
* Get a model, attach a conduit if possible
|
|
567
564
|
*
|
|
568
|
-
* @author Jelle De Loecker
|
|
565
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
569
566
|
* @since 0.3.0
|
|
570
567
|
* @version 1.1.8
|
|
571
568
|
*
|
|
572
|
-
* @param
|
|
573
|
-
* @param
|
|
574
|
-
* @param
|
|
569
|
+
* @param {string} name The name of the model to get
|
|
570
|
+
* @param {boolean} init Initialize the class [true]
|
|
571
|
+
* @param {Object} options
|
|
575
572
|
*
|
|
576
|
-
* @return
|
|
573
|
+
* @return {Model}
|
|
577
574
|
*/
|
|
578
575
|
Base.setMethod(function getModel(name, init, options) {
|
|
579
576
|
|
|
580
|
-
var instance;
|
|
581
|
-
|
|
582
577
|
if (typeof init != 'boolean') {
|
|
583
578
|
options = init;
|
|
584
579
|
init = true;
|
|
585
580
|
}
|
|
586
581
|
|
|
582
|
+
let constructor = Model.get(name, false);
|
|
583
|
+
|
|
584
|
+
if (!constructor) {
|
|
585
|
+
throw new Error('Model "' + name + '" could not be found');
|
|
586
|
+
}
|
|
587
|
+
|
|
587
588
|
if (!init) {
|
|
588
|
-
return
|
|
589
|
+
return constructor;
|
|
589
590
|
}
|
|
590
591
|
|
|
592
|
+
let instance;
|
|
593
|
+
|
|
591
594
|
if (!options) {
|
|
592
595
|
options = {};
|
|
593
596
|
}
|
|
@@ -608,7 +611,7 @@ Base.setMethod(function getModel(name, init, options) {
|
|
|
608
611
|
return instance;
|
|
609
612
|
}
|
|
610
613
|
|
|
611
|
-
instance =
|
|
614
|
+
instance = new constructor(options);
|
|
612
615
|
|
|
613
616
|
if (conduit) {
|
|
614
617
|
instance.attachConduit(conduit);
|
|
@@ -628,11 +631,11 @@ Base.setMethod(function getModel(name, init, options) {
|
|
|
628
631
|
/**
|
|
629
632
|
* Create a debug entry
|
|
630
633
|
*
|
|
631
|
-
* @author Jelle De Loecker
|
|
634
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
632
635
|
* @since 0.3.0
|
|
633
636
|
* @version 0.3.0
|
|
634
637
|
*
|
|
635
|
-
* @param
|
|
638
|
+
* @param {number} verbosity
|
|
636
639
|
*/
|
|
637
640
|
Base.setMethod(function debug(verbosity) {
|
|
638
641
|
|
|
@@ -662,7 +665,7 @@ Base.setMethod(function debug(verbosity) {
|
|
|
662
665
|
}
|
|
663
666
|
|
|
664
667
|
// Do nothing if debugging is off and verbosity is too high
|
|
665
|
-
if (!alchemy.settings.debug && options.verbosity > log.ERROR) {
|
|
668
|
+
if (!alchemy.settings.debugging.debug && options.verbosity > log.ERROR) {
|
|
666
669
|
return;
|
|
667
670
|
}
|
|
668
671
|
|
|
@@ -719,7 +722,7 @@ Base.setMethod(function debug(verbosity) {
|
|
|
719
722
|
return item;
|
|
720
723
|
}
|
|
721
724
|
|
|
722
|
-
if (!duplicate && alchemy.settings.debug && options.data && options.data.args) {
|
|
725
|
+
if (!duplicate && alchemy.settings.debugging.debug && options.data && options.data.args) {
|
|
723
726
|
if (typeof options.level != 'number') {
|
|
724
727
|
options.level = 1;
|
|
725
728
|
}
|
|
@@ -733,11 +736,11 @@ Base.setMethod(function debug(verbosity) {
|
|
|
733
736
|
/**
|
|
734
737
|
* Create a debug mark
|
|
735
738
|
*
|
|
736
|
-
* @author Jelle De Loecker
|
|
739
|
+
* @author Jelle De Loecker <jelle@elevenways.be>
|
|
737
740
|
* @since 0.3.0
|
|
738
741
|
* @version 0.3.0
|
|
739
742
|
*
|
|
740
|
-
* @param
|
|
743
|
+
* @param {string} message
|
|
741
744
|
*/
|
|
742
745
|
Base.setMethod(function debugMark(message) {
|
|
743
746
|
if (this._debugObject) {
|
|
@@ -745,19 +748,4 @@ Base.setMethod(function debugMark(message) {
|
|
|
745
748
|
}
|
|
746
749
|
});
|
|
747
750
|
|
|
748
|
-
/**
|
|
749
|
-
* Add the getClassGroup method to the alchemy object
|
|
750
|
-
*
|
|
751
|
-
* @author Jelle De Loecker <jelle@develry.be>
|
|
752
|
-
* @since 0.3.0
|
|
753
|
-
* @version 0.3.0
|
|
754
|
-
*/
|
|
755
|
-
alchemy.getClassGroup = __Protoblast.getGroup;
|
|
756
|
-
|
|
757
751
|
// PROTOBLAST END CUT
|
|
758
|
-
|
|
759
|
-
// @TODO: put this somewhere else
|
|
760
|
-
if (Blast.isBrowser) {
|
|
761
|
-
window.Types = Blast.Types;
|
|
762
|
-
window.Classes = Blast.Classes;
|
|
763
|
-
}
|