jsgui3-server 0.0.121 → 0.0.123
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/.vscode/settings.json +6 -0
- package/README.md +10 -10
- package/controls/Active_HTML_Document.js +116 -116
- package/controls/README.md +7 -7
- package/controls/page/admin.js +74 -74
- package/controls/panel/admin.js +11 -11
- package/examples/_css/basic.css +913 -913
- package/examples/_css/database-control.css +51 -51
- package/examples/_css/jsgui.css +66 -66
- package/examples/_css/multi-layout.css +23 -23
- package/examples/_css/style.css +1669 -1669
- package/examples/_css/top-and-bottom-bars.css +54 -54
- package/examples/box/1) square box/client.js +188 -188
- package/examples/box/1) square box/server.js +112 -112
- package/examples/box/2) twenty square boxes/css flex wrap/client.js +112 -248
- package/examples/box/2) twenty square boxes/css flex wrap/server.js +39 -112
- package/examples/box/3) twenty selectable square boxes/css flex wrap/client.js +129 -0
- package/examples/{controls/15) window, text field → box/3) twenty selectable square boxes/css flex wrap}/server.js +38 -38
- package/examples/boxes/square_boxes.js +45 -48
- package/examples/boxes/square_boxes_client.js +132 -136
- package/examples/client-side-popup-menu-button.html +93 -93
- package/examples/color_palette.js +51 -51
- package/examples/color_palette_client.js +95 -95
- package/examples/controls/1) window/client.js +186 -186
- package/examples/controls/1) window/server.js +117 -117
- package/examples/controls/10) window, mirrored text inputs/client.js +118 -320
- package/examples/controls/10) window, mirrored text inputs/server.js +37 -117
- package/examples/controls/11) window, mirrored text fields/client.js +493 -251
- package/examples/controls/11) window, mirrored text fields/server.js +117 -117
- package/examples/controls/11b) window, shared Data_Object model mirrored text fields/client.js +613 -331
- package/examples/controls/11b) window, shared Data_Object model mirrored text fields/server.js +117 -117
- package/examples/controls/11c) window, shared Data_Value model mirrored text fields/client.js +617 -617
- package/examples/controls/11c) window, shared Data_Value model mirrored text fields/server.js +117 -117
- package/examples/controls/11d) window, shared model mirrored integer text fields/client.js +611 -280
- package/examples/controls/11d) window, shared model mirrored integer text fields/server.js +134 -22
- package/examples/controls/12) window, Select_Options control/client.js +66 -452
- package/examples/controls/12) window, Select_Options control/server.js +19 -117
- package/examples/controls/13) window, Dropdown_Menu control/client.js +66 -0
- package/examples/controls/13) window, Dropdown_Menu control/server.js +20 -0
- package/examples/controls/2) two windows/client.js +193 -193
- package/examples/controls/2) two windows/server.js +113 -113
- package/examples/controls/3) five windows/client.js +217 -217
- package/examples/controls/3) five windows/server.js +116 -115
- package/examples/controls/4) window, tabbed panel/client.js +54 -225
- package/examples/controls/4) window, tabbed panel/server.js +17 -117
- package/examples/controls/5) window, grid/client.js +204 -484
- package/examples/controls/5) window, grid/server.js +117 -119
- package/examples/controls/6) window, color_palette/client.js +68 -204
- package/examples/controls/6) window, color_palette/server.js +117 -117
- package/examples/controls/7) window, month_view/client.js +40 -231
- package/examples/controls/7) window, month_view/server.js +117 -117
- package/examples/controls/8) window, checkbox/client.js +33 -209
- package/examples/controls/8) window, checkbox/server.js +117 -117
- package/examples/controls/9) window, date picker/client.js +76 -303
- package/examples/controls/9) window, date picker/server.js +117 -117
- package/examples/controls/9b) window, shared data.model mirrored date pickers/README.md +51 -0
- package/examples/controls/9b) window, shared data.model mirrored date pickers/client.js +83 -398
- package/examples/controls/9b) window, shared data.model mirrored date pickers/server.js +117 -117
- package/examples/controls/__old/_html-server-color-palette.js +114 -114
- package/examples/controls/__old/html-server-combo-box.js +104 -104
- package/examples/controls/__old/html-server-list.js +98 -98
- package/examples/controls/__old/html-server-popup-menu-button.js +114 -114
- package/examples/controls/__old/html-server-start-stop-toggle-button.js +146 -146
- package/examples/controls/__old/scs-arrow-button.js +36 -36
- package/examples/controls/__old/scs-date-picker.js +157 -157
- package/examples/controls/__old/scs-file-browser.js +82 -82
- package/examples/controls/__old/scs-item.js +159 -159
- package/examples/controls/__old/scs-month-arrow-selector.js +126 -126
- package/examples/controls/__old/scs-month-view.js +94 -94
- package/examples/controls/__old/scs-start-stop-toggle-button.js +40 -40
- package/examples/controls/__old/scs-tree.js +49 -49
- package/examples/controls/__old/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/grids/grid_1.js +45 -45
- package/examples/grids/grid_1_client.js +329 -329
- package/examples/html-rendering.js +20 -20
- package/examples/html-server.js +105 -105
- package/examples/introducing jsgui3/server.js +110 -110
- package/examples/mx_display/mx_display_1.js +45 -45
- package/examples/mx_display/mx_display_1_client.js +444 -444
- package/fs2.js +1836 -1836
- package/http/responders/HTTP_Responder.js +15 -15
- package/http/responders/static/Static_Route_HTTP_Responder.js +105 -105
- package/module.js +34 -34
- package/old/_single-control-server.js +418 -418
- package/old/single-control-server.js +368 -368
- package/old/single-page-app.js +131 -131
- package/package.json +42 -42
- package/page-context.js +92 -92
- package/publishers/helpers/assigners/Assigner.js +10 -10
- package/publishers/helpers/assigners/static-compressed-response-buffers/Single_Control_Webpage_Server_Static_Compressed_Response_Buffers_Assigner.js +150 -150
- package/publishers/helpers/assigners/static-headers/Single_Control_Webpage_Server_Static_Headers_Assigner.js +109 -109
- package/publishers/helpers/assigners/static-routes/Single_Control_Webpage_Server_Static_Routes_Assigner.js +91 -91
- package/publishers/helpers/assigners/static-uncompressed-response-buffers/Single_Control_Webpage_Server_Static_Uncompressed_Response_Buffers_Assigner.js +104 -104
- package/publishers/helpers/preparers/static/bundle/Ready_To_Serve_Preparer.js +18 -18
- package/publishers/helpers/preparers/static/bundle/Static_Routes_Responses_Webpage_Bundle_Preparer.js +44 -44
- package/publishers/http-function-publisher.js +212 -212
- package/publishers/http-html-page-publisher.js +5 -5
- package/publishers/http-html-publisher.js +24 -24
- package/publishers/http-js-publisher.js +135 -135
- package/publishers/http-observable-publisher.js +124 -124
- package/publishers/http-publisher.js +53 -53
- package/publishers/http-resource-publisher.js +325 -325
- package/publishers/http-webpage-publisher.js +659 -658
- package/publishers/http-webpageorsite-publisher.js +343 -343
- package/publishers/http-website-publisher.js +640 -640
- package/publishers/notes.md +9 -9
- package/resources/README.md +16 -16
- package/resources/_old_website-javascript-resource.js +994 -994
- package/resources/_old_website-resource.js +507 -507
- package/resources/compile/server-resource-compilation.js +43 -43
- package/resources/data-resource.js +118 -118
- package/resources/fs-resource.js +146 -146
- package/resources/jsbuilder/Abstract_Single_Declaration.js +105 -105
- package/resources/jsbuilder/Abstract_Single_Declaration_Sequence.js +42 -42
- package/resources/jsbuilder/JS_AST/JS_AST_Abstract_Node.js +61 -61
- package/resources/jsbuilder/JS_AST/JS_AST_Abstract_Node_Group.js +41 -41
- package/resources/jsbuilder/JS_AST/JS_AST_Group_Shared.js +61 -61
- package/resources/jsbuilder/JS_AST/JS_AST_Node.js +93 -93
- package/resources/jsbuilder/JS_AST/JS_AST_Node_0-Core.js +253 -253
- package/resources/jsbuilder/JS_AST/JS_AST_Node_1-Babel.js +337 -337
- package/resources/jsbuilder/JS_AST/JS_AST_Node_10-Changing.js +39 -39
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.1-Child.js +96 -96
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.2-Parent.js +37 -37
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.3-Ancestor.js +61 -61
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.2-Inner.js +43 -43
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.3-All.js +72 -72
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.4-Sibling.js +92 -92
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.5-Available_In_Scope.js +29 -29
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.9-Signature.js +116 -116
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3-Basics.js +159 -159
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.0-Basics_First.js +178 -178
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.1-Basics_Second.js +87 -87
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.99-Basics_Last.js +91 -91
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.1-Basics_Each.js +136 -136
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.1.5-Basics_Count.js +73 -73
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.2-Basics_Filter.js +39 -39
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.3-Basics_Collect.js +85 -85
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.4-Basics_Select.js +42 -42
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.5-Basics_Find.js +40 -40
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.6-Basics_Callmap.js +54 -54
- package/resources/jsbuilder/JS_AST/JS_AST_Node_4.0-Index_Indexes.js +45 -45
- package/resources/jsbuilder/JS_AST/JS_AST_Node_4.1-Index.js +343 -343
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.0-Category.js +38 -38
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.1-Category_Identifier.js +30 -30
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.2-Category_Literal.js +28 -28
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.3-Category_Expression.js +26 -26
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.4-Category_Pattern.js +8 -8
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.5-Category_Declaration.js +43 -43
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.6-Category_Statement.js +21 -21
- package/resources/jsbuilder/JS_AST/JS_AST_Node_6.0-Type.js +89 -89
- package/resources/jsbuilder/JS_AST/JS_AST_Node_6.1-Type_Class_Declaration.js +8 -8
- package/resources/jsbuilder/JS_AST/JS_AST_Node_6.2-Type_Variable_Declaration.js +27 -27
- package/resources/jsbuilder/JS_AST/JS_AST_Node_6.3-Type_Variable_Declarator.js +28 -28
- package/resources/jsbuilder/JS_AST/JS_AST_Node_7-Query.js +736 -736
- package/resources/jsbuilder/JS_AST/JS_AST_Node_8-Features.js +64 -64
- package/resources/jsbuilder/JS_AST/JS_AST_Node_9-Planning.js +31 -31
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Arrangement.js +15 -15
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Declared_Object.js +305 -305
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature.js +77 -77
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature_Declaration.js +248 -248
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature_Declarator.js +138 -138
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature.js +10 -10
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature_Exported.js +100 -100
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature_Exports.js +60 -60
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Interpreted.js +179 -179
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/_JSGUI_Root_Node_Interpreted.js +43 -43
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/special_case_objectassign_to_object.js +12 -12
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Group.js +35 -35
- package/resources/jsbuilder/JS_AST/JS_AST_Operation.js +11 -11
- package/resources/jsbuilder/JS_AST/JS_AST_Operation_On_Relationship.js +31 -31
- package/resources/jsbuilder/JS_AST/JS_AST_Ordered_Relationship_Node_To_Group.js +37 -37
- package/resources/jsbuilder/JS_AST/JS_AST_Ordinal.js +39 -39
- package/resources/jsbuilder/JS_AST/JS_AST_Ordinal_Relationship.js +25 -25
- package/resources/jsbuilder/JS_AST/JS_AST_Relationship_Node_To_Group.js +200 -200
- package/resources/jsbuilder/JS_AST/JS_AST_Relationship_Node_Within_Group_To_Node.js +43 -43
- package/resources/jsbuilder/JS_AST/_JS_AST_Node_3.8-Query_Features.js +76 -76
- package/resources/jsbuilder/JS_AST/query/enable_array_as_queryable.js +227 -227
- package/resources/jsbuilder/JS_AST/query/find_object_keys.js +404 -404
- package/resources/jsbuilder/JS_AST/query/node_queries.js +8 -8
- package/resources/jsbuilder/JS_AST/query/root_query_identidy.js +11 -11
- package/resources/jsbuilder/JS_AST_Node_Extended/JSGUI_Singular_Declaration.js +85 -85
- package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Declaration.js +123 -123
- package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Extended.js +87 -87
- package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Extended_0-Core.js +10 -10
- package/resources/jsbuilder/JS_Builder.js +10 -10
- package/resources/jsbuilder/JS_File/Feature/JS_File_Declared_Object.js +31 -31
- package/resources/jsbuilder/JS_File/Feature/JS_File_Exported_Object_Info.js +25 -25
- package/resources/jsbuilder/JS_File/Feature/JS_File_Exports.js +78 -78
- package/resources/jsbuilder/JS_File/Feature/JS_File_Feature.js +17 -17
- package/resources/jsbuilder/JS_File/Feature/JS_File_Imported_Object_Info.js +25 -25
- package/resources/jsbuilder/JS_File/Feature/JS_File_Imports.js +8 -8
- package/resources/jsbuilder/JS_File/JS_File.js +12 -12
- package/resources/jsbuilder/JS_File/JS_File_0-Core.js +202 -202
- package/resources/jsbuilder/JS_File/JS_File_1-Early_Parse.js +175 -175
- package/resources/jsbuilder/JS_File/JS_File_2-Babel.js +81 -81
- package/resources/jsbuilder/JS_File/JS_File_3-JS_AST_Node.js +86 -86
- package/resources/jsbuilder/JS_File/JS_File_4-Query.js +413 -413
- package/resources/jsbuilder/JS_File/JS_File_4.1-Query_Features.js +414 -414
- package/resources/jsbuilder/JS_File/JS_File_5-Planning.js +59 -59
- package/resources/jsbuilder/JS_File/JS_File_6-Changing.js +24 -24
- package/resources/jsbuilder/JS_File/JS_File_Export_Reference.js +12 -12
- package/resources/jsbuilder/JS_File/JS_File_Import_Reference.js +23 -23
- package/resources/jsbuilder/JS_File/JS_File_Import_References.js +31 -31
- package/resources/jsbuilder/JS_File/JS_File_Processor.js +16 -16
- package/resources/jsbuilder/JS_File/JS_Files.js +15 -15
- package/resources/jsbuilder/Module.js +14 -14
- package/resources/jsbuilder/Platform.js +13 -13
- package/resources/jsbuilder/Platforms.js +69 -69
- package/resources/jsbuilder/Project.js +109 -109
- package/resources/jsbuilder/Reference.js +1 -1
- package/resources/jsbuilder/Reference_Sequence.js +16 -16
- package/resources/jsbuilder/Scope.js +29 -29
- package/resources/jsbuilder/Variable_Name_Provider.js +42 -42
- package/resources/jsbuilder/_JS_File.js +225 -225
- package/resources/jsbuilder/ast_query.js +20 -20
- package/resources/jsbuilder/babel/babel_consts.js +162 -162
- package/resources/jsbuilder/babel/babel_node_tools.js +541 -541
- package/resources/jsbuilder/babel/deep_iterate/deep_iterate_babel.js +923 -904
- package/resources/jsbuilder/build.js +16 -16
- package/resources/jsbuilder/platform_notes.md +66 -66
- package/resources/jsbuilder/test/test_ast_node.js +381 -381
- package/resources/jsbuilder/test/test_js_file.js +303 -303
- package/resources/jsbuilder/test/test_project.js +157 -157
- package/resources/local-server-info-resource.js +96 -96
- package/resources/notes.txt +10 -10
- package/resources/old/website-image-resource.js +1185 -1185
- package/resources/process-js.js +498 -498
- package/resources/processors/bundlers/bundle.js +29 -29
- package/resources/processors/bundlers/bundler.js +23 -23
- package/resources/processors/bundlers/css-bundler.js +234 -234
- package/resources/processors/bundlers/js/JS_Bundler.js +51 -51
- package/resources/processors/bundlers/js/esbuild/Advanced_JS_Bundler_Using_ESBuild.js +388 -391
- package/resources/processors/bundlers/js/esbuild/Bundler_Using_ESBuild.js +8 -8
- package/resources/processors/bundlers/js/esbuild/Core_JS_Non_Minifying_Bundler_Using_ESBuild.js +188 -188
- package/resources/processors/bundlers/js/esbuild/Core_JS_Single_File_Minifying_Bundler_Using_ESBuild.js +191 -192
- package/resources/processors/bundlers/js/esbuild/_Old_CSS_Extractor.js +239 -239
- package/resources/processors/bundlers/js-bundler.js +263 -263
- package/resources/processors/bundlers/test_ast.js +73 -73
- package/resources/processors/bundlers/webpage-bundler.js +404 -404
- package/resources/processors/bundlers/website-bundler.js +22 -22
- package/resources/processors/extractors/Extractor.js +9 -11
- package/resources/processors/extractors/js/css_and_js/AST_Node/CSS_And_JS_From_JS_String_Using_AST_Node_Extractor.js +239 -254
- package/resources/processors/extractors/js/css_and_js/CSS_And_JS_From_JS_String_Extractor.js +3 -3
- package/resources/processors/extractors/string/Pos_Span_String_Extractor.js +93 -93
- package/resources/server-installed-tools.js +28 -28
- package/resources/server-resource-pool.js +41 -41
- package/resources/website-audio-resource.js +735 -735
- package/resources/website-css-resource.js +411 -411
- package/resources/website-image-resource.js +412 -412
- package/resources/website-javascript-resource-processor.js +908 -908
- package/resources/website-javascript-resource.js +874 -874
- package/resources/website-resource-processor.js +10 -10
- package/resources/website-resource.js +164 -164
- package/resources/website-static-html-resource.js +199 -199
- package/resources/website-template-html-resource.js +231 -231
- package/roadmap.md +75 -75
- package/server.js +609 -573
- package/static-page-context.js +13 -13
- package/website/webpage.js +81 -81
- package/website/website-group.js +15 -15
- package/website/website.js +260 -260
- package/examples/controls/11d) window, shared model mirrored integer text fields/both.js +0 -17
- package/examples/controls/13) window, shared model mirrored lat_long/client.js +0 -933
- package/examples/controls/13) window, shared model mirrored lat_long/server.js +0 -50
- package/examples/controls/14) window, control compositional model/client.js +0 -328
- package/examples/controls/14) window, control compositional model/server.js +0 -118
- package/examples/controls/14a) window, control spec has compositional model/client.js +0 -440
- package/examples/controls/14a) window, control spec has compositional model/server.js +0 -118
- package/examples/controls/15) window, text field/client.js +0 -256
- package/examples/controls/16) Window([Text_Input])/client.js +0 -266
- package/examples/controls/16) Window([Text_Input])/server.js +0 -109
- package/examples/controls/16a) Window([Text_Input]) Integer data.model.data_type/client.js +0 -494
- package/examples/controls/16a) Window([Text_Input]) Integer data.model.data_type/isomorphic.js +0 -24
- package/examples/controls/16a) Window([Text_Input]) Integer data.model.data_type/server.js +0 -73
- package/examples/controls/2b) two window, context menus/client.js +0 -193
- package/examples/controls/2b) two window, context menus/server.js +0 -114
- package/examples/controls/4a) window, tabbed panel with various controls inside/client.js +0 -233
- package/examples/controls/4a) window, tabbed panel with various controls inside/server.js +0 -118
|
@@ -1,199 +1,199 @@
|
|
|
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
|
-
// Also a Templated_HTML resource?
|
|
32
|
-
// Connects to HTML_Template
|
|
33
|
-
// Connects to Data_Resource
|
|
34
|
-
// Populates the HTML_Template data from the Data_Resource
|
|
35
|
-
|
|
36
|
-
// HTML_Template being a Data_Transformation / Data_Transformation_Resource / Transformation_Resource
|
|
37
|
-
// Codecs could be another type of Transformation_Resource
|
|
38
|
-
|
|
39
|
-
// Transformation Resource could / should appear in jsgui3-client. Makes sense on the client too.
|
|
40
|
-
|
|
41
|
-
// Separate loading of transformation resource, data resource, and template (resource)
|
|
42
|
-
// The transformation resource can itself load / be provided with the data resource and template resource.
|
|
43
|
-
|
|
44
|
-
// jsx processing may be the best way (by far)?
|
|
45
|
-
|
|
46
|
-
// or jsui templates?
|
|
47
|
-
// jsx may seem / be easiest at this stage for long term expansion and integration.
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
class Site_Static_HTML extends Resource {
|
|
51
|
-
|
|
52
|
-
constructor(spec) {
|
|
53
|
-
super(spec);
|
|
54
|
-
|
|
55
|
-
this.meta.set('custom_paths', new Data_Object({}));
|
|
56
|
-
// Those are custom file paths.
|
|
57
|
-
|
|
58
|
-
// could have a collection of directories, indexed by name, that get served.
|
|
59
|
-
|
|
60
|
-
// Index the collection by string value?
|
|
61
|
-
this.meta.set('served_directories', new Collection({'index_by': 'name'}));
|
|
62
|
-
}
|
|
63
|
-
'start'(callback) {
|
|
64
|
-
callback(null, true);
|
|
65
|
-
}
|
|
66
|
-
'set_custom_path'(url, file_path) {
|
|
67
|
-
// But change the URL to have a smiley face instead of fullstops
|
|
68
|
-
//console.log('url', url);
|
|
69
|
-
var escaped_url = url.replace(/\./g, '☺');
|
|
70
|
-
//console.log('escaped_url', escaped_url);
|
|
71
|
-
|
|
72
|
-
//this.meta.set('custom_paths.' + escaped_url, file_path);
|
|
73
|
-
var custom_paths = this.meta.get('custom_paths');
|
|
74
|
-
//console.log('custom_paths', custom_paths);
|
|
75
|
-
custom_paths.set(escaped_url, file_path);
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
'serve_directory'(path) {
|
|
79
|
-
// Serves that directory, as any files given in that directory can be served from /js
|
|
80
|
-
var served_directories = this.meta.get('served_directories');
|
|
81
|
-
//console.log('served_directories ' + stringify(served_directories));
|
|
82
|
-
//served_directories.push(path);
|
|
83
|
-
served_directories.push({
|
|
84
|
-
'name': path
|
|
85
|
-
});
|
|
86
|
-
//console.log('served_directories ' + stringify(served_directories));
|
|
87
|
-
//console.log('path ' + path);
|
|
88
|
-
|
|
89
|
-
//throw 'stop';
|
|
90
|
-
|
|
91
|
-
}
|
|
92
|
-
'process'(req, res) {
|
|
93
|
-
//console.log('Site_Static_HTML processing');
|
|
94
|
-
var remoteAddress = req.connection.remoteAddress;
|
|
95
|
-
var custom_paths = this.custom_paths;
|
|
96
|
-
var rurl = req.url;
|
|
97
|
-
var pool = this.pool;
|
|
98
|
-
// should have a bunch of resources from the pool.
|
|
99
|
-
//var pool_resources = pool.resources();
|
|
100
|
-
//console.log('pool_resources ' + stringify(pool_resources));
|
|
101
|
-
|
|
102
|
-
var url_parts = url.parse(req.url, true);
|
|
103
|
-
//console.log('url_parts ' + stringify(url_parts));
|
|
104
|
-
var splitPath = url_parts.path.substr(1).split('/');
|
|
105
|
-
//console.log('resource site css splitPath ' + stringify(splitPath));
|
|
106
|
-
|
|
107
|
-
if (rurl.substr(0, 1) == '/') rurl = rurl.substr(1);
|
|
108
|
-
rurl = rurl.replace(/\./g, '☺');
|
|
109
|
-
//console.log('rurl ' + rurl);
|
|
110
|
-
|
|
111
|
-
if (rurl == '') rurl = '/';
|
|
112
|
-
var custom_response_entry = custom_paths.get(rurl);
|
|
113
|
-
//console.log('Static HTML Resource process url', req.url);
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
//console.log('custom_response_entry ' + stringify(custom_response_entry));
|
|
117
|
-
|
|
118
|
-
if (custom_response_entry) {
|
|
119
|
-
var tcr = tof(custom_response_entry);
|
|
120
|
-
//console.log('tcr ' + tcr);
|
|
121
|
-
if (tcr == 'data_value') {
|
|
122
|
-
var val = custom_response_entry.value();
|
|
123
|
-
//console.log('val ' + val);
|
|
124
|
-
var tval = tof(val);
|
|
125
|
-
if (tval === 'string') {
|
|
126
|
-
// then it should be a local file path, serve it.
|
|
127
|
-
serve_html_file_from_disk(val, res);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
//throw 'stop';
|
|
131
|
-
} else {
|
|
132
|
-
//console.log('splitPath', splitPath);
|
|
133
|
-
//console.log('splitPath.length', splitPath.length);
|
|
134
|
-
|
|
135
|
-
if (splitPath.length > 0) {
|
|
136
|
-
|
|
137
|
-
// Can check for /js folder.
|
|
138
|
-
// There will be some fixed resources for the site.
|
|
139
|
-
// They will be served by Resource objects.
|
|
140
|
-
// There may be some overlap of resources, with there being some very fixed purpose
|
|
141
|
-
// specific resources that could duplicate some features of the more general ones.
|
|
142
|
-
// Eventually, some of the code from the more specific resources will be
|
|
143
|
-
// replacable with code from the more general ones.
|
|
144
|
-
|
|
145
|
-
// Site_JavaScript resource
|
|
146
|
-
// Will serve JavaScript files needed for the site.
|
|
147
|
-
// Could become more advanced at some points, serving particular builds.
|
|
148
|
-
|
|
149
|
-
if (splitPath.length == 1) {
|
|
150
|
-
if (splitPath[0] == '') {
|
|
151
|
-
// Serve the default page.
|
|
152
|
-
// serve index.html
|
|
153
|
-
//serve_html_file_from_disk('./index.html', res);
|
|
154
|
-
serve_html_file_from_disk('index.html', res);
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
}
|
|
160
|
-
} else {
|
|
161
|
-
if (splitPath[0] == 'html') {
|
|
162
|
-
//var sjs = pool.get_resource('Site JavaScript');
|
|
163
|
-
//console.log('sjs ' + sjs);
|
|
164
|
-
|
|
165
|
-
//throw 'stop';
|
|
166
|
-
|
|
167
|
-
// determine the name of the file to serve, serve that file
|
|
168
|
-
// Could use some more general kind of file server.
|
|
169
|
-
|
|
170
|
-
if (splitPath.length > 1) {
|
|
171
|
-
if (splitPath.length == 2) {
|
|
172
|
-
var fileName = splitPath[1];
|
|
173
|
-
//console.log('url_parts.path ' + url_parts.path);
|
|
174
|
-
var filePath = url_parts.path.substr(1);
|
|
175
|
-
//console.log('module.uri ' + module.uri);
|
|
176
|
-
|
|
177
|
-
// No, need the current module's relative path....
|
|
178
|
-
|
|
179
|
-
//var val2 = path.dirname(module.uri);
|
|
180
|
-
//console.log('val2 ' + val2);
|
|
181
|
-
//throw '9) stop';
|
|
182
|
-
|
|
183
|
-
//var diskPath = val2 + '/../css/' + fileName;
|
|
184
|
-
var diskPath = '../../ws/css/' + fileName;
|
|
185
|
-
|
|
186
|
-
serve_html_file_from_disk(diskPath, res);
|
|
187
|
-
} else {
|
|
188
|
-
if (splitPath.length == 3) {
|
|
189
|
-
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
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
|
+
// Also a Templated_HTML resource?
|
|
32
|
+
// Connects to HTML_Template
|
|
33
|
+
// Connects to Data_Resource
|
|
34
|
+
// Populates the HTML_Template data from the Data_Resource
|
|
35
|
+
|
|
36
|
+
// HTML_Template being a Data_Transformation / Data_Transformation_Resource / Transformation_Resource
|
|
37
|
+
// Codecs could be another type of Transformation_Resource
|
|
38
|
+
|
|
39
|
+
// Transformation Resource could / should appear in jsgui3-client. Makes sense on the client too.
|
|
40
|
+
|
|
41
|
+
// Separate loading of transformation resource, data resource, and template (resource)
|
|
42
|
+
// The transformation resource can itself load / be provided with the data resource and template resource.
|
|
43
|
+
|
|
44
|
+
// jsx processing may be the best way (by far)?
|
|
45
|
+
|
|
46
|
+
// or jsui templates?
|
|
47
|
+
// jsx may seem / be easiest at this stage for long term expansion and integration.
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class Site_Static_HTML extends Resource {
|
|
51
|
+
|
|
52
|
+
constructor(spec) {
|
|
53
|
+
super(spec);
|
|
54
|
+
|
|
55
|
+
this.meta.set('custom_paths', new Data_Object({}));
|
|
56
|
+
// Those are custom file paths.
|
|
57
|
+
|
|
58
|
+
// could have a collection of directories, indexed by name, that get served.
|
|
59
|
+
|
|
60
|
+
// Index the collection by string value?
|
|
61
|
+
this.meta.set('served_directories', new Collection({'index_by': 'name'}));
|
|
62
|
+
}
|
|
63
|
+
'start'(callback) {
|
|
64
|
+
callback(null, true);
|
|
65
|
+
}
|
|
66
|
+
'set_custom_path'(url, file_path) {
|
|
67
|
+
// But change the URL to have a smiley face instead of fullstops
|
|
68
|
+
//console.log('url', url);
|
|
69
|
+
var escaped_url = url.replace(/\./g, '☺');
|
|
70
|
+
//console.log('escaped_url', escaped_url);
|
|
71
|
+
|
|
72
|
+
//this.meta.set('custom_paths.' + escaped_url, file_path);
|
|
73
|
+
var custom_paths = this.meta.get('custom_paths');
|
|
74
|
+
//console.log('custom_paths', custom_paths);
|
|
75
|
+
custom_paths.set(escaped_url, file_path);
|
|
76
|
+
|
|
77
|
+
}
|
|
78
|
+
'serve_directory'(path) {
|
|
79
|
+
// Serves that directory, as any files given in that directory can be served from /js
|
|
80
|
+
var served_directories = this.meta.get('served_directories');
|
|
81
|
+
//console.log('served_directories ' + stringify(served_directories));
|
|
82
|
+
//served_directories.push(path);
|
|
83
|
+
served_directories.push({
|
|
84
|
+
'name': path
|
|
85
|
+
});
|
|
86
|
+
//console.log('served_directories ' + stringify(served_directories));
|
|
87
|
+
//console.log('path ' + path);
|
|
88
|
+
|
|
89
|
+
//throw 'stop';
|
|
90
|
+
|
|
91
|
+
}
|
|
92
|
+
'process'(req, res) {
|
|
93
|
+
//console.log('Site_Static_HTML processing');
|
|
94
|
+
var remoteAddress = req.connection.remoteAddress;
|
|
95
|
+
var custom_paths = this.custom_paths;
|
|
96
|
+
var rurl = req.url;
|
|
97
|
+
var pool = this.pool;
|
|
98
|
+
// should have a bunch of resources from the pool.
|
|
99
|
+
//var pool_resources = pool.resources();
|
|
100
|
+
//console.log('pool_resources ' + stringify(pool_resources));
|
|
101
|
+
|
|
102
|
+
var url_parts = url.parse(req.url, true);
|
|
103
|
+
//console.log('url_parts ' + stringify(url_parts));
|
|
104
|
+
var splitPath = url_parts.path.substr(1).split('/');
|
|
105
|
+
//console.log('resource site css splitPath ' + stringify(splitPath));
|
|
106
|
+
|
|
107
|
+
if (rurl.substr(0, 1) == '/') rurl = rurl.substr(1);
|
|
108
|
+
rurl = rurl.replace(/\./g, '☺');
|
|
109
|
+
//console.log('rurl ' + rurl);
|
|
110
|
+
|
|
111
|
+
if (rurl == '') rurl = '/';
|
|
112
|
+
var custom_response_entry = custom_paths.get(rurl);
|
|
113
|
+
//console.log('Static HTML Resource process url', req.url);
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
//console.log('custom_response_entry ' + stringify(custom_response_entry));
|
|
117
|
+
|
|
118
|
+
if (custom_response_entry) {
|
|
119
|
+
var tcr = tof(custom_response_entry);
|
|
120
|
+
//console.log('tcr ' + tcr);
|
|
121
|
+
if (tcr == 'data_value') {
|
|
122
|
+
var val = custom_response_entry.value();
|
|
123
|
+
//console.log('val ' + val);
|
|
124
|
+
var tval = tof(val);
|
|
125
|
+
if (tval === 'string') {
|
|
126
|
+
// then it should be a local file path, serve it.
|
|
127
|
+
serve_html_file_from_disk(val, res);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//throw 'stop';
|
|
131
|
+
} else {
|
|
132
|
+
//console.log('splitPath', splitPath);
|
|
133
|
+
//console.log('splitPath.length', splitPath.length);
|
|
134
|
+
|
|
135
|
+
if (splitPath.length > 0) {
|
|
136
|
+
|
|
137
|
+
// Can check for /js folder.
|
|
138
|
+
// There will be some fixed resources for the site.
|
|
139
|
+
// They will be served by Resource objects.
|
|
140
|
+
// There may be some overlap of resources, with there being some very fixed purpose
|
|
141
|
+
// specific resources that could duplicate some features of the more general ones.
|
|
142
|
+
// Eventually, some of the code from the more specific resources will be
|
|
143
|
+
// replacable with code from the more general ones.
|
|
144
|
+
|
|
145
|
+
// Site_JavaScript resource
|
|
146
|
+
// Will serve JavaScript files needed for the site.
|
|
147
|
+
// Could become more advanced at some points, serving particular builds.
|
|
148
|
+
|
|
149
|
+
if (splitPath.length == 1) {
|
|
150
|
+
if (splitPath[0] == '') {
|
|
151
|
+
// Serve the default page.
|
|
152
|
+
// serve index.html
|
|
153
|
+
//serve_html_file_from_disk('./index.html', res);
|
|
154
|
+
serve_html_file_from_disk('index.html', res);
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
}
|
|
160
|
+
} else {
|
|
161
|
+
if (splitPath[0] == 'html') {
|
|
162
|
+
//var sjs = pool.get_resource('Site JavaScript');
|
|
163
|
+
//console.log('sjs ' + sjs);
|
|
164
|
+
|
|
165
|
+
//throw 'stop';
|
|
166
|
+
|
|
167
|
+
// determine the name of the file to serve, serve that file
|
|
168
|
+
// Could use some more general kind of file server.
|
|
169
|
+
|
|
170
|
+
if (splitPath.length > 1) {
|
|
171
|
+
if (splitPath.length == 2) {
|
|
172
|
+
var fileName = splitPath[1];
|
|
173
|
+
//console.log('url_parts.path ' + url_parts.path);
|
|
174
|
+
var filePath = url_parts.path.substr(1);
|
|
175
|
+
//console.log('module.uri ' + module.uri);
|
|
176
|
+
|
|
177
|
+
// No, need the current module's relative path....
|
|
178
|
+
|
|
179
|
+
//var val2 = path.dirname(module.uri);
|
|
180
|
+
//console.log('val2 ' + val2);
|
|
181
|
+
//throw '9) stop';
|
|
182
|
+
|
|
183
|
+
//var diskPath = val2 + '/../css/' + fileName;
|
|
184
|
+
var diskPath = '../../ws/css/' + fileName;
|
|
185
|
+
|
|
186
|
+
serve_html_file_from_disk(diskPath, res);
|
|
187
|
+
} else {
|
|
188
|
+
if (splitPath.length == 3) {
|
|
189
|
+
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
module.exports = Site_Static_HTML;
|