mastercontroller 1.1.19 → 1.1.21
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/MasterAction.js +60 -63
- package/MasterActionFilters.js +2 -3
- package/MasterControl.js +7 -15
- package/MasterCors.js +2 -3
- package/MasterError.js +2 -2
- package/MasterHtml.js +41 -24
- package/MasterJWT.js +7 -6
- package/MasterRequest.js +4 -3
- package/MasterRouter.js +16 -5
- package/MasterSession.js +5 -4
- package/MasterSocket.js +2 -2
- package/MasterTemp.js +2 -2
- package/MasterTemplate.js +48 -40
- package/MasterTools.js +12 -6
- package/TemplateOverwrite.js +33 -0
- package/package.json +5 -5
package/MasterAction.js
CHANGED
|
@@ -1,42 +1,45 @@
|
|
|
1
1
|
|
|
2
|
-
// version
|
|
2
|
+
// version 0.0.21
|
|
3
3
|
|
|
4
4
|
var master = require('./MasterControl');
|
|
5
5
|
var fileserver = require('fs');
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
6
|
+
var toolClass = require('./MasterTools');
|
|
7
|
+
var tempClass = require('./MasterTemplate');
|
|
8
|
+
var temp = new tempClass();
|
|
9
|
+
var tools = new toolClass();
|
|
9
10
|
|
|
10
11
|
class MasterAction{
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
|
|
13
|
+
getView(location, data){
|
|
14
|
+
var actionUrl = master.root + location;
|
|
15
|
+
var actionView = fileserver.readFileSync(actionUrl, 'utf8');
|
|
16
|
+
return temp.htmlBuilder(actionView, data);
|
|
14
17
|
}
|
|
15
18
|
|
|
16
|
-
|
|
19
|
+
|
|
17
20
|
returnJson(data){
|
|
18
21
|
var json = JSON.stringify(data);
|
|
19
|
-
if (!
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
if (!this.__response._headerSent) {
|
|
23
|
+
this.__response.writeHead(200, {'Content-Type': 'application/json'});
|
|
24
|
+
this.__response.end(json);
|
|
22
25
|
}
|
|
23
26
|
}
|
|
24
27
|
|
|
25
28
|
// location starts from the view folder. Ex: partialViews/fileName.html
|
|
26
29
|
returnPartialView(location, data){
|
|
27
|
-
var actionUrl = master.
|
|
30
|
+
var actionUrl = master.root + location;
|
|
28
31
|
var getAction = fileserver.readFileSync(actionUrl, 'utf8');
|
|
29
|
-
if(
|
|
30
|
-
return
|
|
32
|
+
if(master.overwrite.isTemplate){
|
|
33
|
+
return master.overwrite.templateRender( data, "returnPartialView");
|
|
31
34
|
}
|
|
32
35
|
else{
|
|
33
|
-
return temp.htmlBuilder(getAction, data);
|
|
36
|
+
return temp.htmlBuilder(getAction, data);
|
|
34
37
|
}
|
|
35
38
|
}
|
|
36
39
|
|
|
37
40
|
redirectBack(fallback){
|
|
38
41
|
if(fallback === undefined){
|
|
39
|
-
var backUrl =
|
|
42
|
+
var backUrl = this.__requestObject.request.headers.referer === "" ? "/" : this.__requestObject.request.headers.referer
|
|
40
43
|
this.redirectTo(backUrl);
|
|
41
44
|
}
|
|
42
45
|
else{
|
|
@@ -68,87 +71,91 @@ class MasterAction{
|
|
|
68
71
|
|
|
69
72
|
var doneParsedUrl = objCounter >= 1 ? parseUrl + queryString : parseUrl; // /boards?james=dfdfd&rih=sdsd&
|
|
70
73
|
|
|
71
|
-
if (!
|
|
72
|
-
|
|
74
|
+
if (!this.__requestObject.response._headerSent) {
|
|
75
|
+
this.__requestObject.response.writeHead(302, {
|
|
73
76
|
'Location': doneParsedUrl
|
|
74
77
|
//add other headers here...
|
|
75
78
|
});
|
|
76
|
-
|
|
79
|
+
this.__requestObject.response.end();
|
|
77
80
|
}
|
|
78
81
|
|
|
79
82
|
}
|
|
80
83
|
|
|
81
84
|
|
|
82
85
|
// redirects to another action inside the same controller = does not reload the page
|
|
83
|
-
redirectToAction(namespace, action, type, data){
|
|
86
|
+
redirectToAction(namespace, action, type, data, components){
|
|
84
87
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
var requestObj = {
|
|
89
|
+
toController : namespace,
|
|
90
|
+
toAction : action,
|
|
91
|
+
type : type,
|
|
92
|
+
params : data
|
|
93
|
+
}
|
|
94
|
+
if(components){
|
|
95
|
+
var resp = this.__requestObject.response;
|
|
96
|
+
var req = this.__requestObject.request;
|
|
97
|
+
master.router.currentRoute = {root : `${master.root}/components/${namespace}`, toController : namespace, toAction : action, response : resp, request: req };
|
|
98
|
+
}else{
|
|
99
|
+
master.router.currentRoute = {root : `${master.root}/${namespace}`, toController : namespace, toAction : action, response : resp, request: req };
|
|
100
|
+
}
|
|
101
|
+
|
|
89
102
|
|
|
90
|
-
master.router._call(
|
|
103
|
+
master.router._call(requestObj);
|
|
91
104
|
}
|
|
92
105
|
|
|
93
106
|
// this will allow static pages without master view
|
|
94
107
|
returnViewWithoutMaster(location, data){
|
|
95
108
|
var masterView = null;
|
|
109
|
+
this.params = this.params === undefined ? {} : this.params;
|
|
96
110
|
this.params = tools.combineObjects(data, this.params);
|
|
97
111
|
var func = master.viewList;
|
|
98
112
|
this.params = tools.combineObjects(this.params, func);
|
|
99
|
-
var actionUrl = (location === undefined) ?
|
|
113
|
+
var actionUrl = (location === undefined) ? this.__currentRoute.root + "/app/views/" + this.__currentRoute.toController + "/" + this.__currentRoute.toAction + ".html" : master.root + location;
|
|
100
114
|
var actionView = fileserver.readFileSync(actionUrl, 'utf8');
|
|
101
|
-
if(
|
|
102
|
-
masterView =
|
|
115
|
+
if(master.overwrite.isTemplate){
|
|
116
|
+
masterView = master.overwrite.templateRender(data, "returnViewWithoutMaster");
|
|
103
117
|
}
|
|
104
118
|
else{
|
|
105
119
|
masterView = temp.htmlBuilder(actionView, data);
|
|
106
120
|
}
|
|
107
|
-
if (!
|
|
108
|
-
|
|
109
|
-
|
|
121
|
+
if (!this.__requestObject.response._headerSent) {
|
|
122
|
+
this.__requestObject.response.writeHead(200, {'Content-Type': 'text/html'});
|
|
123
|
+
this.__requestObject.response.end(masterView);
|
|
110
124
|
}
|
|
111
125
|
}
|
|
112
126
|
|
|
113
127
|
returnViewWithoutEngine(location){
|
|
114
|
-
var actionUrl = master.
|
|
128
|
+
var actionUrl = master.root + location;
|
|
115
129
|
var masterView = fileserver.readFileSync(actionUrl, 'utf8');
|
|
116
|
-
if (!
|
|
117
|
-
|
|
118
|
-
|
|
130
|
+
if (!this.__requestObject.response._headerSent) {
|
|
131
|
+
this.__requestObject.response.writeHead(200, {'Content-Type': 'text/html'});
|
|
132
|
+
this.__requestObject.response.end(masterView);
|
|
119
133
|
}
|
|
120
134
|
}
|
|
121
135
|
|
|
122
136
|
returnView(data, location){
|
|
123
|
-
|
|
137
|
+
|
|
124
138
|
var masterView = null;
|
|
125
139
|
data = data === undefined ? {} : data;
|
|
126
140
|
this.params = this.params === undefined ? {} : this.params;
|
|
127
141
|
this.params = tools.combineObjects(data, this.params);
|
|
128
142
|
var func = master.viewList;
|
|
129
143
|
this.params = tools.combineObjects(this.params, func);
|
|
130
|
-
var viewUrl = (location === undefined || location === "" || location === null) ?
|
|
144
|
+
var viewUrl = (location === undefined || location === "" || location === null) ? this.__currentRoute.root + "/app/views/" + this.__currentRoute.toController + "/" + this.__currentRoute.toAction + ".html" : master.root + location;
|
|
131
145
|
var viewFile = fileserver.readFileSync(viewUrl,'utf8');
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
else{
|
|
136
|
-
childView = temp.htmlBuilder(viewFile, this.params);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
this.params.yield = childView;
|
|
140
|
-
var masterFile = fileserver.readFileSync(master.router.currentRoute.root + "/app/views/layouts/master.html", 'utf8');
|
|
141
|
-
if(typeof(templateFunc) === "function"){
|
|
142
|
-
masterView = templateFunc(masterFile, this.params);
|
|
146
|
+
var masterFile = fileserver.readFileSync(this.__currentRoute.root + "/app/views/layouts/master.html", 'utf8');
|
|
147
|
+
if(master.overwrite.isTemplate){
|
|
148
|
+
masterView = master.overwrite.templateRender(this.params, "returnView");
|
|
143
149
|
}
|
|
144
150
|
else{
|
|
151
|
+
var childView = temp.htmlBuilder(viewFile, this.params);
|
|
152
|
+
this.params.yield = childView;
|
|
145
153
|
masterView = temp.htmlBuilder(masterFile, this.params);
|
|
146
154
|
}
|
|
147
155
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
master.router.currentRoute.response.end(masterView);
|
|
156
|
+
if (!this.__response._headerSent) {
|
|
157
|
+
this.__response.writeHead(200, {'Content-Type': 'text/html'});
|
|
158
|
+
this.__response.end(masterView);
|
|
152
159
|
}
|
|
153
160
|
|
|
154
161
|
}
|
|
@@ -161,14 +168,4 @@ class MasterAction{
|
|
|
161
168
|
|
|
162
169
|
}
|
|
163
170
|
|
|
164
|
-
|
|
165
|
-
// you dont instatiate application controller extention methods because it will get done on build
|
|
166
|
-
var masterAction = new MasterAction();
|
|
167
|
-
// give option to change the template engine. Skips default template engine and calls templateFunc function. Inside this function you can return your own parsed TEXT or HTML.
|
|
168
|
-
master.extend({action: {
|
|
169
|
-
init : masterAction.init,
|
|
170
|
-
close: masterAction.close,
|
|
171
|
-
templateFunc : templateFunc
|
|
172
|
-
} });
|
|
173
|
-
// you need to have access to functions inside the controller
|
|
174
|
-
master.extendController(masterAction);
|
|
171
|
+
master.extendController(MasterAction);
|
package/MasterActionFilters.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// version 1.
|
|
1
|
+
// version 1.6
|
|
2
2
|
var master = require('./MasterControl');
|
|
3
3
|
|
|
4
4
|
var _beforeActionFunc = {
|
|
@@ -89,5 +89,4 @@ class MasterActionFilters {
|
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
master.extendController(
|
|
93
|
-
//module.exports = MasterActionFilters;
|
|
92
|
+
master.extendController( MasterActionFilters);
|
package/MasterControl.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// MasterControl - by Alexander rich
|
|
2
|
-
// version 1.0.
|
|
2
|
+
// version 1.0.21
|
|
3
3
|
|
|
4
4
|
var url = require('url');
|
|
5
5
|
var fileserver = require('fs');
|
|
@@ -66,26 +66,18 @@ class MasterControl {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
// this extends master framework - adds your class to main master class object
|
|
69
|
-
extend(){
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
while (i--) {
|
|
73
|
-
|
|
74
|
-
for (var m in arguments[i]) {
|
|
75
|
-
this[m] = arguments[i][m];
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
return MasterControl;
|
|
69
|
+
extend(name, element){
|
|
70
|
+
this[name] = new element()
|
|
80
71
|
}
|
|
81
72
|
|
|
82
73
|
// extends class methods to be used inside of the view class using the THIS keyword
|
|
83
74
|
extendView( name, element){
|
|
75
|
+
element = new element();
|
|
84
76
|
var $that = this;
|
|
85
77
|
var propertyNames = Object.getOwnPropertyNames( element.__proto__);
|
|
86
78
|
this.viewList[name] = {};
|
|
87
79
|
for(var i in propertyNames){
|
|
88
|
-
if(propertyNames !== "constructor"){
|
|
80
|
+
if(propertyNames[i] !== "constructor"){
|
|
89
81
|
if (propertyNames.hasOwnProperty(i)) {
|
|
90
82
|
$that.viewList[name][propertyNames[i]] = element[propertyNames[i]];
|
|
91
83
|
}
|
|
@@ -95,11 +87,11 @@ class MasterControl {
|
|
|
95
87
|
|
|
96
88
|
// extends class methods to be used inside of the controller class using the THIS keyword
|
|
97
89
|
extendController(element){
|
|
98
|
-
|
|
90
|
+
element = new element();
|
|
99
91
|
var $that = this;
|
|
100
92
|
var propertyNames = Object.getOwnPropertyNames( element.__proto__);
|
|
101
93
|
for(var i in propertyNames){
|
|
102
|
-
if(propertyNames !== "constructor"){
|
|
94
|
+
if(propertyNames[i] !== "constructor"){
|
|
103
95
|
if (propertyNames.hasOwnProperty(i)) {
|
|
104
96
|
$that.controllerList[propertyNames[i]] = element[propertyNames[i]];
|
|
105
97
|
}
|
package/MasterCors.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
// version 1.1.
|
|
1
|
+
// version 1.1.10
|
|
2
2
|
var master = require('./MasterControl');
|
|
3
|
-
var tools = require('./MasterTools');
|
|
4
3
|
|
|
5
4
|
// todo - res.setHeader('Access-Control-Request-Method', '*');
|
|
6
5
|
class MasterCors{
|
|
@@ -144,4 +143,4 @@ class MasterCors{
|
|
|
144
143
|
}
|
|
145
144
|
}
|
|
146
145
|
|
|
147
|
-
master.extend(
|
|
146
|
+
master.extend("cors", MasterCors);
|
package/MasterError.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
// version 1.0.
|
|
2
|
+
// version 1.0.19
|
|
3
3
|
var master = require('./MasterControl');
|
|
4
4
|
var winston = require('winston');
|
|
5
5
|
var fileserver = require('fs');
|
|
@@ -113,7 +113,7 @@ class MasterError{
|
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
master.extend(
|
|
116
|
+
master.extend("error", MasterError);
|
|
117
117
|
|
|
118
118
|
// ================ CODES YOU CAN USE ================ //
|
|
119
119
|
// ACCEPTED 202 Accepted
|
package/MasterHtml.js
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
// version
|
|
1
|
+
// version 0.0.21
|
|
2
2
|
|
|
3
3
|
var master = require('./MasterControl');
|
|
4
|
-
var temp = require('./MasterTemplate');
|
|
5
4
|
var fs = require('fs');
|
|
6
|
-
var
|
|
5
|
+
var tempClass = require('./MasterTemplate');
|
|
6
|
+
var toolClass = require('./MasterTools');
|
|
7
|
+
var temp = new tempClass();
|
|
8
|
+
var tools = new toolClass();
|
|
7
9
|
|
|
8
10
|
class html {
|
|
9
11
|
|
|
10
12
|
javaScriptSerializer(name, obj){
|
|
11
|
-
return `<script
|
|
13
|
+
return `<script type="text/javascript">
|
|
12
14
|
${name} = ${JSON.stringify(obj)}
|
|
13
15
|
</script>`;
|
|
14
16
|
}
|
|
@@ -22,8 +24,8 @@ class html {
|
|
|
22
24
|
var filepartialView = fs.readFileSync(master.router.currentRoute.root + partialViewUrl, 'utf8');
|
|
23
25
|
|
|
24
26
|
var partialView = null;
|
|
25
|
-
if(
|
|
26
|
-
partialView = master.
|
|
27
|
+
if(master.overwrite.isTemplate){
|
|
28
|
+
partialView = master.overwrite.templateRender(params, "renderPartialView");
|
|
27
29
|
}
|
|
28
30
|
else{
|
|
29
31
|
partialView = temp.htmlBuilder(filepartialView, params);
|
|
@@ -34,33 +36,41 @@ class html {
|
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
// render all your link tags styles given the folder location
|
|
37
|
-
|
|
39
|
+
renderStyles(folderName, typeArray){
|
|
38
40
|
var styles = [];
|
|
39
41
|
var styleFolder = `/app/assets/stylesheets/`;
|
|
40
42
|
var rootLocation = master.router.currentRoute.root;
|
|
43
|
+
var extention = "";
|
|
44
|
+
|
|
41
45
|
if(master.router.currentRoute.isComponent === true){
|
|
42
|
-
|
|
43
|
-
styleFolder = `${rootLocation}${styleFolder}`;
|
|
46
|
+
extention = tools.getBackSlashBySection(master.router.currentRoute.root, 2, "/");
|
|
44
47
|
}
|
|
48
|
+
|
|
45
49
|
var type = typeArray === undefined ? ["css"] : typeArray;
|
|
46
50
|
|
|
47
51
|
if(folderName){
|
|
48
52
|
styleFolder = `${styleFolder}${folderName}/`;
|
|
49
53
|
}
|
|
50
|
-
|
|
51
|
-
|
|
54
|
+
|
|
55
|
+
if (fs.existsSync(`${rootLocation}${styleFolder}`)) {
|
|
56
|
+
fs.readdirSync(`${rootLocation}${styleFolder}`).forEach(function(file){
|
|
52
57
|
|
|
53
58
|
var fileExtension = file.replace(/^.*\./, '');
|
|
54
59
|
if(type.indexOf(fileExtension) >= 0){
|
|
55
|
-
var fileLocatoon = `${styleFolder}${file}
|
|
56
|
-
|
|
60
|
+
var fileLocatoon = `${styleFolder}${file}`;
|
|
61
|
+
if(master.router.currentRoute.isComponent === true){
|
|
62
|
+
styles.push(`<link rel="stylesheet" type="text/${type}" href="/${extention}${fileLocatoon}">`);
|
|
63
|
+
}
|
|
64
|
+
else{
|
|
65
|
+
styles.push(`<link rel="stylesheet" type="text/${type}" href="/${fileLocatoon}">`);
|
|
66
|
+
}
|
|
57
67
|
}
|
|
58
68
|
});
|
|
59
69
|
}
|
|
60
70
|
var partialView = null;
|
|
61
71
|
|
|
62
|
-
if(
|
|
63
|
-
partialView = master.
|
|
72
|
+
if(master.overwrite.isTemplate){
|
|
73
|
+
partialView = master.overwrite.templateRender({}, "renderStyles");
|
|
64
74
|
}
|
|
65
75
|
else{
|
|
66
76
|
partialView = temp.htmlBuilder(styles.join(""),{});
|
|
@@ -75,9 +85,10 @@ class html {
|
|
|
75
85
|
var scripts = [];
|
|
76
86
|
var jsFolder =`/app/assets/javascripts/`;
|
|
77
87
|
var rootLocation = master.router.currentRoute.root;
|
|
88
|
+
var extention = "";
|
|
89
|
+
//components/auth/app/assets/javascripts/pages/changePassword.js
|
|
78
90
|
if(master.router.currentRoute.isComponent === true){
|
|
79
|
-
|
|
80
|
-
jsFolder = `${rootLocation}${jsFolder}`;
|
|
91
|
+
extention = tools.getBackSlashBySection(master.router.currentRoute.root, 2, "/");
|
|
81
92
|
}
|
|
82
93
|
|
|
83
94
|
var type = typeArray === undefined ? ["js"] : typeArray;
|
|
@@ -86,20 +97,25 @@ class html {
|
|
|
86
97
|
jsFolder = `${jsFolder}${folderName}/`;
|
|
87
98
|
}
|
|
88
99
|
|
|
89
|
-
if (fs.existsSync(jsFolder)) {
|
|
90
|
-
fs.readdirSync(jsFolder).forEach(function(file){
|
|
100
|
+
if (fs.existsSync(`${rootLocation}${jsFolder}`)) {
|
|
101
|
+
fs.readdirSync(`${rootLocation}${jsFolder}`).forEach(function(file){
|
|
91
102
|
var fileExtension = file.replace(/^.*\./, '');
|
|
92
103
|
if(type.indexOf(fileExtension) >= 0){
|
|
93
|
-
var fileLocatoon = `${jsFolder}${file}
|
|
94
|
-
|
|
104
|
+
var fileLocatoon = `${jsFolder}${file}`;
|
|
105
|
+
if(master.router.currentRoute.isComponent === true){
|
|
106
|
+
scripts.push(`<script src="/${extention}${fileLocatoon}"></script>`);
|
|
107
|
+
}
|
|
108
|
+
else{
|
|
109
|
+
scripts.push(`<script src="${fileLocatoon}"></script>`);
|
|
110
|
+
}
|
|
95
111
|
}
|
|
96
112
|
});
|
|
97
113
|
}
|
|
98
114
|
|
|
99
115
|
var partialView = null;
|
|
100
116
|
|
|
101
|
-
if(
|
|
102
|
-
partialView = master.
|
|
117
|
+
if(master.overwrite.isTemplate){
|
|
118
|
+
partialView = master.overwrite.templateRender({}, "renderScripts");
|
|
103
119
|
}
|
|
104
120
|
else{
|
|
105
121
|
partialView = temp.htmlBuilder(scripts.join(""),{});
|
|
@@ -108,6 +124,7 @@ class html {
|
|
|
108
124
|
return partialView;
|
|
109
125
|
}
|
|
110
126
|
|
|
127
|
+
|
|
111
128
|
// renders js using location
|
|
112
129
|
renderJS(folderName, name){
|
|
113
130
|
if(folderName === undefined && name === undefined){
|
|
@@ -444,5 +461,5 @@ class html {
|
|
|
444
461
|
|
|
445
462
|
}
|
|
446
463
|
|
|
447
|
-
master.extendView("html",
|
|
464
|
+
master.extendView("html", html);
|
|
448
465
|
|
package/MasterJWT.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
|
|
2
|
-
// version
|
|
2
|
+
// version 0.0.17
|
|
3
3
|
|
|
4
|
-
var master = require('./MasterControl');
|
|
5
|
-
var crypto = require('crypto');
|
|
6
|
-
var
|
|
4
|
+
var master = require('./MasterControl');
|
|
5
|
+
var crypto = require('crypto');
|
|
6
|
+
var toolClass = require('./MasterTools');
|
|
7
|
+
var tools = new toolClass();
|
|
7
8
|
|
|
8
9
|
//https://www.youtube.com/watch?v=67mezK3NzpU&t=2492s
|
|
9
10
|
class MasterJWT{
|
|
10
|
-
|
|
11
|
+
|
|
11
12
|
init(TID){
|
|
12
13
|
this.alg = "sha256";
|
|
13
14
|
var $that = this;
|
|
@@ -108,4 +109,4 @@ class MasterJWT{
|
|
|
108
109
|
}
|
|
109
110
|
|
|
110
111
|
|
|
111
|
-
master.extend(
|
|
112
|
+
master.extend("jwt", MasterJWT);
|
package/MasterRequest.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
// version
|
|
2
|
+
// version 0.0.1
|
|
3
3
|
|
|
4
4
|
var master = require('./MasterControl');
|
|
5
5
|
var url = require('url');
|
|
@@ -54,7 +54,8 @@ class MasterRequest{
|
|
|
54
54
|
});
|
|
55
55
|
|
|
56
56
|
$that.form.on('file', function(field, file) {
|
|
57
|
-
file.extension = path.extname(file.name);
|
|
57
|
+
file.extension = file.name === undefined ? path.extname(file.originalFilename) : path.extname(file.name);
|
|
58
|
+
|
|
58
59
|
if(Array.isArray($that.parsedURL.formData.files[field])){
|
|
59
60
|
$that.parsedURL.formData.files[field].push(file);
|
|
60
61
|
}
|
|
@@ -170,4 +171,4 @@ class MasterRequest{
|
|
|
170
171
|
}
|
|
171
172
|
}
|
|
172
173
|
|
|
173
|
-
master.extend(
|
|
174
|
+
master.extend("request", MasterRequest);
|
package/MasterRouter.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
// version
|
|
1
|
+
// version 0.0.24
|
|
2
2
|
|
|
3
3
|
var master = require('./MasterControl');
|
|
4
|
-
var
|
|
4
|
+
var toolClass = require('./MasterTools');
|
|
5
5
|
const EventEmitter = require("events");
|
|
6
6
|
var currentRoute = {};
|
|
7
|
-
|
|
8
|
-
const { root } = require('./MasterControl');
|
|
7
|
+
var tools = new toolClass();
|
|
9
8
|
|
|
10
9
|
var normalizePaths = function(requestPath, routePath, requestParams){
|
|
11
10
|
var obj = {
|
|
@@ -203,6 +202,10 @@ class MasterRouter {
|
|
|
203
202
|
return currentRoute;
|
|
204
203
|
}
|
|
205
204
|
|
|
205
|
+
set currentRoute(data){
|
|
206
|
+
currentRoute = data;
|
|
207
|
+
}
|
|
208
|
+
|
|
206
209
|
_addMimeList(mimeObject){
|
|
207
210
|
var that = this;
|
|
208
211
|
if(mimeObject){
|
|
@@ -239,9 +242,16 @@ class MasterRouter {
|
|
|
239
242
|
var Control = require(`${currentRoute.root}/app/controllers/${tools.firstLetterlowercase(requestObject.toController)}Controller`);
|
|
240
243
|
if(Control === null){
|
|
241
244
|
Control = require(`${currentRoute.root}/app/controllers/${tools.firstLetterUppercase(requestObject.toController)}Controller`);
|
|
245
|
+
if(Control === null){
|
|
246
|
+
console.log(`Cannot find controller name - ${requestObject.toController}`);
|
|
247
|
+
}
|
|
242
248
|
}
|
|
243
249
|
tools.combineObjectPrototype(Control, master.controllerList);
|
|
244
250
|
Control.prototype.__namespace = Control.name;
|
|
251
|
+
Control.prototype.__requestObject = requestObject;
|
|
252
|
+
Control.prototype.__currentRoute = currentRoute;
|
|
253
|
+
Control.prototype.__response = requestObject.response;
|
|
254
|
+
Control.prototype.__request = requestObject.request;
|
|
245
255
|
var control = new Control(requestObject);
|
|
246
256
|
var _callEmit = new EventEmitter();
|
|
247
257
|
|
|
@@ -249,6 +259,7 @@ class MasterRouter {
|
|
|
249
259
|
control.next = function(){
|
|
250
260
|
control.__callAfterAction(control, requestObject);
|
|
251
261
|
}
|
|
262
|
+
//
|
|
252
263
|
control[requestObject.toAction](requestObject);
|
|
253
264
|
});
|
|
254
265
|
|
|
@@ -293,4 +304,4 @@ class MasterRouter {
|
|
|
293
304
|
|
|
294
305
|
}
|
|
295
306
|
|
|
296
|
-
master.extend(
|
|
307
|
+
master.extend("router", MasterRouter);
|
package/MasterSession.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
|
|
2
|
-
// version 0.0.
|
|
2
|
+
// version 0.0.19
|
|
3
3
|
|
|
4
4
|
var master = require('./MasterControl');
|
|
5
5
|
var cookie = require('cookie');
|
|
6
|
-
var
|
|
6
|
+
var toolClass = require('./MasterTools');
|
|
7
7
|
var crypto = require('crypto');
|
|
8
|
+
var tools = new toolClass();
|
|
8
9
|
|
|
9
10
|
class MasterSession{
|
|
10
|
-
|
|
11
|
+
|
|
11
12
|
sessions = {};
|
|
12
13
|
options = {
|
|
13
14
|
domain: undefined,
|
|
@@ -171,4 +172,4 @@ class MasterSession{
|
|
|
171
172
|
}
|
|
172
173
|
}
|
|
173
174
|
|
|
174
|
-
master.extend(
|
|
175
|
+
master.extend("sessions", MasterSession);
|
package/MasterSocket.js
CHANGED
package/MasterTemp.js
CHANGED
package/MasterTemplate.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// version 0.0.
|
|
1
|
+
// version 0.0.3
|
|
2
2
|
// https://github.com/WebReflection/backtick-template
|
|
3
3
|
// https://stackoverflow.com/questions/29182244/convert-a-string-to-a-template-string
|
|
4
4
|
var replace = ''.replace;
|
|
@@ -33,44 +33,52 @@ class MasterTemplate{
|
|
|
33
33
|
|
|
34
34
|
|
|
35
35
|
/*! (C) 2017-2018 Andrea Giammarchi - MIT Style License */
|
|
36
|
-
htmlBuilder( fn, $str, $object) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
36
|
+
htmlBuilder( fn, $str, $object) {
|
|
37
|
+
'use strict';
|
|
38
|
+
|
|
39
|
+
try{
|
|
40
|
+
// reset cache every 32M
|
|
41
|
+
if (33554432 < this.$) {
|
|
42
|
+
this._ = {};
|
|
43
|
+
this.$ = 0;
|
|
44
|
+
}
|
|
45
|
+
var
|
|
46
|
+
hasTransformer = typeof fn === 'function',
|
|
47
|
+
str = hasTransformer ? $str : fn,
|
|
48
|
+
object = hasTransformer ? $object : $str,
|
|
49
|
+
_ = this._,
|
|
50
|
+
known = _.hasOwnProperty(str),
|
|
51
|
+
parsed = known ? _[str] : (_[str] = this.parse(str)),
|
|
52
|
+
chunks = parsed.chunks,
|
|
53
|
+
values = parsed.values,
|
|
54
|
+
strings
|
|
55
|
+
;
|
|
56
|
+
// add str length only if not known
|
|
57
|
+
if (!known)
|
|
58
|
+
this.$ += str.length;
|
|
59
|
+
if (hasTransformer) {
|
|
60
|
+
str = 'function' + (Math.random() * 1e5 | 0);
|
|
61
|
+
strings = [
|
|
62
|
+
str,
|
|
63
|
+
'with(this)return ' + str + '([' + chunks + ']' + (
|
|
64
|
+
values.length ? (',' + values.join(',')) : ''
|
|
65
|
+
) + ')'
|
|
66
|
+
];
|
|
67
|
+
} else {
|
|
68
|
+
strings = chunks.slice(0, 1);
|
|
69
|
+
for (var i = 1, length = chunks.length; i < length; i++)
|
|
70
|
+
strings.push(values[i - 1], chunks[i]);
|
|
71
|
+
strings = ['with(this)return ' + strings.join('+')];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return Function.apply(null, strings).apply(
|
|
75
|
+
object,
|
|
76
|
+
hasTransformer ? [fn] : []
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
catch(err){
|
|
80
|
+
console.log("error", err);
|
|
81
|
+
}
|
|
74
82
|
}
|
|
75
83
|
|
|
76
84
|
parse(str) {
|
|
@@ -126,4 +134,4 @@ return {chunks: chunks, values: values};
|
|
|
126
134
|
}
|
|
127
135
|
}
|
|
128
136
|
|
|
129
|
-
module.exports =
|
|
137
|
+
module.exports = MasterTemplate;
|
package/MasterTools.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// version 0.0.
|
|
1
|
+
// version 0.0.2
|
|
2
2
|
var crypto = require('crypto');
|
|
3
3
|
|
|
4
4
|
class MasterTools{
|
|
@@ -161,10 +161,16 @@ class MasterTools{
|
|
|
161
161
|
};
|
|
162
162
|
|
|
163
163
|
combineObjects(obj, src) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
164
|
+
if(obj){
|
|
165
|
+
for(var i in src){
|
|
166
|
+
obj[i] = src[i];
|
|
167
|
+
};
|
|
168
|
+
return obj;
|
|
169
|
+
}
|
|
170
|
+
else{
|
|
171
|
+
return {}
|
|
172
|
+
}
|
|
173
|
+
|
|
168
174
|
};
|
|
169
175
|
|
|
170
176
|
makeWordId(length) {
|
|
@@ -199,4 +205,4 @@ class MasterTools{
|
|
|
199
205
|
|
|
200
206
|
}
|
|
201
207
|
|
|
202
|
-
module.exports =
|
|
208
|
+
module.exports = MasterTools;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// version 0.0.1
|
|
2
|
+
var master = require('mastercontroller');
|
|
3
|
+
|
|
4
|
+
class TemplateOverwrite{
|
|
5
|
+
|
|
6
|
+
#templateFunc;
|
|
7
|
+
#isTemplate = false;
|
|
8
|
+
|
|
9
|
+
get isTemplate(){
|
|
10
|
+
return this.#isTemplate;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
template(func){
|
|
14
|
+
this.#isTemplate = true;
|
|
15
|
+
this.#templateFunc = func === undefined ? null : func;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
templateRender(data, type){
|
|
19
|
+
if(this.#templateFunc){
|
|
20
|
+
return this.#templateFunc(data, type);
|
|
21
|
+
}
|
|
22
|
+
else{
|
|
23
|
+
console.log("cannot call template render when no function has been declared. ")
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
close(response, code, content, end){
|
|
28
|
+
response.writeHead(code, content.type);
|
|
29
|
+
response.end(end);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
master.extend("overwrite", TemplateOverwrite);
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"dependencies": {
|
|
3
|
-
"qs" : "^6.11.
|
|
4
|
-
"formidable": "^
|
|
3
|
+
"qs" : "^6.11.2",
|
|
4
|
+
"formidable": "^3.5.1",
|
|
5
5
|
"cookie": "^0.5.0",
|
|
6
|
-
"winston": "^3.
|
|
7
|
-
"glob" :"^
|
|
6
|
+
"winston": "^3.10.0",
|
|
7
|
+
"glob" :"^10.3.4"
|
|
8
8
|
},
|
|
9
9
|
"description": "A class library that makes using the Master Framework a breeze",
|
|
10
10
|
"homepage": "https://github.com/Tailor/MasterController#readme",
|
|
@@ -18,5 +18,5 @@
|
|
|
18
18
|
"scripts": {
|
|
19
19
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
20
20
|
},
|
|
21
|
-
"version": "1.1.
|
|
21
|
+
"version": "1.1.21"
|
|
22
22
|
}
|