@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
@@ -1,65 +0,0 @@
1
- import { createHash } from "node:crypto"
2
-
3
- // https://github.com/rollup/rollup/blob/19e50af3099c2f627451a45a84e2fa90d20246d5/src/utils/FileEmitter.ts#L47
4
- export const generateContentHash = (
5
- stringOrBuffer,
6
- {
7
- contentType = "application/octet-stream",
8
- lineBreakNormalization = false,
9
- } = {},
10
- ) => {
11
- const hash = createHash("sha256")
12
- hash.update(
13
- lineBreakNormalization && contentTypeIsTextual(contentType)
14
- ? normalizeLineBreaks(stringOrBuffer)
15
- : stringOrBuffer,
16
- )
17
- return hash.digest("hex").slice(0, 8)
18
- }
19
-
20
- const contentTypeIsTextual = (contentType) => {
21
- if (contentType.startsWith("text/")) {
22
- return true
23
- }
24
- // catch things like application/manifest+json, application/importmap+json
25
- if (/^application\/\w+\+json$/.test(contentType)) {
26
- return true
27
- }
28
- if (CONTENT_TYPE_AS_TEXT.includes(contentType)) {
29
- return true
30
- }
31
- return false
32
- }
33
-
34
- const CONTENT_TYPE_AS_TEXT = [
35
- "application/javascript",
36
- "application/json",
37
- "image/svg+xml",
38
- ]
39
-
40
- const normalizeLineBreaks = (stringOrBuffer) => {
41
- if (typeof stringOrBuffer === "string") {
42
- const stringWithLinuxBreaks = stringOrBuffer.replace(/\r\n/g, "\n")
43
- return stringWithLinuxBreaks
44
- }
45
- return normalizeLineBreaksForBuffer(stringOrBuffer)
46
- }
47
-
48
- // https://github.com/nodejs/help/issues/1738#issuecomment-458460503
49
- const normalizeLineBreaksForBuffer = (buffer) => {
50
- const int32Array = new Int32Array(buffer, 0, buffer.length)
51
- const int32ArrayWithLineBreaksNormalized = int32Array.filter(
52
- (element, index, typedArray) => {
53
- if (element === 0x0d) {
54
- if (typedArray[index + 1] === 0x0a) {
55
- // Windows -> Unix
56
- return false
57
- }
58
- // Mac OS -> Unix
59
- typedArray[index] = 0x0a
60
- }
61
- return true
62
- },
63
- )
64
- return Buffer.from(int32ArrayWithLineBreaksNormalized)
65
- }
@@ -1,48 +0,0 @@
1
- export const parseWebmanifestRessource = (
2
- webmanifestRessource,
3
- { notifyReferenceFound },
4
- { minify },
5
- ) => {
6
- // const manifestUrl = manifestTarget.url
7
- const manifestString = String(webmanifestRessource.bufferBeforeBuild)
8
-
9
- const manifest = JSON.parse(manifestString)
10
- const { icons = [] } = manifest
11
-
12
- const iconReferences = icons.map((icon, index) => {
13
- const iconReference = notifyReferenceFound({
14
- referenceLabel: `web manifest icon ${index}`,
15
- ressourceSpecifier: icon.src,
16
- })
17
- return iconReference
18
- })
19
-
20
- return ({ getUrlRelativeToImporter }) => {
21
- if (icons.length === 0) {
22
- if (minify) {
23
- // this is to remove eventual whitespaces
24
- webmanifestRessource.buildEnd(JSON.stringify(manifest))
25
- return
26
- }
27
- webmanifestRessource.buildEnd(JSON.stringify(manifest, null, " "))
28
- return
29
- }
30
-
31
- const iconsAfterBuild = icons.map((icon, index) => {
32
- const iconAfterBuild = { ...icon }
33
- iconAfterBuild.src = getUrlRelativeToImporter(
34
- iconReferences[index].ressource,
35
- )
36
- return iconAfterBuild
37
- })
38
- const manifestAfterBuild = { ...manifest }
39
- manifestAfterBuild.icons = iconsAfterBuild
40
- if (minify) {
41
- webmanifestRessource.buildEnd(JSON.stringify(manifestAfterBuild))
42
- return
43
- }
44
- webmanifestRessource.buildEnd(
45
- JSON.stringify(manifestAfterBuild, null, " "),
46
- )
47
- }
48
- }
@@ -1,187 +0,0 @@
1
- // https://github.com/snowpackjs/snowpack/blob/main/esinstall/src/rollup-plugins/rollup-plugin-wrap-install-targets.ts
2
-
3
- import { readFileSync } from "node:fs"
4
- import { fileURLToPath } from "node:url"
5
- import { VM as VM2 } from "vm2"
6
- import isValidIdentifier from "is-valid-identifier"
7
- import resolve from "resolve"
8
- import { init, parse } from "cjs-module-lexer"
9
- import { fileSystemPathToUrl } from "@jsenv/filesystem"
10
-
11
- export const rollupPluginCommonJsNamedExports = ({ logger }) => {
12
- const inputSummaries = {}
13
- const cjsScannedNamedExports = {}
14
-
15
- return {
16
- async buildStart({ input }) {
17
- await init()
18
-
19
- Object.keys(input).forEach((key) => {
20
- const inputFilePath = input[key]
21
- const inputFileUrl = fileSystemPathToUrl(inputFilePath)
22
- inputSummaries[inputFileUrl] = {
23
- all: true,
24
- default: true,
25
- namespace: true,
26
- named: [],
27
- }
28
-
29
- const cjsExports =
30
- detectStaticExports({ logger, fileUrl: inputFileUrl }) ||
31
- detectExportsUsingSandboxedRuntime({ logger, fileUrl: inputFileUrl })
32
-
33
- if (cjsExports && cjsExports.length) {
34
- cjsScannedNamedExports[inputFileUrl] = cjsExports
35
- }
36
- input[key] = `jsenv:${inputFileUrl}`
37
- })
38
- },
39
- resolveId(source) {
40
- if (source.startsWith("jsenv:")) {
41
- return source
42
- }
43
-
44
- return null
45
- },
46
- load(id) {
47
- if (!id.startsWith("jsenv:")) {
48
- return null
49
- }
50
-
51
- const inputFileUrl = id.substring("jsenv:".length)
52
- const inputSummary = inputSummaries[inputFileUrl]
53
- let uniqueNamedExports = inputSummary.named
54
- const scannedNamedExports = cjsScannedNamedExports[inputFileUrl]
55
- if (scannedNamedExports) {
56
- uniqueNamedExports = scannedNamedExports || []
57
- inputSummary.default = true
58
- }
59
- const codeForExports = generateCodeForExports({
60
- uniqueNamedExports,
61
- inputSummary,
62
- inputFileUrl,
63
- })
64
- return codeForExports
65
- },
66
- }
67
- }
68
-
69
- /*
70
- * Attempt #1: Static analysis: Lower Fidelity, but faster.
71
- * Do our best job to statically scan a file for named exports. This uses "cjs-module-lexer", the
72
- * same CJS export scanner that Node.js uses internally. Very fast, but only works on some modules,
73
- * depending on how they were build/written/compiled.
74
- */
75
- const detectStaticExports = ({ logger, fileUrl, visited = new Set() }) => {
76
- const isMainEntrypoint = visited.size === 0
77
- // Prevent infinite loops via circular dependencies.
78
- if (visited.has(fileUrl)) {
79
- return []
80
- }
81
- visited.add(fileUrl)
82
-
83
- const fileContents = readFileSync(new URL(fileUrl), "utf8")
84
- try {
85
- const { exports, reexports } = parse(fileContents)
86
- // If re-exports were detected (`exports.foo = require(...)`) then resolve them here.
87
- let resolvedReexports = []
88
- if (reexports.length > 0) {
89
- reexports.forEach((reexport) => {
90
- const reExportedFilePath = resolve.sync(reexport, {
91
- basedir: fileURLToPath(new URL("./", fileUrl)),
92
- })
93
- const reExportedFileUrl = fileSystemPathToUrl(reExportedFilePath)
94
- const staticExports = detectStaticExports({
95
- logger,
96
- fileUrl: reExportedFileUrl,
97
- visited,
98
- })
99
- if (staticExports) {
100
- resolvedReexports = [...resolvedReexports, ...staticExports]
101
- }
102
- })
103
- }
104
- const resolvedExports = Array.from(
105
- new Set([...exports, ...resolvedReexports]),
106
- ).filter(isValidNamedExport)
107
-
108
- if (isMainEntrypoint && resolvedExports.length === 0) {
109
- return undefined
110
- }
111
-
112
- return resolvedExports
113
- } catch (err) {
114
- // Safe to ignore, this is usually due to the file not being CJS.
115
- logger.debug(`detectStaticExports ${fileUrl}: ${err.message}`)
116
- return undefined
117
- }
118
- }
119
-
120
- /*
121
- * Attempt #2b - Sandboxed runtime analysis: More powerful, but slower.
122
- * This will only work on UMD and very simple CJS files (require not supported).
123
- * Uses VM2 to run safely sandbox untrusted code (no access no Node.js primitives, just JS).
124
- * If nothing was detected, return undefined.
125
- */
126
- const detectExportsUsingSandboxedRuntime = ({ logger, fileUrl }) => {
127
- try {
128
- const fileContents = readFileSync(new URL(fileUrl), "utf8")
129
- const vm = new VM2({ wasm: false, fixAsync: false })
130
- const codeToRun = wrapCodeToRunInVm(fileContents)
131
- const vmResult = vm.run(codeToRun)
132
- const exportsResult = Object.keys(vmResult)
133
- logger.debug(
134
- `detectExportsUsingSandboxedRuntime success ${fileUrl}: ${exportsResult}`,
135
- )
136
- return exportsResult.filter((identifier) => isValidIdentifier(identifier))
137
- } catch (err) {
138
- logger.debug(
139
- `detectExportsUsingSandboxedRuntime error ${fileUrl}: ${err.message}`,
140
- )
141
- return undefined
142
- }
143
- }
144
-
145
- const isValidNamedExport = (name) =>
146
- name !== "default" && name !== "__esModule" && isValidIdentifier(name)
147
-
148
- const wrapCodeToRunInVm = (code) => {
149
- return `const exports = {};
150
- const module = { exports };
151
- ${code};;
152
- module.exports;`
153
- }
154
-
155
- const generateCodeForExports = ({
156
- uniqueNamedExports,
157
- inputSummary,
158
- inputFileUrl,
159
- }) => {
160
- const from =
161
- process.platform === "win32"
162
- ? inputFileUrl.slice("file:///".length)
163
- : inputFileUrl.slice("file://".length)
164
- const lines = [
165
- ...(inputSummary.namespace ? [stringifyNamespaceReExport({ from })] : []),
166
- ...(inputSummary.default ? [stringifyDefaultReExport({ from })] : []),
167
- stringifyNamedReExports({
168
- namedExports: uniqueNamedExports,
169
- from,
170
- }),
171
- ]
172
- return lines.join(`
173
- `)
174
- }
175
-
176
- const stringifyNamespaceReExport = ({ from }) => {
177
- return `export * from "${from}";`
178
- }
179
-
180
- const stringifyDefaultReExport = ({ from }) => {
181
- return `import __jsenv_default_import__ from "${from}";
182
- export default __jsenv_default_import__;`
183
- }
184
-
185
- const stringifyNamedReExports = ({ namedExports, from }) => {
186
- return `export { ${namedExports.join(",")} } from "${from}";`
187
- }
@@ -1,273 +0,0 @@
1
- import {
2
- urlToRelativeUrl,
3
- fileSystemPathToUrl,
4
- resolveUrl,
5
- bufferToEtag,
6
- urlIsInsideOf,
7
- } from "@jsenv/filesystem"
8
- import { convertFileSystemErrorToResponseProperties } from "@jsenv/server/src/internal/convertFileSystemErrorToResponseProperties.js"
9
-
10
- import { reuseOrCreateCompiledFile } from "./jsenv_directory/reuse_or_create_compiled_file.js"
11
- import { updateCompileCache } from "./jsenv_directory/update_compile_cache.js"
12
-
13
- export const compileFile = async ({
14
- logger,
15
-
16
- projectDirectoryUrl,
17
- jsenvDirectory,
18
- jsenvRemoteDirectory,
19
- originalFileUrl,
20
- compiledFileUrl,
21
-
22
- projectFileRequestedCallback = () => {},
23
- request,
24
- responseHeaders = {},
25
- pushResponse,
26
- importmapInfos,
27
- compile,
28
- compileCacheStrategy,
29
- compileCacheSourcesValidation,
30
- compileCacheAssetsValidation,
31
- }) => {
32
- if (
33
- compileCacheStrategy !== "etag" &&
34
- compileCacheStrategy !== "mtime" &&
35
- compileCacheStrategy !== "none"
36
- ) {
37
- throw new Error(
38
- `compileCacheStrategy must be "etag", "mtime" or "none", got ${compileCacheStrategy}`,
39
- )
40
- }
41
-
42
- projectFileRequestedCallback(
43
- urlToRelativeUrl(originalFileUrl, projectDirectoryUrl),
44
- request,
45
- )
46
-
47
- const clientCacheDisabled = request.headers["cache-control"] === "no-cache"
48
-
49
- try {
50
- const { meta, compileResult, compileResultStatus, timing } =
51
- await reuseOrCreateCompiledFile({
52
- logger,
53
- projectDirectoryUrl,
54
- originalFileUrl,
55
- compiledFileUrl,
56
- jsenvRemoteDirectory,
57
-
58
- request,
59
- compileCacheStrategy,
60
- compileCacheSourcesValidation,
61
- compileCacheAssetsValidation,
62
- compile,
63
- })
64
-
65
- if (compileCacheStrategy === "etag" && !compileResult.compiledEtag) {
66
- // happens when file was just compiled so etag was not computed
67
- compileResult.compiledEtag = bufferToEtag(
68
- Buffer.from(compileResult.compiledSource),
69
- )
70
- }
71
-
72
- if (compileCacheStrategy === "mtime" && !compileResult.compiledMtime) {
73
- // happens when file was just compiled so it's not yet written on filesystem
74
- // Here we know the compiled file will be written on the filesystem
75
- // We could wait for the file to be written before responding to the client
76
- // but it could delay a bit the response.
77
- // Inside "updateMeta" the file might be written synchronously
78
- // or batched to be written later for perf reasons.
79
- // From this side of the code we would like to be agnostic about this to allow
80
- // eventual perf improvments in that field.
81
- // For this reason the "mtime" we send to the client is decided here
82
- // by "compileResult.compiledMtime = Date.now()"
83
- // "updateMeta" will respect this and when it will write the compiled file it will
84
- // use "utimes" to ensure the file mtime is the one we sent to the client
85
- // This is important so that a request sending an mtime
86
- // can be compared with the compiled file mtime on the filesystem
87
- // In the end etag is preffered over mtime by default so this will rarely
88
- // be useful
89
- compileResult.compiledMtime = Date.now()
90
- }
91
-
92
- const { contentType, compiledEtag, compiledMtime, compiledSource } =
93
- compileResult
94
-
95
- if (compileResult.responseHeaders) {
96
- responseHeaders = {
97
- ...responseHeaders,
98
- ...compileResult.responseHeaders,
99
- }
100
- }
101
-
102
- if (compileResultStatus !== "cached" && compileCacheStrategy !== "none") {
103
- // we MUST await updateMeta otherwise we might get 404
104
- // when serving sourcemap files
105
- await updateCompileCache({
106
- logger,
107
- jsenvDirectory,
108
- meta,
109
- compileResult,
110
- compileResultStatus,
111
- compiledFileUrl,
112
- // originalFileUrl,
113
- })
114
- }
115
-
116
- compileResult.sources.forEach((source) => {
117
- const sourceFileUrl = resolveUrl(source, compiledFileUrl)
118
- projectFileRequestedCallback(
119
- urlToRelativeUrl(sourceFileUrl, projectDirectoryUrl),
120
- request,
121
- )
122
- })
123
-
124
- if (request.http2) {
125
- const dependencyResolver = getDependencyResolver({
126
- compileResult,
127
- importmapInfos,
128
- request,
129
- })
130
- if (dependencyResolver) {
131
- compileResult.dependencies.forEach((dependency) => {
132
- const dependencyUrl = dependencyResolver.resolve(dependency)
133
- if (!urlIsInsideOf(dependencyUrl, request.origin)) {
134
- // ignore external urls
135
- return
136
- }
137
- if (dependencyUrl.startsWith("data:")) {
138
- return
139
- }
140
- const dependencyRelativeUrl = urlToRelativeUrl(
141
- dependencyUrl,
142
- request.origin,
143
- )
144
- pushResponse({ path: `/${dependencyRelativeUrl}` })
145
- })
146
- }
147
- }
148
-
149
- // when a compiled version of the source file was just created or updated
150
- // we don't want to rely on filesystem because we might want to delay
151
- // when the file is written for perf reasons
152
- // Moreover we already got the data in RAM
153
- const respondUsingRAM = (finalizeResponse = () => {}) => {
154
- const response = {
155
- status: 200,
156
- headers: {
157
- "content-length": Buffer.byteLength(compiledSource),
158
- "content-type": contentType,
159
- "cache-control": "no-store",
160
- ...responseHeaders,
161
- },
162
- body: compiledSource,
163
- timing,
164
- }
165
- finalizeResponse(response)
166
- return response
167
- }
168
-
169
- if (!clientCacheDisabled && compileCacheStrategy === "etag") {
170
- if (
171
- request.headers["if-none-match"] &&
172
- compileResultStatus === "cached"
173
- ) {
174
- return {
175
- status: 304,
176
- headers: {
177
- "cache-control": "private,max-age=0,must-revalidate",
178
- },
179
- timing,
180
- }
181
- }
182
- return respondUsingRAM((response) => {
183
- // eslint-disable-next-line dot-notation
184
- response.headers["etag"] = compiledEtag
185
- response.headers["cache-control"] = "private,max-age=0,must-revalidate"
186
- })
187
- }
188
-
189
- if (!clientCacheDisabled && compileCacheStrategy === "mtime") {
190
- if (
191
- request.headers["if-modified-since"] &&
192
- compileResultStatus === "cached"
193
- ) {
194
- return {
195
- status: 304,
196
- headers: {
197
- "cache-control": "private,max-age=0,must-revalidate",
198
- },
199
- timing,
200
- }
201
- }
202
- return respondUsingRAM((response) => {
203
- response.headers["last-modified"] = new Date(
204
- compiledMtime,
205
- ).toUTCString()
206
- response.headers["cache-control"] = "private,max-age=0,must-revalidate"
207
- })
208
- }
209
-
210
- return respondUsingRAM()
211
- } catch (error) {
212
- if (error && error.code === "PARSE_ERROR") {
213
- const { data } = error
214
- const { filename } = data
215
- if (filename) {
216
- const relativeUrl = urlToRelativeUrl(
217
- fileSystemPathToUrl(filename),
218
- projectDirectoryUrl,
219
- )
220
- projectFileRequestedCallback(relativeUrl, request)
221
- }
222
- // on the correspondig file
223
- const json = JSON.stringify(data)
224
- return {
225
- status: 500,
226
- statusText: "parse error",
227
- headers: {
228
- "cache-control": "no-store",
229
- "content-length": Buffer.byteLength(json),
230
- "content-type": "application/json",
231
- },
232
- body: json,
233
- }
234
- }
235
- if (error && error.asResponse) {
236
- return error.asResponse()
237
- }
238
- if (error && error.statusText === "Unexpected directory operation") {
239
- return {
240
- status: 403,
241
- }
242
- }
243
- return convertFileSystemErrorToResponseProperties(error)
244
- }
245
- }
246
-
247
- const getDependencyResolver = ({ compileResult, importmapInfos, request }) => {
248
- const importmapKeys = Object.keys(importmapInfos)
249
- const requestUrl = resolveUrl(request.ressource, request.origin)
250
-
251
- if (
252
- compileResult.contentType === "application/javascript" &&
253
- // we cannot trust importmapKeys because when html is restored from cache
254
- // it would be empty
255
- importmapKeys.length > 0
256
- ) {
257
- // js resolution is special, we cannot just do resolveUrl of the import specifier
258
- // because there can be importmap (bare specifier, import without extension, custom remapping, ...)
259
- // And we would push 404 to the browser
260
- // BUT I tried to push everything to the browser and it was a big fail:
261
- // server is trying to push streams but browser rejects most push streams
262
- // either because main file is already fetched or an other file request the same ressource
263
- return null
264
- }
265
-
266
- return {
267
- type: "url_resolution",
268
- resolve: (dependency) => {
269
- const dependencyUrl = resolveUrl(dependency, requestUrl)
270
- return dependencyUrl
271
- },
272
- }
273
- }