jsgui3-server 0.0.121 → 0.0.122
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/settings.json +6 -0
- package/README.md +10 -10
- package/controls/Active_HTML_Document.js +116 -116
- package/controls/README.md +7 -7
- package/controls/page/admin.js +74 -74
- package/controls/panel/admin.js +11 -11
- package/examples/_css/basic.css +913 -913
- package/examples/_css/database-control.css +51 -51
- package/examples/_css/jsgui.css +66 -66
- package/examples/_css/multi-layout.css +23 -23
- package/examples/_css/style.css +1669 -1669
- package/examples/_css/top-and-bottom-bars.css +54 -54
- package/examples/box/1) square box/client.js +188 -188
- package/examples/box/1) square box/server.js +112 -112
- package/examples/box/2) twenty square boxes/css flex wrap/client.js +248 -248
- package/examples/box/2) twenty square boxes/css flex wrap/server.js +112 -112
- package/examples/boxes/square_boxes.js +45 -48
- package/examples/boxes/square_boxes_client.js +132 -136
- package/examples/client-side-popup-menu-button.html +93 -93
- package/examples/color_palette.js +51 -51
- package/examples/color_palette_client.js +95 -95
- package/examples/controls/1) window/client.js +186 -186
- package/examples/controls/1) window/server.js +117 -117
- package/examples/controls/10) window, mirrored text inputs/client.js +320 -320
- package/examples/controls/10) window, mirrored text inputs/server.js +117 -117
- package/examples/controls/11) window, mirrored text fields/client.js +493 -251
- package/examples/controls/11) window, mirrored text fields/server.js +117 -117
- package/examples/controls/11b) window, shared Data_Object model mirrored text fields/client.js +613 -331
- package/examples/controls/11b) window, shared Data_Object model mirrored text fields/server.js +117 -117
- package/examples/controls/11c) window, shared Data_Value model mirrored text fields/client.js +617 -617
- package/examples/controls/11c) window, shared Data_Value model mirrored text fields/server.js +117 -117
- package/examples/controls/11d) window, shared model mirrored integer text fields/client.js +611 -280
- package/examples/controls/11d) window, shared model mirrored integer text fields/server.js +134 -22
- package/examples/controls/12) window, Select_Options control/client.js +435 -452
- package/examples/controls/12) window, Select_Options control/server.js +117 -117
- package/examples/controls/2) two windows/client.js +193 -193
- package/examples/controls/2) two windows/server.js +113 -113
- package/examples/controls/3) five windows/client.js +217 -217
- package/examples/controls/3) five windows/server.js +116 -115
- package/examples/controls/4) window, tabbed panel/client.js +54 -225
- package/examples/controls/4) window, tabbed panel/server.js +17 -117
- package/examples/controls/5) window, grid/client.js +204 -484
- package/examples/controls/5) window, grid/server.js +117 -119
- package/examples/controls/6) window, color_palette/client.js +204 -204
- package/examples/controls/6) window, color_palette/server.js +117 -117
- package/examples/controls/7) window, month_view/client.js +40 -231
- package/examples/controls/7) window, month_view/server.js +117 -117
- package/examples/controls/8) window, checkbox/client.js +247 -209
- package/examples/controls/8) window, checkbox/server.js +117 -117
- package/examples/controls/9) window, date picker/client.js +303 -303
- package/examples/controls/9) window, date picker/server.js +117 -117
- package/examples/controls/9b) window, shared data.model mirrored date pickers/client.js +398 -398
- package/examples/controls/9b) window, shared data.model mirrored date pickers/server.js +117 -117
- package/examples/controls/__old/_html-server-color-palette.js +114 -114
- package/examples/controls/__old/html-server-combo-box.js +104 -104
- package/examples/controls/__old/html-server-list.js +98 -98
- package/examples/controls/__old/html-server-popup-menu-button.js +114 -114
- package/examples/controls/__old/html-server-start-stop-toggle-button.js +146 -146
- package/examples/controls/__old/scs-arrow-button.js +36 -36
- package/examples/controls/__old/scs-date-picker.js +157 -157
- package/examples/controls/__old/scs-file-browser.js +82 -82
- package/examples/controls/__old/scs-item.js +159 -159
- package/examples/controls/__old/scs-month-arrow-selector.js +126 -126
- package/examples/controls/__old/scs-month-view.js +94 -94
- package/examples/controls/__old/scs-start-stop-toggle-button.js +40 -40
- package/examples/controls/__old/scs-tree.js +49 -49
- package/examples/controls/__old/scs-year-arrow-selector.js +127 -127
- package/examples/demos/date-picker.js +119 -119
- package/examples/demos/explain-encapsulation.js +9 -9
- package/examples/demos/resizing.js +35 -35
- package/examples/demos/server_time.js +6 -6
- package/examples/grids/grid_1.js +45 -45
- package/examples/grids/grid_1_client.js +329 -329
- package/examples/html-rendering.js +20 -20
- package/examples/html-server.js +105 -105
- package/examples/introducing jsgui3/server.js +110 -110
- package/examples/mx_display/mx_display_1.js +45 -45
- package/examples/mx_display/mx_display_1_client.js +444 -444
- package/fs2.js +1836 -1836
- package/http/responders/HTTP_Responder.js +15 -15
- package/http/responders/static/Static_Route_HTTP_Responder.js +105 -105
- package/module.js +34 -34
- package/old/_single-control-server.js +418 -418
- package/old/single-control-server.js +368 -368
- package/old/single-page-app.js +131 -131
- package/package.json +42 -42
- package/page-context.js +92 -92
- package/publishers/helpers/assigners/Assigner.js +10 -10
- package/publishers/helpers/assigners/static-compressed-response-buffers/Single_Control_Webpage_Server_Static_Compressed_Response_Buffers_Assigner.js +150 -150
- package/publishers/helpers/assigners/static-headers/Single_Control_Webpage_Server_Static_Headers_Assigner.js +109 -109
- package/publishers/helpers/assigners/static-routes/Single_Control_Webpage_Server_Static_Routes_Assigner.js +91 -91
- package/publishers/helpers/assigners/static-uncompressed-response-buffers/Single_Control_Webpage_Server_Static_Uncompressed_Response_Buffers_Assigner.js +104 -104
- package/publishers/helpers/preparers/static/bundle/Ready_To_Serve_Preparer.js +18 -18
- package/publishers/helpers/preparers/static/bundle/Static_Routes_Responses_Webpage_Bundle_Preparer.js +44 -44
- package/publishers/http-function-publisher.js +212 -212
- package/publishers/http-html-page-publisher.js +5 -5
- package/publishers/http-html-publisher.js +24 -24
- package/publishers/http-js-publisher.js +135 -135
- package/publishers/http-observable-publisher.js +124 -124
- package/publishers/http-publisher.js +53 -53
- package/publishers/http-resource-publisher.js +325 -325
- package/publishers/http-webpage-publisher.js +659 -658
- package/publishers/http-webpageorsite-publisher.js +343 -343
- package/publishers/http-website-publisher.js +640 -640
- package/publishers/notes.md +9 -9
- package/resources/README.md +16 -16
- package/resources/_old_website-javascript-resource.js +994 -994
- package/resources/_old_website-resource.js +507 -507
- package/resources/compile/server-resource-compilation.js +43 -43
- package/resources/data-resource.js +118 -118
- package/resources/fs-resource.js +146 -146
- package/resources/jsbuilder/Abstract_Single_Declaration.js +105 -105
- package/resources/jsbuilder/Abstract_Single_Declaration_Sequence.js +42 -42
- package/resources/jsbuilder/JS_AST/JS_AST_Abstract_Node.js +61 -61
- package/resources/jsbuilder/JS_AST/JS_AST_Abstract_Node_Group.js +41 -41
- package/resources/jsbuilder/JS_AST/JS_AST_Group_Shared.js +61 -61
- package/resources/jsbuilder/JS_AST/JS_AST_Node.js +93 -93
- package/resources/jsbuilder/JS_AST/JS_AST_Node_0-Core.js +253 -253
- package/resources/jsbuilder/JS_AST/JS_AST_Node_1-Babel.js +337 -337
- package/resources/jsbuilder/JS_AST/JS_AST_Node_10-Changing.js +39 -39
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.1-Child.js +96 -96
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.2-Parent.js +37 -37
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.3-Ancestor.js +61 -61
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.2-Inner.js +43 -43
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.3-All.js +72 -72
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.4-Sibling.js +92 -92
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.5-Available_In_Scope.js +29 -29
- package/resources/jsbuilder/JS_AST/JS_AST_Node_2.9-Signature.js +116 -116
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3-Basics.js +159 -159
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.0-Basics_First.js +178 -178
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.1-Basics_Second.js +87 -87
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.99-Basics_Last.js +91 -91
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.1-Basics_Each.js +136 -136
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.1.5-Basics_Count.js +73 -73
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.2-Basics_Filter.js +39 -39
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.3-Basics_Collect.js +85 -85
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.4-Basics_Select.js +42 -42
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.5-Basics_Find.js +40 -40
- package/resources/jsbuilder/JS_AST/JS_AST_Node_3.6-Basics_Callmap.js +54 -54
- package/resources/jsbuilder/JS_AST/JS_AST_Node_4.0-Index_Indexes.js +45 -45
- package/resources/jsbuilder/JS_AST/JS_AST_Node_4.1-Index.js +343 -343
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.0-Category.js +38 -38
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.1-Category_Identifier.js +30 -30
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.2-Category_Literal.js +28 -28
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.3-Category_Expression.js +26 -26
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.4-Category_Pattern.js +8 -8
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.5-Category_Declaration.js +43 -43
- package/resources/jsbuilder/JS_AST/JS_AST_Node_5.6-Category_Statement.js +21 -21
- package/resources/jsbuilder/JS_AST/JS_AST_Node_6.0-Type.js +89 -89
- package/resources/jsbuilder/JS_AST/JS_AST_Node_6.1-Type_Class_Declaration.js +8 -8
- package/resources/jsbuilder/JS_AST/JS_AST_Node_6.2-Type_Variable_Declaration.js +27 -27
- package/resources/jsbuilder/JS_AST/JS_AST_Node_6.3-Type_Variable_Declarator.js +28 -28
- package/resources/jsbuilder/JS_AST/JS_AST_Node_7-Query.js +736 -736
- package/resources/jsbuilder/JS_AST/JS_AST_Node_8-Features.js +64 -64
- package/resources/jsbuilder/JS_AST/JS_AST_Node_9-Planning.js +31 -31
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Arrangement.js +15 -15
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Declared_Object.js +305 -305
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature.js +77 -77
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature_Declaration.js +248 -248
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature_Declarator.js +138 -138
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature.js +10 -10
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature_Exported.js +100 -100
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature_Exports.js +60 -60
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Interpreted.js +179 -179
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/_JSGUI_Root_Node_Interpreted.js +43 -43
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/special_case_objectassign_to_object.js +12 -12
- package/resources/jsbuilder/JS_AST/JS_AST_Node_Group.js +35 -35
- package/resources/jsbuilder/JS_AST/JS_AST_Operation.js +11 -11
- package/resources/jsbuilder/JS_AST/JS_AST_Operation_On_Relationship.js +31 -31
- package/resources/jsbuilder/JS_AST/JS_AST_Ordered_Relationship_Node_To_Group.js +37 -37
- package/resources/jsbuilder/JS_AST/JS_AST_Ordinal.js +39 -39
- package/resources/jsbuilder/JS_AST/JS_AST_Ordinal_Relationship.js +25 -25
- package/resources/jsbuilder/JS_AST/JS_AST_Relationship_Node_To_Group.js +200 -200
- package/resources/jsbuilder/JS_AST/JS_AST_Relationship_Node_Within_Group_To_Node.js +43 -43
- package/resources/jsbuilder/JS_AST/_JS_AST_Node_3.8-Query_Features.js +76 -76
- package/resources/jsbuilder/JS_AST/query/enable_array_as_queryable.js +227 -227
- package/resources/jsbuilder/JS_AST/query/find_object_keys.js +404 -404
- package/resources/jsbuilder/JS_AST/query/node_queries.js +8 -8
- package/resources/jsbuilder/JS_AST/query/root_query_identidy.js +11 -11
- package/resources/jsbuilder/JS_AST_Node_Extended/JSGUI_Singular_Declaration.js +85 -85
- package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Declaration.js +123 -123
- package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Extended.js +87 -87
- package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Extended_0-Core.js +10 -10
- package/resources/jsbuilder/JS_Builder.js +10 -10
- package/resources/jsbuilder/JS_File/Feature/JS_File_Declared_Object.js +31 -31
- package/resources/jsbuilder/JS_File/Feature/JS_File_Exported_Object_Info.js +25 -25
- package/resources/jsbuilder/JS_File/Feature/JS_File_Exports.js +78 -78
- package/resources/jsbuilder/JS_File/Feature/JS_File_Feature.js +17 -17
- package/resources/jsbuilder/JS_File/Feature/JS_File_Imported_Object_Info.js +25 -25
- package/resources/jsbuilder/JS_File/Feature/JS_File_Imports.js +8 -8
- package/resources/jsbuilder/JS_File/JS_File.js +12 -12
- package/resources/jsbuilder/JS_File/JS_File_0-Core.js +202 -202
- package/resources/jsbuilder/JS_File/JS_File_1-Early_Parse.js +175 -175
- package/resources/jsbuilder/JS_File/JS_File_2-Babel.js +81 -81
- package/resources/jsbuilder/JS_File/JS_File_3-JS_AST_Node.js +86 -86
- package/resources/jsbuilder/JS_File/JS_File_4-Query.js +413 -413
- package/resources/jsbuilder/JS_File/JS_File_4.1-Query_Features.js +414 -414
- package/resources/jsbuilder/JS_File/JS_File_5-Planning.js +59 -59
- package/resources/jsbuilder/JS_File/JS_File_6-Changing.js +24 -24
- package/resources/jsbuilder/JS_File/JS_File_Export_Reference.js +12 -12
- package/resources/jsbuilder/JS_File/JS_File_Import_Reference.js +23 -23
- package/resources/jsbuilder/JS_File/JS_File_Import_References.js +31 -31
- package/resources/jsbuilder/JS_File/JS_File_Processor.js +16 -16
- package/resources/jsbuilder/JS_File/JS_Files.js +15 -15
- package/resources/jsbuilder/Module.js +14 -14
- package/resources/jsbuilder/Platform.js +13 -13
- package/resources/jsbuilder/Platforms.js +69 -69
- package/resources/jsbuilder/Project.js +109 -109
- package/resources/jsbuilder/Reference.js +1 -1
- package/resources/jsbuilder/Reference_Sequence.js +16 -16
- package/resources/jsbuilder/Scope.js +29 -29
- package/resources/jsbuilder/Variable_Name_Provider.js +42 -42
- package/resources/jsbuilder/_JS_File.js +225 -225
- package/resources/jsbuilder/ast_query.js +20 -20
- package/resources/jsbuilder/babel/babel_consts.js +162 -162
- package/resources/jsbuilder/babel/babel_node_tools.js +541 -541
- package/resources/jsbuilder/babel/deep_iterate/deep_iterate_babel.js +923 -904
- package/resources/jsbuilder/build.js +16 -16
- package/resources/jsbuilder/platform_notes.md +66 -66
- package/resources/jsbuilder/test/test_ast_node.js +381 -381
- package/resources/jsbuilder/test/test_js_file.js +303 -303
- package/resources/jsbuilder/test/test_project.js +157 -157
- package/resources/local-server-info-resource.js +96 -96
- package/resources/notes.txt +10 -10
- package/resources/old/website-image-resource.js +1185 -1185
- package/resources/process-js.js +498 -498
- package/resources/processors/bundlers/bundle.js +29 -29
- package/resources/processors/bundlers/bundler.js +23 -23
- package/resources/processors/bundlers/css-bundler.js +234 -234
- package/resources/processors/bundlers/js/JS_Bundler.js +51 -51
- package/resources/processors/bundlers/js/esbuild/Advanced_JS_Bundler_Using_ESBuild.js +388 -391
- package/resources/processors/bundlers/js/esbuild/Bundler_Using_ESBuild.js +8 -8
- package/resources/processors/bundlers/js/esbuild/Core_JS_Non_Minifying_Bundler_Using_ESBuild.js +188 -188
- package/resources/processors/bundlers/js/esbuild/Core_JS_Single_File_Minifying_Bundler_Using_ESBuild.js +191 -192
- package/resources/processors/bundlers/js/esbuild/_Old_CSS_Extractor.js +239 -239
- package/resources/processors/bundlers/js-bundler.js +263 -263
- package/resources/processors/bundlers/test_ast.js +73 -73
- package/resources/processors/bundlers/webpage-bundler.js +404 -404
- package/resources/processors/bundlers/website-bundler.js +22 -22
- package/resources/processors/extractors/Extractor.js +9 -11
- package/resources/processors/extractors/js/css_and_js/AST_Node/CSS_And_JS_From_JS_String_Using_AST_Node_Extractor.js +239 -254
- package/resources/processors/extractors/js/css_and_js/CSS_And_JS_From_JS_String_Extractor.js +3 -3
- package/resources/processors/extractors/string/Pos_Span_String_Extractor.js +93 -93
- package/resources/server-installed-tools.js +28 -28
- package/resources/server-resource-pool.js +41 -41
- package/resources/website-audio-resource.js +735 -735
- package/resources/website-css-resource.js +411 -411
- package/resources/website-image-resource.js +412 -412
- package/resources/website-javascript-resource-processor.js +908 -908
- package/resources/website-javascript-resource.js +874 -874
- package/resources/website-resource-processor.js +10 -10
- package/resources/website-resource.js +164 -164
- package/resources/website-static-html-resource.js +199 -199
- package/resources/website-template-html-resource.js +231 -231
- package/roadmap.md +75 -75
- package/server.js +609 -573
- package/static-page-context.js +13 -13
- package/website/webpage.js +81 -81
- package/website/website-group.js +15 -15
- package/website/website.js +260 -260
- package/examples/controls/11d) window, shared model mirrored integer text fields/both.js +0 -17
- package/examples/controls/13) window, shared model mirrored lat_long/client.js +0 -933
- package/examples/controls/13) window, shared model mirrored lat_long/server.js +0 -50
- package/examples/controls/14) window, control compositional model/client.js +0 -328
- package/examples/controls/14) window, control compositional model/server.js +0 -118
- package/examples/controls/14a) window, control spec has compositional model/client.js +0 -440
- package/examples/controls/14a) window, control spec has compositional model/server.js +0 -118
- package/examples/controls/15) window, text field/client.js +0 -256
- package/examples/controls/15) window, text field/server.js +0 -39
- package/examples/controls/16) Window([Text_Input])/client.js +0 -266
- package/examples/controls/16) Window([Text_Input])/server.js +0 -109
- package/examples/controls/16a) Window([Text_Input]) Integer data.model.data_type/client.js +0 -494
- package/examples/controls/16a) Window([Text_Input]) Integer data.model.data_type/isomorphic.js +0 -24
- package/examples/controls/16a) Window([Text_Input]) Integer data.model.data_type/server.js +0 -73
- package/examples/controls/2b) two window, context menus/client.js +0 -193
- package/examples/controls/2b) two window, context menus/server.js +0 -114
- package/examples/controls/4a) window, tabbed panel with various controls inside/client.js +0 -233
- package/examples/controls/4a) window, tabbed panel with various controls inside/server.js +0 -118
|
@@ -1,74 +1,74 @@
|
|
|
1
|
-
|
|
2
|
-
const JS_AST_Node_Basics_Each = require('./JS_AST_Node_3.1-Basics_Each');
|
|
3
|
-
|
|
4
|
-
const JS_AST_Operation = require('./JS_AST_Operation');
|
|
5
|
-
const JS_AST_Relationship = require('./JS_AST_Relationship');
|
|
6
|
-
const JS_AST_Operation_On_Relationship = require('./JS_AST_Operation_On_Relationship');
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
// Could make a more specific feature extraction part.
|
|
10
|
-
// Will come up with more:
|
|
11
|
-
|
|
12
|
-
// 2.1 Identify
|
|
13
|
-
// 2.2 ??? - Extract_Feature?
|
|
14
|
-
|
|
15
|
-
// Will identify more information about what JS is contained.
|
|
16
|
-
// Eg if it's a recognised code library structure that can be extracted.
|
|
17
|
-
// Identify the main block of declarations in a (library or framework) file.
|
|
18
|
-
// Identify the variable definitions in there.
|
|
19
|
-
|
|
20
|
-
// Need more capability here to find and match specified features.
|
|
21
|
-
|
|
22
|
-
// Asking questions about a piece of code - questions to later determine what it is and how to use it.
|
|
23
|
-
|
|
24
|
-
// .matches_type_signature(signature)
|
|
25
|
-
|
|
26
|
-
// . but using a tree is better for checking multiple signatures at once.
|
|
27
|
-
|
|
28
|
-
// basically 'deep iterate', though could apply to .child or .ancestor
|
|
29
|
-
|
|
30
|
-
// Currently not used anyway. Will make the more advanced .query system.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
class JS_AST_Node_Basics_Count extends JS_AST_Node_Basics_Each {
|
|
35
|
-
constructor(spec = {}) {
|
|
36
|
-
super(spec);
|
|
37
|
-
|
|
38
|
-
const {each_child_node, filter_each_child_node} = this;
|
|
39
|
-
|
|
40
|
-
// JS_AST_Property_Operation rather than JS_AST_Function_Operation perhaps
|
|
41
|
-
|
|
42
|
-
const count = new JS_AST_Operation({name: count});
|
|
43
|
-
|
|
44
|
-
const {child} = this;
|
|
45
|
-
//const child = new JS_AST_Relationship({
|
|
46
|
-
// name: 'child'
|
|
47
|
-
//});
|
|
48
|
-
|
|
49
|
-
const count_child = new JS_AST_Operation_On_Relationship({
|
|
50
|
-
operation: count,
|
|
51
|
-
relationship: child
|
|
52
|
-
});
|
|
53
|
-
count.child = count_child;
|
|
54
|
-
|
|
55
|
-
//child.count = count_child;
|
|
56
|
-
|
|
57
|
-
// .count.child.node
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
Object.defineProperty(count_child, 'node', {
|
|
61
|
-
get() {
|
|
62
|
-
return this.child_nodes.length;
|
|
63
|
-
},
|
|
64
|
-
//set(newValue) { bValue = newValue; },
|
|
65
|
-
enumerable: true,
|
|
66
|
-
configurable: false
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
this.count = count;
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
1
|
+
|
|
2
|
+
const JS_AST_Node_Basics_Each = require('./JS_AST_Node_3.1-Basics_Each');
|
|
3
|
+
|
|
4
|
+
const JS_AST_Operation = require('./JS_AST_Operation');
|
|
5
|
+
const JS_AST_Relationship = require('./JS_AST_Relationship');
|
|
6
|
+
const JS_AST_Operation_On_Relationship = require('./JS_AST_Operation_On_Relationship');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
// Could make a more specific feature extraction part.
|
|
10
|
+
// Will come up with more:
|
|
11
|
+
|
|
12
|
+
// 2.1 Identify
|
|
13
|
+
// 2.2 ??? - Extract_Feature?
|
|
14
|
+
|
|
15
|
+
// Will identify more information about what JS is contained.
|
|
16
|
+
// Eg if it's a recognised code library structure that can be extracted.
|
|
17
|
+
// Identify the main block of declarations in a (library or framework) file.
|
|
18
|
+
// Identify the variable definitions in there.
|
|
19
|
+
|
|
20
|
+
// Need more capability here to find and match specified features.
|
|
21
|
+
|
|
22
|
+
// Asking questions about a piece of code - questions to later determine what it is and how to use it.
|
|
23
|
+
|
|
24
|
+
// .matches_type_signature(signature)
|
|
25
|
+
|
|
26
|
+
// . but using a tree is better for checking multiple signatures at once.
|
|
27
|
+
|
|
28
|
+
// basically 'deep iterate', though could apply to .child or .ancestor
|
|
29
|
+
|
|
30
|
+
// Currently not used anyway. Will make the more advanced .query system.
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class JS_AST_Node_Basics_Count extends JS_AST_Node_Basics_Each {
|
|
35
|
+
constructor(spec = {}) {
|
|
36
|
+
super(spec);
|
|
37
|
+
|
|
38
|
+
const {each_child_node, filter_each_child_node} = this;
|
|
39
|
+
|
|
40
|
+
// JS_AST_Property_Operation rather than JS_AST_Function_Operation perhaps
|
|
41
|
+
|
|
42
|
+
const count = new JS_AST_Operation({name: count});
|
|
43
|
+
|
|
44
|
+
const {child} = this;
|
|
45
|
+
//const child = new JS_AST_Relationship({
|
|
46
|
+
// name: 'child'
|
|
47
|
+
//});
|
|
48
|
+
|
|
49
|
+
const count_child = new JS_AST_Operation_On_Relationship({
|
|
50
|
+
operation: count,
|
|
51
|
+
relationship: child
|
|
52
|
+
});
|
|
53
|
+
count.child = count_child;
|
|
54
|
+
|
|
55
|
+
//child.count = count_child;
|
|
56
|
+
|
|
57
|
+
// .count.child.node
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
Object.defineProperty(count_child, 'node', {
|
|
61
|
+
get() {
|
|
62
|
+
return this.child_nodes.length;
|
|
63
|
+
},
|
|
64
|
+
//set(newValue) { bValue = newValue; },
|
|
65
|
+
enumerable: true,
|
|
66
|
+
configurable: false
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
this.count = count;
|
|
70
|
+
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
74
|
module.exports = JS_AST_Node_Basics_Count
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const JS_AST_Node_Basics_Each = require('./JS_AST_Node_3.1-Basics_Each');
|
|
4
|
-
const JS_AST_Operation = require('./JS_AST_Operation');
|
|
5
|
-
const JS_AST_Relationship_Node_To_Group = require('./JS_AST_Relationship_Node_To_Group');
|
|
6
|
-
|
|
7
|
-
const JS_AST_Operation_On_Relationship = require('./JS_AST_Operation_On_Relationship');
|
|
8
|
-
|
|
9
|
-
class JS_AST_Node_Basics_Filter extends JS_AST_Node_Basics_Each {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
constructor(spec = {}) {
|
|
13
|
-
super(spec);
|
|
14
|
-
const filter = new JS_AST_Operation({name: 'filter'});
|
|
15
|
-
|
|
16
|
-
const {child, inner, all} = this;
|
|
17
|
-
const {inner_deep_iterate, each_child_node, deep_iterate} = this;
|
|
18
|
-
|
|
19
|
-
const filter_deep_iterate = (fn_filter, callback) => deep_iterate((node) => fn_filter(node) ? callback(node) : undefined)
|
|
20
|
-
const filter_inner_deep_iterate = (fn_filter, callback) => inner_deep_iterate((node) => fn_filter(node) ? callback(node) : undefined)
|
|
21
|
-
const filter_each_child_node = (fn_filter, callback) => each_child_node(js_ast_node => {
|
|
22
|
-
if (fn_filter(js_ast_node)) {
|
|
23
|
-
callback(js_ast_node);
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
const filter_child_nodes_by_type = (type, callback) => filter_each_child_node(n => n.type === type, callback);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
this.filter = filter;
|
|
31
|
-
this.filter_deep_iterate = filter_deep_iterate;
|
|
32
|
-
this.filter_inner_deep_iterate = filter_inner_deep_iterate;
|
|
33
|
-
this.filter_each_child_node = filter_each_child_node;
|
|
34
|
-
this.filter_child_nodes_by_type = filter_child_nodes_by_type;
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
const JS_AST_Node_Basics_Each = require('./JS_AST_Node_3.1-Basics_Each');
|
|
4
|
+
const JS_AST_Operation = require('./JS_AST_Operation');
|
|
5
|
+
const JS_AST_Relationship_Node_To_Group = require('./JS_AST_Relationship_Node_To_Group');
|
|
6
|
+
|
|
7
|
+
const JS_AST_Operation_On_Relationship = require('./JS_AST_Operation_On_Relationship');
|
|
8
|
+
|
|
9
|
+
class JS_AST_Node_Basics_Filter extends JS_AST_Node_Basics_Each {
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
constructor(spec = {}) {
|
|
13
|
+
super(spec);
|
|
14
|
+
const filter = new JS_AST_Operation({name: 'filter'});
|
|
15
|
+
|
|
16
|
+
const {child, inner, all} = this;
|
|
17
|
+
const {inner_deep_iterate, each_child_node, deep_iterate} = this;
|
|
18
|
+
|
|
19
|
+
const filter_deep_iterate = (fn_filter, callback) => deep_iterate((node) => fn_filter(node) ? callback(node) : undefined)
|
|
20
|
+
const filter_inner_deep_iterate = (fn_filter, callback) => inner_deep_iterate((node) => fn_filter(node) ? callback(node) : undefined)
|
|
21
|
+
const filter_each_child_node = (fn_filter, callback) => each_child_node(js_ast_node => {
|
|
22
|
+
if (fn_filter(js_ast_node)) {
|
|
23
|
+
callback(js_ast_node);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
const filter_child_nodes_by_type = (type, callback) => filter_each_child_node(n => n.type === type, callback);
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
this.filter = filter;
|
|
31
|
+
this.filter_deep_iterate = filter_deep_iterate;
|
|
32
|
+
this.filter_inner_deep_iterate = filter_inner_deep_iterate;
|
|
33
|
+
this.filter_each_child_node = filter_each_child_node;
|
|
34
|
+
this.filter_child_nodes_by_type = filter_child_nodes_by_type;
|
|
35
|
+
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
|
|
40
40
|
module.exports = JS_AST_Node_Basics_Filter
|
|
@@ -1,86 +1,86 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const JS_AST_Node_Basics_Filter = require('./JS_AST_Node_3.2-Basics_Filter');
|
|
4
|
-
|
|
5
|
-
const JS_AST_Operation = require('./JS_AST_Operation');
|
|
6
|
-
const JS_AST_Relationship = require('./JS_AST_Relationship_Node_To_Group');
|
|
7
|
-
|
|
8
|
-
const JS_AST_Operation_On_Relationship = require('./JS_AST_Operation_On_Relationship');
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
// Collect is still a verb.
|
|
13
|
-
// Maybe all verbs should be functions.
|
|
14
|
-
// Some values with different syntax could be properties.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class JS_AST_Node_Basics_Collect extends JS_AST_Node_Basics_Filter {
|
|
18
|
-
constructor(spec = {}) {
|
|
19
|
-
super(spec);
|
|
20
|
-
|
|
21
|
-
const collect = new JS_AST_Operation({name: 'collect'});
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
// or 'deep'? Or just know that 'all' does not include ancestors.
|
|
25
|
-
const {child, inner, all} = this;
|
|
26
|
-
const {inner_deep_iterate, deep_iterate, filter_deep_iterate} = this;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
//const collect_child_nodes = () => this.child_nodes;
|
|
30
|
-
//const collect_child_identifiers = () => this.child_nodes.filter(node => node.is_identifier);
|
|
31
|
-
//const collect_child_declarations = () => this.child_nodes.filter(node => node.is_declaration);
|
|
32
|
-
|
|
33
|
-
/*
|
|
34
|
-
let _collected_inner_nodes;
|
|
35
|
-
const collect_inner_nodes = () => {
|
|
36
|
-
if (!_collected_inner_nodes) {
|
|
37
|
-
_collected_inner_nodes = [];
|
|
38
|
-
inner_deep_iterate(node => _collected_inner_nodes.push(node));
|
|
39
|
-
}
|
|
40
|
-
return _collected_inner_nodes;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const _collect_all = () => {
|
|
44
|
-
const res = [];
|
|
45
|
-
deep_iterate(node => res.push(node));
|
|
46
|
-
return res;
|
|
47
|
-
}
|
|
48
|
-
const _collect_child = () => {
|
|
49
|
-
return this.child_nodes; // maybe into a new array?
|
|
50
|
-
}
|
|
51
|
-
const _collect_inner = () => {
|
|
52
|
-
const res = [];
|
|
53
|
-
inner_deep_iterate(node => {
|
|
54
|
-
if (node !== this) {
|
|
55
|
-
res.push(node);
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
return res;
|
|
59
|
-
}
|
|
60
|
-
*/
|
|
61
|
-
|
|
62
|
-
/*
|
|
63
|
-
let fn_collect_all, fn_collect_child, fn_collect_inner;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const _collect_all_identifiers = () => {
|
|
67
|
-
const res = [];
|
|
68
|
-
filter_deep_iterate(node => node.is_identifier, node => res.push(node));
|
|
69
|
-
return res;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const _select_inner = (fn_select) => {
|
|
73
|
-
const res = [];
|
|
74
|
-
inner_deep_iterate(node => {
|
|
75
|
-
if (node !== this && fn_select(node)) {
|
|
76
|
-
res.push(node);
|
|
77
|
-
}
|
|
78
|
-
});
|
|
79
|
-
return res;
|
|
80
|
-
}
|
|
81
|
-
*/
|
|
82
|
-
this.collect = collect;
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
const JS_AST_Node_Basics_Filter = require('./JS_AST_Node_3.2-Basics_Filter');
|
|
4
|
+
|
|
5
|
+
const JS_AST_Operation = require('./JS_AST_Operation');
|
|
6
|
+
const JS_AST_Relationship = require('./JS_AST_Relationship_Node_To_Group');
|
|
7
|
+
|
|
8
|
+
const JS_AST_Operation_On_Relationship = require('./JS_AST_Operation_On_Relationship');
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
// Collect is still a verb.
|
|
13
|
+
// Maybe all verbs should be functions.
|
|
14
|
+
// Some values with different syntax could be properties.
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class JS_AST_Node_Basics_Collect extends JS_AST_Node_Basics_Filter {
|
|
18
|
+
constructor(spec = {}) {
|
|
19
|
+
super(spec);
|
|
20
|
+
|
|
21
|
+
const collect = new JS_AST_Operation({name: 'collect'});
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
// or 'deep'? Or just know that 'all' does not include ancestors.
|
|
25
|
+
const {child, inner, all} = this;
|
|
26
|
+
const {inner_deep_iterate, deep_iterate, filter_deep_iterate} = this;
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
//const collect_child_nodes = () => this.child_nodes;
|
|
30
|
+
//const collect_child_identifiers = () => this.child_nodes.filter(node => node.is_identifier);
|
|
31
|
+
//const collect_child_declarations = () => this.child_nodes.filter(node => node.is_declaration);
|
|
32
|
+
|
|
33
|
+
/*
|
|
34
|
+
let _collected_inner_nodes;
|
|
35
|
+
const collect_inner_nodes = () => {
|
|
36
|
+
if (!_collected_inner_nodes) {
|
|
37
|
+
_collected_inner_nodes = [];
|
|
38
|
+
inner_deep_iterate(node => _collected_inner_nodes.push(node));
|
|
39
|
+
}
|
|
40
|
+
return _collected_inner_nodes;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const _collect_all = () => {
|
|
44
|
+
const res = [];
|
|
45
|
+
deep_iterate(node => res.push(node));
|
|
46
|
+
return res;
|
|
47
|
+
}
|
|
48
|
+
const _collect_child = () => {
|
|
49
|
+
return this.child_nodes; // maybe into a new array?
|
|
50
|
+
}
|
|
51
|
+
const _collect_inner = () => {
|
|
52
|
+
const res = [];
|
|
53
|
+
inner_deep_iterate(node => {
|
|
54
|
+
if (node !== this) {
|
|
55
|
+
res.push(node);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
return res;
|
|
59
|
+
}
|
|
60
|
+
*/
|
|
61
|
+
|
|
62
|
+
/*
|
|
63
|
+
let fn_collect_all, fn_collect_child, fn_collect_inner;
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
const _collect_all_identifiers = () => {
|
|
67
|
+
const res = [];
|
|
68
|
+
filter_deep_iterate(node => node.is_identifier, node => res.push(node));
|
|
69
|
+
return res;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const _select_inner = (fn_select) => {
|
|
73
|
+
const res = [];
|
|
74
|
+
inner_deep_iterate(node => {
|
|
75
|
+
if (node !== this && fn_select(node)) {
|
|
76
|
+
res.push(node);
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
return res;
|
|
80
|
+
}
|
|
81
|
+
*/
|
|
82
|
+
this.collect = collect;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
86
|
module.exports = JS_AST_Node_Basics_Collect
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const JS_AST_Node_Basics_Collect = require('./JS_AST_Node_3.3-Basics_Collect');
|
|
4
|
-
const JS_AST_Operation = require('./JS_AST_Operation');
|
|
5
|
-
const JS_AST_Relationship_Node_To_Group = require('./JS_AST_Relationship_Node_To_Group');
|
|
6
|
-
const JS_AST_Operation_On_Relationship = require('./JS_AST_Operation_On_Relationship');
|
|
7
|
-
|
|
8
|
-
const enable_array_as_queryable = require('./query/enable_array_as_queryable');
|
|
9
|
-
|
|
10
|
-
class JS_AST_Node_Basics_Select extends JS_AST_Node_Basics_Collect {
|
|
11
|
-
constructor(spec = {}) {
|
|
12
|
-
super(spec);
|
|
13
|
-
|
|
14
|
-
const {filter_deep_iterate, filter_each_child_node, inner_deep_iterate} = this;
|
|
15
|
-
const select_all = (fn_select) => {
|
|
16
|
-
const res = [];
|
|
17
|
-
filter_deep_iterate(fn_select, node => res.push(node));
|
|
18
|
-
enable_array_as_queryable(res);
|
|
19
|
-
|
|
20
|
-
return res;
|
|
21
|
-
}
|
|
22
|
-
const select_child = (fn_select) => {
|
|
23
|
-
const res = [];
|
|
24
|
-
filter_each_child_node(fn_select, node => res.push(node));
|
|
25
|
-
return res;
|
|
26
|
-
}
|
|
27
|
-
const select_inner = (fn_select) => {
|
|
28
|
-
const res = [];
|
|
29
|
-
inner_deep_iterate(node => {
|
|
30
|
-
if (node !== this && fn_select(node)) {
|
|
31
|
-
res.push(node);
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
return res;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
this.select_all = select_all;
|
|
38
|
-
this.select_child = select_child;
|
|
39
|
-
this.select_inner = select_inner;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
const JS_AST_Node_Basics_Collect = require('./JS_AST_Node_3.3-Basics_Collect');
|
|
4
|
+
const JS_AST_Operation = require('./JS_AST_Operation');
|
|
5
|
+
const JS_AST_Relationship_Node_To_Group = require('./JS_AST_Relationship_Node_To_Group');
|
|
6
|
+
const JS_AST_Operation_On_Relationship = require('./JS_AST_Operation_On_Relationship');
|
|
7
|
+
|
|
8
|
+
const enable_array_as_queryable = require('./query/enable_array_as_queryable');
|
|
9
|
+
|
|
10
|
+
class JS_AST_Node_Basics_Select extends JS_AST_Node_Basics_Collect {
|
|
11
|
+
constructor(spec = {}) {
|
|
12
|
+
super(spec);
|
|
13
|
+
|
|
14
|
+
const {filter_deep_iterate, filter_each_child_node, inner_deep_iterate} = this;
|
|
15
|
+
const select_all = (fn_select) => {
|
|
16
|
+
const res = [];
|
|
17
|
+
filter_deep_iterate(fn_select, node => res.push(node));
|
|
18
|
+
enable_array_as_queryable(res);
|
|
19
|
+
|
|
20
|
+
return res;
|
|
21
|
+
}
|
|
22
|
+
const select_child = (fn_select) => {
|
|
23
|
+
const res = [];
|
|
24
|
+
filter_each_child_node(fn_select, node => res.push(node));
|
|
25
|
+
return res;
|
|
26
|
+
}
|
|
27
|
+
const select_inner = (fn_select) => {
|
|
28
|
+
const res = [];
|
|
29
|
+
inner_deep_iterate(node => {
|
|
30
|
+
if (node !== this && fn_select(node)) {
|
|
31
|
+
res.push(node);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
return res;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
this.select_all = select_all;
|
|
38
|
+
this.select_child = select_child;
|
|
39
|
+
this.select_inner = select_inner;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
43
|
module.exports = JS_AST_Node_Basics_Select
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
const JS_AST_Node_Basics_Select = require('./JS_AST_Node_3.4-Basics_Select');
|
|
4
|
-
|
|
5
|
-
const JS_AST_Operation = require('./JS_AST_Operation');
|
|
6
|
-
const JS_AST_Relationship = require('./JS_AST_Relationship_Node_To_Group');
|
|
7
|
-
const JS_AST_Operation_On_Relationship = require('./JS_AST_Operation_On_Relationship');
|
|
8
|
-
|
|
9
|
-
class JS_AST_Node_Basics_Find extends JS_AST_Node_Basics_Select {
|
|
10
|
-
constructor(spec = {}) {
|
|
11
|
-
super(spec);
|
|
12
|
-
const {deep_iterate} = this;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
// Not so sure we need this kind of operation object now.
|
|
16
|
-
// .query is how queries will be done in the future.
|
|
17
|
-
|
|
18
|
-
//const find = new JS_AST_Operation({name: 'find'});
|
|
19
|
-
|
|
20
|
-
const find_node = (fn_match) => {
|
|
21
|
-
let res;
|
|
22
|
-
deep_iterate((js_ast_node, path, depth, stop) => {
|
|
23
|
-
if (fn_match(js_ast_node)) {
|
|
24
|
-
if (!res) res = js_ast_node;
|
|
25
|
-
stop();
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
return res;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
// find.child.node?
|
|
33
|
-
//
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
//find.node = fn_match => find_node(fn_match);
|
|
37
|
-
this.find_node = find_node;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
const JS_AST_Node_Basics_Select = require('./JS_AST_Node_3.4-Basics_Select');
|
|
4
|
+
|
|
5
|
+
const JS_AST_Operation = require('./JS_AST_Operation');
|
|
6
|
+
const JS_AST_Relationship = require('./JS_AST_Relationship_Node_To_Group');
|
|
7
|
+
const JS_AST_Operation_On_Relationship = require('./JS_AST_Operation_On_Relationship');
|
|
8
|
+
|
|
9
|
+
class JS_AST_Node_Basics_Find extends JS_AST_Node_Basics_Select {
|
|
10
|
+
constructor(spec = {}) {
|
|
11
|
+
super(spec);
|
|
12
|
+
const {deep_iterate} = this;
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
// Not so sure we need this kind of operation object now.
|
|
16
|
+
// .query is how queries will be done in the future.
|
|
17
|
+
|
|
18
|
+
//const find = new JS_AST_Operation({name: 'find'});
|
|
19
|
+
|
|
20
|
+
const find_node = (fn_match) => {
|
|
21
|
+
let res;
|
|
22
|
+
deep_iterate((js_ast_node, path, depth, stop) => {
|
|
23
|
+
if (fn_match(js_ast_node)) {
|
|
24
|
+
if (!res) res = js_ast_node;
|
|
25
|
+
stop();
|
|
26
|
+
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
return res;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
// find.child.node?
|
|
33
|
+
//
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
//find.node = fn_match => find_node(fn_match);
|
|
37
|
+
this.find_node = find_node;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
41
|
module.exports = JS_AST_Node_Basics_Find
|