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,343 +1,343 @@
1
-
2
-
3
-
4
- const {each, Router, tof} = require('jsgui3-html');
5
- const HTTP_Publisher = require('./http-publisher');
6
- const {obs} = require('fnl');
7
-
8
- // The Webpage bundler should be able to come up with the compiled JS and CSS, maybe even a favicon.
9
-
10
- // HTTP_Webpageorsite_Publisher
11
-
12
-
13
-
14
- const Website = require('jsgui3-website');
15
-
16
- const Webpage_Bundler = require('../resources/processors/bundlers/webpage-bundler');
17
-
18
- // The webpage bundler - probably will be quite simple to the website bundler.
19
- // Think the webpage bundler should bundle static HTML content from the server into the bundle.
20
-
21
- // Better in general not to regenerate all HTML for each page request.
22
-
23
-
24
- const JS_Bundler = require('../resources/processors/bundlers/js-bundler');
25
-
26
-
27
- const Bundle = require('../resources/processors/bundlers/bundle');
28
-
29
- // Now it's the very basics of a website publisher. Quite flexible but could do with more.
30
- // Better integration with bundler
31
- // Rendering webpages that are dynamic and therefore not bundled (eg user specific content).
32
- // Though the js could be bundled. Maybe some of the controls could be bundled? Or semi-bundled?
33
-
34
- // HTTP_Webpage_Publisher could be interesting.
35
- // The Website Publisher could make use of some of its functionality.
36
-
37
-
38
- // Handling HTTP / bundling for a specific page could be cool.
39
-
40
- // A Webpage Publisher may be simpler and better to work on in the short term.
41
- // Maybe would not need to be (as) concerned with routing.
42
- // Could be useful for publishing a SPA of course, kind of a website but as a single page.
43
-
44
- // This seems more like the server router these days
45
- // The main server router seems to pass everything to this - maybe that will change.
46
-
47
- // Maybe give it some kind of Website_Server????
48
-
49
- // Have the Website_Server use the Website_Publisher????
50
-
51
- // Need to somewhat separate concerns.
52
-
53
- // Publisher here could be simple in terms of bundling, and then giving the paths to the router.
54
- // And could have really simple code implementation of doing just that.
55
-
56
- // This basically can be simple....
57
- // But make the classes' structures more complicated where necessary to accommodate.
58
-
59
-
60
- // Could be just a few lines of logic probably, at least the simplest core implementation.
61
-
62
- // Think the server or the website already has a router, so have the website resource's router do the routing.
63
- // Maybe upgrade the routers to handle premade (compressed) responses.
64
-
65
- // Maybe better to bundle and publish resources.
66
- // resource-processors in its own dir?
67
- // as in it's not actually part of resources?
68
-
69
-
70
-
71
-
72
- // Need to basically make this do very little.
73
-
74
- // Publish (website, server_router)
75
-
76
-
77
- // Or publish it only under some URLs / domains....?
78
-
79
-
80
-
81
-
82
-
83
-
84
- // Probably is worth by default having it use the HTTP_Website_Publisher with really simple server setups.
85
-
86
-
87
- // Extend HTTP_Web_Item_Publisher HTTP_Web_Page_Or_Site_Publisher (synonym) ????
88
-
89
- // Share functionality between webpage and website where useful.
90
-
91
-
92
-
93
-
94
-
95
- class HTTP_Webpageorsite_Publisher extends HTTP_Publisher {
96
-
97
- constructor(spec) {
98
- super(spec);
99
-
100
- if (spec.debug !== undefined) this.debug = spec.debug;
101
-
102
- // But then some properties to do with the js client(s?) file path.
103
-
104
- // This should be fairly simple in terms of making use of the bundler, then providing the server (maybe the router component)
105
- // with the content to serve.
106
-
107
- // js_client_file_path ??? client_js_file_path???
108
-
109
- let src_path_client_js;
110
- if (spec.disk_path_client_js) {
111
- src_path_client_js = spec.disk_path_client_js;
112
- } else if (spec.src_path_client_js) {
113
- src_path_client_js = spec.src_path_client_js;
114
- } else if (spec.source_path_client_js) {
115
- src_path_client_js = spec.source_path_client_js;
116
- };
117
-
118
- // or src_path_client_js as well...
119
-
120
- Object.defineProperty(this, 'disk_path_client_js', {get: () => src_path_client_js, set: (value) => src_path_client_js = value});
121
- Object.defineProperty(this, 'src_path_client_js', {get: () => src_path_client_js, set: (value) => src_path_client_js = value});
122
- Object.defineProperty(this, 'source_path_client_js', {get: () => src_path_client_js, set: (value) => src_path_client_js = value});
123
-
124
-
125
- // But then need to have some things that get it ready on this level...
126
-
127
- // Maybe need a get_ready (async or obs) function....
128
-
129
- this.js_bundler = new JS_Bundler({
130
- 'debug': this.debug || false
131
- });
132
-
133
-
134
- }
135
-
136
- async get_ready() {
137
-
138
- const {js_bundler} = this;
139
- //await super.get_ready(); // Does not have one
140
-
141
- // Then bundle (extract (process) everything in and referenced by the JS file (s) into a bundle object)
142
- // Maybe that bundle object will contain some (static) routing instructions.
143
-
144
- // The publisher could provide the server with a set of static routing instructions.
145
- // A (simple) Static_Routing_Instructions class could be helpful, and then could be extended, swapped, optimised etc.
146
-
147
- // HTTP_Static_Routing_Instructions even.
148
- // Want simple code, but have it neatly wrap existing class / standard JS object. Eg facade around array even.
149
- // A type of server input or server instruction or server(router) setting.
150
-
151
- console.log('web page or site async get_ready called');
152
-
153
-
154
- // Single js client for whole website??? Could work, not so sure.
155
- // Appropriate defalt setting (using v explicit classes) will help it to work.
156
-
157
-
158
-
159
- const {src_path_client_js} = this;
160
-
161
- //console.log('src_path_client_js', src_path_client_js);
162
-
163
-
164
- // The js_bundler may need to operate in 'debug' mode.
165
-
166
- const js_bundler_res = await js_bundler.bundle(src_path_client_js);
167
- // Should also get the CSS from it....
168
-
169
-
170
-
171
- //console.log('js_bundler_res', js_bundler_res);
172
-
173
- // Res of length 2 - with a css item and a js item.
174
- // js item (probably?) first.
175
-
176
- if (js_bundler_res.length === 1) {
177
- const bundle = js_bundler_res[0];
178
-
179
- const css_item = bundle._arr.find((item) => item.type === 'CSS');
180
- const js_item = bundle._arr.find((item) => item.type === 'JavaScript');
181
-
182
- if (css_item && js_item) {
183
-
184
- return bundle;
185
-
186
- // Let's but the HTML into the bundle too...
187
- // But could mark the bundle or the HTML saying it needs further preparation (reference or code inserts)
188
-
189
-
190
- // Should first include references to the CSS and JS in the HTML (Control(s))
191
-
192
-
193
-
194
- // generate (render) the HTML.
195
-
196
- // Though possibly the webpage publisher could take over....
197
-
198
-
199
-
200
-
201
-
202
-
203
-
204
- //console.trace();
205
- //throw 'stop';
206
-
207
-
208
- // Setting up a static '/' or main page....?
209
- // May want to make an object that describes / provides the code or controls to insert into every page
210
- // and to say where to do so.
211
-
212
- // May want further '/' single page or control server code, could have some classes named very specifically
213
- // for the cases we are dealing with.
214
-
215
-
216
-
217
-
218
-
219
-
220
-
221
-
222
-
223
- // Then get the publisher to use another bundler?
224
- // a Ready_To_Serve_Static_Items_Bundler perhaps?
225
-
226
- // Is best to do this a round-about way in terms of the classes, what they do, and having them interchangable, and
227
- // very explicit.
228
-
229
- // Maybe it could even make 'Server_Instructions'.
230
- // Being very explicit about the stages.
231
-
232
- // Maybe rename classes if they are too long and something shorter occurs.
233
-
234
- // System_That_Prepares_Bundles_Of_Just_A_Single_JS_File_And_A_Single_CSS_File_To_Be_Served_Statically
235
- // And_References_To_Them_Inserted_In_HTML_Control
236
-
237
-
238
- // Being mega-explicit about what gets done here will help integration of classes that do what other people would consider
239
- // better / ideal.
240
-
241
- // JS_And_CSS_Perpare_For_Service_Class
242
-
243
- // For the moment, make extremely specific classes for what the code is doing here.
244
-
245
- // Single_JS_And_Single_CSS_Bundle_To_Serve_Statically_Preparer.
246
- // And possibly a version that also creates instructions??? for what to do to the JSGUI control that would otherwise
247
- // be ready.
248
-
249
- // Want to move away from having somewhat complex things in the classes themselves that operate in assumed way.
250
- // Have some relatively complex things that only need to be done on the server really explicit.
251
- // However, also want classes to represent these things so the logic could run on the client.
252
-
253
- // Prepare the static service of the pages for the router.
254
-
255
- // Probably worth finding ways to best include them in the HTML first....
256
-
257
- // This part here is just getting ready to publish.
258
-
259
-
260
-
261
-
262
-
263
-
264
-
265
-
266
-
267
-
268
-
269
-
270
-
271
-
272
-
273
-
274
- // Preparers seem like they should be part of the Publishers dir structure / system.
275
-
276
-
277
-
278
-
279
-
280
-
281
-
282
-
283
-
284
-
285
-
286
-
287
-
288
-
289
-
290
- // or a Bundle_Preparer_Prepare_For_Static_Routes_Assignment ?????
291
-
292
-
293
-
294
- } else {
295
- console.trace();
296
- throw 'stop';
297
-
298
- }
299
-
300
-
301
-
302
- //console.trace();
303
- //throw 'stop';
304
-
305
- } else if (js_bundler_res._arr.length === 2) {
306
-
307
-
308
- console.trace();
309
- throw 'stop';
310
-
311
-
312
-
313
- } else {
314
- console.log('js_bundler_res', js_bundler_res);
315
- console.trace();
316
- throw 'stop';
317
- }
318
-
319
-
320
-
321
-
322
-
323
- console.trace();
324
- throw 'stop nyi';
325
-
326
-
327
-
328
-
329
-
330
-
331
-
332
-
333
-
334
-
335
-
336
-
337
- }
338
-
339
- }
340
-
341
-
342
- module.exports = HTTP_Webpageorsite_Publisher;
343
-
1
+
2
+
3
+
4
+ const {each, Router, tof} = require('jsgui3-html');
5
+ const HTTP_Publisher = require('./http-publisher');
6
+ const {obs} = require('fnl');
7
+
8
+ // The Webpage bundler should be able to come up with the compiled JS and CSS, maybe even a favicon.
9
+
10
+ // HTTP_Webpageorsite_Publisher
11
+
12
+
13
+
14
+ const Website = require('jsgui3-website');
15
+
16
+ const Webpage_Bundler = require('../resources/processors/bundlers/webpage-bundler');
17
+
18
+ // The webpage bundler - probably will be quite simple to the website bundler.
19
+ // Think the webpage bundler should bundle static HTML content from the server into the bundle.
20
+
21
+ // Better in general not to regenerate all HTML for each page request.
22
+
23
+
24
+ const JS_Bundler = require('../resources/processors/bundlers/js-bundler');
25
+
26
+
27
+ const Bundle = require('../resources/processors/bundlers/bundle');
28
+
29
+ // Now it's the very basics of a website publisher. Quite flexible but could do with more.
30
+ // Better integration with bundler
31
+ // Rendering webpages that are dynamic and therefore not bundled (eg user specific content).
32
+ // Though the js could be bundled. Maybe some of the controls could be bundled? Or semi-bundled?
33
+
34
+ // HTTP_Webpage_Publisher could be interesting.
35
+ // The Website Publisher could make use of some of its functionality.
36
+
37
+
38
+ // Handling HTTP / bundling for a specific page could be cool.
39
+
40
+ // A Webpage Publisher may be simpler and better to work on in the short term.
41
+ // Maybe would not need to be (as) concerned with routing.
42
+ // Could be useful for publishing a SPA of course, kind of a website but as a single page.
43
+
44
+ // This seems more like the server router these days
45
+ // The main server router seems to pass everything to this - maybe that will change.
46
+
47
+ // Maybe give it some kind of Website_Server????
48
+
49
+ // Have the Website_Server use the Website_Publisher????
50
+
51
+ // Need to somewhat separate concerns.
52
+
53
+ // Publisher here could be simple in terms of bundling, and then giving the paths to the router.
54
+ // And could have really simple code implementation of doing just that.
55
+
56
+ // This basically can be simple....
57
+ // But make the classes' structures more complicated where necessary to accommodate.
58
+
59
+
60
+ // Could be just a few lines of logic probably, at least the simplest core implementation.
61
+
62
+ // Think the server or the website already has a router, so have the website resource's router do the routing.
63
+ // Maybe upgrade the routers to handle premade (compressed) responses.
64
+
65
+ // Maybe better to bundle and publish resources.
66
+ // resource-processors in its own dir?
67
+ // as in it's not actually part of resources?
68
+
69
+
70
+
71
+
72
+ // Need to basically make this do very little.
73
+
74
+ // Publish (website, server_router)
75
+
76
+
77
+ // Or publish it only under some URLs / domains....?
78
+
79
+
80
+
81
+
82
+
83
+
84
+ // Probably is worth by default having it use the HTTP_Website_Publisher with really simple server setups.
85
+
86
+
87
+ // Extend HTTP_Web_Item_Publisher HTTP_Web_Page_Or_Site_Publisher (synonym) ????
88
+
89
+ // Share functionality between webpage and website where useful.
90
+
91
+
92
+
93
+
94
+
95
+ class HTTP_Webpageorsite_Publisher extends HTTP_Publisher {
96
+
97
+ constructor(spec) {
98
+ super(spec);
99
+
100
+ if (spec.debug !== undefined) this.debug = spec.debug;
101
+
102
+ // But then some properties to do with the js client(s?) file path.
103
+
104
+ // This should be fairly simple in terms of making use of the bundler, then providing the server (maybe the router component)
105
+ // with the content to serve.
106
+
107
+ // js_client_file_path ??? client_js_file_path???
108
+
109
+ let src_path_client_js;
110
+ if (spec.disk_path_client_js) {
111
+ src_path_client_js = spec.disk_path_client_js;
112
+ } else if (spec.src_path_client_js) {
113
+ src_path_client_js = spec.src_path_client_js;
114
+ } else if (spec.source_path_client_js) {
115
+ src_path_client_js = spec.source_path_client_js;
116
+ };
117
+
118
+ // or src_path_client_js as well...
119
+
120
+ Object.defineProperty(this, 'disk_path_client_js', {get: () => src_path_client_js, set: (value) => src_path_client_js = value});
121
+ Object.defineProperty(this, 'src_path_client_js', {get: () => src_path_client_js, set: (value) => src_path_client_js = value});
122
+ Object.defineProperty(this, 'source_path_client_js', {get: () => src_path_client_js, set: (value) => src_path_client_js = value});
123
+
124
+
125
+ // But then need to have some things that get it ready on this level...
126
+
127
+ // Maybe need a get_ready (async or obs) function....
128
+
129
+ this.js_bundler = new JS_Bundler({
130
+ 'debug': this.debug || false
131
+ });
132
+
133
+
134
+ }
135
+
136
+ async get_ready() {
137
+
138
+ const {js_bundler} = this;
139
+ //await super.get_ready(); // Does not have one
140
+
141
+ // Then bundle (extract (process) everything in and referenced by the JS file (s) into a bundle object)
142
+ // Maybe that bundle object will contain some (static) routing instructions.
143
+
144
+ // The publisher could provide the server with a set of static routing instructions.
145
+ // A (simple) Static_Routing_Instructions class could be helpful, and then could be extended, swapped, optimised etc.
146
+
147
+ // HTTP_Static_Routing_Instructions even.
148
+ // Want simple code, but have it neatly wrap existing class / standard JS object. Eg facade around array even.
149
+ // A type of server input or server instruction or server(router) setting.
150
+
151
+ console.log('web page or site async get_ready called');
152
+
153
+
154
+ // Single js client for whole website??? Could work, not so sure.
155
+ // Appropriate defalt setting (using v explicit classes) will help it to work.
156
+
157
+
158
+
159
+ const {src_path_client_js} = this;
160
+
161
+ //console.log('src_path_client_js', src_path_client_js);
162
+
163
+
164
+ // The js_bundler may need to operate in 'debug' mode.
165
+
166
+ const js_bundler_res = await js_bundler.bundle(src_path_client_js);
167
+ // Should also get the CSS from it....
168
+
169
+
170
+
171
+ //console.log('js_bundler_res', js_bundler_res);
172
+
173
+ // Res of length 2 - with a css item and a js item.
174
+ // js item (probably?) first.
175
+
176
+ if (js_bundler_res.length === 1) {
177
+ const bundle = js_bundler_res[0];
178
+
179
+ const css_item = bundle._arr.find((item) => item.type === 'CSS');
180
+ const js_item = bundle._arr.find((item) => item.type === 'JavaScript');
181
+
182
+ if (css_item && js_item) {
183
+
184
+ return bundle;
185
+
186
+ // Let's but the HTML into the bundle too...
187
+ // But could mark the bundle or the HTML saying it needs further preparation (reference or code inserts)
188
+
189
+
190
+ // Should first include references to the CSS and JS in the HTML (Control(s))
191
+
192
+
193
+
194
+ // generate (render) the HTML.
195
+
196
+ // Though possibly the webpage publisher could take over....
197
+
198
+
199
+
200
+
201
+
202
+
203
+
204
+ //console.trace();
205
+ //throw 'stop';
206
+
207
+
208
+ // Setting up a static '/' or main page....?
209
+ // May want to make an object that describes / provides the code or controls to insert into every page
210
+ // and to say where to do so.
211
+
212
+ // May want further '/' single page or control server code, could have some classes named very specifically
213
+ // for the cases we are dealing with.
214
+
215
+
216
+
217
+
218
+
219
+
220
+
221
+
222
+
223
+ // Then get the publisher to use another bundler?
224
+ // a Ready_To_Serve_Static_Items_Bundler perhaps?
225
+
226
+ // Is best to do this a round-about way in terms of the classes, what they do, and having them interchangable, and
227
+ // very explicit.
228
+
229
+ // Maybe it could even make 'Server_Instructions'.
230
+ // Being very explicit about the stages.
231
+
232
+ // Maybe rename classes if they are too long and something shorter occurs.
233
+
234
+ // System_That_Prepares_Bundles_Of_Just_A_Single_JS_File_And_A_Single_CSS_File_To_Be_Served_Statically
235
+ // And_References_To_Them_Inserted_In_HTML_Control
236
+
237
+
238
+ // Being mega-explicit about what gets done here will help integration of classes that do what other people would consider
239
+ // better / ideal.
240
+
241
+ // JS_And_CSS_Perpare_For_Service_Class
242
+
243
+ // For the moment, make extremely specific classes for what the code is doing here.
244
+
245
+ // Single_JS_And_Single_CSS_Bundle_To_Serve_Statically_Preparer.
246
+ // And possibly a version that also creates instructions??? for what to do to the JSGUI control that would otherwise
247
+ // be ready.
248
+
249
+ // Want to move away from having somewhat complex things in the classes themselves that operate in assumed way.
250
+ // Have some relatively complex things that only need to be done on the server really explicit.
251
+ // However, also want classes to represent these things so the logic could run on the client.
252
+
253
+ // Prepare the static service of the pages for the router.
254
+
255
+ // Probably worth finding ways to best include them in the HTML first....
256
+
257
+ // This part here is just getting ready to publish.
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+
272
+
273
+
274
+ // Preparers seem like they should be part of the Publishers dir structure / system.
275
+
276
+
277
+
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+
286
+
287
+
288
+
289
+
290
+ // or a Bundle_Preparer_Prepare_For_Static_Routes_Assignment ?????
291
+
292
+
293
+
294
+ } else {
295
+ console.trace();
296
+ throw 'stop';
297
+
298
+ }
299
+
300
+
301
+
302
+ //console.trace();
303
+ //throw 'stop';
304
+
305
+ } else if (js_bundler_res._arr.length === 2) {
306
+
307
+
308
+ console.trace();
309
+ throw 'stop';
310
+
311
+
312
+
313
+ } else {
314
+ console.log('js_bundler_res', js_bundler_res);
315
+ console.trace();
316
+ throw 'stop';
317
+ }
318
+
319
+
320
+
321
+
322
+
323
+ console.trace();
324
+ throw 'stop nyi';
325
+
326
+
327
+
328
+
329
+
330
+
331
+
332
+
333
+
334
+
335
+
336
+
337
+ }
338
+
339
+ }
340
+
341
+
342
+ module.exports = HTTP_Webpageorsite_Publisher;
343
+