jsgui3-server 0.0.73 → 0.0.77
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 +100 -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 +11 -0
- 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 +14 -0
- package/resources/jsbuilder/Platforms.js +70 -0
- package/resources/jsbuilder/Project.js +109 -0
- package/resources/jsbuilder/Reference.js +1 -0
- package/resources/jsbuilder/Reference_Sequence.js +16 -0
- 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 +304 -0
- 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 -1347
- package/resources/website-resource.js +390 -797
- 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
|
@@ -1,196 +1,196 @@
|
|
|
1
|
-
var path = require('path'), fs = require('fs'),
|
|
2
|
-
url = require('url'), jsgui = require('jsgui3-html'), os = require('os'), http = require('http'), libUrl = require('url'),
|
|
3
|
-
Resource = jsgui.Resource,
|
|
4
|
-
Cookies = require('cookies'), fs2 = require('../fs2');
|
|
5
|
-
|
|
6
|
-
var stringify = jsgui.stringify, each = jsgui.each, arrayify = jsgui.arrayify, tof = jsgui.tof;
|
|
7
|
-
var filter_map_by_regex = jsgui.filter_map_by_regex;
|
|
8
|
-
var Class = jsgui.Class, Data_Object = jsgui.Data_Object, Enhanced_Data_Object = jsgui.Enhanced_Data_Object;
|
|
9
|
-
var fp = jsgui.fp, is_defined = jsgui.is_defined;
|
|
10
|
-
var Collection = jsgui.Collection;
|
|
11
|
-
|
|
12
|
-
// Extends AutoStart_Resource?
|
|
13
|
-
// May need to change around a fair few references to make it workable.
|
|
14
|
-
// May need some more complicated logic to change it to the path for service.
|
|
15
|
-
|
|
16
|
-
var serve_html_file_from_disk = function(filePath, response) {
|
|
17
|
-
fs2.load_file_as_string(filePath, function (err, data) {
|
|
18
|
-
if (err) {
|
|
19
|
-
throw err;
|
|
20
|
-
} else {
|
|
21
|
-
//var servableJs = updateReferencesForServing(data);
|
|
22
|
-
response.writeHead(200, {'Content-Type': 'text/html'});
|
|
23
|
-
response.end(data);
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// File_Server_Resource?
|
|
29
|
-
// So the resource has code to route to the file and then serve it.
|
|
30
|
-
|
|
31
|
-
class Site_Static_HTML extends Resource {
|
|
32
|
-
|
|
33
|
-
constructor(spec) {
|
|
34
|
-
super(spec);
|
|
35
|
-
|
|
36
|
-
this.meta.set('custom_paths', new Data_Object({}));
|
|
37
|
-
// Those are custom file paths.
|
|
38
|
-
|
|
39
|
-
// could have a collection of directories, indexed by name, that get served.
|
|
40
|
-
|
|
41
|
-
// Index the collection by string value?
|
|
42
|
-
this.meta.set('served_directories', new Collection({'index_by': 'name'}));
|
|
43
|
-
}
|
|
44
|
-
'start'(callback) {
|
|
45
|
-
callback(null, true);
|
|
46
|
-
}
|
|
47
|
-
'set_custom_path'(url, file_path) {
|
|
48
|
-
// But change the URL to have a smiley face instead of fullstops
|
|
49
|
-
//console.log('url', url);
|
|
50
|
-
var escaped_url = url.replace(/\./g, '☺');
|
|
51
|
-
//console.log('escaped_url', escaped_url);
|
|
52
|
-
|
|
53
|
-
//this.meta.set('custom_paths.' + escaped_url, file_path);
|
|
54
|
-
var custom_paths = this.meta.get('custom_paths');
|
|
55
|
-
//console.log('custom_paths', custom_paths);
|
|
56
|
-
custom_paths.set(escaped_url, file_path);
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
'serve_directory'(path) {
|
|
60
|
-
// Serves that directory, as any files given in that directory can be served from /js
|
|
61
|
-
var served_directories = this.meta.get('served_directories');
|
|
62
|
-
//console.log('served_directories ' + stringify(served_directories));
|
|
63
|
-
//served_directories.push(path);
|
|
64
|
-
served_directories.push({
|
|
65
|
-
'name': path
|
|
66
|
-
});
|
|
67
|
-
//console.log('served_directories ' + stringify(served_directories));
|
|
68
|
-
//console.log('path ' + path);
|
|
69
|
-
|
|
70
|
-
//throw 'stop';
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
'process'(req, res) {
|
|
74
|
-
//console.log('Site_Static_HTML processing');
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
var remoteAddress = req.connection.remoteAddress;
|
|
80
|
-
|
|
81
|
-
var custom_paths = this.custom_paths;
|
|
82
|
-
|
|
83
|
-
var rurl = req.url;
|
|
84
|
-
|
|
85
|
-
var pool = this.pool;
|
|
86
|
-
// should have a bunch of resources from the pool.
|
|
87
|
-
|
|
88
|
-
//var pool_resources = pool.resources();
|
|
89
|
-
//console.log('pool_resources ' + stringify(pool_resources));
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
var url_parts = url.parse(req.url, true);
|
|
93
|
-
//console.log('url_parts ' + stringify(url_parts));
|
|
94
|
-
var splitPath = url_parts.path.substr(1).split('/');
|
|
95
|
-
//console.log('resource site css splitPath ' + stringify(splitPath));
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
if (rurl.substr(0, 1) == '/') rurl = rurl.substr(1);
|
|
99
|
-
rurl = rurl.replace(/\./g, '☺');
|
|
100
|
-
//console.log('rurl ' + rurl);
|
|
101
|
-
|
|
102
|
-
if (rurl == '') rurl = '/';
|
|
103
|
-
|
|
104
|
-
var custom_response_entry = custom_paths.get(rurl);
|
|
105
|
-
|
|
106
|
-
//console.log('Static HTML Resource process url', req.url);
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
//console.log('custom_response_entry ' + stringify(custom_response_entry));
|
|
112
|
-
|
|
113
|
-
if (custom_response_entry) {
|
|
114
|
-
var tcr = tof(custom_response_entry);
|
|
115
|
-
//console.log('tcr ' + tcr);
|
|
116
|
-
|
|
117
|
-
if (tcr == 'data_value') {
|
|
118
|
-
var val = custom_response_entry.value();
|
|
119
|
-
//console.log('val ' + val);
|
|
120
|
-
var tval = tof(val);
|
|
121
|
-
if (tval === 'string') {
|
|
122
|
-
// then it should be a local file path, serve it.
|
|
123
|
-
serve_html_file_from_disk(val, res);
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
//throw 'stop';
|
|
127
|
-
} else {
|
|
128
|
-
//console.log('splitPath', splitPath);
|
|
129
|
-
//console.log('splitPath.length', splitPath.length);
|
|
130
|
-
|
|
131
|
-
if (splitPath.length > 0) {
|
|
132
|
-
|
|
133
|
-
// Can check for /js folder.
|
|
134
|
-
// There will be some fixed resources for the site.
|
|
135
|
-
// They will be served by Resource objects.
|
|
136
|
-
// There may be some overlap of resources, with there being some very fixed purpose
|
|
137
|
-
// specific resources that could duplicate some features of the more general ones.
|
|
138
|
-
// Eventually, some of the code from the more specific resources will be
|
|
139
|
-
// replacable with code from the more general ones.
|
|
140
|
-
|
|
141
|
-
// Site_JavaScript resource
|
|
142
|
-
// Will serve JavaScript files needed for the site.
|
|
143
|
-
// Could become more advanced at some points, serving particular builds.
|
|
144
|
-
|
|
145
|
-
if (splitPath.length == 1) {
|
|
146
|
-
if (splitPath[0] == '') {
|
|
147
|
-
// Serve the default page.
|
|
148
|
-
// serve index.html
|
|
149
|
-
//serve_html_file_from_disk('./index.html', res);
|
|
150
|
-
serve_html_file_from_disk('index.html', res);
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
}
|
|
156
|
-
} else {
|
|
157
|
-
if (splitPath[0] == 'html') {
|
|
158
|
-
//var sjs = pool.get_resource('Site JavaScript');
|
|
159
|
-
//console.log('sjs ' + sjs);
|
|
160
|
-
|
|
161
|
-
//throw 'stop';
|
|
162
|
-
|
|
163
|
-
// determine the name of the file to serve, serve that file
|
|
164
|
-
// Could use some more general kind of file server.
|
|
165
|
-
|
|
166
|
-
if (splitPath.length > 1) {
|
|
167
|
-
if (splitPath.length == 2) {
|
|
168
|
-
var fileName = splitPath[1];
|
|
169
|
-
//console.log('url_parts.path ' + url_parts.path);
|
|
170
|
-
var filePath = url_parts.path.substr(1);
|
|
171
|
-
//console.log('module.uri ' + module.uri);
|
|
172
|
-
|
|
173
|
-
// No, need the current module's relative path....
|
|
174
|
-
|
|
175
|
-
//var val2 = path.dirname(module.uri);
|
|
176
|
-
//console.log('val2 ' + val2);
|
|
177
|
-
//throw '9) stop';
|
|
178
|
-
|
|
179
|
-
//var diskPath = val2 + '/../css/' + fileName;
|
|
180
|
-
var diskPath = '../../ws/css/' + fileName;
|
|
181
|
-
|
|
182
|
-
serve_html_file_from_disk(diskPath, res);
|
|
183
|
-
} else {
|
|
184
|
-
if (splitPath.length == 3) {
|
|
185
|
-
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
module.exports = Site_Static_HTML;
|
|
1
|
+
var path = require('path'), fs = require('fs'),
|
|
2
|
+
url = require('url'), jsgui = require('jsgui3-html'), os = require('os'), http = require('http'), libUrl = require('url'),
|
|
3
|
+
Resource = jsgui.Resource,
|
|
4
|
+
Cookies = require('cookies'), fs2 = require('../fs2');
|
|
5
|
+
|
|
6
|
+
var stringify = jsgui.stringify, each = jsgui.each, arrayify = jsgui.arrayify, tof = jsgui.tof;
|
|
7
|
+
var filter_map_by_regex = jsgui.filter_map_by_regex;
|
|
8
|
+
var Class = jsgui.Class, Data_Object = jsgui.Data_Object, Enhanced_Data_Object = jsgui.Enhanced_Data_Object;
|
|
9
|
+
var fp = jsgui.fp, is_defined = jsgui.is_defined;
|
|
10
|
+
var Collection = jsgui.Collection;
|
|
11
|
+
|
|
12
|
+
// Extends AutoStart_Resource?
|
|
13
|
+
// May need to change around a fair few references to make it workable.
|
|
14
|
+
// May need some more complicated logic to change it to the path for service.
|
|
15
|
+
|
|
16
|
+
var serve_html_file_from_disk = function(filePath, response) {
|
|
17
|
+
fs2.load_file_as_string(filePath, function (err, data) {
|
|
18
|
+
if (err) {
|
|
19
|
+
throw err;
|
|
20
|
+
} else {
|
|
21
|
+
//var servableJs = updateReferencesForServing(data);
|
|
22
|
+
response.writeHead(200, {'Content-Type': 'text/html'});
|
|
23
|
+
response.end(data);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// File_Server_Resource?
|
|
29
|
+
// So the resource has code to route to the file and then serve it.
|
|
30
|
+
|
|
31
|
+
class Site_Static_HTML extends Resource {
|
|
32
|
+
|
|
33
|
+
constructor(spec) {
|
|
34
|
+
super(spec);
|
|
35
|
+
|
|
36
|
+
this.meta.set('custom_paths', new Data_Object({}));
|
|
37
|
+
// Those are custom file paths.
|
|
38
|
+
|
|
39
|
+
// could have a collection of directories, indexed by name, that get served.
|
|
40
|
+
|
|
41
|
+
// Index the collection by string value?
|
|
42
|
+
this.meta.set('served_directories', new Collection({'index_by': 'name'}));
|
|
43
|
+
}
|
|
44
|
+
'start'(callback) {
|
|
45
|
+
callback(null, true);
|
|
46
|
+
}
|
|
47
|
+
'set_custom_path'(url, file_path) {
|
|
48
|
+
// But change the URL to have a smiley face instead of fullstops
|
|
49
|
+
//console.log('url', url);
|
|
50
|
+
var escaped_url = url.replace(/\./g, '☺');
|
|
51
|
+
//console.log('escaped_url', escaped_url);
|
|
52
|
+
|
|
53
|
+
//this.meta.set('custom_paths.' + escaped_url, file_path);
|
|
54
|
+
var custom_paths = this.meta.get('custom_paths');
|
|
55
|
+
//console.log('custom_paths', custom_paths);
|
|
56
|
+
custom_paths.set(escaped_url, file_path);
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
'serve_directory'(path) {
|
|
60
|
+
// Serves that directory, as any files given in that directory can be served from /js
|
|
61
|
+
var served_directories = this.meta.get('served_directories');
|
|
62
|
+
//console.log('served_directories ' + stringify(served_directories));
|
|
63
|
+
//served_directories.push(path);
|
|
64
|
+
served_directories.push({
|
|
65
|
+
'name': path
|
|
66
|
+
});
|
|
67
|
+
//console.log('served_directories ' + stringify(served_directories));
|
|
68
|
+
//console.log('path ' + path);
|
|
69
|
+
|
|
70
|
+
//throw 'stop';
|
|
71
|
+
|
|
72
|
+
}
|
|
73
|
+
'process'(req, res) {
|
|
74
|
+
//console.log('Site_Static_HTML processing');
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
var remoteAddress = req.connection.remoteAddress;
|
|
80
|
+
|
|
81
|
+
var custom_paths = this.custom_paths;
|
|
82
|
+
|
|
83
|
+
var rurl = req.url;
|
|
84
|
+
|
|
85
|
+
var pool = this.pool;
|
|
86
|
+
// should have a bunch of resources from the pool.
|
|
87
|
+
|
|
88
|
+
//var pool_resources = pool.resources();
|
|
89
|
+
//console.log('pool_resources ' + stringify(pool_resources));
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
var url_parts = url.parse(req.url, true);
|
|
93
|
+
//console.log('url_parts ' + stringify(url_parts));
|
|
94
|
+
var splitPath = url_parts.path.substr(1).split('/');
|
|
95
|
+
//console.log('resource site css splitPath ' + stringify(splitPath));
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
if (rurl.substr(0, 1) == '/') rurl = rurl.substr(1);
|
|
99
|
+
rurl = rurl.replace(/\./g, '☺');
|
|
100
|
+
//console.log('rurl ' + rurl);
|
|
101
|
+
|
|
102
|
+
if (rurl == '') rurl = '/';
|
|
103
|
+
|
|
104
|
+
var custom_response_entry = custom_paths.get(rurl);
|
|
105
|
+
|
|
106
|
+
//console.log('Static HTML Resource process url', req.url);
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
//console.log('custom_response_entry ' + stringify(custom_response_entry));
|
|
112
|
+
|
|
113
|
+
if (custom_response_entry) {
|
|
114
|
+
var tcr = tof(custom_response_entry);
|
|
115
|
+
//console.log('tcr ' + tcr);
|
|
116
|
+
|
|
117
|
+
if (tcr == 'data_value') {
|
|
118
|
+
var val = custom_response_entry.value();
|
|
119
|
+
//console.log('val ' + val);
|
|
120
|
+
var tval = tof(val);
|
|
121
|
+
if (tval === 'string') {
|
|
122
|
+
// then it should be a local file path, serve it.
|
|
123
|
+
serve_html_file_from_disk(val, res);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
//throw 'stop';
|
|
127
|
+
} else {
|
|
128
|
+
//console.log('splitPath', splitPath);
|
|
129
|
+
//console.log('splitPath.length', splitPath.length);
|
|
130
|
+
|
|
131
|
+
if (splitPath.length > 0) {
|
|
132
|
+
|
|
133
|
+
// Can check for /js folder.
|
|
134
|
+
// There will be some fixed resources for the site.
|
|
135
|
+
// They will be served by Resource objects.
|
|
136
|
+
// There may be some overlap of resources, with there being some very fixed purpose
|
|
137
|
+
// specific resources that could duplicate some features of the more general ones.
|
|
138
|
+
// Eventually, some of the code from the more specific resources will be
|
|
139
|
+
// replacable with code from the more general ones.
|
|
140
|
+
|
|
141
|
+
// Site_JavaScript resource
|
|
142
|
+
// Will serve JavaScript files needed for the site.
|
|
143
|
+
// Could become more advanced at some points, serving particular builds.
|
|
144
|
+
|
|
145
|
+
if (splitPath.length == 1) {
|
|
146
|
+
if (splitPath[0] == '') {
|
|
147
|
+
// Serve the default page.
|
|
148
|
+
// serve index.html
|
|
149
|
+
//serve_html_file_from_disk('./index.html', res);
|
|
150
|
+
serve_html_file_from_disk('index.html', res);
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
}
|
|
156
|
+
} else {
|
|
157
|
+
if (splitPath[0] == 'html') {
|
|
158
|
+
//var sjs = pool.get_resource('Site JavaScript');
|
|
159
|
+
//console.log('sjs ' + sjs);
|
|
160
|
+
|
|
161
|
+
//throw 'stop';
|
|
162
|
+
|
|
163
|
+
// determine the name of the file to serve, serve that file
|
|
164
|
+
// Could use some more general kind of file server.
|
|
165
|
+
|
|
166
|
+
if (splitPath.length > 1) {
|
|
167
|
+
if (splitPath.length == 2) {
|
|
168
|
+
var fileName = splitPath[1];
|
|
169
|
+
//console.log('url_parts.path ' + url_parts.path);
|
|
170
|
+
var filePath = url_parts.path.substr(1);
|
|
171
|
+
//console.log('module.uri ' + module.uri);
|
|
172
|
+
|
|
173
|
+
// No, need the current module's relative path....
|
|
174
|
+
|
|
175
|
+
//var val2 = path.dirname(module.uri);
|
|
176
|
+
//console.log('val2 ' + val2);
|
|
177
|
+
//throw '9) stop';
|
|
178
|
+
|
|
179
|
+
//var diskPath = val2 + '/../css/' + fileName;
|
|
180
|
+
var diskPath = '../../ws/css/' + fileName;
|
|
181
|
+
|
|
182
|
+
serve_html_file_from_disk(diskPath, res);
|
|
183
|
+
} else {
|
|
184
|
+
if (splitPath.length == 3) {
|
|
185
|
+
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
module.exports = Site_Static_HTML;
|