jsgui3-server 0.0.121 → 0.0.122
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 +248 -248
- package/examples/box/2) twenty square boxes/css flex wrap/server.js +112 -112
- 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 +320 -320
- package/examples/controls/10) window, mirrored text inputs/server.js +117 -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 +435 -452
- package/examples/controls/12) window, Select_Options control/server.js +117 -117
- 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 +204 -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 +247 -209
- package/examples/controls/8) window, checkbox/server.js +117 -117
- package/examples/controls/9) window, date picker/client.js +303 -303
- package/examples/controls/9) window, date picker/server.js +117 -117
- package/examples/controls/9b) window, shared data.model mirrored date pickers/client.js +398 -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/15) window, text field/server.js +0 -39
- 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,338 +1,338 @@
|
|
|
1
|
-
const babel_node_tools = require('../babel/babel_node_tools');
|
|
2
|
-
const {each} = require('lang-tools');
|
|
3
|
-
const {deep_iterate_babel_node} = babel_node_tools;
|
|
4
|
-
const parser = require('@babel/parser');
|
|
5
|
-
const JS_AST_Node_Core = require('./JS_AST_Node_0-Core');
|
|
6
|
-
const { resolvePlugin } = require('@babel/core');
|
|
7
|
-
|
|
8
|
-
const {type_abbreviations, map_expression_categories, map_literal_categories, map_statement_categories, map_categories} = require('../babel/babel_consts');
|
|
9
|
-
/*
|
|
10
|
-
|
|
11
|
-
module.exports = {
|
|
12
|
-
type_abbreviations: type_abbreviations,
|
|
13
|
-
map_expression_categories: map_expression_categories,
|
|
14
|
-
map_literal_categories: map_literal_categories,
|
|
15
|
-
map_categories: map_categories
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
const get_category = (type) => {
|
|
21
|
-
|
|
22
|
-
const res = map_categories[type];
|
|
23
|
-
if (!res) {
|
|
24
|
-
console.log('type');
|
|
25
|
-
throw 'NYI';
|
|
26
|
-
}
|
|
27
|
-
return res;
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
// Literal
|
|
31
|
-
|
|
32
|
-
// Declaration
|
|
33
|
-
|
|
34
|
-
// Declarator
|
|
35
|
-
|
|
36
|
-
// Expression
|
|
37
|
-
|
|
38
|
-
// Statement
|
|
39
|
-
|
|
40
|
-
// Pattern
|
|
41
|
-
|
|
42
|
-
// Identifier - Seem not to fit a category, or be one of its own.
|
|
43
|
-
}
|
|
44
|
-
class JS_AST_Node_Babel extends JS_AST_Node_Core {
|
|
45
|
-
constructor(spec = {}) {
|
|
46
|
-
super(spec);
|
|
47
|
-
// sets the childnodes here.
|
|
48
|
-
// will also make available the relevant bable properties.
|
|
49
|
-
// .babel.type
|
|
50
|
-
let babel_ast; // only for the root node. A root node of JS_AST can have a babel as
|
|
51
|
-
let babel_node, babel_node_file, babel_node_program;
|
|
52
|
-
const babel = {
|
|
53
|
-
// Maybe a parse function here.
|
|
54
|
-
// and a .parsed property.
|
|
55
|
-
}
|
|
56
|
-
if (spec.babel_node) {
|
|
57
|
-
babel_node = babel.node = spec.babel_node;
|
|
58
|
-
// Then it needs to parse it within its own system.
|
|
59
|
-
//
|
|
60
|
-
//const {type} = babel_node;
|
|
61
|
-
//console.log('type', type);
|
|
62
|
-
// Don't do this automatically here.
|
|
63
|
-
//
|
|
64
|
-
// Iterate through the babel node, building a structure that mirrors it and links back to it.
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const filter_deep_iterate_babel_node = (babel_node, fn_filter, callback) => deep_iterate_babel_node(babel_node, (bn, path, depth) => fn_filter(bn) ? callback(bn, path, depth) : undefined)
|
|
68
|
-
const inner_deep_iterate_babel_node = (babel_node, callback) => filter_deep_iterate_babel_node(babel_node, bn => bn !== babel_node, callback)
|
|
69
|
-
|
|
70
|
-
const get_parent_path = path => {
|
|
71
|
-
let res = path.split('/');
|
|
72
|
-
let res2 = res.slice(0, res.length - 2);
|
|
73
|
-
return res2.join('/') + '/';
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/*
|
|
77
|
-
const get_babel_node_child_nodes = (babel_node) => {
|
|
78
|
-
const {type} = babel_node;
|
|
79
|
-
if (type === 'VariableDeclaration') {
|
|
80
|
-
return babel_node.declarations;
|
|
81
|
-
} else if (type === 'VariableDeclarator') {
|
|
82
|
-
return [babel_node.id, babel_node.init];
|
|
83
|
-
} else if (type === 'Identifier') {
|
|
84
|
-
return [];
|
|
85
|
-
} else if (type === 'NumericLiteral') {
|
|
86
|
-
return [];
|
|
87
|
-
} else if (type === 'ArrayExpression') {
|
|
88
|
-
return babel_node.elements;
|
|
89
|
-
} else {
|
|
90
|
-
console.log('type', type);
|
|
91
|
-
throw 'NYI';
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
*/
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
const load_mirror_structure = () => {
|
|
98
|
-
if (this.root_node === this) {
|
|
99
|
-
const map_nodes_by_path = {};
|
|
100
|
-
const map_babel_nodes_by_path = {};
|
|
101
|
-
const map_js_ast_nodes_by_path = {
|
|
102
|
-
'/': this
|
|
103
|
-
};
|
|
104
|
-
deep_iterate_babel_node(babel_node, (inner_babel_node, path, depth, stop) => {
|
|
105
|
-
//console.log('node.name', node.id?.name);
|
|
106
|
-
//console.log('depth', depth);
|
|
107
|
-
|
|
108
|
-
if (babel_node === inner_babel_node) {
|
|
109
|
-
//throw 'stop';
|
|
110
|
-
} else {
|
|
111
|
-
//console.log('1) path', path);
|
|
112
|
-
//console.log('babel_node.type', babel_node.type);
|
|
113
|
-
const parent_path = get_parent_path(path);
|
|
114
|
-
//console.log('parent_path', parent_path);
|
|
115
|
-
map_babel_nodes_by_path[path] = inner_babel_node;
|
|
116
|
-
const parent_babel_node = map_babel_nodes_by_path[parent_path];
|
|
117
|
-
const parent_js_ast_node = map_js_ast_nodes_by_path[parent_path];
|
|
118
|
-
const new_node = parent_js_ast_node.create_append_child({
|
|
119
|
-
babel_node: inner_babel_node,
|
|
120
|
-
path: path
|
|
121
|
-
});
|
|
122
|
-
map_js_ast_nodes_by_path[path] = new_node;
|
|
123
|
-
}
|
|
124
|
-
})
|
|
125
|
-
} else {
|
|
126
|
-
throw 'stop';
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
Object.defineProperty(this, 'babel', {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
get() {
|
|
134
|
-
//console.log('babel object requested');
|
|
135
|
-
return babel;
|
|
136
|
-
},
|
|
137
|
-
enumerable: true,
|
|
138
|
-
configurable: false
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
//if (spec.full_source) {
|
|
142
|
-
// full_source = spec.full_source;
|
|
143
|
-
//}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
// Abbreviated_type....
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
//const
|
|
152
|
-
|
|
153
|
-
// May use something (new) from lang-mini or lang-tools to parse the tree easily.
|
|
154
|
-
// Signature_Tree object. Will be abstract in that it's not closely integrated with the AST tree functionality, could be reused elsewhere.
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
Object.defineProperty(babel, 'start', {
|
|
160
|
-
get() { return babel_node.start; },
|
|
161
|
-
//set(newValue) { bValue = newValue; },
|
|
162
|
-
enumerable: true,
|
|
163
|
-
configurable: false
|
|
164
|
-
});
|
|
165
|
-
Object.defineProperty(babel, 'end', {
|
|
166
|
-
get() { return babel_node.end; },
|
|
167
|
-
//set(newValue) { bValue = newValue; },
|
|
168
|
-
enumerable: true,
|
|
169
|
-
configurable: false
|
|
170
|
-
});
|
|
171
|
-
Object.defineProperty(babel, 'name', {
|
|
172
|
-
get() { return babel_node.name; },
|
|
173
|
-
//set(newValue) { bValue = newValue; },
|
|
174
|
-
enumerable: true,
|
|
175
|
-
configurable: true
|
|
176
|
-
});
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
// only for identifiers.
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
Object.defineProperty(babel, 'node', {
|
|
184
|
-
get() {
|
|
185
|
-
return babel_node;
|
|
186
|
-
},
|
|
187
|
-
//set(newValue) { bValue = newValue; },
|
|
188
|
-
enumerable: true,
|
|
189
|
-
configurable: false
|
|
190
|
-
});
|
|
191
|
-
Object.defineProperty(babel, 'type', {
|
|
192
|
-
get() {
|
|
193
|
-
//console.log('babel', babel);
|
|
194
|
-
//console.log('babel_node', babel_node);
|
|
195
|
-
//console.log('babel.node', babel.node);
|
|
196
|
-
return babel_node.type;
|
|
197
|
-
},
|
|
198
|
-
//set(newValue) { bValue = newValue; },
|
|
199
|
-
enumerable: true,
|
|
200
|
-
configurable: false
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
//let category;
|
|
204
|
-
Object.defineProperty(babel, 'category', {
|
|
205
|
-
get() {
|
|
206
|
-
//console.log('babel', babel);
|
|
207
|
-
//console.log('babel_node', babel_node);
|
|
208
|
-
//console.log('babel.node', babel.node);
|
|
209
|
-
//category = ;
|
|
210
|
-
return get_category(babel_node.type);
|
|
211
|
-
},
|
|
212
|
-
//set(newValue) { bValue = newValue; },
|
|
213
|
-
enumerable: true,
|
|
214
|
-
configurable: false
|
|
215
|
-
});
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
Object.defineProperty(babel, 'is_identifier', {
|
|
219
|
-
get() {
|
|
220
|
-
return babel.type === 'Identifier';
|
|
221
|
-
},
|
|
222
|
-
enumerable: true,
|
|
223
|
-
configurable: false
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
Object.defineProperty(babel, 'is_declaration', {
|
|
227
|
-
get() {
|
|
228
|
-
return babel.type === 'VariableDeclaration' || babel.type === 'ClassDeclaration';
|
|
229
|
-
},
|
|
230
|
-
enumerable: true,
|
|
231
|
-
configurable: false
|
|
232
|
-
});
|
|
233
|
-
Object.defineProperty(babel, 'is_expression', {
|
|
234
|
-
get() {
|
|
235
|
-
return !!map_expression_categories[babel.type];
|
|
236
|
-
},
|
|
237
|
-
enumerable: true,
|
|
238
|
-
configurable: false
|
|
239
|
-
});
|
|
240
|
-
Object.defineProperty(babel, 'is_statement', {
|
|
241
|
-
get() {
|
|
242
|
-
return !!map_statement_categories[babel.type];
|
|
243
|
-
},
|
|
244
|
-
enumerable: true,
|
|
245
|
-
configurable: false
|
|
246
|
-
});
|
|
247
|
-
Object.defineProperty(babel, 'is_literal', {
|
|
248
|
-
get() {
|
|
249
|
-
return !!map_literal_categories[babel.type];
|
|
250
|
-
},
|
|
251
|
-
enumerable: true,
|
|
252
|
-
configurable: false
|
|
253
|
-
});
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
Object.defineProperty(babel, 'ast', {
|
|
260
|
-
get() {
|
|
261
|
-
|
|
262
|
-
if (this.root === this) {
|
|
263
|
-
|
|
264
|
-
} else {
|
|
265
|
-
// will return undefined, for the moment
|
|
266
|
-
}
|
|
267
|
-
},
|
|
268
|
-
set(val) { bValue = newValue; },
|
|
269
|
-
enumerable: true,
|
|
270
|
-
configurable: false
|
|
271
|
-
});
|
|
272
|
-
|
|
273
|
-
if (this.root_node === this) {
|
|
274
|
-
|
|
275
|
-
//console.log('babel_node', babel_node);
|
|
276
|
-
|
|
277
|
-
if (!babel_node) {
|
|
278
|
-
const {source} = this;
|
|
279
|
-
//console.log('source', source);
|
|
280
|
-
const babel_ast = parser.parse(source, {
|
|
281
|
-
sourceType: 'module',
|
|
282
|
-
plugins: [
|
|
283
|
-
'asyncGenerators',
|
|
284
|
-
'bigInt',
|
|
285
|
-
'classPrivateMethods',
|
|
286
|
-
'classPrivateProperties',
|
|
287
|
-
'classProperties',
|
|
288
|
-
'doExpressions',
|
|
289
|
-
//'exportDefaultFrom',
|
|
290
|
-
'nullishCoalescingOperator',
|
|
291
|
-
'numericSeparator',
|
|
292
|
-
'objectRestSpread',
|
|
293
|
-
'optionalCatchBinding',
|
|
294
|
-
'optionalChaining',
|
|
295
|
-
]});
|
|
296
|
-
|
|
297
|
-
//console.log('babel_ast', babel_ast);
|
|
298
|
-
|
|
299
|
-
babel_node_file = babel_ast;
|
|
300
|
-
babel_node_program = babel_ast.program;
|
|
301
|
-
|
|
302
|
-
//console.log('babel_node_program', babel_node_program);
|
|
303
|
-
|
|
304
|
-
const {body} = babel_node_program;
|
|
305
|
-
|
|
306
|
-
if (body.length === 1) {
|
|
307
|
-
const node0 = body[0];
|
|
308
|
-
|
|
309
|
-
babel_node = node0;
|
|
310
|
-
} else {
|
|
311
|
-
throw 'NYI';
|
|
312
|
-
}
|
|
313
|
-
//throw 'stop';
|
|
314
|
-
}
|
|
315
|
-
//throw 'stop';
|
|
316
|
-
if (babel_node) {
|
|
317
|
-
//console.log('1) babel_node', babel_node);
|
|
318
|
-
const {type} = babel_node;
|
|
319
|
-
//if (true || type === 'File') {
|
|
320
|
-
load_mirror_structure({
|
|
321
|
-
root_node: this.root_node
|
|
322
|
-
});
|
|
323
|
-
//}
|
|
324
|
-
} else {
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
JS_AST_Node_Babel.from_babel_node = (spec) => {
|
|
334
|
-
return new JS_AST_Node_Babel(spec);
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
|
|
1
|
+
const babel_node_tools = require('../babel/babel_node_tools');
|
|
2
|
+
const {each} = require('lang-tools');
|
|
3
|
+
const {deep_iterate_babel_node} = babel_node_tools;
|
|
4
|
+
const parser = require('@babel/parser');
|
|
5
|
+
const JS_AST_Node_Core = require('./JS_AST_Node_0-Core');
|
|
6
|
+
const { resolvePlugin } = require('@babel/core');
|
|
7
|
+
|
|
8
|
+
const {type_abbreviations, map_expression_categories, map_literal_categories, map_statement_categories, map_categories} = require('../babel/babel_consts');
|
|
9
|
+
/*
|
|
10
|
+
|
|
11
|
+
module.exports = {
|
|
12
|
+
type_abbreviations: type_abbreviations,
|
|
13
|
+
map_expression_categories: map_expression_categories,
|
|
14
|
+
map_literal_categories: map_literal_categories,
|
|
15
|
+
map_categories: map_categories
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
const get_category = (type) => {
|
|
21
|
+
|
|
22
|
+
const res = map_categories[type];
|
|
23
|
+
if (!res) {
|
|
24
|
+
console.log('type');
|
|
25
|
+
throw 'NYI';
|
|
26
|
+
}
|
|
27
|
+
return res;
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
// Literal
|
|
31
|
+
|
|
32
|
+
// Declaration
|
|
33
|
+
|
|
34
|
+
// Declarator
|
|
35
|
+
|
|
36
|
+
// Expression
|
|
37
|
+
|
|
38
|
+
// Statement
|
|
39
|
+
|
|
40
|
+
// Pattern
|
|
41
|
+
|
|
42
|
+
// Identifier - Seem not to fit a category, or be one of its own.
|
|
43
|
+
}
|
|
44
|
+
class JS_AST_Node_Babel extends JS_AST_Node_Core {
|
|
45
|
+
constructor(spec = {}) {
|
|
46
|
+
super(spec);
|
|
47
|
+
// sets the childnodes here.
|
|
48
|
+
// will also make available the relevant bable properties.
|
|
49
|
+
// .babel.type
|
|
50
|
+
let babel_ast; // only for the root node. A root node of JS_AST can have a babel as
|
|
51
|
+
let babel_node, babel_node_file, babel_node_program;
|
|
52
|
+
const babel = {
|
|
53
|
+
// Maybe a parse function here.
|
|
54
|
+
// and a .parsed property.
|
|
55
|
+
}
|
|
56
|
+
if (spec.babel_node) {
|
|
57
|
+
babel_node = babel.node = spec.babel_node;
|
|
58
|
+
// Then it needs to parse it within its own system.
|
|
59
|
+
//
|
|
60
|
+
//const {type} = babel_node;
|
|
61
|
+
//console.log('type', type);
|
|
62
|
+
// Don't do this automatically here.
|
|
63
|
+
//
|
|
64
|
+
// Iterate through the babel node, building a structure that mirrors it and links back to it.
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const filter_deep_iterate_babel_node = (babel_node, fn_filter, callback) => deep_iterate_babel_node(babel_node, (bn, path, depth) => fn_filter(bn) ? callback(bn, path, depth) : undefined)
|
|
68
|
+
const inner_deep_iterate_babel_node = (babel_node, callback) => filter_deep_iterate_babel_node(babel_node, bn => bn !== babel_node, callback)
|
|
69
|
+
|
|
70
|
+
const get_parent_path = path => {
|
|
71
|
+
let res = path.split('/');
|
|
72
|
+
let res2 = res.slice(0, res.length - 2);
|
|
73
|
+
return res2.join('/') + '/';
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/*
|
|
77
|
+
const get_babel_node_child_nodes = (babel_node) => {
|
|
78
|
+
const {type} = babel_node;
|
|
79
|
+
if (type === 'VariableDeclaration') {
|
|
80
|
+
return babel_node.declarations;
|
|
81
|
+
} else if (type === 'VariableDeclarator') {
|
|
82
|
+
return [babel_node.id, babel_node.init];
|
|
83
|
+
} else if (type === 'Identifier') {
|
|
84
|
+
return [];
|
|
85
|
+
} else if (type === 'NumericLiteral') {
|
|
86
|
+
return [];
|
|
87
|
+
} else if (type === 'ArrayExpression') {
|
|
88
|
+
return babel_node.elements;
|
|
89
|
+
} else {
|
|
90
|
+
console.log('type', type);
|
|
91
|
+
throw 'NYI';
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
*/
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
const load_mirror_structure = () => {
|
|
98
|
+
if (this.root_node === this) {
|
|
99
|
+
const map_nodes_by_path = {};
|
|
100
|
+
const map_babel_nodes_by_path = {};
|
|
101
|
+
const map_js_ast_nodes_by_path = {
|
|
102
|
+
'/': this
|
|
103
|
+
};
|
|
104
|
+
deep_iterate_babel_node(babel_node, (inner_babel_node, path, depth, stop) => {
|
|
105
|
+
//console.log('node.name', node.id?.name);
|
|
106
|
+
//console.log('depth', depth);
|
|
107
|
+
|
|
108
|
+
if (babel_node === inner_babel_node) {
|
|
109
|
+
//throw 'stop';
|
|
110
|
+
} else {
|
|
111
|
+
//console.log('1) path', path);
|
|
112
|
+
//console.log('babel_node.type', babel_node.type);
|
|
113
|
+
const parent_path = get_parent_path(path);
|
|
114
|
+
//console.log('parent_path', parent_path);
|
|
115
|
+
map_babel_nodes_by_path[path] = inner_babel_node;
|
|
116
|
+
const parent_babel_node = map_babel_nodes_by_path[parent_path];
|
|
117
|
+
const parent_js_ast_node = map_js_ast_nodes_by_path[parent_path];
|
|
118
|
+
const new_node = parent_js_ast_node.create_append_child({
|
|
119
|
+
babel_node: inner_babel_node,
|
|
120
|
+
path: path
|
|
121
|
+
});
|
|
122
|
+
map_js_ast_nodes_by_path[path] = new_node;
|
|
123
|
+
}
|
|
124
|
+
})
|
|
125
|
+
} else {
|
|
126
|
+
throw 'stop';
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
Object.defineProperty(this, 'babel', {
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
get() {
|
|
134
|
+
//console.log('babel object requested');
|
|
135
|
+
return babel;
|
|
136
|
+
},
|
|
137
|
+
enumerable: true,
|
|
138
|
+
configurable: false
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
//if (spec.full_source) {
|
|
142
|
+
// full_source = spec.full_source;
|
|
143
|
+
//}
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
// Abbreviated_type....
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
//const
|
|
152
|
+
|
|
153
|
+
// May use something (new) from lang-mini or lang-tools to parse the tree easily.
|
|
154
|
+
// Signature_Tree object. Will be abstract in that it's not closely integrated with the AST tree functionality, could be reused elsewhere.
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
Object.defineProperty(babel, 'start', {
|
|
160
|
+
get() { return babel_node.start; },
|
|
161
|
+
//set(newValue) { bValue = newValue; },
|
|
162
|
+
enumerable: true,
|
|
163
|
+
configurable: false
|
|
164
|
+
});
|
|
165
|
+
Object.defineProperty(babel, 'end', {
|
|
166
|
+
get() { return babel_node.end; },
|
|
167
|
+
//set(newValue) { bValue = newValue; },
|
|
168
|
+
enumerable: true,
|
|
169
|
+
configurable: false
|
|
170
|
+
});
|
|
171
|
+
Object.defineProperty(babel, 'name', {
|
|
172
|
+
get() { return babel_node.name; },
|
|
173
|
+
//set(newValue) { bValue = newValue; },
|
|
174
|
+
enumerable: true,
|
|
175
|
+
configurable: true
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
// only for identifiers.
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
Object.defineProperty(babel, 'node', {
|
|
184
|
+
get() {
|
|
185
|
+
return babel_node;
|
|
186
|
+
},
|
|
187
|
+
//set(newValue) { bValue = newValue; },
|
|
188
|
+
enumerable: true,
|
|
189
|
+
configurable: false
|
|
190
|
+
});
|
|
191
|
+
Object.defineProperty(babel, 'type', {
|
|
192
|
+
get() {
|
|
193
|
+
//console.log('babel', babel);
|
|
194
|
+
//console.log('babel_node', babel_node);
|
|
195
|
+
//console.log('babel.node', babel.node);
|
|
196
|
+
return babel_node.type;
|
|
197
|
+
},
|
|
198
|
+
//set(newValue) { bValue = newValue; },
|
|
199
|
+
enumerable: true,
|
|
200
|
+
configurable: false
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
//let category;
|
|
204
|
+
Object.defineProperty(babel, 'category', {
|
|
205
|
+
get() {
|
|
206
|
+
//console.log('babel', babel);
|
|
207
|
+
//console.log('babel_node', babel_node);
|
|
208
|
+
//console.log('babel.node', babel.node);
|
|
209
|
+
//category = ;
|
|
210
|
+
return get_category(babel_node.type);
|
|
211
|
+
},
|
|
212
|
+
//set(newValue) { bValue = newValue; },
|
|
213
|
+
enumerable: true,
|
|
214
|
+
configurable: false
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
Object.defineProperty(babel, 'is_identifier', {
|
|
219
|
+
get() {
|
|
220
|
+
return babel.type === 'Identifier';
|
|
221
|
+
},
|
|
222
|
+
enumerable: true,
|
|
223
|
+
configurable: false
|
|
224
|
+
});
|
|
225
|
+
|
|
226
|
+
Object.defineProperty(babel, 'is_declaration', {
|
|
227
|
+
get() {
|
|
228
|
+
return babel.type === 'VariableDeclaration' || babel.type === 'ClassDeclaration';
|
|
229
|
+
},
|
|
230
|
+
enumerable: true,
|
|
231
|
+
configurable: false
|
|
232
|
+
});
|
|
233
|
+
Object.defineProperty(babel, 'is_expression', {
|
|
234
|
+
get() {
|
|
235
|
+
return !!map_expression_categories[babel.type];
|
|
236
|
+
},
|
|
237
|
+
enumerable: true,
|
|
238
|
+
configurable: false
|
|
239
|
+
});
|
|
240
|
+
Object.defineProperty(babel, 'is_statement', {
|
|
241
|
+
get() {
|
|
242
|
+
return !!map_statement_categories[babel.type];
|
|
243
|
+
},
|
|
244
|
+
enumerable: true,
|
|
245
|
+
configurable: false
|
|
246
|
+
});
|
|
247
|
+
Object.defineProperty(babel, 'is_literal', {
|
|
248
|
+
get() {
|
|
249
|
+
return !!map_literal_categories[babel.type];
|
|
250
|
+
},
|
|
251
|
+
enumerable: true,
|
|
252
|
+
configurable: false
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
Object.defineProperty(babel, 'ast', {
|
|
260
|
+
get() {
|
|
261
|
+
|
|
262
|
+
if (this.root === this) {
|
|
263
|
+
|
|
264
|
+
} else {
|
|
265
|
+
// will return undefined, for the moment
|
|
266
|
+
}
|
|
267
|
+
},
|
|
268
|
+
set(val) { bValue = newValue; },
|
|
269
|
+
enumerable: true,
|
|
270
|
+
configurable: false
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
if (this.root_node === this) {
|
|
274
|
+
|
|
275
|
+
//console.log('babel_node', babel_node);
|
|
276
|
+
|
|
277
|
+
if (!babel_node) {
|
|
278
|
+
const {source} = this;
|
|
279
|
+
//console.log('source', source);
|
|
280
|
+
const babel_ast = parser.parse(source, {
|
|
281
|
+
sourceType: 'module',
|
|
282
|
+
plugins: [
|
|
283
|
+
'asyncGenerators',
|
|
284
|
+
'bigInt',
|
|
285
|
+
'classPrivateMethods',
|
|
286
|
+
'classPrivateProperties',
|
|
287
|
+
'classProperties',
|
|
288
|
+
'doExpressions',
|
|
289
|
+
//'exportDefaultFrom',
|
|
290
|
+
'nullishCoalescingOperator',
|
|
291
|
+
'numericSeparator',
|
|
292
|
+
'objectRestSpread',
|
|
293
|
+
'optionalCatchBinding',
|
|
294
|
+
'optionalChaining',
|
|
295
|
+
]});
|
|
296
|
+
|
|
297
|
+
//console.log('babel_ast', babel_ast);
|
|
298
|
+
|
|
299
|
+
babel_node_file = babel_ast;
|
|
300
|
+
babel_node_program = babel_ast.program;
|
|
301
|
+
|
|
302
|
+
//console.log('babel_node_program', babel_node_program);
|
|
303
|
+
|
|
304
|
+
const {body} = babel_node_program;
|
|
305
|
+
|
|
306
|
+
if (body.length === 1) {
|
|
307
|
+
const node0 = body[0];
|
|
308
|
+
|
|
309
|
+
babel_node = node0;
|
|
310
|
+
} else {
|
|
311
|
+
throw 'NYI';
|
|
312
|
+
}
|
|
313
|
+
//throw 'stop';
|
|
314
|
+
}
|
|
315
|
+
//throw 'stop';
|
|
316
|
+
if (babel_node) {
|
|
317
|
+
//console.log('1) babel_node', babel_node);
|
|
318
|
+
const {type} = babel_node;
|
|
319
|
+
//if (true || type === 'File') {
|
|
320
|
+
load_mirror_structure({
|
|
321
|
+
root_node: this.root_node
|
|
322
|
+
});
|
|
323
|
+
//}
|
|
324
|
+
} else {
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
JS_AST_Node_Babel.from_babel_node = (spec) => {
|
|
334
|
+
return new JS_AST_Node_Babel(spec);
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
|
|
338
338
|
module.exports = JS_AST_Node_Babel;
|