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,382 +1,382 @@
|
|
|
1
|
-
|
|
2
|
-
// Should have more specific tests for JS_AST_Node.
|
|
3
|
-
// Such as getting the source but with renamed local variables.
|
|
4
|
-
|
|
5
|
-
// Maybe need more tests and fixes for deconstructing expressions.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
// Load a JS file into an OO structure
|
|
11
|
-
|
|
12
|
-
const JS_File = require('../JS_File/JS_File');
|
|
13
|
-
//const JS_File_Comprehension = require('../JS_File_Comprehension');
|
|
14
|
-
const path = require('path');
|
|
15
|
-
const fs = require('fs');
|
|
16
|
-
const Project = require('../Project');
|
|
17
|
-
const {each} = require('lang-tools');
|
|
18
|
-
|
|
19
|
-
//const JS_AST_Node = require('../JS_AST/JS_AST_Node');
|
|
20
|
-
const JS_AST_Node = require('../JS_AST_Node_Extended/JS_AST_Node_Extended');
|
|
21
|
-
|
|
22
|
-
const test_js_ast_node = () => {
|
|
23
|
-
|
|
24
|
-
// That's a simple declaration.
|
|
25
|
-
//const test_script_1 = 'const firstname = "James", surname = "Vickers", name = firstname + " " + surname, [a, b, c] = [1, 2, 3];';
|
|
26
|
-
//const test_script_2 = 'module.exports = lang_mini;';
|
|
27
|
-
const test_script_1 = 'const [a, b, c] = [1, 2, 3], [d, e, f] = [4, 5, 6];';
|
|
28
|
-
//const test_script_1 = 'const [a, b, c] = [1, 2, 3];';
|
|
29
|
-
|
|
30
|
-
//const test_script_3 = 'const {a, b, c} = propertied_object;'
|
|
31
|
-
|
|
32
|
-
const test_script_4 = 'const obj = {"a": 1, "b": 2, "c": 3}';
|
|
33
|
-
|
|
34
|
-
// Item declared as an array.
|
|
35
|
-
// Still a single declared item, even though it's composed of multiple things.
|
|
36
|
-
// Would could as an Abstract_Single_Declaration???
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
//const test_script_1 = 'const a = [1, 2, 3];';
|
|
40
|
-
|
|
41
|
-
// Root node by default?
|
|
42
|
-
// Makes sense as that's the likely context the developer would use it.
|
|
43
|
-
// If it has no parent_node.
|
|
44
|
-
|
|
45
|
-
const spec = {
|
|
46
|
-
source: test_script_1
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
const js_ast_node = JS_AST_Node.from_spec(spec);
|
|
50
|
-
|
|
51
|
-
console.log('js_ast_node', js_ast_node);
|
|
52
|
-
console.log('js_ast_node.source', js_ast_node.source);
|
|
53
|
-
|
|
54
|
-
console.log('js_ast_node.child.count', js_ast_node.child.count);
|
|
55
|
-
|
|
56
|
-
console.log('js_ast_node.query.count.all.exe()', js_ast_node.query.count.all.exe());
|
|
57
|
-
|
|
58
|
-
// mapcall_deep_iterate
|
|
59
|
-
// mapcall_child_nodes
|
|
60
|
-
// deep_iterate_mapcall
|
|
61
|
-
|
|
62
|
-
// mapped call ?
|
|
63
|
-
|
|
64
|
-
const direct_calling = () => {
|
|
65
|
-
js_ast_node.callmap_deep_iterate(node => node.signature, {
|
|
66
|
-
'ArE(NumL,NumL,NumL)': (node) => {
|
|
67
|
-
console.log('are 3 numlit node', node);
|
|
68
|
-
},
|
|
69
|
-
'ArP(ID,ID,ID)': (node) => {
|
|
70
|
-
console.log('arp 3 id node', node);
|
|
71
|
-
}
|
|
72
|
-
}, node => {
|
|
73
|
-
console.log('default node', node);
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
js_ast_node.signature_callmap_deep_iterate({
|
|
77
|
-
'ArE(NumL,NumL,NumL)': (node) => {
|
|
78
|
-
console.log('* are 3 numlit node', node);
|
|
79
|
-
},
|
|
80
|
-
'ArP(ID,ID,ID)': (node) => {
|
|
81
|
-
console.log('* arp 3 id node', node);
|
|
82
|
-
}
|
|
83
|
-
}, node => {
|
|
84
|
-
console.log('* default node', node);
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const callmap_calling = () => {
|
|
89
|
-
js_ast_node.query.callmap.exe(node => node.signature, {
|
|
90
|
-
'ArE(NumL,NumL,NumL)': (node) => {
|
|
91
|
-
console.log('are 3 numlit node', node);
|
|
92
|
-
},
|
|
93
|
-
'ArP(ID,ID,ID)': (node) => {
|
|
94
|
-
console.log('arp 3 id node', node);
|
|
95
|
-
}
|
|
96
|
-
}, node => {
|
|
97
|
-
console.log('default node', node);
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
js_ast_node.query.callmap.by.signature.exe({
|
|
101
|
-
'ArE(NumL,NumL,NumL)': (node) => {
|
|
102
|
-
console.log('!!are 3 numlit node', node);
|
|
103
|
-
},
|
|
104
|
-
'ArP(ID,ID,ID)': (node) => {
|
|
105
|
-
console.log('!!arp 3 id node', node);
|
|
106
|
-
}
|
|
107
|
-
}, node => {
|
|
108
|
-
console.log('!!default node', node);
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
// And it works... now to get it into query.
|
|
117
|
-
|
|
118
|
-
// callmap_deep_iterate
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
// Let's do a bit more work on getting object declared keys.
|
|
122
|
-
// .query.collect.objectproperty.exe().query.find.child.identifier.exe().query('name');
|
|
123
|
-
|
|
124
|
-
const used_tests = () => {
|
|
125
|
-
const var_decltrs = js_ast_node.query.collect.child.variabledeclarator.exe();
|
|
126
|
-
console.log('var_decltrs', var_decltrs);
|
|
127
|
-
|
|
128
|
-
// .id property of the var declarators?
|
|
129
|
-
//
|
|
130
|
-
|
|
131
|
-
const decr_id_names = js_ast_node.query.collect.child.variabledeclarator.exe().query.collect.first.child.name.exe();
|
|
132
|
-
console.log('decr_id_names', decr_id_names);
|
|
133
|
-
|
|
134
|
-
//const key_id_names = js_ast_node.query.collect.objectproperty.exe().query.collect.child.identifier.exe().query.collect.name.exe();
|
|
135
|
-
//console.log('key_id_names', key_id_names);
|
|
136
|
-
|
|
137
|
-
// OPr
|
|
138
|
-
|
|
139
|
-
// .query.select.by.t.exe('OPr');
|
|
140
|
-
|
|
141
|
-
const oprs = js_ast_node.query.select.by.t.exe('OPr');
|
|
142
|
-
console.log('oprs', oprs);
|
|
143
|
-
|
|
144
|
-
const oprslits = js_ast_node.query.select.by.t.exe('OPr').query.collect.child.literal.exe();
|
|
145
|
-
console.log('oprslits', oprslits);
|
|
146
|
-
|
|
147
|
-
const opr_first_child_nodes = js_ast_node.query.select.by.t.exe('OPr').query.collect.first.child.exe(); // working nicely.
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
// Best to keep this syntax for the moment, the need for query collect and exe make it explicit and simpler to follow.
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
// .t.collect('OPr').first.child.node.exe();
|
|
155
|
-
console.log('opr_first_child_nodes', opr_first_child_nodes);
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
//const sl_values = opr_first_child_nodes.map(node => node.babel.node.value)
|
|
159
|
-
const sl_values = js_ast_node.query.select.by.t.exe('OPr').query.collect.first.child.value.exe();
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
console.log('sl_values', sl_values);
|
|
163
|
-
|
|
164
|
-
if (js_ast_node.declaration) {
|
|
165
|
-
console.log('js_ast_node.declaration.declared.keys', js_ast_node.declaration.declared.keys);
|
|
166
|
-
|
|
167
|
-
// js_ast_node.query.collect.declared.keys.exe();
|
|
168
|
-
|
|
169
|
-
const dc2 = js_ast_node.query.collect.own.declared.keys.exe();
|
|
170
|
-
console.log('dc2', dc2);
|
|
171
|
-
|
|
172
|
-
// and the corresponding assigned values.
|
|
173
|
-
// declaration.assigned.values
|
|
174
|
-
// declaration.declared, declaration.assigned
|
|
175
|
-
|
|
176
|
-
console.log('js_ast_node.declaration.assigned.values', js_ast_node.declaration.assigned.values);
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
// .query.collect.own.assigned.values
|
|
180
|
-
// .query.collect.own.declaration.assigned.value
|
|
181
|
-
// .query.collect.own.declaration.value
|
|
182
|
-
// .query.collect.declaration.value
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
const various_tests_including_new_query_api = () => {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
console.log('js_ast_node.category', js_ast_node.category);
|
|
194
|
-
console.log('');
|
|
195
|
-
console.log('js_ast_node.source\n' + js_ast_node.source);
|
|
196
|
-
console.log('');
|
|
197
|
-
|
|
198
|
-
console.log('js_ast_node', js_ast_node);
|
|
199
|
-
console.log('js_ast_node.child.count', js_ast_node.child.count);
|
|
200
|
-
console.log('js_ast_node.child.shared.type', js_ast_node.child.shared.type);
|
|
201
|
-
console.log('js_ast_node.child.shared.t', js_ast_node.child.shared.t);
|
|
202
|
-
console.log('js_ast_node.type', js_ast_node.type);
|
|
203
|
-
console.log('js_ast_node.declaration', js_ast_node.declaration);
|
|
204
|
-
|
|
205
|
-
console.log('js_ast_node.declaration.keys', js_ast_node.declaration.keys);
|
|
206
|
-
|
|
207
|
-
const q = js_ast_node.query;
|
|
208
|
-
|
|
209
|
-
const qeach = q.each;
|
|
210
|
-
|
|
211
|
-
console.log('q', q);
|
|
212
|
-
console.log('qeach', qeach);
|
|
213
|
-
console.log('qeach.text', qeach.text);
|
|
214
|
-
|
|
215
|
-
//const q2 = js_ast_node.query.each.child.node;
|
|
216
|
-
const q2 = js_ast_node.query.first.child.node;
|
|
217
|
-
console.log('q2', q2);
|
|
218
|
-
console.log('q2.qstring', q2.qstring); // .qtext? or .querytext? .toString()? qstring for the moment.
|
|
219
|
-
const vdr = q2.exe();
|
|
220
|
-
const vdrcn2 = vdr.query.second.child.exe();
|
|
221
|
-
//console.log('q2.exe()', q2.exe());
|
|
222
|
-
console.log('vdr', vdr);
|
|
223
|
-
console.log('vdrcn2', vdrcn2);
|
|
224
|
-
console.log('js_ast_node', js_ast_node);
|
|
225
|
-
|
|
226
|
-
// .query.select.exec
|
|
227
|
-
// .query.select.by.type.exe('ObjectProperty');
|
|
228
|
-
|
|
229
|
-
const oprs = js_ast_node.query.select.by.type.exe('ObjectProperty');
|
|
230
|
-
console.log('oprs', oprs);
|
|
231
|
-
|
|
232
|
-
const oprns = js_ast_node.query.select.by.type.exe('ObjectProperty').query.collect.child.identifier.name.exe();
|
|
233
|
-
|
|
234
|
-
console.log('oprns', oprns);
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
// Just a simple test to get the structure there for query result .each queries.
|
|
238
|
-
js_ast_node.query.select.by.type.exe('ObjectProperty').query.each.child.exe(cn => {
|
|
239
|
-
console.log('cn', cn);
|
|
240
|
-
});
|
|
241
|
-
|
|
242
|
-
js_ast_node.query.select.by.type.exe('ObjectProperty').query.each.child.identifier.exe(cn => {
|
|
243
|
-
console.log('cn', cn);
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
const ids = js_ast_node.query.collect.identifier.exe();
|
|
248
|
-
console.log('ids', ids);
|
|
249
|
-
|
|
250
|
-
const csigs = js_ast_node.query.collect.child.signature.exe();
|
|
251
|
-
console.log('csigs', csigs);
|
|
252
|
-
|
|
253
|
-
console.log('js_ast_node.query.count.child.exe()', js_ast_node.query.count.child.exe());
|
|
254
|
-
console.log('js_ast_node.query.count.identifier.exe()', js_ast_node.query.count.identifier.exe());
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
// still for the moment will be clear about the verb used.
|
|
258
|
-
|
|
259
|
-
// Pattern category....
|
|
260
|
-
|
|
261
|
-
// query.collect.by.category('Pattern');
|
|
262
|
-
|
|
263
|
-
//const patterns = js_ast_node.query.select.by.category.exe('Pattern');
|
|
264
|
-
|
|
265
|
-
const patterns = js_ast_node.query.collect.pattern.exe();
|
|
266
|
-
|
|
267
|
-
console.log('patterns', patterns);
|
|
268
|
-
|
|
269
|
-
const oprops = patterns.query.collect.property.exe();
|
|
270
|
-
console.log('oprops', oprops);
|
|
271
|
-
|
|
272
|
-
const cfcs = js_ast_node.query.collect.child.exe().query.collect.first.child.exe();
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
console.log('cfcs', cfcs);
|
|
276
|
-
console.log('cfcs.length', cfcs.length);
|
|
277
|
-
|
|
278
|
-
console.log('cfcs.query', cfcs.query);
|
|
279
|
-
|
|
280
|
-
const cfc = cfcs[0];
|
|
281
|
-
const cfc_child_types = cfc.query.collect.child.type.exe()
|
|
282
|
-
const cfc_child_child_counts = cfc.query.collect.child.exe().query.collect.child.count.exe()
|
|
283
|
-
|
|
284
|
-
console.log('cfc_child_types', cfc_child_types);
|
|
285
|
-
console.log('cfc_child_child_counts', cfc_child_child_counts);
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
const earlier_tests = () => {
|
|
291
|
-
|
|
292
|
-
console.log('js_ast_node.category', js_ast_node.category);
|
|
293
|
-
console.log('js_ast_node.source', js_ast_node.source);
|
|
294
|
-
console.log('js_ast_node', js_ast_node);
|
|
295
|
-
console.log('');
|
|
296
|
-
//console.log('js_ast_node.babel.node', js_ast_node.babel.node);
|
|
297
|
-
|
|
298
|
-
//console.log('js_ast_node', js_ast_node);
|
|
299
|
-
//console.log('js_ast_node.path', js_ast_node.path);
|
|
300
|
-
//console.log('js_ast_node.depth', js_ast_node.depth);
|
|
301
|
-
//console.log('js_ast_node.is_root', js_ast_node.is_root);
|
|
302
|
-
//console.log('js_ast_node.is_declaration', js_ast_node.is_declaration);
|
|
303
|
-
//console.log('js_ast_node.child_nodes.length', js_ast_node.child_nodes.length);
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
//js_ast_node.inner;
|
|
307
|
-
|
|
308
|
-
console.log('js_ast_node.inner', js_ast_node.inner);
|
|
309
|
-
console.log('js_ast_node.inner.count', js_ast_node.inner.count);
|
|
310
|
-
console.log('js_ast_node.all.count', js_ast_node.all.count);
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
// .collect.identifier
|
|
315
|
-
|
|
316
|
-
// inner.declaration
|
|
317
|
-
|
|
318
|
-
// inner.node
|
|
319
|
-
|
|
320
|
-
// js_ast_node.collect.all()
|
|
321
|
-
|
|
322
|
-
// collect.all.declaration
|
|
323
|
-
// seems like that could be built on top of the select syntax.
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
const o_select_all = js_ast_node.select.all;
|
|
327
|
-
console.log('o_select_all', o_select_all);
|
|
328
|
-
|
|
329
|
-
const decs = js_ast_node.select.all(node => node.is_declaration);
|
|
330
|
-
console.log('decs', decs);
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
// js_ast_node.collect.all.identifier
|
|
337
|
-
|
|
338
|
-
// and then .all should use .collect but work as a property.
|
|
339
|
-
// do that later.
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
const ids = js_ast_node.select.all(node => node.is_identifier);
|
|
343
|
-
console.log('ids', ids);
|
|
344
|
-
|
|
345
|
-
console.log('js_ast_node.child', js_ast_node.child);
|
|
346
|
-
console.log('js_ast_node.child.shared.type', js_ast_node.child.shared.type);
|
|
347
|
-
console.log('js_ast_node.child.count', js_ast_node.child.count);
|
|
348
|
-
|
|
349
|
-
// child.filter(fn)
|
|
350
|
-
|
|
351
|
-
const ids2 = js_ast_node.collect.inner.identifier();
|
|
352
|
-
console.log('ids2', ids2);
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
console.log('js_ast_node.collect.all.identifier', js_ast_node.collect.all.identifier());
|
|
356
|
-
|
|
357
|
-
// .each.identifier
|
|
358
|
-
|
|
359
|
-
// .iterate.all.identifier?
|
|
360
|
-
js_ast_node.each.identifier(id => {
|
|
361
|
-
console.log('id.source', id.source);
|
|
362
|
-
console.log('id.sibling.count', id.sibling.count);
|
|
363
|
-
|
|
364
|
-
console.log('id.sibling.previous.count', id.sibling.previous.count);
|
|
365
|
-
console.log('id.sibling.post.count', id.sibling.post.count);
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
});
|
|
370
|
-
|
|
371
|
-
// Find out how many declarators it has.
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
// Does it have its mirror structure loaded?
|
|
376
|
-
// The mirror structure is made out of these JS_AST_Nodes.
|
|
377
|
-
// Would prefer for it to load automatically and not be part of the API.
|
|
378
|
-
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
|
|
1
|
+
|
|
2
|
+
// Should have more specific tests for JS_AST_Node.
|
|
3
|
+
// Such as getting the source but with renamed local variables.
|
|
4
|
+
|
|
5
|
+
// Maybe need more tests and fixes for deconstructing expressions.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
// Load a JS file into an OO structure
|
|
11
|
+
|
|
12
|
+
const JS_File = require('../JS_File/JS_File');
|
|
13
|
+
//const JS_File_Comprehension = require('../JS_File_Comprehension');
|
|
14
|
+
const path = require('path');
|
|
15
|
+
const fs = require('fs');
|
|
16
|
+
const Project = require('../Project');
|
|
17
|
+
const {each} = require('lang-tools');
|
|
18
|
+
|
|
19
|
+
//const JS_AST_Node = require('../JS_AST/JS_AST_Node');
|
|
20
|
+
const JS_AST_Node = require('../JS_AST_Node_Extended/JS_AST_Node_Extended');
|
|
21
|
+
|
|
22
|
+
const test_js_ast_node = () => {
|
|
23
|
+
|
|
24
|
+
// That's a simple declaration.
|
|
25
|
+
//const test_script_1 = 'const firstname = "James", surname = "Vickers", name = firstname + " " + surname, [a, b, c] = [1, 2, 3];';
|
|
26
|
+
//const test_script_2 = 'module.exports = lang_mini;';
|
|
27
|
+
const test_script_1 = 'const [a, b, c] = [1, 2, 3], [d, e, f] = [4, 5, 6];';
|
|
28
|
+
//const test_script_1 = 'const [a, b, c] = [1, 2, 3];';
|
|
29
|
+
|
|
30
|
+
//const test_script_3 = 'const {a, b, c} = propertied_object;'
|
|
31
|
+
|
|
32
|
+
const test_script_4 = 'const obj = {"a": 1, "b": 2, "c": 3}';
|
|
33
|
+
|
|
34
|
+
// Item declared as an array.
|
|
35
|
+
// Still a single declared item, even though it's composed of multiple things.
|
|
36
|
+
// Would could as an Abstract_Single_Declaration???
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
//const test_script_1 = 'const a = [1, 2, 3];';
|
|
40
|
+
|
|
41
|
+
// Root node by default?
|
|
42
|
+
// Makes sense as that's the likely context the developer would use it.
|
|
43
|
+
// If it has no parent_node.
|
|
44
|
+
|
|
45
|
+
const spec = {
|
|
46
|
+
source: test_script_1
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const js_ast_node = JS_AST_Node.from_spec(spec);
|
|
50
|
+
|
|
51
|
+
console.log('js_ast_node', js_ast_node);
|
|
52
|
+
console.log('js_ast_node.source', js_ast_node.source);
|
|
53
|
+
|
|
54
|
+
console.log('js_ast_node.child.count', js_ast_node.child.count);
|
|
55
|
+
|
|
56
|
+
console.log('js_ast_node.query.count.all.exe()', js_ast_node.query.count.all.exe());
|
|
57
|
+
|
|
58
|
+
// mapcall_deep_iterate
|
|
59
|
+
// mapcall_child_nodes
|
|
60
|
+
// deep_iterate_mapcall
|
|
61
|
+
|
|
62
|
+
// mapped call ?
|
|
63
|
+
|
|
64
|
+
const direct_calling = () => {
|
|
65
|
+
js_ast_node.callmap_deep_iterate(node => node.signature, {
|
|
66
|
+
'ArE(NumL,NumL,NumL)': (node) => {
|
|
67
|
+
console.log('are 3 numlit node', node);
|
|
68
|
+
},
|
|
69
|
+
'ArP(ID,ID,ID)': (node) => {
|
|
70
|
+
console.log('arp 3 id node', node);
|
|
71
|
+
}
|
|
72
|
+
}, node => {
|
|
73
|
+
console.log('default node', node);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
js_ast_node.signature_callmap_deep_iterate({
|
|
77
|
+
'ArE(NumL,NumL,NumL)': (node) => {
|
|
78
|
+
console.log('* are 3 numlit node', node);
|
|
79
|
+
},
|
|
80
|
+
'ArP(ID,ID,ID)': (node) => {
|
|
81
|
+
console.log('* arp 3 id node', node);
|
|
82
|
+
}
|
|
83
|
+
}, node => {
|
|
84
|
+
console.log('* default node', node);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const callmap_calling = () => {
|
|
89
|
+
js_ast_node.query.callmap.exe(node => node.signature, {
|
|
90
|
+
'ArE(NumL,NumL,NumL)': (node) => {
|
|
91
|
+
console.log('are 3 numlit node', node);
|
|
92
|
+
},
|
|
93
|
+
'ArP(ID,ID,ID)': (node) => {
|
|
94
|
+
console.log('arp 3 id node', node);
|
|
95
|
+
}
|
|
96
|
+
}, node => {
|
|
97
|
+
console.log('default node', node);
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
js_ast_node.query.callmap.by.signature.exe({
|
|
101
|
+
'ArE(NumL,NumL,NumL)': (node) => {
|
|
102
|
+
console.log('!!are 3 numlit node', node);
|
|
103
|
+
},
|
|
104
|
+
'ArP(ID,ID,ID)': (node) => {
|
|
105
|
+
console.log('!!arp 3 id node', node);
|
|
106
|
+
}
|
|
107
|
+
}, node => {
|
|
108
|
+
console.log('!!default node', node);
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
// And it works... now to get it into query.
|
|
117
|
+
|
|
118
|
+
// callmap_deep_iterate
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
// Let's do a bit more work on getting object declared keys.
|
|
122
|
+
// .query.collect.objectproperty.exe().query.find.child.identifier.exe().query('name');
|
|
123
|
+
|
|
124
|
+
const used_tests = () => {
|
|
125
|
+
const var_decltrs = js_ast_node.query.collect.child.variabledeclarator.exe();
|
|
126
|
+
console.log('var_decltrs', var_decltrs);
|
|
127
|
+
|
|
128
|
+
// .id property of the var declarators?
|
|
129
|
+
//
|
|
130
|
+
|
|
131
|
+
const decr_id_names = js_ast_node.query.collect.child.variabledeclarator.exe().query.collect.first.child.name.exe();
|
|
132
|
+
console.log('decr_id_names', decr_id_names);
|
|
133
|
+
|
|
134
|
+
//const key_id_names = js_ast_node.query.collect.objectproperty.exe().query.collect.child.identifier.exe().query.collect.name.exe();
|
|
135
|
+
//console.log('key_id_names', key_id_names);
|
|
136
|
+
|
|
137
|
+
// OPr
|
|
138
|
+
|
|
139
|
+
// .query.select.by.t.exe('OPr');
|
|
140
|
+
|
|
141
|
+
const oprs = js_ast_node.query.select.by.t.exe('OPr');
|
|
142
|
+
console.log('oprs', oprs);
|
|
143
|
+
|
|
144
|
+
const oprslits = js_ast_node.query.select.by.t.exe('OPr').query.collect.child.literal.exe();
|
|
145
|
+
console.log('oprslits', oprslits);
|
|
146
|
+
|
|
147
|
+
const opr_first_child_nodes = js_ast_node.query.select.by.t.exe('OPr').query.collect.first.child.exe(); // working nicely.
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
// Best to keep this syntax for the moment, the need for query collect and exe make it explicit and simpler to follow.
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
// .t.collect('OPr').first.child.node.exe();
|
|
155
|
+
console.log('opr_first_child_nodes', opr_first_child_nodes);
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
//const sl_values = opr_first_child_nodes.map(node => node.babel.node.value)
|
|
159
|
+
const sl_values = js_ast_node.query.select.by.t.exe('OPr').query.collect.first.child.value.exe();
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
console.log('sl_values', sl_values);
|
|
163
|
+
|
|
164
|
+
if (js_ast_node.declaration) {
|
|
165
|
+
console.log('js_ast_node.declaration.declared.keys', js_ast_node.declaration.declared.keys);
|
|
166
|
+
|
|
167
|
+
// js_ast_node.query.collect.declared.keys.exe();
|
|
168
|
+
|
|
169
|
+
const dc2 = js_ast_node.query.collect.own.declared.keys.exe();
|
|
170
|
+
console.log('dc2', dc2);
|
|
171
|
+
|
|
172
|
+
// and the corresponding assigned values.
|
|
173
|
+
// declaration.assigned.values
|
|
174
|
+
// declaration.declared, declaration.assigned
|
|
175
|
+
|
|
176
|
+
console.log('js_ast_node.declaration.assigned.values', js_ast_node.declaration.assigned.values);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// .query.collect.own.assigned.values
|
|
180
|
+
// .query.collect.own.declaration.assigned.value
|
|
181
|
+
// .query.collect.own.declaration.value
|
|
182
|
+
// .query.collect.declaration.value
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
const various_tests_including_new_query_api = () => {
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
console.log('js_ast_node.category', js_ast_node.category);
|
|
194
|
+
console.log('');
|
|
195
|
+
console.log('js_ast_node.source\n' + js_ast_node.source);
|
|
196
|
+
console.log('');
|
|
197
|
+
|
|
198
|
+
console.log('js_ast_node', js_ast_node);
|
|
199
|
+
console.log('js_ast_node.child.count', js_ast_node.child.count);
|
|
200
|
+
console.log('js_ast_node.child.shared.type', js_ast_node.child.shared.type);
|
|
201
|
+
console.log('js_ast_node.child.shared.t', js_ast_node.child.shared.t);
|
|
202
|
+
console.log('js_ast_node.type', js_ast_node.type);
|
|
203
|
+
console.log('js_ast_node.declaration', js_ast_node.declaration);
|
|
204
|
+
|
|
205
|
+
console.log('js_ast_node.declaration.keys', js_ast_node.declaration.keys);
|
|
206
|
+
|
|
207
|
+
const q = js_ast_node.query;
|
|
208
|
+
|
|
209
|
+
const qeach = q.each;
|
|
210
|
+
|
|
211
|
+
console.log('q', q);
|
|
212
|
+
console.log('qeach', qeach);
|
|
213
|
+
console.log('qeach.text', qeach.text);
|
|
214
|
+
|
|
215
|
+
//const q2 = js_ast_node.query.each.child.node;
|
|
216
|
+
const q2 = js_ast_node.query.first.child.node;
|
|
217
|
+
console.log('q2', q2);
|
|
218
|
+
console.log('q2.qstring', q2.qstring); // .qtext? or .querytext? .toString()? qstring for the moment.
|
|
219
|
+
const vdr = q2.exe();
|
|
220
|
+
const vdrcn2 = vdr.query.second.child.exe();
|
|
221
|
+
//console.log('q2.exe()', q2.exe());
|
|
222
|
+
console.log('vdr', vdr);
|
|
223
|
+
console.log('vdrcn2', vdrcn2);
|
|
224
|
+
console.log('js_ast_node', js_ast_node);
|
|
225
|
+
|
|
226
|
+
// .query.select.exec
|
|
227
|
+
// .query.select.by.type.exe('ObjectProperty');
|
|
228
|
+
|
|
229
|
+
const oprs = js_ast_node.query.select.by.type.exe('ObjectProperty');
|
|
230
|
+
console.log('oprs', oprs);
|
|
231
|
+
|
|
232
|
+
const oprns = js_ast_node.query.select.by.type.exe('ObjectProperty').query.collect.child.identifier.name.exe();
|
|
233
|
+
|
|
234
|
+
console.log('oprns', oprns);
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
// Just a simple test to get the structure there for query result .each queries.
|
|
238
|
+
js_ast_node.query.select.by.type.exe('ObjectProperty').query.each.child.exe(cn => {
|
|
239
|
+
console.log('cn', cn);
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
js_ast_node.query.select.by.type.exe('ObjectProperty').query.each.child.identifier.exe(cn => {
|
|
243
|
+
console.log('cn', cn);
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
const ids = js_ast_node.query.collect.identifier.exe();
|
|
248
|
+
console.log('ids', ids);
|
|
249
|
+
|
|
250
|
+
const csigs = js_ast_node.query.collect.child.signature.exe();
|
|
251
|
+
console.log('csigs', csigs);
|
|
252
|
+
|
|
253
|
+
console.log('js_ast_node.query.count.child.exe()', js_ast_node.query.count.child.exe());
|
|
254
|
+
console.log('js_ast_node.query.count.identifier.exe()', js_ast_node.query.count.identifier.exe());
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
// still for the moment will be clear about the verb used.
|
|
258
|
+
|
|
259
|
+
// Pattern category....
|
|
260
|
+
|
|
261
|
+
// query.collect.by.category('Pattern');
|
|
262
|
+
|
|
263
|
+
//const patterns = js_ast_node.query.select.by.category.exe('Pattern');
|
|
264
|
+
|
|
265
|
+
const patterns = js_ast_node.query.collect.pattern.exe();
|
|
266
|
+
|
|
267
|
+
console.log('patterns', patterns);
|
|
268
|
+
|
|
269
|
+
const oprops = patterns.query.collect.property.exe();
|
|
270
|
+
console.log('oprops', oprops);
|
|
271
|
+
|
|
272
|
+
const cfcs = js_ast_node.query.collect.child.exe().query.collect.first.child.exe();
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
console.log('cfcs', cfcs);
|
|
276
|
+
console.log('cfcs.length', cfcs.length);
|
|
277
|
+
|
|
278
|
+
console.log('cfcs.query', cfcs.query);
|
|
279
|
+
|
|
280
|
+
const cfc = cfcs[0];
|
|
281
|
+
const cfc_child_types = cfc.query.collect.child.type.exe()
|
|
282
|
+
const cfc_child_child_counts = cfc.query.collect.child.exe().query.collect.child.count.exe()
|
|
283
|
+
|
|
284
|
+
console.log('cfc_child_types', cfc_child_types);
|
|
285
|
+
console.log('cfc_child_child_counts', cfc_child_child_counts);
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
const earlier_tests = () => {
|
|
291
|
+
|
|
292
|
+
console.log('js_ast_node.category', js_ast_node.category);
|
|
293
|
+
console.log('js_ast_node.source', js_ast_node.source);
|
|
294
|
+
console.log('js_ast_node', js_ast_node);
|
|
295
|
+
console.log('');
|
|
296
|
+
//console.log('js_ast_node.babel.node', js_ast_node.babel.node);
|
|
297
|
+
|
|
298
|
+
//console.log('js_ast_node', js_ast_node);
|
|
299
|
+
//console.log('js_ast_node.path', js_ast_node.path);
|
|
300
|
+
//console.log('js_ast_node.depth', js_ast_node.depth);
|
|
301
|
+
//console.log('js_ast_node.is_root', js_ast_node.is_root);
|
|
302
|
+
//console.log('js_ast_node.is_declaration', js_ast_node.is_declaration);
|
|
303
|
+
//console.log('js_ast_node.child_nodes.length', js_ast_node.child_nodes.length);
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
//js_ast_node.inner;
|
|
307
|
+
|
|
308
|
+
console.log('js_ast_node.inner', js_ast_node.inner);
|
|
309
|
+
console.log('js_ast_node.inner.count', js_ast_node.inner.count);
|
|
310
|
+
console.log('js_ast_node.all.count', js_ast_node.all.count);
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
// .collect.identifier
|
|
315
|
+
|
|
316
|
+
// inner.declaration
|
|
317
|
+
|
|
318
|
+
// inner.node
|
|
319
|
+
|
|
320
|
+
// js_ast_node.collect.all()
|
|
321
|
+
|
|
322
|
+
// collect.all.declaration
|
|
323
|
+
// seems like that could be built on top of the select syntax.
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
const o_select_all = js_ast_node.select.all;
|
|
327
|
+
console.log('o_select_all', o_select_all);
|
|
328
|
+
|
|
329
|
+
const decs = js_ast_node.select.all(node => node.is_declaration);
|
|
330
|
+
console.log('decs', decs);
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
|
|
335
|
+
|
|
336
|
+
// js_ast_node.collect.all.identifier
|
|
337
|
+
|
|
338
|
+
// and then .all should use .collect but work as a property.
|
|
339
|
+
// do that later.
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
const ids = js_ast_node.select.all(node => node.is_identifier);
|
|
343
|
+
console.log('ids', ids);
|
|
344
|
+
|
|
345
|
+
console.log('js_ast_node.child', js_ast_node.child);
|
|
346
|
+
console.log('js_ast_node.child.shared.type', js_ast_node.child.shared.type);
|
|
347
|
+
console.log('js_ast_node.child.count', js_ast_node.child.count);
|
|
348
|
+
|
|
349
|
+
// child.filter(fn)
|
|
350
|
+
|
|
351
|
+
const ids2 = js_ast_node.collect.inner.identifier();
|
|
352
|
+
console.log('ids2', ids2);
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
console.log('js_ast_node.collect.all.identifier', js_ast_node.collect.all.identifier());
|
|
356
|
+
|
|
357
|
+
// .each.identifier
|
|
358
|
+
|
|
359
|
+
// .iterate.all.identifier?
|
|
360
|
+
js_ast_node.each.identifier(id => {
|
|
361
|
+
console.log('id.source', id.source);
|
|
362
|
+
console.log('id.sibling.count', id.sibling.count);
|
|
363
|
+
|
|
364
|
+
console.log('id.sibling.previous.count', id.sibling.previous.count);
|
|
365
|
+
console.log('id.sibling.post.count', id.sibling.post.count);
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
// Find out how many declarators it has.
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
// Does it have its mirror structure loaded?
|
|
376
|
+
// The mirror structure is made out of these JS_AST_Nodes.
|
|
377
|
+
// Would prefer for it to load automatically and not be part of the API.
|
|
378
|
+
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
|
|
382
382
|
test_js_ast_node();
|