@jsenv/core 26.0.1 → 27.0.0-alpha.10

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 (465) hide show
  1. package/main.js +17 -24
  2. package/package.json +35 -71
  3. package/readme.md +30 -37
  4. package/src/build/build.js +867 -0
  5. package/src/build/build_urls_generator.js +73 -0
  6. package/src/build/inject_service_worker_urls.js +25 -0
  7. package/src/build/inject_version_mappings.js +63 -0
  8. package/src/build/plugins/bundle_js_module/jsenv_plugin_bundle_js_module.js +227 -0
  9. package/src/build/plugins/minify_html/jsenv_plugin_minify_html.js +30 -0
  10. package/src/build/plugins/minify_js/jsenv_plugin_minify_js.js +47 -0
  11. package/src/dev/plugins/autoreload/babel_plugin_metadata_import_meta_hot.js +98 -0
  12. package/src/dev/plugins/autoreload/client/autoreload_preference.js +11 -0
  13. package/src/dev/plugins/autoreload/client/event_source_client.js +186 -0
  14. package/src/{internal/dev_server/event_source_client → dev/plugins/autoreload/client}/event_source_connection.js +21 -25
  15. package/src/dev/plugins/autoreload/client/import_meta_hot.js +80 -0
  16. package/src/dev/plugins/autoreload/client/reload.js +101 -0
  17. package/src/dev/plugins/autoreload/client/url_helpers.js +20 -0
  18. package/src/dev/plugins/autoreload/html_hot_dependencies.js +156 -0
  19. package/src/dev/plugins/autoreload/jsenv_plugin_autoreload.js +374 -0
  20. package/src/dev/plugins/autoreload/sse_service.js +149 -0
  21. package/src/dev/plugins/explorer/client/explorer.html +607 -0
  22. package/src/{internal → dev/plugins/explorer/client}/jsenv.png +0 -0
  23. package/src/dev/plugins/explorer/jsenv_plugin_explorer.js +74 -0
  24. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/animation/toolbar_animation.js +0 -0
  25. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/eventsource/eventsource.css +2 -2
  26. package/src/dev/plugins/toolbar/client/eventsource/toolbar_eventsource.js +57 -0
  27. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/execution/execution.css +0 -0
  28. package/src/dev/plugins/toolbar/client/execution/toolbar_execution.js +88 -0
  29. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/focus/focus.css +0 -0
  30. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/focus/toolbar_focus.js +0 -0
  31. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/jsenv_logo.svg +0 -0
  32. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/notification/toolbar_notification.js +0 -0
  33. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/responsive/overflow_menu.css +0 -0
  34. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/responsive/toolbar_responsive.js +0 -0
  35. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/settings/settings.css +0 -0
  36. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/settings/toolbar_settings.js +1 -0
  37. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/theme/jsenv_theme.css +1 -15
  38. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/theme/light_theme.css +0 -17
  39. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/theme/toolbar_theme.js +0 -0
  40. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/toolbar.html +40 -199
  41. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/toolbar_injector.js +8 -28
  42. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/toolbar_main.css +0 -24
  43. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/toolbar_main.js +10 -56
  44. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/tooltip/tooltip.css +1 -1
  45. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/tooltip/tooltip.js +0 -0
  46. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/animation.js +0 -0
  47. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/dom.js +0 -0
  48. package/src/{internal/browser_utils → dev/plugins/toolbar/client/util}/fetch_using_xhr.js +0 -0
  49. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/fetching.js +2 -4
  50. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/iframe_to_parent_href.js +0 -0
  51. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/jsenv_logger.js +0 -0
  52. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/preferences.js +0 -0
  53. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/responsive.js +0 -0
  54. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/util.js +0 -0
  55. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/variant/variant.js +0 -0
  56. package/src/dev/plugins/toolbar/jsenv_plugin_toolbar.js +62 -0
  57. package/src/dev/start_dev_server.js +108 -0
  58. package/src/execute/execute.js +138 -0
  59. package/src/execute/run.js +208 -0
  60. package/src/execute/runtimes/browsers/chromium.js +8 -0
  61. package/src/execute/runtimes/browsers/firefox.js +7 -0
  62. package/src/execute/runtimes/browsers/from_playwright.js +464 -0
  63. package/src/{browser_runtimes.js → execute/runtimes/browsers/webkit.js} +4 -18
  64. package/src/{internal/node_launcher/child_process_options.js → execute/runtimes/node/child_exec_options.js} +25 -36
  65. package/src/{internal/node_launcher/node_controllable_file.mjs → execute/runtimes/node/controllable_file.mjs} +1 -18
  66. package/src/{internal/node_launcher/node_controllable_process.js → execute/runtimes/node/controlled_process.js} +128 -150
  67. package/src/execute/runtimes/node/exec_options.js +44 -0
  68. package/src/{internal/node_launcher → execute/runtimes/node}/kill_process_tree.js +3 -1
  69. package/src/execute/runtimes/node/node_process.js +92 -0
  70. package/src/execute/runtimes/node/node_worker_thread.js +28 -0
  71. package/src/omega/core_plugins/babel/global_this/babel_plugin_global_this_as_jsenv_import.js +35 -0
  72. package/{helpers/global-this/global-this.js → src/omega/core_plugins/babel/global_this/client/global_this.js} +0 -0
  73. package/src/{internal/compile_server/js → omega/core_plugins/babel/helpers}/babel_plugin_babel_helpers_as_jsenv_imports.js +15 -20
  74. package/src/omega/core_plugins/babel/helpers/babel_plugin_structure.js +176 -0
  75. package/src/{internal/features → omega/core_plugins/babel/helpers}/babel_plugins_compatibility.js +1 -24
  76. package/src/omega/core_plugins/babel/jsenv_plugin_babel.js +111 -0
  77. package/src/omega/core_plugins/babel/new_stylesheet/babel_plugin_new_stylesheet_as_jsenv_import.js +117 -0
  78. package/{helpers/babel → src/omega/core_plugins/babel/new_stylesheet/client}/.eslintrc.cjs +1 -1
  79. package/{helpers/new_stylesheet → src/omega/core_plugins/babel/new_stylesheet/client}/new_stylesheet.js +0 -0
  80. package/src/omega/core_plugins/babel/regenerator_runtime/babel_plugin_regenerator_runtime_as_jsenv_import.js +34 -0
  81. package/{helpers/regenerator-runtime/regenerator-runtime.js → src/omega/core_plugins/babel/regenerator_runtime/client/regenerator_runtime.js} +0 -0
  82. package/src/omega/core_plugins/commonjs_globals/jsenv_plugin_commonjs_globals.js +169 -0
  83. package/src/omega/core_plugins/file_urls/jsenv_plugin_file_urls.js +67 -0
  84. package/src/omega/core_plugins/filesystem_magic/jsenv_plugin_filesystem_magic.js +58 -0
  85. package/src/{internal/browser_client → omega/core_plugins/html_supervisor/client}/error_in_document.js +10 -16
  86. package/src/{internal/browser_client → omega/core_plugins/html_supervisor/client}/error_in_notification.js +0 -0
  87. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_installer.js +168 -0
  88. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_setup.js +77 -0
  89. package/src/{internal/browser_client → omega/core_plugins/html_supervisor/client}/perf_browser.js +0 -0
  90. package/src/{internal/runtime_client → omega/core_plugins/html_supervisor/client}/uneval_exception.js +0 -0
  91. package/src/omega/core_plugins/html_supervisor/jsenv_plugin_html_supervisor.js +233 -0
  92. package/src/omega/core_plugins/import_assertions/helpers/babel_plugin_metadata_import_assertions.js +98 -0
  93. package/src/{internal/building/import_assertions → omega/core_plugins/import_assertions/helpers}/json_module.js +3 -2
  94. package/src/omega/core_plugins/import_assertions/helpers/text_module.js +6 -0
  95. package/src/omega/core_plugins/import_assertions/jsenv_plugin_import_assertions.js +211 -0
  96. package/src/omega/core_plugins/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +90 -0
  97. package/src/omega/core_plugins/importmap/jsenv_plugin_importmap.js +212 -0
  98. package/src/omega/core_plugins/inject_globals/jsenv_plugin_inject_globals.js +27 -0
  99. package/src/omega/core_plugins/inline/client/inline_content.js +6 -0
  100. package/src/omega/core_plugins/inline/jsenv_plugin_data_urls.js +70 -0
  101. package/src/omega/core_plugins/inline/jsenv_plugin_inline.js +13 -0
  102. package/src/omega/core_plugins/inline/jsenv_plugin_inline_query_param.js +42 -0
  103. package/src/omega/core_plugins/inline/jsenv_plugin_js_and_css_inside_html.js +142 -0
  104. package/src/omega/core_plugins/inline/jsenv_plugin_new_inline_content.js +207 -0
  105. package/src/omega/core_plugins/leading_slash/jsenv_plugin_leading_slash.js +12 -0
  106. package/src/omega/core_plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +77 -0
  107. package/src/omega/core_plugins/url_resolution/jsenv_plugin_url_resolution.js +28 -0
  108. package/src/omega/core_plugins/url_version/jsenv_plugin_url_version.js +50 -0
  109. package/src/omega/core_plugins.js +42 -0
  110. package/src/omega/errors.js +168 -0
  111. package/src/omega/file_url_converter.js +21 -0
  112. package/src/omega/kitchen.js +776 -0
  113. package/src/omega/omega_server.js +129 -0
  114. package/src/omega/plugin_controller.js +240 -0
  115. package/src/omega/runtime_support/default_runtime_support.js +13 -0
  116. package/src/omega/runtime_support/features_compatibility.js +130 -0
  117. package/src/omega/runtime_support/runtime_support.js +52 -0
  118. package/src/omega/server/file_service.js +155 -0
  119. package/src/omega/server/user_agent.js +22 -0
  120. package/src/omega/url_graph/url_graph_load.js +69 -0
  121. package/src/omega/url_graph/url_graph_report.js +151 -0
  122. package/src/omega/url_graph/url_graph_sort.js +29 -0
  123. package/src/omega/url_graph/url_info_transformations.js +161 -0
  124. package/src/omega/url_graph.js +133 -0
  125. package/src/omega/url_mentions/css_url_mentions.js +63 -0
  126. package/src/omega/url_mentions/html_url_mentions.js +185 -0
  127. package/src/omega/url_mentions/js_module_url_mentions.js +91 -0
  128. package/src/omega/url_mentions/parse_url_mentions.js +37 -0
  129. package/src/omega/url_mentions/worker_classic_url_mentions.js +37 -0
  130. package/src/{internal/executing → test}/execute_plan.js +156 -211
  131. package/src/{execute_test_plan.js → test/execute_test_plan.js} +36 -81
  132. package/src/{internal/executing → test}/execution_colors.js +0 -0
  133. package/src/{internal/executing → test}/execution_steps.js +2 -8
  134. package/src/{internal/executing → test}/gc.js +0 -0
  135. package/src/test/logs_file_execution.js +223 -0
  136. package/dist/browser_client/asset-manifest.json +0 -4
  137. package/dist/browser_client/browser_client_fb33eaa4.js +0 -5320
  138. package/dist/browser_client/browser_client_fb33eaa4.js.map +0 -1089
  139. package/dist/build_manifest.js +0 -12
  140. package/dist/compile_proxy/asset-manifest.json +0 -4
  141. package/dist/compile_proxy/compile_proxy.html__inline__20_651d1e7b.js.map +0 -343
  142. package/dist/compile_proxy/compile_proxy_62f952c4.html +0 -2245
  143. package/dist/event_source_client/asset-manifest.json +0 -4
  144. package/dist/event_source_client/event_source_client_69f48287.js +0 -354
  145. package/dist/event_source_client/event_source_client_69f48287.js.map +0 -128
  146. package/dist/redirector/asset-manifest.json +0 -4
  147. package/dist/redirector/redirector.html__inline__12_171e07b4.js.map +0 -349
  148. package/dist/redirector/redirector_8117ec92.html +0 -2290
  149. package/dist/toolbar/asset-manifest.json +0 -13
  150. package/dist/toolbar/assets/compilation.css_7421bd55.map +0 -12
  151. package/dist/toolbar/assets/eventsource.css_c0c71e7b.map +0 -12
  152. package/dist/toolbar/assets/execution.css_f3377c10.map +0 -12
  153. package/dist/toolbar/assets/focus.css_896f3e45.map +0 -12
  154. package/dist/toolbar/assets/light_theme.css_5bff0336.map +0 -12
  155. package/dist/toolbar/assets/overflow_menu.css_9a0fc3d8.map +0 -12
  156. package/dist/toolbar/assets/settings.css_942b5a9e.map +0 -12
  157. package/dist/toolbar/assets/toolbar_main.css_b1c67dd7.map +0 -28
  158. package/dist/toolbar/assets/tooltip.css_a94a8bdd.map +0 -12
  159. package/dist/toolbar/toolbar_b0c9100c.html +0 -4976
  160. package/dist/toolbar/toolbar_main_f54c1bb0.js.map +0 -776
  161. package/dist/toolbar_injector/asset-manifest.json +0 -5
  162. package/dist/toolbar_injector/assets/jsenv_logo_192011c2.svg +0 -95
  163. package/dist/toolbar_injector/toolbar_injector_65b501eb.js +0 -976
  164. package/dist/toolbar_injector/toolbar_injector_65b501eb.js.map +0 -294
  165. package/helpers/babel/AsyncGenerator/AsyncGenerator.js +0 -81
  166. package/helpers/babel/AwaitValue/AwaitValue.js +0 -3
  167. package/helpers/babel/applyDecoratorDescriptor/applyDecoratorDescriptor.js +0 -33
  168. package/helpers/babel/arrayLikeToArray/arrayLikeToArray.js +0 -7
  169. package/helpers/babel/arrayWithHoles/arrayWithHoles.js +0 -4
  170. package/helpers/babel/arrayWithoutHoles/arrayWithoutHoles.js +0 -6
  171. package/helpers/babel/assertThisInitialized/assertThisInitialized.js +0 -7
  172. package/helpers/babel/asyncGeneratorDelegate/asyncGeneratorDelegate.js +0 -40
  173. package/helpers/babel/asyncIterator/asyncIterator.js +0 -65
  174. package/helpers/babel/asyncToGenerator/asyncToGenerator.js +0 -34
  175. package/helpers/babel/awaitAsyncGenerator/awaitAsyncGenerator.js +0 -5
  176. package/helpers/babel/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +0 -20
  177. package/helpers/babel/classApplyDescriptorGet/classApplyDescriptorGet.js +0 -6
  178. package/helpers/babel/classApplyDescriptorSet/classApplyDescriptorSet.js +0 -13
  179. package/helpers/babel/classCallCheck/classCallCheck.js +0 -5
  180. package/helpers/babel/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +0 -5
  181. package/helpers/babel/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +0 -6
  182. package/helpers/babel/classExtractFieldDescriptor/classExtractFieldDescriptor.js +0 -7
  183. package/helpers/babel/classNameTDZError/classNameTDZError.js +0 -4
  184. package/helpers/babel/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +0 -7
  185. package/helpers/babel/classPrivateFieldGet/classPrivateFieldGet.js +0 -7
  186. package/helpers/babel/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +0 -6
  187. package/helpers/babel/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +0 -5
  188. package/helpers/babel/classPrivateFieldSet/classPrivateFieldSet.js +0 -8
  189. package/helpers/babel/classPrivateMethodGet/classPrivateMethodGet.js +0 -6
  190. package/helpers/babel/classPrivateMethodSet/classPrivateMethodSet.js +0 -3
  191. package/helpers/babel/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +0 -9
  192. package/helpers/babel/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +0 -15
  193. package/helpers/babel/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +0 -6
  194. package/helpers/babel/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +0 -3
  195. package/helpers/babel/construct/construct.js +0 -16
  196. package/helpers/babel/createClass/createClass.js +0 -15
  197. package/helpers/babel/createForOfIteratorHelper/createForOfIteratorHelper.js +0 -60
  198. package/helpers/babel/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +0 -23
  199. package/helpers/babel/createRawReactElement/createRawReactElement.js +0 -50
  200. package/helpers/babel/createSuper/createSuper.js +0 -22
  201. package/helpers/babel/decorate/decorate.js +0 -403
  202. package/helpers/babel/defaults/defaults.js +0 -11
  203. package/helpers/babel/defineEnumerableProperties/defineEnumerableProperties.js +0 -23
  204. package/helpers/babel/defineProperty/defineProperty.js +0 -18
  205. package/helpers/babel/extends/extends.js +0 -14
  206. package/helpers/babel/get/get.js +0 -19
  207. package/helpers/babel/getPrototypeOf/getPrototypeOf.js +0 -4
  208. package/helpers/babel/inherits/inherits.js +0 -19
  209. package/helpers/babel/inheritsLoose/inheritsLoose.js +0 -7
  210. package/helpers/babel/initializerDefineProperty/initializerDefineProperty.js +0 -10
  211. package/helpers/babel/initializerWarningHelper/initializerWarningHelper.js +0 -6
  212. package/helpers/babel/instanceof/instanceof.js +0 -6
  213. package/helpers/babel/interopRequireDefault/interopRequireDefault.js +0 -3
  214. package/helpers/babel/interopRequireWildcard/interopRequireWildcard.js +0 -37
  215. package/helpers/babel/isNativeFunction/isNativeFunction.js +0 -4
  216. package/helpers/babel/isNativeReflectConstruct/isNativeReflectConstruct.js +0 -21
  217. package/helpers/babel/iterableToArray/iterableToArray.js +0 -7
  218. package/helpers/babel/iterableToArrayLimit/iterableToArrayLimit.js +0 -36
  219. package/helpers/babel/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +0 -10
  220. package/helpers/babel/jsx/jsx.js +0 -50
  221. package/helpers/babel/maybeArrayLike/maybeArrayLike.js +0 -10
  222. package/helpers/babel/newArrowCheck/newArrowCheck.js +0 -5
  223. package/helpers/babel/nonIterableRest/nonIterableRest.js +0 -5
  224. package/helpers/babel/nonIterableSpread/nonIterableSpread.js +0 -5
  225. package/helpers/babel/objectDestructuringEmpty/objectDestructuringEmpty.js +0 -3
  226. package/helpers/babel/objectSpread/objectSpread.js +0 -23
  227. package/helpers/babel/objectSpread2/objectSpread2.js +0 -41
  228. package/helpers/babel/objectWithoutProperties/objectWithoutProperties.js +0 -19
  229. package/helpers/babel/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +0 -13
  230. package/helpers/babel/possibleConstructorReturn/possibleConstructorReturn.js +0 -10
  231. package/helpers/babel/readOnlyError/readOnlyError.js +0 -4
  232. package/helpers/babel/readme.md +0 -8
  233. package/helpers/babel/set/set.js +0 -44
  234. package/helpers/babel/setPrototypeOf/setPrototypeOf.js +0 -6
  235. package/helpers/babel/skipFirstGeneratorNext/skipFirstGeneratorNext.js +0 -8
  236. package/helpers/babel/slicedToArray/slicedToArray.js +0 -10
  237. package/helpers/babel/slicedToArrayLoose/slicedToArrayLoose.js +0 -13
  238. package/helpers/babel/superPropBase/superPropBase.js +0 -10
  239. package/helpers/babel/taggedTemplateLiteral/taggedTemplateLiteral.js +0 -10
  240. package/helpers/babel/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +0 -7
  241. package/helpers/babel/tdz/tdz.js +0 -4
  242. package/helpers/babel/temporalRef/temporalRef.js +0 -6
  243. package/helpers/babel/temporalUndefined/temporalUndefined.js +0 -3
  244. package/helpers/babel/toArray/toArray.js +0 -10
  245. package/helpers/babel/toConsumableArray/toConsumableArray.js +0 -10
  246. package/helpers/babel/toPrimitive/toPrimitive.js +0 -10
  247. package/helpers/babel/toPropertyKey/toPropertyKey.js +0 -6
  248. package/helpers/babel/typeof/typeof.js +0 -14
  249. package/helpers/babel/unsupportedIterableToArray/unsupportedIterableToArray.js +0 -12
  250. package/helpers/babel/wrapAsyncGenerator/wrapAsyncGenerator.js +0 -8
  251. package/helpers/babel/wrapNativeSuper/wrapNativeSuper.js +0 -30
  252. package/helpers/babel/wrapRegExp/wrapRegExp.js +0 -63
  253. package/helpers/babel/writeOnlyError/writeOnlyError.js +0 -4
  254. package/helpers/import-meta/import-meta-url-commonjs.js +0 -9
  255. package/helpers/import-meta/import-meta-url-global.js +0 -54
  256. package/src/build_project.js +0 -336
  257. package/src/commonjs_to_js_module.js +0 -180
  258. package/src/dev_server.js +0 -302
  259. package/src/execute.js +0 -184
  260. package/src/import_using_child_process.js +0 -68
  261. package/src/internal/browser_client/browser_client.js +0 -220
  262. package/src/internal/browser_client/browser_client_factory.js +0 -144
  263. package/src/internal/browser_client/browser_error_stack_remap.js +0 -43
  264. package/src/internal/browser_client/browser_system.js +0 -216
  265. package/src/internal/browser_client/module_namespace_transfer.js +0 -90
  266. package/src/internal/browser_detection/browser_detection.js +0 -65
  267. package/src/internal/browser_detection/detect_android.js +0 -13
  268. package/src/internal/browser_detection/detect_chrome.js +0 -28
  269. package/src/internal/browser_detection/detect_edge.js +0 -13
  270. package/src/internal/browser_detection/detect_electron.js +0 -1
  271. package/src/internal/browser_detection/detect_firefox.js +0 -17
  272. package/src/internal/browser_detection/detect_internet_explorer.js +0 -14
  273. package/src/internal/browser_detection/detect_ios.js +0 -19
  274. package/src/internal/browser_detection/detect_opera.js +0 -27
  275. package/src/internal/browser_detection/detect_safari.js +0 -13
  276. package/src/internal/browser_detection/user_agent_data.js +0 -25
  277. package/src/internal/browser_detection/util.js +0 -13
  278. package/src/internal/browser_launcher/browser_runtime_profile.js +0 -81
  279. package/src/internal/browser_launcher/execute_html_file.js +0 -355
  280. package/src/internal/browser_launcher/from_playwright.js +0 -320
  281. package/src/internal/browser_launcher/page_errors_and_logs.js +0 -77
  282. package/src/internal/browser_utils/fetch_and_eval.js +0 -27
  283. package/src/internal/browser_utils/fetch_and_eval_using_script.js +0 -47
  284. package/src/internal/browser_utils/fetch_browser.js +0 -34
  285. package/src/internal/browser_utils/fetch_json.js +0 -7
  286. package/src/internal/building/build_logs.js +0 -134
  287. package/src/internal/building/build_stats.js +0 -100
  288. package/src/internal/building/build_url_generator.js +0 -153
  289. package/src/internal/building/build_using_rollup.js +0 -359
  290. package/src/internal/building/css/apply_post_css.js +0 -55
  291. package/src/internal/building/css/jsenv_parse_css.js +0 -260
  292. package/src/internal/building/css/move_css_urls.js +0 -44
  293. package/src/internal/building/css/parse_css_urls.js +0 -38
  294. package/src/internal/building/css/postcss_plugin_url_visitor.js +0 -245
  295. package/src/internal/building/css/replace_css_urls.js +0 -68
  296. package/src/internal/building/global_format/es_to_system.js +0 -34
  297. package/src/internal/building/html/html_node_mutations.js +0 -29
  298. package/src/internal/building/html/html_scan.js +0 -70
  299. package/src/internal/building/html/jsenv_parse_html.js +0 -813
  300. package/src/internal/building/html/minify_html.js +0 -7
  301. package/src/internal/building/import_assertions/css_module.js +0 -43
  302. package/src/internal/building/import_references.js +0 -80
  303. package/src/internal/building/importmap/jsenv_parse_importmap.js +0 -28
  304. package/src/internal/building/js/babel_plugin_inline_worker_imports.js +0 -96
  305. package/src/internal/building/js/jsenv_parse_js.js +0 -122
  306. package/src/internal/building/js/minify_js.js +0 -33
  307. package/src/internal/building/js/transform_worker.js +0 -55
  308. package/src/internal/building/json/jsenv_parse_json.js +0 -11
  309. package/src/internal/building/parse_ressource.js +0 -207
  310. package/src/internal/building/ressource_builder.js +0 -1098
  311. package/src/internal/building/ressource_builder_util.js +0 -194
  312. package/src/internal/building/rollup_plugin_jsenv.js +0 -1965
  313. package/src/internal/building/sort_pathnames.js +0 -10
  314. package/src/internal/building/sourcemap/sourcemap_loader.js +0 -70
  315. package/src/internal/building/svg/jsenv_parse_svg.js +0 -112
  316. package/src/internal/building/url_fetcher.js +0 -85
  317. package/src/internal/building/url_loader.js +0 -127
  318. package/src/internal/building/url_trace.js +0 -229
  319. package/src/internal/building/url_versioning/resolve_import_url_helper.js +0 -12
  320. package/src/internal/building/url_versioning/url_versioning.js +0 -65
  321. package/src/internal/building/webmanifest/jsenv_parse_webmanifest.js +0 -48
  322. package/src/internal/compile_server/commonjs/rollup_plugin_commonjs_named_exports.js +0 -187
  323. package/src/internal/compile_server/compile_file.js +0 -273
  324. package/src/internal/compile_server/compile_server.js +0 -519
  325. package/src/internal/compile_server/compiled_file_service.js +0 -264
  326. package/src/internal/compile_server/html/html_ast.js +0 -534
  327. package/src/internal/compile_server/html/html_source_file_service.js +0 -453
  328. package/src/internal/compile_server/html/jsenv_compile_html.js +0 -674
  329. package/src/internal/compile_server/importmap/jsenv_compile_importmap.js +0 -28
  330. package/src/internal/compile_server/js/ansi_to_html.js +0 -9
  331. package/src/internal/compile_server/js/babelHelper.js +0 -145
  332. package/src/internal/compile_server/js/babel_parse_error.js +0 -9
  333. package/src/internal/compile_server/js/babel_plugin_global_this_as_jsenv_import.js +0 -34
  334. package/src/internal/compile_server/js/babel_plugin_import_assertions.js +0 -121
  335. package/src/internal/compile_server/js/babel_plugin_import_metadata.js +0 -18
  336. package/src/internal/compile_server/js/babel_plugin_import_visitor.js +0 -84
  337. package/src/internal/compile_server/js/babel_plugin_new_stylesheet_as_jsenv_import.js +0 -113
  338. package/src/internal/compile_server/js/babel_plugin_proxy_external_imports.js +0 -31
  339. package/src/internal/compile_server/js/babel_plugin_regenerator_runtime_as_jsenv_import.js +0 -48
  340. package/src/internal/compile_server/js/babel_plugin_replace_expressions.js +0 -101
  341. package/src/internal/compile_server/js/babel_plugin_systemjs_prepend.js +0 -23
  342. package/src/internal/compile_server/js/babel_plugin_transform_import_meta.js +0 -134
  343. package/src/internal/compile_server/js/babel_plugins.js +0 -37
  344. package/src/internal/compile_server/js/generateBabelHelper.js +0 -36
  345. package/src/internal/compile_server/js/js_transformer.js +0 -195
  346. package/src/internal/compile_server/js/jsenv_compile_js.js +0 -62
  347. package/src/internal/compile_server/js/load_babel_plugin_map_from_file.js +0 -49
  348. package/src/internal/compile_server/jsenv_directory/comparison_utils.js +0 -27
  349. package/src/internal/compile_server/jsenv_directory/compilation_result.js +0 -243
  350. package/src/internal/compile_server/jsenv_directory/compilation_result_from_build.js +0 -184
  351. package/src/internal/compile_server/jsenv_directory/compile_asset.js +0 -24
  352. package/src/internal/compile_server/jsenv_directory/compile_context.js +0 -60
  353. package/src/internal/compile_server/jsenv_directory/compile_profile.js +0 -217
  354. package/src/internal/compile_server/jsenv_directory/file_lock_registry.js +0 -24
  355. package/src/internal/compile_server/jsenv_directory/file_lock_registry.test.js +0 -47
  356. package/src/internal/compile_server/jsenv_directory/fs_optimized_for_cache.js +0 -57
  357. package/src/internal/compile_server/jsenv_directory/jsenv_directory.js +0 -183
  358. package/src/internal/compile_server/jsenv_directory/reuse_or_create_compiled_file.js +0 -269
  359. package/src/internal/compile_server/jsenv_directory/update_compile_cache.js +0 -131
  360. package/src/internal/compile_server/jsenv_directory/validate_compile_cache.js +0 -264
  361. package/src/internal/compile_server/sse_service/sse_service.js +0 -369
  362. package/src/internal/coverage/babel_plugin_instrument.js +0 -90
  363. package/src/internal/coverage/coverage_reporter_html_directory.js +0 -37
  364. package/src/internal/coverage/coverage_reporter_json_file.js +0 -22
  365. package/src/internal/coverage/coverage_reporter_text_log.js +0 -20
  366. package/src/internal/coverage/empty_coverage_factory.js +0 -70
  367. package/src/internal/coverage/file_by_file_coverage.js +0 -28
  368. package/src/internal/coverage/istanbul_coverage_composition.js +0 -28
  369. package/src/internal/coverage/istanbul_coverage_map_from_coverage.js +0 -16
  370. package/src/internal/coverage/list_files_not_covered.js +0 -20
  371. package/src/internal/coverage/missing_coverage.js +0 -46
  372. package/src/internal/coverage/report_to_coverage.js +0 -198
  373. package/src/internal/coverage/v8_and_istanbul.js +0 -38
  374. package/src/internal/coverage/v8_coverage_composition.js +0 -23
  375. package/src/internal/coverage/v8_coverage_from_directory.js +0 -86
  376. package/src/internal/coverage/v8_coverage_to_istanbul.js +0 -100
  377. package/src/internal/data_url.js +0 -54
  378. package/src/internal/dev_server/event_source_client/event_source_client.js +0 -63
  379. package/src/internal/dev_server/event_source_client/file_changes.js +0 -82
  380. package/src/internal/dev_server/event_source_client/livereload_preference.js +0 -13
  381. package/src/internal/dev_server/exploring/exploring.css +0 -237
  382. package/src/internal/dev_server/exploring/exploring.html +0 -79
  383. package/src/internal/dev_server/exploring/exploring.js +0 -243
  384. package/src/internal/dev_server/exploring/fetch_exploring_json.js +0 -19
  385. package/src/internal/dev_server/toolbar/compilation/compilation.css +0 -23
  386. package/src/internal/dev_server/toolbar/compilation/toolbar_compilation.js +0 -202
  387. package/src/internal/dev_server/toolbar/eventsource/toolbar_eventsource.js +0 -83
  388. package/src/internal/dev_server/toolbar/execution/toolbar_execution.js +0 -91
  389. package/src/internal/error_stack_remap/install_error_stack_remapping.js +0 -142
  390. package/src/internal/error_stack_remap/remap_call_site.js +0 -315
  391. package/src/internal/error_stack_remap/remap_stack.js +0 -218
  392. package/src/internal/error_stack_remap/stringify_stack.js +0 -9
  393. package/src/internal/executing/launch_and_execute.js +0 -458
  394. package/src/internal/executing/logs_file_execution.js +0 -160
  395. package/src/internal/executing/logs_plan_summary.js +0 -144
  396. package/src/internal/features/browser_feature_detection/browser_feature_detect_dynamic_import.js +0 -20
  397. package/src/internal/features/browser_feature_detection/browser_feature_detect_import_assertions_css.js +0 -23
  398. package/src/internal/features/browser_feature_detection/browser_feature_detect_import_assertions_json.js +0 -25
  399. package/src/internal/features/browser_feature_detection/browser_feature_detect_importmap.js +0 -37
  400. package/src/internal/features/browser_feature_detection/browser_feature_detect_new_stylesheet.js +0 -9
  401. package/src/internal/features/browser_feature_detection/browser_feature_detect_top_level_await.js +0 -14
  402. package/src/internal/features/browser_feature_detection/browser_feature_detection.js +0 -89
  403. package/src/internal/features/browser_feature_detection/compile_proxy.html +0 -27
  404. package/src/internal/features/browser_feature_detection/execute_with_script_module.js +0 -24
  405. package/src/internal/features/features_compat_from_runtime.js +0 -38
  406. package/src/internal/features/features_compat_from_runtime_support.js +0 -31
  407. package/src/internal/features/features_compatibility.js +0 -37
  408. package/src/internal/features/node_feature_detection/feature_detect_dynamic_import.mjs +0 -5
  409. package/src/internal/features/node_feature_detection/feature_detect_top_level_await.mjs +0 -1
  410. package/src/internal/features/node_feature_detection/node_feature_detect_dynamic_import.js +0 -5
  411. package/src/internal/features/node_feature_detection/node_feature_detect_top_level_await.js +0 -16
  412. package/src/internal/features/node_feature_detection/node_feature_detection.js +0 -66
  413. package/src/internal/fetching.js +0 -28
  414. package/src/internal/import_resolution/default_extension.js +0 -40
  415. package/src/internal/import_resolution/import_resolver_importmap.js +0 -64
  416. package/src/internal/import_resolution/import_resolver_node.js +0 -254
  417. package/src/internal/import_resolution/importmap_default.js +0 -37
  418. package/src/internal/jsenv_builds.js +0 -19
  419. package/src/internal/jsenv_params_assertions.js +0 -12
  420. package/src/internal/jsenv_remote_directory.js +0 -156
  421. package/src/internal/logs/byte.js +0 -10
  422. package/src/internal/logs/byte_as_file_size.js +0 -9
  423. package/src/internal/logs/ms_as_duration.js +0 -12
  424. package/src/internal/memoize.js +0 -24
  425. package/src/internal/node_launcher/eval_source.js +0 -6
  426. package/src/internal/node_launcher/fetch_source.js +0 -8
  427. package/src/internal/node_launcher/node_error_stack_remap.js +0 -22
  428. package/src/internal/node_launcher/node_execution_dynamic_import.js +0 -75
  429. package/src/internal/node_launcher/node_execution_performance.js +0 -67
  430. package/src/internal/node_launcher/node_execution_systemjs.js +0 -125
  431. package/src/internal/node_launcher/node_runtime_report.js +0 -77
  432. package/src/internal/node_launcher/node_system.js +0 -192
  433. package/src/internal/node_launcher/perf_node.js +0 -13
  434. package/src/internal/node_launcher/process_options.js +0 -46
  435. package/src/internal/node_launcher/value_install.js +0 -14
  436. package/src/internal/origin_directory_converter.js +0 -62
  437. package/src/internal/promise_race.js +0 -19
  438. package/src/internal/redirector/redirector.html +0 -40
  439. package/src/internal/regexp_escape.js +0 -34
  440. package/src/internal/require.js +0 -3
  441. package/src/internal/response_validation.js +0 -130
  442. package/src/internal/runtime_client/module_registration.js +0 -207
  443. package/src/internal/runtime_client/s.js +0 -864
  444. package/src/internal/runtime_client/s.js.md +0 -1
  445. package/src/internal/runtime_support/jsenv_runtime_support.js +0 -15
  446. package/src/internal/runtime_support/runtime_support.js +0 -70
  447. package/src/internal/semantic_versioning/compare_versions.js +0 -28
  448. package/src/internal/semantic_versioning/highest_version.js +0 -11
  449. package/src/internal/semantic_versioning/is_above.js +0 -5
  450. package/src/internal/semantic_versioning/is_below.js +0 -5
  451. package/src/internal/semantic_versioning/is_equal.js +0 -3
  452. package/src/internal/semantic_versioning/lowest_version.js +0 -11
  453. package/src/internal/semantic_versioning/version_from_value.js +0 -42
  454. package/src/internal/sourcemap_utils.js +0 -112
  455. package/src/internal/template_string_escape.js +0 -20
  456. package/src/internal/url_conversion.js +0 -313
  457. package/src/internal/url_utils.js +0 -33
  458. package/src/internal/url_utils.test.js +0 -39
  459. package/src/internal/windows_file_path_utils.js +0 -16
  460. package/src/jsenv_file_urls.js +0 -35
  461. package/src/jsenv_service_worker_finalizer.js +0 -55
  462. package/src/json_to_js_module.js +0 -13
  463. package/src/node_runtime.js +0 -227
  464. package/src/require_using_child_process.js +0 -67
  465. package/src/text_to_js_module.js +0 -13
@@ -1,534 +0,0 @@
1
- import { createHash } from "node:crypto"
2
-
3
- import { require } from "@jsenv/core/src/internal/require.js"
4
-
5
- // https://github.com/inikulin/parse5/blob/master/packages/parse5/lib/tree-adapters/default.js
6
- // eslint-disable-next-line import/no-unresolved
7
- // const treeAdapter = require("parse5/lib/tree-adapters/default.js")
8
-
9
- export const parseHtmlString = (htmlString) => {
10
- const parse5 = require("parse5")
11
- const htmlAst = parse5.parse(htmlString, { sourceCodeLocationInfo: true })
12
- return htmlAst
13
- }
14
-
15
- export const parseSvgString = (svgString) => {
16
- const parse5 = require("parse5")
17
- const svgAst = parse5.parseFragment(svgString, {
18
- sourceCodeLocationInfo: true,
19
- })
20
- return svgAst
21
- }
22
-
23
- export const stringifyHtmlAst = (htmlAst) => {
24
- const parse5 = require("parse5")
25
- const htmlString = parse5.serialize(htmlAst)
26
- return htmlString
27
- }
28
-
29
- export const findNode = (htmlStringOrAst, predicate) => {
30
- const htmlAst =
31
- typeof htmlStringOrAst === "string"
32
- ? parseHtmlString(htmlStringOrAst)
33
- : htmlStringOrAst
34
- let nodeMatching = null
35
- visitHtmlAst(htmlAst, (node) => {
36
- if (predicate(node)) {
37
- nodeMatching = node
38
- return "stop"
39
- }
40
- return null
41
- })
42
- return nodeMatching
43
- }
44
-
45
- export const findNodes = (htmlString, predicate) => {
46
- const htmlAst = parseHtmlString(htmlString)
47
- const nodes = []
48
- visitHtmlAst(htmlAst, (node) => {
49
- if (predicate(node)) {
50
- nodes.push(node)
51
- }
52
- return null
53
- })
54
- return nodes
55
- }
56
-
57
- export const findNodeByTagName = (htmlString, tagName) =>
58
- findNode(htmlString, (node) => node.nodeName === tagName)
59
-
60
- export const findHtmlNodeById = (htmlString, id) => {
61
- return findNode(htmlString, (node) => {
62
- const idAttribute = getHtmlNodeAttributeByName(node, "id")
63
- return idAttribute && idAttribute.value === id
64
- })
65
- }
66
-
67
- export const findAllNodeByTagName = (htmlString, tagName) =>
68
- findNodes(htmlString, (node) => node.nodeName === tagName)
69
-
70
- export const findFirstImportMapNode = (htmlStringOrAst) =>
71
- findNode(htmlStringOrAst, htmlNodeIsScriptImportmap)
72
-
73
- export const getHtmlNodeAttributeByName = (htmlNode, attributeName) => {
74
- const attrs = htmlNode.attrs
75
- return attrs && attrs.find((attr) => attr.name === attributeName)
76
- }
77
-
78
- export const removeHtmlNodeAttribute = (htmlNode, attributeToRemove) => {
79
- const attrIndex = htmlNode.attrs.indexOf(attributeToRemove)
80
- if (attrIndex === -1) {
81
- return false
82
- }
83
- htmlNode.attrs.splice(attrIndex, 1)
84
- return true
85
- }
86
-
87
- export const addHtmlNodeAttribute = (htmlNode, attributeToSet) => {
88
- if (typeof attributeToSet !== "object") {
89
- throw new TypeError(
90
- `addHtmlNodeAttribute attribute must be an object {name, value}`,
91
- )
92
- }
93
-
94
- const existingAttributeIndex = htmlNode.attrs.findIndex(
95
- (attr) => attr.name === attributeToSet.name,
96
- )
97
- if (existingAttributeIndex === -1) {
98
- htmlNode.attrs.push(attributeToSet)
99
- } else {
100
- htmlNode.attrs[existingAttributeIndex] = attributeToSet
101
- }
102
- }
103
-
104
- export const getHtmlNodeTextNode = (htmlNode) => {
105
- const firstChild = htmlNode.childNodes[0]
106
- return firstChild && firstChild.nodeName === "#text" ? firstChild : null
107
- }
108
-
109
- export const setHtmlNodeText = (htmlNode, textContent) => {
110
- const textNode = getHtmlNodeTextNode(htmlNode)
111
- if (textNode) {
112
- textNode.value = textContent
113
- } else {
114
- const newTextNode = {
115
- nodeName: "#text",
116
- value: textContent,
117
- parentNode: htmlNode,
118
- }
119
- htmlNode.childNodes.splice(0, 0, newTextNode)
120
- }
121
- }
122
-
123
- export const removeHtmlNodeText = (htmlNode) => {
124
- const textNode = getHtmlNodeTextNode(htmlNode)
125
- if (textNode) {
126
- htmlNode.childNodes = []
127
- }
128
- }
129
-
130
- export const removeHtmlNode = (htmlNode) => {
131
- const { childNodes } = htmlNode.parentNode
132
- childNodes.splice(childNodes.indexOf(htmlNode), 1)
133
- }
134
-
135
- export const getHtmlNodeLocation = (htmlNode, htmlAttributeName) => {
136
- const { sourceCodeLocation } = htmlNode
137
- if (!sourceCodeLocation) {
138
- return null
139
- }
140
-
141
- if (!htmlAttributeName) {
142
- const { startLine, startCol } = sourceCodeLocation
143
- return {
144
- line: startLine,
145
- column: startCol,
146
- }
147
- }
148
-
149
- const attributeSourceCodeLocation =
150
- sourceCodeLocation.attrs[htmlAttributeName]
151
- if (!attributeSourceCodeLocation) {
152
- return null
153
- }
154
- const { startLine, startCol } = attributeSourceCodeLocation
155
- return {
156
- line: startLine,
157
- column: startCol,
158
- }
159
- }
160
-
161
- export const findHtmlNode = (htmlAst, predicate) => {
162
- let nodeFound = null
163
- visitHtmlAst(htmlAst, (node) => {
164
- if (predicate(node)) {
165
- nodeFound = node
166
- return "stop"
167
- }
168
- return null
169
- })
170
- return nodeFound
171
- }
172
-
173
- export const htmlNodeIsScriptModule = (htmlNode) => {
174
- if (htmlNode.nodeName !== "script") {
175
- return false
176
- }
177
- const typeAttribute = getHtmlNodeAttributeByName(htmlNode, "type")
178
- if (!typeAttribute) {
179
- return false
180
- }
181
- return typeAttribute.value === "module"
182
- }
183
-
184
- export const htmlNodeIsScriptImportmap = (htmlNode) => {
185
- if (htmlNode.nodeName !== "script") {
186
- return false
187
- }
188
- const typeAttribute = getHtmlNodeAttributeByName(htmlNode, "type")
189
- if (!typeAttribute) {
190
- return false
191
- }
192
- return typeAttribute.value === "importmap"
193
- }
194
-
195
- export const parseSrcset = (srcsetString) => {
196
- const srcsetParts = []
197
- srcsetString.split(",").forEach((set) => {
198
- const [specifier, descriptor] = set.trim().split(" ")
199
- srcsetParts.push({
200
- specifier,
201
- descriptor,
202
- })
203
- })
204
- return srcsetParts
205
- }
206
-
207
- export const stringifySrcset = (srcsetParts) => {
208
- const srcsetString = srcsetParts
209
- .map(({ specifier, descriptor }) => `${specifier} ${descriptor}`)
210
- .join(", ")
211
- return srcsetString
212
- }
213
-
214
- // <img>, <link for favicon>, <link for css>, <styles>
215
- // <audio> <video> <picture> supports comes for free by detecting
216
- // <source src> attribute
217
- // ideally relative iframe should recursively fetch (not needed so lets ignore)
218
- export const parseHtmlAstRessources = (htmlAst) => {
219
- const links = []
220
- const styles = []
221
- const scripts = []
222
- const imgs = []
223
- const images = []
224
- const uses = []
225
- const sources = []
226
-
227
- visitHtmlAst(htmlAst, (node) => {
228
- if (node.nodeName === "link") {
229
- links.push(node)
230
- return
231
- }
232
-
233
- if (node.nodeName === "style") {
234
- styles.push(node)
235
- return
236
- }
237
-
238
- if (node.nodeName === "script") {
239
- scripts.push(node)
240
- return
241
- }
242
-
243
- if (node.nodeName === "img") {
244
- imgs.push(node)
245
- return
246
- }
247
-
248
- if (node.nodeName === "image") {
249
- images.push(node)
250
- return
251
- }
252
-
253
- if (node.nodeName === "use") {
254
- uses.push(node)
255
- return
256
- }
257
-
258
- if (node.nodeName === "source") {
259
- sources.push(node)
260
- return
261
- }
262
- })
263
-
264
- return {
265
- links,
266
- styles,
267
- scripts,
268
- imgs,
269
- images,
270
- uses,
271
- sources,
272
- }
273
- }
274
-
275
- export const collectHtmlDependenciesFromAst = (htmlAst) => {
276
- const { links, scripts, imgs, images, uses, sources } =
277
- parseHtmlAstRessources(htmlAst)
278
-
279
- const dependencies = []
280
- const visitSrcAttribute = (htmlNode) => {
281
- const srcAttribute = getHtmlNodeAttributeByName(htmlNode, "src")
282
- const src = srcAttribute ? srcAttribute.value : undefined
283
- if (src) {
284
- dependencies.push({
285
- htmlNode,
286
- attribute: srcAttribute,
287
- specifier: src,
288
- })
289
- }
290
- }
291
- const visitHrefAttribute = (htmlNode) => {
292
- const hrefAttribute = getHtmlNodeAttributeByName(htmlNode, "href")
293
- const href = hrefAttribute ? hrefAttribute.value : undefined
294
- if (href && href[0] !== "#") {
295
- dependencies.push({
296
- htmlNode,
297
- attribute: hrefAttribute,
298
- specifier: href,
299
- })
300
- }
301
- }
302
- const visitSrcSetAttribute = (htmlNode) => {
303
- const srcsetAttribute = getHtmlNodeAttributeByName(htmlNode, "srcset")
304
- if (srcsetAttribute) {
305
- const srcsetParts = parseSrcset(srcsetAttribute.value)
306
- srcsetParts.forEach(({ specifier }) => {
307
- dependencies.push({
308
- htmlNode,
309
- attribute: srcsetAttribute,
310
- specifier,
311
- })
312
- })
313
- }
314
- }
315
-
316
- links.forEach((link) => {
317
- visitHrefAttribute(link)
318
- })
319
- scripts.forEach((script) => {
320
- visitSrcAttribute(script)
321
- })
322
- imgs.forEach((img) => {
323
- visitSrcAttribute(img)
324
- visitSrcSetAttribute(img)
325
- })
326
- sources.forEach((source) => {
327
- visitSrcAttribute(source)
328
- visitSrcSetAttribute(source)
329
- })
330
- // svg <image> tag
331
- images.forEach((image) => {
332
- visitHrefAttribute(image)
333
- })
334
- uses.forEach((use) => {
335
- visitHrefAttribute(use)
336
- })
337
-
338
- return dependencies
339
- }
340
-
341
- export const replaceHtmlNode = (
342
- node,
343
- replacement,
344
- { attributesInherit = true, attributesToIgnore = [] } = {},
345
- ) => {
346
- let newNode
347
- if (typeof replacement === "string") {
348
- newNode = parseHtmlAsSingleElement(replacement)
349
- } else {
350
- newNode = replacement
351
- }
352
-
353
- if (attributesInherit) {
354
- const attributeMap = {}
355
- // inherit attributes except thoos listed in attributesToIgnore
356
- node.attrs.forEach((attribute) => {
357
- if (attributesToIgnore.includes(attribute.name)) {
358
- return
359
- }
360
- attributeMap[attribute.name] = attribute
361
- })
362
- newNode.attrs.forEach((newAttribute) => {
363
- attributeMap[newAttribute.name] = newAttribute
364
- })
365
- const attributes = []
366
- Object.keys(attributeMap).forEach((attributeName) => {
367
- attributes.push(attributeMap[attributeName])
368
- })
369
- newNode.attrs = attributes
370
- }
371
-
372
- replaceNode(node, newNode)
373
- }
374
-
375
- export const manipulateHtmlAst = (htmlAst, { scriptInjections = [] }) => {
376
- if (scriptInjections.length === 0) {
377
- return
378
- }
379
-
380
- const htmlNode = htmlAst.childNodes.find((node) => node.nodeName === "html")
381
- const headNode = htmlNode.childNodes[0]
382
- const bodyNode = htmlNode.childNodes[1]
383
-
384
- const scriptsToPreprendInHead = []
385
- scriptInjections.forEach((script) => {
386
- const scriptExistingInHead = findExistingScript(headNode, script)
387
- if (scriptExistingInHead) {
388
- replaceNode(scriptExistingInHead, scriptToNode(script))
389
- return
390
- }
391
- const scriptExistingInBody = findExistingScript(bodyNode, script)
392
- if (scriptExistingInBody) {
393
- replaceNode(scriptExistingInBody, scriptToNode(script))
394
- return
395
- }
396
- scriptsToPreprendInHead.push(script)
397
- })
398
- const headScriptsFragment = scriptsToFragment(scriptsToPreprendInHead)
399
- insertFragmentBefore(
400
- headNode,
401
- headScriptsFragment,
402
- findChild(headNode, (node) => node.nodeName === "script"),
403
- )
404
- }
405
-
406
- const insertFragmentBefore = (node, fragment, childNode) => {
407
- const { childNodes = [] } = node
408
-
409
- if (childNode) {
410
- const childNodeIndex = childNodes.indexOf(childNode)
411
- node.childNodes = [
412
- ...childNodes.slice(0, childNodeIndex),
413
- ...fragment.childNodes.map((child) => {
414
- return { ...child, parentNode: node }
415
- }),
416
- ...childNodes.slice(childNodeIndex),
417
- ]
418
- } else {
419
- node.childNodes = [
420
- ...childNodes,
421
- ...fragment.childNodes.map((child) => {
422
- return { ...child, parentNode: node }
423
- }),
424
- ]
425
- }
426
- }
427
-
428
- const scriptToNode = (script) => {
429
- return scriptsToFragment([script]).childNodes[0]
430
- }
431
-
432
- const scriptsToFragment = (scripts) => {
433
- const html = scripts.reduce((previous, script) => {
434
- const { text = "", ...attributes } = script
435
- const scriptAttributes = objectToHtmlAttributes(attributes)
436
- return `${previous}<script ${scriptAttributes}>${text}</script>
437
- `
438
- }, "")
439
- const parse5 = require("parse5")
440
- const fragment = parse5.parseFragment(html)
441
- return fragment
442
- }
443
-
444
- const findExistingScript = (node, script) =>
445
- findChild(node, (childNode) => {
446
- return childNode.nodeName === "script" && sameScript(childNode, script)
447
- })
448
-
449
- const findChild = ({ childNodes = [] }, predicate) => childNodes.find(predicate)
450
-
451
- const sameScript = (node, { type = "text/javascript", src }) => {
452
- const typeAttribute = getHtmlNodeAttributeByName(node, "type")
453
- const leftScriptType = typeAttribute ? typeAttribute.value : "text/javascript"
454
- if (leftScriptType !== type) {
455
- return false
456
- }
457
-
458
- const srcAttribute = getHtmlNodeAttributeByName(node, "src")
459
- if (!srcAttribute && src) {
460
- return false
461
- }
462
- if (srcAttribute && srcAttribute.value !== src) {
463
- return false
464
- }
465
-
466
- return true
467
- }
468
-
469
- const objectToHtmlAttributes = (object) => {
470
- return Object.keys(object)
471
- .map((key) => `${key}=${valueToHtmlAttributeValue(object[key])}`)
472
- .join(" ")
473
- }
474
-
475
- const valueToHtmlAttributeValue = (value) => {
476
- if (typeof value === "string") {
477
- return JSON.stringify(value)
478
- }
479
- return `"${JSON.stringify(value)}"`
480
- }
481
-
482
- export const createInlineScriptHash = (script) => {
483
- const hash = createHash("sha256")
484
- hash.update(getHtmlNodeTextNode(script).value)
485
- return hash.digest("hex").slice(0, 8)
486
- }
487
-
488
- export const getIdForInlineHtmlNode = (node, nodes) => {
489
- const idAttribute = getHtmlNodeAttributeByName(node, "id")
490
- if (idAttribute) {
491
- return idAttribute.value
492
- }
493
- const { line, column } = getHtmlNodeLocation(node) || {}
494
- const lineTaken = nodes.some((nodeCandidate) => {
495
- if (nodeCandidate === node) return false
496
- const htmlNodeLocation = getHtmlNodeLocation(nodeCandidate)
497
- if (!htmlNodeLocation) return false
498
- return htmlNodeLocation.line === line
499
- })
500
- if (lineTaken) {
501
- return `${line}.${column}`
502
- }
503
- return line
504
- }
505
-
506
- const parseHtmlAsSingleElement = (html) => {
507
- const parse5 = require("parse5")
508
- const fragment = parse5.parseFragment(html)
509
- return fragment.childNodes[0]
510
- }
511
-
512
- const replaceNode = (node, newNode) => {
513
- const { parentNode } = node
514
- const parentNodeChildNodes = parentNode.childNodes
515
- const nodeIndex = parentNodeChildNodes.indexOf(node)
516
- parentNodeChildNodes[nodeIndex] = newNode
517
- }
518
-
519
- export const visitHtmlAst = (htmlAst, callback) => {
520
- const visitNode = (node) => {
521
- const callbackReturnValue = callback(node)
522
- if (callbackReturnValue === "stop") {
523
- return
524
- }
525
- const { childNodes } = node
526
- if (childNodes) {
527
- let i = 0
528
- while (i < childNodes.length) {
529
- visitNode(childNodes[i++])
530
- }
531
- }
532
- }
533
- visitNode(htmlAst)
534
- }