@jsenv/core 26.0.1 → 27.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (465) hide show
  1. package/main.js +17 -24
  2. package/package.json +35 -71
  3. package/readme.md +30 -37
  4. package/src/build/build.js +737 -0
  5. package/src/build/build_urls_generator.js +64 -0
  6. package/src/build/inject_version_mappings.js +62 -0
  7. package/src/build/plugins/bundle_js_module/jsenv_plugin_bundle_js_module.js +225 -0
  8. package/src/build/plugins/minify_html/jsenv_plugin_minify_html.js +30 -0
  9. package/src/build/plugins/minify_js/jsenv_plugin_minify_js.js +47 -0
  10. package/src/dev/plugins/autoreload/babel_plugin_metadata_import_meta_hot.js +98 -0
  11. package/src/dev/plugins/autoreload/client/autoreload_preference.js +11 -0
  12. package/src/dev/plugins/autoreload/client/event_source_client.js +186 -0
  13. package/src/{internal/dev_server/event_source_client → dev/plugins/autoreload/client}/event_source_connection.js +21 -25
  14. package/src/dev/plugins/autoreload/client/import_meta_hot.js +80 -0
  15. package/src/dev/plugins/autoreload/client/reload.js +101 -0
  16. package/src/dev/plugins/autoreload/client/url_helpers.js +20 -0
  17. package/src/dev/plugins/autoreload/html_hot_dependencies.js +156 -0
  18. package/src/dev/plugins/autoreload/jsenv_plugin_autoreload.js +374 -0
  19. package/src/dev/plugins/autoreload/sse_service.js +149 -0
  20. package/src/dev/plugins/explorer/client/explorer.html +607 -0
  21. package/src/{internal → dev/plugins/explorer/client}/jsenv.png +0 -0
  22. package/src/dev/plugins/explorer/jsenv_plugin_explorer.js +74 -0
  23. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/animation/toolbar_animation.js +0 -0
  24. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/eventsource/eventsource.css +2 -2
  25. package/src/dev/plugins/toolbar/client/eventsource/toolbar_eventsource.js +57 -0
  26. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/execution/execution.css +0 -0
  27. package/src/dev/plugins/toolbar/client/execution/toolbar_execution.js +88 -0
  28. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/focus/focus.css +0 -0
  29. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/focus/toolbar_focus.js +0 -0
  30. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/jsenv_logo.svg +0 -0
  31. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/notification/toolbar_notification.js +0 -0
  32. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/responsive/overflow_menu.css +0 -0
  33. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/responsive/toolbar_responsive.js +0 -0
  34. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/settings/settings.css +0 -0
  35. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/settings/toolbar_settings.js +1 -0
  36. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/theme/jsenv_theme.css +1 -15
  37. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/theme/light_theme.css +0 -17
  38. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/theme/toolbar_theme.js +0 -0
  39. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/toolbar.html +40 -199
  40. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/toolbar_injector.js +8 -28
  41. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/toolbar_main.css +0 -24
  42. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/toolbar_main.js +10 -56
  43. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/tooltip/tooltip.css +1 -1
  44. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/tooltip/tooltip.js +0 -0
  45. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/animation.js +0 -0
  46. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/dom.js +0 -0
  47. package/src/{internal/browser_utils → dev/plugins/toolbar/client/util}/fetch_using_xhr.js +0 -0
  48. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/fetching.js +2 -4
  49. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/iframe_to_parent_href.js +0 -0
  50. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/jsenv_logger.js +0 -0
  51. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/preferences.js +0 -0
  52. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/responsive.js +0 -0
  53. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/util.js +0 -0
  54. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/variant/variant.js +0 -0
  55. package/src/dev/plugins/toolbar/jsenv_plugin_toolbar.js +62 -0
  56. package/src/dev/start_dev_server.js +105 -0
  57. package/src/execute/execute.js +132 -0
  58. package/src/execute/run.js +208 -0
  59. package/src/execute/runtimes/browsers/chromium.js +8 -0
  60. package/src/execute/runtimes/browsers/firefox.js +7 -0
  61. package/src/execute/runtimes/browsers/from_playwright.js +464 -0
  62. package/src/{browser_runtimes.js → execute/runtimes/browsers/webkit.js} +4 -18
  63. package/src/{internal/node_launcher/child_process_options.js → execute/runtimes/node/child_exec_options.js} +25 -36
  64. package/src/{internal/node_launcher/node_controllable_file.mjs → execute/runtimes/node/controllable_file.mjs} +1 -18
  65. package/src/{internal/node_launcher/node_controllable_process.js → execute/runtimes/node/controlled_process.js} +128 -150
  66. package/src/execute/runtimes/node/exec_options.js +44 -0
  67. package/src/{internal/node_launcher → execute/runtimes/node}/kill_process_tree.js +3 -1
  68. package/src/execute/runtimes/node/node_process.js +92 -0
  69. package/src/execute/runtimes/node/node_worker_thread.js +28 -0
  70. package/src/omega/core_plugins/babel/babel_helper/babel_helper_directory.js +29 -0
  71. package/src/{internal/compile_server/js → omega/core_plugins/babel/babel_helper}/babel_plugin_babel_helpers_as_jsenv_imports.js +15 -19
  72. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/.eslintrc.cjs +0 -0
  73. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/AsyncGenerator/AsyncGenerator.js +0 -0
  74. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/AwaitValue/AwaitValue.js +0 -0
  75. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/applyDecoratorDescriptor/applyDecoratorDescriptor.js +0 -0
  76. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/arrayLikeToArray/arrayLikeToArray.js +0 -0
  77. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/arrayWithHoles/arrayWithHoles.js +0 -0
  78. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/arrayWithoutHoles/arrayWithoutHoles.js +0 -0
  79. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/assertThisInitialized/assertThisInitialized.js +0 -0
  80. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/asyncGeneratorDelegate/asyncGeneratorDelegate.js +0 -0
  81. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/asyncIterator/asyncIterator.js +0 -0
  82. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/asyncToGenerator/asyncToGenerator.js +0 -0
  83. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/awaitAsyncGenerator/awaitAsyncGenerator.js +0 -0
  84. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +0 -0
  85. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classApplyDescriptorGet/classApplyDescriptorGet.js +0 -0
  86. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classApplyDescriptorSet/classApplyDescriptorSet.js +0 -0
  87. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classCallCheck/classCallCheck.js +0 -0
  88. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +0 -0
  89. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +0 -0
  90. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classExtractFieldDescriptor/classExtractFieldDescriptor.js +0 -0
  91. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classNameTDZError/classNameTDZError.js +0 -0
  92. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +0 -0
  93. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateFieldGet/classPrivateFieldGet.js +0 -0
  94. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +0 -0
  95. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +0 -0
  96. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateFieldSet/classPrivateFieldSet.js +0 -0
  97. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateMethodGet/classPrivateMethodGet.js +0 -0
  98. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateMethodSet/classPrivateMethodSet.js +0 -0
  99. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +0 -0
  100. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +0 -0
  101. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +0 -0
  102. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +0 -0
  103. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/construct/construct.js +0 -0
  104. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/createClass/createClass.js +0 -0
  105. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/createForOfIteratorHelper/createForOfIteratorHelper.js +0 -0
  106. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +0 -0
  107. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/createRawReactElement/createRawReactElement.js +0 -0
  108. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/createSuper/createSuper.js +0 -0
  109. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/decorate/decorate.js +0 -0
  110. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/defaults/defaults.js +0 -0
  111. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/defineEnumerableProperties/defineEnumerableProperties.js +0 -0
  112. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/defineProperty/defineProperty.js +0 -0
  113. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/extends/extends.js +0 -0
  114. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/get/get.js +0 -0
  115. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/getPrototypeOf/getPrototypeOf.js +0 -0
  116. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/inherits/inherits.js +0 -0
  117. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/inheritsLoose/inheritsLoose.js +0 -0
  118. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/initializerDefineProperty/initializerDefineProperty.js +0 -0
  119. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/initializerWarningHelper/initializerWarningHelper.js +0 -0
  120. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/instanceof/instanceof.js +0 -0
  121. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/interopRequireDefault/interopRequireDefault.js +0 -0
  122. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/interopRequireWildcard/interopRequireWildcard.js +0 -0
  123. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/isNativeFunction/isNativeFunction.js +0 -0
  124. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/isNativeReflectConstruct/isNativeReflectConstruct.js +0 -0
  125. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/iterableToArray/iterableToArray.js +0 -0
  126. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/iterableToArrayLimit/iterableToArrayLimit.js +0 -0
  127. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +0 -0
  128. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/jsx/jsx.js +0 -0
  129. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/maybeArrayLike/maybeArrayLike.js +0 -0
  130. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/newArrowCheck/newArrowCheck.js +0 -0
  131. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/nonIterableRest/nonIterableRest.js +0 -0
  132. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/nonIterableSpread/nonIterableSpread.js +0 -0
  133. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/objectDestructuringEmpty/objectDestructuringEmpty.js +0 -0
  134. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/objectSpread/objectSpread.js +0 -0
  135. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/objectSpread2/objectSpread2.js +0 -0
  136. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/objectWithoutProperties/objectWithoutProperties.js +0 -0
  137. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +0 -0
  138. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/possibleConstructorReturn/possibleConstructorReturn.js +0 -0
  139. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/readOnlyError/readOnlyError.js +0 -0
  140. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/readme.md +0 -0
  141. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/set/set.js +0 -0
  142. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/setPrototypeOf/setPrototypeOf.js +0 -0
  143. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/skipFirstGeneratorNext/skipFirstGeneratorNext.js +0 -0
  144. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/slicedToArray/slicedToArray.js +0 -0
  145. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/slicedToArrayLoose/slicedToArrayLoose.js +0 -0
  146. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/superPropBase/superPropBase.js +0 -0
  147. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/taggedTemplateLiteral/taggedTemplateLiteral.js +0 -0
  148. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +0 -0
  149. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/tdz/tdz.js +0 -0
  150. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/temporalRef/temporalRef.js +0 -0
  151. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/temporalUndefined/temporalUndefined.js +0 -0
  152. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/toArray/toArray.js +0 -0
  153. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/toConsumableArray/toConsumableArray.js +0 -0
  154. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/toPrimitive/toPrimitive.js +0 -0
  155. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/toPropertyKey/toPropertyKey.js +0 -0
  156. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/typeof/typeof.js +0 -0
  157. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/unsupportedIterableToArray/unsupportedIterableToArray.js +0 -0
  158. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/wrapAsyncGenerator/wrapAsyncGenerator.js +0 -0
  159. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/wrapNativeSuper/wrapNativeSuper.js +0 -0
  160. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/wrapRegExp/wrapRegExp.js +0 -0
  161. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/writeOnlyError/writeOnlyError.js +0 -0
  162. package/src/omega/core_plugins/babel/global_this/babel_plugin_global_this_as_jsenv_import.js +35 -0
  163. package/{helpers/global-this/global-this.js → src/omega/core_plugins/babel/global_this/client/global_this.js} +0 -0
  164. package/src/omega/core_plugins/babel/helpers/babel_plugin_structure.js +187 -0
  165. package/src/{internal/features → omega/core_plugins/babel/helpers}/babel_plugins_compatibility.js +1 -24
  166. package/src/omega/core_plugins/babel/jsenv_plugin_babel.js +97 -0
  167. package/src/omega/core_plugins/babel/new_stylesheet/babel_plugin_new_stylesheet_as_jsenv_import.js +117 -0
  168. package/src/omega/core_plugins/babel/new_stylesheet/client/.eslintrc.cjs +24 -0
  169. package/{helpers/new_stylesheet → src/omega/core_plugins/babel/new_stylesheet/client}/new_stylesheet.js +0 -0
  170. package/src/omega/core_plugins/babel/regenerator_runtime/babel_plugin_regenerator_runtime_as_jsenv_import.js +34 -0
  171. package/{helpers/regenerator-runtime/regenerator-runtime.js → src/omega/core_plugins/babel/regenerator_runtime/client/regenerator_runtime.js} +0 -0
  172. package/src/omega/core_plugins/commonjs_globals/jsenv_plugin_commonjs_globals.js +169 -0
  173. package/src/omega/core_plugins/file_urls/jsenv_plugin_file_urls.js +67 -0
  174. package/src/omega/core_plugins/filesystem_magic/jsenv_plugin_filesystem_magic.js +58 -0
  175. package/src/{internal/browser_client → omega/core_plugins/html_supervisor/client}/error_in_document.js +10 -16
  176. package/src/{internal/browser_client → omega/core_plugins/html_supervisor/client}/error_in_notification.js +0 -0
  177. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_installer.js +168 -0
  178. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_setup.js +77 -0
  179. package/src/{internal/browser_client → omega/core_plugins/html_supervisor/client}/perf_browser.js +0 -0
  180. package/src/{internal/runtime_client → omega/core_plugins/html_supervisor/client}/uneval_exception.js +0 -0
  181. package/src/omega/core_plugins/html_supervisor/jsenv_plugin_html_supervisor.js +233 -0
  182. package/src/omega/core_plugins/import_assertions/helpers/babel_plugin_metadata_import_assertions.js +98 -0
  183. package/src/{internal/building/import_assertions → omega/core_plugins/import_assertions/helpers}/json_module.js +3 -2
  184. package/src/omega/core_plugins/import_assertions/helpers/text_module.js +6 -0
  185. package/src/omega/core_plugins/import_assertions/jsenv_plugin_import_assertions.js +211 -0
  186. package/src/omega/core_plugins/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +80 -0
  187. package/src/omega/core_plugins/importmap/jsenv_plugin_importmap.js +212 -0
  188. package/src/omega/core_plugins/inline/client/inline_content.js +6 -0
  189. package/src/omega/core_plugins/inline/jsenv_plugin_data_urls.js +70 -0
  190. package/src/omega/core_plugins/inline/jsenv_plugin_inline.js +13 -0
  191. package/src/omega/core_plugins/inline/jsenv_plugin_inline_query_param.js +42 -0
  192. package/src/omega/core_plugins/inline/jsenv_plugin_js_and_css_inside_html.js +142 -0
  193. package/src/omega/core_plugins/inline/jsenv_plugin_new_inline_content.js +210 -0
  194. package/src/omega/core_plugins/leading_slash/jsenv_plugin_leading_slash.js +12 -0
  195. package/src/omega/core_plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +77 -0
  196. package/src/omega/core_plugins/url_resolution/jsenv_plugin_url_resolution.js +28 -0
  197. package/src/omega/core_plugins/url_version/jsenv_plugin_url_version.js +50 -0
  198. package/src/omega/core_plugins.js +39 -0
  199. package/src/omega/errors.js +168 -0
  200. package/src/omega/file_url_converter.js +63 -0
  201. package/src/omega/kitchen.js +777 -0
  202. package/src/omega/omega_server.js +129 -0
  203. package/src/omega/plugin_controller.js +240 -0
  204. package/src/omega/runtime_support/default_runtime_support.js +13 -0
  205. package/src/omega/runtime_support/features_compatibility.js +91 -0
  206. package/src/omega/runtime_support/runtime_support.js +20 -0
  207. package/src/omega/server/file_service.js +155 -0
  208. package/src/omega/server/user_agent.js +22 -0
  209. package/src/omega/url_graph/url_graph_load.js +68 -0
  210. package/src/omega/url_graph/url_graph_report.js +151 -0
  211. package/src/omega/url_graph/url_graph_sort.js +29 -0
  212. package/src/omega/url_graph/url_info_transformations.js +161 -0
  213. package/src/omega/url_graph.js +132 -0
  214. package/src/omega/url_mentions/css_url_mentions.js +63 -0
  215. package/src/omega/url_mentions/html_url_mentions.js +185 -0
  216. package/src/omega/url_mentions/js_module_url_mentions.js +91 -0
  217. package/src/omega/url_mentions/parse_url_mentions.js +37 -0
  218. package/src/omega/url_mentions/worker_classic_url_mentions.js +37 -0
  219. package/src/{internal/executing → test}/execute_plan.js +154 -211
  220. package/src/{execute_test_plan.js → test/execute_test_plan.js} +26 -81
  221. package/src/{internal/executing → test}/execution_colors.js +0 -0
  222. package/src/{internal/executing → test}/execution_steps.js +2 -8
  223. package/src/{internal/executing → test}/gc.js +0 -0
  224. package/src/test/logs_file_execution.js +223 -0
  225. package/dist/browser_client/asset-manifest.json +0 -4
  226. package/dist/browser_client/browser_client_fb33eaa4.js +0 -5320
  227. package/dist/browser_client/browser_client_fb33eaa4.js.map +0 -1089
  228. package/dist/build_manifest.js +0 -12
  229. package/dist/compile_proxy/asset-manifest.json +0 -4
  230. package/dist/compile_proxy/compile_proxy.html__inline__20_651d1e7b.js.map +0 -343
  231. package/dist/compile_proxy/compile_proxy_62f952c4.html +0 -2245
  232. package/dist/event_source_client/asset-manifest.json +0 -4
  233. package/dist/event_source_client/event_source_client_69f48287.js +0 -354
  234. package/dist/event_source_client/event_source_client_69f48287.js.map +0 -128
  235. package/dist/redirector/asset-manifest.json +0 -4
  236. package/dist/redirector/redirector.html__inline__12_171e07b4.js.map +0 -349
  237. package/dist/redirector/redirector_8117ec92.html +0 -2290
  238. package/dist/toolbar/asset-manifest.json +0 -13
  239. package/dist/toolbar/assets/compilation.css_7421bd55.map +0 -12
  240. package/dist/toolbar/assets/eventsource.css_c0c71e7b.map +0 -12
  241. package/dist/toolbar/assets/execution.css_f3377c10.map +0 -12
  242. package/dist/toolbar/assets/focus.css_896f3e45.map +0 -12
  243. package/dist/toolbar/assets/light_theme.css_5bff0336.map +0 -12
  244. package/dist/toolbar/assets/overflow_menu.css_9a0fc3d8.map +0 -12
  245. package/dist/toolbar/assets/settings.css_942b5a9e.map +0 -12
  246. package/dist/toolbar/assets/toolbar_main.css_b1c67dd7.map +0 -28
  247. package/dist/toolbar/assets/tooltip.css_a94a8bdd.map +0 -12
  248. package/dist/toolbar/toolbar_b0c9100c.html +0 -4976
  249. package/dist/toolbar/toolbar_main_f54c1bb0.js.map +0 -776
  250. package/dist/toolbar_injector/asset-manifest.json +0 -5
  251. package/dist/toolbar_injector/assets/jsenv_logo_192011c2.svg +0 -95
  252. package/dist/toolbar_injector/toolbar_injector_65b501eb.js +0 -976
  253. package/dist/toolbar_injector/toolbar_injector_65b501eb.js.map +0 -294
  254. package/helpers/import-meta/import-meta-url-commonjs.js +0 -9
  255. package/helpers/import-meta/import-meta-url-global.js +0 -54
  256. package/src/build_project.js +0 -336
  257. package/src/commonjs_to_js_module.js +0 -180
  258. package/src/dev_server.js +0 -302
  259. package/src/execute.js +0 -184
  260. package/src/import_using_child_process.js +0 -68
  261. package/src/internal/browser_client/browser_client.js +0 -220
  262. package/src/internal/browser_client/browser_client_factory.js +0 -144
  263. package/src/internal/browser_client/browser_error_stack_remap.js +0 -43
  264. package/src/internal/browser_client/browser_system.js +0 -216
  265. package/src/internal/browser_client/module_namespace_transfer.js +0 -90
  266. package/src/internal/browser_detection/browser_detection.js +0 -65
  267. package/src/internal/browser_detection/detect_android.js +0 -13
  268. package/src/internal/browser_detection/detect_chrome.js +0 -28
  269. package/src/internal/browser_detection/detect_edge.js +0 -13
  270. package/src/internal/browser_detection/detect_electron.js +0 -1
  271. package/src/internal/browser_detection/detect_firefox.js +0 -17
  272. package/src/internal/browser_detection/detect_internet_explorer.js +0 -14
  273. package/src/internal/browser_detection/detect_ios.js +0 -19
  274. package/src/internal/browser_detection/detect_opera.js +0 -27
  275. package/src/internal/browser_detection/detect_safari.js +0 -13
  276. package/src/internal/browser_detection/user_agent_data.js +0 -25
  277. package/src/internal/browser_detection/util.js +0 -13
  278. package/src/internal/browser_launcher/browser_runtime_profile.js +0 -81
  279. package/src/internal/browser_launcher/execute_html_file.js +0 -355
  280. package/src/internal/browser_launcher/from_playwright.js +0 -320
  281. package/src/internal/browser_launcher/page_errors_and_logs.js +0 -77
  282. package/src/internal/browser_utils/fetch_and_eval.js +0 -27
  283. package/src/internal/browser_utils/fetch_and_eval_using_script.js +0 -47
  284. package/src/internal/browser_utils/fetch_browser.js +0 -34
  285. package/src/internal/browser_utils/fetch_json.js +0 -7
  286. package/src/internal/building/build_logs.js +0 -134
  287. package/src/internal/building/build_stats.js +0 -100
  288. package/src/internal/building/build_url_generator.js +0 -153
  289. package/src/internal/building/build_using_rollup.js +0 -359
  290. package/src/internal/building/css/apply_post_css.js +0 -55
  291. package/src/internal/building/css/jsenv_parse_css.js +0 -260
  292. package/src/internal/building/css/move_css_urls.js +0 -44
  293. package/src/internal/building/css/parse_css_urls.js +0 -38
  294. package/src/internal/building/css/postcss_plugin_url_visitor.js +0 -245
  295. package/src/internal/building/css/replace_css_urls.js +0 -68
  296. package/src/internal/building/global_format/es_to_system.js +0 -34
  297. package/src/internal/building/html/html_node_mutations.js +0 -29
  298. package/src/internal/building/html/html_scan.js +0 -70
  299. package/src/internal/building/html/jsenv_parse_html.js +0 -813
  300. package/src/internal/building/html/minify_html.js +0 -7
  301. package/src/internal/building/import_assertions/css_module.js +0 -43
  302. package/src/internal/building/import_references.js +0 -80
  303. package/src/internal/building/importmap/jsenv_parse_importmap.js +0 -28
  304. package/src/internal/building/js/babel_plugin_inline_worker_imports.js +0 -96
  305. package/src/internal/building/js/jsenv_parse_js.js +0 -122
  306. package/src/internal/building/js/minify_js.js +0 -33
  307. package/src/internal/building/js/transform_worker.js +0 -55
  308. package/src/internal/building/json/jsenv_parse_json.js +0 -11
  309. package/src/internal/building/parse_ressource.js +0 -207
  310. package/src/internal/building/ressource_builder.js +0 -1098
  311. package/src/internal/building/ressource_builder_util.js +0 -194
  312. package/src/internal/building/rollup_plugin_jsenv.js +0 -1965
  313. package/src/internal/building/sort_pathnames.js +0 -10
  314. package/src/internal/building/sourcemap/sourcemap_loader.js +0 -70
  315. package/src/internal/building/svg/jsenv_parse_svg.js +0 -112
  316. package/src/internal/building/url_fetcher.js +0 -85
  317. package/src/internal/building/url_loader.js +0 -127
  318. package/src/internal/building/url_trace.js +0 -229
  319. package/src/internal/building/url_versioning/resolve_import_url_helper.js +0 -12
  320. package/src/internal/building/url_versioning/url_versioning.js +0 -65
  321. package/src/internal/building/webmanifest/jsenv_parse_webmanifest.js +0 -48
  322. package/src/internal/compile_server/commonjs/rollup_plugin_commonjs_named_exports.js +0 -187
  323. package/src/internal/compile_server/compile_file.js +0 -273
  324. package/src/internal/compile_server/compile_server.js +0 -519
  325. package/src/internal/compile_server/compiled_file_service.js +0 -264
  326. package/src/internal/compile_server/html/html_ast.js +0 -534
  327. package/src/internal/compile_server/html/html_source_file_service.js +0 -453
  328. package/src/internal/compile_server/html/jsenv_compile_html.js +0 -674
  329. package/src/internal/compile_server/importmap/jsenv_compile_importmap.js +0 -28
  330. package/src/internal/compile_server/js/ansi_to_html.js +0 -9
  331. package/src/internal/compile_server/js/babelHelper.js +0 -145
  332. package/src/internal/compile_server/js/babel_parse_error.js +0 -9
  333. package/src/internal/compile_server/js/babel_plugin_global_this_as_jsenv_import.js +0 -34
  334. package/src/internal/compile_server/js/babel_plugin_import_assertions.js +0 -121
  335. package/src/internal/compile_server/js/babel_plugin_import_metadata.js +0 -18
  336. package/src/internal/compile_server/js/babel_plugin_import_visitor.js +0 -84
  337. package/src/internal/compile_server/js/babel_plugin_new_stylesheet_as_jsenv_import.js +0 -113
  338. package/src/internal/compile_server/js/babel_plugin_proxy_external_imports.js +0 -31
  339. package/src/internal/compile_server/js/babel_plugin_regenerator_runtime_as_jsenv_import.js +0 -48
  340. package/src/internal/compile_server/js/babel_plugin_replace_expressions.js +0 -101
  341. package/src/internal/compile_server/js/babel_plugin_systemjs_prepend.js +0 -23
  342. package/src/internal/compile_server/js/babel_plugin_transform_import_meta.js +0 -134
  343. package/src/internal/compile_server/js/babel_plugins.js +0 -37
  344. package/src/internal/compile_server/js/generateBabelHelper.js +0 -36
  345. package/src/internal/compile_server/js/js_transformer.js +0 -195
  346. package/src/internal/compile_server/js/jsenv_compile_js.js +0 -62
  347. package/src/internal/compile_server/js/load_babel_plugin_map_from_file.js +0 -49
  348. package/src/internal/compile_server/jsenv_directory/comparison_utils.js +0 -27
  349. package/src/internal/compile_server/jsenv_directory/compilation_result.js +0 -243
  350. package/src/internal/compile_server/jsenv_directory/compilation_result_from_build.js +0 -184
  351. package/src/internal/compile_server/jsenv_directory/compile_asset.js +0 -24
  352. package/src/internal/compile_server/jsenv_directory/compile_context.js +0 -60
  353. package/src/internal/compile_server/jsenv_directory/compile_profile.js +0 -217
  354. package/src/internal/compile_server/jsenv_directory/file_lock_registry.js +0 -24
  355. package/src/internal/compile_server/jsenv_directory/file_lock_registry.test.js +0 -47
  356. package/src/internal/compile_server/jsenv_directory/fs_optimized_for_cache.js +0 -57
  357. package/src/internal/compile_server/jsenv_directory/jsenv_directory.js +0 -183
  358. package/src/internal/compile_server/jsenv_directory/reuse_or_create_compiled_file.js +0 -269
  359. package/src/internal/compile_server/jsenv_directory/update_compile_cache.js +0 -131
  360. package/src/internal/compile_server/jsenv_directory/validate_compile_cache.js +0 -264
  361. package/src/internal/compile_server/sse_service/sse_service.js +0 -369
  362. package/src/internal/coverage/babel_plugin_instrument.js +0 -90
  363. package/src/internal/coverage/coverage_reporter_html_directory.js +0 -37
  364. package/src/internal/coverage/coverage_reporter_json_file.js +0 -22
  365. package/src/internal/coverage/coverage_reporter_text_log.js +0 -20
  366. package/src/internal/coverage/empty_coverage_factory.js +0 -70
  367. package/src/internal/coverage/file_by_file_coverage.js +0 -28
  368. package/src/internal/coverage/istanbul_coverage_composition.js +0 -28
  369. package/src/internal/coverage/istanbul_coverage_map_from_coverage.js +0 -16
  370. package/src/internal/coverage/list_files_not_covered.js +0 -20
  371. package/src/internal/coverage/missing_coverage.js +0 -46
  372. package/src/internal/coverage/report_to_coverage.js +0 -198
  373. package/src/internal/coverage/v8_and_istanbul.js +0 -38
  374. package/src/internal/coverage/v8_coverage_composition.js +0 -23
  375. package/src/internal/coverage/v8_coverage_from_directory.js +0 -86
  376. package/src/internal/coverage/v8_coverage_to_istanbul.js +0 -100
  377. package/src/internal/data_url.js +0 -54
  378. package/src/internal/dev_server/event_source_client/event_source_client.js +0 -63
  379. package/src/internal/dev_server/event_source_client/file_changes.js +0 -82
  380. package/src/internal/dev_server/event_source_client/livereload_preference.js +0 -13
  381. package/src/internal/dev_server/exploring/exploring.css +0 -237
  382. package/src/internal/dev_server/exploring/exploring.html +0 -79
  383. package/src/internal/dev_server/exploring/exploring.js +0 -243
  384. package/src/internal/dev_server/exploring/fetch_exploring_json.js +0 -19
  385. package/src/internal/dev_server/toolbar/compilation/compilation.css +0 -23
  386. package/src/internal/dev_server/toolbar/compilation/toolbar_compilation.js +0 -202
  387. package/src/internal/dev_server/toolbar/eventsource/toolbar_eventsource.js +0 -83
  388. package/src/internal/dev_server/toolbar/execution/toolbar_execution.js +0 -91
  389. package/src/internal/error_stack_remap/install_error_stack_remapping.js +0 -142
  390. package/src/internal/error_stack_remap/remap_call_site.js +0 -315
  391. package/src/internal/error_stack_remap/remap_stack.js +0 -218
  392. package/src/internal/error_stack_remap/stringify_stack.js +0 -9
  393. package/src/internal/executing/launch_and_execute.js +0 -458
  394. package/src/internal/executing/logs_file_execution.js +0 -160
  395. package/src/internal/executing/logs_plan_summary.js +0 -144
  396. package/src/internal/features/browser_feature_detection/browser_feature_detect_dynamic_import.js +0 -20
  397. package/src/internal/features/browser_feature_detection/browser_feature_detect_import_assertions_css.js +0 -23
  398. package/src/internal/features/browser_feature_detection/browser_feature_detect_import_assertions_json.js +0 -25
  399. package/src/internal/features/browser_feature_detection/browser_feature_detect_importmap.js +0 -37
  400. package/src/internal/features/browser_feature_detection/browser_feature_detect_new_stylesheet.js +0 -9
  401. package/src/internal/features/browser_feature_detection/browser_feature_detect_top_level_await.js +0 -14
  402. package/src/internal/features/browser_feature_detection/browser_feature_detection.js +0 -89
  403. package/src/internal/features/browser_feature_detection/compile_proxy.html +0 -27
  404. package/src/internal/features/browser_feature_detection/execute_with_script_module.js +0 -24
  405. package/src/internal/features/features_compat_from_runtime.js +0 -38
  406. package/src/internal/features/features_compat_from_runtime_support.js +0 -31
  407. package/src/internal/features/features_compatibility.js +0 -37
  408. package/src/internal/features/node_feature_detection/feature_detect_dynamic_import.mjs +0 -5
  409. package/src/internal/features/node_feature_detection/feature_detect_top_level_await.mjs +0 -1
  410. package/src/internal/features/node_feature_detection/node_feature_detect_dynamic_import.js +0 -5
  411. package/src/internal/features/node_feature_detection/node_feature_detect_top_level_await.js +0 -16
  412. package/src/internal/features/node_feature_detection/node_feature_detection.js +0 -66
  413. package/src/internal/fetching.js +0 -28
  414. package/src/internal/import_resolution/default_extension.js +0 -40
  415. package/src/internal/import_resolution/import_resolver_importmap.js +0 -64
  416. package/src/internal/import_resolution/import_resolver_node.js +0 -254
  417. package/src/internal/import_resolution/importmap_default.js +0 -37
  418. package/src/internal/jsenv_builds.js +0 -19
  419. package/src/internal/jsenv_params_assertions.js +0 -12
  420. package/src/internal/jsenv_remote_directory.js +0 -156
  421. package/src/internal/logs/byte.js +0 -10
  422. package/src/internal/logs/byte_as_file_size.js +0 -9
  423. package/src/internal/logs/ms_as_duration.js +0 -12
  424. package/src/internal/memoize.js +0 -24
  425. package/src/internal/node_launcher/eval_source.js +0 -6
  426. package/src/internal/node_launcher/fetch_source.js +0 -8
  427. package/src/internal/node_launcher/node_error_stack_remap.js +0 -22
  428. package/src/internal/node_launcher/node_execution_dynamic_import.js +0 -75
  429. package/src/internal/node_launcher/node_execution_performance.js +0 -67
  430. package/src/internal/node_launcher/node_execution_systemjs.js +0 -125
  431. package/src/internal/node_launcher/node_runtime_report.js +0 -77
  432. package/src/internal/node_launcher/node_system.js +0 -192
  433. package/src/internal/node_launcher/perf_node.js +0 -13
  434. package/src/internal/node_launcher/process_options.js +0 -46
  435. package/src/internal/node_launcher/value_install.js +0 -14
  436. package/src/internal/origin_directory_converter.js +0 -62
  437. package/src/internal/promise_race.js +0 -19
  438. package/src/internal/redirector/redirector.html +0 -40
  439. package/src/internal/regexp_escape.js +0 -34
  440. package/src/internal/require.js +0 -3
  441. package/src/internal/response_validation.js +0 -130
  442. package/src/internal/runtime_client/module_registration.js +0 -207
  443. package/src/internal/runtime_client/s.js +0 -864
  444. package/src/internal/runtime_client/s.js.md +0 -1
  445. package/src/internal/runtime_support/jsenv_runtime_support.js +0 -15
  446. package/src/internal/runtime_support/runtime_support.js +0 -70
  447. package/src/internal/semantic_versioning/compare_versions.js +0 -28
  448. package/src/internal/semantic_versioning/highest_version.js +0 -11
  449. package/src/internal/semantic_versioning/is_above.js +0 -5
  450. package/src/internal/semantic_versioning/is_below.js +0 -5
  451. package/src/internal/semantic_versioning/is_equal.js +0 -3
  452. package/src/internal/semantic_versioning/lowest_version.js +0 -11
  453. package/src/internal/semantic_versioning/version_from_value.js +0 -42
  454. package/src/internal/sourcemap_utils.js +0 -112
  455. package/src/internal/template_string_escape.js +0 -20
  456. package/src/internal/url_conversion.js +0 -313
  457. package/src/internal/url_utils.js +0 -33
  458. package/src/internal/url_utils.test.js +0 -39
  459. package/src/internal/windows_file_path_utils.js +0 -16
  460. package/src/jsenv_file_urls.js +0 -35
  461. package/src/jsenv_service_worker_finalizer.js +0 -55
  462. package/src/json_to_js_module.js +0 -13
  463. package/src/node_runtime.js +0 -227
  464. package/src/require_using_child_process.js +0 -67
  465. package/src/text_to_js_module.js +0 -13
@@ -0,0 +1,210 @@
1
+ /*
2
+ * Needs to be updated so that it sill works in the following cases:
3
+ * - templates literals transformed to regular stuff by babel
4
+ * - tagged name renamed by rollup
5
+ * - the template named is minified by terser
6
+ * In the cases above I must remain capable to recoginize the template literal
7
+ * to be able to update the urls inside (and even version the urls)
8
+ * because url versioning happens after minification it can be challenging
9
+ *
10
+ * TODO: use "keep_classnames" https://github.com/terser/terser#compress-options
11
+ * so that new InlineContent can be recognized after minification
12
+ */
13
+
14
+ import { createMagicSource } from "@jsenv/utils/sourcemap/magic_source.js"
15
+ import { JS_QUOTES } from "@jsenv/utils/string/js_quotes.js"
16
+ import { applyBabelPlugins } from "@jsenv/utils/js_ast/apply_babel_plugins.js"
17
+ import { generateInlineContentUrl } from "@jsenv/utils/urls/inline_content_url_generator.js"
18
+
19
+ export const jsenvPluginNewInlineContent = ({ allowEscapeForVersioning }) => {
20
+ return {
21
+ name: "jsenv:new_inline_content",
22
+ appliesDuring: "*",
23
+ transform: {
24
+ js_module: async (
25
+ { url, generatedUrl, content, originalContent },
26
+ { referenceUtils, cook, isSupportedOnRuntime },
27
+ ) => {
28
+ const { metadata } = await applyBabelPlugins({
29
+ babelPlugins: [babelPluginMetadataInlineContentCalls],
30
+ url,
31
+ generatedUrl,
32
+ content,
33
+ })
34
+ const { inlineContentCalls } = metadata
35
+ if (inlineContentCalls.length === 0) {
36
+ return null
37
+ }
38
+ const magicSource = createMagicSource(content)
39
+ await inlineContentCalls.reduce(async (previous, inlineContentCall) => {
40
+ await previous
41
+ const inlineUrl = generateInlineContentUrl({
42
+ url,
43
+ extension: {
44
+ "application/json": ".json",
45
+ "text/css": ".css",
46
+ "text/plain": ".txt",
47
+ "application/octet-stream": "",
48
+ }[inlineContentCall.contentType],
49
+ line: inlineContentCall.line,
50
+ column: inlineContentCall.column,
51
+ lineEnd: inlineContentCall.lineEnd,
52
+ columnEnd: inlineContentCall.columnEnd,
53
+ })
54
+ let { quote } = inlineContentCall
55
+ if (
56
+ quote === "`" &&
57
+ !isSupportedOnRuntime("transform-template-literals")
58
+ ) {
59
+ // if quote is "`" and template literals are not supported
60
+ // we'll use a regular string (single or double quote)
61
+ // when rendering the string
62
+ quote = JS_QUOTES.pickBest(inlineContentCall.content)
63
+ }
64
+ const [inlineReference, inlineUrlInfo] = referenceUtils.foundInline({
65
+ type: "js_inline_content",
66
+ isOriginal: content === originalContent,
67
+ line: inlineContentCall.line,
68
+ column: inlineContentCall.column,
69
+ specifier: inlineUrl,
70
+ contentType: inlineContentCall.contentType,
71
+ content: inlineContentCall.content,
72
+ })
73
+ inlineUrlInfo.jsQuote = quote
74
+ inlineReference.escape = (value) =>
75
+ JS_QUOTES.escapeSpecialChars(value.slice(1, -1), { quote })
76
+ await cook({
77
+ reference: inlineReference,
78
+ urlInfo: inlineUrlInfo,
79
+ })
80
+ magicSource.replace({
81
+ start: inlineContentCall.start,
82
+ end: inlineContentCall.end,
83
+ replacement: JS_QUOTES.escapeSpecialChars(inlineUrlInfo.content, {
84
+ quote,
85
+ allowEscapeForVersioning,
86
+ }),
87
+ })
88
+ }, Promise.resolve())
89
+ return magicSource.toContentAndSourcemap()
90
+ },
91
+ },
92
+ }
93
+ }
94
+
95
+ const babelPluginMetadataInlineContentCalls = () => {
96
+ return {
97
+ name: "metadata-inline-content-calls",
98
+ visitor: {
99
+ Program: (programPath, state) => {
100
+ const inlineContentCalls = []
101
+ programPath.traverse({
102
+ NewExpression: (path) => {
103
+ const newInlineContentCall = parseAsNewInlineContentCall(path)
104
+ if (newInlineContentCall) {
105
+ inlineContentCalls.push(newInlineContentCall)
106
+ }
107
+ },
108
+ })
109
+ state.file.metadata.inlineContentCalls = inlineContentCalls
110
+ },
111
+ },
112
+ }
113
+ }
114
+
115
+ const parseAsNewInlineContentCall = (path) => {
116
+ const node = path.node
117
+ if (node.callee.type === "Identifier") {
118
+ // terser rename import to use a shorter name
119
+ const name = getOriginalName(path, node.callee.name)
120
+ if (name !== "InlineContent") {
121
+ return null
122
+ }
123
+ } else if (node.callee.id) {
124
+ // terser might combine new InlineContent('') declaration and usage
125
+ if (node.callee.id.type !== "Identifier") {
126
+ return null
127
+ }
128
+ const name = getOriginalName(path, node.callee.id.name)
129
+ if (name !== "InlineContent") {
130
+ return null
131
+ }
132
+ }
133
+ if (node.arguments.length !== 2) {
134
+ return null
135
+ }
136
+ const [firstArg, secondArg] = node.arguments
137
+ if (secondArg.type !== "ObjectExpression") {
138
+ return null
139
+ }
140
+ const typePropertyNode = secondArg.properties.find((property) => {
141
+ return (
142
+ property.key.type === "Identifier" &&
143
+ property.key.name === "type" &&
144
+ property.type === "ObjectProperty" &&
145
+ property.value.type === "StringLiteral"
146
+ )
147
+ })
148
+ if (!typePropertyNode) {
149
+ return null
150
+ }
151
+ const type = typePropertyNode.value.value
152
+ if (firstArg.type === "StringLiteral") {
153
+ const position = getNodePosition(firstArg)
154
+ return {
155
+ nodeType: "StringLiteral",
156
+ quote: firstArg.extra.raw[0],
157
+ contentType: type,
158
+ content: firstArg.value,
159
+ ...position,
160
+ }
161
+ }
162
+ if (firstArg.type === "TemplateLiteral") {
163
+ const quasis = firstArg.quasis
164
+ if (quasis.length !== 1) {
165
+ return null
166
+ }
167
+ const templateElementNode = quasis[0]
168
+ const position = getNodePosition(firstArg)
169
+ return {
170
+ nodeType: "TemplateLiteral",
171
+ quote: "`",
172
+ contentType: type,
173
+ content: templateElementNode.value.cooked,
174
+ ...position,
175
+ }
176
+ }
177
+ return null
178
+ }
179
+
180
+ const getNodePosition = (node) => {
181
+ return {
182
+ start: node.start,
183
+ end: node.end,
184
+ line: node.loc.start.line,
185
+ column: node.loc.start.column,
186
+ lineEnd: node.loc.end.line,
187
+ columnEnd: node.loc.end.column,
188
+ }
189
+ }
190
+
191
+ const getOriginalName = (path, name) => {
192
+ const binding = path.scope.getBinding(name)
193
+ if (!binding) {
194
+ return name
195
+ }
196
+ if (binding.path.type === "ImportSpecifier") {
197
+ const importedName = binding.path.node.imported.name
198
+ if (name === importedName) {
199
+ return name
200
+ }
201
+ return getOriginalName(path, importedName)
202
+ }
203
+ if (binding.path.type === "VariableDeclarator") {
204
+ if (binding.path.node.init.type === "Identifier") {
205
+ const previousName = binding.path.node.init.name
206
+ return getOriginalName(path, previousName)
207
+ }
208
+ }
209
+ return name
210
+ }
@@ -0,0 +1,12 @@
1
+ export const jsenvPluginLeadingSlash = () => {
2
+ return {
3
+ name: "jsenv:leading_slash",
4
+ appliesDuring: "*",
5
+ resolve: ({ specifier }, { rootDirectoryUrl }) => {
6
+ if (specifier[0] !== "/") {
7
+ return null
8
+ }
9
+ return new URL(specifier.slice(1), rootDirectoryUrl).href
10
+ },
11
+ }
12
+ }
@@ -0,0 +1,77 @@
1
+ /*
2
+ * - should I restore eventual search params lost during node esm resolution
3
+ * - what about symlinks?
4
+ * It feels like I should apply symlink (when we don't want to preserve them)
5
+ * once a file:/// url is found, regardless
6
+ * if that comes from node resolution or anything else (not even magic resolution)
7
+ * it should likely be an other plugin happening after the others
8
+ */
9
+
10
+ import {
11
+ applyNodeEsmResolution,
12
+ lookupPackageScope,
13
+ readPackageJson,
14
+ } from "@jsenv/node-esm-resolution"
15
+
16
+ export const jsenvPluginNodeEsmResolution = ({
17
+ // https://nodejs.org/api/esm.html#resolver-algorithm-specification
18
+ packageConditions = ["browser", "import"],
19
+ } = {}) => {
20
+ const nodeEsmResolution = {
21
+ name: "jsenv:node_esm_resolve",
22
+ appliesDuring: "*",
23
+ resolve: {
24
+ js_import_export: ({ parentUrl, specifier }) => {
25
+ const { url } = applyNodeEsmResolution({
26
+ conditions: packageConditions,
27
+ parentUrl,
28
+ specifier,
29
+ })
30
+ return url
31
+ },
32
+ },
33
+ load: ({ url }) => {
34
+ if (url.startsWith("file:///@ignore/")) {
35
+ return {
36
+ content: "export default {}",
37
+ }
38
+ }
39
+ return null
40
+ },
41
+ }
42
+
43
+ const packageVersionInUrl = {
44
+ name: "jsenv:package_url_version",
45
+ appliesDuring: {
46
+ dev: true,
47
+ test: true,
48
+ },
49
+ transformReferencedUrl: ({ url }, { rootDirectoryUrl }) => {
50
+ if (!url.startsWith("file:")) {
51
+ return null
52
+ }
53
+ // without this check a file inside a project without package.json
54
+ // could be considered as a node module if there is a ancestor package.json
55
+ // but we want to version only node modules
56
+ if (!url.includes("/node_modules/")) {
57
+ return null
58
+ }
59
+ const urlObject = new URL(url)
60
+ if (urlObject.searchParams.has("v")) {
61
+ return null
62
+ }
63
+ const packageUrl = lookupPackageScope(url)
64
+ if (!packageUrl) {
65
+ return null
66
+ }
67
+ if (packageUrl === rootDirectoryUrl) {
68
+ return null
69
+ }
70
+ const packageVersion = readPackageJson(packageUrl).version
71
+ urlObject.searchParams.set("v", packageVersion)
72
+ return urlObject.href
73
+ },
74
+ }
75
+
76
+ return [nodeEsmResolution, packageVersionInUrl]
77
+ }
@@ -0,0 +1,28 @@
1
+ export const jsenvPluginUrlResolution = () => {
2
+ const urlResolver = ({ parentUrl, specifier }) => {
3
+ return new URL(specifier, parentUrl).href
4
+ }
5
+ return {
6
+ name: "jsenv:url_resolution",
7
+ appliesDuring: "*",
8
+ resolve: {
9
+ "entry_point": urlResolver,
10
+ "js_import_export": urlResolver,
11
+ "link_href": urlResolver,
12
+ "script_src": urlResolver,
13
+ "a_href": urlResolver,
14
+ "iframe_src": urlResolver,
15
+ "img_src": urlResolver,
16
+ "img_srcset": urlResolver,
17
+ "source_src": urlResolver,
18
+ "source_srcset": urlResolver,
19
+ "image_href": urlResolver,
20
+ "use_href": urlResolver,
21
+ "css_@import": urlResolver,
22
+ "css_url": urlResolver,
23
+ "sourcemap_comment": urlResolver,
24
+ "js_import_meta_url_pattern": urlResolver,
25
+ "js_inline_content": urlResolver,
26
+ },
27
+ }
28
+ }
@@ -0,0 +1,50 @@
1
+ export const jsenvPluginUrlVersion = ({
2
+ longTermCache = false, // will become true once things get more stable
3
+ } = {}) => {
4
+ return {
5
+ name: "jsenv:url_version",
6
+ appliesDuring: "*", // maybe only during dev?
7
+ normalize: ({ url }) => {
8
+ // "v" search param goal is to enable long-term cache
9
+ // for server response headers
10
+ // it is also used by hmr to bypass browser cache
11
+ // this goal is achieved when we reach this part of the code
12
+ // We get rid of this params so that urlGraph and other parts of the code
13
+ // recognize the url (it is not considered as a different url)
14
+ const urlObject = new URL(url)
15
+ urlObject.searchParams.delete("v")
16
+ return urlObject.href
17
+ },
18
+ transformReferencedUrl: ({ url, data }) => {
19
+ if (!data.version) {
20
+ return null
21
+ }
22
+ const urlObject = new URL(url)
23
+ if (urlObject.searchParams.has("v")) {
24
+ return null
25
+ }
26
+ urlObject.searchParams.set("v", data.version)
27
+ return urlObject.href
28
+ },
29
+ augmentResponse: ({ url }) => {
30
+ if (!longTermCache) {
31
+ return null
32
+ }
33
+ const urlObject = new URL(url)
34
+ if (!urlObject.searchParams.has("v")) {
35
+ return null
36
+ }
37
+ if (urlObject.searchParams.has("hmr")) {
38
+ return null
39
+ }
40
+ // When url is versioned put it in browser cache for 30 days
41
+ return {
42
+ headers: {
43
+ "cache-control": `private,max-age=${SECONDS_IN_30_DAYS},immutable`,
44
+ },
45
+ }
46
+ },
47
+ }
48
+ }
49
+
50
+ const SECONDS_IN_30_DAYS = 60 * 60 * 24 * 30
@@ -0,0 +1,39 @@
1
+ import { jsenvPluginLeadingSlash } from "./core_plugins/leading_slash/jsenv_plugin_leading_slash.js"
2
+ import { jsenvPluginImportmap } from "./core_plugins/importmap/jsenv_plugin_importmap.js"
3
+ import { jsenvPluginUrlResolution } from "./core_plugins/url_resolution/jsenv_plugin_url_resolution.js"
4
+ import { jsenvPluginNodeEsmResolution } from "./core_plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js"
5
+ import { jsenvPluginUrlVersion } from "./core_plugins/url_version/jsenv_plugin_url_version.js"
6
+ import { jsenvPluginFileUrls } from "./core_plugins/file_urls/jsenv_plugin_file_urls.js"
7
+ import { jsenvPluginFileSystemMagic } from "./core_plugins/filesystem_magic/jsenv_plugin_filesystem_magic.js"
8
+ import { jsenvPluginInline } from "./core_plugins/inline/jsenv_plugin_inline.js"
9
+ import { jsenvPluginHtmlSupervisor } from "./core_plugins/html_supervisor/jsenv_plugin_html_supervisor.js"
10
+ import { jsenvPluginCommonJsGlobals } from "./core_plugins/commonjs_globals/jsenv_plugin_commonjs_globals.js"
11
+ import { jsenvPluginImportAssertions } from "./core_plugins/import_assertions/jsenv_plugin_import_assertions.js"
12
+ import { jsenvPluginImportMetaScenarios } from "./core_plugins/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js"
13
+ import { jsenvPluginBabel } from "./core_plugins/babel/jsenv_plugin_babel.js"
14
+
15
+ export const getCorePlugins = ({
16
+ htmlSupervisor,
17
+ nodeEsmResolution,
18
+ fileSystemMagicResolution,
19
+ babel,
20
+ } = {}) => {
21
+ const asFewAsPossible = false // useful during dev
22
+ return [
23
+ ...(asFewAsPossible ? [] : [jsenvPluginImportAssertions()]),
24
+ ...(asFewAsPossible ? [] : [jsenvPluginHtmlSupervisor(htmlSupervisor)]), // before inline as it turns inline <script> into <script src>
25
+ ...(asFewAsPossible ? [] : [jsenvPluginInline()]), // before "file urls" to resolve and load inline urls
26
+ jsenvPluginImportmap(), // before node esm to handle bare specifiers before node esm
27
+ jsenvPluginFileUrls(),
28
+ jsenvPluginLeadingSlash(),
29
+ jsenvPluginNodeEsmResolution(nodeEsmResolution), // before url resolution to handle "js_import_export" resolution
30
+ jsenvPluginUrlResolution(),
31
+ ...(asFewAsPossible
32
+ ? []
33
+ : [jsenvPluginFileSystemMagic(fileSystemMagicResolution)]),
34
+ jsenvPluginUrlVersion(),
35
+ ...(asFewAsPossible ? [] : [jsenvPluginCommonJsGlobals()]),
36
+ ...(asFewAsPossible ? [] : [jsenvPluginImportMetaScenarios()]),
37
+ jsenvPluginBabel(babel),
38
+ ]
39
+ }
@@ -0,0 +1,168 @@
1
+ import { createDetailedMessage } from "@jsenv/logger"
2
+
3
+ export const createResolveError = ({ pluginController, reference, error }) => {
4
+ const createFailedToResolveError = ({
5
+ code = error.code || "RESOLVE_ERROR",
6
+ reason,
7
+ ...details
8
+ }) => {
9
+ const resolveError = new Error(
10
+ createDetailedMessage(`Failed to resolve specifier`, {
11
+ reason,
12
+ ...details,
13
+ "specifier": `"${reference.specifier}"`,
14
+ "specifier trace": reference.trace,
15
+ ...detailsFromPluginController(pluginController),
16
+ }),
17
+ )
18
+ resolveError.name = "RESOLVE_ERROR"
19
+ resolveError.code = code
20
+ resolveError.reason = reason
21
+ return resolveError
22
+ }
23
+ if (error.message === "NO_RESOLVE") {
24
+ return createFailedToResolveError({
25
+ reason: `no plugin has handled the specifier during "resolve" hook`,
26
+ })
27
+ }
28
+ return createFailedToResolveError({
29
+ reason: `An error occured during specifier resolution`,
30
+ ...detailsFromValueThrown(error),
31
+ })
32
+ }
33
+
34
+ export const createLoadError = ({
35
+ pluginController,
36
+ reference,
37
+ urlInfo,
38
+ error,
39
+ }) => {
40
+ const createFailedToLoadError = ({
41
+ code = error.code || "LOAD_ERROR",
42
+ reason,
43
+ ...details
44
+ }) => {
45
+ const loadError = new Error(
46
+ createDetailedMessage(`Failed to load url`, {
47
+ reason,
48
+ ...details,
49
+ "url": urlInfo.url,
50
+ "url reference trace": reference.trace,
51
+ ...detailsFromPluginController(pluginController),
52
+ }),
53
+ )
54
+ loadError.name = "LOAD_ERROR"
55
+ loadError.code = code
56
+ loadError.reason = reason
57
+ return loadError
58
+ }
59
+
60
+ if (error.message === "NO_LOAD") {
61
+ return createFailedToLoadError({
62
+ code: "NOT_FOUND",
63
+ reason: `no plugin has handled the url during "load" hook`,
64
+ })
65
+ }
66
+ if (error.code === "EPERM") {
67
+ return createFailedToLoadError({
68
+ code: "NOT_ALLOWED",
69
+ reason: `not allowed to read entry on filesystem`,
70
+ })
71
+ }
72
+ if (error.code === "EISDIR") {
73
+ return createFailedToLoadError({
74
+ code: "EISDIR",
75
+ reason: `found a directory on filesystem`,
76
+ })
77
+ }
78
+ if (error.code === "ENOENT") {
79
+ return createFailedToLoadError({
80
+ code: "NOT_FOUND",
81
+ reason: "no entry on filesystem",
82
+ })
83
+ }
84
+ return createFailedToLoadError({
85
+ reason: `An error occured during "load"`,
86
+ ...detailsFromValueThrown(error),
87
+ })
88
+ }
89
+
90
+ export const createParseError = ({ reference, urlInfo, error }) => {
91
+ const createFailedToParseError = ({
92
+ code = error.code || "PARSE_ERROR",
93
+ reason,
94
+ ...details
95
+ }) => {
96
+ const parseError = new Error(
97
+ createDetailedMessage(`Failed to parse ${urlInfo.type}`, {
98
+ reason,
99
+ ...details,
100
+ "url": urlInfo.url,
101
+ "url reference trace": reference.trace,
102
+ }),
103
+ )
104
+ parseError.name = "PARSE_ERROR"
105
+ parseError.code = code
106
+ parseError.reason = reason
107
+ return parseError
108
+ }
109
+ return createFailedToParseError({
110
+ reason: `An error occured while parsing content`,
111
+ ...detailsFromValueThrown(error),
112
+ })
113
+ }
114
+
115
+ export const createTransformError = ({
116
+ pluginController,
117
+ reference,
118
+ urlInfo,
119
+ error,
120
+ }) => {
121
+ const createFailedToTransformError = ({
122
+ code = error.code || "TRANSFORM_ERROR",
123
+ reason,
124
+ ...details
125
+ }) => {
126
+ const transformError = new Error(
127
+ createDetailedMessage(`Failed to transform ${urlInfo.type}`, {
128
+ reason,
129
+ ...details,
130
+ "url": urlInfo.url,
131
+ "url reference trace": reference.trace,
132
+ ...detailsFromPluginController(pluginController),
133
+ }),
134
+ )
135
+ transformError.name = "TRANSFORM_ERROR"
136
+ transformError.code = code
137
+ transformError.reason = reason
138
+ return transformError
139
+ }
140
+ return createFailedToTransformError({
141
+ reason: `An error occured during "transform"`,
142
+ ...detailsFromValueThrown(error),
143
+ })
144
+ }
145
+
146
+ const detailsFromPluginController = (pluginController) => {
147
+ const currentPlugin = pluginController.getCurrentPlugin()
148
+ if (!currentPlugin) {
149
+ return null
150
+ }
151
+ return { "plugin name": `"${currentPlugin.name}"` }
152
+ }
153
+
154
+ const detailsFromValueThrown = (valueThrownByPlugin) => {
155
+ if (valueThrownByPlugin && valueThrownByPlugin instanceof Error) {
156
+ return {
157
+ "error stack": valueThrownByPlugin.stack,
158
+ }
159
+ }
160
+ if (valueThrownByPlugin === undefined) {
161
+ return {
162
+ error: "undefined",
163
+ }
164
+ }
165
+ return {
166
+ error: JSON.stringify(valueThrownByPlugin),
167
+ }
168
+ }
@@ -0,0 +1,63 @@
1
+ import { fileSystemPathToUrl, urlToFileSystemPath } from "@jsenv/filesystem"
2
+
3
+ export const fileUrlConverter = {
4
+ asUrlWithoutSpecialParams: (fileUrl) => {
5
+ const urlObject = new URL(fileUrl)
6
+ let { origin, pathname, searchParams, hash } = urlObject
7
+ // origin is "null" for "file://" urls with Node.js
8
+ if (origin === "null" && urlObject.href.startsWith("file:")) {
9
+ origin = "file://"
10
+ }
11
+ if (searchParams.has("json_module")) {
12
+ searchParams.delete("json_module")
13
+ return `${origin}${pathname}.json_module${stringifyQuery(
14
+ searchParams,
15
+ )}${hash}`
16
+ }
17
+ if (searchParams.has("css_module")) {
18
+ searchParams.delete("css_module")
19
+ return `${origin}${pathname}.css_module${stringifyQuery(
20
+ searchParams,
21
+ )}${hash}`
22
+ }
23
+ if (searchParams.has("text_module")) {
24
+ searchParams.delete("text_module")
25
+ return `${origin}${pathname}.text_module${stringifyQuery(
26
+ searchParams,
27
+ )}${hash}`
28
+ }
29
+ return fileUrl
30
+ },
31
+ asFilePath: (fileUrl) => {
32
+ const fileUrlWithoutSpecialParam =
33
+ fileUrlConverter.asUrlWithoutSpecialParams(fileUrl)
34
+ const filePath = urlToFileSystemPath(fileUrlWithoutSpecialParam)
35
+ return filePath
36
+ },
37
+ asFileUrl: (filePath) => {
38
+ if (filePath.endsWith(".json_module")) {
39
+ const jsonFileUrl = fileSystemPathToUrl(
40
+ filePath.slice(0, -".json_module".length),
41
+ )
42
+ return `${jsonFileUrl}?json_module`
43
+ }
44
+ if (filePath.endsWith(".css_module")) {
45
+ const cssFileUrl = fileSystemPathToUrl(
46
+ filePath.slice(0, -".css_module".length),
47
+ )
48
+ return `${cssFileUrl}?css_module`
49
+ }
50
+ if (filePath.endsWith(".text_module")) {
51
+ const textFileUrl = fileSystemPathToUrl(
52
+ filePath.slice(0, -".text_module".length),
53
+ )
54
+ return `${textFileUrl}?text_module`
55
+ }
56
+ return fileSystemPathToUrl(filePath)
57
+ },
58
+ }
59
+
60
+ const stringifyQuery = (searchParams) => {
61
+ const search = searchParams.toString()
62
+ return search ? `?${search}` : ""
63
+ }