@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,355 +0,0 @@
1
- import {
2
- resolveUrl,
3
- assertFilePresence,
4
- urlToRelativeUrl,
5
- urlToExtension,
6
- } from "@jsenv/filesystem"
7
-
8
- import { COMPILE_PROXY_BUILD_URL } from "@jsenv/core/dist/build_manifest.js"
9
- import { filterV8Coverage } from "@jsenv/core/src/internal/coverage/v8_coverage_from_directory.js"
10
- import { composeTwoFileByFileIstanbulCoverages } from "@jsenv/core/src/internal/coverage/istanbul_coverage_composition.js"
11
- import { evalSource } from "@jsenv/core/src/internal/node_launcher/eval_source.js"
12
- import { escapeRegexpSpecialCharacters } from "@jsenv/core/src/internal/regexp_escape.js"
13
-
14
- import { getBrowserRuntimeProfile } from "./browser_runtime_profile.js"
15
-
16
- export const executeHtmlFile = async (
17
- fileRelativeUrl,
18
- {
19
- runtime,
20
- executeOperation,
21
- projectDirectoryUrl,
22
- compileServerOrigin,
23
- compileServerId,
24
- jsenvDirectoryRelativeUrl,
25
- page,
26
-
27
- // measurePerformance,
28
- collectPerformance,
29
- collectCoverage,
30
- coverageIgnorePredicate,
31
- coverageForceIstanbul,
32
- coveragePlaywrightAPIAvailable,
33
- transformErrorHook,
34
- forceSource,
35
- forceCompilation,
36
- },
37
- ) => {
38
- const fileUrl = resolveUrl(fileRelativeUrl, projectDirectoryUrl)
39
- if (urlToExtension(fileUrl) !== ".html") {
40
- throw new Error(
41
- `the file to execute must use .html extension, received ${fileRelativeUrl}.`,
42
- )
43
- }
44
-
45
- await assertFilePresence(fileUrl)
46
-
47
- const compileProxyProjectRelativeUrl = urlToRelativeUrl(
48
- COMPILE_PROXY_BUILD_URL,
49
- projectDirectoryUrl,
50
- )
51
- const compileProxyClientUrl = resolveUrl(
52
- compileProxyProjectRelativeUrl,
53
- compileServerOrigin,
54
- )
55
- executeOperation.throwIfAborted()
56
- await page.goto(compileProxyClientUrl)
57
- executeOperation.throwIfAborted()
58
-
59
- const coverageHandledFromOutside =
60
- coveragePlaywrightAPIAvailable && !coverageForceIstanbul
61
- const browserRuntimeProfile = await getBrowserRuntimeProfile({
62
- page,
63
- compileServerId,
64
- runtime,
65
- // js coverage
66
- // When instrumentation CAN be handed by playwright
67
- // https://playwright.dev/docs/api/class-chromiumcoverage#chromiumcoveragestartjscoverageoptions
68
- // coverageHandledFromOutside is true and "transform-instrument" becomes non mandatory
69
- coverageHandledFromOutside,
70
- forceSource,
71
- forceCompilation,
72
- })
73
-
74
- try {
75
- let executionResult
76
- const { compileId } = browserRuntimeProfile
77
- executeOperation.throwIfAborted()
78
- if (compileId) {
79
- executionResult = await executeCompiledVersion({
80
- projectDirectoryUrl,
81
- compileServerOrigin,
82
- fileRelativeUrl,
83
- page,
84
- jsenvDirectoryRelativeUrl,
85
- compileId,
86
- collectCoverage,
87
- transformErrorHook,
88
- })
89
- } else {
90
- executionResult = await executeSource({
91
- projectDirectoryUrl,
92
- compileServerOrigin,
93
- fileRelativeUrl,
94
- page,
95
- collectCoverage,
96
- coverageIgnorePredicate,
97
- transformErrorHook,
98
- })
99
- }
100
-
101
- if (collectPerformance) {
102
- const performance = await page.evaluate(
103
- /* istanbul ignore next */
104
- () => {
105
- // eslint-disable-next-line no-undef
106
- const { performance } = window
107
- if (!performance) {
108
- return null
109
- }
110
-
111
- const measures = {}
112
- const measurePerfEntries = performance.getEntriesByType("measure")
113
- measurePerfEntries.forEach((measurePerfEntry) => {
114
- measures[measurePerfEntry.name] = measurePerfEntry.duration
115
- })
116
-
117
- return {
118
- timeOrigin: performance.timeOrigin,
119
- timing: performance.timing.toJSON(),
120
- navigation: performance.navigation.toJSON(),
121
- measures,
122
- }
123
- },
124
- )
125
- executionResult.performance = performance
126
- }
127
-
128
- return executionResult
129
- } catch (error) {
130
- // if browser is closed due to abort
131
- // before it is able to finish evaluate we can safely ignore
132
- // and rethrow with current abort error
133
- if (executeOperation.signal.aborted && isBrowserClosedError(error)) {
134
- executeOperation.throwIfAborted()
135
- }
136
- throw error
137
- }
138
- }
139
-
140
- const isBrowserClosedError = (error) => {
141
- if (error.message.match(/browserContext.newPage: Browser closed/)) {
142
- return true
143
- }
144
-
145
- if (error.message.match(/^Protocol error \(.*?\): Target closed/)) {
146
- return true
147
- }
148
-
149
- return false
150
- }
151
-
152
- const executeSource = async ({
153
- projectDirectoryUrl,
154
- compileServerOrigin,
155
- fileRelativeUrl,
156
- page,
157
- collectCoverage,
158
- coverageIgnorePredicate,
159
- transformErrorHook,
160
- }) => {
161
- let transformResult = (result) => result
162
-
163
- if (collectCoverage) {
164
- await page.coverage.startJSCoverage({
165
- // reportAnonymousScripts: true,
166
- })
167
- transformResult = composeTransformer(transformResult, async (result) => {
168
- const v8CoveragesWithWebUrls = await page.coverage.stopJSCoverage()
169
- // we convert urls starting with http:// to file:// because we later
170
- // convert the url to filesystem path in istanbulCoverageFromV8Coverage function
171
- const v8CoveragesWithFsUrls = v8CoveragesWithWebUrls.map(
172
- (v8CoveragesWithWebUrl) => {
173
- const relativeUrl = urlToRelativeUrl(
174
- v8CoveragesWithWebUrl.url,
175
- compileServerOrigin,
176
- )
177
- const fsUrl = resolveUrl(relativeUrl, projectDirectoryUrl)
178
- return {
179
- ...v8CoveragesWithWebUrl,
180
- url: fsUrl,
181
- }
182
- },
183
- )
184
- const coverage = filterV8Coverage(
185
- { result: v8CoveragesWithFsUrls },
186
- {
187
- coverageIgnorePredicate,
188
- },
189
- )
190
- return {
191
- ...result,
192
- coverage,
193
- }
194
- })
195
- } else {
196
- transformResult = composeTransformer(transformResult, (result) => {
197
- const { namespace: fileExecutionResultMap } = result
198
- Object.keys(fileExecutionResultMap).forEach((fileRelativeUrl) => {
199
- delete fileExecutionResultMap[fileRelativeUrl].coverage
200
- })
201
- return result
202
- })
203
- }
204
-
205
- const fileClientUrl = resolveUrl(fileRelativeUrl, `${compileServerOrigin}/`)
206
- await page.goto(fileClientUrl, { timeout: 0 })
207
-
208
- const executionResult = await page.evaluate(
209
- /* istanbul ignore next */
210
- () => {
211
- // eslint-disable-next-line no-undef
212
- return window.__jsenv__.executionResultPromise
213
- },
214
- )
215
-
216
- const { fileExecutionResultMap } = executionResult
217
- const fileErrored = Object.keys(fileExecutionResultMap).find(
218
- (fileRelativeUrl) => {
219
- const fileExecutionResult = fileExecutionResultMap[fileRelativeUrl]
220
- return fileExecutionResult.status === "errored"
221
- },
222
- )
223
-
224
- if (fileErrored) {
225
- const { exceptionSource } = fileExecutionResultMap[fileErrored]
226
- const error = evalException(exceptionSource, {
227
- projectDirectoryUrl,
228
- compileServerOrigin,
229
- transformErrorHook,
230
- })
231
- return transformResult({
232
- status: "errored",
233
- error,
234
- namespace: fileExecutionResultMap,
235
- })
236
- }
237
-
238
- return transformResult({
239
- status: "completed",
240
- namespace: fileExecutionResultMap,
241
- })
242
- }
243
-
244
- const executeCompiledVersion = async ({
245
- projectDirectoryUrl,
246
- compileServerOrigin,
247
- fileRelativeUrl,
248
- page,
249
- jsenvDirectoryRelativeUrl,
250
- compileId,
251
- collectCoverage,
252
- transformErrorHook,
253
- }) => {
254
- let transformResult = (result) => result
255
- if (collectCoverage) {
256
- transformResult = composeTransformer(transformResult, async (result) => {
257
- result.coverage = generateCoverageForPage(fileExecutionResultMap)
258
- return result
259
- })
260
- } else {
261
- transformResult = composeTransformer(transformResult, (result) => {
262
- const { namespace: fileExecutionResultMap } = result
263
- Object.keys(fileExecutionResultMap).forEach((fileRelativeUrl) => {
264
- delete fileExecutionResultMap[fileRelativeUrl].coverage
265
- })
266
- return result
267
- })
268
- }
269
-
270
- const compileDirectoryRelativeUrl = `${jsenvDirectoryRelativeUrl}${compileId}/`
271
- const compileDirectoryRemoteUrl = resolveUrl(
272
- compileDirectoryRelativeUrl,
273
- compileServerOrigin,
274
- )
275
- const fileClientUrl = resolveUrl(fileRelativeUrl, compileDirectoryRemoteUrl)
276
- await page.goto(fileClientUrl, { timeout: 0 })
277
-
278
- const executionResult = await page.evaluate(
279
- /* eslint-disable no-undef */
280
- /* istanbul ignore next */
281
- () => {
282
- return window.__jsenv__.executionResultPromise
283
- },
284
- /* eslint-enable no-undef */
285
- )
286
-
287
- const { fileExecutionResultMap } = executionResult
288
- const fileErrored = Object.keys(fileExecutionResultMap).find(
289
- (fileRelativeUrl) => {
290
- const fileExecutionResult = fileExecutionResultMap[fileRelativeUrl]
291
- return fileExecutionResult.status === "errored"
292
- },
293
- )
294
-
295
- if (fileErrored) {
296
- const { exceptionSource } = fileExecutionResultMap[fileErrored]
297
- const error = evalException(exceptionSource, {
298
- projectDirectoryUrl,
299
- compileServerOrigin,
300
- transformErrorHook,
301
- })
302
- return transformResult({
303
- status: "errored",
304
- error,
305
- namespace: fileExecutionResultMap,
306
- })
307
- }
308
-
309
- return transformResult({
310
- status: "completed",
311
- namespace: fileExecutionResultMap,
312
- })
313
- }
314
-
315
- const generateCoverageForPage = (fileExecutionResultMap) => {
316
- let istanbulCoverageComposed = null
317
- Object.keys(fileExecutionResultMap).forEach((fileRelativeUrl) => {
318
- const istanbulCoverage = fileExecutionResultMap[fileRelativeUrl].coverage
319
- istanbulCoverageComposed = istanbulCoverageComposed
320
- ? composeTwoFileByFileIstanbulCoverages(
321
- istanbulCoverageComposed,
322
- istanbulCoverage,
323
- )
324
- : istanbulCoverage
325
- })
326
-
327
- return istanbulCoverageComposed
328
- }
329
-
330
- const evalException = (
331
- exceptionSource,
332
- { projectDirectoryUrl, compileServerOrigin, transformErrorHook },
333
- ) => {
334
- let error = evalSource(exceptionSource)
335
-
336
- if (error && error instanceof Error) {
337
- const remoteRootRegexp = new RegExp(
338
- escapeRegexpSpecialCharacters(`${compileServerOrigin}/`),
339
- "g",
340
- )
341
- error.stack = error.stack.replace(remoteRootRegexp, projectDirectoryUrl)
342
- error.message = error.message.replace(remoteRootRegexp, projectDirectoryUrl)
343
-
344
- error = transformErrorHook(error)
345
- }
346
-
347
- return error
348
- }
349
-
350
- const composeTransformer = (previousTransformer, transformer) => {
351
- return (value) => {
352
- const transformedValue = previousTransformer(value)
353
- return transformer(transformedValue)
354
- }
355
- }
@@ -1,320 +0,0 @@
1
- // https://github.com/microsoft/playwright/blob/master/docs/api.md
2
-
3
- import { createDetailedMessage } from "@jsenv/logger"
4
- import {
5
- Abort,
6
- createCallbackListNotifiedOnce,
7
- createCallbackList,
8
- raceProcessTeardownEvents,
9
- } from "@jsenv/abort"
10
- import { memoize } from "@jsenv/filesystem"
11
-
12
- import { trackPageErrorsAndLogs } from "./page_errors_and_logs.js"
13
- import { executeHtmlFile } from "./execute_html_file.js"
14
-
15
- export const createRuntimeFromPlaywright = ({
16
- browserName,
17
- browserVersion,
18
- coveragePlaywrightAPIAvailable = false,
19
- ignoreErrorHook = () => false,
20
- transformErrorHook = (error) => error,
21
- tab = false,
22
- }) => {
23
- const runtime = {
24
- name: browserName,
25
- version: browserVersion,
26
- }
27
-
28
- let browserAndContextPromise
29
- runtime.launch = async ({
30
- signal = new AbortController().signal,
31
- executablePath,
32
- browserServerLogLevel,
33
-
34
- projectDirectoryUrl,
35
- compileServerOrigin,
36
- compileServerId,
37
- jsenvDirectoryRelativeUrl,
38
-
39
- collectPerformance,
40
- measurePerformance,
41
- collectCoverage,
42
- coverageIgnorePredicate,
43
- coverageForceIstanbul,
44
-
45
- headless = true,
46
- stopOnExit = true,
47
- ignoreHTTPSErrors = true,
48
- stopAfterAllExecutionCallbackList,
49
- forceCompilation,
50
- }) => {
51
- const stopCallbackList = createCallbackListNotifiedOnce()
52
- const stoppedCallbackList = createCallbackListNotifiedOnce()
53
- const errorCallbackList = createCallbackList()
54
- const outputCallbackList = createCallbackList()
55
-
56
- const stop = memoize(async (reason) => {
57
- await stopCallbackList.notify({ reason })
58
- stoppedCallbackList.notify({ reason })
59
- return { graceful: false }
60
- })
61
- const closeBrowser = async () => {
62
- const { browser } = await browserAndContextPromise
63
- browserAndContextPromise = null
64
- await stopBrowser(browser)
65
- }
66
-
67
- if (
68
- !browserAndContextPromise ||
69
- !tab ||
70
- !stopAfterAllExecutionCallbackList
71
- ) {
72
- browserAndContextPromise = (async () => {
73
- const browser = await launchBrowserUsingPlaywright({
74
- signal,
75
- browserName,
76
- stopOnExit,
77
- playwrightOptions: {
78
- headless,
79
- executablePath,
80
- },
81
- })
82
- const browserContext = await browser.newContext({ ignoreHTTPSErrors })
83
- return { browser, browserContext }
84
- })()
85
-
86
- // when using chromium tab during multiple executions we reuse the chromium browser
87
- // and only once all executions are done we close the browser
88
- if (tab && stopAfterAllExecutionCallbackList) {
89
- stopAfterAllExecutionCallbackList.add(async () => {
90
- await closeBrowser()
91
- })
92
- } else {
93
- stopCallbackList.add(async () => {
94
- await closeBrowser()
95
- })
96
- }
97
- }
98
-
99
- const { browser, browserContext } = await browserAndContextPromise
100
- // https://github.com/GoogleChrome/puppeteer/blob/v1.4.0/docs/api.md#event-disconnected
101
- browser.on("disconnected", () => {
102
- stop()
103
- })
104
-
105
- const page = await browserContext.newPage()
106
- stoppedCallbackList.add(async () => {
107
- try {
108
- await page.close()
109
- } catch (e) {
110
- if (isTargetClosedError(e)) {
111
- return
112
- }
113
- throw e
114
- }
115
- })
116
- const stopTrackingToNotify = trackPageErrorsAndLogs(page, {
117
- onError: (error) => {
118
- error = transformErrorHook(error)
119
- if (!ignoreErrorHook(error)) {
120
- errorCallbackList.notify(error)
121
- }
122
- },
123
- onConsole: outputCallbackList.notify,
124
- })
125
- stoppedCallbackList.add(stopTrackingToNotify)
126
-
127
- const execute = createExecuteHook({
128
- page,
129
- runtime,
130
- browserServerLogLevel,
131
-
132
- projectDirectoryUrl,
133
- compileServerOrigin,
134
- compileServerId,
135
- jsenvDirectoryRelativeUrl,
136
-
137
- collectPerformance,
138
- measurePerformance,
139
- collectCoverage,
140
- coverageIgnorePredicate,
141
- coverageForceIstanbul,
142
-
143
- coveragePlaywrightAPIAvailable,
144
- transformErrorHook,
145
- forceCompilation,
146
- })
147
-
148
- return {
149
- stopCallbackList,
150
- stoppedCallbackList,
151
- errorCallbackList,
152
- outputCallbackList,
153
- execute,
154
- stop,
155
- }
156
- }
157
- if (!tab) {
158
- runtime.tab = createRuntimeFromPlaywright({
159
- browserName,
160
- browserVersion,
161
- coveragePlaywrightAPIAvailable,
162
- ignoreErrorHook,
163
- transformErrorHook,
164
- tab: true,
165
- })
166
- }
167
- return runtime
168
- }
169
-
170
- const stopBrowser = async (browser) => {
171
- const disconnected = browser.isConnected()
172
- ? new Promise((resolve) => {
173
- const disconnectedCallback = () => {
174
- browser.removeListener("disconnected", disconnectedCallback)
175
- resolve()
176
- }
177
- browser.on("disconnected", disconnectedCallback)
178
- })
179
- : Promise.resolve()
180
-
181
- // for some reason without this 100ms timeout
182
- // browser.close() never resolves (playwright does not like something)
183
- await new Promise((resolve) => setTimeout(resolve, 100))
184
-
185
- try {
186
- await browser.close()
187
- } catch (e) {
188
- if (isTargetClosedError(e)) {
189
- return
190
- }
191
- throw e
192
- }
193
- await disconnected
194
- }
195
-
196
- const launchBrowserUsingPlaywright = async ({
197
- signal,
198
- browserName,
199
- stopOnExit,
200
- playwrightOptions,
201
- }) => {
202
- const launchBrowserOperation = Abort.startOperation()
203
- launchBrowserOperation.addAbortSignal(signal)
204
- const playwright = await importPlaywright({ browserName })
205
- if (stopOnExit) {
206
- launchBrowserOperation.addAbortSource((abort) => {
207
- return raceProcessTeardownEvents(
208
- {
209
- SIGHUP: true,
210
- SIGTERM: true,
211
- SIGINT: true,
212
- beforeExit: true,
213
- exit: true,
214
- },
215
- abort,
216
- )
217
- })
218
- }
219
-
220
- const browserClass = playwright[browserName]
221
- try {
222
- const browser = await browserClass.launch({
223
- ...playwrightOptions,
224
- // let's handle them to close properly browser + remove listener
225
- // instead of relying on playwright to do so
226
- handleSIGINT: false,
227
- handleSIGTERM: false,
228
- handleSIGHUP: false,
229
- })
230
- launchBrowserOperation.throwIfAborted()
231
- return browser
232
- } catch (e) {
233
- if (launchBrowserOperation.signal.aborted && isTargetClosedError(e)) {
234
- // rethrow the abort error
235
- launchBrowserOperation.throwIfAborted()
236
- }
237
- throw e
238
- } finally {
239
- await launchBrowserOperation.end()
240
- }
241
- }
242
-
243
- const importPlaywright = async ({ browserName }) => {
244
- try {
245
- const namespace = await import("playwright")
246
- return namespace
247
- } catch (e) {
248
- if (e.code === "ERR_MODULE_NOT_FOUND") {
249
- throw new Error(
250
- createDetailedMessage(
251
- `"playwright" not found. You need playwright in your dependencies when using "${browserName}Runtime"`,
252
- {
253
- suggestion: `npm install --save-dev playwright`,
254
- },
255
- ),
256
- { cause: e },
257
- )
258
- }
259
- throw e
260
- }
261
- }
262
-
263
- const createExecuteHook = ({
264
- page,
265
- runtime,
266
- projectDirectoryUrl,
267
- compileServerOrigin,
268
- compileServerId,
269
- jsenvDirectoryRelativeUrl,
270
-
271
- collectPerformance,
272
- measurePerformance,
273
- collectCoverage,
274
- coverageIgnorePredicate,
275
- coverageForceIstanbul,
276
-
277
- coveragePlaywrightAPIAvailable,
278
- transformErrorHook,
279
- forceCompilation,
280
- }) => {
281
- const execute = async ({ signal, fileRelativeUrl }) => {
282
- const executeOperation = Abort.startOperation()
283
- executeOperation.addAbortSignal(signal)
284
- executeOperation.throwIfAborted()
285
- const result = await executeHtmlFile(fileRelativeUrl, {
286
- runtime,
287
- executeOperation,
288
-
289
- projectDirectoryUrl,
290
- compileServerOrigin,
291
- compileServerId,
292
- jsenvDirectoryRelativeUrl,
293
-
294
- page,
295
- measurePerformance,
296
- collectPerformance,
297
- collectCoverage,
298
- coverageForceIstanbul,
299
- coveragePlaywrightAPIAvailable,
300
- coverageIgnorePredicate,
301
- transformErrorHook,
302
- forceCompilation,
303
- })
304
- return result
305
- }
306
- return execute
307
- }
308
-
309
- const isTargetClosedError = (error) => {
310
- if (error.message.match(/Protocol error \(.*?\): Target closed/)) {
311
- return true
312
- }
313
- if (error.message.match(/Protocol error \(.*?\): Browser.*?closed/)) {
314
- return true
315
- }
316
- if (error.message.includes("browserContext.close: Browser closed")) {
317
- return true
318
- }
319
- return false
320
- }