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,344 +1,344 @@
|
|
|
1
|
-
//const babel_node_tools = require('../babel/babel_node_tools');
|
|
2
|
-
// Index before query would help.
|
|
3
|
-
|
|
4
|
-
// Will index the occurrances of various nodes / things.
|
|
5
|
-
// Could get more into tree pattern checking too, declaratively saying what to look for and looking for multiple things at once with signature comparisons in a map.
|
|
6
|
-
|
|
7
|
-
// Indexing at every level looks like it would be useful.
|
|
8
|
-
// so in order to get the info about how the names relate to nodes we consult indexes.
|
|
9
|
-
|
|
10
|
-
const { each } = require('lang-tools');
|
|
11
|
-
const JS_AST_Node_Basics_Callmap = require('./JS_AST_Node_3.6-Basics_Callmap');
|
|
12
|
-
const JS_AST_Node_Indexes = require('./JS_AST_Node_4.0-Index_Indexes');
|
|
13
|
-
|
|
14
|
-
class JS_AST_Node_Index extends JS_AST_Node_Basics_Callmap {
|
|
15
|
-
constructor(spec = {}) {
|
|
16
|
-
super(spec);
|
|
17
|
-
const {deep_iterate, inner, child} = this;
|
|
18
|
-
|
|
19
|
-
// normal object can not work with its's 'constructor' property.
|
|
20
|
-
const _map_identifiers_by_name = new Map();
|
|
21
|
-
let is_indexed = false;
|
|
22
|
-
const indexes = new JS_AST_Node_Indexes();
|
|
23
|
-
const handle_found = (index_name, key, value) => {
|
|
24
|
-
return indexes.set(index_name, key, value);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const setup_node_index = (index_name, fn_selector, fn_key) => {
|
|
28
|
-
|
|
29
|
-
if (indexes.has_index(index_name)) {
|
|
30
|
-
throw 'NYI - index already exists'
|
|
31
|
-
} else {
|
|
32
|
-
deep_iterate(node => {
|
|
33
|
-
if (fn_selector(node)) {
|
|
34
|
-
const key = fn_key(node);
|
|
35
|
-
handle_found(index_name, key, node);
|
|
36
|
-
}
|
|
37
|
-
})
|
|
38
|
-
}
|
|
39
|
-
//return indexes.get_index(index_name);
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
const get_indexed_nodes_by_key = (index_name, key) => {
|
|
44
|
-
return indexes.get(index_name, key);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
// calling multiple indexing functions on a single iteration?
|
|
48
|
-
|
|
49
|
-
// .find.all.identifiers(node => node.name = name)
|
|
50
|
-
// .find.identifiers.by.name(name) could substitute for the index.
|
|
51
|
-
|
|
52
|
-
// .idx_lookup_
|
|
53
|
-
|
|
54
|
-
// .nodes_by_name
|
|
55
|
-
|
|
56
|
-
const old = () => {
|
|
57
|
-
const do_default_indexing = () => {
|
|
58
|
-
// Will find function names too :) The functions being called
|
|
59
|
-
// could we make a shallower version that is more efficient?
|
|
60
|
-
// ie, it gets the map from below, and adds any relevant items at the current level.
|
|
61
|
-
|
|
62
|
-
// Making use of child nodes' own indexes would be the optimization here.
|
|
63
|
-
// Building it out of the indexes of the child nodes, if they have indexes.
|
|
64
|
-
|
|
65
|
-
deep_iterate(node => {
|
|
66
|
-
// Are the child nodes all of the same type?
|
|
67
|
-
// .child_node_shared_type property
|
|
68
|
-
|
|
69
|
-
if (node.is_identifier) {
|
|
70
|
-
const name = node.name;
|
|
71
|
-
//console.log('name', name);
|
|
72
|
-
|
|
73
|
-
//_map_identifiers_by_name[name] = _map_identifiers_by_name[name] || [];
|
|
74
|
-
//if (!_map_identifiers_by_name.has(name)) _map_identifiers_by_name.set(name, [])
|
|
75
|
-
handle_found('identifiers_by_name', name, node);
|
|
76
|
-
|
|
77
|
-
//_map_identifiers_by_name.get(name).push(node);
|
|
78
|
-
//console.log('map_identifiers_by_name[name]', _map_identifiers_by_name[name]);
|
|
79
|
-
//_map_identifiers_by_name[name].push(node);
|
|
80
|
-
}
|
|
81
|
-
if (node.is_declaration) {
|
|
82
|
-
//console.log('have declaration node in index loop');
|
|
83
|
-
//console.log('node.child_nodes.length', node.child_nodes.length);
|
|
84
|
-
//console.log('node.signature', node.signature);
|
|
85
|
-
//console.log('node', node);
|
|
86
|
-
//console.log('node.child', node.child);
|
|
87
|
-
//console.log('node.child.count', node.child.count);
|
|
88
|
-
// node.child.collected.names???
|
|
89
|
-
|
|
90
|
-
if (node.child.shared.type === 'VariableDeclarator') {
|
|
91
|
-
if (node.source.length < 800) {
|
|
92
|
-
//console.log('node.source', node.source);
|
|
93
|
-
}
|
|
94
|
-
node.each.child(dec => {
|
|
95
|
-
//console.log('dec.babel.node', dec.babel.node);
|
|
96
|
-
//const id = dec.child.find(node => node.is_identifier);
|
|
97
|
-
// find.identifier();
|
|
98
|
-
const id = dec.find(node => node.is_identifier);
|
|
99
|
-
if (id) {
|
|
100
|
-
//console.log('id', id);
|
|
101
|
-
//console.log('id.name', id.name);
|
|
102
|
-
//_map_names_to_declarations[id.name] = node;
|
|
103
|
-
|
|
104
|
-
//_map_names_to_declarations.set(id.name, node)
|
|
105
|
-
handle_found('names_to_declarations', id.name, node);
|
|
106
|
-
} else {
|
|
107
|
-
//console.log('node', node);
|
|
108
|
-
//console.log('dec.child.count', dec.child.count);
|
|
109
|
-
|
|
110
|
-
// dec.child.types?
|
|
111
|
-
// dec.child.collect.types
|
|
112
|
-
//console.log('dec.child.collect.type', dec.child.collect.type);
|
|
113
|
-
// object pattern and member expression.
|
|
114
|
-
// {a, b, c} = lib;
|
|
115
|
-
if (dec.child.count === 2) {
|
|
116
|
-
const child_types = dec.child.all.type;
|
|
117
|
-
// dec.child.collect.category
|
|
118
|
-
const child_categories = dec.child.all.category;
|
|
119
|
-
//console.log('child_categories', child_categories);
|
|
120
|
-
// maybe any expression is allowed.
|
|
121
|
-
// seems that way
|
|
122
|
-
if (child_types[0] === 'ObjectPattern' && child_categories[1] === 'Expression') {
|
|
123
|
-
const objpat = dec.child_nodes[0];
|
|
124
|
-
//console.log('objpat', objpat);
|
|
125
|
-
//console.log('objpat.child.shared.type', objpat.child.shared.type);
|
|
126
|
-
if (objpat.child.shared.type === 'ObjectProperty') {
|
|
127
|
-
objpat.each.child(objprop => {
|
|
128
|
-
//console.log('objprop', objprop);
|
|
129
|
-
//console.log('objprop.source', objprop.source);
|
|
130
|
-
//console.log('objprop.child.count', objprop.child.count);
|
|
131
|
-
if (objprop.child.count === 2) {
|
|
132
|
-
//console.log('objprop.child.first', objprop.child.first);
|
|
133
|
-
//console.log('objprop.child.last', objprop.child.last);
|
|
134
|
-
//console.log('objprop.child.last.source', objprop.child.last.source);
|
|
135
|
-
//console.log('objprop.child.first.source', objprop.child.first.source);
|
|
136
|
-
if (objprop.child.first.source == objprop.child.last.source) {
|
|
137
|
-
const name = objprop.child.first.name;
|
|
138
|
-
//console.log('name', name);
|
|
139
|
-
//_map_names_to_declarations[name] = node;
|
|
140
|
-
//_map_names_to_declarations.set(name, node);
|
|
141
|
-
handle_found('names_to_declarations', name, node);
|
|
142
|
-
} else {
|
|
143
|
-
throw 'stop';
|
|
144
|
-
}
|
|
145
|
-
} else {
|
|
146
|
-
throw 'stop';
|
|
147
|
-
}
|
|
148
|
-
})
|
|
149
|
-
} else {
|
|
150
|
-
throw 'stop';
|
|
151
|
-
}
|
|
152
|
-
} else {
|
|
153
|
-
// can be [ 'ObjectPattern', 'ThisExpression' ]
|
|
154
|
-
throw 'stop';
|
|
155
|
-
}
|
|
156
|
-
} else {
|
|
157
|
-
throw 'stop';
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
// dec.id?
|
|
161
|
-
// gets the identifier?
|
|
162
|
-
// dec.child.identifier?
|
|
163
|
-
})
|
|
164
|
-
}
|
|
165
|
-
// then are all the child nodes of type 'VariableDeclarator'
|
|
166
|
-
// .deep (self then inner)
|
|
167
|
-
// .inner (recursively child nodes)
|
|
168
|
-
// .child
|
|
169
|
-
//node.child.declarators
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
if (node.is_expression) {
|
|
174
|
-
if (node.type === 'CallExpression') {
|
|
175
|
-
//console.log('node.source', node.source);
|
|
176
|
-
//console.log('node', node);
|
|
177
|
-
//console.log('node.babel.node', node.babel.node);
|
|
178
|
-
|
|
179
|
-
const callee = node.first.child.node;
|
|
180
|
-
if (callee.is_identifier) {
|
|
181
|
-
const fncall_name = callee.name;
|
|
182
|
-
//console.log('fncall_name', fncall_name);
|
|
183
|
-
//_map_fn_call_names.set(fncall_name, node);
|
|
184
|
-
handle_found('fn_call_names', fncall_name, node);
|
|
185
|
-
} else {
|
|
186
|
-
|
|
187
|
-
if (callee.type === 'MemberExpression') {
|
|
188
|
-
//console.log('callee.child.count', callee.child.count);
|
|
189
|
-
let fncall_path = '';
|
|
190
|
-
let first = true;
|
|
191
|
-
|
|
192
|
-
// .child.node.count ???
|
|
193
|
-
// .child.declaration.count
|
|
194
|
-
|
|
195
|
-
// .count.child?
|
|
196
|
-
// // don't properly have .child any longer.
|
|
197
|
-
// this would be under callee.count.child.node
|
|
198
|
-
|
|
199
|
-
if (callee.child_nodes.length > 1) {
|
|
200
|
-
//.each.child.identifier
|
|
201
|
-
|
|
202
|
-
callee.each.child(id => {
|
|
203
|
-
if (id.is_identifier) {
|
|
204
|
-
if (!first) {
|
|
205
|
-
fncall_path += '.';
|
|
206
|
-
} else {
|
|
207
|
-
first = false;
|
|
208
|
-
}
|
|
209
|
-
fncall_path += id.name;
|
|
210
|
-
} else {
|
|
211
|
-
//console.log('node.source', node.source);
|
|
212
|
-
|
|
213
|
-
// Calling a function that is a property of an object.
|
|
214
|
-
// Not so interested right now.
|
|
215
|
-
|
|
216
|
-
// Not looking for this now
|
|
217
|
-
|
|
218
|
-
//throw 'stop';
|
|
219
|
-
}
|
|
220
|
-
})
|
|
221
|
-
handle_found('fn_call_names', fncall_name, node);
|
|
222
|
-
//_map_fn_call_names.set(fncall_path, node);
|
|
223
|
-
} else {
|
|
224
|
-
throw 'stop';
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
}
|
|
228
|
-
//
|
|
229
|
-
//throw 'stop';
|
|
230
|
-
}
|
|
231
|
-
//throw 'stop';
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
//console.log('child.count', child.count);
|
|
235
|
-
//if (child.count > 0) {
|
|
236
|
-
// child.each(cn => {
|
|
237
|
-
// })Class constructor {}specClass constructor {}spec
|
|
238
|
-
//}
|
|
239
|
-
})
|
|
240
|
-
is_indexed = true;
|
|
241
|
-
}
|
|
242
|
-
const ensure_index = () => {
|
|
243
|
-
// maybe call it standard indexing here.
|
|
244
|
-
|
|
245
|
-
if (!is_indexed) {
|
|
246
|
-
do_default_indexing();
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
// this.map
|
|
250
|
-
// identifiers.name
|
|
251
|
-
|
|
252
|
-
Object.defineProperty(this, 'is_indexed', {
|
|
253
|
-
get() {
|
|
254
|
-
return is_indexed;
|
|
255
|
-
},
|
|
256
|
-
//set(newValue) { bValue = newValue; },
|
|
257
|
-
enumerable: true,
|
|
258
|
-
configurable: false
|
|
259
|
-
});
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
/*
|
|
266
|
-
Object.defineProperty(this, 'maps', {
|
|
267
|
-
get() {
|
|
268
|
-
return maps;
|
|
269
|
-
},
|
|
270
|
-
//set(newValue) { bValue = newValue; },
|
|
271
|
-
enumerable: true,
|
|
272
|
-
configurable: false
|
|
273
|
-
});
|
|
274
|
-
*/
|
|
275
|
-
|
|
276
|
-
/*
|
|
277
|
-
Object.defineProperty(this, 'map_identifiers_by_name', {
|
|
278
|
-
get() {
|
|
279
|
-
ensure_index();
|
|
280
|
-
return _map_identifiers_by_name;
|
|
281
|
-
|
|
282
|
-
},
|
|
283
|
-
//set(newValue) { bValue = newValue; },
|
|
284
|
-
enumerable: true,
|
|
285
|
-
configurable: false
|
|
286
|
-
});
|
|
287
|
-
*/
|
|
288
|
-
|
|
289
|
-
// _map_names_to_declarations
|
|
290
|
-
|
|
291
|
-
// declaration.identifier.name
|
|
292
|
-
|
|
293
|
-
// Not so sure about the map object here.
|
|
294
|
-
|
|
295
|
-
// Makes sense as a verb, a means to access it.
|
|
296
|
-
|
|
297
|
-
/*
|
|
298
|
-
|
|
299
|
-
const map = {
|
|
300
|
-
declaration: {
|
|
301
|
-
identifier: {
|
|
302
|
-
|
|
303
|
-
}
|
|
304
|
-
},
|
|
305
|
-
identifier: {
|
|
306
|
-
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
Object.defineProperty(map.declaration.identifier, 'name', {
|
|
310
|
-
get() {
|
|
311
|
-
ensure_index();
|
|
312
|
-
return _map_names_to_declarations;
|
|
313
|
-
},
|
|
314
|
-
//set(newValue) { bValue = newValue; },
|
|
315
|
-
enumerable: true,
|
|
316
|
-
configurable: false
|
|
317
|
-
});
|
|
318
|
-
Object.defineProperty(map.identifier, 'name', {
|
|
319
|
-
get() {
|
|
320
|
-
ensure_index();
|
|
321
|
-
return _map_identifiers_by_name;
|
|
322
|
-
},
|
|
323
|
-
//set(newValue) { bValue = newValue; },
|
|
324
|
-
enumerable: true,
|
|
325
|
-
configurable: false
|
|
326
|
-
});
|
|
327
|
-
Object.defineProperty(this, 'map', {
|
|
328
|
-
get() {
|
|
329
|
-
//ensure_index();
|
|
330
|
-
return map;
|
|
331
|
-
},
|
|
332
|
-
//set(newValue) { bValue = newValue; },
|
|
333
|
-
enumerable: true,
|
|
334
|
-
configurable: false
|
|
335
|
-
});
|
|
336
|
-
*/
|
|
337
|
-
|
|
338
|
-
this.setup_node_index = setup_node_index;
|
|
339
|
-
this.get_indexed_nodes_by_key = get_indexed_nodes_by_key;
|
|
340
|
-
// setup_node_index = (index_name, fn_selector, fn_key) => {
|
|
341
|
-
|
|
342
|
-
}
|
|
343
|
-
}
|
|
1
|
+
//const babel_node_tools = require('../babel/babel_node_tools');
|
|
2
|
+
// Index before query would help.
|
|
3
|
+
|
|
4
|
+
// Will index the occurrances of various nodes / things.
|
|
5
|
+
// Could get more into tree pattern checking too, declaratively saying what to look for and looking for multiple things at once with signature comparisons in a map.
|
|
6
|
+
|
|
7
|
+
// Indexing at every level looks like it would be useful.
|
|
8
|
+
// so in order to get the info about how the names relate to nodes we consult indexes.
|
|
9
|
+
|
|
10
|
+
const { each } = require('lang-tools');
|
|
11
|
+
const JS_AST_Node_Basics_Callmap = require('./JS_AST_Node_3.6-Basics_Callmap');
|
|
12
|
+
const JS_AST_Node_Indexes = require('./JS_AST_Node_4.0-Index_Indexes');
|
|
13
|
+
|
|
14
|
+
class JS_AST_Node_Index extends JS_AST_Node_Basics_Callmap {
|
|
15
|
+
constructor(spec = {}) {
|
|
16
|
+
super(spec);
|
|
17
|
+
const {deep_iterate, inner, child} = this;
|
|
18
|
+
|
|
19
|
+
// normal object can not work with its's 'constructor' property.
|
|
20
|
+
const _map_identifiers_by_name = new Map();
|
|
21
|
+
let is_indexed = false;
|
|
22
|
+
const indexes = new JS_AST_Node_Indexes();
|
|
23
|
+
const handle_found = (index_name, key, value) => {
|
|
24
|
+
return indexes.set(index_name, key, value);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const setup_node_index = (index_name, fn_selector, fn_key) => {
|
|
28
|
+
|
|
29
|
+
if (indexes.has_index(index_name)) {
|
|
30
|
+
throw 'NYI - index already exists'
|
|
31
|
+
} else {
|
|
32
|
+
deep_iterate(node => {
|
|
33
|
+
if (fn_selector(node)) {
|
|
34
|
+
const key = fn_key(node);
|
|
35
|
+
handle_found(index_name, key, node);
|
|
36
|
+
}
|
|
37
|
+
})
|
|
38
|
+
}
|
|
39
|
+
//return indexes.get_index(index_name);
|
|
40
|
+
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const get_indexed_nodes_by_key = (index_name, key) => {
|
|
44
|
+
return indexes.get(index_name, key);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// calling multiple indexing functions on a single iteration?
|
|
48
|
+
|
|
49
|
+
// .find.all.identifiers(node => node.name = name)
|
|
50
|
+
// .find.identifiers.by.name(name) could substitute for the index.
|
|
51
|
+
|
|
52
|
+
// .idx_lookup_
|
|
53
|
+
|
|
54
|
+
// .nodes_by_name
|
|
55
|
+
|
|
56
|
+
const old = () => {
|
|
57
|
+
const do_default_indexing = () => {
|
|
58
|
+
// Will find function names too :) The functions being called
|
|
59
|
+
// could we make a shallower version that is more efficient?
|
|
60
|
+
// ie, it gets the map from below, and adds any relevant items at the current level.
|
|
61
|
+
|
|
62
|
+
// Making use of child nodes' own indexes would be the optimization here.
|
|
63
|
+
// Building it out of the indexes of the child nodes, if they have indexes.
|
|
64
|
+
|
|
65
|
+
deep_iterate(node => {
|
|
66
|
+
// Are the child nodes all of the same type?
|
|
67
|
+
// .child_node_shared_type property
|
|
68
|
+
|
|
69
|
+
if (node.is_identifier) {
|
|
70
|
+
const name = node.name;
|
|
71
|
+
//console.log('name', name);
|
|
72
|
+
|
|
73
|
+
//_map_identifiers_by_name[name] = _map_identifiers_by_name[name] || [];
|
|
74
|
+
//if (!_map_identifiers_by_name.has(name)) _map_identifiers_by_name.set(name, [])
|
|
75
|
+
handle_found('identifiers_by_name', name, node);
|
|
76
|
+
|
|
77
|
+
//_map_identifiers_by_name.get(name).push(node);
|
|
78
|
+
//console.log('map_identifiers_by_name[name]', _map_identifiers_by_name[name]);
|
|
79
|
+
//_map_identifiers_by_name[name].push(node);
|
|
80
|
+
}
|
|
81
|
+
if (node.is_declaration) {
|
|
82
|
+
//console.log('have declaration node in index loop');
|
|
83
|
+
//console.log('node.child_nodes.length', node.child_nodes.length);
|
|
84
|
+
//console.log('node.signature', node.signature);
|
|
85
|
+
//console.log('node', node);
|
|
86
|
+
//console.log('node.child', node.child);
|
|
87
|
+
//console.log('node.child.count', node.child.count);
|
|
88
|
+
// node.child.collected.names???
|
|
89
|
+
|
|
90
|
+
if (node.child.shared.type === 'VariableDeclarator') {
|
|
91
|
+
if (node.source.length < 800) {
|
|
92
|
+
//console.log('node.source', node.source);
|
|
93
|
+
}
|
|
94
|
+
node.each.child(dec => {
|
|
95
|
+
//console.log('dec.babel.node', dec.babel.node);
|
|
96
|
+
//const id = dec.child.find(node => node.is_identifier);
|
|
97
|
+
// find.identifier();
|
|
98
|
+
const id = dec.find(node => node.is_identifier);
|
|
99
|
+
if (id) {
|
|
100
|
+
//console.log('id', id);
|
|
101
|
+
//console.log('id.name', id.name);
|
|
102
|
+
//_map_names_to_declarations[id.name] = node;
|
|
103
|
+
|
|
104
|
+
//_map_names_to_declarations.set(id.name, node)
|
|
105
|
+
handle_found('names_to_declarations', id.name, node);
|
|
106
|
+
} else {
|
|
107
|
+
//console.log('node', node);
|
|
108
|
+
//console.log('dec.child.count', dec.child.count);
|
|
109
|
+
|
|
110
|
+
// dec.child.types?
|
|
111
|
+
// dec.child.collect.types
|
|
112
|
+
//console.log('dec.child.collect.type', dec.child.collect.type);
|
|
113
|
+
// object pattern and member expression.
|
|
114
|
+
// {a, b, c} = lib;
|
|
115
|
+
if (dec.child.count === 2) {
|
|
116
|
+
const child_types = dec.child.all.type;
|
|
117
|
+
// dec.child.collect.category
|
|
118
|
+
const child_categories = dec.child.all.category;
|
|
119
|
+
//console.log('child_categories', child_categories);
|
|
120
|
+
// maybe any expression is allowed.
|
|
121
|
+
// seems that way
|
|
122
|
+
if (child_types[0] === 'ObjectPattern' && child_categories[1] === 'Expression') {
|
|
123
|
+
const objpat = dec.child_nodes[0];
|
|
124
|
+
//console.log('objpat', objpat);
|
|
125
|
+
//console.log('objpat.child.shared.type', objpat.child.shared.type);
|
|
126
|
+
if (objpat.child.shared.type === 'ObjectProperty') {
|
|
127
|
+
objpat.each.child(objprop => {
|
|
128
|
+
//console.log('objprop', objprop);
|
|
129
|
+
//console.log('objprop.source', objprop.source);
|
|
130
|
+
//console.log('objprop.child.count', objprop.child.count);
|
|
131
|
+
if (objprop.child.count === 2) {
|
|
132
|
+
//console.log('objprop.child.first', objprop.child.first);
|
|
133
|
+
//console.log('objprop.child.last', objprop.child.last);
|
|
134
|
+
//console.log('objprop.child.last.source', objprop.child.last.source);
|
|
135
|
+
//console.log('objprop.child.first.source', objprop.child.first.source);
|
|
136
|
+
if (objprop.child.first.source == objprop.child.last.source) {
|
|
137
|
+
const name = objprop.child.first.name;
|
|
138
|
+
//console.log('name', name);
|
|
139
|
+
//_map_names_to_declarations[name] = node;
|
|
140
|
+
//_map_names_to_declarations.set(name, node);
|
|
141
|
+
handle_found('names_to_declarations', name, node);
|
|
142
|
+
} else {
|
|
143
|
+
throw 'stop';
|
|
144
|
+
}
|
|
145
|
+
} else {
|
|
146
|
+
throw 'stop';
|
|
147
|
+
}
|
|
148
|
+
})
|
|
149
|
+
} else {
|
|
150
|
+
throw 'stop';
|
|
151
|
+
}
|
|
152
|
+
} else {
|
|
153
|
+
// can be [ 'ObjectPattern', 'ThisExpression' ]
|
|
154
|
+
throw 'stop';
|
|
155
|
+
}
|
|
156
|
+
} else {
|
|
157
|
+
throw 'stop';
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
// dec.id?
|
|
161
|
+
// gets the identifier?
|
|
162
|
+
// dec.child.identifier?
|
|
163
|
+
})
|
|
164
|
+
}
|
|
165
|
+
// then are all the child nodes of type 'VariableDeclarator'
|
|
166
|
+
// .deep (self then inner)
|
|
167
|
+
// .inner (recursively child nodes)
|
|
168
|
+
// .child
|
|
169
|
+
//node.child.declarators
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
if (node.is_expression) {
|
|
174
|
+
if (node.type === 'CallExpression') {
|
|
175
|
+
//console.log('node.source', node.source);
|
|
176
|
+
//console.log('node', node);
|
|
177
|
+
//console.log('node.babel.node', node.babel.node);
|
|
178
|
+
|
|
179
|
+
const callee = node.first.child.node;
|
|
180
|
+
if (callee.is_identifier) {
|
|
181
|
+
const fncall_name = callee.name;
|
|
182
|
+
//console.log('fncall_name', fncall_name);
|
|
183
|
+
//_map_fn_call_names.set(fncall_name, node);
|
|
184
|
+
handle_found('fn_call_names', fncall_name, node);
|
|
185
|
+
} else {
|
|
186
|
+
|
|
187
|
+
if (callee.type === 'MemberExpression') {
|
|
188
|
+
//console.log('callee.child.count', callee.child.count);
|
|
189
|
+
let fncall_path = '';
|
|
190
|
+
let first = true;
|
|
191
|
+
|
|
192
|
+
// .child.node.count ???
|
|
193
|
+
// .child.declaration.count
|
|
194
|
+
|
|
195
|
+
// .count.child?
|
|
196
|
+
// // don't properly have .child any longer.
|
|
197
|
+
// this would be under callee.count.child.node
|
|
198
|
+
|
|
199
|
+
if (callee.child_nodes.length > 1) {
|
|
200
|
+
//.each.child.identifier
|
|
201
|
+
|
|
202
|
+
callee.each.child(id => {
|
|
203
|
+
if (id.is_identifier) {
|
|
204
|
+
if (!first) {
|
|
205
|
+
fncall_path += '.';
|
|
206
|
+
} else {
|
|
207
|
+
first = false;
|
|
208
|
+
}
|
|
209
|
+
fncall_path += id.name;
|
|
210
|
+
} else {
|
|
211
|
+
//console.log('node.source', node.source);
|
|
212
|
+
|
|
213
|
+
// Calling a function that is a property of an object.
|
|
214
|
+
// Not so interested right now.
|
|
215
|
+
|
|
216
|
+
// Not looking for this now
|
|
217
|
+
|
|
218
|
+
//throw 'stop';
|
|
219
|
+
}
|
|
220
|
+
})
|
|
221
|
+
handle_found('fn_call_names', fncall_name, node);
|
|
222
|
+
//_map_fn_call_names.set(fncall_path, node);
|
|
223
|
+
} else {
|
|
224
|
+
throw 'stop';
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
}
|
|
228
|
+
//
|
|
229
|
+
//throw 'stop';
|
|
230
|
+
}
|
|
231
|
+
//throw 'stop';
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
//console.log('child.count', child.count);
|
|
235
|
+
//if (child.count > 0) {
|
|
236
|
+
// child.each(cn => {
|
|
237
|
+
// })Class constructor {}specClass constructor {}spec
|
|
238
|
+
//}
|
|
239
|
+
})
|
|
240
|
+
is_indexed = true;
|
|
241
|
+
}
|
|
242
|
+
const ensure_index = () => {
|
|
243
|
+
// maybe call it standard indexing here.
|
|
244
|
+
|
|
245
|
+
if (!is_indexed) {
|
|
246
|
+
do_default_indexing();
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// this.map
|
|
250
|
+
// identifiers.name
|
|
251
|
+
|
|
252
|
+
Object.defineProperty(this, 'is_indexed', {
|
|
253
|
+
get() {
|
|
254
|
+
return is_indexed;
|
|
255
|
+
},
|
|
256
|
+
//set(newValue) { bValue = newValue; },
|
|
257
|
+
enumerable: true,
|
|
258
|
+
configurable: false
|
|
259
|
+
});
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
/*
|
|
266
|
+
Object.defineProperty(this, 'maps', {
|
|
267
|
+
get() {
|
|
268
|
+
return maps;
|
|
269
|
+
},
|
|
270
|
+
//set(newValue) { bValue = newValue; },
|
|
271
|
+
enumerable: true,
|
|
272
|
+
configurable: false
|
|
273
|
+
});
|
|
274
|
+
*/
|
|
275
|
+
|
|
276
|
+
/*
|
|
277
|
+
Object.defineProperty(this, 'map_identifiers_by_name', {
|
|
278
|
+
get() {
|
|
279
|
+
ensure_index();
|
|
280
|
+
return _map_identifiers_by_name;
|
|
281
|
+
|
|
282
|
+
},
|
|
283
|
+
//set(newValue) { bValue = newValue; },
|
|
284
|
+
enumerable: true,
|
|
285
|
+
configurable: false
|
|
286
|
+
});
|
|
287
|
+
*/
|
|
288
|
+
|
|
289
|
+
// _map_names_to_declarations
|
|
290
|
+
|
|
291
|
+
// declaration.identifier.name
|
|
292
|
+
|
|
293
|
+
// Not so sure about the map object here.
|
|
294
|
+
|
|
295
|
+
// Makes sense as a verb, a means to access it.
|
|
296
|
+
|
|
297
|
+
/*
|
|
298
|
+
|
|
299
|
+
const map = {
|
|
300
|
+
declaration: {
|
|
301
|
+
identifier: {
|
|
302
|
+
|
|
303
|
+
}
|
|
304
|
+
},
|
|
305
|
+
identifier: {
|
|
306
|
+
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
Object.defineProperty(map.declaration.identifier, 'name', {
|
|
310
|
+
get() {
|
|
311
|
+
ensure_index();
|
|
312
|
+
return _map_names_to_declarations;
|
|
313
|
+
},
|
|
314
|
+
//set(newValue) { bValue = newValue; },
|
|
315
|
+
enumerable: true,
|
|
316
|
+
configurable: false
|
|
317
|
+
});
|
|
318
|
+
Object.defineProperty(map.identifier, 'name', {
|
|
319
|
+
get() {
|
|
320
|
+
ensure_index();
|
|
321
|
+
return _map_identifiers_by_name;
|
|
322
|
+
},
|
|
323
|
+
//set(newValue) { bValue = newValue; },
|
|
324
|
+
enumerable: true,
|
|
325
|
+
configurable: false
|
|
326
|
+
});
|
|
327
|
+
Object.defineProperty(this, 'map', {
|
|
328
|
+
get() {
|
|
329
|
+
//ensure_index();
|
|
330
|
+
return map;
|
|
331
|
+
},
|
|
332
|
+
//set(newValue) { bValue = newValue; },
|
|
333
|
+
enumerable: true,
|
|
334
|
+
configurable: false
|
|
335
|
+
});
|
|
336
|
+
*/
|
|
337
|
+
|
|
338
|
+
this.setup_node_index = setup_node_index;
|
|
339
|
+
this.get_indexed_nodes_by_key = get_indexed_nodes_by_key;
|
|
340
|
+
// setup_node_index = (index_name, fn_selector, fn_key) => {
|
|
341
|
+
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
344
|
module.exports = JS_AST_Node_Index;
|