1+ const EventEmitter = require ( 'events' )
2+ import http from 'http'
13import configuration from '../configuration/configuration.export.js' // Load configuration settings.
24import Koa from 'koa' // Koa applicaiton server
35import compose from 'koa-compose'
46import rethinkdbConfig from '../configuration/rethinkdbConfig.js'
57import _ from '../../../node_modules/underscore' // To affect changes of _ to the main app.
6- const EventEmitter = require ( 'events' )
78import { connect } from 'appscript/utilityFunction/middleware/commonDatabaseFunctionality.js'
8-
9- import http from 'http'
9+ import { add , execute , applyMixin } from 'appscript/utilityFunction/decoratorUtility.js'
1010import addStaticSubclassToClassArray from 'appscript/module/addStaticSubclassToClassArray.staticMethod'
1111
12- const self = class Application extends EventEmitter {
12+ const self =
13+ @add ( { to : 'static' } , {
14+ addStaticSubclassToClassArray
15+ } )
16+ class Application extends EventEmitter {
1317
1418 static eventEmitter = ( new EventEmitter ( ) ) . setMaxListeners ( 200 ) // increase maximum eventliseners (default = 10) // i.e. new EventEmitter()
1519 static rethinkdbConnection = { }
1620 static config = configuration // Array
1721 static frontend ;
1822 static extendedSubclass = {
19- instance : [ ] ,
2023 static : [ ]
2124 }
22- static subclassPath = {
23- asInstance : [
24- 'class/StaticContent.class.js' ,
25- 'class/Api.class.js' ,
26- 'class/Test.class.js' ,
27- ] ,
28- // asStatic: [
29- // // 'class/ConditionTree.class.js',
30- // // 'class/Condition.class.js',
31- // ]
32- }
3325
3426 constructor ( skipConstructor = false ) {
3527 super ( ) ;
3628 if ( skipConstructor ) return ;
3729 }
3830
39- static async initialize ( staticSubclass ) { // One-time initialization of Applicaiton Class.
31+ static async initialize ( /* staticSubclass*/ ) { // One-time initialization of Applicaiton Class.
4032 console . info ( `☕%c Running Application as ${ self . config . DEPLOYMENT } - '${ self . config . PROTOCOL } ${ self . config . HOST } '` , self . config . style . green )
4133 self . rethinkdbConnection = await connect ( )
4234 _ . templateSettings = { // initial underscore template settings on first import gets applied on the rest.
@@ -49,12 +41,12 @@ const self = class Application extends EventEmitter {
4941 }
5042
5143// Used by extended subclasses:
52- static addStaticClassToSubclassArray ( { keyName = null , subclass } ) {
53- if ( keyName ) {
54- self . eventEmitter . on ( 'initializationEnd' , ( ) => {
55- self . extendedSubclass . static [ keyName ] = subclass
56- } )
57- }
44+ // Add subclasses to list
45+ static addSubclass ( { keyName , Subclass = this } = { } ) {
46+ if ( ! keyName ) keyName = Subclass . name
47+ self . eventEmitter . on ( 'initializationEnd' , ( ) => {
48+ self . extendedSubclass . static [ keyName ] = Subclass
49+ } )
5850 }
5951
6052 static initializeStaticClass ( ) { // used for extended subclasses
@@ -94,7 +86,5 @@ const self = class Application extends EventEmitter {
9486
9587}
9688
97- self . addStaticSubclassToClassArray = addStaticSubclassToClassArray
98-
9989const instance = new self ( ) ;
10090export { self as default , instance as instance }
0 commit comments