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,139 +1,139 @@
|
|
|
1
|
-
// When a declaration is treated as a feature, there is programming less specifically for it being a node.
|
|
2
|
-
|
|
3
|
-
// Feature is an abstraction on top of JS_AST_Node.
|
|
4
|
-
const {each} = require('lang-tools');
|
|
5
|
-
|
|
6
|
-
const JS_AST_Node_Feature = require('./JS_AST_Node_Feature');
|
|
7
|
-
|
|
8
|
-
class JS_AST_Node_Feature_Declarator extends JS_AST_Node_Feature {
|
|
9
|
-
constructor(spec = {}) {
|
|
10
|
-
super(spec);
|
|
11
|
-
const {node} = this;
|
|
12
|
-
|
|
13
|
-
// inner keys?
|
|
14
|
-
// .key for itself?
|
|
15
|
-
|
|
16
|
-
let keys;
|
|
17
|
-
Object.defineProperty(this, 'keys', {
|
|
18
|
-
get() {
|
|
19
|
-
|
|
20
|
-
if (!keys) {
|
|
21
|
-
console.log('node', node);
|
|
22
|
-
console.log('node.source', node.source);
|
|
23
|
-
keys = [];
|
|
24
|
-
const found_key = key => {
|
|
25
|
-
keys.push(key);
|
|
26
|
-
}
|
|
27
|
-
//console.log('node', node);
|
|
28
|
-
//console.log('node.source', node.source);
|
|
29
|
-
// are there 2 child nodes?
|
|
30
|
-
// array pattern and array expression
|
|
31
|
-
|
|
32
|
-
//console.log('node.child.count', node.child.count);
|
|
33
|
-
//throw 'stop';
|
|
34
|
-
|
|
35
|
-
if (node.child.count === 2) {
|
|
36
|
-
if (node.child_nodes[0].type === 'ArrayPattern' && node.child_nodes[1].type === 'ArrayExpression') {
|
|
37
|
-
|
|
38
|
-
const [arp, are] = node.child_nodes;
|
|
39
|
-
|
|
40
|
-
if(arp.child.count === are.child.count) {
|
|
41
|
-
//console.log('node.each.child.identifier', );
|
|
42
|
-
|
|
43
|
-
//console.log('arp', arp);
|
|
44
|
-
//console.log('arp.child.count', arp.child.count);
|
|
45
|
-
//console.log('arp.child.shared.type', arp.child.shared.type);
|
|
46
|
-
|
|
47
|
-
if (arp.child.shared.type === 'Identifier') {
|
|
48
|
-
arp.query.each.child.exe(id => {
|
|
49
|
-
//console.log('id', id);
|
|
50
|
-
//console.log('id.name', id.name);
|
|
51
|
-
found_key(id.name);
|
|
52
|
-
})
|
|
53
|
-
} else {
|
|
54
|
-
throw 'stop';
|
|
55
|
-
}
|
|
56
|
-
} else {
|
|
57
|
-
throw 'stop';
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
} else {
|
|
61
|
-
|
|
62
|
-
// check for
|
|
63
|
-
|
|
64
|
-
//
|
|
65
|
-
|
|
66
|
-
if (node.child_nodes[0].is_identifier) {
|
|
67
|
-
console.log('node.child_nodes[1].category', node.child_nodes[1].category);
|
|
68
|
-
|
|
69
|
-
if (node.child_nodes[1].category === 'Expression') {
|
|
70
|
-
//found_key(node.child_nodes[0].name);
|
|
71
|
-
|
|
72
|
-
// No, the keys are not like this, they are inner.
|
|
73
|
-
// Possibly a prompt to improve the query system and have keys use that or be part of it.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
} else {
|
|
77
|
-
//throw 'NYI';
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
} else {
|
|
83
|
-
//console.log('node.child_nodes', node.child_nodes);
|
|
84
|
-
|
|
85
|
-
if (node.child_nodes[0].type === 'ObjectPattern') {
|
|
86
|
-
const opa = node.child_nodes[0];
|
|
87
|
-
if (opa.child.shared.type === 'ObjectProperty') {
|
|
88
|
-
each(opa.child_nodes, opr => {
|
|
89
|
-
//console.log('opr', opr);
|
|
90
|
-
//console.log('opr.source', opr.source);
|
|
91
|
-
|
|
92
|
-
if (opr.child.count === 1) {
|
|
93
|
-
const id = opr.child_nodes[0];
|
|
94
|
-
if (id.is_identifier) {
|
|
95
|
-
found_key(id.name);
|
|
96
|
-
} else {
|
|
97
|
-
throw 'stop';
|
|
98
|
-
}
|
|
99
|
-
} else {
|
|
100
|
-
throw 'stop';
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
})
|
|
104
|
-
} else {
|
|
105
|
-
throw 'stop';
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
} else {
|
|
109
|
-
throw 'stop';
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
//throw 'stop';
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
} else {
|
|
117
|
-
|
|
118
|
-
// variable declarator with a single identifier inside...
|
|
119
|
-
//
|
|
120
|
-
|
|
121
|
-
// probably seems worth ignoring for now.... except logging it.
|
|
122
|
-
|
|
123
|
-
console.log('');
|
|
124
|
-
console.log('**node', node);
|
|
125
|
-
console.log('**node.source', node.source);
|
|
126
|
-
console.log('');
|
|
127
|
-
|
|
128
|
-
//throw 'NYI';
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
return keys;
|
|
132
|
-
},
|
|
133
|
-
enumerable: true,
|
|
134
|
-
configurable: false
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
1
|
+
// When a declaration is treated as a feature, there is programming less specifically for it being a node.
|
|
2
|
+
|
|
3
|
+
// Feature is an abstraction on top of JS_AST_Node.
|
|
4
|
+
const {each} = require('lang-tools');
|
|
5
|
+
|
|
6
|
+
const JS_AST_Node_Feature = require('./JS_AST_Node_Feature');
|
|
7
|
+
|
|
8
|
+
class JS_AST_Node_Feature_Declarator extends JS_AST_Node_Feature {
|
|
9
|
+
constructor(spec = {}) {
|
|
10
|
+
super(spec);
|
|
11
|
+
const {node} = this;
|
|
12
|
+
|
|
13
|
+
// inner keys?
|
|
14
|
+
// .key for itself?
|
|
15
|
+
|
|
16
|
+
let keys;
|
|
17
|
+
Object.defineProperty(this, 'keys', {
|
|
18
|
+
get() {
|
|
19
|
+
|
|
20
|
+
if (!keys) {
|
|
21
|
+
console.log('node', node);
|
|
22
|
+
console.log('node.source', node.source);
|
|
23
|
+
keys = [];
|
|
24
|
+
const found_key = key => {
|
|
25
|
+
keys.push(key);
|
|
26
|
+
}
|
|
27
|
+
//console.log('node', node);
|
|
28
|
+
//console.log('node.source', node.source);
|
|
29
|
+
// are there 2 child nodes?
|
|
30
|
+
// array pattern and array expression
|
|
31
|
+
|
|
32
|
+
//console.log('node.child.count', node.child.count);
|
|
33
|
+
//throw 'stop';
|
|
34
|
+
|
|
35
|
+
if (node.child.count === 2) {
|
|
36
|
+
if (node.child_nodes[0].type === 'ArrayPattern' && node.child_nodes[1].type === 'ArrayExpression') {
|
|
37
|
+
|
|
38
|
+
const [arp, are] = node.child_nodes;
|
|
39
|
+
|
|
40
|
+
if(arp.child.count === are.child.count) {
|
|
41
|
+
//console.log('node.each.child.identifier', );
|
|
42
|
+
|
|
43
|
+
//console.log('arp', arp);
|
|
44
|
+
//console.log('arp.child.count', arp.child.count);
|
|
45
|
+
//console.log('arp.child.shared.type', arp.child.shared.type);
|
|
46
|
+
|
|
47
|
+
if (arp.child.shared.type === 'Identifier') {
|
|
48
|
+
arp.query.each.child.exe(id => {
|
|
49
|
+
//console.log('id', id);
|
|
50
|
+
//console.log('id.name', id.name);
|
|
51
|
+
found_key(id.name);
|
|
52
|
+
})
|
|
53
|
+
} else {
|
|
54
|
+
throw 'stop';
|
|
55
|
+
}
|
|
56
|
+
} else {
|
|
57
|
+
throw 'stop';
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
} else {
|
|
61
|
+
|
|
62
|
+
// check for
|
|
63
|
+
|
|
64
|
+
//
|
|
65
|
+
|
|
66
|
+
if (node.child_nodes[0].is_identifier) {
|
|
67
|
+
console.log('node.child_nodes[1].category', node.child_nodes[1].category);
|
|
68
|
+
|
|
69
|
+
if (node.child_nodes[1].category === 'Expression') {
|
|
70
|
+
//found_key(node.child_nodes[0].name);
|
|
71
|
+
|
|
72
|
+
// No, the keys are not like this, they are inner.
|
|
73
|
+
// Possibly a prompt to improve the query system and have keys use that or be part of it.
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
} else {
|
|
77
|
+
//throw 'NYI';
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
} else {
|
|
83
|
+
//console.log('node.child_nodes', node.child_nodes);
|
|
84
|
+
|
|
85
|
+
if (node.child_nodes[0].type === 'ObjectPattern') {
|
|
86
|
+
const opa = node.child_nodes[0];
|
|
87
|
+
if (opa.child.shared.type === 'ObjectProperty') {
|
|
88
|
+
each(opa.child_nodes, opr => {
|
|
89
|
+
//console.log('opr', opr);
|
|
90
|
+
//console.log('opr.source', opr.source);
|
|
91
|
+
|
|
92
|
+
if (opr.child.count === 1) {
|
|
93
|
+
const id = opr.child_nodes[0];
|
|
94
|
+
if (id.is_identifier) {
|
|
95
|
+
found_key(id.name);
|
|
96
|
+
} else {
|
|
97
|
+
throw 'stop';
|
|
98
|
+
}
|
|
99
|
+
} else {
|
|
100
|
+
throw 'stop';
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
})
|
|
104
|
+
} else {
|
|
105
|
+
throw 'stop';
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
} else {
|
|
109
|
+
throw 'stop';
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
//throw 'stop';
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
} else {
|
|
117
|
+
|
|
118
|
+
// variable declarator with a single identifier inside...
|
|
119
|
+
//
|
|
120
|
+
|
|
121
|
+
// probably seems worth ignoring for now.... except logging it.
|
|
122
|
+
|
|
123
|
+
console.log('');
|
|
124
|
+
console.log('**node', node);
|
|
125
|
+
console.log('**node.source', node.source);
|
|
126
|
+
console.log('');
|
|
127
|
+
|
|
128
|
+
//throw 'NYI';
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return keys;
|
|
132
|
+
},
|
|
133
|
+
enumerable: true,
|
|
134
|
+
configurable: false
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
139
|
module.exports = JS_AST_Node_Feature_Declarator;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
const JS_AST_Node_Feature = require('../JS_AST_Node_Feature');
|
|
2
|
-
|
|
3
|
-
class JS_AST_Root_Node_Feature extends JS_AST_Node_Feature {
|
|
4
|
-
constructor(spec = {}) {
|
|
5
|
-
super(spec);
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
module.exports = JS_AST_Root_Node_Feature;
|
|
10
|
-
|
|
1
|
+
const JS_AST_Node_Feature = require('../JS_AST_Node_Feature');
|
|
2
|
+
|
|
3
|
+
class JS_AST_Root_Node_Feature extends JS_AST_Node_Feature {
|
|
4
|
+
constructor(spec = {}) {
|
|
5
|
+
super(spec);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
module.exports = JS_AST_Root_Node_Feature;
|
|
10
|
+
|
|
@@ -1,101 +1,101 @@
|
|
|
1
|
-
|
|
2
|
-
const {each} = require('lang-tools');
|
|
3
|
-
|
|
4
|
-
//const find_object_keys = require('../../query/find_object_keys');
|
|
5
|
-
|
|
6
|
-
// Not itself a feature?
|
|
7
|
-
// A feature of a feature?
|
|
8
|
-
|
|
9
|
-
// Exported keys is an important thing to be on the lookout for.
|
|
10
|
-
// However, trying to get it working shows some need for improved querying, as well as going into more detail on Object objects.
|
|
11
|
-
// Could make a .keys feature on those in particular.
|
|
12
|
-
// Indexing will help to find the referred to objects quickly.
|
|
13
|
-
// Queries would enable quick finding with a nice API too.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class JS_AST_Root_Node_Feature_Exported {
|
|
20
|
-
constructor(spec = {}) {
|
|
21
|
-
let node;
|
|
22
|
-
if (spec.node !== undefined) node = spec.node;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
Object.defineProperty(this, 'node', {
|
|
26
|
-
get() {
|
|
27
|
-
return node;
|
|
28
|
-
},
|
|
29
|
-
enumerable: true,
|
|
30
|
-
configurable: false
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
// but an exported keys property as well.
|
|
34
|
-
// if necessary, look back at the object declaration.
|
|
35
|
-
|
|
36
|
-
// Keys property.
|
|
37
|
-
// A bit harder to calculate the keys of an object.
|
|
38
|
-
|
|
39
|
-
// May be worth having another query or similar part.
|
|
40
|
-
// Obtaining keys of an object will need to be somewhat in-depth.
|
|
41
|
-
|
|
42
|
-
let keys;
|
|
43
|
-
|
|
44
|
-
// Want this to go further in terms of finding out what keys that object has.
|
|
45
|
-
|
|
46
|
-
Object.defineProperty(this, 'keys', {
|
|
47
|
-
get() {
|
|
48
|
-
|
|
49
|
-
if (!keys) {
|
|
50
|
-
// call the find_object_keys query.
|
|
51
|
-
// will go through the code seeing which keys the object is declared with / have been added to it.
|
|
52
|
-
// worth trying with a variety of objects / classes in codebases.
|
|
53
|
-
// try separately to see that the keys correctly get identified where possible.
|
|
54
|
-
|
|
55
|
-
//console.log('node', node);
|
|
56
|
-
//console.log('node.name', node.name);
|
|
57
|
-
//console.log('node.type', node.type);
|
|
58
|
-
|
|
59
|
-
if (node.is_identifier) {
|
|
60
|
-
|
|
61
|
-
//keys = find_object_keys(node);
|
|
62
|
-
//console.log('keys', keys);
|
|
63
|
-
//return found_keys;
|
|
64
|
-
console.trace();
|
|
65
|
-
throw 'NYI';
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
} else {
|
|
71
|
-
throw 'NYI';
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// need to iterate back through the scope.
|
|
75
|
-
|
|
76
|
-
// Lets do this here for the moment.
|
|
77
|
-
|
|
78
|
-
// Need to be able to iterate back through previous siblings.
|
|
79
|
-
// So set up more code for that .siblings.previous.each
|
|
80
|
-
//console.trace();
|
|
81
|
-
|
|
82
|
-
//throw 'NYI';
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
return keys;
|
|
87
|
-
},
|
|
88
|
-
enumerable: true,
|
|
89
|
-
configurable: false
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
}
|
|
1
|
+
|
|
2
|
+
const {each} = require('lang-tools');
|
|
3
|
+
|
|
4
|
+
//const find_object_keys = require('../../query/find_object_keys');
|
|
5
|
+
|
|
6
|
+
// Not itself a feature?
|
|
7
|
+
// A feature of a feature?
|
|
8
|
+
|
|
9
|
+
// Exported keys is an important thing to be on the lookout for.
|
|
10
|
+
// However, trying to get it working shows some need for improved querying, as well as going into more detail on Object objects.
|
|
11
|
+
// Could make a .keys feature on those in particular.
|
|
12
|
+
// Indexing will help to find the referred to objects quickly.
|
|
13
|
+
// Queries would enable quick finding with a nice API too.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class JS_AST_Root_Node_Feature_Exported {
|
|
20
|
+
constructor(spec = {}) {
|
|
21
|
+
let node;
|
|
22
|
+
if (spec.node !== undefined) node = spec.node;
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
Object.defineProperty(this, 'node', {
|
|
26
|
+
get() {
|
|
27
|
+
return node;
|
|
28
|
+
},
|
|
29
|
+
enumerable: true,
|
|
30
|
+
configurable: false
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
// but an exported keys property as well.
|
|
34
|
+
// if necessary, look back at the object declaration.
|
|
35
|
+
|
|
36
|
+
// Keys property.
|
|
37
|
+
// A bit harder to calculate the keys of an object.
|
|
38
|
+
|
|
39
|
+
// May be worth having another query or similar part.
|
|
40
|
+
// Obtaining keys of an object will need to be somewhat in-depth.
|
|
41
|
+
|
|
42
|
+
let keys;
|
|
43
|
+
|
|
44
|
+
// Want this to go further in terms of finding out what keys that object has.
|
|
45
|
+
|
|
46
|
+
Object.defineProperty(this, 'keys', {
|
|
47
|
+
get() {
|
|
48
|
+
|
|
49
|
+
if (!keys) {
|
|
50
|
+
// call the find_object_keys query.
|
|
51
|
+
// will go through the code seeing which keys the object is declared with / have been added to it.
|
|
52
|
+
// worth trying with a variety of objects / classes in codebases.
|
|
53
|
+
// try separately to see that the keys correctly get identified where possible.
|
|
54
|
+
|
|
55
|
+
//console.log('node', node);
|
|
56
|
+
//console.log('node.name', node.name);
|
|
57
|
+
//console.log('node.type', node.type);
|
|
58
|
+
|
|
59
|
+
if (node.is_identifier) {
|
|
60
|
+
|
|
61
|
+
//keys = find_object_keys(node);
|
|
62
|
+
//console.log('keys', keys);
|
|
63
|
+
//return found_keys;
|
|
64
|
+
console.trace();
|
|
65
|
+
throw 'NYI';
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
} else {
|
|
71
|
+
throw 'NYI';
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// need to iterate back through the scope.
|
|
75
|
+
|
|
76
|
+
// Lets do this here for the moment.
|
|
77
|
+
|
|
78
|
+
// Need to be able to iterate back through previous siblings.
|
|
79
|
+
// So set up more code for that .siblings.previous.each
|
|
80
|
+
//console.trace();
|
|
81
|
+
|
|
82
|
+
//throw 'NYI';
|
|
83
|
+
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return keys;
|
|
87
|
+
},
|
|
88
|
+
enumerable: true,
|
|
89
|
+
configurable: false
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
101
|
module.exports = JS_AST_Root_Node_Feature_Exported;
|
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
const JS_AST_Root_Node_Feature = require('./JS_AST_Root_Node_Feature');
|
|
2
|
-
|
|
3
|
-
const JS_AST_Root_Node_Feature_Exported = require('./JS_AST_Root_Node_Feature_Exported');
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class JS_AST_Root_Node_Feature_Exports extends JS_AST_Root_Node_Feature {
|
|
7
|
-
constructor(spec = {}) {
|
|
8
|
-
super(spec);
|
|
9
|
-
|
|
10
|
-
const {node} = this;
|
|
11
|
-
/*
|
|
12
|
-
let node;
|
|
13
|
-
// exports.node
|
|
14
|
-
if (spec.node !== undefined) node = spec.node;
|
|
15
|
-
|
|
16
|
-
// Can give it the AST node that is being exported.
|
|
17
|
-
// Then when queried, it will be able to find out information about the node being exported.
|
|
18
|
-
|
|
19
|
-
Object.defineProperty(this, 'node', {
|
|
20
|
-
get() {
|
|
21
|
-
return node;
|
|
22
|
-
},
|
|
23
|
-
enumerable: true,
|
|
24
|
-
configurable: false
|
|
25
|
-
});
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
let exported;
|
|
29
|
-
Object.defineProperty(this, 'exported', {
|
|
30
|
-
get() {
|
|
31
|
-
|
|
32
|
-
if (!exported) {
|
|
33
|
-
// Exported may as well be a feature.
|
|
34
|
-
//console.log('node', node);
|
|
35
|
-
|
|
36
|
-
const assigned_as_node = node.child_nodes[0].child_nodes[1];
|
|
37
|
-
//console.log('assigned_as_node', assigned_as_node);
|
|
38
|
-
//console.log('assigned_as_node.name', assigned_as_node.name);
|
|
39
|
-
//console.log('assigned_as_node.source', assigned_as_node.source);
|
|
40
|
-
// we need to find the node that gets exported.
|
|
41
|
-
|
|
42
|
-
exported = new JS_AST_Root_Node_Feature_Exported({
|
|
43
|
-
node: assigned_as_node
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
//throw 'NYI';
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
return exported;
|
|
52
|
-
},
|
|
53
|
-
enumerable: true,
|
|
54
|
-
configurable: false
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
1
|
+
const JS_AST_Root_Node_Feature = require('./JS_AST_Root_Node_Feature');
|
|
2
|
+
|
|
3
|
+
const JS_AST_Root_Node_Feature_Exported = require('./JS_AST_Root_Node_Feature_Exported');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class JS_AST_Root_Node_Feature_Exports extends JS_AST_Root_Node_Feature {
|
|
7
|
+
constructor(spec = {}) {
|
|
8
|
+
super(spec);
|
|
9
|
+
|
|
10
|
+
const {node} = this;
|
|
11
|
+
/*
|
|
12
|
+
let node;
|
|
13
|
+
// exports.node
|
|
14
|
+
if (spec.node !== undefined) node = spec.node;
|
|
15
|
+
|
|
16
|
+
// Can give it the AST node that is being exported.
|
|
17
|
+
// Then when queried, it will be able to find out information about the node being exported.
|
|
18
|
+
|
|
19
|
+
Object.defineProperty(this, 'node', {
|
|
20
|
+
get() {
|
|
21
|
+
return node;
|
|
22
|
+
},
|
|
23
|
+
enumerable: true,
|
|
24
|
+
configurable: false
|
|
25
|
+
});
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
let exported;
|
|
29
|
+
Object.defineProperty(this, 'exported', {
|
|
30
|
+
get() {
|
|
31
|
+
|
|
32
|
+
if (!exported) {
|
|
33
|
+
// Exported may as well be a feature.
|
|
34
|
+
//console.log('node', node);
|
|
35
|
+
|
|
36
|
+
const assigned_as_node = node.child_nodes[0].child_nodes[1];
|
|
37
|
+
//console.log('assigned_as_node', assigned_as_node);
|
|
38
|
+
//console.log('assigned_as_node.name', assigned_as_node.name);
|
|
39
|
+
//console.log('assigned_as_node.source', assigned_as_node.source);
|
|
40
|
+
// we need to find the node that gets exported.
|
|
41
|
+
|
|
42
|
+
exported = new JS_AST_Root_Node_Feature_Exported({
|
|
43
|
+
node: assigned_as_node
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
//throw 'NYI';
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return exported;
|
|
52
|
+
},
|
|
53
|
+
enumerable: true,
|
|
54
|
+
configurable: false
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
61
|
module.exports = JS_AST_Root_Node_Feature_Exports;
|