@jsenv/core 25.6.2 → 27.0.0-alpha.0

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 (476) hide show
  1. package/main.js +18 -20
  2. package/package.json +38 -73
  3. package/readme.md +32 -44
  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/animation/toolbar.animation.js → 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/focus/toolbar.focus.js → dev/plugins/toolbar/client/focus/toolbar_focus.js} +0 -0
  30. package/src/{internal/dev_server/toolbar/jsenv-logo.svg → dev/plugins/toolbar/client/jsenv_logo.svg} +1 -1
  31. package/src/{internal/dev_server/toolbar/notification/toolbar.notification.js → dev/plugins/toolbar/client/notification/toolbar_notification.js} +0 -0
  32. package/src/{internal/dev_server/toolbar/responsive/overflow-menu.css → dev/plugins/toolbar/client/responsive/overflow_menu.css} +0 -0
  33. package/src/{internal/dev_server/toolbar/responsive/toolbar.responsive.js → 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/settings/toolbar.settings.js → dev/plugins/toolbar/client/settings/toolbar_settings.js} +1 -0
  36. package/src/{internal/dev_server/toolbar/theme/jsenv-theme.css → dev/plugins/toolbar/client/theme/jsenv_theme.css} +1 -15
  37. package/src/{internal/dev_server/toolbar/theme/light-theme.css → dev/plugins/toolbar/client/theme/light_theme.css} +0 -17
  38. package/src/{internal/dev_server/toolbar/theme/toolbar.theme.js → dev/plugins/toolbar/client/theme/toolbar_theme.js} +0 -0
  39. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/toolbar.html +42 -201
  40. package/src/{internal/dev_server/toolbar/toolbar.injector.js → dev/plugins/toolbar/client/toolbar_injector.js} +10 -29
  41. package/src/{internal/dev_server/toolbar/toolbar.main.css → dev/plugins/toolbar/client/toolbar_main.css} +2 -26
  42. package/src/{internal/dev_server/toolbar/toolbar.main.js → dev/plugins/toolbar/client/toolbar_main.js} +18 -64
  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/fetchUsingXHR.js → dev/plugins/toolbar/client/util/fetch_using_xhr.js} +0 -2
  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/util/jsenvLogger.js → 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/execute/runtimes/browsers/webkit.js +24 -0
  63. package/src/{internal/node_launcher/createChildProcessOptions.js → execute/runtimes/node/child_exec_options.js} +25 -36
  64. package/src/{internal/node_runtime/nodeControllableFile.mjs → execute/runtimes/node/controllable_file.mjs} +1 -18
  65. package/src/{internal/node_launcher/createControllableNodeProcess.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 +4 -2
  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/compiling/js-compilation-service → omega/core_plugins/babel/babel_helper}/babel_plugin_babel_helpers_as_jsenv_imports.js +16 -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_runtime/displayErrorInDocument.js → omega/core_plugins/html_supervisor/client/error_in_document.js} +10 -18
  176. package/src/{internal/browser_runtime/displayErrorNotification.js → omega/core_plugins/html_supervisor/client/error_in_notification.js} +0 -1
  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 → omega/core_plugins/html_supervisor/client}/perf_browser.js +0 -2
  180. package/src/{internal/unevalException.js → omega/core_plugins/html_supervisor/client/uneval_exception.js} +1 -1
  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 → 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/executePlan.js → test/execute_plan.js} +159 -213
  220. package/src/{executeTestPlan.js → test/execute_test_plan.js} +36 -84
  221. package/src/{internal/executing → test}/execution_colors.js +0 -0
  222. package/src/{internal/executing/generateFileExecutionSteps.js → test/execution_steps.js} +25 -4
  223. package/src/{internal/executing → test}/gc.js +0 -0
  224. package/src/test/logs_file_execution.js +223 -0
  225. package/dist/browser_runtime/asset-manifest.json +0 -4
  226. package/dist/browser_runtime/browser_runtime_c81cd9af.js +0 -5300
  227. package/dist/browser_runtime/browser_runtime_c81cd9af.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_c05fdc30.js.map +0 -343
  231. package/dist/compile_proxy/compile_proxy_93ec4247.html +0 -2247
  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_20421b23.js.map +0 -349
  237. package/dist/redirector/redirector_ddc79416.html +0 -2292
  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_72a60fa3.map +0 -12
  244. package/dist/toolbar/assets/overflow-menu.css_2859d519.map +0 -12
  245. package/dist/toolbar/assets/settings.css_942b5a9e.map +0 -12
  246. package/dist/toolbar/assets/toolbar.main.css_b7d8bec1.map +0 -28
  247. package/dist/toolbar/assets/tooltip.css_a94a8bdd.map +0 -12
  248. package/dist/toolbar/toolbar.main_7d7783d3.js.map +0 -776
  249. package/dist/toolbar/toolbar_d6045dd0.html +0 -4978
  250. package/dist/toolbar_injector/asset-manifest.json +0 -5
  251. package/dist/toolbar_injector/assets/jsenv-logo_188b9ca6.svg +0 -95
  252. package/dist/toolbar_injector/toolbar_injector_c8c214dd.js +0 -977
  253. package/dist/toolbar_injector/toolbar_injector_c8c214dd.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/buildProject.js +0 -336
  257. package/src/commonJsToJavaScriptModule.js +0 -180
  258. package/src/dev_server.js +0 -295
  259. package/src/execute.js +0 -184
  260. package/src/importUsingChildProcess.js +0 -68
  261. package/src/internal/argUtils.js +0 -12
  262. package/src/internal/babel_plugin_replace_expressions.js +0 -101
  263. package/src/internal/browser_detection/browser_detection.js +0 -68
  264. package/src/internal/browser_detection/detectAndroid.js +0 -13
  265. package/src/internal/browser_detection/detectChrome.js +0 -28
  266. package/src/internal/browser_detection/detectEdge.js +0 -13
  267. package/src/internal/browser_detection/detectElectron.js +0 -1
  268. package/src/internal/browser_detection/detectFirefox.js +0 -17
  269. package/src/internal/browser_detection/detectIOS.js +0 -19
  270. package/src/internal/browser_detection/detectInternetExplorer.js +0 -14
  271. package/src/internal/browser_detection/detectOpera.js +0 -27
  272. package/src/internal/browser_detection/detectSafari.js +0 -13
  273. package/src/internal/browser_detection/user_agent_data.js +0 -26
  274. package/src/internal/browser_detection/util.js +0 -13
  275. package/src/internal/browser_launcher/browser_runtime_profile.js +0 -81
  276. package/src/internal/browser_launcher/executeHtmlFile.js +0 -354
  277. package/src/internal/browser_launcher/from_playwright.js +0 -320
  278. package/src/internal/browser_launcher/trackPageToNotify.js +0 -77
  279. package/src/internal/browser_runtime/browser_runtime.js +0 -224
  280. package/src/internal/browser_runtime/browser_system.js +0 -218
  281. package/src/internal/browser_runtime/createBrowserRuntime.js +0 -146
  282. package/src/internal/browser_runtime/evalSource.js +0 -11
  283. package/src/internal/browser_runtime/makeNamespaceTransferable.js +0 -90
  284. package/src/internal/browser_utils/fetchAndEvalUsingFetch.js +0 -29
  285. package/src/internal/browser_utils/fetchAndEvalUsingScript.js +0 -49
  286. package/src/internal/browser_utils/fetchJson.js +0 -7
  287. package/src/internal/browser_utils/fetch_browser.js +0 -34
  288. package/src/internal/building/buildToCompilationResult.js +0 -183
  289. package/src/internal/building/buildUsingRollup.js +0 -359
  290. package/src/internal/building/build_logs.js +0 -133
  291. package/src/internal/building/build_stats.js +0 -100
  292. package/src/internal/building/build_url_generator.js +0 -153
  293. package/src/internal/building/css/applyPostCss.js +0 -55
  294. package/src/internal/building/css/moveCssUrls.js +0 -44
  295. package/src/internal/building/css/parseCssRessource.js +0 -259
  296. package/src/internal/building/css/parseCssUrls.js +0 -38
  297. package/src/internal/building/css/postcss_plugin_url_visitor.js +0 -244
  298. package/src/internal/building/css/replaceCssUrls.js +0 -67
  299. package/src/internal/building/css_module.js +0 -43
  300. package/src/internal/building/es_to_system.js +0 -34
  301. package/src/internal/building/html/htmlScan.js +0 -70
  302. package/src/internal/building/html/minifyHtml.js +0 -7
  303. package/src/internal/building/html/parseHtmlRessource.js +0 -814
  304. package/src/internal/building/import_references.js +0 -80
  305. package/src/internal/building/importmap/parseImportmapRessource.js +0 -28
  306. package/src/internal/building/js/babel_plugin_inline_worker_imports.js +0 -96
  307. package/src/internal/building/js/minifyJs.js +0 -33
  308. package/src/internal/building/js/parseJsRessource.js +0 -121
  309. package/src/internal/building/js/transform_worker.js +0 -55
  310. package/src/internal/building/json/parseJsonRessource.js +0 -11
  311. package/src/internal/building/parseRessource.js +0 -207
  312. package/src/internal/building/parsing.utils.js +0 -29
  313. package/src/internal/building/resolve_import_url_helper.js +0 -12
  314. package/src/internal/building/ressource_builder.js +0 -1097
  315. package/src/internal/building/ressource_builder_util.js +0 -194
  316. package/src/internal/building/rollup_plugin_jsenv.js +0 -1963
  317. package/src/internal/building/sortObjectByPathnames.js +0 -10
  318. package/src/internal/building/sourcemap_loader.js +0 -73
  319. package/src/internal/building/svg/parseSvgRessource.js +0 -111
  320. package/src/internal/building/url_fetcher.js +0 -85
  321. package/src/internal/building/url_loader.js +0 -127
  322. package/src/internal/building/url_trace.js +0 -229
  323. package/src/internal/building/url_versioning.js +0 -65
  324. package/src/internal/building/webmanifest/parseWebmanifestRessource.js +0 -48
  325. package/src/internal/compiling/babel_parse_error.js +0 -9
  326. package/src/internal/compiling/babel_plugin_global_this_as_jsenv_import.js +0 -34
  327. package/src/internal/compiling/babel_plugin_import_assertions.js +0 -120
  328. package/src/internal/compiling/babel_plugin_import_metadata.js +0 -18
  329. package/src/internal/compiling/babel_plugin_import_visitor.js +0 -84
  330. package/src/internal/compiling/babel_plugin_new_stylesheet_as_jsenv_import.js +0 -113
  331. package/src/internal/compiling/babel_plugin_proxy_external_imports.js +0 -31
  332. package/src/internal/compiling/babel_plugin_transform_import_meta.js +0 -134
  333. package/src/internal/compiling/babel_plugins.js +0 -37
  334. package/src/internal/compiling/compileFile.js +0 -271
  335. package/src/internal/compiling/compileHtml.js +0 -544
  336. package/src/internal/compiling/createCompiledFileService.js +0 -263
  337. package/src/internal/compiling/html_source_file_service.js +0 -453
  338. package/src/internal/compiling/js-compilation-service/ansiToHTML.js +0 -9
  339. package/src/internal/compiling/js-compilation-service/babelHelper.js +0 -145
  340. package/src/internal/compiling/js-compilation-service/babel_plugin_regenerator_runtime_as_jsenv_import.js +0 -48
  341. package/src/internal/compiling/js-compilation-service/babel_plugin_systemjs_prepend.js +0 -23
  342. package/src/internal/compiling/js-compilation-service/generateBabelHelper.js +0 -36
  343. package/src/internal/compiling/js-compilation-service/transformJs.js +0 -196
  344. package/src/internal/compiling/jsenvCompilerForHtml.js +0 -674
  345. package/src/internal/compiling/jsenvCompilerForImportmap.js +0 -28
  346. package/src/internal/compiling/jsenvCompilerForJavaScript.js +0 -61
  347. package/src/internal/compiling/jsenv_directory/comparison_utils.js +0 -27
  348. package/src/internal/compiling/jsenv_directory/compile_asset.js +0 -24
  349. package/src/internal/compiling/jsenv_directory/compile_context.js +0 -60
  350. package/src/internal/compiling/jsenv_directory/compile_profile.js +0 -217
  351. package/src/internal/compiling/jsenv_directory/file_lock_registry.js +0 -24
  352. package/src/internal/compiling/jsenv_directory/file_lock_registry.test.js +0 -47
  353. package/src/internal/compiling/jsenv_directory/fs-optimized-for-cache.js +0 -57
  354. package/src/internal/compiling/jsenv_directory/getOrGenerateCompiledFile.js +0 -269
  355. package/src/internal/compiling/jsenv_directory/jsenv_directory.js +0 -174
  356. package/src/internal/compiling/jsenv_directory/updateMeta.js +0 -150
  357. package/src/internal/compiling/jsenv_directory/validateCache.js +0 -264
  358. package/src/internal/compiling/load_babel_plugin_map_from_file.js +0 -49
  359. package/src/internal/compiling/rollup_plugin_commonjs_named_exports.js +0 -187
  360. package/src/internal/compiling/sse_service/sse_service.js +0 -369
  361. package/src/internal/compiling/startCompileServer.js +0 -518
  362. package/src/internal/compiling/transformResultToCompilationResult.js +0 -242
  363. package/src/internal/dataUrl.utils.js +0 -55
  364. package/src/internal/dev_server/event_source_client/event_source_client.js +0 -63
  365. package/src/internal/dev_server/event_source_client/file_changes.js +0 -82
  366. package/src/internal/dev_server/event_source_client/livereload_preference.js +0 -13
  367. package/src/internal/dev_server/exploring/exploring.css +0 -237
  368. package/src/internal/dev_server/exploring/exploring.html +0 -79
  369. package/src/internal/dev_server/exploring/exploring.js +0 -243
  370. package/src/internal/dev_server/exploring/fetchExploringJson.js +0 -19
  371. package/src/internal/dev_server/toolbar/compilation/compilation.css +0 -23
  372. package/src/internal/dev_server/toolbar/compilation/toolbar.compilation.js +0 -201
  373. package/src/internal/dev_server/toolbar/eventsource/toolbar.eventsource.js +0 -83
  374. package/src/internal/dev_server/toolbar/execution/toolbar.execution.js +0 -91
  375. package/src/internal/error-stack-remapping/getOriginalCallsites.js +0 -217
  376. package/src/internal/error-stack-remapping/installBrowserErrorStackRemapping.js +0 -45
  377. package/src/internal/error-stack-remapping/installErrorStackRemapping.js +0 -141
  378. package/src/internal/error-stack-remapping/installNodeErrorStackRemapping.js +0 -20
  379. package/src/internal/error-stack-remapping/remapCallSite.js +0 -314
  380. package/src/internal/error-stack-remapping/stackToString.js +0 -9
  381. package/src/internal/escapeRegexpSpecialCharacters.js +0 -34
  382. package/src/internal/escapeTemplateStringSpecialCharacters.js +0 -20
  383. package/src/internal/executing/coverage/babel_plugin_instrument.js +0 -90
  384. package/src/internal/executing/coverage/reportToCoverage.js +0 -198
  385. package/src/internal/executing/coverage_missing/createEmptyCoverage.js +0 -6
  386. package/src/internal/executing/coverage_missing/list_files_not_covered.js +0 -20
  387. package/src/internal/executing/coverage_missing/missing_coverage.js +0 -46
  388. package/src/internal/executing/coverage_missing/relativeUrlToEmptyCoverage.js +0 -63
  389. package/src/internal/executing/coverage_reporter/coverage_reporter_html_directory.js +0 -36
  390. package/src/internal/executing/coverage_reporter/coverage_reporter_json_file.js +0 -22
  391. package/src/internal/executing/coverage_reporter/coverage_reporter_text_log.js +0 -19
  392. package/src/internal/executing/coverage_reporter/istanbulCoverageMapFromCoverage.js +0 -16
  393. package/src/internal/executing/coverage_utils/file_by_file_coverage.js +0 -28
  394. package/src/internal/executing/coverage_utils/istanbul_coverage_composition.js +0 -28
  395. package/src/internal/executing/coverage_utils/v8_and_istanbul.js +0 -38
  396. package/src/internal/executing/coverage_utils/v8_coverage_composition.js +0 -23
  397. package/src/internal/executing/coverage_utils/v8_coverage_from_directory.js +0 -86
  398. package/src/internal/executing/coverage_utils/v8_coverage_to_istanbul.js +0 -100
  399. package/src/internal/executing/createSummaryLog.js +0 -143
  400. package/src/internal/executing/executionIsPassed.js +0 -2
  401. package/src/internal/executing/executionLogs.js +0 -159
  402. package/src/internal/executing/generateExecutionSteps.js +0 -29
  403. package/src/internal/executing/launchAndExecute.js +0 -458
  404. package/src/internal/features/browser_feature_detection/browser_feature_detect_dynamic_import.js +0 -20
  405. package/src/internal/features/browser_feature_detection/browser_feature_detect_import_assertions_css.js +0 -23
  406. package/src/internal/features/browser_feature_detection/browser_feature_detect_import_assertions_json.js +0 -25
  407. package/src/internal/features/browser_feature_detection/browser_feature_detect_importmap.js +0 -37
  408. package/src/internal/features/browser_feature_detection/browser_feature_detect_new_stylesheet.js +0 -9
  409. package/src/internal/features/browser_feature_detection/browser_feature_detect_top_level_await.js +0 -14
  410. package/src/internal/features/browser_feature_detection/browser_feature_detection.js +0 -89
  411. package/src/internal/features/browser_feature_detection/compile_proxy.html +0 -27
  412. package/src/internal/features/browser_feature_detection/execute_with_script_module.js +0 -24
  413. package/src/internal/features/features_compat_from_runtime.js +0 -38
  414. package/src/internal/features/features_compat_from_runtime_support.js +0 -31
  415. package/src/internal/features/features_compatibility.js +0 -37
  416. package/src/internal/features/node_feature_detection/feature_detect_dynamic_import.mjs +0 -5
  417. package/src/internal/features/node_feature_detection/feature_detect_top_level_await.mjs +0 -1
  418. package/src/internal/features/node_feature_detection/node_feature_detect_dynamic_import.js +0 -5
  419. package/src/internal/features/node_feature_detection/node_feature_detect_top_level_await.js +0 -16
  420. package/src/internal/features/node_feature_detection/node_feature_detection.js +0 -66
  421. package/src/internal/fetchUrl.js +0 -28
  422. package/src/internal/filePathUtils.js +0 -19
  423. package/src/internal/import-resolution/default-extension.js +0 -40
  424. package/src/internal/import-resolution/import-resolver-importmap.js +0 -64
  425. package/src/internal/import-resolution/import-resolver-node.js +0 -254
  426. package/src/internal/import-resolution/importmap_default.js +0 -37
  427. package/src/internal/jsenvCoreDirectoryUrl.js +0 -11
  428. package/src/internal/jsenvInternalFiles.js +0 -36
  429. package/src/internal/jsenv_builds.js +0 -19
  430. package/src/internal/jsenv_remote_directory.js +0 -156
  431. package/src/internal/logs/byte.js +0 -10
  432. package/src/internal/logs/byteAsFileSize.js +0 -9
  433. package/src/internal/logs/msAsDuration.js +0 -12
  434. package/src/internal/memoize.js +0 -24
  435. package/src/internal/node_launcher/node_runtime_report.js +0 -77
  436. package/src/internal/node_launcher/processOptions.js +0 -46
  437. package/src/internal/node_runtime/evalSource.js +0 -6
  438. package/src/internal/node_runtime/fetchSource.js +0 -8
  439. package/src/internal/node_runtime/node_execution_dynamic_import.js +0 -74
  440. package/src/internal/node_runtime/node_execution_performance.js +0 -67
  441. package/src/internal/node_runtime/node_execution_systemjs.js +0 -125
  442. package/src/internal/node_runtime/node_system.js +0 -191
  443. package/src/internal/origin_directory_converter.js +0 -62
  444. package/src/internal/perf_node.js +0 -13
  445. package/src/internal/promise_race.js +0 -19
  446. package/src/internal/redirector/redirector.html +0 -40
  447. package/src/internal/require.js +0 -3
  448. package/src/internal/response_validation.js +0 -130
  449. package/src/internal/runtime/module-registration.js +0 -207
  450. package/src/internal/runtime/s.js +0 -864
  451. package/src/internal/runtime/s.js.md +0 -1
  452. package/src/internal/runtime/valueInstall.js +0 -14
  453. package/src/internal/runtime_support/jsenv_runtime_support.js +0 -15
  454. package/src/internal/runtime_support/runtime_support.js +0 -70
  455. package/src/internal/semantic_versioning/findHighestVersion.js +0 -12
  456. package/src/internal/semantic_versioning/findLowestVersion.js +0 -12
  457. package/src/internal/semantic_versioning/index.js +0 -5
  458. package/src/internal/semantic_versioning/valueToVersion.js +0 -44
  459. package/src/internal/semantic_versioning/versionCompare.js +0 -32
  460. package/src/internal/semantic_versioning/versionIsAbove.js +0 -5
  461. package/src/internal/semantic_versioning/versionIsBelow.js +0 -5
  462. package/src/internal/semantic_versioning/versionIsEqual.js +0 -3
  463. package/src/internal/sourceMappingURLUtils.js +0 -112
  464. package/src/internal/url_conversion.js +0 -313
  465. package/src/internal/url_utils.js +0 -33
  466. package/src/internal/url_utils.test.js +0 -39
  467. package/src/jsenvCoverageConfig.js +0 -7
  468. package/src/jsenvExplorableConfig.js +0 -9
  469. package/src/jsenvRuntimeSupportDuringDev.js +0 -12
  470. package/src/jsenvServiceWorkerFinalizer.js +0 -55
  471. package/src/jsonToJavaScriptModule.js +0 -12
  472. package/src/launchBrowser.js +0 -43
  473. package/src/launchNode.js +0 -227
  474. package/src/playwright_browser_versions.js +0 -5
  475. package/src/requireUsingChildProcess.js +0 -67
  476. package/src/textToJavaScriptModule.js +0 -14
@@ -1,814 +0,0 @@
1
- /**
2
-
3
- Finds all asset reference in html then update all references to target the files in dist/ when needed.
4
-
5
- There is some cases where the asset won't be found and updated:
6
- - inline styles
7
- - inline attributes
8
-
9
- Don't write the following for instance:
10
-
11
- <div style="background:url('img.png')"></div>
12
-
13
- Or be sure to also reference this url somewhere in the html file like
14
-
15
- <link rel="preload" href="img.png" />
16
-
17
- */
18
-
19
- import { urlToFilename, urlToRelativeUrl, resolveUrl } from "@jsenv/filesystem"
20
- import { applyAlgoToRepresentationData } from "@jsenv/integrity"
21
-
22
-
23
- import {
24
- parseHtmlString,
25
- parseHtmlAstRessources,
26
- replaceHtmlNode,
27
- getHtmlNodeAttributeByName,
28
- stringifyHtmlAst,
29
- getIdForInlineHtmlNode,
30
- removeHtmlNodeAttribute,
31
- setHtmlNodeText,
32
- getHtmlNodeTextNode,
33
- parseSrcset,
34
- stringifySrcset,
35
- getHtmlNodeLocation,
36
- removeHtmlNode,
37
- addHtmlNodeAttribute,
38
- } from "@jsenv/core/src/internal/compiling/compileHtml.js"
39
- import {
40
- getJavaScriptSourceMappingUrl,
41
- setJavaScriptSourceMappingUrl,
42
- getCssSourceMappingUrl,
43
- setCssSourceMappingUrl,
44
- } from "@jsenv/core/src/internal/sourceMappingURLUtils.js"
45
- import {
46
- getRessourceAsBase64Url,
47
- isReferencedOnlyByRessourceHint,
48
- } from "../ressource_builder_util.js"
49
- import { collectNodesMutations } from "../parsing.utils.js"
50
-
51
- import { collectSvgMutations } from "../svg/parseSvgRessource.js"
52
- import { moveCssUrls } from "../css/moveCssUrls.js"
53
-
54
- export const parseHtmlRessource = async (
55
- htmlRessource,
56
- notifiers,
57
- {
58
- minify,
59
- minifyHtml,
60
- htmlStringToHtmlAst = (htmlString) => parseHtmlString(htmlString),
61
- htmlAstToHtmlString = (htmlAst) => stringifyHtmlAst(htmlAst),
62
- ressourceHintNeverUsedCallback = () => {},
63
- } = {},
64
- ) => {
65
- const htmlString = String(htmlRessource.bufferBeforeBuild)
66
- const htmlAst = await htmlStringToHtmlAst(htmlString)
67
- const { links, styles, scripts, imgs, images, uses, sources } =
68
- parseHtmlAstRessources(htmlAst)
69
-
70
- const linksMutations = collectNodesMutations(
71
- links,
72
- {
73
- ...notifiers,
74
- ressourceHintNeverUsedCallback,
75
- },
76
- htmlRessource,
77
- [linkStylesheetHrefVisitor, linkHrefVisitor],
78
- )
79
- const scriptsMutations = collectNodesMutations(
80
- scripts,
81
- {
82
- ...notifiers,
83
- },
84
- htmlRessource,
85
- [
86
- // regular javascript are not parseable by rollup
87
- // and we don't really care about there content
88
- // we will handle them as regular asset
89
- // but we still want to inline/minify/hash them for performance
90
- regularScriptSrcVisitor,
91
- regularScriptTextNodeVisitor,
92
- moduleScriptSrcVisitor,
93
- moduleScriptTextNodeVisitor,
94
- importmapScriptSrcVisitor,
95
- importmapScriptTextNodeVisitor,
96
- ],
97
- )
98
- const stylesMutations = collectNodesMutations(
99
- styles,
100
- notifiers,
101
- htmlRessource,
102
- [styleTextNodeVisitor],
103
- )
104
- const imgsSrcMutations = collectNodesMutations(
105
- imgs,
106
- notifiers,
107
- htmlRessource,
108
- [imgSrcVisitor],
109
- )
110
- const imgsSrcsetMutations = collectNodesMutations(
111
- imgs,
112
- notifiers,
113
- htmlRessource,
114
- [srcsetVisitor],
115
- )
116
- const sourcesSrcMutations = collectNodesMutations(
117
- sources,
118
- notifiers,
119
- htmlRessource,
120
- [sourceSrcVisitor],
121
- )
122
- const sourcesSrcsetMutations = collectNodesMutations(
123
- sources,
124
- notifiers,
125
- htmlRessource,
126
- [srcsetVisitor],
127
- )
128
- const svgMutations = collectSvgMutations(
129
- { images, uses },
130
- notifiers,
131
- htmlRessource,
132
- )
133
-
134
- const htmlMutations = [
135
- ...linksMutations,
136
- ...scriptsMutations,
137
- ...stylesMutations,
138
- ...imgsSrcMutations,
139
- ...imgsSrcsetMutations,
140
- ...sourcesSrcMutations,
141
- ...sourcesSrcsetMutations,
142
- ...svgMutations,
143
- ]
144
-
145
- return async (params) => {
146
- await htmlMutations.reduce(async (previous, mutationCallback) => {
147
- await previous
148
- await mutationCallback({
149
- ...params,
150
- })
151
- }, Promise.resolve())
152
-
153
- const htmlAfterTransformation = htmlAstToHtmlString(htmlAst)
154
- const html = minify
155
- ? await minifyHtml(htmlAfterTransformation)
156
- : htmlAfterTransformation
157
- htmlRessource.buildEnd(html)
158
- }
159
- }
160
-
161
- const regularScriptSrcVisitor = (
162
- script,
163
- { notifyReferenceFound },
164
- htmlRessource,
165
- ) => {
166
- const typeAttribute = getHtmlNodeAttributeByName(script, "type")
167
- if (
168
- typeAttribute &&
169
- (typeAttribute.value !== "text/javascript" ||
170
- typeAttribute.value !== "application/javascript")
171
- ) {
172
- return null
173
- }
174
- const srcAttribute = getHtmlNodeAttributeByName(script, "src")
175
- if (!srcAttribute) {
176
- return null
177
- }
178
- const integrityAttribute = getHtmlNodeAttributeByName(script, "integrity")
179
- const integrity = integrityAttribute ? integrityAttribute.value : ""
180
- const remoteScriptReference = notifyReferenceFound({
181
- referenceLabel: "html script",
182
- contentTypeExpected: "application/javascript",
183
- ressourceSpecifier: srcAttribute.value,
184
- integrity,
185
- ...crossoriginFromHtmlNode(script),
186
- ...referenceLocationFromHtmlNode(script, "src"),
187
- })
188
- return ({ getUrlRelativeToImporter }) => {
189
- const ressource = remoteScriptReference.ressource
190
- if (ressource.isExternal) {
191
- return
192
- }
193
- if (shouldInline({ ressource, htmlNode: script })) {
194
- removeHtmlNodeAttribute(script, srcAttribute)
195
- const { bufferAfterBuild } = ressource
196
- let jsString = String(bufferAfterBuild)
197
-
198
- const sourcemapRelativeUrl = getJavaScriptSourceMappingUrl(jsString)
199
- if (sourcemapRelativeUrl) {
200
- const { buildRelativeUrl } = ressource
201
- const jsBuildUrl = resolveUrl(buildRelativeUrl, "file:///")
202
- const sourcemapBuildUrl = resolveUrl(sourcemapRelativeUrl, jsBuildUrl)
203
- const htmlUrl = resolveUrl(htmlRessource.fileNamePattern, "file:///")
204
- const sourcemapInlineUrl = urlToRelativeUrl(sourcemapBuildUrl, htmlUrl)
205
- jsString = setJavaScriptSourceMappingUrl(jsString, sourcemapInlineUrl)
206
- }
207
- setHtmlNodeText(script, jsString)
208
- remoteScriptReference.inlinedCallback()
209
- return
210
- }
211
- const urlRelativeToImporter = getUrlRelativeToImporter(ressource)
212
- srcAttribute.value = urlRelativeToImporter
213
- if (integrityAttribute) {
214
- const base64Value = applyAlgoToRepresentationData(
215
- "sha256",
216
- ressource.bufferAfterBuild,
217
- )
218
- integrityAttribute.value = `sha256-${base64Value}`
219
- }
220
- }
221
- }
222
-
223
- const regularScriptTextNodeVisitor = (
224
- script,
225
- { notifyReferenceFound },
226
- htmlRessource,
227
- scripts,
228
- ) => {
229
- const typeAttribute = getHtmlNodeAttributeByName(script, "type")
230
- if (
231
- typeAttribute &&
232
- (typeAttribute.value !== "text/javascript" ||
233
- typeAttribute.value !== "application/javascript")
234
- ) {
235
- return null
236
- }
237
- const srcAttribute = getHtmlNodeAttributeByName(script, "src")
238
- if (srcAttribute) {
239
- return null
240
- }
241
- const textNode = getHtmlNodeTextNode(script)
242
- if (!textNode) {
243
- return null
244
- }
245
- const scriptId = getIdForInlineHtmlNode(script, scripts)
246
- const ressourceSpecifier = `${urlToFilename(
247
- htmlRessource.url,
248
- )}__inline__${scriptId}.js`
249
- const jsReference = notifyReferenceFound({
250
- referenceLabel: "html inline script",
251
- contentTypeExpected: "application/javascript",
252
- ressourceSpecifier,
253
- ...referenceLocationFromHtmlNode(script),
254
- contentType: "application/javascript",
255
- bufferBeforeBuild: Buffer.from(textNode.value),
256
- isInline: true,
257
- })
258
- return () => {
259
- const { bufferAfterBuild } = jsReference.ressource
260
- textNode.value = String(bufferAfterBuild)
261
- }
262
- }
263
-
264
- const moduleScriptSrcVisitor = (script, { format, notifyReferenceFound }) => {
265
- const typeAttribute = getHtmlNodeAttributeByName(script, "type")
266
- if (!typeAttribute) {
267
- return null
268
- }
269
- if (typeAttribute.value !== "module") {
270
- return null
271
- }
272
- const srcAttribute = getHtmlNodeAttributeByName(script, "src")
273
- if (!srcAttribute) {
274
- return null
275
- }
276
- const integrityAttribute = getHtmlNodeAttributeByName(script, "integrity")
277
- const integrity = integrityAttribute ? integrityAttribute.value : ""
278
- const remoteScriptReference = notifyReferenceFound({
279
- referenceLabel: "html module script",
280
- contentTypeExpected: "application/javascript",
281
- ressourceSpecifier: srcAttribute.value,
282
- integrity,
283
- ...crossoriginFromHtmlNode(script),
284
- ...referenceLocationFromHtmlNode(script, "src"),
285
- isJsModule: true,
286
- })
287
- return ({ getUrlRelativeToImporter }) => {
288
- const { ressource } = remoteScriptReference
289
- if (format === "systemjs") {
290
- removeHtmlNodeAttribute(script, typeAttribute)
291
- }
292
- if (ressource.isExternal) {
293
- return
294
- }
295
- if (shouldInline({ ressource, htmlNode: script })) {
296
- // here put a warning if we cannot inline importmap because it would mess
297
- // the remapping (note that it's feasible) but not yet supported
298
- removeHtmlNodeAttribute(script, srcAttribute)
299
- const { bufferAfterBuild } = ressource
300
- let jsString = String(bufferAfterBuild)
301
-
302
- // at this stage, for some reason the sourcemap url is not in the js
303
- // (it will be added shortly after by "injectSourcemapInRollupBuild")
304
- // but we know that a script type module have a sourcemap
305
- // and will be next to html file
306
- // with these assumptions we can force the sourcemap url
307
- const sourcemapUrl = `${ressource.buildRelativeUrl}.map`
308
- jsString = setJavaScriptSourceMappingUrl(jsString, sourcemapUrl)
309
- setHtmlNodeText(script, jsString)
310
- remoteScriptReference.inlinedCallback()
311
- return
312
- }
313
- const urlRelativeToImporter = getUrlRelativeToImporter(ressource)
314
- const relativeUrlNotation = ensureRelativeUrlNotation(urlRelativeToImporter)
315
- srcAttribute.value = relativeUrlNotation
316
- if (integrityAttribute) {
317
- const base64Value = applyAlgoToRepresentationData(
318
- "sha256",
319
- ressource.bufferAfterBuild,
320
- )
321
- integrityAttribute.value = `sha256-${base64Value}`
322
- }
323
- }
324
- }
325
-
326
- const moduleScriptTextNodeVisitor = (
327
- script,
328
- { format, notifyReferenceFound },
329
- htmlRessource,
330
- scripts,
331
- ) => {
332
- const typeAttribute = getHtmlNodeAttributeByName(script, "type")
333
- if (!typeAttribute) {
334
- return null
335
- }
336
- if (typeAttribute.value !== "module") {
337
- return null
338
- }
339
- const srcAttribute = getHtmlNodeAttributeByName(script, "src")
340
- if (srcAttribute) {
341
- return null
342
- }
343
- const textNode = getHtmlNodeTextNode(script)
344
- if (!textNode) {
345
- return null
346
- }
347
- const scriptId = getIdForInlineHtmlNode(script, scripts)
348
- const ressourceSpecifier = `${urlToFilename(
349
- htmlRessource.url,
350
- )}__inline__${scriptId}.js`
351
- const jsReference = notifyReferenceFound({
352
- referenceLabel: "html inline module script",
353
- contentTypeExpected: "application/javascript",
354
- ressourceSpecifier,
355
- ...referenceLocationFromHtmlNode(script),
356
- contentType: "application/javascript",
357
- bufferBeforeBuild: textNode.value,
358
- isJsModule: true,
359
- isInline: true,
360
- })
361
- return () => {
362
- if (format === "systemjs") {
363
- removeHtmlNodeAttribute(script, typeAttribute)
364
- }
365
- const { bufferAfterBuild } = jsReference.ressource
366
- const jsText = String(bufferAfterBuild)
367
- textNode.value = jsText
368
- }
369
- }
370
-
371
- const importmapScriptSrcVisitor = (
372
- script,
373
- { format, notifyReferenceFound },
374
- ) => {
375
- const typeAttribute = getHtmlNodeAttributeByName(script, "type")
376
- if (!typeAttribute) {
377
- return null
378
- }
379
- if (typeAttribute.value !== "importmap") {
380
- return null
381
- }
382
- const srcAttribute = getHtmlNodeAttributeByName(script, "src")
383
- if (!srcAttribute) {
384
- return null
385
- }
386
- const integrityAttribute = getHtmlNodeAttributeByName(script, "integrity")
387
- const integrity = integrityAttribute ? integrityAttribute.value : ""
388
- const importmapReference = notifyReferenceFound({
389
- referenceLabel: "html importmap",
390
- contentTypeExpected: "application/importmap+json",
391
- ressourceSpecifier: srcAttribute.value,
392
- integrity,
393
- ...crossoriginFromHtmlNode(script),
394
- ...referenceLocationFromHtmlNode(script, "src"),
395
- })
396
- return ({ getUrlRelativeToImporter }) => {
397
- const { ressource } = importmapReference
398
- if (format === "systemjs") {
399
- typeAttribute.value = "systemjs-importmap"
400
- }
401
- if (ressource.isExternal) {
402
- return
403
- }
404
- if (
405
- // for esmodule we always inline the importmap
406
- // as it's the only thing supported by Chrome
407
- // window.__resolveImportUrl__ also expects importmap to be inlined
408
- format === "esmodule" ||
409
- // for systemjs we inline as well to save http request for the scenario
410
- // where many ressources are inlined in the HTML file
411
- format === "systemjs" ||
412
- shouldInline({ ressource, htmlNode: script })
413
- ) {
414
- // here put a warning if we cannot inline importmap because it would mess
415
- // the remapping (note that it's feasible) but not yet supported
416
- const { bufferAfterBuild } = ressource
417
- const importmapString = String(bufferAfterBuild)
418
- removeHtmlNodeAttribute(script, srcAttribute)
419
- setHtmlNodeText(script, importmapString)
420
- removeHtmlNodeAttribute(script, integrityAttribute)
421
- importmapReference.inlinedCallback()
422
- return
423
- }
424
- const urlRelativeToImporter = getUrlRelativeToImporter(ressource)
425
- srcAttribute.value = urlRelativeToImporter
426
- if (integrityAttribute) {
427
- const base64Value = applyAlgoToRepresentationData(
428
- "sha256",
429
- ressource.bufferAfterBuild,
430
- )
431
- integrityAttribute.value = `sha256-${base64Value}`
432
- }
433
- }
434
- }
435
-
436
- const importmapScriptTextNodeVisitor = (
437
- script,
438
- { format, notifyReferenceFound },
439
- htmlRessource,
440
- scripts,
441
- ) => {
442
- const typeAttribute = getHtmlNodeAttributeByName(script, "type")
443
- if (!typeAttribute) {
444
- return null
445
- }
446
- if (typeAttribute.value !== "importmap") {
447
- return null
448
- }
449
- const srcAttribute = getHtmlNodeAttributeByName(script, "src")
450
- if (srcAttribute) {
451
- return null
452
- }
453
- const textNode = getHtmlNodeTextNode(script)
454
- if (!textNode) {
455
- return null
456
- }
457
- const importmapScriptId = getIdForInlineHtmlNode(script, scripts)
458
- const importmapReference = notifyReferenceFound({
459
- referenceLabel: "html inline importmap",
460
- contentTypeExpected: "application/importmap+json",
461
- ressourceSpecifier: `${urlToFilename(
462
- htmlRessource.url,
463
- )}__inline__${importmapScriptId}.importmap`,
464
- ...referenceLocationFromHtmlNode(script),
465
- contentType: "application/importmap+json",
466
- bufferBeforeBuild: Buffer.from(textNode.value),
467
- isInline: true,
468
- })
469
- return () => {
470
- if (format === "systemjs") {
471
- typeAttribute.value = "systemjs-importmap"
472
- }
473
- const { bufferAfterBuild } = importmapReference.ressource
474
- textNode.value = bufferAfterBuild
475
- }
476
- }
477
-
478
- const linkStylesheetHrefVisitor = (
479
- link,
480
- { notifyReferenceFound },
481
- htmlRessource,
482
- ) => {
483
- const hrefAttribute = getHtmlNodeAttributeByName(link, "href")
484
- if (!hrefAttribute) {
485
- return null
486
- }
487
- const relAttribute = getHtmlNodeAttributeByName(link, "rel")
488
- if (!relAttribute) {
489
- return null
490
- }
491
- if (relAttribute.value !== "stylesheet") {
492
- return null
493
- }
494
- const integrityAttribute = getHtmlNodeAttributeByName(link, "integrity")
495
- const integrity = integrityAttribute ? integrityAttribute.value : ""
496
- const cssReference = notifyReferenceFound({
497
- referenceLabel: "html stylesheet link",
498
- contentTypeExpected: "text/css",
499
- ressourceSpecifier: hrefAttribute.value,
500
- integrity,
501
- ...crossoriginFromHtmlNode(link),
502
- ...referenceLocationFromHtmlNode(link, "href"),
503
- })
504
- return async ({ getUrlRelativeToImporter, buildDirectoryUrl }) => {
505
- const { ressource } = cssReference
506
- if (ressource.isExternal) {
507
- return
508
- }
509
- if (shouldInline({ ressource, htmlNode: link })) {
510
- const { bufferAfterBuild } = ressource
511
- let code = String(bufferAfterBuild)
512
- const { buildRelativeUrl } = ressource
513
- const cssBuildUrl = resolveUrl(buildRelativeUrl, buildDirectoryUrl)
514
- const htmlBuildUrl = resolveUrl(
515
- htmlRessource.buildRelativeUrlWithoutHash,
516
- buildDirectoryUrl,
517
- )
518
- const moveResult = await moveCssUrls({
519
- code,
520
- from: cssBuildUrl,
521
- to: htmlBuildUrl,
522
- // moveCssUrls will change the css source code
523
- // Ideally we should update the sourcemap referenced by css
524
- // to target the one after css urls are moved.
525
- // It means we should force sourcemap ressource to the new one
526
- // until it's supported we prevent postcss from updating the
527
- // sourcemap comment, othwise css would reference a sourcemap
528
- // that won't by in the build directory
529
- sourcemapMethod: null,
530
- })
531
- code = moveResult.code
532
- const sourcemapRelativeUrl = getCssSourceMappingUrl(code)
533
- if (sourcemapRelativeUrl) {
534
- const cssBuildUrl = resolveUrl(buildRelativeUrl, buildDirectoryUrl)
535
- const sourcemapBuildUrl = resolveUrl(sourcemapRelativeUrl, cssBuildUrl)
536
- const sourcemapInlineUrl = urlToRelativeUrl(
537
- sourcemapBuildUrl,
538
- htmlBuildUrl,
539
- )
540
- code = setCssSourceMappingUrl(code, sourcemapInlineUrl)
541
- }
542
- replaceHtmlNode(link, `<style>${code}</style>`, {
543
- attributesToIgnore: [
544
- "href",
545
- "rel",
546
- "as",
547
- "crossorigin",
548
- "type",
549
- "integrity",
550
- ],
551
- })
552
- cssReference.inlinedCallback()
553
- return
554
- }
555
- const urlRelativeToImporter = getUrlRelativeToImporter(ressource)
556
- hrefAttribute.value = urlRelativeToImporter
557
- if (integrityAttribute) {
558
- const base64Value = applyAlgoToRepresentationData(
559
- "sha256",
560
- ressource.bufferAfterBuild,
561
- )
562
- integrityAttribute.value = `sha256-${base64Value}`
563
- }
564
- }
565
- }
566
-
567
- const linkHrefVisitor = (
568
- link,
569
- { format, notifyReferenceFound, ressourceHintNeverUsedCallback },
570
- ) => {
571
- const hrefAttribute = getHtmlNodeAttributeByName(link, "href")
572
- if (!hrefAttribute) {
573
- return null
574
- }
575
- const href = hrefAttribute.value
576
- const relAttribute = getHtmlNodeAttributeByName(link, "rel")
577
- const rel = relAttribute ? relAttribute.value : undefined
578
- const isRessourceHint = [
579
- "preconnect",
580
- "dns-prefetch",
581
- "prefetch",
582
- "preload",
583
- "modulepreload",
584
- ].includes(rel)
585
- let contentTypeExpected
586
- const typeAttribute = getHtmlNodeAttributeByName(link, "type")
587
- const type = typeAttribute ? typeAttribute.value : ""
588
- let isJsModule = false
589
- if (type) {
590
- contentTypeExpected = type
591
- } else if (rel === "manifest") {
592
- contentTypeExpected = "application/manifest+json"
593
- } else if (rel === "modulepreload") {
594
- contentTypeExpected = "application/javascript"
595
- isJsModule = true
596
- }
597
- const integrityAttribute = getHtmlNodeAttributeByName(link, "integrity")
598
- const integrity = integrityAttribute ? integrityAttribute.value : ""
599
- const linkReference = notifyReferenceFound({
600
- referenceLabel: rel ? `html ${rel} link href` : `html link href`,
601
- isRessourceHint,
602
- contentTypeExpected,
603
- ressourceSpecifier: href,
604
- integrity,
605
- ...crossoriginFromHtmlNode(link),
606
- ...referenceLocationFromHtmlNode(link, "href"),
607
- urlVersioningDisabled: contentTypeExpected === "application/manifest+json",
608
- isJsModule,
609
- })
610
- return ({ getUrlRelativeToImporter }) => {
611
- const { ressource } = linkReference
612
- if (isRessourceHint) {
613
- if (isReferencedOnlyByRessourceHint(ressource)) {
614
- ressourceHintNeverUsedCallback({
615
- htmlNode: link,
616
- rel,
617
- href: hrefAttribute.value,
618
- htmlAttributeName: "href",
619
- })
620
- // we could remove the HTML node but better keep it untouched and let user decide what to do
621
- return
622
- }
623
- ressource.inlinedCallbacks.push(() => {
624
- removeHtmlNode(link)
625
- })
626
- }
627
- if (ressource.isExternal) {
628
- return
629
- }
630
- if (format === "systemjs" && rel === "modulepreload") {
631
- const urlRelativeToImporter = getUrlRelativeToImporter(ressource)
632
- relAttribute.value = "preload"
633
- hrefAttribute.value = urlRelativeToImporter
634
- addHtmlNodeAttribute(link, { name: "as", value: "script" })
635
- return
636
- }
637
- if (shouldInline({ ressource, htmlNode: link })) {
638
- removeHtmlNode(link)
639
- linkReference.inlinedCallback()
640
- return
641
- }
642
- const urlRelativeToImporter = getUrlRelativeToImporter(ressource)
643
- hrefAttribute.value = urlRelativeToImporter
644
- if (integrityAttribute) {
645
- const base64Value = applyAlgoToRepresentationData(
646
- "sha256",
647
- ressource.bufferAfterBuild,
648
- )
649
- integrityAttribute.value = `sha256-${base64Value}`
650
- }
651
- }
652
- }
653
-
654
- const styleTextNodeVisitor = (
655
- style,
656
- { notifyReferenceFound },
657
- htmlRessource,
658
- styles,
659
- ) => {
660
- const textNode = getHtmlNodeTextNode(style)
661
- if (!textNode) {
662
- return null
663
- }
664
- const styleId = getIdForInlineHtmlNode(style, styles)
665
- const inlineStyleReference = notifyReferenceFound({
666
- referenceLabel: "html style",
667
- contentTypeExpected: "text/css",
668
- ressourceSpecifier: `${urlToFilename(
669
- htmlRessource.url,
670
- )}__inline__${styleId}.css`,
671
- ...referenceLocationFromHtmlNode(style),
672
- contentType: "text/css",
673
- bufferBeforeBuild: Buffer.from(textNode.value),
674
- isInline: true,
675
- })
676
- return () => {
677
- const { bufferAfterBuild } = inlineStyleReference.ressource
678
- textNode.value = bufferAfterBuild
679
- }
680
- }
681
-
682
- const imgSrcVisitor = (img, { notifyReferenceFound }) => {
683
- const srcAttribute = getHtmlNodeAttributeByName(img, "src")
684
- if (!srcAttribute) {
685
- return null
686
- }
687
- const srcReference = notifyReferenceFound({
688
- referenceLabel: "html img src",
689
- ressourceSpecifier: srcAttribute.value,
690
- ...crossoriginFromHtmlNode(img),
691
- ...referenceLocationFromHtmlNode(img, "src"),
692
- })
693
- return ({ getUrlRelativeToImporter }) => {
694
- const srcNewValue = referenceToUrl({
695
- reference: srcReference,
696
- htmlNode: img,
697
- getUrlRelativeToImporter,
698
- })
699
- srcAttribute.value = srcNewValue
700
- }
701
- }
702
-
703
- const srcsetVisitor = (htmlNode, { notifyReferenceFound }) => {
704
- const srcsetAttribute = getHtmlNodeAttributeByName(htmlNode, "srcset")
705
- if (!srcsetAttribute) {
706
- return null
707
- }
708
- const srcsetParts = parseSrcset(srcsetAttribute.value)
709
- const srcsetPartsReferences = srcsetParts.map(({ specifier }, index) =>
710
- notifyReferenceFound({
711
- referenceLabel: `html srcset ${index}`,
712
- ressourceSpecifier: specifier,
713
- ...crossoriginFromHtmlNode(htmlNode),
714
- ...referenceLocationFromHtmlNode(htmlNode, "srcset"),
715
- }),
716
- )
717
- if (srcsetParts.length === 0) {
718
- return null
719
- }
720
- return ({ getUrlRelativeToImporter }) => {
721
- srcsetParts.forEach((srcsetPart, index) => {
722
- const reference = srcsetPartsReferences[index]
723
- srcsetPart.specifier = referenceToUrl({
724
- reference,
725
- htmlNode,
726
- getUrlRelativeToImporter,
727
- })
728
- })
729
-
730
- const srcsetNewValue = stringifySrcset(srcsetParts)
731
- srcsetAttribute.value = srcsetNewValue
732
- }
733
- }
734
-
735
- const sourceSrcVisitor = (source, { notifyReferenceFound }) => {
736
- const srcAttribute = getHtmlNodeAttributeByName(source, "src")
737
- if (!srcAttribute) {
738
- return null
739
- }
740
- const typeAttribute = getHtmlNodeAttributeByName(source, "type")
741
- const srcReference = notifyReferenceFound({
742
- referenceLabel: "html source",
743
- contentTypeExpected: typeAttribute ? typeAttribute.value : undefined,
744
- ressourceSpecifier: srcAttribute.value,
745
- ...crossoriginFromHtmlNode(source),
746
- ...referenceLocationFromHtmlNode(source, "src"),
747
- })
748
- return ({ getUrlRelativeToImporter }) => {
749
- const srcNewValue = referenceToUrl({
750
- reference: srcReference,
751
- htmlNode: source,
752
- getUrlRelativeToImporter,
753
- })
754
- srcAttribute.value = srcNewValue
755
- }
756
- }
757
-
758
- const referenceToUrl = ({ reference, htmlNode, getUrlRelativeToImporter }) => {
759
- const { ressource } = reference
760
- if (ressource.isExternal) {
761
- return ressource.url
762
- }
763
- if (shouldInline({ ressource, htmlNode })) {
764
- reference.inlinedCallback()
765
- return getRessourceAsBase64Url(ressource)
766
- }
767
- return getUrlRelativeToImporter(ressource)
768
- }
769
-
770
- const crossoriginFromHtmlNode = (htmlNode) => {
771
- const crossOriginAttribute = getHtmlNodeAttributeByName(
772
- htmlNode,
773
- "crossorigin",
774
- )
775
- const crossorigin = crossOriginAttribute ? crossOriginAttribute.value : ""
776
- return { crossorigin }
777
- }
778
-
779
- const referenceLocationFromHtmlNode = (htmlNode, htmlAttributeName) => {
780
- const locInfo = getHtmlNodeLocation(htmlNode, htmlAttributeName)
781
- return locInfo
782
- ? {
783
- referenceLine: locInfo.line,
784
- referenceColumn: locInfo.column,
785
- }
786
- : {}
787
- }
788
-
789
- // otherwise systemjs handle it as a bare import
790
- const ensureRelativeUrlNotation = (relativeUrl) => {
791
- if (relativeUrl.startsWith("../")) {
792
- return relativeUrl
793
- }
794
- return `./${relativeUrl}`
795
- }
796
-
797
- const shouldInline = ({ ressource, htmlNode }) => {
798
- if (ressource.isInline) {
799
- return true
800
- }
801
- return readAndRemoveForceInline(htmlNode)
802
- }
803
-
804
- const readAndRemoveForceInline = (htmlNode) => {
805
- const jsenvForceInlineAttribute = getHtmlNodeAttributeByName(
806
- htmlNode,
807
- "data-jsenv-force-inline",
808
- )
809
- if (jsenvForceInlineAttribute) {
810
- removeHtmlNodeAttribute(htmlNode, jsenvForceInlineAttribute)
811
- return true
812
- }
813
- return false
814
- }