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,254 +1,254 @@
|
|
|
1
|
-
const {each} = require('lang-tools');
|
|
2
|
-
|
|
3
|
-
class JS_AST_Node_Core {
|
|
4
|
-
constructor(spec = {}) {
|
|
5
|
-
|
|
6
|
-
// When constructered, and given source, is root, and does not already have a babel node in the spec, will parse the source with the babel parser.
|
|
7
|
-
//
|
|
8
|
-
|
|
9
|
-
// Depth
|
|
10
|
-
// Path
|
|
11
|
-
|
|
12
|
-
// Source
|
|
13
|
-
let root_node, parent_node, sibling_index;
|
|
14
|
-
const child_nodes = [];
|
|
15
|
-
|
|
16
|
-
let depth, path;
|
|
17
|
-
let full_source; // only for the root.
|
|
18
|
-
|
|
19
|
-
//console.log('JS_AST_Node_Core Object.keys(spec)', Object.keys(spec));
|
|
20
|
-
|
|
21
|
-
if (spec.root_node) {
|
|
22
|
-
if (spec.root_node === true) {
|
|
23
|
-
root_node = this;
|
|
24
|
-
} else {
|
|
25
|
-
root_node = spec.root_node;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
if (spec.parent_node) {
|
|
29
|
-
parent_node = spec.parent_node;
|
|
30
|
-
}
|
|
31
|
-
if (typeof spec.sibling_index === 'number') {
|
|
32
|
-
sibling_index = spec.sibling_index;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
if (!parent_node) {
|
|
36
|
-
root_node = this;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
if (root_node === this) {
|
|
40
|
-
if (spec.source) {
|
|
41
|
-
full_source = spec.source;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const idx_named_nodes = {};
|
|
47
|
-
|
|
48
|
-
const get_arr_named_node = (name) => {
|
|
49
|
-
idx_named_nodes[name] = idx_named_nodes[name] || [];
|
|
50
|
-
return idx_named_nodes[name];
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const index_named_node = (name, node) => get_arr_named_node(name).push(node);
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
let next_sibling_node, previous_sibling_node;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
Object.defineProperty(this, 'source', {
|
|
62
|
-
get() {
|
|
63
|
-
//console.log('full_source', full_source);
|
|
64
|
-
if (full_source) {
|
|
65
|
-
return full_source;
|
|
66
|
-
} else {
|
|
67
|
-
if (this.root_node && this.root_node !== this) {
|
|
68
|
-
const rn = this.root_node;
|
|
69
|
-
|
|
70
|
-
const {babel} = this;
|
|
71
|
-
if (babel) {
|
|
72
|
-
const {start, end} = babel;
|
|
73
|
-
const full_source = this.root_node.source;
|
|
74
|
-
//console.log('full_source', full_source);
|
|
75
|
-
return full_source.substring(start, end);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
//return source;
|
|
81
|
-
},
|
|
82
|
-
enumerable: true,
|
|
83
|
-
configurable: false
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
if (typeof spec.depth === 'number') {
|
|
87
|
-
depth = spec.depth;
|
|
88
|
-
|
|
89
|
-
} else {
|
|
90
|
-
depth = 0;
|
|
91
|
-
}
|
|
92
|
-
if (typeof spec.path === 'string') {
|
|
93
|
-
path = spec.path;
|
|
94
|
-
} else {
|
|
95
|
-
path = '/';
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
this.append_child = (js_ast_node) => {
|
|
99
|
-
child_nodes.push(js_ast_node);
|
|
100
|
-
}
|
|
101
|
-
this.create_append_child = (spec) => {
|
|
102
|
-
const spec2 = {
|
|
103
|
-
babel_node: spec.babel_node,
|
|
104
|
-
parent_node: this,
|
|
105
|
-
root_node: this.root_node,
|
|
106
|
-
path: spec.path
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
//const res = new this.constructor(spec2);
|
|
110
|
-
// a from_spec function could load up specific subtypes.
|
|
111
|
-
|
|
112
|
-
const res = this.constructor.from_spec(spec2);
|
|
113
|
-
//console.log('');
|
|
114
|
-
//console.log('create_append_child res.path', res.path);
|
|
115
|
-
//console.log('create_append_child res.type', res.type);
|
|
116
|
-
this.append_child(res);
|
|
117
|
-
return res;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
Object.defineProperty(this, 'parent_node', {
|
|
121
|
-
get() {
|
|
122
|
-
return parent_node;
|
|
123
|
-
},
|
|
124
|
-
enumerable: true,
|
|
125
|
-
configurable: false
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
this.remove = () => {
|
|
130
|
-
const {parent_node} = this;
|
|
131
|
-
if (parent_node) {
|
|
132
|
-
const i = parent_node.child_nodes.indexOf(this);
|
|
133
|
-
if (typeof i === 'number') {
|
|
134
|
-
parent_node.child_nodes.splice(i, 1);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
/*
|
|
141
|
-
// Remove node - tell the parent to remove that node from its childnodes.
|
|
142
|
-
|
|
143
|
-
function removeItemOnce(arr, value) {
|
|
144
|
-
var index = arr.indexOf(value);
|
|
145
|
-
if (index > -1) {
|
|
146
|
-
arr.splice(index, 1);
|
|
147
|
-
}
|
|
148
|
-
return arr;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
*/
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
Object.defineProperty(this, 'root_node', {
|
|
155
|
-
get() {
|
|
156
|
-
return root_node;
|
|
157
|
-
},
|
|
158
|
-
enumerable: true,
|
|
159
|
-
configurable: false
|
|
160
|
-
});
|
|
161
|
-
Object.defineProperty(this, 'is_root', {
|
|
162
|
-
get() {
|
|
163
|
-
return root_node === this;
|
|
164
|
-
},
|
|
165
|
-
enumerable: true,
|
|
166
|
-
configurable: false
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
Object.defineProperty(this, 'child_nodes', {
|
|
170
|
-
get() {
|
|
171
|
-
return child_nodes;
|
|
172
|
-
},
|
|
173
|
-
enumerable: true,
|
|
174
|
-
configurable: false
|
|
175
|
-
});
|
|
176
|
-
Object.defineProperty(this, 'depth', {
|
|
177
|
-
get() {
|
|
178
|
-
return depth;
|
|
179
|
-
},
|
|
180
|
-
enumerable: true,
|
|
181
|
-
configurable: false
|
|
182
|
-
});
|
|
183
|
-
Object.defineProperty(this, 'path', {
|
|
184
|
-
get() {
|
|
185
|
-
return path;
|
|
186
|
-
},
|
|
187
|
-
enumerable: true,
|
|
188
|
-
configurable: false
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
const deep_iterate_INNER = (depth, path, common, callback) => {
|
|
192
|
-
const {max_depth, stop} = common;
|
|
193
|
-
let sibling_number = 0;
|
|
194
|
-
|
|
195
|
-
callback(this, path, depth, stop);
|
|
196
|
-
//console.log('max_depth', max_depth);
|
|
197
|
-
|
|
198
|
-
//console.log('child_nodes', child_nodes);
|
|
199
|
-
//console.log('child_nodes.length', child_nodes.length);
|
|
200
|
-
|
|
201
|
-
if (child_nodes.length > 0 && max_depth === undefined || max_depth === false || depth <= max_depth) {
|
|
202
|
-
each(child_nodes, child_node => {
|
|
203
|
-
//console.log('child_node', child_node);
|
|
204
|
-
child_node.deep_iterate_INNER(depth + 1, path + sibling_number++ + '/', common, callback);
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
const deep_iterate = (max_depth, callback) => {
|
|
210
|
-
if (!callback && typeof max_depth === 'function') {
|
|
211
|
-
callback = max_depth;
|
|
212
|
-
max_depth = undefined;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
const common = {
|
|
216
|
-
max_depth: max_depth,
|
|
217
|
-
stopped: false,
|
|
218
|
-
stop: () => {
|
|
219
|
-
common.stopped = true;
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
deep_iterate_INNER(depth, path, common, callback);
|
|
226
|
-
}
|
|
227
|
-
this.deep_iterate_INNER = deep_iterate_INNER;
|
|
228
|
-
this.deep_iterate = deep_iterate;
|
|
229
|
-
|
|
230
|
-
// Moved down from Query - these are the basics, makes sense in core???
|
|
231
|
-
|
|
232
|
-
const each_child_node = callback => each(this.child_nodes, callback);
|
|
233
|
-
|
|
234
|
-
const filter_each_child_node = (filter, callback) => each_child_node(js_ast_node => {
|
|
235
|
-
if (filter(js_ast_node)) {
|
|
236
|
-
callback(js_ast_node);
|
|
237
|
-
}
|
|
238
|
-
});
|
|
239
|
-
|
|
240
|
-
this.each_child_node = each_child_node;
|
|
241
|
-
this.filter_each_child_node = filter_each_child_node;
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
JS_AST_Node_Core.from_spec = spec => {
|
|
249
|
-
return new JS_AST_Node_Core(spec);
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
// from_string?
|
|
253
|
-
|
|
1
|
+
const {each} = require('lang-tools');
|
|
2
|
+
|
|
3
|
+
class JS_AST_Node_Core {
|
|
4
|
+
constructor(spec = {}) {
|
|
5
|
+
|
|
6
|
+
// When constructered, and given source, is root, and does not already have a babel node in the spec, will parse the source with the babel parser.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
// Depth
|
|
10
|
+
// Path
|
|
11
|
+
|
|
12
|
+
// Source
|
|
13
|
+
let root_node, parent_node, sibling_index;
|
|
14
|
+
const child_nodes = [];
|
|
15
|
+
|
|
16
|
+
let depth, path;
|
|
17
|
+
let full_source; // only for the root.
|
|
18
|
+
|
|
19
|
+
//console.log('JS_AST_Node_Core Object.keys(spec)', Object.keys(spec));
|
|
20
|
+
|
|
21
|
+
if (spec.root_node) {
|
|
22
|
+
if (spec.root_node === true) {
|
|
23
|
+
root_node = this;
|
|
24
|
+
} else {
|
|
25
|
+
root_node = spec.root_node;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (spec.parent_node) {
|
|
29
|
+
parent_node = spec.parent_node;
|
|
30
|
+
}
|
|
31
|
+
if (typeof spec.sibling_index === 'number') {
|
|
32
|
+
sibling_index = spec.sibling_index;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (!parent_node) {
|
|
36
|
+
root_node = this;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (root_node === this) {
|
|
40
|
+
if (spec.source) {
|
|
41
|
+
full_source = spec.source;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
const idx_named_nodes = {};
|
|
47
|
+
|
|
48
|
+
const get_arr_named_node = (name) => {
|
|
49
|
+
idx_named_nodes[name] = idx_named_nodes[name] || [];
|
|
50
|
+
return idx_named_nodes[name];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const index_named_node = (name, node) => get_arr_named_node(name).push(node);
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
let next_sibling_node, previous_sibling_node;
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
Object.defineProperty(this, 'source', {
|
|
62
|
+
get() {
|
|
63
|
+
//console.log('full_source', full_source);
|
|
64
|
+
if (full_source) {
|
|
65
|
+
return full_source;
|
|
66
|
+
} else {
|
|
67
|
+
if (this.root_node && this.root_node !== this) {
|
|
68
|
+
const rn = this.root_node;
|
|
69
|
+
|
|
70
|
+
const {babel} = this;
|
|
71
|
+
if (babel) {
|
|
72
|
+
const {start, end} = babel;
|
|
73
|
+
const full_source = this.root_node.source;
|
|
74
|
+
//console.log('full_source', full_source);
|
|
75
|
+
return full_source.substring(start, end);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
//return source;
|
|
81
|
+
},
|
|
82
|
+
enumerable: true,
|
|
83
|
+
configurable: false
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
if (typeof spec.depth === 'number') {
|
|
87
|
+
depth = spec.depth;
|
|
88
|
+
|
|
89
|
+
} else {
|
|
90
|
+
depth = 0;
|
|
91
|
+
}
|
|
92
|
+
if (typeof spec.path === 'string') {
|
|
93
|
+
path = spec.path;
|
|
94
|
+
} else {
|
|
95
|
+
path = '/';
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
this.append_child = (js_ast_node) => {
|
|
99
|
+
child_nodes.push(js_ast_node);
|
|
100
|
+
}
|
|
101
|
+
this.create_append_child = (spec) => {
|
|
102
|
+
const spec2 = {
|
|
103
|
+
babel_node: spec.babel_node,
|
|
104
|
+
parent_node: this,
|
|
105
|
+
root_node: this.root_node,
|
|
106
|
+
path: spec.path
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
//const res = new this.constructor(spec2);
|
|
110
|
+
// a from_spec function could load up specific subtypes.
|
|
111
|
+
|
|
112
|
+
const res = this.constructor.from_spec(spec2);
|
|
113
|
+
//console.log('');
|
|
114
|
+
//console.log('create_append_child res.path', res.path);
|
|
115
|
+
//console.log('create_append_child res.type', res.type);
|
|
116
|
+
this.append_child(res);
|
|
117
|
+
return res;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
Object.defineProperty(this, 'parent_node', {
|
|
121
|
+
get() {
|
|
122
|
+
return parent_node;
|
|
123
|
+
},
|
|
124
|
+
enumerable: true,
|
|
125
|
+
configurable: false
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
this.remove = () => {
|
|
130
|
+
const {parent_node} = this;
|
|
131
|
+
if (parent_node) {
|
|
132
|
+
const i = parent_node.child_nodes.indexOf(this);
|
|
133
|
+
if (typeof i === 'number') {
|
|
134
|
+
parent_node.child_nodes.splice(i, 1);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
/*
|
|
141
|
+
// Remove node - tell the parent to remove that node from its childnodes.
|
|
142
|
+
|
|
143
|
+
function removeItemOnce(arr, value) {
|
|
144
|
+
var index = arr.indexOf(value);
|
|
145
|
+
if (index > -1) {
|
|
146
|
+
arr.splice(index, 1);
|
|
147
|
+
}
|
|
148
|
+
return arr;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
*/
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
Object.defineProperty(this, 'root_node', {
|
|
155
|
+
get() {
|
|
156
|
+
return root_node;
|
|
157
|
+
},
|
|
158
|
+
enumerable: true,
|
|
159
|
+
configurable: false
|
|
160
|
+
});
|
|
161
|
+
Object.defineProperty(this, 'is_root', {
|
|
162
|
+
get() {
|
|
163
|
+
return root_node === this;
|
|
164
|
+
},
|
|
165
|
+
enumerable: true,
|
|
166
|
+
configurable: false
|
|
167
|
+
});
|
|
168
|
+
|
|
169
|
+
Object.defineProperty(this, 'child_nodes', {
|
|
170
|
+
get() {
|
|
171
|
+
return child_nodes;
|
|
172
|
+
},
|
|
173
|
+
enumerable: true,
|
|
174
|
+
configurable: false
|
|
175
|
+
});
|
|
176
|
+
Object.defineProperty(this, 'depth', {
|
|
177
|
+
get() {
|
|
178
|
+
return depth;
|
|
179
|
+
},
|
|
180
|
+
enumerable: true,
|
|
181
|
+
configurable: false
|
|
182
|
+
});
|
|
183
|
+
Object.defineProperty(this, 'path', {
|
|
184
|
+
get() {
|
|
185
|
+
return path;
|
|
186
|
+
},
|
|
187
|
+
enumerable: true,
|
|
188
|
+
configurable: false
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
const deep_iterate_INNER = (depth, path, common, callback) => {
|
|
192
|
+
const {max_depth, stop} = common;
|
|
193
|
+
let sibling_number = 0;
|
|
194
|
+
|
|
195
|
+
callback(this, path, depth, stop);
|
|
196
|
+
//console.log('max_depth', max_depth);
|
|
197
|
+
|
|
198
|
+
//console.log('child_nodes', child_nodes);
|
|
199
|
+
//console.log('child_nodes.length', child_nodes.length);
|
|
200
|
+
|
|
201
|
+
if (child_nodes.length > 0 && max_depth === undefined || max_depth === false || depth <= max_depth) {
|
|
202
|
+
each(child_nodes, child_node => {
|
|
203
|
+
//console.log('child_node', child_node);
|
|
204
|
+
child_node.deep_iterate_INNER(depth + 1, path + sibling_number++ + '/', common, callback);
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
const deep_iterate = (max_depth, callback) => {
|
|
210
|
+
if (!callback && typeof max_depth === 'function') {
|
|
211
|
+
callback = max_depth;
|
|
212
|
+
max_depth = undefined;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
const common = {
|
|
216
|
+
max_depth: max_depth,
|
|
217
|
+
stopped: false,
|
|
218
|
+
stop: () => {
|
|
219
|
+
common.stopped = true;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
deep_iterate_INNER(depth, path, common, callback);
|
|
226
|
+
}
|
|
227
|
+
this.deep_iterate_INNER = deep_iterate_INNER;
|
|
228
|
+
this.deep_iterate = deep_iterate;
|
|
229
|
+
|
|
230
|
+
// Moved down from Query - these are the basics, makes sense in core???
|
|
231
|
+
|
|
232
|
+
const each_child_node = callback => each(this.child_nodes, callback);
|
|
233
|
+
|
|
234
|
+
const filter_each_child_node = (filter, callback) => each_child_node(js_ast_node => {
|
|
235
|
+
if (filter(js_ast_node)) {
|
|
236
|
+
callback(js_ast_node);
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
this.each_child_node = each_child_node;
|
|
241
|
+
this.filter_each_child_node = filter_each_child_node;
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
JS_AST_Node_Core.from_spec = spec => {
|
|
249
|
+
return new JS_AST_Node_Core(spec);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
// from_string?
|
|
253
|
+
|
|
254
254
|
module.exports = JS_AST_Node_Core;
|