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,249 @@
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-mini');
5
+
6
+ const JS_AST_Node_Feature = require('./JS_AST_Node_Feature');
7
+
8
+ class JS_AST_Node_Feature_Declaration extends JS_AST_Node_Feature {
9
+ constructor(spec = {}) {
10
+ super(spec);
11
+ const {node} = this;
12
+
13
+ let declared_keys, assigned_values;
14
+
15
+ // Maybe should be .declared.keys?
16
+
17
+ const declared = {};
18
+
19
+ const assigned = {};
20
+
21
+
22
+ // and the assigned keys property.
23
+
24
+
25
+ // // maybe they are not assigned keys after all.
26
+
27
+ // .assigned.values
28
+
29
+
30
+ // a query to get the literal values???
31
+
32
+
33
+
34
+ Object.defineProperty(assigned, 'values', {
35
+ get() {
36
+ if (!assigned_values) {
37
+ assigned_values = [];
38
+
39
+ //console.log('node', node);
40
+ //console.log('node.source', node.source);
41
+
42
+ if (node.type === 'VariableDeclaration') {
43
+
44
+ // Need to look at all the child nodes.
45
+ //console.log('node.child.shared.type', node.child.shared.type);
46
+
47
+ // then go through each child declarator....
48
+
49
+ node.query.each.child.declarator.exe(cdec => {
50
+ console.log('');
51
+ console.log('cdec', cdec);
52
+ console.log('cdec.source', cdec.source);
53
+ const dec_cn_tstr = cdec.query.collect.child.node.t.exe().join('.');
54
+ console.log('dec_cn_tstr', dec_cn_tstr);
55
+
56
+ // Can use a signature map.
57
+
58
+ // node.query.callmap.child.declarator.signature.exe({sig1: (node) => {}, sig2: node => {}}, unmapped_node => {})
59
+
60
+
61
+
62
+ if (dec_cn_tstr === 'ArP.ArE') {
63
+
64
+
65
+ // ArrayPattern.ArrayExpression
66
+ const are = cdec.child_nodes[1];
67
+ //console.log('are', are);
68
+
69
+ // then are they literals inside?
70
+
71
+ // .find child shared category?
72
+ // but query needs the verb.
73
+ // maybe collect is the default one now.
74
+ //const sc = are.query.child.shared.category.exe();
75
+ const sc = are.child.shared.category;
76
+ //console.log('sc', sc);
77
+
78
+ //throw 'stop';
79
+
80
+ const st = are.child.shared.type;
81
+ //console.log('st', st);
82
+
83
+ if (sc === 'Literal') {
84
+ // can get the values....
85
+
86
+ const lvalues = are.query.collect.child.value.exe();
87
+ //console.log('lvalues', lvalues);
88
+ each(lvalues, v => assigned_values.push(v));
89
+
90
+ } else {
91
+
92
+
93
+
94
+ throw 'NYI';
95
+ }
96
+ //console.log(sc);
97
+ //if (are.)
98
+ } else {
99
+
100
+ // .query.select.by.child.count.exe(2).query.select.where.first.child.is.identifier.exe().select.where.second.child.is.literal.exe()
101
+ // .quert.select.where.child.count.is.exe(2)
102
+
103
+ if (cdec.child.count === 2) {
104
+ if (cdec.child_nodes[0].is_identifier) {
105
+
106
+
107
+ if (cdec.child_nodes[1].is_literal) {
108
+ const [name, value] = [cdec.child_nodes[0].name, cdec.child_nodes[1].value];
109
+ //console.log('[name, value]', [name, value]);
110
+ assigned_values.push(value);
111
+
112
+ } else {
113
+ // is it an expression?
114
+ // we could give it the node?
115
+
116
+ // leaving it for the moment???
117
+
118
+ if (cdec.child_nodes[1].is_expression) {
119
+ assigned_values.push(cdec.child_nodes[1]);
120
+
121
+ }
122
+
123
+
124
+
125
+ }
126
+
127
+ //throw 'yay';
128
+
129
+
130
+ } else {
131
+ throw 'NYI';
132
+ }
133
+
134
+
135
+ } else {
136
+ throw 'stop';
137
+ }
138
+
139
+ //console.log('dec_cn_tstr', dec_cn_tstr);
140
+ //throw 'NYI';
141
+
142
+
143
+ }
144
+
145
+ });
146
+
147
+
148
+ } else if (node.type === 'ClassDeclaration') {
149
+ throw 'NYI';
150
+ } else {
151
+ throw 'stop';
152
+ }
153
+ }
154
+ return assigned_values;
155
+ }});
156
+ Object.defineProperty(declared, 'keys', {
157
+ get() {
158
+ if (!declared_keys) {
159
+
160
+ // Can try the get_object_keys function???
161
+
162
+ declared_keys = [];
163
+
164
+ if (node.type === 'VariableDeclaration') {
165
+ //console.log('node', node);
166
+ //const ks = node.query.collect.child.variabledeclarator.exe().query.collect.id.name.exe();
167
+ const vdars = node.query.collect.child.variabledeclarator.exe();
168
+ //console.log('vdars', vdars);
169
+ //console.log('vdars[0].id', vdars[0].id);
170
+ const collected_keys = vdars.query.collect.id.name.exe();
171
+ each(collected_keys, key => declared_keys.push(key));
172
+ //console.log('collected_keys', collected_keys);
173
+ } else if (node.type === 'ClassDeclaration') {
174
+ throw 'NYI';
175
+ } else {
176
+ throw 'stop';
177
+ }
178
+
179
+ //throw 'stop';
180
+
181
+ const vdrs = node.query.select.child.node.exe(node => node.type === 'VariableDeclarator'); // and the new query system works.
182
+ if (vdrs.length > 0) {
183
+ //console.log('vdrs', vdrs);
184
+
185
+ // No, a variable declarator that assigns object keys should return those keys, not the object name itself.
186
+
187
+ each(vdrs, vdr => {
188
+ const dtr = vdr.declarator;
189
+ //console.log('dtr', dtr);
190
+ const dtr_keys = dtr.keys;
191
+ //console.log('dtr_keys', dtr_keys);
192
+ each(dtr_keys, key => declared_keys.push(key));
193
+ });
194
+ } else {
195
+
196
+ // Seems like class definitions are not iterating right...?
197
+
198
+ console.log('vdrs.length', vdrs.length);
199
+
200
+ if (vdrs.length === 0) {
201
+ if (this.node.type === 'ClassDeclaration') {
202
+ const key = this.node.child_nodes[0].name;
203
+ console.log('key', key);
204
+
205
+ if (key !== undefined) {
206
+ declared_keys.push(key);
207
+ } else {
208
+ throw 'stop';
209
+ }
210
+
211
+
212
+
213
+ //throw 'NYI';
214
+ } else {
215
+ throw 'stop';
216
+ }
217
+
218
+ } else {
219
+ throw 'NYI';
220
+ }
221
+
222
+
223
+ //console.log('this.node.type', this.node.type);
224
+ //console.log('this.node.child_nodes.length', this.node.child_nodes.length);
225
+
226
+ //console.log('this.node.signature', this.node.signature);
227
+ //console.log('this.node.deep_type_signature', this.node.deep_type_signature);
228
+
229
+
230
+ //throw 'NYI';
231
+ }
232
+
233
+ //throw 'NYI';
234
+ }
235
+ return declared_keys;
236
+ },
237
+ enumerable: true,
238
+ configurable: false
239
+ });
240
+
241
+ this.declared = declared;
242
+ this.assigned = assigned;
243
+
244
+
245
+
246
+ }
247
+ }
248
+
249
+ module.exports = JS_AST_Node_Feature_Declaration;
@@ -0,0 +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-mini');
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
+ module.exports = JS_AST_Node_Feature_Declarator;
@@ -0,0 +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
+
@@ -0,0 +1,101 @@
1
+
2
+ const {each} = require('lang-mini');
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
+ module.exports = JS_AST_Root_Node_Feature_Exported;
@@ -0,0 +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
+
61
+ module.exports = JS_AST_Root_Node_Feature_Exports;