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,542 +1,542 @@
|
|
|
1
|
-
//const { resolvePlugin } = require('@babel/core');
|
|
2
|
-
const {each} = require('lang-tools');
|
|
3
|
-
|
|
4
|
-
const deep_iterate_babel_node = require('./deep_iterate/deep_iterate_babel');
|
|
5
|
-
|
|
6
|
-
const old_code = () => {
|
|
7
|
-
|
|
8
|
-
const iterate_babel_class_method_node = (babel_node, str_source, callback) => {
|
|
9
|
-
const {key, computed, kind, id, generator, async, params} = babel_node;
|
|
10
|
-
iterate_babel_node(key, str_source, callback);
|
|
11
|
-
if (id) {
|
|
12
|
-
console.log('babel_node', babel_node);
|
|
13
|
-
throw 'NYI';
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
each(params, x => iterate_babel_node(x, str_source, callback));
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const iterate_babel_class_body_node = (babel_node, str_source, callback) => {
|
|
20
|
-
const {extra, body} = babel_node;
|
|
21
|
-
//iterate_babel_node(body, str_source, callback);
|
|
22
|
-
each(body, x => iterate_babel_node(x, str_source, callback));
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const iterate_babel_class_declaration_node = (babel_node, str_source, callback) => {
|
|
27
|
-
//console.log('babel_node', babel_node);
|
|
28
|
-
|
|
29
|
-
const {extra, id, superclass, body} = babel_node;
|
|
30
|
-
iterate_babel_node(id, str_source, callback);
|
|
31
|
-
|
|
32
|
-
if (superclass) {
|
|
33
|
-
console.log('babel_node', babel_node);
|
|
34
|
-
throw 'NYI';
|
|
35
|
-
}
|
|
36
|
-
iterate_babel_node(body, str_source, callback);
|
|
37
|
-
|
|
38
|
-
//throw 'stop';
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
const iterate_babel_object_pattern_node = (babel_node, str_source, callback) => {
|
|
42
|
-
const {extra, properties} = babel_node;
|
|
43
|
-
each(properties, x => iterate_babel_node(x, str_source, callback));
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const iterate_babel_while_statement_node = (babel_node, str_source, callback) => {
|
|
47
|
-
const {extra, body, test} = babel_node;
|
|
48
|
-
iterate_babel_node(test, str_source, callback);
|
|
49
|
-
iterate_babel_node(body, str_source, callback);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const iterate_babel_assignment_pattern_node = (babel_node, str_source, callback) => {
|
|
53
|
-
const {extra, left, right} = babel_node;
|
|
54
|
-
iterate_babel_node(left, str_source, callback);
|
|
55
|
-
iterate_babel_node(right, str_source, callback);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const iterate_babel_throw_statement_node = (babel_node, str_source, callback) => {
|
|
59
|
-
const {extra, argument} = babel_node;
|
|
60
|
-
|
|
61
|
-
iterate_babel_node(argument, str_source, callback);
|
|
62
|
-
|
|
63
|
-
//iterate_babel_node(right, str_source);
|
|
64
|
-
//each(elements, element => iterate_babel_node(element, str_source));
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
const iterate_babel_boolean_literal_node = (babel_node, str_source, callback) => {
|
|
68
|
-
const {value} = babel_node;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
const iterate_babel_null_literal_node = (babel_node, str_source, callback) => {
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const iterate_babel_empty_statement_node = (babel_node, str_source, callback) => {
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
const iterate_babel_new_expression_node = (babel_node, str_source, callback) => {
|
|
80
|
-
const {extra, callee} = babel_node;
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
iterate_babel_node(callee, str_source, callback);
|
|
84
|
-
each(babel_node.arguments, x => iterate_babel_node(x, str_source, callback));
|
|
85
|
-
//iterate_babel_node(right, str_source);
|
|
86
|
-
//each(elements, element => iterate_babel_node(element, str_source));
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
const iterate_babel_update_expression_node = (babel_node, str_source, callback) => {
|
|
90
|
-
const {extra, operator, prefix, argument} = babel_node;
|
|
91
|
-
|
|
92
|
-
iterate_babel_node(argument, str_source, callback);
|
|
93
|
-
|
|
94
|
-
//iterate_babel_node(right, str_source);
|
|
95
|
-
//each(elements, element => iterate_babel_node(element, str_source));
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
const iterate_babel_numeric_literal_node = (babel_node, str_source, callback) => {
|
|
99
|
-
const {extra, value} = babel_node;
|
|
100
|
-
|
|
101
|
-
//iterate_babel_node(right, str_source);
|
|
102
|
-
//each(elements, element => iterate_babel_node(element, str_source));
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
const iterate_babel_for_statement_node = (babel_node, str_source, callback) => {
|
|
107
|
-
const {extra, init, test, update, body} = babel_node;
|
|
108
|
-
iterate_babel_node(init, str_source, callback);
|
|
109
|
-
iterate_babel_node(test, str_source, callback);
|
|
110
|
-
iterate_babel_node(update, str_source, callback);
|
|
111
|
-
iterate_babel_node(body, str_source, callback);
|
|
112
|
-
//iterate_babel_node(right, str_source);
|
|
113
|
-
//each(elements, element => iterate_babel_node(element, str_source));
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const iterate_babel_array_expression_node = (babel_node, str_source, callback) => {
|
|
117
|
-
const {extra, elements} = babel_node;
|
|
118
|
-
//iterate_babel_node(left, str_source);
|
|
119
|
-
//iterate_babel_node(right, str_source);
|
|
120
|
-
each(elements, element => iterate_babel_node(element, str_source, callback));
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
const iterate_babel_assignment_expression_node = (babel_node, str_source, callback) => {
|
|
124
|
-
const {extra, left, operator, right} = babel_node;
|
|
125
|
-
iterate_babel_node(left, str_source, callback);
|
|
126
|
-
iterate_babel_node(right, str_source, callback);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
const iterate_babel_expression_statement_node = (babel_node, str_source, callback) => {
|
|
130
|
-
const {extra, left, operator, right} = babel_node;
|
|
131
|
-
iterate_babel_node(left, str_source, callback);
|
|
132
|
-
iterate_babel_node(right, str_source, callback);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
const iterate_babel_variable_declarator_node = (babel_node, str_source, callback) => {
|
|
136
|
-
const {extra, id, init} = babel_node;
|
|
137
|
-
iterate_babel_node(id, str_source, callback);
|
|
138
|
-
iterate_babel_node(init, str_source, callback);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
const iterate_babel_logical_expression_node = (babel_node, str_source, callback) => {
|
|
142
|
-
const {extra, left, operator, right} = babel_node;
|
|
143
|
-
iterate_babel_node(left, str_source, callback);
|
|
144
|
-
iterate_babel_node(right, str_source, callback);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
const iterate_babel_function_expression_node = (babel_node, str_source, callback) => {
|
|
148
|
-
//console.log('iterate_babel_function_expression_node', babel_node);
|
|
149
|
-
|
|
150
|
-
const {extra, id, generator, async, params, body} = babel_node;
|
|
151
|
-
|
|
152
|
-
iterate_babel_node(id, str_source, callback);
|
|
153
|
-
each(params, param => iterate_babel_node(param, str_source, callback));
|
|
154
|
-
iterate_babel_node(body, str_source, callback);
|
|
155
|
-
|
|
156
|
-
//const {extra, object, computed /*bool*/, property} = babel_node;
|
|
157
|
-
//throw 'NYI'
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
const iterate_babel_member_expression_node = (babel_node, str_source, callback) => {
|
|
161
|
-
//console.log('iterate_babel_member_expression_node', babel_node);
|
|
162
|
-
const {extra, object, computed /*bool*/, property} = babel_node;
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
if (extra) {
|
|
167
|
-
throw 'NYI'
|
|
168
|
-
};
|
|
169
|
-
iterate_babel_node(object, str_source, callback);
|
|
170
|
-
iterate_babel_node(property, str_source, callback);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
const iterate_babel_call_expression_node = (babel_node, str_source, callback) => {
|
|
174
|
-
//console.log('iterate_babel_object_property_node', babel_node);
|
|
175
|
-
|
|
176
|
-
const {extra, callee} = babel_node;
|
|
177
|
-
|
|
178
|
-
if (extra) {
|
|
179
|
-
//throw 'NYI';
|
|
180
|
-
const {parenthasized, parenStart} = extra;
|
|
181
|
-
}
|
|
182
|
-
iterate_babel_node(callee, str_source, callback);
|
|
183
|
-
|
|
184
|
-
each(babel_node.arguments, argument => {
|
|
185
|
-
iterate_babel_node(argument, str_source, callback);
|
|
186
|
-
})
|
|
187
|
-
|
|
188
|
-
//throw 'stop';
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
const iterate_babel_object_property_node = (babel_node, str_source, callback) => {
|
|
192
|
-
//console.log('iterate_babel_object_property_node', babel_node);
|
|
193
|
-
|
|
194
|
-
const {method, key, computed, shorthand, value} = babel_node;
|
|
195
|
-
//const {properties} = babel_node;
|
|
196
|
-
|
|
197
|
-
iterate_babel_node(key, str_source, callback);
|
|
198
|
-
iterate_babel_node(value, str_source, callback);
|
|
199
|
-
|
|
200
|
-
//throw 'stop';
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
const iterate_babel_object_expression_node = (babel_node, str_source, callback) => {
|
|
204
|
-
//console.log('iterate_babel_object_expression_node', babel_node);
|
|
205
|
-
const {properties} = babel_node;
|
|
206
|
-
|
|
207
|
-
each(properties, property => {
|
|
208
|
-
iterate_babel_node(property, str_source, callback);
|
|
209
|
-
})
|
|
210
|
-
|
|
211
|
-
//throw 'stop';
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
const iterate_babel_return_statement_node = (babel_node, str_source, callback) => {
|
|
215
|
-
//console.log('iterate_babel_return_statement_node', babel_node);
|
|
216
|
-
|
|
217
|
-
const {argument} = babel_node;
|
|
218
|
-
iterate_babel_node(argument, str_source, callback);
|
|
219
|
-
|
|
220
|
-
//throw 'stop';
|
|
221
|
-
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
const iterate_babel_if_statement_node = (babel_node, str_source, callback) => {
|
|
225
|
-
//console.log('iterate_babel_if_statement_node', babel_node);
|
|
226
|
-
|
|
227
|
-
const {test, concequent, alternate} = babel_node;
|
|
228
|
-
iterate_babel_node(test, str_source, callback);
|
|
229
|
-
iterate_babel_node(concequent, str_source, callback);
|
|
230
|
-
iterate_babel_node(alternate, str_source, callback);
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
//throw 'stop';
|
|
234
|
-
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
const iterate_babel_block_statement_node = (babel_node, str_source, callback) => {
|
|
238
|
-
const {params, body} = babel_node;
|
|
239
|
-
if (params && params.length > 0) {
|
|
240
|
-
console.log('params', params);
|
|
241
|
-
throw 'stop';
|
|
242
|
-
}
|
|
243
|
-
each(body, body_item => {
|
|
244
|
-
iterate_babel_node(body_item, str_source, callback);
|
|
245
|
-
});
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
const iterate_babel_arrow_function_expression_node = (babel_node, str_source, callback) => {
|
|
249
|
-
//console.log('iterate_babel_arrow_function_expression_node', babel_node);
|
|
250
|
-
|
|
251
|
-
const {generator, async, params, body} = babel_node;
|
|
252
|
-
|
|
253
|
-
// Assume the params are nodes.
|
|
254
|
-
|
|
255
|
-
if (params.length > 0) {
|
|
256
|
-
//console.log('params', params);
|
|
257
|
-
//throw 'NYI';
|
|
258
|
-
each(params, param => {
|
|
259
|
-
iterate_babel_node(param, str_source, callback);
|
|
260
|
-
})
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
iterate_babel_node(body, str_source, callback);
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
//throw 'stop';
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
const iterate_babel_variable_declaration_node = (babel_node, str_source, callback) => {
|
|
271
|
-
//console.log('iterate_babel_variable_declaration_node', babel_node);
|
|
272
|
-
|
|
273
|
-
const {kind, declarations} = babel_node;
|
|
274
|
-
each(declarations, declaration => iterate_babel_node(declaration, str_source, callback));
|
|
275
|
-
//throw 'stop';
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
const iterate_babel_string_literal_node = (babel_node, str_source, callback) => {
|
|
279
|
-
//console.log('iterate_babel_string_literal_node', babel_node);
|
|
280
|
-
const {value} = babel_node;
|
|
281
|
-
//throw 'stop';
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
const iterate_babel_identifier_node = (babel_node, str_source, callback) => {
|
|
285
|
-
//console.log('iterate_babel_identifier_node', babel_node);
|
|
286
|
-
const {name} = babel_node;
|
|
287
|
-
|
|
288
|
-
//throw 'stop';
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
const iterate_babel_unary_expression_node = (babel_node, str_source, callback) => {
|
|
292
|
-
//console.log('iterate_babel_unary_expression_node', babel_node);
|
|
293
|
-
const {operator, argument} = babel_node;
|
|
294
|
-
|
|
295
|
-
iterate_babel_node(argument, str_source, callback);
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
const iterate_babel_binary_expression_node = (babel_node, str_source, callback) => {
|
|
301
|
-
//console.log('iterate_babel_binary_expression_node babel_node', babel_node);
|
|
302
|
-
|
|
303
|
-
const {left, operator, right} = babel_node;
|
|
304
|
-
iterate_babel_node(left, str_source, callback);
|
|
305
|
-
iterate_babel_node(right, str_source, callback);
|
|
306
|
-
|
|
307
|
-
//throw 'stop';
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
const iterate_babel_node = (babel_node, str_source, callback) => {
|
|
311
|
-
//console.log('babel_node', babel_node);
|
|
312
|
-
|
|
313
|
-
if (babel_node) {
|
|
314
|
-
|
|
315
|
-
let stopped = false;
|
|
316
|
-
|
|
317
|
-
const stop = () => stopped = true;
|
|
318
|
-
|
|
319
|
-
if (callback) {
|
|
320
|
-
callback(babel_node, stop);
|
|
321
|
-
}
|
|
322
|
-
const {type} = babel_node;
|
|
323
|
-
|
|
324
|
-
if (!stopped) {
|
|
325
|
-
|
|
326
|
-
if (type === 'BinaryExpression') {
|
|
327
|
-
return iterate_babel_binary_expression_node(babel_node, str_source, callback);
|
|
328
|
-
} else if (type === 'UnaryExpression') {
|
|
329
|
-
return iterate_babel_unary_expression_node(babel_node, str_source, callback);
|
|
330
|
-
} else if (type === 'Identifier') {
|
|
331
|
-
return iterate_babel_identifier_node(babel_node, str_source, callback);
|
|
332
|
-
} else if (type === 'StringLiteral') {
|
|
333
|
-
return iterate_babel_string_literal_node(babel_node, str_source, callback);
|
|
334
|
-
} else if (type === 'VariableDeclaration') {
|
|
335
|
-
return iterate_babel_variable_declaration_node(babel_node, str_source, callback);
|
|
336
|
-
} else if (type === 'ArrowFunctionExpression') {
|
|
337
|
-
return iterate_babel_arrow_function_expression_node(babel_node, str_source, callback);
|
|
338
|
-
} else if (type === 'BlockStatement') {
|
|
339
|
-
return iterate_babel_block_statement_node(babel_node, str_source, callback);
|
|
340
|
-
} else if (type === 'IfStatement') {
|
|
341
|
-
return iterate_babel_if_statement_node(babel_node, str_source, callback);
|
|
342
|
-
} else if (type === 'ReturnStatement') {
|
|
343
|
-
return iterate_babel_return_statement_node(babel_node, str_source, callback);
|
|
344
|
-
} else if (type === 'ObjectExpression') {
|
|
345
|
-
return iterate_babel_object_expression_node(babel_node, str_source, callback);
|
|
346
|
-
} else if (type === 'ObjectProperty') {
|
|
347
|
-
return iterate_babel_object_property_node(babel_node, str_source, callback);
|
|
348
|
-
} else if (type === 'CallExpression') {
|
|
349
|
-
return iterate_babel_call_expression_node(babel_node, str_source, callback);
|
|
350
|
-
} else if (type === 'MemberExpression') {
|
|
351
|
-
return iterate_babel_member_expression_node(babel_node, str_source, callback);
|
|
352
|
-
} else if (type === 'FunctionExpression') {
|
|
353
|
-
return iterate_babel_function_expression_node(babel_node, str_source, callback);
|
|
354
|
-
} else if (type === 'LogicalExpression') {
|
|
355
|
-
return iterate_babel_logical_expression_node(babel_node, str_source, callback);
|
|
356
|
-
} else if (type === 'VariableDeclarator') {
|
|
357
|
-
return iterate_babel_variable_declarator_node(babel_node, str_source, callback);
|
|
358
|
-
} else if (type === 'ExpressionStatement') {
|
|
359
|
-
return iterate_babel_expression_statement_node(babel_node, str_source, callback);
|
|
360
|
-
} else if (type === 'AssignmentExpression') {
|
|
361
|
-
return iterate_babel_assignment_expression_node(babel_node, str_source, callback);
|
|
362
|
-
} else if (type === 'ArrayExpression') {
|
|
363
|
-
return iterate_babel_array_expression_node(babel_node, str_source, callback);
|
|
364
|
-
} else if (type === 'ForStatement') {
|
|
365
|
-
return iterate_babel_for_statement_node(babel_node, str_source, callback);
|
|
366
|
-
} else if (type === 'NumericLiteral') {
|
|
367
|
-
return iterate_babel_numeric_literal_node(babel_node, str_source, callback);
|
|
368
|
-
} else if (type === 'UpdateExpression') {
|
|
369
|
-
return iterate_babel_update_expression_node(babel_node, str_source, callback);
|
|
370
|
-
} else if (type === 'NewExpression') {
|
|
371
|
-
return iterate_babel_new_expression_node(babel_node, str_source, callback);
|
|
372
|
-
} else if (type === 'EmptyStatement') {
|
|
373
|
-
return iterate_babel_empty_statement_node(babel_node, str_source, callback);
|
|
374
|
-
} else if (type === 'NullLiteral') {
|
|
375
|
-
return iterate_babel_null_literal_node(babel_node, str_source, callback);
|
|
376
|
-
} else if (type === 'BooleanLiteral') {
|
|
377
|
-
return iterate_babel_boolean_literal_node(babel_node, str_source, callback);
|
|
378
|
-
} else if (type === 'ThrowStatement') {
|
|
379
|
-
return iterate_babel_throw_statement_node(babel_node, str_source, callback);
|
|
380
|
-
} else if (type === 'AssignmentPattern') {
|
|
381
|
-
return iterate_babel_assignment_pattern_node(babel_node, str_source, callback);
|
|
382
|
-
} else if (type === 'WhileStatement') {
|
|
383
|
-
return iterate_babel_while_statement_node(babel_node, str_source, callback);
|
|
384
|
-
} else if (type === 'ObjectPattern') {
|
|
385
|
-
return iterate_babel_object_pattern_node(babel_node, str_source, callback);
|
|
386
|
-
} else if (type === 'ClassDeclaration') {
|
|
387
|
-
return iterate_babel_class_declaration_node(babel_node, str_source, callback);
|
|
388
|
-
} else if (type === 'ClassBody') {
|
|
389
|
-
return iterate_babel_class_body_node(babel_node, str_source, callback);
|
|
390
|
-
} else if (type === 'ClassMethod') {
|
|
391
|
-
return iterate_babel_class_method_node(babel_node, str_source, callback);
|
|
392
|
-
} else {
|
|
393
|
-
console.log('');
|
|
394
|
-
console.log('type', type);
|
|
395
|
-
console.log('');
|
|
396
|
-
console.log('babel_node', babel_node);
|
|
397
|
-
throw 'stop';
|
|
398
|
-
}
|
|
399
|
-
|
|
400
|
-
// ConditionalExpression
|
|
401
|
-
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
// Seems broken in current state.
|
|
409
|
-
/*
|
|
410
|
-
const iterate_babel_child_nodes = (babel_node, str_source, callback) => iterate_babel_node(babel_node, str_source, (node2) => {
|
|
411
|
-
if (babel_node !== node2) {
|
|
412
|
-
callback(node2);
|
|
413
|
-
}
|
|
414
|
-
});
|
|
415
|
-
*/
|
|
416
|
-
|
|
417
|
-
// each_babel_child_node
|
|
418
|
-
|
|
419
|
-
// iterate_find maybe?
|
|
420
|
-
|
|
421
|
-
//const iterate_babel_find = (babel_node, str_source, fn_match, callback) =
|
|
422
|
-
|
|
423
|
-
// each_babel_child_node
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
// accumulate function?
|
|
431
|
-
|
|
432
|
-
/*
|
|
433
|
-
const get_babel_child_nodes = (babel_node, str_source) => {
|
|
434
|
-
const res = [];
|
|
435
|
-
iterate_babel_child_nodes(babel_node, str_source, (node => res.push(node)));
|
|
436
|
-
return res;
|
|
437
|
-
}
|
|
438
|
-
*/
|
|
439
|
-
|
|
440
|
-
const get_identifier_names = babel_node => {
|
|
441
|
-
const arr_names = [], map_names = {};
|
|
442
|
-
iterate_babel_node(babel_node, undefined, (babel_node) => {
|
|
443
|
-
const {type, name} = babel_node;
|
|
444
|
-
if (type === 'Identifier') {
|
|
445
|
-
if (!map_names[name]) {
|
|
446
|
-
arr_names.push(name);
|
|
447
|
-
map_names[name] = true;
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
//console.log('get_identifier_names cb babel_node', babel_node);
|
|
451
|
-
//c++;
|
|
452
|
-
});
|
|
453
|
-
return arr_names;
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
const get_named_call = (babel_node, target_name) => {
|
|
457
|
-
let res;
|
|
458
|
-
iterate_babel_node(babel_node, undefined, (babel_node) => {
|
|
459
|
-
|
|
460
|
-
//console.log('babel_node', babel_node);
|
|
461
|
-
|
|
462
|
-
// if it is a function call
|
|
463
|
-
// with the name require / ?, or id name require.
|
|
464
|
-
const {type, name} = babel_node;
|
|
465
|
-
|
|
466
|
-
/*
|
|
467
|
-
if (type === 'Identifier') {
|
|
468
|
-
|
|
469
|
-
if (name === 'require') {
|
|
470
|
-
throw 'stop!';
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
}
|
|
474
|
-
*/
|
|
475
|
-
if (type === 'CallExpression') {
|
|
476
|
-
//throw 'stop';
|
|
477
|
-
const {callee} = babel_node;
|
|
478
|
-
const args = babel_node.arguments;
|
|
479
|
-
|
|
480
|
-
if (callee) {
|
|
481
|
-
const {type, name} = callee;
|
|
482
|
-
if (type === 'Identifier') {
|
|
483
|
-
|
|
484
|
-
if (name === target_name) {
|
|
485
|
-
if (args.length === 1) {
|
|
486
|
-
const {value} = args[0];
|
|
487
|
-
//return babel_node;
|
|
488
|
-
res = babel_node;
|
|
489
|
-
} else {
|
|
490
|
-
throw 'stop';
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
//throw 'stop!';
|
|
494
|
-
}
|
|
495
|
-
|
|
496
|
-
} else {
|
|
497
|
-
throw 'stop';
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
} else {
|
|
502
|
-
throw 'stop';
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
});
|
|
506
|
-
return res;
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
const count_nodes = babel_node => {
|
|
510
|
-
let c = 0;
|
|
511
|
-
iterate_babel_node(babel_node, str_source, (babel_node) => {
|
|
512
|
-
//console.log('cb babel_node', babel_node);
|
|
513
|
-
c++;
|
|
514
|
-
});
|
|
515
|
-
return c;
|
|
516
|
-
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
const get_require_call = babel_node => get_named_call(babel_node, 'require');
|
|
520
|
-
const has_require_call = babel_node => !!get_require_call(babel_node);
|
|
521
|
-
|
|
522
|
-
// getting the names (string literal values) of whatever is required.
|
|
523
|
-
|
|
524
|
-
// pattern signatures and matching looks like the best way to go.
|
|
525
|
-
//
|
|
526
|
-
|
|
527
|
-
// structure patterns
|
|
528
|
-
// could ignore variable names?
|
|
529
|
-
|
|
530
|
-
// or run some kind of deep copy / clone on babel nodes and transform them.
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
const babel_node_tools = {
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
deep_iterate_babel_node: deep_iterate_babel_node,
|
|
537
|
-
get_identifier_names: get_identifier_names,
|
|
538
|
-
get_require_call: get_require_call,
|
|
539
|
-
has_require_call, has_require_call
|
|
540
|
-
}
|
|
541
|
-
|
|
1
|
+
//const { resolvePlugin } = require('@babel/core');
|
|
2
|
+
const {each} = require('lang-tools');
|
|
3
|
+
|
|
4
|
+
const deep_iterate_babel_node = require('./deep_iterate/deep_iterate_babel');
|
|
5
|
+
|
|
6
|
+
const old_code = () => {
|
|
7
|
+
|
|
8
|
+
const iterate_babel_class_method_node = (babel_node, str_source, callback) => {
|
|
9
|
+
const {key, computed, kind, id, generator, async, params} = babel_node;
|
|
10
|
+
iterate_babel_node(key, str_source, callback);
|
|
11
|
+
if (id) {
|
|
12
|
+
console.log('babel_node', babel_node);
|
|
13
|
+
throw 'NYI';
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
each(params, x => iterate_babel_node(x, str_source, callback));
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const iterate_babel_class_body_node = (babel_node, str_source, callback) => {
|
|
20
|
+
const {extra, body} = babel_node;
|
|
21
|
+
//iterate_babel_node(body, str_source, callback);
|
|
22
|
+
each(body, x => iterate_babel_node(x, str_source, callback));
|
|
23
|
+
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const iterate_babel_class_declaration_node = (babel_node, str_source, callback) => {
|
|
27
|
+
//console.log('babel_node', babel_node);
|
|
28
|
+
|
|
29
|
+
const {extra, id, superclass, body} = babel_node;
|
|
30
|
+
iterate_babel_node(id, str_source, callback);
|
|
31
|
+
|
|
32
|
+
if (superclass) {
|
|
33
|
+
console.log('babel_node', babel_node);
|
|
34
|
+
throw 'NYI';
|
|
35
|
+
}
|
|
36
|
+
iterate_babel_node(body, str_source, callback);
|
|
37
|
+
|
|
38
|
+
//throw 'stop';
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const iterate_babel_object_pattern_node = (babel_node, str_source, callback) => {
|
|
42
|
+
const {extra, properties} = babel_node;
|
|
43
|
+
each(properties, x => iterate_babel_node(x, str_source, callback));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const iterate_babel_while_statement_node = (babel_node, str_source, callback) => {
|
|
47
|
+
const {extra, body, test} = babel_node;
|
|
48
|
+
iterate_babel_node(test, str_source, callback);
|
|
49
|
+
iterate_babel_node(body, str_source, callback);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
const iterate_babel_assignment_pattern_node = (babel_node, str_source, callback) => {
|
|
53
|
+
const {extra, left, right} = babel_node;
|
|
54
|
+
iterate_babel_node(left, str_source, callback);
|
|
55
|
+
iterate_babel_node(right, str_source, callback);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const iterate_babel_throw_statement_node = (babel_node, str_source, callback) => {
|
|
59
|
+
const {extra, argument} = babel_node;
|
|
60
|
+
|
|
61
|
+
iterate_babel_node(argument, str_source, callback);
|
|
62
|
+
|
|
63
|
+
//iterate_babel_node(right, str_source);
|
|
64
|
+
//each(elements, element => iterate_babel_node(element, str_source));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
const iterate_babel_boolean_literal_node = (babel_node, str_source, callback) => {
|
|
68
|
+
const {value} = babel_node;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
const iterate_babel_null_literal_node = (babel_node, str_source, callback) => {
|
|
72
|
+
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const iterate_babel_empty_statement_node = (babel_node, str_source, callback) => {
|
|
76
|
+
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const iterate_babel_new_expression_node = (babel_node, str_source, callback) => {
|
|
80
|
+
const {extra, callee} = babel_node;
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
iterate_babel_node(callee, str_source, callback);
|
|
84
|
+
each(babel_node.arguments, x => iterate_babel_node(x, str_source, callback));
|
|
85
|
+
//iterate_babel_node(right, str_source);
|
|
86
|
+
//each(elements, element => iterate_babel_node(element, str_source));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const iterate_babel_update_expression_node = (babel_node, str_source, callback) => {
|
|
90
|
+
const {extra, operator, prefix, argument} = babel_node;
|
|
91
|
+
|
|
92
|
+
iterate_babel_node(argument, str_source, callback);
|
|
93
|
+
|
|
94
|
+
//iterate_babel_node(right, str_source);
|
|
95
|
+
//each(elements, element => iterate_babel_node(element, str_source));
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
const iterate_babel_numeric_literal_node = (babel_node, str_source, callback) => {
|
|
99
|
+
const {extra, value} = babel_node;
|
|
100
|
+
|
|
101
|
+
//iterate_babel_node(right, str_source);
|
|
102
|
+
//each(elements, element => iterate_babel_node(element, str_source));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
const iterate_babel_for_statement_node = (babel_node, str_source, callback) => {
|
|
107
|
+
const {extra, init, test, update, body} = babel_node;
|
|
108
|
+
iterate_babel_node(init, str_source, callback);
|
|
109
|
+
iterate_babel_node(test, str_source, callback);
|
|
110
|
+
iterate_babel_node(update, str_source, callback);
|
|
111
|
+
iterate_babel_node(body, str_source, callback);
|
|
112
|
+
//iterate_babel_node(right, str_source);
|
|
113
|
+
//each(elements, element => iterate_babel_node(element, str_source));
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const iterate_babel_array_expression_node = (babel_node, str_source, callback) => {
|
|
117
|
+
const {extra, elements} = babel_node;
|
|
118
|
+
//iterate_babel_node(left, str_source);
|
|
119
|
+
//iterate_babel_node(right, str_source);
|
|
120
|
+
each(elements, element => iterate_babel_node(element, str_source, callback));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
const iterate_babel_assignment_expression_node = (babel_node, str_source, callback) => {
|
|
124
|
+
const {extra, left, operator, right} = babel_node;
|
|
125
|
+
iterate_babel_node(left, str_source, callback);
|
|
126
|
+
iterate_babel_node(right, str_source, callback);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const iterate_babel_expression_statement_node = (babel_node, str_source, callback) => {
|
|
130
|
+
const {extra, left, operator, right} = babel_node;
|
|
131
|
+
iterate_babel_node(left, str_source, callback);
|
|
132
|
+
iterate_babel_node(right, str_source, callback);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
const iterate_babel_variable_declarator_node = (babel_node, str_source, callback) => {
|
|
136
|
+
const {extra, id, init} = babel_node;
|
|
137
|
+
iterate_babel_node(id, str_source, callback);
|
|
138
|
+
iterate_babel_node(init, str_source, callback);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
const iterate_babel_logical_expression_node = (babel_node, str_source, callback) => {
|
|
142
|
+
const {extra, left, operator, right} = babel_node;
|
|
143
|
+
iterate_babel_node(left, str_source, callback);
|
|
144
|
+
iterate_babel_node(right, str_source, callback);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
const iterate_babel_function_expression_node = (babel_node, str_source, callback) => {
|
|
148
|
+
//console.log('iterate_babel_function_expression_node', babel_node);
|
|
149
|
+
|
|
150
|
+
const {extra, id, generator, async, params, body} = babel_node;
|
|
151
|
+
|
|
152
|
+
iterate_babel_node(id, str_source, callback);
|
|
153
|
+
each(params, param => iterate_babel_node(param, str_source, callback));
|
|
154
|
+
iterate_babel_node(body, str_source, callback);
|
|
155
|
+
|
|
156
|
+
//const {extra, object, computed /*bool*/, property} = babel_node;
|
|
157
|
+
//throw 'NYI'
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const iterate_babel_member_expression_node = (babel_node, str_source, callback) => {
|
|
161
|
+
//console.log('iterate_babel_member_expression_node', babel_node);
|
|
162
|
+
const {extra, object, computed /*bool*/, property} = babel_node;
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
if (extra) {
|
|
167
|
+
throw 'NYI'
|
|
168
|
+
};
|
|
169
|
+
iterate_babel_node(object, str_source, callback);
|
|
170
|
+
iterate_babel_node(property, str_source, callback);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const iterate_babel_call_expression_node = (babel_node, str_source, callback) => {
|
|
174
|
+
//console.log('iterate_babel_object_property_node', babel_node);
|
|
175
|
+
|
|
176
|
+
const {extra, callee} = babel_node;
|
|
177
|
+
|
|
178
|
+
if (extra) {
|
|
179
|
+
//throw 'NYI';
|
|
180
|
+
const {parenthasized, parenStart} = extra;
|
|
181
|
+
}
|
|
182
|
+
iterate_babel_node(callee, str_source, callback);
|
|
183
|
+
|
|
184
|
+
each(babel_node.arguments, argument => {
|
|
185
|
+
iterate_babel_node(argument, str_source, callback);
|
|
186
|
+
})
|
|
187
|
+
|
|
188
|
+
//throw 'stop';
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
const iterate_babel_object_property_node = (babel_node, str_source, callback) => {
|
|
192
|
+
//console.log('iterate_babel_object_property_node', babel_node);
|
|
193
|
+
|
|
194
|
+
const {method, key, computed, shorthand, value} = babel_node;
|
|
195
|
+
//const {properties} = babel_node;
|
|
196
|
+
|
|
197
|
+
iterate_babel_node(key, str_source, callback);
|
|
198
|
+
iterate_babel_node(value, str_source, callback);
|
|
199
|
+
|
|
200
|
+
//throw 'stop';
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
const iterate_babel_object_expression_node = (babel_node, str_source, callback) => {
|
|
204
|
+
//console.log('iterate_babel_object_expression_node', babel_node);
|
|
205
|
+
const {properties} = babel_node;
|
|
206
|
+
|
|
207
|
+
each(properties, property => {
|
|
208
|
+
iterate_babel_node(property, str_source, callback);
|
|
209
|
+
})
|
|
210
|
+
|
|
211
|
+
//throw 'stop';
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
const iterate_babel_return_statement_node = (babel_node, str_source, callback) => {
|
|
215
|
+
//console.log('iterate_babel_return_statement_node', babel_node);
|
|
216
|
+
|
|
217
|
+
const {argument} = babel_node;
|
|
218
|
+
iterate_babel_node(argument, str_source, callback);
|
|
219
|
+
|
|
220
|
+
//throw 'stop';
|
|
221
|
+
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
const iterate_babel_if_statement_node = (babel_node, str_source, callback) => {
|
|
225
|
+
//console.log('iterate_babel_if_statement_node', babel_node);
|
|
226
|
+
|
|
227
|
+
const {test, concequent, alternate} = babel_node;
|
|
228
|
+
iterate_babel_node(test, str_source, callback);
|
|
229
|
+
iterate_babel_node(concequent, str_source, callback);
|
|
230
|
+
iterate_babel_node(alternate, str_source, callback);
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
//throw 'stop';
|
|
234
|
+
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
const iterate_babel_block_statement_node = (babel_node, str_source, callback) => {
|
|
238
|
+
const {params, body} = babel_node;
|
|
239
|
+
if (params && params.length > 0) {
|
|
240
|
+
console.log('params', params);
|
|
241
|
+
throw 'stop';
|
|
242
|
+
}
|
|
243
|
+
each(body, body_item => {
|
|
244
|
+
iterate_babel_node(body_item, str_source, callback);
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
const iterate_babel_arrow_function_expression_node = (babel_node, str_source, callback) => {
|
|
249
|
+
//console.log('iterate_babel_arrow_function_expression_node', babel_node);
|
|
250
|
+
|
|
251
|
+
const {generator, async, params, body} = babel_node;
|
|
252
|
+
|
|
253
|
+
// Assume the params are nodes.
|
|
254
|
+
|
|
255
|
+
if (params.length > 0) {
|
|
256
|
+
//console.log('params', params);
|
|
257
|
+
//throw 'NYI';
|
|
258
|
+
each(params, param => {
|
|
259
|
+
iterate_babel_node(param, str_source, callback);
|
|
260
|
+
})
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
iterate_babel_node(body, str_source, callback);
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
//throw 'stop';
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
const iterate_babel_variable_declaration_node = (babel_node, str_source, callback) => {
|
|
271
|
+
//console.log('iterate_babel_variable_declaration_node', babel_node);
|
|
272
|
+
|
|
273
|
+
const {kind, declarations} = babel_node;
|
|
274
|
+
each(declarations, declaration => iterate_babel_node(declaration, str_source, callback));
|
|
275
|
+
//throw 'stop';
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
const iterate_babel_string_literal_node = (babel_node, str_source, callback) => {
|
|
279
|
+
//console.log('iterate_babel_string_literal_node', babel_node);
|
|
280
|
+
const {value} = babel_node;
|
|
281
|
+
//throw 'stop';
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
const iterate_babel_identifier_node = (babel_node, str_source, callback) => {
|
|
285
|
+
//console.log('iterate_babel_identifier_node', babel_node);
|
|
286
|
+
const {name} = babel_node;
|
|
287
|
+
|
|
288
|
+
//throw 'stop';
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
const iterate_babel_unary_expression_node = (babel_node, str_source, callback) => {
|
|
292
|
+
//console.log('iterate_babel_unary_expression_node', babel_node);
|
|
293
|
+
const {operator, argument} = babel_node;
|
|
294
|
+
|
|
295
|
+
iterate_babel_node(argument, str_source, callback);
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
const iterate_babel_binary_expression_node = (babel_node, str_source, callback) => {
|
|
301
|
+
//console.log('iterate_babel_binary_expression_node babel_node', babel_node);
|
|
302
|
+
|
|
303
|
+
const {left, operator, right} = babel_node;
|
|
304
|
+
iterate_babel_node(left, str_source, callback);
|
|
305
|
+
iterate_babel_node(right, str_source, callback);
|
|
306
|
+
|
|
307
|
+
//throw 'stop';
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
const iterate_babel_node = (babel_node, str_source, callback) => {
|
|
311
|
+
//console.log('babel_node', babel_node);
|
|
312
|
+
|
|
313
|
+
if (babel_node) {
|
|
314
|
+
|
|
315
|
+
let stopped = false;
|
|
316
|
+
|
|
317
|
+
const stop = () => stopped = true;
|
|
318
|
+
|
|
319
|
+
if (callback) {
|
|
320
|
+
callback(babel_node, stop);
|
|
321
|
+
}
|
|
322
|
+
const {type} = babel_node;
|
|
323
|
+
|
|
324
|
+
if (!stopped) {
|
|
325
|
+
|
|
326
|
+
if (type === 'BinaryExpression') {
|
|
327
|
+
return iterate_babel_binary_expression_node(babel_node, str_source, callback);
|
|
328
|
+
} else if (type === 'UnaryExpression') {
|
|
329
|
+
return iterate_babel_unary_expression_node(babel_node, str_source, callback);
|
|
330
|
+
} else if (type === 'Identifier') {
|
|
331
|
+
return iterate_babel_identifier_node(babel_node, str_source, callback);
|
|
332
|
+
} else if (type === 'StringLiteral') {
|
|
333
|
+
return iterate_babel_string_literal_node(babel_node, str_source, callback);
|
|
334
|
+
} else if (type === 'VariableDeclaration') {
|
|
335
|
+
return iterate_babel_variable_declaration_node(babel_node, str_source, callback);
|
|
336
|
+
} else if (type === 'ArrowFunctionExpression') {
|
|
337
|
+
return iterate_babel_arrow_function_expression_node(babel_node, str_source, callback);
|
|
338
|
+
} else if (type === 'BlockStatement') {
|
|
339
|
+
return iterate_babel_block_statement_node(babel_node, str_source, callback);
|
|
340
|
+
} else if (type === 'IfStatement') {
|
|
341
|
+
return iterate_babel_if_statement_node(babel_node, str_source, callback);
|
|
342
|
+
} else if (type === 'ReturnStatement') {
|
|
343
|
+
return iterate_babel_return_statement_node(babel_node, str_source, callback);
|
|
344
|
+
} else if (type === 'ObjectExpression') {
|
|
345
|
+
return iterate_babel_object_expression_node(babel_node, str_source, callback);
|
|
346
|
+
} else if (type === 'ObjectProperty') {
|
|
347
|
+
return iterate_babel_object_property_node(babel_node, str_source, callback);
|
|
348
|
+
} else if (type === 'CallExpression') {
|
|
349
|
+
return iterate_babel_call_expression_node(babel_node, str_source, callback);
|
|
350
|
+
} else if (type === 'MemberExpression') {
|
|
351
|
+
return iterate_babel_member_expression_node(babel_node, str_source, callback);
|
|
352
|
+
} else if (type === 'FunctionExpression') {
|
|
353
|
+
return iterate_babel_function_expression_node(babel_node, str_source, callback);
|
|
354
|
+
} else if (type === 'LogicalExpression') {
|
|
355
|
+
return iterate_babel_logical_expression_node(babel_node, str_source, callback);
|
|
356
|
+
} else if (type === 'VariableDeclarator') {
|
|
357
|
+
return iterate_babel_variable_declarator_node(babel_node, str_source, callback);
|
|
358
|
+
} else if (type === 'ExpressionStatement') {
|
|
359
|
+
return iterate_babel_expression_statement_node(babel_node, str_source, callback);
|
|
360
|
+
} else if (type === 'AssignmentExpression') {
|
|
361
|
+
return iterate_babel_assignment_expression_node(babel_node, str_source, callback);
|
|
362
|
+
} else if (type === 'ArrayExpression') {
|
|
363
|
+
return iterate_babel_array_expression_node(babel_node, str_source, callback);
|
|
364
|
+
} else if (type === 'ForStatement') {
|
|
365
|
+
return iterate_babel_for_statement_node(babel_node, str_source, callback);
|
|
366
|
+
} else if (type === 'NumericLiteral') {
|
|
367
|
+
return iterate_babel_numeric_literal_node(babel_node, str_source, callback);
|
|
368
|
+
} else if (type === 'UpdateExpression') {
|
|
369
|
+
return iterate_babel_update_expression_node(babel_node, str_source, callback);
|
|
370
|
+
} else if (type === 'NewExpression') {
|
|
371
|
+
return iterate_babel_new_expression_node(babel_node, str_source, callback);
|
|
372
|
+
} else if (type === 'EmptyStatement') {
|
|
373
|
+
return iterate_babel_empty_statement_node(babel_node, str_source, callback);
|
|
374
|
+
} else if (type === 'NullLiteral') {
|
|
375
|
+
return iterate_babel_null_literal_node(babel_node, str_source, callback);
|
|
376
|
+
} else if (type === 'BooleanLiteral') {
|
|
377
|
+
return iterate_babel_boolean_literal_node(babel_node, str_source, callback);
|
|
378
|
+
} else if (type === 'ThrowStatement') {
|
|
379
|
+
return iterate_babel_throw_statement_node(babel_node, str_source, callback);
|
|
380
|
+
} else if (type === 'AssignmentPattern') {
|
|
381
|
+
return iterate_babel_assignment_pattern_node(babel_node, str_source, callback);
|
|
382
|
+
} else if (type === 'WhileStatement') {
|
|
383
|
+
return iterate_babel_while_statement_node(babel_node, str_source, callback);
|
|
384
|
+
} else if (type === 'ObjectPattern') {
|
|
385
|
+
return iterate_babel_object_pattern_node(babel_node, str_source, callback);
|
|
386
|
+
} else if (type === 'ClassDeclaration') {
|
|
387
|
+
return iterate_babel_class_declaration_node(babel_node, str_source, callback);
|
|
388
|
+
} else if (type === 'ClassBody') {
|
|
389
|
+
return iterate_babel_class_body_node(babel_node, str_source, callback);
|
|
390
|
+
} else if (type === 'ClassMethod') {
|
|
391
|
+
return iterate_babel_class_method_node(babel_node, str_source, callback);
|
|
392
|
+
} else {
|
|
393
|
+
console.log('');
|
|
394
|
+
console.log('type', type);
|
|
395
|
+
console.log('');
|
|
396
|
+
console.log('babel_node', babel_node);
|
|
397
|
+
throw 'stop';
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
// ConditionalExpression
|
|
401
|
+
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
// Seems broken in current state.
|
|
409
|
+
/*
|
|
410
|
+
const iterate_babel_child_nodes = (babel_node, str_source, callback) => iterate_babel_node(babel_node, str_source, (node2) => {
|
|
411
|
+
if (babel_node !== node2) {
|
|
412
|
+
callback(node2);
|
|
413
|
+
}
|
|
414
|
+
});
|
|
415
|
+
*/
|
|
416
|
+
|
|
417
|
+
// each_babel_child_node
|
|
418
|
+
|
|
419
|
+
// iterate_find maybe?
|
|
420
|
+
|
|
421
|
+
//const iterate_babel_find = (babel_node, str_source, fn_match, callback) =
|
|
422
|
+
|
|
423
|
+
// each_babel_child_node
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
// accumulate function?
|
|
431
|
+
|
|
432
|
+
/*
|
|
433
|
+
const get_babel_child_nodes = (babel_node, str_source) => {
|
|
434
|
+
const res = [];
|
|
435
|
+
iterate_babel_child_nodes(babel_node, str_source, (node => res.push(node)));
|
|
436
|
+
return res;
|
|
437
|
+
}
|
|
438
|
+
*/
|
|
439
|
+
|
|
440
|
+
const get_identifier_names = babel_node => {
|
|
441
|
+
const arr_names = [], map_names = {};
|
|
442
|
+
iterate_babel_node(babel_node, undefined, (babel_node) => {
|
|
443
|
+
const {type, name} = babel_node;
|
|
444
|
+
if (type === 'Identifier') {
|
|
445
|
+
if (!map_names[name]) {
|
|
446
|
+
arr_names.push(name);
|
|
447
|
+
map_names[name] = true;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
//console.log('get_identifier_names cb babel_node', babel_node);
|
|
451
|
+
//c++;
|
|
452
|
+
});
|
|
453
|
+
return arr_names;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
const get_named_call = (babel_node, target_name) => {
|
|
457
|
+
let res;
|
|
458
|
+
iterate_babel_node(babel_node, undefined, (babel_node) => {
|
|
459
|
+
|
|
460
|
+
//console.log('babel_node', babel_node);
|
|
461
|
+
|
|
462
|
+
// if it is a function call
|
|
463
|
+
// with the name require / ?, or id name require.
|
|
464
|
+
const {type, name} = babel_node;
|
|
465
|
+
|
|
466
|
+
/*
|
|
467
|
+
if (type === 'Identifier') {
|
|
468
|
+
|
|
469
|
+
if (name === 'require') {
|
|
470
|
+
throw 'stop!';
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
}
|
|
474
|
+
*/
|
|
475
|
+
if (type === 'CallExpression') {
|
|
476
|
+
//throw 'stop';
|
|
477
|
+
const {callee} = babel_node;
|
|
478
|
+
const args = babel_node.arguments;
|
|
479
|
+
|
|
480
|
+
if (callee) {
|
|
481
|
+
const {type, name} = callee;
|
|
482
|
+
if (type === 'Identifier') {
|
|
483
|
+
|
|
484
|
+
if (name === target_name) {
|
|
485
|
+
if (args.length === 1) {
|
|
486
|
+
const {value} = args[0];
|
|
487
|
+
//return babel_node;
|
|
488
|
+
res = babel_node;
|
|
489
|
+
} else {
|
|
490
|
+
throw 'stop';
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
//throw 'stop!';
|
|
494
|
+
}
|
|
495
|
+
|
|
496
|
+
} else {
|
|
497
|
+
throw 'stop';
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
} else {
|
|
502
|
+
throw 'stop';
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
});
|
|
506
|
+
return res;
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
const count_nodes = babel_node => {
|
|
510
|
+
let c = 0;
|
|
511
|
+
iterate_babel_node(babel_node, str_source, (babel_node) => {
|
|
512
|
+
//console.log('cb babel_node', babel_node);
|
|
513
|
+
c++;
|
|
514
|
+
});
|
|
515
|
+
return c;
|
|
516
|
+
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
const get_require_call = babel_node => get_named_call(babel_node, 'require');
|
|
520
|
+
const has_require_call = babel_node => !!get_require_call(babel_node);
|
|
521
|
+
|
|
522
|
+
// getting the names (string literal values) of whatever is required.
|
|
523
|
+
|
|
524
|
+
// pattern signatures and matching looks like the best way to go.
|
|
525
|
+
//
|
|
526
|
+
|
|
527
|
+
// structure patterns
|
|
528
|
+
// could ignore variable names?
|
|
529
|
+
|
|
530
|
+
// or run some kind of deep copy / clone on babel nodes and transform them.
|
|
531
|
+
|
|
532
|
+
|
|
533
|
+
const babel_node_tools = {
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
deep_iterate_babel_node: deep_iterate_babel_node,
|
|
537
|
+
get_identifier_names: get_identifier_names,
|
|
538
|
+
get_require_call: get_require_call,
|
|
539
|
+
has_require_call, has_require_call
|
|
540
|
+
}
|
|
541
|
+
|
|
542
542
|
module.exports = babel_node_tools;
|