jsgui3-server 0.0.75 → 0.0.77

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.
Files changed (158) hide show
  1. package/examples/client-side-popup-menu-button.html +93 -93
  2. package/examples/controls/_html-server-color-palette.js +114 -114
  3. package/examples/controls/html-server-combo-box.js +104 -104
  4. package/examples/controls/html-server-list.js +98 -98
  5. package/examples/controls/html-server-popup-menu-button.js +114 -114
  6. package/examples/controls/html-server-start-stop-toggle-button.js +146 -146
  7. package/examples/controls/scs-arrow-button.js +36 -36
  8. package/examples/controls/scs-date-picker.js +157 -157
  9. package/examples/controls/scs-file-browser.js +82 -82
  10. package/examples/controls/scs-item.js +159 -159
  11. package/examples/controls/scs-month-arrow-selector.js +126 -126
  12. package/examples/controls/scs-month-view.js +95 -95
  13. package/examples/controls/scs-start-stop-toggle-button.js +40 -40
  14. package/examples/controls/scs-tree.js +49 -49
  15. package/examples/controls/scs-year-arrow-selector.js +127 -127
  16. package/examples/demos/date-picker.js +119 -119
  17. package/examples/demos/explain-encapsulation.js +9 -9
  18. package/examples/demos/resizing.js +35 -35
  19. package/examples/demos/server_time.js +6 -6
  20. package/examples/demos/square_box.js +324 -324
  21. package/examples/html-rendering.js +20 -20
  22. package/examples/html-server.js +100 -100
  23. package/fs2.js +1836 -1836
  24. package/module.js +21 -21
  25. package/old/single-control-server.js +418 -418
  26. package/package.json +44 -42
  27. package/publishing/function-publisher.js +202 -202
  28. package/publishing/notes.md +5 -5
  29. package/publishing/observable-publisher.js +118 -118
  30. package/publishing/resource-publisher.js +306 -306
  31. package/resources/data-resource.js +104 -104
  32. package/resources/fs-resource.js +148 -148
  33. package/resources/jsbuilder/Abstract_Single_Declaration.js +105 -0
  34. package/resources/jsbuilder/Abstract_Single_Declaration_Sequence.js +43 -0
  35. package/resources/jsbuilder/JS_AST/JS_AST_Abstract_Node.js +62 -0
  36. package/resources/jsbuilder/JS_AST/JS_AST_Abstract_Node_Group.js +42 -0
  37. package/resources/jsbuilder/JS_AST/JS_AST_Group_Shared.js +62 -0
  38. package/resources/jsbuilder/JS_AST/JS_AST_Node.js +94 -0
  39. package/resources/jsbuilder/JS_AST/JS_AST_Node_0-Core.js +228 -0
  40. package/resources/jsbuilder/JS_AST/JS_AST_Node_1-Babel.js +338 -0
  41. package/resources/jsbuilder/JS_AST/JS_AST_Node_10-Changing.js +40 -0
  42. package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.1-Child.js +97 -0
  43. package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.2-Parent.js +38 -0
  44. package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.3-Ancestor.js +62 -0
  45. package/resources/jsbuilder/JS_AST/JS_AST_Node_2.2-Inner.js +44 -0
  46. package/resources/jsbuilder/JS_AST/JS_AST_Node_2.3-All.js +73 -0
  47. package/resources/jsbuilder/JS_AST/JS_AST_Node_2.4-Sibling.js +93 -0
  48. package/resources/jsbuilder/JS_AST/JS_AST_Node_2.5-Available_In_Scope.js +29 -0
  49. package/resources/jsbuilder/JS_AST/JS_AST_Node_2.9-Signature.js +116 -0
  50. package/resources/jsbuilder/JS_AST/JS_AST_Node_3-Basics.js +160 -0
  51. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.0-Basics_First.js +179 -0
  52. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.1-Basics_Second.js +88 -0
  53. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.99-Basics_Last.js +92 -0
  54. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.1-Basics_Each.js +137 -0
  55. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.1.5-Basics_Count.js +74 -0
  56. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.2-Basics_Filter.js +40 -0
  57. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.3-Basics_Collect.js +86 -0
  58. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.4-Basics_Select.js +43 -0
  59. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.5-Basics_Find.js +41 -0
  60. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.6-Basics_Callmap.js +55 -0
  61. package/resources/jsbuilder/JS_AST/JS_AST_Node_4.0-Index_Indexes.js +46 -0
  62. package/resources/jsbuilder/JS_AST/JS_AST_Node_4.1-Index.js +344 -0
  63. package/resources/jsbuilder/JS_AST/JS_AST_Node_5.0-Category.js +39 -0
  64. package/resources/jsbuilder/JS_AST/JS_AST_Node_5.1-Category_Identifier.js +31 -0
  65. package/resources/jsbuilder/JS_AST/JS_AST_Node_5.2-Category_Literal.js +29 -0
  66. package/resources/jsbuilder/JS_AST/JS_AST_Node_5.3-Category_Expression.js +27 -0
  67. package/resources/jsbuilder/JS_AST/JS_AST_Node_5.4-Category_Pattern.js +9 -0
  68. package/resources/jsbuilder/JS_AST/JS_AST_Node_5.5-Category_Declaration.js +44 -0
  69. package/resources/jsbuilder/JS_AST/JS_AST_Node_5.6-Category_Statement.js +22 -0
  70. package/resources/jsbuilder/JS_AST/JS_AST_Node_6.0-Type.js +87 -0
  71. package/resources/jsbuilder/JS_AST/JS_AST_Node_6.1-Type_Class_Declaration.js +9 -0
  72. package/resources/jsbuilder/JS_AST/JS_AST_Node_6.2-Type_Variable_Declaration.js +28 -0
  73. package/resources/jsbuilder/JS_AST/JS_AST_Node_6.3-Type_Variable_Declarator.js +29 -0
  74. package/resources/jsbuilder/JS_AST/JS_AST_Node_7-Query.js +737 -0
  75. package/resources/jsbuilder/JS_AST/JS_AST_Node_8-Features.js +65 -0
  76. package/resources/jsbuilder/JS_AST/JS_AST_Node_9-Planning.js +32 -0
  77. package/resources/jsbuilder/JS_AST/JS_AST_Node_Arrangement.js +15 -0
  78. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Declared_Object.js +306 -0
  79. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature.js +78 -0
  80. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature_Declaration.js +249 -0
  81. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature_Declarator.js +139 -0
  82. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature.js +10 -0
  83. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature_Exported.js +101 -0
  84. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature_Exports.js +61 -0
  85. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Interpreted.js +180 -0
  86. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/_JSGUI_Root_Node_Interpreted.js +43 -0
  87. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/special_case_objectassign_to_object.js +12 -0
  88. package/resources/jsbuilder/JS_AST/JS_AST_Node_Group.js +35 -0
  89. package/resources/jsbuilder/JS_AST/JS_AST_Operation.js +11 -0
  90. package/resources/jsbuilder/JS_AST/JS_AST_Operation_On_Relationship.js +32 -0
  91. package/resources/jsbuilder/JS_AST/JS_AST_Ordered_Relationship_Node_To_Group.js +38 -0
  92. package/resources/jsbuilder/JS_AST/JS_AST_Ordinal.js +40 -0
  93. package/resources/jsbuilder/JS_AST/JS_AST_Ordinal_Relationship.js +25 -0
  94. package/resources/jsbuilder/JS_AST/JS_AST_Relationship_Node_To_Group.js +201 -0
  95. package/resources/jsbuilder/JS_AST/JS_AST_Relationship_Node_Within_Group_To_Node.js +44 -0
  96. package/resources/jsbuilder/JS_AST/_JS_AST_Node_3.8-Query_Features.js +77 -0
  97. package/resources/jsbuilder/JS_AST/query/all.js +0 -0
  98. package/resources/jsbuilder/JS_AST/query/enable_array_as_queryable.js +228 -0
  99. package/resources/jsbuilder/JS_AST/query/find_object_keys.js +405 -0
  100. package/resources/jsbuilder/JS_AST/query/node_queries.js +9 -0
  101. package/resources/jsbuilder/JS_AST/query/root_queries.js +0 -0
  102. package/resources/jsbuilder/JS_AST/query/root_query_identidy.js +12 -0
  103. package/resources/jsbuilder/JS_AST_Node_Extended/JSGUI_Singular_Declaration.js +86 -0
  104. package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Declaration.js +124 -0
  105. package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Extended.js +88 -0
  106. package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Extended_0-Core.js +11 -0
  107. package/resources/jsbuilder/JS_Builder.js +10 -36
  108. package/resources/jsbuilder/JS_File/Feature/JS_File_Declared_Object.js +32 -0
  109. package/resources/jsbuilder/JS_File/Feature/JS_File_Exported_Object_Info.js +26 -0
  110. package/resources/jsbuilder/JS_File/Feature/JS_File_Exports.js +79 -0
  111. package/resources/jsbuilder/JS_File/Feature/JS_File_Feature.js +18 -0
  112. package/resources/jsbuilder/JS_File/Feature/JS_File_Imported_Object_Info.js +26 -0
  113. package/resources/jsbuilder/JS_File/Feature/JS_File_Imports.js +9 -0
  114. package/resources/jsbuilder/JS_File/JS_File.js +12 -0
  115. package/resources/jsbuilder/JS_File/JS_File_0-Core.js +202 -0
  116. package/resources/jsbuilder/JS_File/JS_File_1-Early_Parse.js +175 -0
  117. package/resources/jsbuilder/JS_File/JS_File_2-Babel.js +81 -0
  118. package/resources/jsbuilder/JS_File/JS_File_3-JS_AST_Node.js +86 -0
  119. package/resources/jsbuilder/JS_File/JS_File_4-Query.js +414 -0
  120. package/resources/jsbuilder/JS_File/JS_File_4.1-Query_Features.js +415 -0
  121. package/resources/jsbuilder/JS_File/JS_File_5-Planning.js +59 -0
  122. package/resources/jsbuilder/JS_File/JS_File_6-Changing.js +24 -0
  123. package/resources/jsbuilder/JS_File/JS_File_Export_Reference.js +12 -0
  124. package/resources/jsbuilder/JS_File/JS_File_Import_Reference.js +24 -0
  125. package/resources/jsbuilder/JS_File/JS_File_Import_References.js +32 -0
  126. package/resources/jsbuilder/JS_File/JS_File_Processor.js +16 -0
  127. package/resources/jsbuilder/JS_File/JS_Files.js +16 -0
  128. package/resources/jsbuilder/Module.js +14 -0
  129. package/resources/jsbuilder/Platform.js +13 -53
  130. package/resources/jsbuilder/Platforms.js +69 -15
  131. package/resources/jsbuilder/Project.js +109 -0
  132. package/resources/jsbuilder/Reference.js +1 -1
  133. package/resources/jsbuilder/Reference_Sequence.js +16 -7
  134. package/resources/jsbuilder/Scope.js +30 -0
  135. package/resources/jsbuilder/Variable_Name_Provider.js +43 -0
  136. package/resources/jsbuilder/_JS_File.js +226 -0
  137. package/resources/jsbuilder/ast_query.js +21 -0
  138. package/resources/jsbuilder/babel/babel_consts.js +150 -0
  139. package/resources/jsbuilder/babel/babel_node_tools.js +542 -0
  140. package/resources/jsbuilder/babel/deep_iterate/deep_iterate_babel.js +604 -0
  141. package/resources/jsbuilder/build.js +16 -0
  142. package/resources/jsbuilder/platform_notes.md +66 -0
  143. package/resources/jsbuilder/test/test_ast_node.js +451 -0
  144. package/resources/jsbuilder/test/test_js_file.js +303 -11
  145. package/resources/jsbuilder/test/test_project.js +157 -0
  146. package/resources/local-server-info-resource.js +78 -78
  147. package/resources/process-js.js +537 -537
  148. package/resources/server-resource-pool.js +84 -84
  149. package/resources/website-css-resource.js +411 -411
  150. package/resources/website-javascript-resource.js +761 -751
  151. package/resources/website-resource.js +390 -390
  152. package/resources/website-static-html-resource.js +196 -196
  153. package/server.js +170 -170
  154. package/single-control-server.js +398 -398
  155. package/single-page-app.js +129 -129
  156. package/resources/jsbuilder/Declaration.js +0 -15
  157. package/resources/jsbuilder/Declaration_Sequence.js +0 -15
  158. package/resources/jsbuilder/JS_File.js +0 -77
@@ -0,0 +1,150 @@
1
+
2
+ const type_abbreviations = {
3
+ //'ArrowFunctionExpression': 'AFE',
4
+ 'ArrowFunctionExpression': 'AFE',
5
+ 'AssignmentExpression': 'AsE',
6
+ 'AssignmentPattern': 'AsP',
7
+ 'ArrayExpression': 'ArE',
8
+ 'ArrayPattern': 'ArP',
9
+ 'BinaryExpression': 'BE',
10
+ 'BlockStatement': 'BS',
11
+ 'BooleanLiteral': 'BL',
12
+ 'CallExpression': 'CE', // change to CaE? Need to change sigs being looked for.
13
+ 'ClassBody': 'CB',
14
+ 'ClassDeclaration': 'CD',
15
+ 'ClassMethod': 'CM',
16
+ 'ConditionalExpression': 'CoE',
17
+ 'EmptyStatement': '__',
18
+ 'ExpressionStatement': 'ES',
19
+ 'File': 'F',
20
+ 'ForStatement': 'FS',
21
+ 'FunctionExpression': 'FE',
22
+ 'Identifier': 'ID',
23
+ 'IfStatement': 'IS',
24
+ 'LogicalExpression': 'LE',
25
+ 'MemberExpression': 'ME',
26
+ 'NullLiteral': 'null',
27
+ 'NumericLiteral': 'NumL',
28
+ 'NewExpression': 'NE',
29
+ 'ObjectExpression': 'OE',
30
+ 'ObjectMethod': 'OM',
31
+ 'ObjectPattern': 'OPa',
32
+ 'ObjectProperty': 'OPr',
33
+ 'Program': 'P',
34
+ 'ReturnStatement': 'RS',
35
+ 'StringLiteral': 'SL',
36
+ 'Super': 'S',
37
+ 'ThisExpression': 'TE',
38
+ 'ThrowStatement': 'TS',
39
+ 'UnaryExpression': 'UnE',
40
+ 'UpdateExpression': 'UpE',
41
+ 'VariableDeclaration': 'VDn',
42
+ 'VariableDeclarator': 'VDr',
43
+ 'WhileStatement': 'WS'
44
+ }
45
+
46
+ // ArrowFunctionExpression
47
+
48
+ const map_expression_categories = {
49
+ 'ArrowFunctionExpression': true,
50
+ 'AssignmentExpression': true,
51
+ 'ArrayExpression': true,
52
+ 'BinaryExpression': true,
53
+ 'CallExpression': true,
54
+ 'ConditionalExpression': true,
55
+ // ExpressionStatement false because it's a statement
56
+ 'FunctionExpression': true,
57
+ 'LogicalExpression': true,
58
+ 'MemberExpression': true,
59
+ 'NewExpression': true,
60
+ 'ObjectExpression': true,
61
+ 'ThisExpression': true,
62
+ 'UnaryExpression': true,
63
+ 'UpdateExpression': true
64
+ }
65
+
66
+ const map_literal_categories = {
67
+ 'BooleanLiteral': true,
68
+
69
+
70
+ 'NullLiteral': true,
71
+ 'NumericLiteral': true,
72
+ 'StringLiteral': true
73
+
74
+ // Must be more
75
+
76
+ // ExpressionStatement false because it's a statement
77
+ /*
78
+ 'FunctionExpression': true,
79
+ 'LogicalExpression': true,
80
+ 'MemberExpression': true,
81
+ 'NewExpression': true,
82
+ 'ObjectExpression': true,
83
+ 'ThisExpression': true,
84
+ 'UnaryExpression': true,
85
+ 'UpdateExpression': true
86
+ */
87
+
88
+ }
89
+
90
+ const map_statement_categories = {
91
+ BlockStatement: true,
92
+ EmptyStatement: true,
93
+ ExpressionStatement: true,
94
+ ForStatement: true,
95
+ ReturnStatement: true,
96
+ ThrowStatement: true,
97
+ WhileStatement: true
98
+ }
99
+
100
+ const map_categories = {
101
+ //'ArrowFunctionExpression': 'AFE',
102
+ 'ArrowFunctionExpression': 'Expression',
103
+ 'AssignmentExpression': 'Expression',
104
+ 'AssignmentPattern': 'Pattern',
105
+ 'ArrayExpression': 'Expression',
106
+ 'ArrayPattern': 'APPattern',
107
+ 'BinaryExpression': 'Expression',
108
+ 'BlockStatement': 'Statement',
109
+ 'BooleanLiteral': 'Literal',
110
+ 'CallExpression': 'Expression',
111
+ 'ClassBody': 'Body',
112
+ 'ClassDeclaration': 'Declaration',
113
+ 'ClassMethod': 'Method',
114
+ 'ConditionalExpression': 'Expression',
115
+ 'EmptyStatement': 'Statement',
116
+ 'ExpressionStatement': 'Statement',
117
+ 'ForStatement': 'Statement',
118
+ 'File': 'File',
119
+ 'FunctionExpression': 'Expression',
120
+ 'Identifier': 'Identifier',
121
+ 'IfStatement': 'Statement',
122
+ 'LogicalExpression': 'Expression',
123
+ 'MemberExpression': 'Expression',
124
+ 'NullLiteral': 'Literal',
125
+ 'NumericLiteral': 'Literal',
126
+ 'NewExpression': 'Expression',
127
+ 'ObjectExpression': 'Expression',
128
+ 'ObjectMethod': 'Method',
129
+ 'ObjectPattern': 'Pattern',
130
+ 'ObjectProperty': 'Property',
131
+ 'Program': 'Program',
132
+ 'ReturnStatement': 'Statement',
133
+ 'StringLiteral': 'Literal',
134
+ 'Super': 'Super',
135
+ 'ThisExpression': 'Expression',
136
+ 'ThrowStatement': 'Statement',
137
+ 'UnaryExpression': 'Expression',
138
+ 'UpdateExpression': 'Expression',
139
+ 'VariableDeclaration': 'Declaration',
140
+ 'VariableDeclarator': 'Declarator',
141
+ 'WhileStatement': 'Statement'
142
+ }
143
+
144
+ module.exports = {
145
+ type_abbreviations: type_abbreviations,
146
+ map_expression_categories: map_expression_categories,
147
+ map_literal_categories: map_literal_categories,
148
+ map_categories: map_categories,
149
+ map_statement_categories: map_statement_categories
150
+ }
@@ -0,0 +1,542 @@
1
+ //const { resolvePlugin } = require('@babel/core');
2
+ const {each} = require('lang-mini');
3
+
4
+ const deep_iterate_babel_node = require('./deep_iterate/deep_iterate_babel');
5
+
6
+ const old_code = () => {
7
+
8
+ const iterate_babel_class_method_node = (babel_node, str_source, callback) => {
9
+ const {key, computed, kind, id, generator, async, params} = babel_node;
10
+ iterate_babel_node(key, str_source, callback);
11
+ if (id) {
12
+ console.log('babel_node', babel_node);
13
+ throw 'NYI';
14
+ }
15
+
16
+ each(params, x => iterate_babel_node(x, str_source, callback));
17
+ }
18
+
19
+ const iterate_babel_class_body_node = (babel_node, str_source, callback) => {
20
+ const {extra, body} = babel_node;
21
+ //iterate_babel_node(body, str_source, callback);
22
+ each(body, x => iterate_babel_node(x, str_source, callback));
23
+
24
+ }
25
+
26
+ const iterate_babel_class_declaration_node = (babel_node, str_source, callback) => {
27
+ //console.log('babel_node', babel_node);
28
+
29
+ const {extra, id, superclass, body} = babel_node;
30
+ iterate_babel_node(id, str_source, callback);
31
+
32
+ if (superclass) {
33
+ console.log('babel_node', babel_node);
34
+ throw 'NYI';
35
+ }
36
+ iterate_babel_node(body, str_source, callback);
37
+
38
+ //throw 'stop';
39
+ }
40
+
41
+ const iterate_babel_object_pattern_node = (babel_node, str_source, callback) => {
42
+ const {extra, properties} = babel_node;
43
+ each(properties, x => iterate_babel_node(x, str_source, callback));
44
+ }
45
+
46
+ const iterate_babel_while_statement_node = (babel_node, str_source, callback) => {
47
+ const {extra, body, test} = babel_node;
48
+ iterate_babel_node(test, str_source, callback);
49
+ iterate_babel_node(body, str_source, callback);
50
+ }
51
+
52
+ const iterate_babel_assignment_pattern_node = (babel_node, str_source, callback) => {
53
+ const {extra, left, right} = babel_node;
54
+ iterate_babel_node(left, str_source, callback);
55
+ iterate_babel_node(right, str_source, callback);
56
+ }
57
+
58
+ const iterate_babel_throw_statement_node = (babel_node, str_source, callback) => {
59
+ const {extra, argument} = babel_node;
60
+
61
+ iterate_babel_node(argument, str_source, callback);
62
+
63
+ //iterate_babel_node(right, str_source);
64
+ //each(elements, element => iterate_babel_node(element, str_source));
65
+ }
66
+
67
+ const iterate_babel_boolean_literal_node = (babel_node, str_source, callback) => {
68
+ const {value} = babel_node;
69
+ }
70
+
71
+ const iterate_babel_null_literal_node = (babel_node, str_source, callback) => {
72
+
73
+ }
74
+
75
+ const iterate_babel_empty_statement_node = (babel_node, str_source, callback) => {
76
+
77
+ }
78
+
79
+ const iterate_babel_new_expression_node = (babel_node, str_source, callback) => {
80
+ const {extra, callee} = babel_node;
81
+
82
+
83
+ iterate_babel_node(callee, str_source, callback);
84
+ each(babel_node.arguments, x => iterate_babel_node(x, str_source, callback));
85
+ //iterate_babel_node(right, str_source);
86
+ //each(elements, element => iterate_babel_node(element, str_source));
87
+ }
88
+
89
+ const iterate_babel_update_expression_node = (babel_node, str_source, callback) => {
90
+ const {extra, operator, prefix, argument} = babel_node;
91
+
92
+ iterate_babel_node(argument, str_source, callback);
93
+
94
+ //iterate_babel_node(right, str_source);
95
+ //each(elements, element => iterate_babel_node(element, str_source));
96
+ }
97
+
98
+ const iterate_babel_numeric_literal_node = (babel_node, str_source, callback) => {
99
+ const {extra, value} = babel_node;
100
+
101
+ //iterate_babel_node(right, str_source);
102
+ //each(elements, element => iterate_babel_node(element, str_source));
103
+ }
104
+
105
+
106
+ const iterate_babel_for_statement_node = (babel_node, str_source, callback) => {
107
+ const {extra, init, test, update, body} = babel_node;
108
+ iterate_babel_node(init, str_source, callback);
109
+ iterate_babel_node(test, str_source, callback);
110
+ iterate_babel_node(update, str_source, callback);
111
+ iterate_babel_node(body, str_source, callback);
112
+ //iterate_babel_node(right, str_source);
113
+ //each(elements, element => iterate_babel_node(element, str_source));
114
+ }
115
+
116
+ const iterate_babel_array_expression_node = (babel_node, str_source, callback) => {
117
+ const {extra, elements} = babel_node;
118
+ //iterate_babel_node(left, str_source);
119
+ //iterate_babel_node(right, str_source);
120
+ each(elements, element => iterate_babel_node(element, str_source, callback));
121
+ }
122
+
123
+ const iterate_babel_assignment_expression_node = (babel_node, str_source, callback) => {
124
+ const {extra, left, operator, right} = babel_node;
125
+ iterate_babel_node(left, str_source, callback);
126
+ iterate_babel_node(right, str_source, callback);
127
+ }
128
+
129
+ const iterate_babel_expression_statement_node = (babel_node, str_source, callback) => {
130
+ const {extra, left, operator, right} = babel_node;
131
+ iterate_babel_node(left, str_source, callback);
132
+ iterate_babel_node(right, str_source, callback);
133
+ }
134
+
135
+ const iterate_babel_variable_declarator_node = (babel_node, str_source, callback) => {
136
+ const {extra, id, init} = babel_node;
137
+ iterate_babel_node(id, str_source, callback);
138
+ iterate_babel_node(init, str_source, callback);
139
+ }
140
+
141
+ const iterate_babel_logical_expression_node = (babel_node, str_source, callback) => {
142
+ const {extra, left, operator, right} = babel_node;
143
+ iterate_babel_node(left, str_source, callback);
144
+ iterate_babel_node(right, str_source, callback);
145
+ }
146
+
147
+ const iterate_babel_function_expression_node = (babel_node, str_source, callback) => {
148
+ //console.log('iterate_babel_function_expression_node', babel_node);
149
+
150
+ const {extra, id, generator, async, params, body} = babel_node;
151
+
152
+ iterate_babel_node(id, str_source, callback);
153
+ each(params, param => iterate_babel_node(param, str_source, callback));
154
+ iterate_babel_node(body, str_source, callback);
155
+
156
+ //const {extra, object, computed /*bool*/, property} = babel_node;
157
+ //throw 'NYI'
158
+ }
159
+
160
+ const iterate_babel_member_expression_node = (babel_node, str_source, callback) => {
161
+ //console.log('iterate_babel_member_expression_node', babel_node);
162
+ const {extra, object, computed /*bool*/, property} = babel_node;
163
+
164
+
165
+
166
+ if (extra) {
167
+ throw 'NYI'
168
+ };
169
+ iterate_babel_node(object, str_source, callback);
170
+ iterate_babel_node(property, str_source, callback);
171
+ }
172
+
173
+ const iterate_babel_call_expression_node = (babel_node, str_source, callback) => {
174
+ //console.log('iterate_babel_object_property_node', babel_node);
175
+
176
+ const {extra, callee} = babel_node;
177
+
178
+ if (extra) {
179
+ //throw 'NYI';
180
+ const {parenthasized, parenStart} = extra;
181
+ }
182
+ iterate_babel_node(callee, str_source, callback);
183
+
184
+ each(babel_node.arguments, argument => {
185
+ iterate_babel_node(argument, str_source, callback);
186
+ })
187
+
188
+ //throw 'stop';
189
+ }
190
+
191
+ const iterate_babel_object_property_node = (babel_node, str_source, callback) => {
192
+ //console.log('iterate_babel_object_property_node', babel_node);
193
+
194
+ const {method, key, computed, shorthand, value} = babel_node;
195
+ //const {properties} = babel_node;
196
+
197
+ iterate_babel_node(key, str_source, callback);
198
+ iterate_babel_node(value, str_source, callback);
199
+
200
+ //throw 'stop';
201
+ }
202
+
203
+ const iterate_babel_object_expression_node = (babel_node, str_source, callback) => {
204
+ //console.log('iterate_babel_object_expression_node', babel_node);
205
+ const {properties} = babel_node;
206
+
207
+ each(properties, property => {
208
+ iterate_babel_node(property, str_source, callback);
209
+ })
210
+
211
+ //throw 'stop';
212
+ }
213
+
214
+ const iterate_babel_return_statement_node = (babel_node, str_source, callback) => {
215
+ //console.log('iterate_babel_return_statement_node', babel_node);
216
+
217
+ const {argument} = babel_node;
218
+ iterate_babel_node(argument, str_source, callback);
219
+
220
+ //throw 'stop';
221
+
222
+ }
223
+
224
+ const iterate_babel_if_statement_node = (babel_node, str_source, callback) => {
225
+ //console.log('iterate_babel_if_statement_node', babel_node);
226
+
227
+ const {test, concequent, alternate} = babel_node;
228
+ iterate_babel_node(test, str_source, callback);
229
+ iterate_babel_node(concequent, str_source, callback);
230
+ iterate_babel_node(alternate, str_source, callback);
231
+
232
+
233
+ //throw 'stop';
234
+
235
+ }
236
+
237
+ const iterate_babel_block_statement_node = (babel_node, str_source, callback) => {
238
+ const {params, body} = babel_node;
239
+ if (params && params.length > 0) {
240
+ console.log('params', params);
241
+ throw 'stop';
242
+ }
243
+ each(body, body_item => {
244
+ iterate_babel_node(body_item, str_source, callback);
245
+ });
246
+ }
247
+
248
+ const iterate_babel_arrow_function_expression_node = (babel_node, str_source, callback) => {
249
+ //console.log('iterate_babel_arrow_function_expression_node', babel_node);
250
+
251
+ const {generator, async, params, body} = babel_node;
252
+
253
+ // Assume the params are nodes.
254
+
255
+ if (params.length > 0) {
256
+ //console.log('params', params);
257
+ //throw 'NYI';
258
+ each(params, param => {
259
+ iterate_babel_node(param, str_source, callback);
260
+ })
261
+ }
262
+
263
+ iterate_babel_node(body, str_source, callback);
264
+
265
+
266
+
267
+ //throw 'stop';
268
+ }
269
+
270
+ const iterate_babel_variable_declaration_node = (babel_node, str_source, callback) => {
271
+ //console.log('iterate_babel_variable_declaration_node', babel_node);
272
+
273
+ const {kind, declarations} = babel_node;
274
+ each(declarations, declaration => iterate_babel_node(declaration, str_source, callback));
275
+ //throw 'stop';
276
+ }
277
+
278
+ const iterate_babel_string_literal_node = (babel_node, str_source, callback) => {
279
+ //console.log('iterate_babel_string_literal_node', babel_node);
280
+ const {value} = babel_node;
281
+ //throw 'stop';
282
+ }
283
+
284
+ const iterate_babel_identifier_node = (babel_node, str_source, callback) => {
285
+ //console.log('iterate_babel_identifier_node', babel_node);
286
+ const {name} = babel_node;
287
+
288
+ //throw 'stop';
289
+ }
290
+
291
+ const iterate_babel_unary_expression_node = (babel_node, str_source, callback) => {
292
+ //console.log('iterate_babel_unary_expression_node', babel_node);
293
+ const {operator, argument} = babel_node;
294
+
295
+ iterate_babel_node(argument, str_source, callback);
296
+
297
+
298
+ }
299
+
300
+ const iterate_babel_binary_expression_node = (babel_node, str_source, callback) => {
301
+ //console.log('iterate_babel_binary_expression_node babel_node', babel_node);
302
+
303
+ const {left, operator, right} = babel_node;
304
+ iterate_babel_node(left, str_source, callback);
305
+ iterate_babel_node(right, str_source, callback);
306
+
307
+ //throw 'stop';
308
+ }
309
+
310
+ const iterate_babel_node = (babel_node, str_source, callback) => {
311
+ //console.log('babel_node', babel_node);
312
+
313
+ if (babel_node) {
314
+
315
+ let stopped = false;
316
+
317
+ const stop = () => stopped = true;
318
+
319
+ if (callback) {
320
+ callback(babel_node, stop);
321
+ }
322
+ const {type} = babel_node;
323
+
324
+ if (!stopped) {
325
+
326
+ if (type === 'BinaryExpression') {
327
+ return iterate_babel_binary_expression_node(babel_node, str_source, callback);
328
+ } else if (type === 'UnaryExpression') {
329
+ return iterate_babel_unary_expression_node(babel_node, str_source, callback);
330
+ } else if (type === 'Identifier') {
331
+ return iterate_babel_identifier_node(babel_node, str_source, callback);
332
+ } else if (type === 'StringLiteral') {
333
+ return iterate_babel_string_literal_node(babel_node, str_source, callback);
334
+ } else if (type === 'VariableDeclaration') {
335
+ return iterate_babel_variable_declaration_node(babel_node, str_source, callback);
336
+ } else if (type === 'ArrowFunctionExpression') {
337
+ return iterate_babel_arrow_function_expression_node(babel_node, str_source, callback);
338
+ } else if (type === 'BlockStatement') {
339
+ return iterate_babel_block_statement_node(babel_node, str_source, callback);
340
+ } else if (type === 'IfStatement') {
341
+ return iterate_babel_if_statement_node(babel_node, str_source, callback);
342
+ } else if (type === 'ReturnStatement') {
343
+ return iterate_babel_return_statement_node(babel_node, str_source, callback);
344
+ } else if (type === 'ObjectExpression') {
345
+ return iterate_babel_object_expression_node(babel_node, str_source, callback);
346
+ } else if (type === 'ObjectProperty') {
347
+ return iterate_babel_object_property_node(babel_node, str_source, callback);
348
+ } else if (type === 'CallExpression') {
349
+ return iterate_babel_call_expression_node(babel_node, str_source, callback);
350
+ } else if (type === 'MemberExpression') {
351
+ return iterate_babel_member_expression_node(babel_node, str_source, callback);
352
+ } else if (type === 'FunctionExpression') {
353
+ return iterate_babel_function_expression_node(babel_node, str_source, callback);
354
+ } else if (type === 'LogicalExpression') {
355
+ return iterate_babel_logical_expression_node(babel_node, str_source, callback);
356
+ } else if (type === 'VariableDeclarator') {
357
+ return iterate_babel_variable_declarator_node(babel_node, str_source, callback);
358
+ } else if (type === 'ExpressionStatement') {
359
+ return iterate_babel_expression_statement_node(babel_node, str_source, callback);
360
+ } else if (type === 'AssignmentExpression') {
361
+ return iterate_babel_assignment_expression_node(babel_node, str_source, callback);
362
+ } else if (type === 'ArrayExpression') {
363
+ return iterate_babel_array_expression_node(babel_node, str_source, callback);
364
+ } else if (type === 'ForStatement') {
365
+ return iterate_babel_for_statement_node(babel_node, str_source, callback);
366
+ } else if (type === 'NumericLiteral') {
367
+ return iterate_babel_numeric_literal_node(babel_node, str_source, callback);
368
+ } else if (type === 'UpdateExpression') {
369
+ return iterate_babel_update_expression_node(babel_node, str_source, callback);
370
+ } else if (type === 'NewExpression') {
371
+ return iterate_babel_new_expression_node(babel_node, str_source, callback);
372
+ } else if (type === 'EmptyStatement') {
373
+ return iterate_babel_empty_statement_node(babel_node, str_source, callback);
374
+ } else if (type === 'NullLiteral') {
375
+ return iterate_babel_null_literal_node(babel_node, str_source, callback);
376
+ } else if (type === 'BooleanLiteral') {
377
+ return iterate_babel_boolean_literal_node(babel_node, str_source, callback);
378
+ } else if (type === 'ThrowStatement') {
379
+ return iterate_babel_throw_statement_node(babel_node, str_source, callback);
380
+ } else if (type === 'AssignmentPattern') {
381
+ return iterate_babel_assignment_pattern_node(babel_node, str_source, callback);
382
+ } else if (type === 'WhileStatement') {
383
+ return iterate_babel_while_statement_node(babel_node, str_source, callback);
384
+ } else if (type === 'ObjectPattern') {
385
+ return iterate_babel_object_pattern_node(babel_node, str_source, callback);
386
+ } else if (type === 'ClassDeclaration') {
387
+ return iterate_babel_class_declaration_node(babel_node, str_source, callback);
388
+ } else if (type === 'ClassBody') {
389
+ return iterate_babel_class_body_node(babel_node, str_source, callback);
390
+ } else if (type === 'ClassMethod') {
391
+ return iterate_babel_class_method_node(babel_node, str_source, callback);
392
+ } else {
393
+ console.log('');
394
+ console.log('type', type);
395
+ console.log('');
396
+ console.log('babel_node', babel_node);
397
+ throw 'stop';
398
+ }
399
+
400
+ // ConditionalExpression
401
+
402
+ }
403
+
404
+
405
+ }
406
+ }
407
+
408
+ // Seems broken in current state.
409
+ /*
410
+ const iterate_babel_child_nodes = (babel_node, str_source, callback) => iterate_babel_node(babel_node, str_source, (node2) => {
411
+ if (babel_node !== node2) {
412
+ callback(node2);
413
+ }
414
+ });
415
+ */
416
+
417
+ // each_babel_child_node
418
+
419
+ // iterate_find maybe?
420
+
421
+ //const iterate_babel_find = (babel_node, str_source, fn_match, callback) =
422
+
423
+ // each_babel_child_node
424
+
425
+
426
+
427
+
428
+ }
429
+
430
+ // accumulate function?
431
+
432
+ /*
433
+ const get_babel_child_nodes = (babel_node, str_source) => {
434
+ const res = [];
435
+ iterate_babel_child_nodes(babel_node, str_source, (node => res.push(node)));
436
+ return res;
437
+ }
438
+ */
439
+
440
+ const get_identifier_names = babel_node => {
441
+ const arr_names = [], map_names = {};
442
+ iterate_babel_node(babel_node, undefined, (babel_node) => {
443
+ const {type, name} = babel_node;
444
+ if (type === 'Identifier') {
445
+ if (!map_names[name]) {
446
+ arr_names.push(name);
447
+ map_names[name] = true;
448
+ }
449
+ }
450
+ //console.log('get_identifier_names cb babel_node', babel_node);
451
+ //c++;
452
+ });
453
+ return arr_names;
454
+ }
455
+
456
+ const get_named_call = (babel_node, target_name) => {
457
+ let res;
458
+ iterate_babel_node(babel_node, undefined, (babel_node) => {
459
+
460
+ //console.log('babel_node', babel_node);
461
+
462
+ // if it is a function call
463
+ // with the name require / ?, or id name require.
464
+ const {type, name} = babel_node;
465
+
466
+ /*
467
+ if (type === 'Identifier') {
468
+
469
+ if (name === 'require') {
470
+ throw 'stop!';
471
+ }
472
+
473
+ }
474
+ */
475
+ if (type === 'CallExpression') {
476
+ //throw 'stop';
477
+ const {callee} = babel_node;
478
+ const args = babel_node.arguments;
479
+
480
+ if (callee) {
481
+ const {type, name} = callee;
482
+ if (type === 'Identifier') {
483
+
484
+ if (name === target_name) {
485
+ if (args.length === 1) {
486
+ const {value} = args[0];
487
+ //return babel_node;
488
+ res = babel_node;
489
+ } else {
490
+ throw 'stop';
491
+ }
492
+
493
+ //throw 'stop!';
494
+ }
495
+
496
+ } else {
497
+ throw 'stop';
498
+ }
499
+
500
+
501
+ } else {
502
+ throw 'stop';
503
+ }
504
+ }
505
+ });
506
+ return res;
507
+ }
508
+
509
+ const count_nodes = babel_node => {
510
+ let c = 0;
511
+ iterate_babel_node(babel_node, str_source, (babel_node) => {
512
+ //console.log('cb babel_node', babel_node);
513
+ c++;
514
+ });
515
+ return c;
516
+
517
+ }
518
+
519
+ const get_require_call = babel_node => get_named_call(babel_node, 'require');
520
+ const has_require_call = babel_node => !!get_require_call(babel_node);
521
+
522
+ // getting the names (string literal values) of whatever is required.
523
+
524
+ // pattern signatures and matching looks like the best way to go.
525
+ //
526
+
527
+ // structure patterns
528
+ // could ignore variable names?
529
+
530
+ // or run some kind of deep copy / clone on babel nodes and transform them.
531
+
532
+
533
+ const babel_node_tools = {
534
+
535
+
536
+ deep_iterate_babel_node: deep_iterate_babel_node,
537
+ get_identifier_names: get_identifier_names,
538
+ get_require_call: get_require_call,
539
+ has_require_call, has_require_call
540
+ }
541
+
542
+ module.exports = babel_node_tools;