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.
Files changed (278) hide show
  1. package/.vscode/settings.json +6 -0
  2. package/README.md +10 -10
  3. package/controls/Active_HTML_Document.js +116 -116
  4. package/controls/README.md +7 -7
  5. package/controls/page/admin.js +74 -74
  6. package/controls/panel/admin.js +11 -11
  7. package/examples/_css/basic.css +913 -913
  8. package/examples/_css/database-control.css +51 -51
  9. package/examples/_css/jsgui.css +66 -66
  10. package/examples/_css/multi-layout.css +23 -23
  11. package/examples/_css/style.css +1669 -1669
  12. package/examples/_css/top-and-bottom-bars.css +54 -54
  13. package/examples/box/1) square box/client.js +188 -188
  14. package/examples/box/1) square box/server.js +112 -112
  15. package/examples/box/2) twenty square boxes/css flex wrap/client.js +248 -248
  16. package/examples/box/2) twenty square boxes/css flex wrap/server.js +112 -112
  17. package/examples/boxes/square_boxes.js +45 -48
  18. package/examples/boxes/square_boxes_client.js +132 -136
  19. package/examples/client-side-popup-menu-button.html +93 -93
  20. package/examples/color_palette.js +51 -51
  21. package/examples/color_palette_client.js +95 -95
  22. package/examples/controls/1) window/client.js +186 -186
  23. package/examples/controls/1) window/server.js +117 -117
  24. package/examples/controls/10) window, mirrored text inputs/client.js +320 -320
  25. package/examples/controls/10) window, mirrored text inputs/server.js +117 -117
  26. package/examples/controls/11) window, mirrored text fields/client.js +493 -251
  27. package/examples/controls/11) window, mirrored text fields/server.js +117 -117
  28. package/examples/controls/11b) window, shared Data_Object model mirrored text fields/client.js +613 -331
  29. package/examples/controls/11b) window, shared Data_Object model mirrored text fields/server.js +117 -117
  30. package/examples/controls/11c) window, shared Data_Value model mirrored text fields/client.js +617 -617
  31. package/examples/controls/11c) window, shared Data_Value model mirrored text fields/server.js +117 -117
  32. package/examples/controls/11d) window, shared model mirrored integer text fields/client.js +611 -280
  33. package/examples/controls/11d) window, shared model mirrored integer text fields/server.js +134 -22
  34. package/examples/controls/12) window, Select_Options control/client.js +435 -452
  35. package/examples/controls/12) window, Select_Options control/server.js +117 -117
  36. package/examples/controls/2) two windows/client.js +193 -193
  37. package/examples/controls/2) two windows/server.js +113 -113
  38. package/examples/controls/3) five windows/client.js +217 -217
  39. package/examples/controls/3) five windows/server.js +116 -115
  40. package/examples/controls/4) window, tabbed panel/client.js +54 -225
  41. package/examples/controls/4) window, tabbed panel/server.js +17 -117
  42. package/examples/controls/5) window, grid/client.js +204 -484
  43. package/examples/controls/5) window, grid/server.js +117 -119
  44. package/examples/controls/6) window, color_palette/client.js +204 -204
  45. package/examples/controls/6) window, color_palette/server.js +117 -117
  46. package/examples/controls/7) window, month_view/client.js +40 -231
  47. package/examples/controls/7) window, month_view/server.js +117 -117
  48. package/examples/controls/8) window, checkbox/client.js +247 -209
  49. package/examples/controls/8) window, checkbox/server.js +117 -117
  50. package/examples/controls/9) window, date picker/client.js +303 -303
  51. package/examples/controls/9) window, date picker/server.js +117 -117
  52. package/examples/controls/9b) window, shared data.model mirrored date pickers/client.js +398 -398
  53. package/examples/controls/9b) window, shared data.model mirrored date pickers/server.js +117 -117
  54. package/examples/controls/__old/_html-server-color-palette.js +114 -114
  55. package/examples/controls/__old/html-server-combo-box.js +104 -104
  56. package/examples/controls/__old/html-server-list.js +98 -98
  57. package/examples/controls/__old/html-server-popup-menu-button.js +114 -114
  58. package/examples/controls/__old/html-server-start-stop-toggle-button.js +146 -146
  59. package/examples/controls/__old/scs-arrow-button.js +36 -36
  60. package/examples/controls/__old/scs-date-picker.js +157 -157
  61. package/examples/controls/__old/scs-file-browser.js +82 -82
  62. package/examples/controls/__old/scs-item.js +159 -159
  63. package/examples/controls/__old/scs-month-arrow-selector.js +126 -126
  64. package/examples/controls/__old/scs-month-view.js +94 -94
  65. package/examples/controls/__old/scs-start-stop-toggle-button.js +40 -40
  66. package/examples/controls/__old/scs-tree.js +49 -49
  67. package/examples/controls/__old/scs-year-arrow-selector.js +127 -127
  68. package/examples/demos/date-picker.js +119 -119
  69. package/examples/demos/explain-encapsulation.js +9 -9
  70. package/examples/demos/resizing.js +35 -35
  71. package/examples/demos/server_time.js +6 -6
  72. package/examples/grids/grid_1.js +45 -45
  73. package/examples/grids/grid_1_client.js +329 -329
  74. package/examples/html-rendering.js +20 -20
  75. package/examples/html-server.js +105 -105
  76. package/examples/introducing jsgui3/server.js +110 -110
  77. package/examples/mx_display/mx_display_1.js +45 -45
  78. package/examples/mx_display/mx_display_1_client.js +444 -444
  79. package/fs2.js +1836 -1836
  80. package/http/responders/HTTP_Responder.js +15 -15
  81. package/http/responders/static/Static_Route_HTTP_Responder.js +105 -105
  82. package/module.js +34 -34
  83. package/old/_single-control-server.js +418 -418
  84. package/old/single-control-server.js +368 -368
  85. package/old/single-page-app.js +131 -131
  86. package/package.json +42 -42
  87. package/page-context.js +92 -92
  88. package/publishers/helpers/assigners/Assigner.js +10 -10
  89. package/publishers/helpers/assigners/static-compressed-response-buffers/Single_Control_Webpage_Server_Static_Compressed_Response_Buffers_Assigner.js +150 -150
  90. package/publishers/helpers/assigners/static-headers/Single_Control_Webpage_Server_Static_Headers_Assigner.js +109 -109
  91. package/publishers/helpers/assigners/static-routes/Single_Control_Webpage_Server_Static_Routes_Assigner.js +91 -91
  92. package/publishers/helpers/assigners/static-uncompressed-response-buffers/Single_Control_Webpage_Server_Static_Uncompressed_Response_Buffers_Assigner.js +104 -104
  93. package/publishers/helpers/preparers/static/bundle/Ready_To_Serve_Preparer.js +18 -18
  94. package/publishers/helpers/preparers/static/bundle/Static_Routes_Responses_Webpage_Bundle_Preparer.js +44 -44
  95. package/publishers/http-function-publisher.js +212 -212
  96. package/publishers/http-html-page-publisher.js +5 -5
  97. package/publishers/http-html-publisher.js +24 -24
  98. package/publishers/http-js-publisher.js +135 -135
  99. package/publishers/http-observable-publisher.js +124 -124
  100. package/publishers/http-publisher.js +53 -53
  101. package/publishers/http-resource-publisher.js +325 -325
  102. package/publishers/http-webpage-publisher.js +659 -658
  103. package/publishers/http-webpageorsite-publisher.js +343 -343
  104. package/publishers/http-website-publisher.js +640 -640
  105. package/publishers/notes.md +9 -9
  106. package/resources/README.md +16 -16
  107. package/resources/_old_website-javascript-resource.js +994 -994
  108. package/resources/_old_website-resource.js +507 -507
  109. package/resources/compile/server-resource-compilation.js +43 -43
  110. package/resources/data-resource.js +118 -118
  111. package/resources/fs-resource.js +146 -146
  112. package/resources/jsbuilder/Abstract_Single_Declaration.js +105 -105
  113. package/resources/jsbuilder/Abstract_Single_Declaration_Sequence.js +42 -42
  114. package/resources/jsbuilder/JS_AST/JS_AST_Abstract_Node.js +61 -61
  115. package/resources/jsbuilder/JS_AST/JS_AST_Abstract_Node_Group.js +41 -41
  116. package/resources/jsbuilder/JS_AST/JS_AST_Group_Shared.js +61 -61
  117. package/resources/jsbuilder/JS_AST/JS_AST_Node.js +93 -93
  118. package/resources/jsbuilder/JS_AST/JS_AST_Node_0-Core.js +253 -253
  119. package/resources/jsbuilder/JS_AST/JS_AST_Node_1-Babel.js +337 -337
  120. package/resources/jsbuilder/JS_AST/JS_AST_Node_10-Changing.js +39 -39
  121. package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.1-Child.js +96 -96
  122. package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.2-Parent.js +37 -37
  123. package/resources/jsbuilder/JS_AST/JS_AST_Node_2.1.3-Ancestor.js +61 -61
  124. package/resources/jsbuilder/JS_AST/JS_AST_Node_2.2-Inner.js +43 -43
  125. package/resources/jsbuilder/JS_AST/JS_AST_Node_2.3-All.js +72 -72
  126. package/resources/jsbuilder/JS_AST/JS_AST_Node_2.4-Sibling.js +92 -92
  127. package/resources/jsbuilder/JS_AST/JS_AST_Node_2.5-Available_In_Scope.js +29 -29
  128. package/resources/jsbuilder/JS_AST/JS_AST_Node_2.9-Signature.js +116 -116
  129. package/resources/jsbuilder/JS_AST/JS_AST_Node_3-Basics.js +159 -159
  130. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.0-Basics_First.js +178 -178
  131. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.1-Basics_Second.js +87 -87
  132. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.0.99-Basics_Last.js +91 -91
  133. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.1-Basics_Each.js +136 -136
  134. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.1.5-Basics_Count.js +73 -73
  135. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.2-Basics_Filter.js +39 -39
  136. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.3-Basics_Collect.js +85 -85
  137. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.4-Basics_Select.js +42 -42
  138. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.5-Basics_Find.js +40 -40
  139. package/resources/jsbuilder/JS_AST/JS_AST_Node_3.6-Basics_Callmap.js +54 -54
  140. package/resources/jsbuilder/JS_AST/JS_AST_Node_4.0-Index_Indexes.js +45 -45
  141. package/resources/jsbuilder/JS_AST/JS_AST_Node_4.1-Index.js +343 -343
  142. package/resources/jsbuilder/JS_AST/JS_AST_Node_5.0-Category.js +38 -38
  143. package/resources/jsbuilder/JS_AST/JS_AST_Node_5.1-Category_Identifier.js +30 -30
  144. package/resources/jsbuilder/JS_AST/JS_AST_Node_5.2-Category_Literal.js +28 -28
  145. package/resources/jsbuilder/JS_AST/JS_AST_Node_5.3-Category_Expression.js +26 -26
  146. package/resources/jsbuilder/JS_AST/JS_AST_Node_5.4-Category_Pattern.js +8 -8
  147. package/resources/jsbuilder/JS_AST/JS_AST_Node_5.5-Category_Declaration.js +43 -43
  148. package/resources/jsbuilder/JS_AST/JS_AST_Node_5.6-Category_Statement.js +21 -21
  149. package/resources/jsbuilder/JS_AST/JS_AST_Node_6.0-Type.js +89 -89
  150. package/resources/jsbuilder/JS_AST/JS_AST_Node_6.1-Type_Class_Declaration.js +8 -8
  151. package/resources/jsbuilder/JS_AST/JS_AST_Node_6.2-Type_Variable_Declaration.js +27 -27
  152. package/resources/jsbuilder/JS_AST/JS_AST_Node_6.3-Type_Variable_Declarator.js +28 -28
  153. package/resources/jsbuilder/JS_AST/JS_AST_Node_7-Query.js +736 -736
  154. package/resources/jsbuilder/JS_AST/JS_AST_Node_8-Features.js +64 -64
  155. package/resources/jsbuilder/JS_AST/JS_AST_Node_9-Planning.js +31 -31
  156. package/resources/jsbuilder/JS_AST/JS_AST_Node_Arrangement.js +15 -15
  157. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Declared_Object.js +305 -305
  158. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature.js +77 -77
  159. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature_Declaration.js +248 -248
  160. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Node_Feature_Declarator.js +138 -138
  161. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature.js +10 -10
  162. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature_Exported.js +100 -100
  163. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Feature_Exports.js +60 -60
  164. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/JS_AST_Root_Node_Interpreted.js +179 -179
  165. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/_JSGUI_Root_Node_Interpreted.js +43 -43
  166. package/resources/jsbuilder/JS_AST/JS_AST_Node_Feature/JS_AST_Root_Node_Feature/special_case_objectassign_to_object.js +12 -12
  167. package/resources/jsbuilder/JS_AST/JS_AST_Node_Group.js +35 -35
  168. package/resources/jsbuilder/JS_AST/JS_AST_Operation.js +11 -11
  169. package/resources/jsbuilder/JS_AST/JS_AST_Operation_On_Relationship.js +31 -31
  170. package/resources/jsbuilder/JS_AST/JS_AST_Ordered_Relationship_Node_To_Group.js +37 -37
  171. package/resources/jsbuilder/JS_AST/JS_AST_Ordinal.js +39 -39
  172. package/resources/jsbuilder/JS_AST/JS_AST_Ordinal_Relationship.js +25 -25
  173. package/resources/jsbuilder/JS_AST/JS_AST_Relationship_Node_To_Group.js +200 -200
  174. package/resources/jsbuilder/JS_AST/JS_AST_Relationship_Node_Within_Group_To_Node.js +43 -43
  175. package/resources/jsbuilder/JS_AST/_JS_AST_Node_3.8-Query_Features.js +76 -76
  176. package/resources/jsbuilder/JS_AST/query/enable_array_as_queryable.js +227 -227
  177. package/resources/jsbuilder/JS_AST/query/find_object_keys.js +404 -404
  178. package/resources/jsbuilder/JS_AST/query/node_queries.js +8 -8
  179. package/resources/jsbuilder/JS_AST/query/root_query_identidy.js +11 -11
  180. package/resources/jsbuilder/JS_AST_Node_Extended/JSGUI_Singular_Declaration.js +85 -85
  181. package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Declaration.js +123 -123
  182. package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Extended.js +87 -87
  183. package/resources/jsbuilder/JS_AST_Node_Extended/JS_AST_Node_Extended_0-Core.js +10 -10
  184. package/resources/jsbuilder/JS_Builder.js +10 -10
  185. package/resources/jsbuilder/JS_File/Feature/JS_File_Declared_Object.js +31 -31
  186. package/resources/jsbuilder/JS_File/Feature/JS_File_Exported_Object_Info.js +25 -25
  187. package/resources/jsbuilder/JS_File/Feature/JS_File_Exports.js +78 -78
  188. package/resources/jsbuilder/JS_File/Feature/JS_File_Feature.js +17 -17
  189. package/resources/jsbuilder/JS_File/Feature/JS_File_Imported_Object_Info.js +25 -25
  190. package/resources/jsbuilder/JS_File/Feature/JS_File_Imports.js +8 -8
  191. package/resources/jsbuilder/JS_File/JS_File.js +12 -12
  192. package/resources/jsbuilder/JS_File/JS_File_0-Core.js +202 -202
  193. package/resources/jsbuilder/JS_File/JS_File_1-Early_Parse.js +175 -175
  194. package/resources/jsbuilder/JS_File/JS_File_2-Babel.js +81 -81
  195. package/resources/jsbuilder/JS_File/JS_File_3-JS_AST_Node.js +86 -86
  196. package/resources/jsbuilder/JS_File/JS_File_4-Query.js +413 -413
  197. package/resources/jsbuilder/JS_File/JS_File_4.1-Query_Features.js +414 -414
  198. package/resources/jsbuilder/JS_File/JS_File_5-Planning.js +59 -59
  199. package/resources/jsbuilder/JS_File/JS_File_6-Changing.js +24 -24
  200. package/resources/jsbuilder/JS_File/JS_File_Export_Reference.js +12 -12
  201. package/resources/jsbuilder/JS_File/JS_File_Import_Reference.js +23 -23
  202. package/resources/jsbuilder/JS_File/JS_File_Import_References.js +31 -31
  203. package/resources/jsbuilder/JS_File/JS_File_Processor.js +16 -16
  204. package/resources/jsbuilder/JS_File/JS_Files.js +15 -15
  205. package/resources/jsbuilder/Module.js +14 -14
  206. package/resources/jsbuilder/Platform.js +13 -13
  207. package/resources/jsbuilder/Platforms.js +69 -69
  208. package/resources/jsbuilder/Project.js +109 -109
  209. package/resources/jsbuilder/Reference.js +1 -1
  210. package/resources/jsbuilder/Reference_Sequence.js +16 -16
  211. package/resources/jsbuilder/Scope.js +29 -29
  212. package/resources/jsbuilder/Variable_Name_Provider.js +42 -42
  213. package/resources/jsbuilder/_JS_File.js +225 -225
  214. package/resources/jsbuilder/ast_query.js +20 -20
  215. package/resources/jsbuilder/babel/babel_consts.js +162 -162
  216. package/resources/jsbuilder/babel/babel_node_tools.js +541 -541
  217. package/resources/jsbuilder/babel/deep_iterate/deep_iterate_babel.js +923 -904
  218. package/resources/jsbuilder/build.js +16 -16
  219. package/resources/jsbuilder/platform_notes.md +66 -66
  220. package/resources/jsbuilder/test/test_ast_node.js +381 -381
  221. package/resources/jsbuilder/test/test_js_file.js +303 -303
  222. package/resources/jsbuilder/test/test_project.js +157 -157
  223. package/resources/local-server-info-resource.js +96 -96
  224. package/resources/notes.txt +10 -10
  225. package/resources/old/website-image-resource.js +1185 -1185
  226. package/resources/process-js.js +498 -498
  227. package/resources/processors/bundlers/bundle.js +29 -29
  228. package/resources/processors/bundlers/bundler.js +23 -23
  229. package/resources/processors/bundlers/css-bundler.js +234 -234
  230. package/resources/processors/bundlers/js/JS_Bundler.js +51 -51
  231. package/resources/processors/bundlers/js/esbuild/Advanced_JS_Bundler_Using_ESBuild.js +388 -391
  232. package/resources/processors/bundlers/js/esbuild/Bundler_Using_ESBuild.js +8 -8
  233. package/resources/processors/bundlers/js/esbuild/Core_JS_Non_Minifying_Bundler_Using_ESBuild.js +188 -188
  234. package/resources/processors/bundlers/js/esbuild/Core_JS_Single_File_Minifying_Bundler_Using_ESBuild.js +191 -192
  235. package/resources/processors/bundlers/js/esbuild/_Old_CSS_Extractor.js +239 -239
  236. package/resources/processors/bundlers/js-bundler.js +263 -263
  237. package/resources/processors/bundlers/test_ast.js +73 -73
  238. package/resources/processors/bundlers/webpage-bundler.js +404 -404
  239. package/resources/processors/bundlers/website-bundler.js +22 -22
  240. package/resources/processors/extractors/Extractor.js +9 -11
  241. package/resources/processors/extractors/js/css_and_js/AST_Node/CSS_And_JS_From_JS_String_Using_AST_Node_Extractor.js +239 -254
  242. package/resources/processors/extractors/js/css_and_js/CSS_And_JS_From_JS_String_Extractor.js +3 -3
  243. package/resources/processors/extractors/string/Pos_Span_String_Extractor.js +93 -93
  244. package/resources/server-installed-tools.js +28 -28
  245. package/resources/server-resource-pool.js +41 -41
  246. package/resources/website-audio-resource.js +735 -735
  247. package/resources/website-css-resource.js +411 -411
  248. package/resources/website-image-resource.js +412 -412
  249. package/resources/website-javascript-resource-processor.js +908 -908
  250. package/resources/website-javascript-resource.js +874 -874
  251. package/resources/website-resource-processor.js +10 -10
  252. package/resources/website-resource.js +164 -164
  253. package/resources/website-static-html-resource.js +199 -199
  254. package/resources/website-template-html-resource.js +231 -231
  255. package/roadmap.md +75 -75
  256. package/server.js +609 -573
  257. package/static-page-context.js +13 -13
  258. package/website/webpage.js +81 -81
  259. package/website/website-group.js +15 -15
  260. package/website/website.js +260 -260
  261. package/examples/controls/11d) window, shared model mirrored integer text fields/both.js +0 -17
  262. package/examples/controls/13) window, shared model mirrored lat_long/client.js +0 -933
  263. package/examples/controls/13) window, shared model mirrored lat_long/server.js +0 -50
  264. package/examples/controls/14) window, control compositional model/client.js +0 -328
  265. package/examples/controls/14) window, control compositional model/server.js +0 -118
  266. package/examples/controls/14a) window, control spec has compositional model/client.js +0 -440
  267. package/examples/controls/14a) window, control spec has compositional model/server.js +0 -118
  268. package/examples/controls/15) window, text field/client.js +0 -256
  269. package/examples/controls/15) window, text field/server.js +0 -39
  270. package/examples/controls/16) Window([Text_Input])/client.js +0 -266
  271. package/examples/controls/16) Window([Text_Input])/server.js +0 -109
  272. package/examples/controls/16a) Window([Text_Input]) Integer data.model.data_type/client.js +0 -494
  273. package/examples/controls/16a) Window([Text_Input]) Integer data.model.data_type/isomorphic.js +0 -24
  274. package/examples/controls/16a) Window([Text_Input]) Integer data.model.data_type/server.js +0 -73
  275. package/examples/controls/2b) two window, context menus/client.js +0 -193
  276. package/examples/controls/2b) two window, context menus/server.js +0 -114
  277. package/examples/controls/4a) window, tabbed panel with various controls inside/client.js +0 -233
  278. package/examples/controls/4a) window, tabbed panel with various controls inside/server.js +0 -118
@@ -1,392 +1,389 @@
1
- // Advanced in terms of being able to split CSS and JS from JS.
2
- const {obs} = require('fnl');
3
- const esbuild = require('esbuild')
4
- const Core_JS_Non_Minifying_Bundler_Using_ESBuild = require('./Core_JS_Non_Minifying_Bundler_Using_ESBuild');
5
- const Bundler_Using_ESBuild = require('./Bundler_Using_ESBuild');
6
- const {is_array} = require('lang-tools');
7
-
8
- const Core_JS_Single_File_Minifying_Bundler_Using_ESBuild = require('./Core_JS_Single_File_Minifying_Bundler_Using_ESBuild');
9
-
10
- //const CSS_Extractor = require('./_Old_CSS_Extractor');
11
-
12
- // Use a different CSS extractor.
13
-
14
-
15
- const Bundle = require('../../bundle');
16
-
17
- const CSS_And_JS_From_JS_String_Extractor = require('../../../extractors/js/css_and_js/CSS_And_JS_From_JS_String_Extractor');
18
-
19
-
20
- class Advanced_JS_Bundler_Using_ESBuild extends Bundler_Using_ESBuild {
21
- constructor(spec) {
22
- super(spec);
23
-
24
- if (spec.debug !== undefined) this.debug = spec.debug;
25
-
26
- //this.css_extractor = new CSS_Extractor();
27
-
28
- // A Debug Bundler would help.
29
- // Need to make it keep the CSS in the js.
30
-
31
-
32
-
33
- this.non_minifying_bundler = new Core_JS_Non_Minifying_Bundler_Using_ESBuild({
34
- debug: this.debug
35
- });
36
-
37
- // a keep_css_in_js option too....
38
- // and a 'debug' property, so it keeps the css in the js...?
39
- this.css_and_js_from_js_string_extractor = new CSS_And_JS_From_JS_String_Extractor({
40
- debug: this.debug
41
- });
42
-
43
-
44
- // Probably don't use that minifying bundler in debug mode.
45
- this.minifying_js_single_file_bundler = new Core_JS_Single_File_Minifying_Bundler_Using_ESBuild();
46
-
47
- }
48
-
49
- bundle(js_file_path) {
50
- const {non_minifying_bundler, css_and_js_from_js_string_extractor, minifying_js_single_file_bundler} = this;
51
-
52
- // Maybe this should get them positioned absolutely when removed from the grid?
53
- // But then what about the space they leave?
54
-
55
- // This is just a simple principle demo though.
56
- // Maybe want a simple and explicit option to change behaviour like I specify.
57
-
58
-
59
-
60
- const res_obs = obs(async(next, complete, error) => {
61
-
62
- //console.log('Advanced_JS_Bundler_Using_ESBuild bundle js_file_path:', js_file_path);
63
-
64
- const res_nmb = await non_minifying_bundler.bundle(js_file_path);
65
-
66
- //console.log('res_nmb', res_nmb);
67
-
68
- if (res_nmb.length === 1) {
69
- const js_bundle = res_nmb[0];
70
- const js_bundle_arr = js_bundle._arr;
71
- if (js_bundle_arr) {
72
- if (js_bundle_arr.length === 1) {
73
- const bundle_item = js_bundle_arr[0];
74
- //console.log('bundle_item', bundle_item);
75
-
76
- if (bundle_item.type === 'JavaScript') {
77
-
78
- // But in debug mode don't minify it.
79
- // Maybe create and add the sourcemap here instead....?
80
-
81
- const {text} = bundle_item;
82
- // Then use the css and js from js extractor.
83
-
84
- const res_extract_css_and_js_from_js = await css_and_js_from_js_string_extractor.extract(text);
85
- const {css, js} = res_extract_css_and_js_from_js;
86
-
87
- if (this.debug) {
88
-
89
- // sourcemap: 'inline'
90
-
91
- // Don't minify the js.
92
-
93
- // Make res bundle items that include the CSS and the non-minified JS.
94
-
95
- // Including the source map would be better still.
96
-
97
- const res_bundle = new Bundle();
98
- // Add the non-minified JS (as a bundle item object)
99
-
100
- const o_js_bundle_item = {
101
- type: 'JavaScript',
102
- extension: 'JS',
103
- text: js
104
- }
105
- res_bundle.add(o_js_bundle_item);
106
- const o_css_bundle_item = {
107
- type: 'CSS',
108
- extension: 'css',
109
- text: css
110
- }
111
-
112
- res_bundle.push(o_css_bundle_item);
113
- next(res_bundle);
114
- complete(res_bundle);
115
-
116
-
117
-
118
-
119
-
120
-
121
-
122
-
123
- } else {
124
-
125
-
126
- const minified_js = await minifying_js_single_file_bundler.bundle(js);
127
-
128
- //console.log('minified_js', minified_js);
129
- //console.log('minified_js.length', minified_js.length);
130
-
131
- // it's an array....
132
-
133
- if (is_array(minified_js)) {
134
-
135
- if (minified_js.length === 1) {
136
-
137
-
138
- // Should put it all in a single res bundle though....
139
- // Though merging / concating bundles will be fine too.
140
-
141
- const minified_js_bundle_collection = minified_js[0];
142
-
143
- const o_css_bundle_item = {
144
- type: 'CSS',
145
- extension: 'css',
146
- text: css
147
- }
148
-
149
- minified_js_bundle_collection.push(o_css_bundle_item);
150
-
151
-
152
- // Maybe will provide the class / class instance that processes CSS or SASS/SCSS / whatever else.
153
-
154
-
155
-
156
- // Could add the extracted CSS here.
157
-
158
-
159
-
160
- next(minified_js_bundle_collection);
161
-
162
- // But create a CSS bundle item...
163
-
164
-
165
-
166
-
167
-
168
- // And also the CSS...
169
-
170
-
171
-
172
-
173
-
174
- complete(minified_js_bundle_collection);
175
-
176
-
177
-
178
- const unneeded_looking_into_the_js_bundle = () => {
179
- if (minified_js_bundle_collection._arr) {
180
-
181
- if (minified_js_bundle_collection._arr.length === 1) {
182
-
183
- const minified_js_bundle_item = minified_js_bundle_collection._arr[0];
184
- console.log('minified_js_bundle_item', minified_js_bundle_item);
185
-
186
-
187
- if (minified_js_bundle_item.type === 'JavaScript') {
188
-
189
- //const str_minified_js = minified_js_bundle_item.text;
190
-
191
- //const res =
192
-
193
-
194
-
195
-
196
-
197
- } else {
198
-
199
- console.trace();
200
- throw 'NYI';
201
-
202
- }
203
-
204
-
205
- // Could even check it's js here...?
206
-
207
-
208
- console.trace();
209
- throw 'NYI';
210
-
211
-
212
- } else {
213
- console.trace();
214
- throw 'NYI';
215
- }
216
-
217
- } else {
218
-
219
- console.trace();
220
- throw 'NYI';
221
-
222
- }
223
-
224
- }
225
-
226
-
227
-
228
- } else {
229
- console.trace();
230
- throw 'stop';
231
- }
232
-
233
- } else {
234
-
235
- console.trace();
236
- throw 'stop';
237
- }
238
-
239
-
240
- }
241
-
242
-
243
-
244
-
245
-
246
-
247
-
248
-
249
-
250
-
251
-
252
- //console.trace();
253
- //throw 'stop';
254
-
255
- // And put things into a res bundle.
256
- // Though possibly this could (even) bundle things into compressed files (with headers) ready to be
257
- // served.
258
-
259
- // Though there may be a class (or bunch of them), maybe in the Publisher, that determine and
260
- // carry out adding references and using static routes, or putting the CSS and JS inline within the HTML.
261
- // References seem very much better but want control of this to be as clear as possible.
262
-
263
-
264
-
265
-
266
- // Maybe that will be a Ready_To_Serve_Static_Bundle
267
-
268
-
269
-
270
-
271
-
272
- // Though it needs to provide (a bundle of?) both JS and CSS.
273
- // Better to use a standard bundle class (collection) to transfer these objects.
274
-
275
- // .css or .get('css') perhaps???
276
-
277
- // Array does seem simpler, esp as it does not really have to be a 'bundle' object.
278
- // Maybe a Bundle class instance would help here in some ways.
279
-
280
- // Then will apply minifying compression to the JS.
281
- // ESBuild is really fast for this.
282
-
283
- // Likely to have different publisher options for how the HTML and CSS is included in the page.
284
- // With the most sensible defaults used.
285
- // Serving the files as static, and referenced from within the HTML.
286
- // Will look into options / setups for efficient serving of websites where there is
287
- // varying client side logic for each page, but can reference built components which don't change.
288
-
289
- // Or basically just initialise everything on the client page.
290
-
291
- // Will have moderately to very structure of classes, very specific in terms of what they do and how they do it.
292
-
293
-
294
-
295
-
296
-
297
-
298
-
299
-
300
-
301
-
302
-
303
-
304
-
305
-
306
-
307
-
308
- //console.log('res_extract_css_and_js_from_js', res_extract_css_and_js_from_js);
309
-
310
- //console.trace();
311
- //throw 'stop';
312
-
313
-
314
- } else {
315
- console.trace();
316
- throw 'NYI';
317
- }
318
-
319
- //console.trace();
320
- //throw 'stop';
321
- } else {
322
- console.trace();
323
- throw 'NYI';
324
- }
325
- } else {
326
- console.trace();
327
- throw 'NYI';
328
- }
329
-
330
-
331
- } else {
332
- console.trace();
333
- throw 'NYI';
334
- }
335
-
336
- //console.trace();
337
- //throw 'stop';
338
-
339
-
340
-
341
- // Need to use a non minifying bundler (first).
342
-
343
-
344
- const _old_code = async() => {
345
-
346
- const css_extractor_res = await css_extractor.separate_css_and_js(js_file_path)
347
-
348
- console.log('css_extractor_res', css_extractor_res);
349
-
350
- /*
351
-
352
- let result = await esbuild.build({
353
- entryPoints: ['js_file_path'],
354
- //sourcemap: 'external',
355
- write: false,
356
- outdir: 'out',
357
- })
358
- console.log('result.outputFiles:\n\n');
359
- for (let out of result.outputFiles) {
360
- console.log('out.path, out.contents, out.hash, out.text', out.path, out.contents, out.hash, out.text)
361
- }
362
-
363
- */
364
-
365
- // Should use (an instance of?) the core bundler.
366
- // Or the CSS extractor even.
367
-
368
-
369
-
370
- console.trace();
371
- throw 'NYI';
372
-
373
- }
374
-
375
-
376
-
377
-
378
-
379
- });
380
- return res_obs;
381
-
382
- // The bundle result should have a few things, makes sense to make it an object or class, not too complicated.
383
-
384
-
385
-
386
- }
387
-
388
-
389
-
390
- }
391
-
1
+ // Advanced in terms of being able to split CSS and JS from JS.
2
+ const {obs} = require('fnl');
3
+ const esbuild = require('esbuild')
4
+ const Core_JS_Non_Minifying_Bundler_Using_ESBuild = require('./Core_JS_Non_Minifying_Bundler_Using_ESBuild');
5
+ const Bundler_Using_ESBuild = require('./Bundler_Using_ESBuild');
6
+ const {is_array} = require('lang-tools');
7
+
8
+ const Core_JS_Single_File_Minifying_Bundler_Using_ESBuild = require('./Core_JS_Single_File_Minifying_Bundler_Using_ESBuild');
9
+
10
+ //const CSS_Extractor = require('./_Old_CSS_Extractor');
11
+
12
+ // Use a different CSS extractor.
13
+
14
+
15
+ const Bundle = require('../../bundle');
16
+
17
+ const CSS_And_JS_From_JS_String_Extractor = require('../../../extractors/js/css_and_js/CSS_And_JS_From_JS_String_Extractor');
18
+
19
+
20
+ class Advanced_JS_Bundler_Using_ESBuild extends Bundler_Using_ESBuild {
21
+ constructor(spec) {
22
+ super(spec);
23
+
24
+ if (spec.debug !== undefined) this.debug = spec.debug;
25
+
26
+ //this.css_extractor = new CSS_Extractor();
27
+
28
+
29
+ this.non_minifying_bundler = new Core_JS_Non_Minifying_Bundler_Using_ESBuild({
30
+ debug: this.debug
31
+ });
32
+
33
+
34
+ this.css_and_js_from_js_string_extractor = new CSS_And_JS_From_JS_String_Extractor();
35
+
36
+
37
+ // Probably don't use that minifying bundler in debug mode.
38
+ this.minifying_js_single_file_bundler = new Core_JS_Single_File_Minifying_Bundler_Using_ESBuild();
39
+
40
+ }
41
+
42
+ bundle(js_file_path) {
43
+ const {non_minifying_bundler, css_and_js_from_js_string_extractor, minifying_js_single_file_bundler} = this;
44
+
45
+ // Maybe this should get them positioned absolutely when removed from the grid?
46
+ // But then what about the space they leave?
47
+
48
+ // This is just a simple principle demo though.
49
+ // Maybe want a simple and explicit option to change behaviour like I specify.
50
+
51
+
52
+
53
+ const res_obs = obs(async(next, complete, error) => {
54
+
55
+ //console.log('Advanced_JS_Bundler_Using_ESBuild bundle js_file_path:', js_file_path);
56
+
57
+ const res_nmb = await non_minifying_bundler.bundle(js_file_path);
58
+
59
+ //console.log('res_nmb', res_nmb);
60
+
61
+ if (res_nmb.length === 1) {
62
+ const js_bundle = res_nmb[0];
63
+ const js_bundle_arr = js_bundle._arr;
64
+ if (js_bundle_arr) {
65
+ if (js_bundle_arr.length === 1) {
66
+ const bundle_item = js_bundle_arr[0];
67
+ //console.log('bundle_item', bundle_item);
68
+
69
+ if (bundle_item.type === 'JavaScript') {
70
+
71
+ // But in debug mode don't minify it.
72
+ // Maybe create and add the sourcemap here instead....?
73
+
74
+ const {text} = bundle_item;
75
+ // Then use the css and js from js extractor.
76
+
77
+ const res_extract_css_and_js_from_js = await css_and_js_from_js_string_extractor.extract(text);
78
+ const {css, js} = res_extract_css_and_js_from_js;
79
+
80
+ if (this.debug) {
81
+
82
+ // sourcemap: 'inline'
83
+
84
+ // Don't minify the js.
85
+
86
+ // Make res bundle items that include the CSS and the non-minified JS.
87
+
88
+ // Including the source map would be better still.
89
+
90
+ const res_bundle = new Bundle();
91
+ // Add the non-minified JS (as a bundle item object)
92
+
93
+ const o_js_bundle_item = {
94
+ type: 'JavaScript',
95
+ extension: 'JS',
96
+ text: js
97
+ }
98
+ res_bundle.add(o_js_bundle_item);
99
+ const o_css_bundle_item = {
100
+ type: 'CSS',
101
+ extension: 'css',
102
+ text: css
103
+ }
104
+
105
+ res_bundle.push(o_css_bundle_item);
106
+ next(res_bundle);
107
+ complete(res_bundle);
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+ } else {
117
+
118
+
119
+ const minified_js = await minifying_js_single_file_bundler.bundle(js);
120
+
121
+ //console.log('minified_js', minified_js);
122
+ //console.log('minified_js.length', minified_js.length);
123
+
124
+ // it's an array....
125
+
126
+ if (is_array(minified_js)) {
127
+
128
+ if (minified_js.length === 1) {
129
+
130
+
131
+ // Should put it all in a single res bundle though....
132
+ // Though merging / concating bundles will be fine too.
133
+
134
+
135
+
136
+ const minified_js_bundle_collection = minified_js[0];
137
+
138
+
139
+
140
+ const o_css_bundle_item = {
141
+ type: 'CSS',
142
+ extension: 'css',
143
+ text: css
144
+ }
145
+
146
+ minified_js_bundle_collection.push(o_css_bundle_item);
147
+
148
+
149
+ // Maybe will provide the class / class instance that processes CSS or SASS/SCSS / whatever else.
150
+
151
+
152
+
153
+ // Could add the extracted CSS here.
154
+
155
+
156
+
157
+ next(minified_js_bundle_collection);
158
+
159
+ // But create a CSS bundle item...
160
+
161
+
162
+
163
+
164
+
165
+ // And also the CSS...
166
+
167
+
168
+
169
+
170
+
171
+ complete(minified_js_bundle_collection);
172
+
173
+
174
+
175
+ const unneeded_looking_into_the_js_bundle = () => {
176
+ if (minified_js_bundle_collection._arr) {
177
+
178
+ if (minified_js_bundle_collection._arr.length === 1) {
179
+
180
+ const minified_js_bundle_item = minified_js_bundle_collection._arr[0];
181
+ console.log('minified_js_bundle_item', minified_js_bundle_item);
182
+
183
+
184
+ if (minified_js_bundle_item.type === 'JavaScript') {
185
+
186
+ //const str_minified_js = minified_js_bundle_item.text;
187
+
188
+ //const res =
189
+
190
+
191
+
192
+
193
+
194
+ } else {
195
+
196
+ console.trace();
197
+ throw 'NYI';
198
+
199
+ }
200
+
201
+
202
+ // Could even check it's js here...?
203
+
204
+
205
+ console.trace();
206
+ throw 'NYI';
207
+
208
+
209
+ } else {
210
+ console.trace();
211
+ throw 'NYI';
212
+ }
213
+
214
+ } else {
215
+
216
+ console.trace();
217
+ throw 'NYI';
218
+
219
+ }
220
+
221
+ }
222
+
223
+
224
+
225
+ } else {
226
+ console.trace();
227
+ throw 'stop';
228
+ }
229
+
230
+ } else {
231
+
232
+ console.trace();
233
+ throw 'stop';
234
+ }
235
+
236
+
237
+ }
238
+
239
+
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+ //console.trace();
250
+ //throw 'stop';
251
+
252
+ // And put things into a res bundle.
253
+ // Though possibly this could (even) bundle things into compressed files (with headers) ready to be
254
+ // served.
255
+
256
+ // Though there may be a class (or bunch of them), maybe in the Publisher, that determine and
257
+ // carry out adding references and using static routes, or putting the CSS and JS inline within the HTML.
258
+ // References seem very much better but want control of this to be as clear as possible.
259
+
260
+
261
+
262
+
263
+ // Maybe that will be a Ready_To_Serve_Static_Bundle
264
+
265
+
266
+
267
+
268
+
269
+ // Though it needs to provide (a bundle of?) both JS and CSS.
270
+ // Better to use a standard bundle class (collection) to transfer these objects.
271
+
272
+ // .css or .get('css') perhaps???
273
+
274
+ // Array does seem simpler, esp as it does not really have to be a 'bundle' object.
275
+ // Maybe a Bundle class instance would help here in some ways.
276
+
277
+ // Then will apply minifying compression to the JS.
278
+ // ESBuild is really fast for this.
279
+
280
+ // Likely to have different publisher options for how the HTML and CSS is included in the page.
281
+ // With the most sensible defaults used.
282
+ // Serving the files as static, and referenced from within the HTML.
283
+ // Will look into options / setups for efficient serving of websites where there is
284
+ // varying client side logic for each page, but can reference built components which don't change.
285
+
286
+ // Or basically just initialise everything on the client page.
287
+
288
+ // Will have moderately to very structure of classes, very specific in terms of what they do and how they do it.
289
+
290
+
291
+
292
+
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+
304
+
305
+ //console.log('res_extract_css_and_js_from_js', res_extract_css_and_js_from_js);
306
+
307
+ //console.trace();
308
+ //throw 'stop';
309
+
310
+
311
+ } else {
312
+ console.trace();
313
+ throw 'NYI';
314
+ }
315
+
316
+ //console.trace();
317
+ //throw 'stop';
318
+ } else {
319
+ console.trace();
320
+ throw 'NYI';
321
+ }
322
+ } else {
323
+ console.trace();
324
+ throw 'NYI';
325
+ }
326
+
327
+
328
+ } else {
329
+ console.trace();
330
+ throw 'NYI';
331
+ }
332
+
333
+ //console.trace();
334
+ //throw 'stop';
335
+
336
+
337
+
338
+ // Need to use a non minifying bundler (first).
339
+
340
+
341
+ const _old_code = async() => {
342
+
343
+ const css_extractor_res = await css_extractor.separate_css_and_js(js_file_path)
344
+
345
+ console.log('css_extractor_res', css_extractor_res);
346
+
347
+ /*
348
+
349
+ let result = await esbuild.build({
350
+ entryPoints: ['js_file_path'],
351
+ //sourcemap: 'external',
352
+ write: false,
353
+ outdir: 'out',
354
+ })
355
+ console.log('result.outputFiles:\n\n');
356
+ for (let out of result.outputFiles) {
357
+ console.log('out.path, out.contents, out.hash, out.text', out.path, out.contents, out.hash, out.text)
358
+ }
359
+
360
+ */
361
+
362
+ // Should use (an instance of?) the core bundler.
363
+ // Or the CSS extractor even.
364
+
365
+
366
+
367
+ console.trace();
368
+ throw 'NYI';
369
+
370
+ }
371
+
372
+
373
+
374
+
375
+
376
+ });
377
+ return res_obs;
378
+
379
+ // The bundle result should have a few things, makes sense to make it an object or class, not too complicated.
380
+
381
+
382
+
383
+ }
384
+
385
+
386
+
387
+ }
388
+
392
389
  module.exports = Advanced_JS_Bundler_Using_ESBuild;