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,226 +1,226 @@
|
|
|
1
|
-
// Could do this in a simpler way than full AST manipulation.
|
|
2
|
-
|
|
3
|
-
// Want to write out jsgui in such a way that the lower levels are all accessed as local functions and objects within an inner scope.
|
|
4
|
-
|
|
5
|
-
const {each, Evented_Class} = require('lang-tools');
|
|
6
|
-
//const { default: JS_Builder } = require('./JS_Builder');
|
|
7
|
-
|
|
8
|
-
// Interpret / arrange a file in terms of the other objects within this system.
|
|
9
|
-
|
|
10
|
-
// References at the beginning - will also work in terms of references to declarations, platforms, and declaration sequences.
|
|
11
|
-
|
|
12
|
-
// Make it operate in a streaming way?
|
|
13
|
-
// Event driven too?
|
|
14
|
-
// So it can have events as it goes through the file or the stream.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const whitespace_chars = {
|
|
18
|
-
'32': true
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const get_char_type = e_rlc => {
|
|
22
|
-
const {char, char_code} = e_rlc;
|
|
23
|
-
|
|
24
|
-
if (char_code === 32 || char_code === 9) return 'whitespace';
|
|
25
|
-
if (char === '0' || char === '1' || char === '2' || char === '3' || char === '4' || char === '5' || char === '6' || char === '7' || char === '8' || char === '9') return 'digit'
|
|
26
|
-
if (char === '<' || char === '>' || char === '(' || char === ')' || char === '{' ||
|
|
27
|
-
char === '}' || char === ':' || char === ';' || char === '?' || char === '!' || char === '.' ||
|
|
28
|
-
char === '"' || char === '\'' || char === '|' || char === '~' || char === '#' ||
|
|
29
|
-
char === '+' || char === '*' || char === '/' || char === '\\' || char === '-') return 'punctuation'
|
|
30
|
-
if (char_code >= 65 && char_code <= 90) return 'letter' // ucase
|
|
31
|
-
if (char_code >= 97 && char_code <= 122) return 'letter' // lcase
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
throw 'unknown';
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
// token types: number
|
|
39
|
-
|
|
40
|
-
// May be best to use an existing full AST tokeniser and parser.
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
class JS_File extends Evented_Class {
|
|
48
|
-
constructor(spec = {}) {
|
|
49
|
-
super();
|
|
50
|
-
|
|
51
|
-
const rs = (() => spec.rs || undefined)();
|
|
52
|
-
const line_break_hex = (() => spec.line_break_hex || '0A')();
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
//this.on('readline', e_readline => {
|
|
57
|
-
|
|
58
|
-
//});
|
|
59
|
-
|
|
60
|
-
if (rs) {
|
|
61
|
-
// Interpret it in chunks.
|
|
62
|
-
// Read it line by line, after character by character.
|
|
63
|
-
// Very event driven parser, or partial parser at least.
|
|
64
|
-
|
|
65
|
-
//let buf1;
|
|
66
|
-
|
|
67
|
-
const ta_line_buffer = new Uint8Array(1024);
|
|
68
|
-
let byte_in_line_num = 0;
|
|
69
|
-
|
|
70
|
-
let line_num = 0;
|
|
71
|
-
let last_recieved_byte;
|
|
72
|
-
let recieved_byte;
|
|
73
|
-
// Separate the chunks and the raise an event for each line.
|
|
74
|
-
// Charactrer by character???
|
|
75
|
-
|
|
76
|
-
// Array or something of the tokens?
|
|
77
|
-
|
|
78
|
-
//let first_token_of_line_char_pos = -1;
|
|
79
|
-
let began_first_token_of_line = false;
|
|
80
|
-
|
|
81
|
-
// An array of tokens as strings???
|
|
82
|
-
|
|
83
|
-
// Or just be able to identify the first tokens?
|
|
84
|
-
// The part before the equals sign?
|
|
85
|
-
|
|
86
|
-
// Best to creat OO oprogrammatic objects from these.
|
|
87
|
-
// But maybe best to use an existing parsing tool.
|
|
88
|
-
|
|
89
|
-
// Identifying all variable declarations may be possible.
|
|
90
|
-
// All function calls too...
|
|
91
|
-
|
|
92
|
-
// Identifying all local variable references.
|
|
93
|
-
// Putting it into JS objects would make sense.
|
|
94
|
-
// Into highly OO JS objects in the right structure.
|
|
95
|
-
|
|
96
|
-
// Could raise an event whenever it finds a token.
|
|
97
|
-
// Then will need to make sense of these tokens.
|
|
98
|
-
|
|
99
|
-
// Being able to get a list of which declarations were made where in the code would helo.
|
|
100
|
-
|
|
101
|
-
// block, conditional, switch, loop
|
|
102
|
-
|
|
103
|
-
// Maybe an existing parser would make a lot more sense.
|
|
104
|
-
// Be better able to identify
|
|
105
|
-
|
|
106
|
-
// https://esprima.org/
|
|
107
|
-
//
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
this.on('recieve-line-char', e_rlc => {
|
|
115
|
-
console.log('e_rlc', e_rlc);
|
|
116
|
-
const char_type = get_char_type(e_rlc)
|
|
117
|
-
console.log('char_type', char_type);
|
|
118
|
-
/*
|
|
119
|
-
if (!began_first_token_of_line) {
|
|
120
|
-
if (whitespace_chars[e_rlc.char_code]) {
|
|
121
|
-
|
|
122
|
-
} else {
|
|
123
|
-
began_first_token_of_line = true;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
*/
|
|
127
|
-
|
|
128
|
-
})
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
this.on('recieve-line', e_recieve_line => {
|
|
132
|
-
console.log('e_recieve_line', e_recieve_line);
|
|
133
|
-
|
|
134
|
-
// and strip the tabs and whitespace.
|
|
135
|
-
|
|
136
|
-
// process the line character by character.
|
|
137
|
-
|
|
138
|
-
//console.log('e_recieve_linestr', str);
|
|
139
|
-
|
|
140
|
-
// And break up the line into statements;
|
|
141
|
-
|
|
142
|
-
const s = e_recieve_line.str, l = s.length;
|
|
143
|
-
for (let c = 0; c < l; c++) {
|
|
144
|
-
const ch = s[c];
|
|
145
|
-
this.raise('recieve-line-char', {
|
|
146
|
-
line_num: line_num,
|
|
147
|
-
char: ch,
|
|
148
|
-
char_code: s.charCodeAt(c)
|
|
149
|
-
})
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
console.log('rs', rs);
|
|
156
|
-
this.on('recieve-byte', e_receive_byte => {
|
|
157
|
-
last_recieved_byte = recieved_byte;
|
|
158
|
-
recieved_byte = e_receive_byte.byte_value;
|
|
159
|
-
ta_line_buffer[byte_in_line_num++] = recieved_byte;
|
|
160
|
-
//console.log('e_receive_byte', e_receive_byte);
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
if (recieved_byte === 10) {
|
|
165
|
-
// lf
|
|
166
|
-
if (last_recieved_byte === 13) {
|
|
167
|
-
// cr, for windows
|
|
168
|
-
|
|
169
|
-
const line_until_crlf = new Uint8Array(ta_line_buffer.subarray(0, byte_in_line_num - 2));
|
|
170
|
-
|
|
171
|
-
this.raise('recieve-line', {
|
|
172
|
-
ta_line: line_until_crlf,
|
|
173
|
-
bytes_length: byte_in_line_num,
|
|
174
|
-
str: String.fromCharCode.apply(null, line_until_crlf)
|
|
175
|
-
})
|
|
176
|
-
|
|
177
|
-
} else {
|
|
178
|
-
|
|
179
|
-
const line_until_lf = new Uint8Array(ta_line_buffer.subarray(0, byte_in_line_num - 1));
|
|
180
|
-
this.raise('recieve-line', {
|
|
181
|
-
ta_line: line_until_lf,
|
|
182
|
-
bytes_length: byte_in_line_num,
|
|
183
|
-
str: String.fromCharCode.apply(null, line_until_lf)
|
|
184
|
-
})
|
|
185
|
-
}
|
|
186
|
-
ta_line_buffer.fill(0);
|
|
187
|
-
line_num++;
|
|
188
|
-
byte_in_line_num = 0;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
rs.on('data', chunk => {
|
|
196
|
-
//if (!buf1) {buf1 = chunk} else {
|
|
197
|
-
// buf1 = Buffer.concat([buf1, chunk]);
|
|
198
|
-
const l = chunk.length;
|
|
199
|
-
console.log('l', l);
|
|
200
|
-
for (let c = 0; c < l; c++) {
|
|
201
|
-
this.raise('recieve-byte', {
|
|
202
|
-
byte_value: chunk.readUInt8(c)
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
//}
|
|
206
|
-
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
// then divide by line break character?
|
|
210
|
-
// not sure of the formating, probably unicode.
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
JS_File.load_from_stream = (rs) => {
|
|
220
|
-
const res = new JS_File({rs: rs});
|
|
221
|
-
}
|
|
222
|
-
JS_File.load_from_path = (path) => {
|
|
223
|
-
|
|
224
|
-
}
|
|
225
|
-
|
|
1
|
+
// Could do this in a simpler way than full AST manipulation.
|
|
2
|
+
|
|
3
|
+
// Want to write out jsgui in such a way that the lower levels are all accessed as local functions and objects within an inner scope.
|
|
4
|
+
|
|
5
|
+
const {each, Evented_Class} = require('lang-tools');
|
|
6
|
+
//const { default: JS_Builder } = require('./JS_Builder');
|
|
7
|
+
|
|
8
|
+
// Interpret / arrange a file in terms of the other objects within this system.
|
|
9
|
+
|
|
10
|
+
// References at the beginning - will also work in terms of references to declarations, platforms, and declaration sequences.
|
|
11
|
+
|
|
12
|
+
// Make it operate in a streaming way?
|
|
13
|
+
// Event driven too?
|
|
14
|
+
// So it can have events as it goes through the file or the stream.
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
const whitespace_chars = {
|
|
18
|
+
'32': true
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const get_char_type = e_rlc => {
|
|
22
|
+
const {char, char_code} = e_rlc;
|
|
23
|
+
|
|
24
|
+
if (char_code === 32 || char_code === 9) return 'whitespace';
|
|
25
|
+
if (char === '0' || char === '1' || char === '2' || char === '3' || char === '4' || char === '5' || char === '6' || char === '7' || char === '8' || char === '9') return 'digit'
|
|
26
|
+
if (char === '<' || char === '>' || char === '(' || char === ')' || char === '{' ||
|
|
27
|
+
char === '}' || char === ':' || char === ';' || char === '?' || char === '!' || char === '.' ||
|
|
28
|
+
char === '"' || char === '\'' || char === '|' || char === '~' || char === '#' ||
|
|
29
|
+
char === '+' || char === '*' || char === '/' || char === '\\' || char === '-') return 'punctuation'
|
|
30
|
+
if (char_code >= 65 && char_code <= 90) return 'letter' // ucase
|
|
31
|
+
if (char_code >= 97 && char_code <= 122) return 'letter' // lcase
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
throw 'unknown';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
// token types: number
|
|
39
|
+
|
|
40
|
+
// May be best to use an existing full AST tokeniser and parser.
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class JS_File extends Evented_Class {
|
|
48
|
+
constructor(spec = {}) {
|
|
49
|
+
super();
|
|
50
|
+
|
|
51
|
+
const rs = (() => spec.rs || undefined)();
|
|
52
|
+
const line_break_hex = (() => spec.line_break_hex || '0A')();
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
//this.on('readline', e_readline => {
|
|
57
|
+
|
|
58
|
+
//});
|
|
59
|
+
|
|
60
|
+
if (rs) {
|
|
61
|
+
// Interpret it in chunks.
|
|
62
|
+
// Read it line by line, after character by character.
|
|
63
|
+
// Very event driven parser, or partial parser at least.
|
|
64
|
+
|
|
65
|
+
//let buf1;
|
|
66
|
+
|
|
67
|
+
const ta_line_buffer = new Uint8Array(1024);
|
|
68
|
+
let byte_in_line_num = 0;
|
|
69
|
+
|
|
70
|
+
let line_num = 0;
|
|
71
|
+
let last_recieved_byte;
|
|
72
|
+
let recieved_byte;
|
|
73
|
+
// Separate the chunks and the raise an event for each line.
|
|
74
|
+
// Charactrer by character???
|
|
75
|
+
|
|
76
|
+
// Array or something of the tokens?
|
|
77
|
+
|
|
78
|
+
//let first_token_of_line_char_pos = -1;
|
|
79
|
+
let began_first_token_of_line = false;
|
|
80
|
+
|
|
81
|
+
// An array of tokens as strings???
|
|
82
|
+
|
|
83
|
+
// Or just be able to identify the first tokens?
|
|
84
|
+
// The part before the equals sign?
|
|
85
|
+
|
|
86
|
+
// Best to creat OO oprogrammatic objects from these.
|
|
87
|
+
// But maybe best to use an existing parsing tool.
|
|
88
|
+
|
|
89
|
+
// Identifying all variable declarations may be possible.
|
|
90
|
+
// All function calls too...
|
|
91
|
+
|
|
92
|
+
// Identifying all local variable references.
|
|
93
|
+
// Putting it into JS objects would make sense.
|
|
94
|
+
// Into highly OO JS objects in the right structure.
|
|
95
|
+
|
|
96
|
+
// Could raise an event whenever it finds a token.
|
|
97
|
+
// Then will need to make sense of these tokens.
|
|
98
|
+
|
|
99
|
+
// Being able to get a list of which declarations were made where in the code would helo.
|
|
100
|
+
|
|
101
|
+
// block, conditional, switch, loop
|
|
102
|
+
|
|
103
|
+
// Maybe an existing parser would make a lot more sense.
|
|
104
|
+
// Be better able to identify
|
|
105
|
+
|
|
106
|
+
// https://esprima.org/
|
|
107
|
+
//
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
this.on('recieve-line-char', e_rlc => {
|
|
115
|
+
console.log('e_rlc', e_rlc);
|
|
116
|
+
const char_type = get_char_type(e_rlc)
|
|
117
|
+
console.log('char_type', char_type);
|
|
118
|
+
/*
|
|
119
|
+
if (!began_first_token_of_line) {
|
|
120
|
+
if (whitespace_chars[e_rlc.char_code]) {
|
|
121
|
+
|
|
122
|
+
} else {
|
|
123
|
+
began_first_token_of_line = true;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
*/
|
|
127
|
+
|
|
128
|
+
})
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
this.on('recieve-line', e_recieve_line => {
|
|
132
|
+
console.log('e_recieve_line', e_recieve_line);
|
|
133
|
+
|
|
134
|
+
// and strip the tabs and whitespace.
|
|
135
|
+
|
|
136
|
+
// process the line character by character.
|
|
137
|
+
|
|
138
|
+
//console.log('e_recieve_linestr', str);
|
|
139
|
+
|
|
140
|
+
// And break up the line into statements;
|
|
141
|
+
|
|
142
|
+
const s = e_recieve_line.str, l = s.length;
|
|
143
|
+
for (let c = 0; c < l; c++) {
|
|
144
|
+
const ch = s[c];
|
|
145
|
+
this.raise('recieve-line-char', {
|
|
146
|
+
line_num: line_num,
|
|
147
|
+
char: ch,
|
|
148
|
+
char_code: s.charCodeAt(c)
|
|
149
|
+
})
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
console.log('rs', rs);
|
|
156
|
+
this.on('recieve-byte', e_receive_byte => {
|
|
157
|
+
last_recieved_byte = recieved_byte;
|
|
158
|
+
recieved_byte = e_receive_byte.byte_value;
|
|
159
|
+
ta_line_buffer[byte_in_line_num++] = recieved_byte;
|
|
160
|
+
//console.log('e_receive_byte', e_receive_byte);
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
if (recieved_byte === 10) {
|
|
165
|
+
// lf
|
|
166
|
+
if (last_recieved_byte === 13) {
|
|
167
|
+
// cr, for windows
|
|
168
|
+
|
|
169
|
+
const line_until_crlf = new Uint8Array(ta_line_buffer.subarray(0, byte_in_line_num - 2));
|
|
170
|
+
|
|
171
|
+
this.raise('recieve-line', {
|
|
172
|
+
ta_line: line_until_crlf,
|
|
173
|
+
bytes_length: byte_in_line_num,
|
|
174
|
+
str: String.fromCharCode.apply(null, line_until_crlf)
|
|
175
|
+
})
|
|
176
|
+
|
|
177
|
+
} else {
|
|
178
|
+
|
|
179
|
+
const line_until_lf = new Uint8Array(ta_line_buffer.subarray(0, byte_in_line_num - 1));
|
|
180
|
+
this.raise('recieve-line', {
|
|
181
|
+
ta_line: line_until_lf,
|
|
182
|
+
bytes_length: byte_in_line_num,
|
|
183
|
+
str: String.fromCharCode.apply(null, line_until_lf)
|
|
184
|
+
})
|
|
185
|
+
}
|
|
186
|
+
ta_line_buffer.fill(0);
|
|
187
|
+
line_num++;
|
|
188
|
+
byte_in_line_num = 0;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
});
|
|
194
|
+
|
|
195
|
+
rs.on('data', chunk => {
|
|
196
|
+
//if (!buf1) {buf1 = chunk} else {
|
|
197
|
+
// buf1 = Buffer.concat([buf1, chunk]);
|
|
198
|
+
const l = chunk.length;
|
|
199
|
+
console.log('l', l);
|
|
200
|
+
for (let c = 0; c < l; c++) {
|
|
201
|
+
this.raise('recieve-byte', {
|
|
202
|
+
byte_value: chunk.readUInt8(c)
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
//}
|
|
206
|
+
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
// then divide by line break character?
|
|
210
|
+
// not sure of the formating, probably unicode.
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
JS_File.load_from_stream = (rs) => {
|
|
220
|
+
const res = new JS_File({rs: rs});
|
|
221
|
+
}
|
|
222
|
+
JS_File.load_from_path = (path) => {
|
|
223
|
+
|
|
224
|
+
}
|
|
225
|
+
|
|
226
226
|
module.exports = JS_File;
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
/*
|
|
2
|
-
|
|
3
|
-
const ast_query = function() {
|
|
4
|
-
const a = arguments;
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
// babel node tools.
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
// get_identifier_names
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const has_require_call = (babel_node) => {
|
|
20
|
-
|
|
1
|
+
/*
|
|
2
|
+
|
|
3
|
+
const ast_query = function() {
|
|
4
|
+
const a = arguments;
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
// babel node tools.
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
// get_identifier_names
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
const has_require_call = (babel_node) => {
|
|
20
|
+
|
|
21
21
|
}
|