Skip to content
This repository was archived by the owner on Feb 11, 2020. It is now read-only.

Commit f1cbfa2

Browse files
author
Dr. Safi
committed
Code cleanup.
1 parent 3e1b651 commit f1cbfa2

File tree

5 files changed

+34
-39
lines changed

5 files changed

+34
-39
lines changed

class/Application.class.js

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,34 @@
1+
const EventEmitter = require('events')
2+
import http from 'http'
13
import configuration from '../configuration/configuration.export.js' // Load configuration settings.
24
import Koa from 'koa' // Koa applicaiton server
35
import compose from 'koa-compose'
46
import rethinkdbConfig from '../configuration/rethinkdbConfig.js'
57
import _ from '../../../node_modules/underscore' // To affect changes of _ to the main app.
6-
const EventEmitter = require('events')
78
import { connect } from 'appscript/utilityFunction/middleware/commonDatabaseFunctionality.js'
8-
9-
import http from 'http'
9+
import { add, execute, applyMixin } from 'appscript/utilityFunction/decoratorUtility.js'
1010
import 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-
9989
const instance = new self();
10090
export { self as default, instance as instance }

module/reusableNestedUnit/Controller.class.js

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { mix } from 'mixwith'
21
import commonMethod from './commonMethod.mixin'
32
const EventEmitter = require('events')
43
import createInstance from 'appscript/module/createInstance.staticMethod'
54
import { usingGenericInstance as populateInstancePropertyFromJson, usingThis as populateInstancePropertyFromJson_this } from 'appscript/module/populateInstancePropertyFromJson.method'
65
import addStaticSubclassToClassArray from 'appscript/module/addStaticSubclassToClassArray.staticMethod'
76
import { classDecorator as prototypeChainDebug} from 'appscript/module/prototypeChainDebug'
87
import { MultiplePrototypeChain } from 'appscript/module/multiplePrototypeChain'
9-
import { add, execute } from 'appscript/utilityFunction/decoratorUtility.js'
8+
import { add, execute, applyMixin } from 'appscript/utilityFunction/decoratorUtility.js'
9+
import { mix } from 'mixwith'
1010

1111
/**
1212
* @class
@@ -29,14 +29,15 @@ export default ({
2929
populateInstancePropertyFromJson_this
3030
})
3131
@execute({ staticMethod: 'initializeStaticClass' })
32+
@applyMixin({ mixin })
3233
class ReusableController extends mix(Superclass).with(...mixinArray) {
3334

3435
static eventEmitter = new EventEmitter() // i.e. new EventEmitter()
3536
static extendedSubclass = {
3637
static: {}
3738
}
3839

39-
static initializeStaticClass() {
40+
static initializeStaticClass(self) {
4041
// Mutation observer on array for debugging purposes.
4142
// self.extendedSubclass.static = new Proxy(self.extendedSubclass.static, {
4243
// set: function(target, property, value, receiver) {
@@ -137,13 +138,6 @@ export default ({
137138

138139
}
139140

140-
// add controller methods for the specific module that uses them.
141-
let Controller
142-
if(mixin) {
143-
Controller = mixin({ Superclass: self}) // return Specific implementation Controller
144-
} else {
145-
Controller = self; // return Reusable nested unit
146-
}
147-
return Controller
141+
return self
148142
}
149143

module/reusableNestedUnit/NestedUnit.class.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export default ({ Superclass }) => {
66

77
static getDocumentQuery;
88

9-
static initializeStaticClass(getTableDocument) {
9+
static initializeStaticClass(self, getTableDocument) {
1010
super.initializeStaticClassControllerLevel()
1111
self.getDocumentQuery = getTableDocument
1212
}

module/reusableNestedUnit/Unit.class.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export default ({ Superclass }) => {
66

77
static getDocumentQuery;
88

9-
static initializeStaticClass(getTableDocument) {
9+
static initializeStaticClass(self, getTableDocument) {
1010
self.getDocumentQuery = getTableDocument
1111
super.initializeStaticClassControllerLevel()
1212
}

utilityFunction/decoratorUtility.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,20 @@ export function add({ to = 'static' }, method) {
1717
}
1818
}
1919

20-
export function execute({ staticMethod, args = [] }) {
20+
export function execute({ staticMethod, self = true, args = [] }) {
2121
return Class => {
22+
if(self) args.unshift(Class) // add to beginning
2223
Class[staticMethod](...args)
2324
return Class
2425
}
2526
}
27+
28+
export function applyMixin({ mixin = null }) {
29+
return Class => {
30+
// add controller methods for the specific module that uses them.
31+
Class = (mixin) ?
32+
mixin({ Superclass: Class }) /* return Specific implementation Controller */ :
33+
Class /* return Reusable nested unit */;
34+
return Class
35+
}
36+
}

0 commit comments

Comments
 (0)