@jsenv/core 26.0.1 → 27.0.0-alpha.2

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 +737 -0
  5. package/src/build/build_urls_generator.js +64 -0
  6. package/src/build/inject_version_mappings.js +62 -0
  7. package/src/build/plugins/bundle_js_module/jsenv_plugin_bundle_js_module.js +225 -0
  8. package/src/build/plugins/minify_html/jsenv_plugin_minify_html.js +30 -0
  9. package/src/build/plugins/minify_js/jsenv_plugin_minify_js.js +47 -0
  10. package/src/dev/plugins/autoreload/babel_plugin_metadata_import_meta_hot.js +98 -0
  11. package/src/dev/plugins/autoreload/client/autoreload_preference.js +11 -0
  12. package/src/dev/plugins/autoreload/client/event_source_client.js +186 -0
  13. package/src/{internal/dev_server/event_source_client → dev/plugins/autoreload/client}/event_source_connection.js +21 -25
  14. package/src/dev/plugins/autoreload/client/import_meta_hot.js +80 -0
  15. package/src/dev/plugins/autoreload/client/reload.js +101 -0
  16. package/src/dev/plugins/autoreload/client/url_helpers.js +20 -0
  17. package/src/dev/plugins/autoreload/html_hot_dependencies.js +156 -0
  18. package/src/dev/plugins/autoreload/jsenv_plugin_autoreload.js +374 -0
  19. package/src/dev/plugins/autoreload/sse_service.js +149 -0
  20. package/src/dev/plugins/explorer/client/explorer.html +607 -0
  21. package/src/{internal → dev/plugins/explorer/client}/jsenv.png +0 -0
  22. package/src/dev/plugins/explorer/jsenv_plugin_explorer.js +74 -0
  23. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/animation/toolbar_animation.js +0 -0
  24. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/eventsource/eventsource.css +2 -2
  25. package/src/dev/plugins/toolbar/client/eventsource/toolbar_eventsource.js +57 -0
  26. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/execution/execution.css +0 -0
  27. package/src/dev/plugins/toolbar/client/execution/toolbar_execution.js +88 -0
  28. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/focus/focus.css +0 -0
  29. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/focus/toolbar_focus.js +0 -0
  30. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/jsenv_logo.svg +0 -0
  31. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/notification/toolbar_notification.js +0 -0
  32. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/responsive/overflow_menu.css +0 -0
  33. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/responsive/toolbar_responsive.js +0 -0
  34. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/settings/settings.css +0 -0
  35. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/settings/toolbar_settings.js +1 -0
  36. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/theme/jsenv_theme.css +1 -15
  37. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/theme/light_theme.css +0 -17
  38. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/theme/toolbar_theme.js +0 -0
  39. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/toolbar.html +40 -199
  40. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/toolbar_injector.js +8 -28
  41. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/toolbar_main.css +0 -24
  42. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/toolbar_main.js +10 -56
  43. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/tooltip/tooltip.css +1 -1
  44. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/tooltip/tooltip.js +0 -0
  45. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/animation.js +0 -0
  46. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/dom.js +0 -0
  47. package/src/{internal/browser_utils → dev/plugins/toolbar/client/util}/fetch_using_xhr.js +0 -0
  48. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/fetching.js +2 -4
  49. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/iframe_to_parent_href.js +0 -0
  50. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/jsenv_logger.js +0 -0
  51. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/preferences.js +0 -0
  52. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/responsive.js +0 -0
  53. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/util.js +0 -0
  54. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/variant/variant.js +0 -0
  55. package/src/dev/plugins/toolbar/jsenv_plugin_toolbar.js +62 -0
  56. package/src/dev/start_dev_server.js +105 -0
  57. package/src/execute/execute.js +132 -0
  58. package/src/execute/run.js +208 -0
  59. package/src/execute/runtimes/browsers/chromium.js +8 -0
  60. package/src/execute/runtimes/browsers/firefox.js +7 -0
  61. package/src/execute/runtimes/browsers/from_playwright.js +464 -0
  62. package/src/{browser_runtimes.js → execute/runtimes/browsers/webkit.js} +4 -18
  63. package/src/{internal/node_launcher/child_process_options.js → execute/runtimes/node/child_exec_options.js} +25 -36
  64. package/src/{internal/node_launcher/node_controllable_file.mjs → execute/runtimes/node/controllable_file.mjs} +1 -18
  65. package/src/{internal/node_launcher/node_controllable_process.js → execute/runtimes/node/controlled_process.js} +128 -150
  66. package/src/execute/runtimes/node/exec_options.js +44 -0
  67. package/src/{internal/node_launcher → execute/runtimes/node}/kill_process_tree.js +3 -1
  68. package/src/execute/runtimes/node/node_process.js +92 -0
  69. package/src/execute/runtimes/node/node_worker_thread.js +28 -0
  70. package/src/omega/core_plugins/babel/babel_helper/babel_helper_directory.js +29 -0
  71. package/src/{internal/compile_server/js → omega/core_plugins/babel/babel_helper}/babel_plugin_babel_helpers_as_jsenv_imports.js +15 -19
  72. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/.eslintrc.cjs +0 -0
  73. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/AsyncGenerator/AsyncGenerator.js +0 -0
  74. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/AwaitValue/AwaitValue.js +0 -0
  75. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/applyDecoratorDescriptor/applyDecoratorDescriptor.js +0 -0
  76. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/arrayLikeToArray/arrayLikeToArray.js +0 -0
  77. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/arrayWithHoles/arrayWithHoles.js +0 -0
  78. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/arrayWithoutHoles/arrayWithoutHoles.js +0 -0
  79. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/assertThisInitialized/assertThisInitialized.js +0 -0
  80. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/asyncGeneratorDelegate/asyncGeneratorDelegate.js +0 -0
  81. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/asyncIterator/asyncIterator.js +0 -0
  82. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/asyncToGenerator/asyncToGenerator.js +0 -0
  83. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/awaitAsyncGenerator/awaitAsyncGenerator.js +0 -0
  84. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +0 -0
  85. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classApplyDescriptorGet/classApplyDescriptorGet.js +0 -0
  86. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classApplyDescriptorSet/classApplyDescriptorSet.js +0 -0
  87. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classCallCheck/classCallCheck.js +0 -0
  88. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +0 -0
  89. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +0 -0
  90. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classExtractFieldDescriptor/classExtractFieldDescriptor.js +0 -0
  91. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classNameTDZError/classNameTDZError.js +0 -0
  92. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +0 -0
  93. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateFieldGet/classPrivateFieldGet.js +0 -0
  94. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +0 -0
  95. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +0 -0
  96. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateFieldSet/classPrivateFieldSet.js +0 -0
  97. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateMethodGet/classPrivateMethodGet.js +0 -0
  98. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateMethodSet/classPrivateMethodSet.js +0 -0
  99. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +0 -0
  100. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +0 -0
  101. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +0 -0
  102. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +0 -0
  103. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/construct/construct.js +0 -0
  104. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/createClass/createClass.js +0 -0
  105. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/createForOfIteratorHelper/createForOfIteratorHelper.js +0 -0
  106. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +0 -0
  107. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/createRawReactElement/createRawReactElement.js +0 -0
  108. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/createSuper/createSuper.js +0 -0
  109. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/decorate/decorate.js +0 -0
  110. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/defaults/defaults.js +0 -0
  111. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/defineEnumerableProperties/defineEnumerableProperties.js +0 -0
  112. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/defineProperty/defineProperty.js +0 -0
  113. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/extends/extends.js +0 -0
  114. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/get/get.js +0 -0
  115. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/getPrototypeOf/getPrototypeOf.js +0 -0
  116. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/inherits/inherits.js +0 -0
  117. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/inheritsLoose/inheritsLoose.js +0 -0
  118. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/initializerDefineProperty/initializerDefineProperty.js +0 -0
  119. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/initializerWarningHelper/initializerWarningHelper.js +0 -0
  120. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/instanceof/instanceof.js +0 -0
  121. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/interopRequireDefault/interopRequireDefault.js +0 -0
  122. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/interopRequireWildcard/interopRequireWildcard.js +0 -0
  123. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/isNativeFunction/isNativeFunction.js +0 -0
  124. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/isNativeReflectConstruct/isNativeReflectConstruct.js +0 -0
  125. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/iterableToArray/iterableToArray.js +0 -0
  126. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/iterableToArrayLimit/iterableToArrayLimit.js +0 -0
  127. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +0 -0
  128. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/jsx/jsx.js +0 -0
  129. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/maybeArrayLike/maybeArrayLike.js +0 -0
  130. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/newArrowCheck/newArrowCheck.js +0 -0
  131. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/nonIterableRest/nonIterableRest.js +0 -0
  132. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/nonIterableSpread/nonIterableSpread.js +0 -0
  133. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/objectDestructuringEmpty/objectDestructuringEmpty.js +0 -0
  134. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/objectSpread/objectSpread.js +0 -0
  135. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/objectSpread2/objectSpread2.js +0 -0
  136. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/objectWithoutProperties/objectWithoutProperties.js +0 -0
  137. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +0 -0
  138. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/possibleConstructorReturn/possibleConstructorReturn.js +0 -0
  139. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/readOnlyError/readOnlyError.js +0 -0
  140. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/readme.md +0 -0
  141. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/set/set.js +0 -0
  142. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/setPrototypeOf/setPrototypeOf.js +0 -0
  143. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/skipFirstGeneratorNext/skipFirstGeneratorNext.js +0 -0
  144. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/slicedToArray/slicedToArray.js +0 -0
  145. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/slicedToArrayLoose/slicedToArrayLoose.js +0 -0
  146. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/superPropBase/superPropBase.js +0 -0
  147. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/taggedTemplateLiteral/taggedTemplateLiteral.js +0 -0
  148. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +0 -0
  149. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/tdz/tdz.js +0 -0
  150. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/temporalRef/temporalRef.js +0 -0
  151. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/temporalUndefined/temporalUndefined.js +0 -0
  152. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/toArray/toArray.js +0 -0
  153. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/toConsumableArray/toConsumableArray.js +0 -0
  154. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/toPrimitive/toPrimitive.js +0 -0
  155. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/toPropertyKey/toPropertyKey.js +0 -0
  156. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/typeof/typeof.js +0 -0
  157. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/unsupportedIterableToArray/unsupportedIterableToArray.js +0 -0
  158. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/wrapAsyncGenerator/wrapAsyncGenerator.js +0 -0
  159. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/wrapNativeSuper/wrapNativeSuper.js +0 -0
  160. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/wrapRegExp/wrapRegExp.js +0 -0
  161. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/writeOnlyError/writeOnlyError.js +0 -0
  162. package/src/omega/core_plugins/babel/global_this/babel_plugin_global_this_as_jsenv_import.js +35 -0
  163. package/{helpers/global-this/global-this.js → src/omega/core_plugins/babel/global_this/client/global_this.js} +0 -0
  164. package/src/omega/core_plugins/babel/helpers/babel_plugin_structure.js +187 -0
  165. package/src/{internal/features → omega/core_plugins/babel/helpers}/babel_plugins_compatibility.js +1 -24
  166. package/src/omega/core_plugins/babel/jsenv_plugin_babel.js +97 -0
  167. package/src/omega/core_plugins/babel/new_stylesheet/babel_plugin_new_stylesheet_as_jsenv_import.js +117 -0
  168. package/src/omega/core_plugins/babel/new_stylesheet/client/.eslintrc.cjs +24 -0
  169. package/{helpers/new_stylesheet → src/omega/core_plugins/babel/new_stylesheet/client}/new_stylesheet.js +0 -0
  170. package/src/omega/core_plugins/babel/regenerator_runtime/babel_plugin_regenerator_runtime_as_jsenv_import.js +34 -0
  171. package/{helpers/regenerator-runtime/regenerator-runtime.js → src/omega/core_plugins/babel/regenerator_runtime/client/regenerator_runtime.js} +0 -0
  172. package/src/omega/core_plugins/commonjs_globals/jsenv_plugin_commonjs_globals.js +169 -0
  173. package/src/omega/core_plugins/file_urls/jsenv_plugin_file_urls.js +67 -0
  174. package/src/omega/core_plugins/filesystem_magic/jsenv_plugin_filesystem_magic.js +58 -0
  175. package/src/{internal/browser_client → omega/core_plugins/html_supervisor/client}/error_in_document.js +10 -16
  176. package/src/{internal/browser_client → omega/core_plugins/html_supervisor/client}/error_in_notification.js +0 -0
  177. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_installer.js +168 -0
  178. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_setup.js +77 -0
  179. package/src/{internal/browser_client → omega/core_plugins/html_supervisor/client}/perf_browser.js +0 -0
  180. package/src/{internal/runtime_client → omega/core_plugins/html_supervisor/client}/uneval_exception.js +0 -0
  181. package/src/omega/core_plugins/html_supervisor/jsenv_plugin_html_supervisor.js +233 -0
  182. package/src/omega/core_plugins/import_assertions/helpers/babel_plugin_metadata_import_assertions.js +98 -0
  183. package/src/{internal/building/import_assertions → omega/core_plugins/import_assertions/helpers}/json_module.js +3 -2
  184. package/src/omega/core_plugins/import_assertions/helpers/text_module.js +6 -0
  185. package/src/omega/core_plugins/import_assertions/jsenv_plugin_import_assertions.js +211 -0
  186. package/src/omega/core_plugins/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +80 -0
  187. package/src/omega/core_plugins/importmap/jsenv_plugin_importmap.js +212 -0
  188. package/src/omega/core_plugins/inline/client/inline_content.js +6 -0
  189. package/src/omega/core_plugins/inline/jsenv_plugin_data_urls.js +70 -0
  190. package/src/omega/core_plugins/inline/jsenv_plugin_inline.js +13 -0
  191. package/src/omega/core_plugins/inline/jsenv_plugin_inline_query_param.js +42 -0
  192. package/src/omega/core_plugins/inline/jsenv_plugin_js_and_css_inside_html.js +142 -0
  193. package/src/omega/core_plugins/inline/jsenv_plugin_new_inline_content.js +210 -0
  194. package/src/omega/core_plugins/leading_slash/jsenv_plugin_leading_slash.js +12 -0
  195. package/src/omega/core_plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +77 -0
  196. package/src/omega/core_plugins/url_resolution/jsenv_plugin_url_resolution.js +28 -0
  197. package/src/omega/core_plugins/url_version/jsenv_plugin_url_version.js +50 -0
  198. package/src/omega/core_plugins.js +39 -0
  199. package/src/omega/errors.js +168 -0
  200. package/src/omega/file_url_converter.js +63 -0
  201. package/src/omega/kitchen.js +777 -0
  202. package/src/omega/omega_server.js +129 -0
  203. package/src/omega/plugin_controller.js +240 -0
  204. package/src/omega/runtime_support/default_runtime_support.js +13 -0
  205. package/src/omega/runtime_support/features_compatibility.js +91 -0
  206. package/src/omega/runtime_support/runtime_support.js +20 -0
  207. package/src/omega/server/file_service.js +155 -0
  208. package/src/omega/server/user_agent.js +22 -0
  209. package/src/omega/url_graph/url_graph_load.js +68 -0
  210. package/src/omega/url_graph/url_graph_report.js +151 -0
  211. package/src/omega/url_graph/url_graph_sort.js +29 -0
  212. package/src/omega/url_graph/url_info_transformations.js +161 -0
  213. package/src/omega/url_graph.js +132 -0
  214. package/src/omega/url_mentions/css_url_mentions.js +63 -0
  215. package/src/omega/url_mentions/html_url_mentions.js +185 -0
  216. package/src/omega/url_mentions/js_module_url_mentions.js +91 -0
  217. package/src/omega/url_mentions/parse_url_mentions.js +37 -0
  218. package/src/omega/url_mentions/worker_classic_url_mentions.js +37 -0
  219. package/src/{internal/executing → test}/execute_plan.js +154 -211
  220. package/src/{execute_test_plan.js → test/execute_test_plan.js} +26 -81
  221. package/src/{internal/executing → test}/execution_colors.js +0 -0
  222. package/src/{internal/executing → test}/execution_steps.js +2 -8
  223. package/src/{internal/executing → test}/gc.js +0 -0
  224. package/src/test/logs_file_execution.js +223 -0
  225. package/dist/browser_client/asset-manifest.json +0 -4
  226. package/dist/browser_client/browser_client_fb33eaa4.js +0 -5320
  227. package/dist/browser_client/browser_client_fb33eaa4.js.map +0 -1089
  228. package/dist/build_manifest.js +0 -12
  229. package/dist/compile_proxy/asset-manifest.json +0 -4
  230. package/dist/compile_proxy/compile_proxy.html__inline__20_651d1e7b.js.map +0 -343
  231. package/dist/compile_proxy/compile_proxy_62f952c4.html +0 -2245
  232. package/dist/event_source_client/asset-manifest.json +0 -4
  233. package/dist/event_source_client/event_source_client_69f48287.js +0 -354
  234. package/dist/event_source_client/event_source_client_69f48287.js.map +0 -128
  235. package/dist/redirector/asset-manifest.json +0 -4
  236. package/dist/redirector/redirector.html__inline__12_171e07b4.js.map +0 -349
  237. package/dist/redirector/redirector_8117ec92.html +0 -2290
  238. package/dist/toolbar/asset-manifest.json +0 -13
  239. package/dist/toolbar/assets/compilation.css_7421bd55.map +0 -12
  240. package/dist/toolbar/assets/eventsource.css_c0c71e7b.map +0 -12
  241. package/dist/toolbar/assets/execution.css_f3377c10.map +0 -12
  242. package/dist/toolbar/assets/focus.css_896f3e45.map +0 -12
  243. package/dist/toolbar/assets/light_theme.css_5bff0336.map +0 -12
  244. package/dist/toolbar/assets/overflow_menu.css_9a0fc3d8.map +0 -12
  245. package/dist/toolbar/assets/settings.css_942b5a9e.map +0 -12
  246. package/dist/toolbar/assets/toolbar_main.css_b1c67dd7.map +0 -28
  247. package/dist/toolbar/assets/tooltip.css_a94a8bdd.map +0 -12
  248. package/dist/toolbar/toolbar_b0c9100c.html +0 -4976
  249. package/dist/toolbar/toolbar_main_f54c1bb0.js.map +0 -776
  250. package/dist/toolbar_injector/asset-manifest.json +0 -5
  251. package/dist/toolbar_injector/assets/jsenv_logo_192011c2.svg +0 -95
  252. package/dist/toolbar_injector/toolbar_injector_65b501eb.js +0 -976
  253. package/dist/toolbar_injector/toolbar_injector_65b501eb.js.map +0 -294
  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
@@ -0,0 +1,7 @@
1
+ import { createRuntimeFromPlaywright } from "./from_playwright.js"
2
+
3
+ export const firefox = createRuntimeFromPlaywright({
4
+ browserName: "firefox",
5
+ browserVersion: "93.0",
6
+ })
7
+ export const firefoxIsolatedTab = firefox.isolatedTab
@@ -0,0 +1,464 @@
1
+ import { Script } from "node:vm"
2
+ import { createDetailedMessage } from "@jsenv/logger"
3
+ import {
4
+ Abort,
5
+ createCallbackListNotifiedOnce,
6
+ raceProcessTeardownEvents,
7
+ } from "@jsenv/abort"
8
+ import { moveUrl } from "@jsenv/filesystem"
9
+
10
+ import { memoize } from "@jsenv/utils/memoize/memoize.js"
11
+ import { filterV8Coverage } from "@jsenv/utils/coverage/v8_coverage_from_directory.js"
12
+ import { composeTwoFileByFileIstanbulCoverages } from "@jsenv/utils/coverage/istanbul_coverage_composition.js"
13
+ import { escapeRegexpSpecialChars } from "@jsenv/utils/string/escape_regexp_special_chars.js"
14
+
15
+ export const createRuntimeFromPlaywright = ({
16
+ browserName,
17
+ browserVersion,
18
+ coveragePlaywrightAPIAvailable = false,
19
+ ignoreErrorHook = () => false,
20
+ transformErrorHook = (error) => error,
21
+ isolatedTab = false,
22
+ }) => {
23
+ const runtime = {
24
+ name: browserName,
25
+ version: browserVersion,
26
+ needsServer: true,
27
+ }
28
+ let browserAndContextPromise
29
+ runtime.run = async ({
30
+ signal = new AbortController().signal,
31
+ // logger,
32
+ rootDirectoryUrl,
33
+ fileRelativeUrl,
34
+ server,
35
+
36
+ // measurePerformance,
37
+ // collectPerformance,
38
+ collectCoverage = false,
39
+ coverageForceIstanbul,
40
+ urlShouldBeCovered,
41
+
42
+ stopAfterAllSignal,
43
+ stopSignal,
44
+ keepRunning,
45
+ onStop,
46
+ onError,
47
+ onConsole,
48
+ onResult,
49
+
50
+ executablePath,
51
+ headful = false,
52
+ ignoreHTTPSErrors = true,
53
+ }) => {
54
+ const cleanupCallbackList = createCallbackListNotifiedOnce()
55
+ const cleanup = memoize(async (reason) => {
56
+ await cleanupCallbackList.notify({ reason })
57
+ })
58
+
59
+ const isBrowserDedicatedToExecution = isolatedTab || !stopAfterAllSignal
60
+ if (isBrowserDedicatedToExecution || !browserAndContextPromise) {
61
+ browserAndContextPromise = (async () => {
62
+ const browser = await launchBrowserUsingPlaywright({
63
+ signal,
64
+ browserName,
65
+ stopOnExit: true,
66
+ playwrightOptions: {
67
+ headless: !headful,
68
+ executablePath,
69
+ },
70
+ })
71
+ const browserContext = await browser.newContext({ ignoreHTTPSErrors })
72
+ return { browser, browserContext }
73
+ })()
74
+ }
75
+ const { browser, browserContext } = await browserAndContextPromise
76
+ const closeBrowser = async () => {
77
+ try {
78
+ await stopBrowser(browser)
79
+ } catch (e) {
80
+ onError(e)
81
+ }
82
+ }
83
+ const page = await browserContext.newPage()
84
+ const closePage = async () => {
85
+ try {
86
+ await page.close()
87
+ } catch (e) {
88
+ if (isTargetClosedError(e)) {
89
+ return
90
+ }
91
+ onError(e)
92
+ }
93
+ }
94
+ // https://github.com/GoogleChrome/puppeteer/blob/v1.4.0/docs/api.md#event-disconnected
95
+ if (isBrowserDedicatedToExecution) {
96
+ browser.on("disconnected", async () => {
97
+ await cleanup("browser disconnected")
98
+ onStop({ reason: "browser disconnected" })
99
+ })
100
+ cleanupCallbackList.add(closePage)
101
+ cleanupCallbackList.add(closeBrowser)
102
+ } else {
103
+ const disconnectedCallback = async () => {
104
+ await cleanup("browser disconnected")
105
+ onError(new Error("browser disconnected during execution"))
106
+ }
107
+ browser.on("disconnected", disconnectedCallback)
108
+ page.on("close", () => {
109
+ onStop({ reason: "page closed" })
110
+ })
111
+ cleanupCallbackList.add(closePage)
112
+ const notifyPrevious = stopAfterAllSignal.notify
113
+ stopAfterAllSignal.notify = async () => {
114
+ await notifyPrevious()
115
+ browser.removeListener("disconnected", disconnectedCallback)
116
+ await closeBrowser()
117
+ }
118
+ }
119
+ const stopTrackingToNotify = trackPageToNotify(page, {
120
+ onError: (error) => {
121
+ error = transformErrorHook(error)
122
+ if (!ignoreErrorHook(error)) {
123
+ onError(error)
124
+ }
125
+ },
126
+ onConsole,
127
+ })
128
+ cleanupCallbackList.add(stopTrackingToNotify)
129
+
130
+ let resultTransformer = (result) => result
131
+ if (collectCoverage) {
132
+ if (coveragePlaywrightAPIAvailable && !coverageForceIstanbul) {
133
+ await page.coverage.startJSCoverage({
134
+ // reportAnonymousScripts: true,
135
+ })
136
+ resultTransformer = composeTransformer(
137
+ resultTransformer,
138
+ async (result) => {
139
+ const v8CoveragesWithWebUrls = await page.coverage.stopJSCoverage()
140
+ // we convert urls starting with http:// to file:// because we later
141
+ // convert the url to filesystem path in istanbulCoverageFromV8Coverage function
142
+ const v8CoveragesWithFsUrls = v8CoveragesWithWebUrls.map(
143
+ (v8CoveragesWithWebUrl) => {
144
+ const fsUrl = moveUrl({
145
+ url: v8CoveragesWithWebUrl.url,
146
+ from: `${server.origin}/`,
147
+ to: rootDirectoryUrl,
148
+ preferAbsolute: true,
149
+ })
150
+ return {
151
+ ...v8CoveragesWithWebUrl,
152
+ url: fsUrl,
153
+ }
154
+ },
155
+ )
156
+ const coverage = filterV8Coverage(
157
+ { result: v8CoveragesWithFsUrls },
158
+ {
159
+ urlShouldBeCovered,
160
+ },
161
+ )
162
+ return {
163
+ ...result,
164
+ coverage,
165
+ }
166
+ },
167
+ )
168
+ } else {
169
+ resultTransformer = composeTransformer(
170
+ resultTransformer,
171
+ async (result) => {
172
+ result.coverage = generateCoverageForPage(result.namespace)
173
+ return result
174
+ },
175
+ )
176
+ }
177
+ } else {
178
+ resultTransformer = composeTransformer(resultTransformer, (result) => {
179
+ const { namespace: fileExecutionResultMap } = result
180
+ Object.keys(fileExecutionResultMap).forEach((fileRelativeUrl) => {
181
+ delete fileExecutionResultMap[fileRelativeUrl].coverage
182
+ })
183
+ return result
184
+ })
185
+ }
186
+ const fileClientUrl = new URL(fileRelativeUrl, `${server.origin}/`).href
187
+ await page.goto(fileClientUrl, { timeout: 0 })
188
+ let result = await getResult({
189
+ page,
190
+ rootDirectoryUrl,
191
+ server,
192
+ transformErrorHook,
193
+ })
194
+ result = await resultTransformer(result)
195
+ onResult(result)
196
+ if (keepRunning) {
197
+ stopSignal.notify = cleanup
198
+ } else {
199
+ await cleanup("execution done")
200
+ }
201
+ return result
202
+ }
203
+
204
+ if (!isolatedTab) {
205
+ runtime.isolatedTab = createRuntimeFromPlaywright({
206
+ browserName,
207
+ browserVersion,
208
+ coveragePlaywrightAPIAvailable,
209
+ ignoreErrorHook,
210
+ transformErrorHook,
211
+ isolatedTab: true,
212
+ })
213
+ }
214
+ return runtime
215
+ }
216
+
217
+ const getResult = async ({
218
+ page,
219
+ rootDirectoryUrl,
220
+ server,
221
+ transformErrorHook,
222
+ }) => {
223
+ const result = await page.evaluate(
224
+ /* eslint-disable no-undef */
225
+ /* istanbul ignore next */
226
+ () => {
227
+ return window.__html_supervisor__.getScriptExecutionResults()
228
+ },
229
+ /* eslint-enable no-undef */
230
+ )
231
+ const { status, scriptExecutionResults } = result
232
+ if (status === "errored") {
233
+ const { exceptionSource } = result
234
+ const error = evalException(exceptionSource, {
235
+ rootDirectoryUrl,
236
+ server,
237
+ transformErrorHook,
238
+ })
239
+ return {
240
+ status: "errored",
241
+ error,
242
+ namespace: scriptExecutionResults,
243
+ }
244
+ }
245
+ return {
246
+ status: "completed",
247
+ namespace: scriptExecutionResults,
248
+ }
249
+ }
250
+
251
+ const generateCoverageForPage = (scriptExecutionResults) => {
252
+ let istanbulCoverageComposed = null
253
+ Object.keys(scriptExecutionResults).forEach((fileRelativeUrl) => {
254
+ const istanbulCoverage = scriptExecutionResults[fileRelativeUrl].coverage
255
+ istanbulCoverageComposed = istanbulCoverageComposed
256
+ ? composeTwoFileByFileIstanbulCoverages(
257
+ istanbulCoverageComposed,
258
+ istanbulCoverage,
259
+ )
260
+ : istanbulCoverage
261
+ })
262
+ return istanbulCoverageComposed
263
+ }
264
+
265
+ const stopBrowser = async (browser) => {
266
+ const disconnected = browser.isConnected()
267
+ ? new Promise((resolve) => {
268
+ const disconnectedCallback = () => {
269
+ browser.removeListener("disconnected", disconnectedCallback)
270
+ resolve()
271
+ }
272
+ browser.on("disconnected", disconnectedCallback)
273
+ })
274
+ : Promise.resolve()
275
+
276
+ // for some reason without this 100ms timeout
277
+ // browser.close() never resolves (playwright does not like something)
278
+ await new Promise((resolve) => setTimeout(resolve, 100))
279
+ try {
280
+ await browser.close()
281
+ } catch (e) {
282
+ if (isTargetClosedError(e)) {
283
+ return
284
+ }
285
+ throw e
286
+ }
287
+ await disconnected
288
+ }
289
+
290
+ const launchBrowserUsingPlaywright = async ({
291
+ signal,
292
+ browserName,
293
+ stopOnExit,
294
+ playwrightOptions,
295
+ }) => {
296
+ const launchBrowserOperation = Abort.startOperation()
297
+ launchBrowserOperation.addAbortSignal(signal)
298
+ const playwright = await importPlaywright({ browserName })
299
+ if (stopOnExit) {
300
+ launchBrowserOperation.addAbortSource((abort) => {
301
+ return raceProcessTeardownEvents(
302
+ {
303
+ SIGHUP: true,
304
+ SIGTERM: true,
305
+ SIGINT: true,
306
+ beforeExit: true,
307
+ exit: true,
308
+ },
309
+ abort,
310
+ )
311
+ })
312
+ }
313
+ const browserClass = playwright[browserName]
314
+ try {
315
+ const browser = await browserClass.launch({
316
+ ...playwrightOptions,
317
+ // let's handle them to close properly browser + remove listener
318
+ // instead of relying on playwright to do so
319
+ handleSIGINT: false,
320
+ handleSIGTERM: false,
321
+ handleSIGHUP: false,
322
+ })
323
+ launchBrowserOperation.throwIfAborted()
324
+ return browser
325
+ } catch (e) {
326
+ if (launchBrowserOperation.signal.aborted && isTargetClosedError(e)) {
327
+ // rethrow the abort error
328
+ launchBrowserOperation.throwIfAborted()
329
+ }
330
+ throw e
331
+ } finally {
332
+ await launchBrowserOperation.end()
333
+ }
334
+ }
335
+
336
+ const importPlaywright = async ({ browserName }) => {
337
+ try {
338
+ const namespace = await import("playwright")
339
+ return namespace
340
+ } catch (e) {
341
+ if (e.code === "ERR_MODULE_NOT_FOUND") {
342
+ throw new Error(
343
+ createDetailedMessage(
344
+ `"playwright" not found. You need playwright in your dependencies to use "${browserName}"`,
345
+ {
346
+ suggestion: `npm install --save-dev playwright`,
347
+ },
348
+ ),
349
+ { cause: e },
350
+ )
351
+ }
352
+ throw e
353
+ }
354
+ }
355
+
356
+ const isTargetClosedError = (error) => {
357
+ if (error.message.match(/Protocol error \(.*?\): Target closed/)) {
358
+ return true
359
+ }
360
+ if (error.message.match(/Protocol error \(.*?\): Browser.*?closed/)) {
361
+ return true
362
+ }
363
+ if (error.message.includes("browserContext.close: Browser closed")) {
364
+ return true
365
+ }
366
+ return false
367
+ }
368
+
369
+ const trackPageToNotify = (page, { onError, onConsole }) => {
370
+ // https://github.com/GoogleChrome/puppeteer/blob/v1.4.0/docs/api.md#event-error
371
+ const removeErrorListener = registerEvent({
372
+ object: page,
373
+ eventType: "error",
374
+ callback: onError,
375
+ })
376
+ // https://github.com/GoogleChrome/puppeteer/blob/v1.4.0/docs/api.md#event-pageerror
377
+ const removePageErrorListener = registerEvent({
378
+ object: page,
379
+ eventType: "pageerror",
380
+ callback: onError,
381
+ })
382
+ // https://github.com/GoogleChrome/puppeteer/blob/v1.4.0/docs/api.md#event-console
383
+ const removeConsoleListener = registerEvent({
384
+ object: page,
385
+ eventType: "console",
386
+ // https://github.com/microsoft/playwright/blob/master/docs/api.md#event-console
387
+ callback: async (consoleMessage) => {
388
+ onConsole({
389
+ type: consoleMessage.type(),
390
+ text: `${extractTextFromConsoleMessage(consoleMessage)}
391
+ `,
392
+ })
393
+ },
394
+ })
395
+ return () => {
396
+ removeErrorListener()
397
+ removePageErrorListener()
398
+ removeConsoleListener()
399
+ }
400
+ }
401
+
402
+ const composeTransformer = (previousTransformer, transformer) => {
403
+ return async (value) => {
404
+ const transformedValue = await previousTransformer(value)
405
+ return transformer(transformedValue)
406
+ }
407
+ }
408
+
409
+ const extractTextFromConsoleMessage = (consoleMessage) => {
410
+ return consoleMessage.text()
411
+ // ensure we use a string so that istanbul won't try
412
+ // to put any coverage statement inside it
413
+ // ideally we should use uneval no ?
414
+ // eslint-disable-next-line no-new-func
415
+ // const functionEvaluatedBrowserSide = new Function(
416
+ // "value",
417
+ // `if (value instanceof Error) {
418
+ // return value.stack
419
+ // }
420
+ // return value`,
421
+ // )
422
+ // const argValues = await Promise.all(
423
+ // message.args().map(async (arg) => {
424
+ // const jsHandle = arg
425
+ // try {
426
+ // return await jsHandle.executionContext().evaluate(functionEvaluatedBrowserSide, jsHandle)
427
+ // } catch (e) {
428
+ // return String(jsHandle)
429
+ // }
430
+ // }),
431
+ // )
432
+ // const text = argValues.reduce((previous, value, index) => {
433
+ // let string
434
+ // if (typeof value === "object") string = JSON.stringify(value, null, " ")
435
+ // else string = String(value)
436
+ // if (index === 0) return `${previous}${string}`
437
+ // return `${previous} ${string}`
438
+ // }, "")
439
+ // return text
440
+ }
441
+
442
+ const registerEvent = ({ object, eventType, callback }) => {
443
+ object.on(eventType, callback)
444
+ return () => {
445
+ object.removeListener(eventType, callback)
446
+ }
447
+ }
448
+
449
+ const evalException = (
450
+ exceptionSource,
451
+ { rootDirectoryUrl, server, transformErrorHook },
452
+ ) => {
453
+ const script = new Script(exceptionSource, { filename: "" })
454
+ const error = script.runInThisContext()
455
+ if (error && error instanceof Error) {
456
+ const remoteRootRegexp = new RegExp(
457
+ escapeRegexpSpecialChars(`${server.origin}/`),
458
+ "g",
459
+ )
460
+ error.stack = error.stack.replace(remoteRootRegexp, rootDirectoryUrl)
461
+ error.message = error.message.replace(remoteRootRegexp, rootDirectoryUrl)
462
+ }
463
+ return transformErrorHook(error)
464
+ }
@@ -1,19 +1,6 @@
1
- import { createRuntimeFromPlaywright } from "@jsenv/core/src/internal/browser_launcher/from_playwright.js"
1
+ import { createRuntimeFromPlaywright } from "./from_playwright.js"
2
2
 
3
- export const chromiumRuntime = createRuntimeFromPlaywright({
4
- browserName: "chromium",
5
- browserVersion: "97.0.4666.0",
6
- coveragePlaywrightAPIAvailable: true,
7
- })
8
- export const chromiumTabRuntime = chromiumRuntime.tab
9
-
10
- export const firefoxRuntime = createRuntimeFromPlaywright({
11
- browserName: "firefox",
12
- browserVersion: "93.0",
13
- })
14
- export const firefoxTabRuntime = firefoxRuntime.tab
15
-
16
- export const webkitRuntime = createRuntimeFromPlaywright({
3
+ export const webkit = createRuntimeFromPlaywright({
17
4
  browserName: "webkit",
18
5
  browserVersion: "15.4",
19
6
  ignoreErrorHook: (error) => {
@@ -30,9 +17,8 @@ export const webkitRuntime = createRuntimeFromPlaywright({
30
17
  // Force error stack to contain the error message
31
18
  // because it's not the case on webkit
32
19
  error.stack = `${error.message}
33
- at ${error.stack}`
34
-
20
+ at ${error.stack}`
35
21
  return error
36
22
  },
37
23
  })
38
- export const webkitTabRuntime = webkitRuntime.tab
24
+ export const webkitIsolatedTab = webkit.isolatedTab
@@ -1,18 +1,9 @@
1
1
  import { findFreePort } from "@jsenv/server"
2
2
  import { createDetailedMessage } from "@jsenv/logger"
3
3
 
4
- import { processOptionsFromExecArgv } from "./process_options.js"
4
+ import { ExecOptions } from "./exec_options.js"
5
5
 
6
- const AVAILABLE_DEBUG_MODE = [
7
- "none",
8
- "inherit",
9
- "inspect",
10
- "inspect-brk",
11
- "debug",
12
- "debug-brk",
13
- ]
14
-
15
- export const createChildProcessOptions = async ({
6
+ export const createChildExecOptions = async ({
16
7
  signal = new AbortController().signal,
17
8
  // https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_automatically-attach-debugger-to-nodejs-subprocesses
18
9
  processExecArgv = process.execArgv,
@@ -33,22 +24,28 @@ export const createChildProcessOptions = async ({
33
24
  }),
34
25
  )
35
26
  }
36
-
37
- const childProcessOptions = processOptionsFromExecArgv(processExecArgv)
38
-
39
- await mutateDebuggingOptions(childProcessOptions, {
27
+ const childExecOptions = ExecOptions.fromExecArgv(processExecArgv)
28
+ await mutateDebuggingOptions(childExecOptions, {
40
29
  signal,
41
30
  processDebugPort,
42
31
  debugMode,
43
32
  debugPort,
44
33
  debugModeInheritBreak,
45
34
  })
46
-
47
- return childProcessOptions
35
+ return childExecOptions
48
36
  }
49
37
 
38
+ const AVAILABLE_DEBUG_MODE = [
39
+ "none",
40
+ "inherit",
41
+ "inspect",
42
+ "inspect-brk",
43
+ "debug",
44
+ "debug-brk",
45
+ ]
46
+
50
47
  const mutateDebuggingOptions = async (
51
- childProcessOptions,
48
+ childExecOptions,
52
49
  {
53
50
  // ensure multiline
54
51
  signal,
@@ -58,7 +55,7 @@ const mutateDebuggingOptions = async (
58
55
  debugModeInheritBreak,
59
56
  },
60
57
  ) => {
61
- const parentDebugInfo = getDebugInfo(childProcessOptions)
58
+ const parentDebugInfo = getDebugInfo(childExecOptions)
62
59
  const parentDebugModeOptionName = parentDebugInfo.debugModeOptionName
63
60
  const parentDebugPortOptionName = parentDebugInfo.debugPortOptionName
64
61
  const childDebugModeOptionName = getChildDebugModeOptionName({
@@ -70,10 +67,10 @@ const mutateDebuggingOptions = async (
70
67
  if (!childDebugModeOptionName) {
71
68
  // remove debug mode and debug port fron child options
72
69
  if (parentDebugModeOptionName) {
73
- delete childProcessOptions[parentDebugModeOptionName]
70
+ delete childExecOptions[parentDebugModeOptionName]
74
71
  }
75
72
  if (parentDebugPortOptionName) {
76
- delete childProcessOptions[parentDebugPortOptionName]
73
+ delete childExecOptions[parentDebugPortOptionName]
77
74
  }
78
75
  return
79
76
  }
@@ -83,9 +80,9 @@ const mutateDebuggingOptions = async (
83
80
  parentDebugModeOptionName &&
84
81
  parentDebugModeOptionName !== childDebugModeOptionName
85
82
  ) {
86
- delete childProcessOptions[parentDebugModeOptionName]
83
+ delete childExecOptions[parentDebugModeOptionName]
87
84
  }
88
- childProcessOptions[childDebugModeOptionName] = ""
85
+ childExecOptions[childDebugModeOptionName] = ""
89
86
 
90
87
  // this is required because vscode does not
91
88
  // support assigning a child spawned without a specific port
@@ -95,9 +92,9 @@ const mutateDebuggingOptions = async (
95
92
  : debugPort
96
93
  // replace child debug port
97
94
  if (parentDebugPortOptionName) {
98
- delete childProcessOptions[parentDebugPortOptionName]
95
+ delete childExecOptions[parentDebugPortOptionName]
99
96
  }
100
- childProcessOptions[childDebugModeOptionName] = portToArgValue(
97
+ childExecOptions[childDebugModeOptionName] = portToArgValue(
101
98
  childDebugPortOptionValue,
102
99
  )
103
100
  }
@@ -110,22 +107,18 @@ const getChildDebugModeOptionName = ({
110
107
  if (debugMode === "none") {
111
108
  return undefined
112
109
  }
113
-
114
110
  if (debugMode !== "inherit") {
115
111
  return `--${debugMode}`
116
112
  }
117
-
118
113
  if (!parentDebugModeOptionName) {
119
114
  return undefined
120
115
  }
121
-
122
116
  if (!debugModeInheritBreak && parentDebugModeOptionName === "--inspect-brk") {
123
117
  return "--inspect"
124
118
  }
125
119
  if (!debugModeInheritBreak && parentDebugModeOptionName === "--debug-brk") {
126
120
  return "--debug"
127
121
  }
128
-
129
122
  return parentDebugModeOptionName
130
123
  }
131
124
 
@@ -144,7 +137,6 @@ const getDebugInfo = (processOptions) => {
144
137
  debugPortOptionName: "--inspect-port",
145
138
  }
146
139
  }
147
-
148
140
  const inspectBreakOption = processOptions["--inspect-brk"]
149
141
  if (inspectBreakOption !== undefined) {
150
142
  return {
@@ -152,7 +144,6 @@ const getDebugInfo = (processOptions) => {
152
144
  debugPortOptionName: "--inspect-port",
153
145
  }
154
146
  }
155
-
156
147
  const debugOption = processOptions["--debug"]
157
148
  if (debugOption !== undefined) {
158
149
  return {
@@ -160,7 +151,6 @@ const getDebugInfo = (processOptions) => {
160
151
  debugPortOptionName: "--debug-port",
161
152
  }
162
153
  }
163
-
164
154
  const debugBreakOption = processOptions["--debug-brk"]
165
155
  if (debugBreakOption !== undefined) {
166
156
  return {
@@ -168,10 +158,9 @@ const getDebugInfo = (processOptions) => {
168
158
  debugPortOptionName: "--debug-port",
169
159
  }
170
160
  }
171
-
172
161
  return {}
173
162
  }
174
163
 
175
- export const processIsExecutedByVSCode = () => {
176
- return typeof process.env.VSCODE_PID === "string"
177
- }
164
+ // export const processIsExecutedByVSCode = () => {
165
+ // return typeof process.env.VSCODE_PID === "string"
166
+ // }
@@ -1,25 +1,8 @@
1
1
  import v8 from "node:v8"
2
2
  import { uneval } from "@jsenv/uneval"
3
3
 
4
- const NODE_EXECUTION_DYNAMIC_IMPORT_URL = new URL(
5
- "./node_execution_dynamic_import.js",
6
- import.meta.url,
7
- ).href
8
- const NODE_EXECUTION_SYSTEMJS_URL = new URL(
9
- "./node_execution_systemjs.js",
10
- import.meta.url,
11
- ).href
12
-
13
4
  const ACTIONS_AVAILABLE = {
14
- "execute-using-dynamic-import": async (executeParams) => {
15
- const { execute } = await import(NODE_EXECUTION_DYNAMIC_IMPORT_URL)
16
- return execute(executeParams)
17
- },
18
- "execute-using-systemjs": async (executeParams) => {
19
- const { execute } = await import(NODE_EXECUTION_SYSTEMJS_URL)
20
- return execute(executeParams)
21
- },
22
- "execute-using-import": async ({ fileUrl }) => {
5
+ "execute-using-dynamic-import": async ({ fileUrl }) => {
23
6
  const namespace = await import(fileUrl)
24
7
  const namespaceResolved = {}
25
8
  await Promise.all([