jsgui3-server 0.0.75 → 0.0.79
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/examples/client-side-popup-menu-button.html +93 -93
- package/examples/controls/_html-server-color-palette.js +114 -114
- package/examples/controls/html-server-combo-box.js +104 -104
- package/examples/controls/html-server-list.js +98 -98
- package/examples/controls/html-server-popup-menu-button.js +114 -114
- package/examples/controls/html-server-start-stop-toggle-button.js +146 -146
- package/examples/controls/scs-arrow-button.js +36 -36
- package/examples/controls/scs-date-picker.js +157 -157
- package/examples/controls/scs-file-browser.js +82 -82
- package/examples/controls/scs-item.js +159 -159
- package/examples/controls/scs-month-arrow-selector.js +126 -126
- package/examples/controls/scs-month-view.js +95 -95
- package/examples/controls/scs-start-stop-toggle-button.js +40 -40
- package/examples/controls/scs-tree.js +49 -49
- package/examples/controls/scs-year-arrow-selector.js +127 -127
- package/examples/demos/date-picker.js +119 -119
- package/examples/demos/explain-encapsulation.js +9 -9
- package/examples/demos/resizing.js +35 -35
- package/examples/demos/server_time.js +6 -6
- package/examples/demos/square_box.js +324 -324
- package/examples/html-rendering.js +20 -20
- package/examples/html-server.js +102 -100
- package/fs2.js +1836 -1836
- package/module.js +21 -21
- package/old/single-control-server.js +418 -418
- package/package.json +44 -42
- package/publishing/function-publisher.js +202 -202
- package/publishing/notes.md +5 -5
- package/publishing/observable-publisher.js +118 -118
- package/publishing/resource-publisher.js +306 -306
- package/resources/data-resource.js +104 -104
- package/resources/fs-resource.js +148 -148
- package/resources/jsbuilder/Abstract_Single_Declaration.js +105 -0
- package/resources/jsbuilder/Abstract_Single_Declaration_Sequence.js +43 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Abstract_Node.js +62 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Abstract_Node_Group.js +42 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Group_Shared.js +62 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node.js +94 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_0-Core.js +228 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_1-Babel.js +338 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_10-Changing.js +40 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.1-Child.js +97 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.2-Parent.js +38 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.3-Ancestor.js +62 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.2-Inner.js +44 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.3-All.js +73 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.4-Sibling.js +93 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.5-Available_In_Scope.js +29 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.9-Signature.js +116 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3-Basics.js +160 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.0-Basics_First.js +179 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.1-Basics_Second.js +88 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.99-Basics_Last.js +92 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.1-Basics_Each.js +137 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.1.5-Basics_Count.js +74 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.2-Basics_Filter.js +40 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.3-Basics_Collect.js +86 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.4-Basics_Select.js +43 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.5-Basics_Find.js +41 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.6-Basics_Callmap.js +55 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_4.0-Index_Indexes.js +46 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_4.1-Index.js +344 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.0-Category.js +39 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.1-Category_Identifier.js +31 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.2-Category_Literal.js +29 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.3-Category_Expression.js +27 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.4-Category_Pattern.js +9 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.5-Category_Declaration.js +44 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.6-Category_Statement.js +22 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_6.0-Type.js +87 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_6.1-Type_Class_Declaration.js +9 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_6.2-Type_Variable_Declaration.js +28 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_6.3-Type_Variable_Declarator.js +29 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_7-Query.js +737 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_8-Features.js +65 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_9-Planning.js +32 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Arrangement.js +15 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Declared_Object.js +306 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature.js +78 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature_Declaration.js +249 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature_Declarator.js +139 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature.js +10 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature_Exported.js +101 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature_Exports.js +61 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Interpreted.js +180 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/_JSGUI_Root_Node_Interpreted.js +43 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/special_case_objectassign_to_object.js +12 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Group.js +35 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Operation.js +11 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Operation_On_Relationship.js +32 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Ordered_Relationship_Node_To_Group.js +38 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Ordinal.js +40 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Ordinal_Relationship.js +25 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Relationship_Node_To_Group.js +201 -0
- package/resources/jsbuilder/JS_AST/JS_AST_Relationship_Node_Within_Group_To_Node.js +44 -0
- package/resources/jsbuilder/JS_AST/_JS_AST_Node_3.8-Query_Features.js +77 -0
- package/resources/jsbuilder/JS_AST/query/all.js +0 -0
- package/resources/jsbuilder/JS_AST/query/enable_array_as_queryable.js +228 -0
- package/resources/jsbuilder/JS_AST/query/find_object_keys.js +405 -0
- package/resources/jsbuilder/JS_AST/query/node_queries.js +9 -0
- package/resources/jsbuilder/JS_AST/query/root_queries.js +0 -0
- package/resources/jsbuilder/JS_AST/query/root_query_identidy.js +12 -0
- package/resources/jsbuilder/JS_AST_Node_Extended/JSGUI_Singular_Declaration.js +86 -0
- package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Declaration.js +124 -0
- package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Extended.js +88 -0
- package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Extended_0-Core.js +11 -0
- package/resources/jsbuilder/JS_Builder.js +10 -36
- package/resources/jsbuilder/JS_File/Feature/JS_File_Declared_Object.js +32 -0
- package/resources/jsbuilder/JS_File/Feature/JS_File_Exported_Object_Info.js +26 -0
- package/resources/jsbuilder/JS_File/Feature/JS_File_Exports.js +79 -0
- package/resources/jsbuilder/JS_File/Feature/JS_File_Feature.js +18 -0
- package/resources/jsbuilder/JS_File/Feature/JS_File_Imported_Object_Info.js +26 -0
- package/resources/jsbuilder/JS_File/Feature/JS_File_Imports.js +9 -0
- package/resources/jsbuilder/JS_File/JS_File.js +12 -0
- package/resources/jsbuilder/JS_File/JS_File_0-Core.js +202 -0
- package/resources/jsbuilder/JS_File/JS_File_1-Early_Parse.js +175 -0
- package/resources/jsbuilder/JS_File/JS_File_2-Babel.js +81 -0
- package/resources/jsbuilder/JS_File/JS_File_3-JS_AST_Node.js +86 -0
- package/resources/jsbuilder/JS_File/JS_File_4-Query.js +414 -0
- package/resources/jsbuilder/JS_File/JS_File_4.1-Query_Features.js +415 -0
- package/resources/jsbuilder/JS_File/JS_File_5-Planning.js +59 -0
- package/resources/jsbuilder/JS_File/JS_File_6-Changing.js +24 -0
- package/resources/jsbuilder/JS_File/JS_File_Export_Reference.js +12 -0
- package/resources/jsbuilder/JS_File/JS_File_Import_Reference.js +24 -0
- package/resources/jsbuilder/JS_File/JS_File_Import_References.js +32 -0
- package/resources/jsbuilder/JS_File/JS_File_Processor.js +16 -0
- package/resources/jsbuilder/JS_File/JS_Files.js +16 -0
- package/resources/jsbuilder/Module.js +14 -0
- package/resources/jsbuilder/Platform.js +13 -53
- package/resources/jsbuilder/Platforms.js +69 -15
- package/resources/jsbuilder/Project.js +109 -0
- package/resources/jsbuilder/Reference.js +1 -1
- package/resources/jsbuilder/Reference_Sequence.js +16 -7
- package/resources/jsbuilder/Scope.js +30 -0
- package/resources/jsbuilder/Variable_Name_Provider.js +43 -0
- package/resources/jsbuilder/_JS_File.js +226 -0
- package/resources/jsbuilder/ast_query.js +21 -0
- package/resources/jsbuilder/babel/babel_consts.js +150 -0
- package/resources/jsbuilder/babel/babel_node_tools.js +542 -0
- package/resources/jsbuilder/babel/deep_iterate/deep_iterate_babel.js +604 -0
- package/resources/jsbuilder/build.js +16 -0
- package/resources/jsbuilder/platform_notes.md +66 -0
- package/resources/jsbuilder/test/test_ast_node.js +451 -0
- package/resources/jsbuilder/test/test_js_file.js +303 -11
- package/resources/jsbuilder/test/test_project.js +157 -0
- package/resources/local-server-info-resource.js +78 -78
- package/resources/process-js.js +537 -537
- package/resources/server-resource-pool.js +84 -84
- package/resources/website-css-resource.js +411 -411
- package/resources/website-javascript-resource.js +761 -751
- package/resources/website-resource.js +390 -390
- package/resources/website-static-html-resource.js +196 -196
- package/server.js +170 -170
- package/single-control-server.js +398 -398
- package/single-page-app.js +129 -129
- package/resources/jsbuilder/Declaration.js +0 -15
- package/resources/jsbuilder/Declaration_Sequence.js +0 -15
- package/resources/jsbuilder/JS_File.js +0 -77
package/server.js
CHANGED
|
@@ -1,171 +1,171 @@
|
|
|
1
|
-
//var sockjs = require('sockjs'), jsgui = require('jsgui3-html'),
|
|
2
|
-
const jsgui = require('jsgui3-html'),
|
|
3
|
-
os = require('os'),
|
|
4
|
-
http = require('http'),
|
|
5
|
-
https = require('https'),
|
|
6
|
-
Resource = jsgui.Resource,
|
|
7
|
-
Server_Resource_Pool = require('./resources/server-resource-pool'),
|
|
8
|
-
// routing-tree? make a generalised module?
|
|
9
|
-
Router = jsgui.Router,
|
|
10
|
-
Website_Resource = require('./resources/website-resource'),
|
|
11
|
-
Info = require('./resources/local-server-info-resource'),
|
|
12
|
-
Server_Page_Context = require('./page-context'), {Evented_Class, each, tof} = jsgui;
|
|
13
|
-
|
|
14
|
-
class JSGUI_Server extends Evented_Class {
|
|
15
|
-
constructor(spec = {website: true}, __type_name) {
|
|
16
|
-
// Default operations mode...
|
|
17
|
-
// Has its own website resource.
|
|
18
|
-
// All gets routed to that resource automatically.
|
|
19
|
-
//
|
|
20
|
-
|
|
21
|
-
let is_website = spec.website === true;
|
|
22
|
-
|
|
23
|
-
super();
|
|
24
|
-
this.__type_name = __type_name || 'server';
|
|
25
|
-
var resource_pool = this.resource_pool = new Server_Resource_Pool({
|
|
26
|
-
// Other things can be made available through the server resource pool.
|
|
27
|
-
'access': {
|
|
28
|
-
'full': ['server_admin']
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
//Object.defineProperty('')
|
|
32
|
-
// Maybe the server router should explicitly be a Resource?
|
|
33
|
-
// Or just treat Objects the same way as Data_Object (if possible) in Collection.
|
|
34
|
-
const server_router = this.server_router = new Router({
|
|
35
|
-
'name': 'Server Router',
|
|
36
|
-
'pool': resource_pool
|
|
37
|
-
});
|
|
38
|
-
resource_pool.add(server_router);
|
|
39
|
-
if (spec.https_options) {
|
|
40
|
-
this.https_options = spec.https_options;
|
|
41
|
-
}
|
|
42
|
-
if (spec.routes) {
|
|
43
|
-
each(spec.routes, (app_spec, route) => {
|
|
44
|
-
var app = this.app = new Website_Resource(app_spec);
|
|
45
|
-
resource_pool.add(app);
|
|
46
|
-
server_router.set_route(route, app, app.process);
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (is_website) {
|
|
51
|
-
const app = this.app = new Website_Resource({
|
|
52
|
-
name: 'Website'
|
|
53
|
-
});
|
|
54
|
-
console.log('app', app);
|
|
55
|
-
resource_pool.add(app);
|
|
56
|
-
server_router.set_route('/*', app, app.process);
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
get resource_names() {
|
|
61
|
-
//console.log('this.resource_pool', this.resource_pool);
|
|
62
|
-
return this.resource_pool.resource_names;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
'start'(port, callback, fnProcessRequest) {
|
|
66
|
-
//throw 'stop';
|
|
67
|
-
// The resource_pool is not just a Data_Value. need to fix some get or create new field value code.
|
|
68
|
-
//console.log('start');
|
|
69
|
-
const rp = this.resource_pool;
|
|
70
|
-
rp.start(err => {
|
|
71
|
-
if (err) {
|
|
72
|
-
throw err;
|
|
73
|
-
} else {
|
|
74
|
-
var lsi = rp.get_resource('Local Server Info');
|
|
75
|
-
var resource_names = rp.resource_names;
|
|
76
|
-
var js = rp.get_resource('Site JavaScript');
|
|
77
|
-
var css = rp.get_resource('Site CSS');
|
|
78
|
-
var images = rp.get_resource('Site Images');
|
|
79
|
-
var audio = rp.get_resource('Site Audio');
|
|
80
|
-
var login = rp.get_resource('Login HTML Resource');
|
|
81
|
-
var admin = rp.get_resource('Web Admin');
|
|
82
|
-
var sock_router = rp.get_resource('Server Sock Router');
|
|
83
|
-
var server_router = rp.get_resource('Server Router');
|
|
84
|
-
lsi.get('net', (err, net) => {
|
|
85
|
-
if (err) {
|
|
86
|
-
callback(err);
|
|
87
|
-
} else {
|
|
88
|
-
//console.log('net', net);
|
|
89
|
-
// Could host on local.
|
|
90
|
-
// Host on every ipv4 address for the moment.
|
|
91
|
-
var arr_ipv4_addresses = [];
|
|
92
|
-
each(net, (arr_addresses, name) => {
|
|
93
|
-
each(arr_addresses, (obj_address) => {
|
|
94
|
-
if (obj_address.family === 'IPv4') {
|
|
95
|
-
arr_ipv4_addresses.push(obj_address.address);
|
|
96
|
-
}
|
|
97
|
-
})
|
|
98
|
-
});
|
|
99
|
-
let num_to_start = arr_ipv4_addresses.length;
|
|
100
|
-
if (this.https_options) {
|
|
101
|
-
each(arr_ipv4_addresses, (ipv4_address) => {
|
|
102
|
-
var https_server = https.createServer(this.https_options, function (req, res) {
|
|
103
|
-
//console.log('process server request.url', req.url);
|
|
104
|
-
var server_routing_res = server_router.process(req, res);
|
|
105
|
-
//console.log('server_routing_res', server_routing_res);
|
|
106
|
-
});
|
|
107
|
-
https_server.timeout = 10800000;
|
|
108
|
-
https_server.listen(443, ipv4_address);
|
|
109
|
-
num_to_start--;
|
|
110
|
-
if (num_to_start === 0) {
|
|
111
|
-
callback(null, true);
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
} else {
|
|
115
|
-
each(arr_ipv4_addresses, (ipv4_address) => {
|
|
116
|
-
var http_server = http.createServer(function (req, res) {
|
|
117
|
-
var server_routing_res = server_router.process(req, res);
|
|
118
|
-
});
|
|
119
|
-
http_server.timeout = 10800000;
|
|
120
|
-
http_server.listen(port, ipv4_address);
|
|
121
|
-
console.log('* Server running at http://' + ipv4_address + ':' + port + '/');
|
|
122
|
-
num_to_start--;
|
|
123
|
-
console.log('num_to_start', num_to_start);
|
|
124
|
-
if (num_to_start === 0) {
|
|
125
|
-
callback(null, true);
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
//throw 'stop';
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
'process_request'(req, res) {
|
|
137
|
-
var url = req.url;
|
|
138
|
-
//console.log('*** server process_request url ' + url);
|
|
139
|
-
var s_url = url.split('/');
|
|
140
|
-
var a_path = [];
|
|
141
|
-
each(s_url, (v, i) => {
|
|
142
|
-
if (v.length > 0) {
|
|
143
|
-
a_path.push(v);
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
var router = this.get('router');
|
|
147
|
-
if (a_path.length > 0) {
|
|
148
|
-
var routing_res = router.process(req, res);
|
|
149
|
-
} else {
|
|
150
|
-
console.log('need to process short path');
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
'serve_document'(req, res, jsgui_html_document) {
|
|
154
|
-
var html = jsgui_html_document.all_html_render();
|
|
155
|
-
var mime_type = 'text/html';
|
|
156
|
-
//console.log('mime_type ' + mime_type);
|
|
157
|
-
res.writeHead(200, {
|
|
158
|
-
'Content-Type': mime_type
|
|
159
|
-
});
|
|
160
|
-
res.end(html, 'utf-8');
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
//console.log('!!2)jsgui', !!jsgui);
|
|
165
|
-
JSGUI_Server.HTML = require('jsgui3-html');
|
|
166
|
-
JSGUI_Server.Resource = Resource;
|
|
167
|
-
JSGUI_Server.Page_Context = Server_Page_Context;
|
|
168
|
-
JSGUI_Server.Server_Page_Context = Server_Page_Context;
|
|
169
|
-
JSGUI_Server.Website_Resource = Website_Resource;
|
|
170
|
-
|
|
1
|
+
//var sockjs = require('sockjs'), jsgui = require('jsgui3-html'),
|
|
2
|
+
const jsgui = require('jsgui3-html'),
|
|
3
|
+
//os = require('os'),
|
|
4
|
+
http = require('http'),
|
|
5
|
+
https = require('https'),
|
|
6
|
+
Resource = jsgui.Resource,
|
|
7
|
+
Server_Resource_Pool = require('./resources/server-resource-pool'),
|
|
8
|
+
// routing-tree? make a generalised module?
|
|
9
|
+
Router = jsgui.Router,
|
|
10
|
+
Website_Resource = require('./resources/website-resource'),
|
|
11
|
+
Info = require('./resources/local-server-info-resource'),
|
|
12
|
+
Server_Page_Context = require('./page-context'), {Evented_Class, each, tof} = jsgui;
|
|
13
|
+
|
|
14
|
+
class JSGUI_Server extends Evented_Class {
|
|
15
|
+
constructor(spec = {website: true}, __type_name) {
|
|
16
|
+
// Default operations mode...
|
|
17
|
+
// Has its own website resource.
|
|
18
|
+
// All gets routed to that resource automatically.
|
|
19
|
+
//
|
|
20
|
+
|
|
21
|
+
let is_website = spec.website === true;
|
|
22
|
+
|
|
23
|
+
super();
|
|
24
|
+
this.__type_name = __type_name || 'server';
|
|
25
|
+
var resource_pool = this.resource_pool = new Server_Resource_Pool({
|
|
26
|
+
// Other things can be made available through the server resource pool.
|
|
27
|
+
'access': {
|
|
28
|
+
'full': ['server_admin']
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
//Object.defineProperty('')
|
|
32
|
+
// Maybe the server router should explicitly be a Resource?
|
|
33
|
+
// Or just treat Objects the same way as Data_Object (if possible) in Collection.
|
|
34
|
+
const server_router = this.server_router = new Router({
|
|
35
|
+
'name': 'Server Router',
|
|
36
|
+
'pool': resource_pool
|
|
37
|
+
});
|
|
38
|
+
resource_pool.add(server_router);
|
|
39
|
+
if (spec.https_options) {
|
|
40
|
+
this.https_options = spec.https_options;
|
|
41
|
+
}
|
|
42
|
+
if (spec.routes) {
|
|
43
|
+
each(spec.routes, (app_spec, route) => {
|
|
44
|
+
var app = this.app = new Website_Resource(app_spec);
|
|
45
|
+
resource_pool.add(app);
|
|
46
|
+
server_router.set_route(route, app, app.process);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (is_website) {
|
|
51
|
+
const app = this.app = new Website_Resource({
|
|
52
|
+
name: 'Website'
|
|
53
|
+
});
|
|
54
|
+
console.log('app', app);
|
|
55
|
+
resource_pool.add(app);
|
|
56
|
+
server_router.set_route('/*', app, app.process);
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
get resource_names() {
|
|
61
|
+
//console.log('this.resource_pool', this.resource_pool);
|
|
62
|
+
return this.resource_pool.resource_names;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
'start'(port, callback, fnProcessRequest) {
|
|
66
|
+
//throw 'stop';
|
|
67
|
+
// The resource_pool is not just a Data_Value. need to fix some get or create new field value code.
|
|
68
|
+
//console.log('start');
|
|
69
|
+
const rp = this.resource_pool;
|
|
70
|
+
rp.start(err => {
|
|
71
|
+
if (err) {
|
|
72
|
+
throw err;
|
|
73
|
+
} else {
|
|
74
|
+
var lsi = rp.get_resource('Local Server Info');
|
|
75
|
+
var resource_names = rp.resource_names;
|
|
76
|
+
var js = rp.get_resource('Site JavaScript');
|
|
77
|
+
var css = rp.get_resource('Site CSS');
|
|
78
|
+
var images = rp.get_resource('Site Images');
|
|
79
|
+
var audio = rp.get_resource('Site Audio');
|
|
80
|
+
var login = rp.get_resource('Login HTML Resource');
|
|
81
|
+
var admin = rp.get_resource('Web Admin');
|
|
82
|
+
var sock_router = rp.get_resource('Server Sock Router');
|
|
83
|
+
var server_router = rp.get_resource('Server Router');
|
|
84
|
+
lsi.get('net', (err, net) => {
|
|
85
|
+
if (err) {
|
|
86
|
+
callback(err);
|
|
87
|
+
} else {
|
|
88
|
+
//console.log('net', net);
|
|
89
|
+
// Could host on local.
|
|
90
|
+
// Host on every ipv4 address for the moment.
|
|
91
|
+
var arr_ipv4_addresses = [];
|
|
92
|
+
each(net, (arr_addresses, name) => {
|
|
93
|
+
each(arr_addresses, (obj_address) => {
|
|
94
|
+
if (obj_address.family === 'IPv4') {
|
|
95
|
+
arr_ipv4_addresses.push(obj_address.address);
|
|
96
|
+
}
|
|
97
|
+
})
|
|
98
|
+
});
|
|
99
|
+
let num_to_start = arr_ipv4_addresses.length;
|
|
100
|
+
if (this.https_options) {
|
|
101
|
+
each(arr_ipv4_addresses, (ipv4_address) => {
|
|
102
|
+
var https_server = https.createServer(this.https_options, function (req, res) {
|
|
103
|
+
//console.log('process server request.url', req.url);
|
|
104
|
+
var server_routing_res = server_router.process(req, res);
|
|
105
|
+
//console.log('server_routing_res', server_routing_res);
|
|
106
|
+
});
|
|
107
|
+
https_server.timeout = 10800000;
|
|
108
|
+
https_server.listen(443, ipv4_address);
|
|
109
|
+
num_to_start--;
|
|
110
|
+
if (num_to_start === 0) {
|
|
111
|
+
callback(null, true);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
} else {
|
|
115
|
+
each(arr_ipv4_addresses, (ipv4_address) => {
|
|
116
|
+
var http_server = http.createServer(function (req, res) {
|
|
117
|
+
var server_routing_res = server_router.process(req, res);
|
|
118
|
+
});
|
|
119
|
+
http_server.timeout = 10800000;
|
|
120
|
+
http_server.listen(port, ipv4_address);
|
|
121
|
+
console.log('* Server running at http://' + ipv4_address + ':' + port + '/');
|
|
122
|
+
num_to_start--;
|
|
123
|
+
console.log('num_to_start', num_to_start);
|
|
124
|
+
if (num_to_start === 0) {
|
|
125
|
+
callback(null, true);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
//throw 'stop';
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
'process_request'(req, res) {
|
|
137
|
+
var url = req.url;
|
|
138
|
+
//console.log('*** server process_request url ' + url);
|
|
139
|
+
var s_url = url.split('/');
|
|
140
|
+
var a_path = [];
|
|
141
|
+
each(s_url, (v, i) => {
|
|
142
|
+
if (v.length > 0) {
|
|
143
|
+
a_path.push(v);
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
var router = this.get('router');
|
|
147
|
+
if (a_path.length > 0) {
|
|
148
|
+
var routing_res = router.process(req, res);
|
|
149
|
+
} else {
|
|
150
|
+
console.log('need to process short path');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
'serve_document'(req, res, jsgui_html_document) {
|
|
154
|
+
var html = jsgui_html_document.all_html_render();
|
|
155
|
+
var mime_type = 'text/html';
|
|
156
|
+
//console.log('mime_type ' + mime_type);
|
|
157
|
+
res.writeHead(200, {
|
|
158
|
+
'Content-Type': mime_type
|
|
159
|
+
});
|
|
160
|
+
res.end(html, 'utf-8');
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
//console.log('!!2)jsgui', !!jsgui);
|
|
165
|
+
JSGUI_Server.HTML = require('jsgui3-html');
|
|
166
|
+
JSGUI_Server.Resource = Resource;
|
|
167
|
+
JSGUI_Server.Page_Context = Server_Page_Context;
|
|
168
|
+
JSGUI_Server.Server_Page_Context = Server_Page_Context;
|
|
169
|
+
JSGUI_Server.Website_Resource = Website_Resource;
|
|
170
|
+
|
|
171
171
|
module.exports = JSGUI_Server;
|