@jsenv/core 26.0.1 → 27.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (465) hide show
  1. package/main.js +17 -24
  2. package/package.json +35 -71
  3. package/readme.md +30 -37
  4. package/src/build/build.js +737 -0
  5. package/src/build/build_urls_generator.js +64 -0
  6. package/src/build/inject_version_mappings.js +62 -0
  7. package/src/build/plugins/bundle_js_module/jsenv_plugin_bundle_js_module.js +225 -0
  8. package/src/build/plugins/minify_html/jsenv_plugin_minify_html.js +30 -0
  9. package/src/build/plugins/minify_js/jsenv_plugin_minify_js.js +47 -0
  10. package/src/dev/plugins/autoreload/babel_plugin_metadata_import_meta_hot.js +98 -0
  11. package/src/dev/plugins/autoreload/client/autoreload_preference.js +11 -0
  12. package/src/dev/plugins/autoreload/client/event_source_client.js +186 -0
  13. package/src/{internal/dev_server/event_source_client → dev/plugins/autoreload/client}/event_source_connection.js +21 -25
  14. package/src/dev/plugins/autoreload/client/import_meta_hot.js +80 -0
  15. package/src/dev/plugins/autoreload/client/reload.js +101 -0
  16. package/src/dev/plugins/autoreload/client/url_helpers.js +20 -0
  17. package/src/dev/plugins/autoreload/html_hot_dependencies.js +156 -0
  18. package/src/dev/plugins/autoreload/jsenv_plugin_autoreload.js +374 -0
  19. package/src/dev/plugins/autoreload/sse_service.js +149 -0
  20. package/src/dev/plugins/explorer/client/explorer.html +607 -0
  21. package/src/{internal → dev/plugins/explorer/client}/jsenv.png +0 -0
  22. package/src/dev/plugins/explorer/jsenv_plugin_explorer.js +74 -0
  23. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/animation/toolbar_animation.js +0 -0
  24. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/eventsource/eventsource.css +2 -2
  25. package/src/dev/plugins/toolbar/client/eventsource/toolbar_eventsource.js +57 -0
  26. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/execution/execution.css +0 -0
  27. package/src/dev/plugins/toolbar/client/execution/toolbar_execution.js +88 -0
  28. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/focus/focus.css +0 -0
  29. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/focus/toolbar_focus.js +0 -0
  30. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/jsenv_logo.svg +0 -0
  31. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/notification/toolbar_notification.js +0 -0
  32. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/responsive/overflow_menu.css +0 -0
  33. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/responsive/toolbar_responsive.js +0 -0
  34. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/settings/settings.css +0 -0
  35. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/settings/toolbar_settings.js +1 -0
  36. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/theme/jsenv_theme.css +1 -15
  37. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/theme/light_theme.css +0 -17
  38. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/theme/toolbar_theme.js +0 -0
  39. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/toolbar.html +40 -199
  40. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/toolbar_injector.js +8 -28
  41. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/toolbar_main.css +0 -24
  42. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/toolbar_main.js +10 -56
  43. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/tooltip/tooltip.css +1 -1
  44. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/tooltip/tooltip.js +0 -0
  45. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/animation.js +0 -0
  46. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/dom.js +0 -0
  47. package/src/{internal/browser_utils → dev/plugins/toolbar/client/util}/fetch_using_xhr.js +0 -0
  48. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/fetching.js +2 -4
  49. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/iframe_to_parent_href.js +0 -0
  50. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/jsenv_logger.js +0 -0
  51. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/preferences.js +0 -0
  52. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/responsive.js +0 -0
  53. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/util/util.js +0 -0
  54. package/src/{internal/dev_server/toolbar → dev/plugins/toolbar/client}/variant/variant.js +0 -0
  55. package/src/dev/plugins/toolbar/jsenv_plugin_toolbar.js +62 -0
  56. package/src/dev/start_dev_server.js +105 -0
  57. package/src/execute/execute.js +132 -0
  58. package/src/execute/run.js +208 -0
  59. package/src/execute/runtimes/browsers/chromium.js +8 -0
  60. package/src/execute/runtimes/browsers/firefox.js +7 -0
  61. package/src/execute/runtimes/browsers/from_playwright.js +464 -0
  62. package/src/{browser_runtimes.js → execute/runtimes/browsers/webkit.js} +4 -18
  63. package/src/{internal/node_launcher/child_process_options.js → execute/runtimes/node/child_exec_options.js} +25 -36
  64. package/src/{internal/node_launcher/node_controllable_file.mjs → execute/runtimes/node/controllable_file.mjs} +1 -18
  65. package/src/{internal/node_launcher/node_controllable_process.js → execute/runtimes/node/controlled_process.js} +128 -150
  66. package/src/execute/runtimes/node/exec_options.js +44 -0
  67. package/src/{internal/node_launcher → execute/runtimes/node}/kill_process_tree.js +3 -1
  68. package/src/execute/runtimes/node/node_process.js +92 -0
  69. package/src/execute/runtimes/node/node_worker_thread.js +28 -0
  70. package/src/omega/core_plugins/babel/babel_helper/babel_helper_directory.js +29 -0
  71. package/src/{internal/compile_server/js → omega/core_plugins/babel/babel_helper}/babel_plugin_babel_helpers_as_jsenv_imports.js +15 -19
  72. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/.eslintrc.cjs +0 -0
  73. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/AsyncGenerator/AsyncGenerator.js +0 -0
  74. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/AwaitValue/AwaitValue.js +0 -0
  75. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/applyDecoratorDescriptor/applyDecoratorDescriptor.js +0 -0
  76. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/arrayLikeToArray/arrayLikeToArray.js +0 -0
  77. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/arrayWithHoles/arrayWithHoles.js +0 -0
  78. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/arrayWithoutHoles/arrayWithoutHoles.js +0 -0
  79. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/assertThisInitialized/assertThisInitialized.js +0 -0
  80. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/asyncGeneratorDelegate/asyncGeneratorDelegate.js +0 -0
  81. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/asyncIterator/asyncIterator.js +0 -0
  82. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/asyncToGenerator/asyncToGenerator.js +0 -0
  83. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/awaitAsyncGenerator/awaitAsyncGenerator.js +0 -0
  84. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +0 -0
  85. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classApplyDescriptorGet/classApplyDescriptorGet.js +0 -0
  86. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classApplyDescriptorSet/classApplyDescriptorSet.js +0 -0
  87. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classCallCheck/classCallCheck.js +0 -0
  88. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +0 -0
  89. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +0 -0
  90. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classExtractFieldDescriptor/classExtractFieldDescriptor.js +0 -0
  91. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classNameTDZError/classNameTDZError.js +0 -0
  92. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +0 -0
  93. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateFieldGet/classPrivateFieldGet.js +0 -0
  94. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +0 -0
  95. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +0 -0
  96. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateFieldSet/classPrivateFieldSet.js +0 -0
  97. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateMethodGet/classPrivateMethodGet.js +0 -0
  98. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classPrivateMethodSet/classPrivateMethodSet.js +0 -0
  99. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +0 -0
  100. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +0 -0
  101. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +0 -0
  102. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +0 -0
  103. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/construct/construct.js +0 -0
  104. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/createClass/createClass.js +0 -0
  105. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/createForOfIteratorHelper/createForOfIteratorHelper.js +0 -0
  106. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +0 -0
  107. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/createRawReactElement/createRawReactElement.js +0 -0
  108. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/createSuper/createSuper.js +0 -0
  109. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/decorate/decorate.js +0 -0
  110. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/defaults/defaults.js +0 -0
  111. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/defineEnumerableProperties/defineEnumerableProperties.js +0 -0
  112. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/defineProperty/defineProperty.js +0 -0
  113. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/extends/extends.js +0 -0
  114. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/get/get.js +0 -0
  115. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/getPrototypeOf/getPrototypeOf.js +0 -0
  116. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/inherits/inherits.js +0 -0
  117. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/inheritsLoose/inheritsLoose.js +0 -0
  118. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/initializerDefineProperty/initializerDefineProperty.js +0 -0
  119. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/initializerWarningHelper/initializerWarningHelper.js +0 -0
  120. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/instanceof/instanceof.js +0 -0
  121. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/interopRequireDefault/interopRequireDefault.js +0 -0
  122. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/interopRequireWildcard/interopRequireWildcard.js +0 -0
  123. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/isNativeFunction/isNativeFunction.js +0 -0
  124. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/isNativeReflectConstruct/isNativeReflectConstruct.js +0 -0
  125. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/iterableToArray/iterableToArray.js +0 -0
  126. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/iterableToArrayLimit/iterableToArrayLimit.js +0 -0
  127. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +0 -0
  128. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/jsx/jsx.js +0 -0
  129. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/maybeArrayLike/maybeArrayLike.js +0 -0
  130. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/newArrowCheck/newArrowCheck.js +0 -0
  131. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/nonIterableRest/nonIterableRest.js +0 -0
  132. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/nonIterableSpread/nonIterableSpread.js +0 -0
  133. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/objectDestructuringEmpty/objectDestructuringEmpty.js +0 -0
  134. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/objectSpread/objectSpread.js +0 -0
  135. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/objectSpread2/objectSpread2.js +0 -0
  136. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/objectWithoutProperties/objectWithoutProperties.js +0 -0
  137. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +0 -0
  138. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/possibleConstructorReturn/possibleConstructorReturn.js +0 -0
  139. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/readOnlyError/readOnlyError.js +0 -0
  140. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/readme.md +0 -0
  141. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/set/set.js +0 -0
  142. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/setPrototypeOf/setPrototypeOf.js +0 -0
  143. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/skipFirstGeneratorNext/skipFirstGeneratorNext.js +0 -0
  144. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/slicedToArray/slicedToArray.js +0 -0
  145. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/slicedToArrayLoose/slicedToArrayLoose.js +0 -0
  146. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/superPropBase/superPropBase.js +0 -0
  147. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/taggedTemplateLiteral/taggedTemplateLiteral.js +0 -0
  148. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +0 -0
  149. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/tdz/tdz.js +0 -0
  150. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/temporalRef/temporalRef.js +0 -0
  151. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/temporalUndefined/temporalUndefined.js +0 -0
  152. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/toArray/toArray.js +0 -0
  153. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/toConsumableArray/toConsumableArray.js +0 -0
  154. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/toPrimitive/toPrimitive.js +0 -0
  155. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/toPropertyKey/toPropertyKey.js +0 -0
  156. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/typeof/typeof.js +0 -0
  157. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/unsupportedIterableToArray/unsupportedIterableToArray.js +0 -0
  158. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/wrapAsyncGenerator/wrapAsyncGenerator.js +0 -0
  159. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/wrapNativeSuper/wrapNativeSuper.js +0 -0
  160. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/wrapRegExp/wrapRegExp.js +0 -0
  161. package/{helpers/babel → src/omega/core_plugins/babel/babel_helper/client}/writeOnlyError/writeOnlyError.js +0 -0
  162. package/src/omega/core_plugins/babel/global_this/babel_plugin_global_this_as_jsenv_import.js +35 -0
  163. package/{helpers/global-this/global-this.js → src/omega/core_plugins/babel/global_this/client/global_this.js} +0 -0
  164. package/src/omega/core_plugins/babel/helpers/babel_plugin_structure.js +187 -0
  165. package/src/{internal/features → omega/core_plugins/babel/helpers}/babel_plugins_compatibility.js +1 -24
  166. package/src/omega/core_plugins/babel/jsenv_plugin_babel.js +97 -0
  167. package/src/omega/core_plugins/babel/new_stylesheet/babel_plugin_new_stylesheet_as_jsenv_import.js +117 -0
  168. package/src/omega/core_plugins/babel/new_stylesheet/client/.eslintrc.cjs +24 -0
  169. package/{helpers/new_stylesheet → src/omega/core_plugins/babel/new_stylesheet/client}/new_stylesheet.js +0 -0
  170. package/src/omega/core_plugins/babel/regenerator_runtime/babel_plugin_regenerator_runtime_as_jsenv_import.js +34 -0
  171. package/{helpers/regenerator-runtime/regenerator-runtime.js → src/omega/core_plugins/babel/regenerator_runtime/client/regenerator_runtime.js} +0 -0
  172. package/src/omega/core_plugins/commonjs_globals/jsenv_plugin_commonjs_globals.js +169 -0
  173. package/src/omega/core_plugins/file_urls/jsenv_plugin_file_urls.js +67 -0
  174. package/src/omega/core_plugins/filesystem_magic/jsenv_plugin_filesystem_magic.js +58 -0
  175. package/src/{internal/browser_client → omega/core_plugins/html_supervisor/client}/error_in_document.js +10 -16
  176. package/src/{internal/browser_client → omega/core_plugins/html_supervisor/client}/error_in_notification.js +0 -0
  177. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_installer.js +168 -0
  178. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_setup.js +77 -0
  179. package/src/{internal/browser_client → omega/core_plugins/html_supervisor/client}/perf_browser.js +0 -0
  180. package/src/{internal/runtime_client → omega/core_plugins/html_supervisor/client}/uneval_exception.js +0 -0
  181. package/src/omega/core_plugins/html_supervisor/jsenv_plugin_html_supervisor.js +233 -0
  182. package/src/omega/core_plugins/import_assertions/helpers/babel_plugin_metadata_import_assertions.js +98 -0
  183. package/src/{internal/building/import_assertions → omega/core_plugins/import_assertions/helpers}/json_module.js +3 -2
  184. package/src/omega/core_plugins/import_assertions/helpers/text_module.js +6 -0
  185. package/src/omega/core_plugins/import_assertions/jsenv_plugin_import_assertions.js +211 -0
  186. package/src/omega/core_plugins/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +80 -0
  187. package/src/omega/core_plugins/importmap/jsenv_plugin_importmap.js +212 -0
  188. package/src/omega/core_plugins/inline/client/inline_content.js +6 -0
  189. package/src/omega/core_plugins/inline/jsenv_plugin_data_urls.js +70 -0
  190. package/src/omega/core_plugins/inline/jsenv_plugin_inline.js +13 -0
  191. package/src/omega/core_plugins/inline/jsenv_plugin_inline_query_param.js +42 -0
  192. package/src/omega/core_plugins/inline/jsenv_plugin_js_and_css_inside_html.js +142 -0
  193. package/src/omega/core_plugins/inline/jsenv_plugin_new_inline_content.js +210 -0
  194. package/src/omega/core_plugins/leading_slash/jsenv_plugin_leading_slash.js +12 -0
  195. package/src/omega/core_plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +77 -0
  196. package/src/omega/core_plugins/url_resolution/jsenv_plugin_url_resolution.js +28 -0
  197. package/src/omega/core_plugins/url_version/jsenv_plugin_url_version.js +50 -0
  198. package/src/omega/core_plugins.js +39 -0
  199. package/src/omega/errors.js +168 -0
  200. package/src/omega/file_url_converter.js +63 -0
  201. package/src/omega/kitchen.js +777 -0
  202. package/src/omega/omega_server.js +129 -0
  203. package/src/omega/plugin_controller.js +240 -0
  204. package/src/omega/runtime_support/default_runtime_support.js +13 -0
  205. package/src/omega/runtime_support/features_compatibility.js +91 -0
  206. package/src/omega/runtime_support/runtime_support.js +20 -0
  207. package/src/omega/server/file_service.js +155 -0
  208. package/src/omega/server/user_agent.js +22 -0
  209. package/src/omega/url_graph/url_graph_load.js +68 -0
  210. package/src/omega/url_graph/url_graph_report.js +151 -0
  211. package/src/omega/url_graph/url_graph_sort.js +29 -0
  212. package/src/omega/url_graph/url_info_transformations.js +161 -0
  213. package/src/omega/url_graph.js +132 -0
  214. package/src/omega/url_mentions/css_url_mentions.js +63 -0
  215. package/src/omega/url_mentions/html_url_mentions.js +185 -0
  216. package/src/omega/url_mentions/js_module_url_mentions.js +91 -0
  217. package/src/omega/url_mentions/parse_url_mentions.js +37 -0
  218. package/src/omega/url_mentions/worker_classic_url_mentions.js +37 -0
  219. package/src/{internal/executing → test}/execute_plan.js +154 -211
  220. package/src/{execute_test_plan.js → test/execute_test_plan.js} +26 -81
  221. package/src/{internal/executing → test}/execution_colors.js +0 -0
  222. package/src/{internal/executing → test}/execution_steps.js +2 -8
  223. package/src/{internal/executing → test}/gc.js +0 -0
  224. package/src/test/logs_file_execution.js +223 -0
  225. package/dist/browser_client/asset-manifest.json +0 -4
  226. package/dist/browser_client/browser_client_fb33eaa4.js +0 -5320
  227. package/dist/browser_client/browser_client_fb33eaa4.js.map +0 -1089
  228. package/dist/build_manifest.js +0 -12
  229. package/dist/compile_proxy/asset-manifest.json +0 -4
  230. package/dist/compile_proxy/compile_proxy.html__inline__20_651d1e7b.js.map +0 -343
  231. package/dist/compile_proxy/compile_proxy_62f952c4.html +0 -2245
  232. package/dist/event_source_client/asset-manifest.json +0 -4
  233. package/dist/event_source_client/event_source_client_69f48287.js +0 -354
  234. package/dist/event_source_client/event_source_client_69f48287.js.map +0 -128
  235. package/dist/redirector/asset-manifest.json +0 -4
  236. package/dist/redirector/redirector.html__inline__12_171e07b4.js.map +0 -349
  237. package/dist/redirector/redirector_8117ec92.html +0 -2290
  238. package/dist/toolbar/asset-manifest.json +0 -13
  239. package/dist/toolbar/assets/compilation.css_7421bd55.map +0 -12
  240. package/dist/toolbar/assets/eventsource.css_c0c71e7b.map +0 -12
  241. package/dist/toolbar/assets/execution.css_f3377c10.map +0 -12
  242. package/dist/toolbar/assets/focus.css_896f3e45.map +0 -12
  243. package/dist/toolbar/assets/light_theme.css_5bff0336.map +0 -12
  244. package/dist/toolbar/assets/overflow_menu.css_9a0fc3d8.map +0 -12
  245. package/dist/toolbar/assets/settings.css_942b5a9e.map +0 -12
  246. package/dist/toolbar/assets/toolbar_main.css_b1c67dd7.map +0 -28
  247. package/dist/toolbar/assets/tooltip.css_a94a8bdd.map +0 -12
  248. package/dist/toolbar/toolbar_b0c9100c.html +0 -4976
  249. package/dist/toolbar/toolbar_main_f54c1bb0.js.map +0 -776
  250. package/dist/toolbar_injector/asset-manifest.json +0 -5
  251. package/dist/toolbar_injector/assets/jsenv_logo_192011c2.svg +0 -95
  252. package/dist/toolbar_injector/toolbar_injector_65b501eb.js +0 -976
  253. package/dist/toolbar_injector/toolbar_injector_65b501eb.js.map +0 -294
  254. package/helpers/import-meta/import-meta-url-commonjs.js +0 -9
  255. package/helpers/import-meta/import-meta-url-global.js +0 -54
  256. package/src/build_project.js +0 -336
  257. package/src/commonjs_to_js_module.js +0 -180
  258. package/src/dev_server.js +0 -302
  259. package/src/execute.js +0 -184
  260. package/src/import_using_child_process.js +0 -68
  261. package/src/internal/browser_client/browser_client.js +0 -220
  262. package/src/internal/browser_client/browser_client_factory.js +0 -144
  263. package/src/internal/browser_client/browser_error_stack_remap.js +0 -43
  264. package/src/internal/browser_client/browser_system.js +0 -216
  265. package/src/internal/browser_client/module_namespace_transfer.js +0 -90
  266. package/src/internal/browser_detection/browser_detection.js +0 -65
  267. package/src/internal/browser_detection/detect_android.js +0 -13
  268. package/src/internal/browser_detection/detect_chrome.js +0 -28
  269. package/src/internal/browser_detection/detect_edge.js +0 -13
  270. package/src/internal/browser_detection/detect_electron.js +0 -1
  271. package/src/internal/browser_detection/detect_firefox.js +0 -17
  272. package/src/internal/browser_detection/detect_internet_explorer.js +0 -14
  273. package/src/internal/browser_detection/detect_ios.js +0 -19
  274. package/src/internal/browser_detection/detect_opera.js +0 -27
  275. package/src/internal/browser_detection/detect_safari.js +0 -13
  276. package/src/internal/browser_detection/user_agent_data.js +0 -25
  277. package/src/internal/browser_detection/util.js +0 -13
  278. package/src/internal/browser_launcher/browser_runtime_profile.js +0 -81
  279. package/src/internal/browser_launcher/execute_html_file.js +0 -355
  280. package/src/internal/browser_launcher/from_playwright.js +0 -320
  281. package/src/internal/browser_launcher/page_errors_and_logs.js +0 -77
  282. package/src/internal/browser_utils/fetch_and_eval.js +0 -27
  283. package/src/internal/browser_utils/fetch_and_eval_using_script.js +0 -47
  284. package/src/internal/browser_utils/fetch_browser.js +0 -34
  285. package/src/internal/browser_utils/fetch_json.js +0 -7
  286. package/src/internal/building/build_logs.js +0 -134
  287. package/src/internal/building/build_stats.js +0 -100
  288. package/src/internal/building/build_url_generator.js +0 -153
  289. package/src/internal/building/build_using_rollup.js +0 -359
  290. package/src/internal/building/css/apply_post_css.js +0 -55
  291. package/src/internal/building/css/jsenv_parse_css.js +0 -260
  292. package/src/internal/building/css/move_css_urls.js +0 -44
  293. package/src/internal/building/css/parse_css_urls.js +0 -38
  294. package/src/internal/building/css/postcss_plugin_url_visitor.js +0 -245
  295. package/src/internal/building/css/replace_css_urls.js +0 -68
  296. package/src/internal/building/global_format/es_to_system.js +0 -34
  297. package/src/internal/building/html/html_node_mutations.js +0 -29
  298. package/src/internal/building/html/html_scan.js +0 -70
  299. package/src/internal/building/html/jsenv_parse_html.js +0 -813
  300. package/src/internal/building/html/minify_html.js +0 -7
  301. package/src/internal/building/import_assertions/css_module.js +0 -43
  302. package/src/internal/building/import_references.js +0 -80
  303. package/src/internal/building/importmap/jsenv_parse_importmap.js +0 -28
  304. package/src/internal/building/js/babel_plugin_inline_worker_imports.js +0 -96
  305. package/src/internal/building/js/jsenv_parse_js.js +0 -122
  306. package/src/internal/building/js/minify_js.js +0 -33
  307. package/src/internal/building/js/transform_worker.js +0 -55
  308. package/src/internal/building/json/jsenv_parse_json.js +0 -11
  309. package/src/internal/building/parse_ressource.js +0 -207
  310. package/src/internal/building/ressource_builder.js +0 -1098
  311. package/src/internal/building/ressource_builder_util.js +0 -194
  312. package/src/internal/building/rollup_plugin_jsenv.js +0 -1965
  313. package/src/internal/building/sort_pathnames.js +0 -10
  314. package/src/internal/building/sourcemap/sourcemap_loader.js +0 -70
  315. package/src/internal/building/svg/jsenv_parse_svg.js +0 -112
  316. package/src/internal/building/url_fetcher.js +0 -85
  317. package/src/internal/building/url_loader.js +0 -127
  318. package/src/internal/building/url_trace.js +0 -229
  319. package/src/internal/building/url_versioning/resolve_import_url_helper.js +0 -12
  320. package/src/internal/building/url_versioning/url_versioning.js +0 -65
  321. package/src/internal/building/webmanifest/jsenv_parse_webmanifest.js +0 -48
  322. package/src/internal/compile_server/commonjs/rollup_plugin_commonjs_named_exports.js +0 -187
  323. package/src/internal/compile_server/compile_file.js +0 -273
  324. package/src/internal/compile_server/compile_server.js +0 -519
  325. package/src/internal/compile_server/compiled_file_service.js +0 -264
  326. package/src/internal/compile_server/html/html_ast.js +0 -534
  327. package/src/internal/compile_server/html/html_source_file_service.js +0 -453
  328. package/src/internal/compile_server/html/jsenv_compile_html.js +0 -674
  329. package/src/internal/compile_server/importmap/jsenv_compile_importmap.js +0 -28
  330. package/src/internal/compile_server/js/ansi_to_html.js +0 -9
  331. package/src/internal/compile_server/js/babelHelper.js +0 -145
  332. package/src/internal/compile_server/js/babel_parse_error.js +0 -9
  333. package/src/internal/compile_server/js/babel_plugin_global_this_as_jsenv_import.js +0 -34
  334. package/src/internal/compile_server/js/babel_plugin_import_assertions.js +0 -121
  335. package/src/internal/compile_server/js/babel_plugin_import_metadata.js +0 -18
  336. package/src/internal/compile_server/js/babel_plugin_import_visitor.js +0 -84
  337. package/src/internal/compile_server/js/babel_plugin_new_stylesheet_as_jsenv_import.js +0 -113
  338. package/src/internal/compile_server/js/babel_plugin_proxy_external_imports.js +0 -31
  339. package/src/internal/compile_server/js/babel_plugin_regenerator_runtime_as_jsenv_import.js +0 -48
  340. package/src/internal/compile_server/js/babel_plugin_replace_expressions.js +0 -101
  341. package/src/internal/compile_server/js/babel_plugin_systemjs_prepend.js +0 -23
  342. package/src/internal/compile_server/js/babel_plugin_transform_import_meta.js +0 -134
  343. package/src/internal/compile_server/js/babel_plugins.js +0 -37
  344. package/src/internal/compile_server/js/generateBabelHelper.js +0 -36
  345. package/src/internal/compile_server/js/js_transformer.js +0 -195
  346. package/src/internal/compile_server/js/jsenv_compile_js.js +0 -62
  347. package/src/internal/compile_server/js/load_babel_plugin_map_from_file.js +0 -49
  348. package/src/internal/compile_server/jsenv_directory/comparison_utils.js +0 -27
  349. package/src/internal/compile_server/jsenv_directory/compilation_result.js +0 -243
  350. package/src/internal/compile_server/jsenv_directory/compilation_result_from_build.js +0 -184
  351. package/src/internal/compile_server/jsenv_directory/compile_asset.js +0 -24
  352. package/src/internal/compile_server/jsenv_directory/compile_context.js +0 -60
  353. package/src/internal/compile_server/jsenv_directory/compile_profile.js +0 -217
  354. package/src/internal/compile_server/jsenv_directory/file_lock_registry.js +0 -24
  355. package/src/internal/compile_server/jsenv_directory/file_lock_registry.test.js +0 -47
  356. package/src/internal/compile_server/jsenv_directory/fs_optimized_for_cache.js +0 -57
  357. package/src/internal/compile_server/jsenv_directory/jsenv_directory.js +0 -183
  358. package/src/internal/compile_server/jsenv_directory/reuse_or_create_compiled_file.js +0 -269
  359. package/src/internal/compile_server/jsenv_directory/update_compile_cache.js +0 -131
  360. package/src/internal/compile_server/jsenv_directory/validate_compile_cache.js +0 -264
  361. package/src/internal/compile_server/sse_service/sse_service.js +0 -369
  362. package/src/internal/coverage/babel_plugin_instrument.js +0 -90
  363. package/src/internal/coverage/coverage_reporter_html_directory.js +0 -37
  364. package/src/internal/coverage/coverage_reporter_json_file.js +0 -22
  365. package/src/internal/coverage/coverage_reporter_text_log.js +0 -20
  366. package/src/internal/coverage/empty_coverage_factory.js +0 -70
  367. package/src/internal/coverage/file_by_file_coverage.js +0 -28
  368. package/src/internal/coverage/istanbul_coverage_composition.js +0 -28
  369. package/src/internal/coverage/istanbul_coverage_map_from_coverage.js +0 -16
  370. package/src/internal/coverage/list_files_not_covered.js +0 -20
  371. package/src/internal/coverage/missing_coverage.js +0 -46
  372. package/src/internal/coverage/report_to_coverage.js +0 -198
  373. package/src/internal/coverage/v8_and_istanbul.js +0 -38
  374. package/src/internal/coverage/v8_coverage_composition.js +0 -23
  375. package/src/internal/coverage/v8_coverage_from_directory.js +0 -86
  376. package/src/internal/coverage/v8_coverage_to_istanbul.js +0 -100
  377. package/src/internal/data_url.js +0 -54
  378. package/src/internal/dev_server/event_source_client/event_source_client.js +0 -63
  379. package/src/internal/dev_server/event_source_client/file_changes.js +0 -82
  380. package/src/internal/dev_server/event_source_client/livereload_preference.js +0 -13
  381. package/src/internal/dev_server/exploring/exploring.css +0 -237
  382. package/src/internal/dev_server/exploring/exploring.html +0 -79
  383. package/src/internal/dev_server/exploring/exploring.js +0 -243
  384. package/src/internal/dev_server/exploring/fetch_exploring_json.js +0 -19
  385. package/src/internal/dev_server/toolbar/compilation/compilation.css +0 -23
  386. package/src/internal/dev_server/toolbar/compilation/toolbar_compilation.js +0 -202
  387. package/src/internal/dev_server/toolbar/eventsource/toolbar_eventsource.js +0 -83
  388. package/src/internal/dev_server/toolbar/execution/toolbar_execution.js +0 -91
  389. package/src/internal/error_stack_remap/install_error_stack_remapping.js +0 -142
  390. package/src/internal/error_stack_remap/remap_call_site.js +0 -315
  391. package/src/internal/error_stack_remap/remap_stack.js +0 -218
  392. package/src/internal/error_stack_remap/stringify_stack.js +0 -9
  393. package/src/internal/executing/launch_and_execute.js +0 -458
  394. package/src/internal/executing/logs_file_execution.js +0 -160
  395. package/src/internal/executing/logs_plan_summary.js +0 -144
  396. package/src/internal/features/browser_feature_detection/browser_feature_detect_dynamic_import.js +0 -20
  397. package/src/internal/features/browser_feature_detection/browser_feature_detect_import_assertions_css.js +0 -23
  398. package/src/internal/features/browser_feature_detection/browser_feature_detect_import_assertions_json.js +0 -25
  399. package/src/internal/features/browser_feature_detection/browser_feature_detect_importmap.js +0 -37
  400. package/src/internal/features/browser_feature_detection/browser_feature_detect_new_stylesheet.js +0 -9
  401. package/src/internal/features/browser_feature_detection/browser_feature_detect_top_level_await.js +0 -14
  402. package/src/internal/features/browser_feature_detection/browser_feature_detection.js +0 -89
  403. package/src/internal/features/browser_feature_detection/compile_proxy.html +0 -27
  404. package/src/internal/features/browser_feature_detection/execute_with_script_module.js +0 -24
  405. package/src/internal/features/features_compat_from_runtime.js +0 -38
  406. package/src/internal/features/features_compat_from_runtime_support.js +0 -31
  407. package/src/internal/features/features_compatibility.js +0 -37
  408. package/src/internal/features/node_feature_detection/feature_detect_dynamic_import.mjs +0 -5
  409. package/src/internal/features/node_feature_detection/feature_detect_top_level_await.mjs +0 -1
  410. package/src/internal/features/node_feature_detection/node_feature_detect_dynamic_import.js +0 -5
  411. package/src/internal/features/node_feature_detection/node_feature_detect_top_level_await.js +0 -16
  412. package/src/internal/features/node_feature_detection/node_feature_detection.js +0 -66
  413. package/src/internal/fetching.js +0 -28
  414. package/src/internal/import_resolution/default_extension.js +0 -40
  415. package/src/internal/import_resolution/import_resolver_importmap.js +0 -64
  416. package/src/internal/import_resolution/import_resolver_node.js +0 -254
  417. package/src/internal/import_resolution/importmap_default.js +0 -37
  418. package/src/internal/jsenv_builds.js +0 -19
  419. package/src/internal/jsenv_params_assertions.js +0 -12
  420. package/src/internal/jsenv_remote_directory.js +0 -156
  421. package/src/internal/logs/byte.js +0 -10
  422. package/src/internal/logs/byte_as_file_size.js +0 -9
  423. package/src/internal/logs/ms_as_duration.js +0 -12
  424. package/src/internal/memoize.js +0 -24
  425. package/src/internal/node_launcher/eval_source.js +0 -6
  426. package/src/internal/node_launcher/fetch_source.js +0 -8
  427. package/src/internal/node_launcher/node_error_stack_remap.js +0 -22
  428. package/src/internal/node_launcher/node_execution_dynamic_import.js +0 -75
  429. package/src/internal/node_launcher/node_execution_performance.js +0 -67
  430. package/src/internal/node_launcher/node_execution_systemjs.js +0 -125
  431. package/src/internal/node_launcher/node_runtime_report.js +0 -77
  432. package/src/internal/node_launcher/node_system.js +0 -192
  433. package/src/internal/node_launcher/perf_node.js +0 -13
  434. package/src/internal/node_launcher/process_options.js +0 -46
  435. package/src/internal/node_launcher/value_install.js +0 -14
  436. package/src/internal/origin_directory_converter.js +0 -62
  437. package/src/internal/promise_race.js +0 -19
  438. package/src/internal/redirector/redirector.html +0 -40
  439. package/src/internal/regexp_escape.js +0 -34
  440. package/src/internal/require.js +0 -3
  441. package/src/internal/response_validation.js +0 -130
  442. package/src/internal/runtime_client/module_registration.js +0 -207
  443. package/src/internal/runtime_client/s.js +0 -864
  444. package/src/internal/runtime_client/s.js.md +0 -1
  445. package/src/internal/runtime_support/jsenv_runtime_support.js +0 -15
  446. package/src/internal/runtime_support/runtime_support.js +0 -70
  447. package/src/internal/semantic_versioning/compare_versions.js +0 -28
  448. package/src/internal/semantic_versioning/highest_version.js +0 -11
  449. package/src/internal/semantic_versioning/is_above.js +0 -5
  450. package/src/internal/semantic_versioning/is_below.js +0 -5
  451. package/src/internal/semantic_versioning/is_equal.js +0 -3
  452. package/src/internal/semantic_versioning/lowest_version.js +0 -11
  453. package/src/internal/semantic_versioning/version_from_value.js +0 -42
  454. package/src/internal/sourcemap_utils.js +0 -112
  455. package/src/internal/template_string_escape.js +0 -20
  456. package/src/internal/url_conversion.js +0 -313
  457. package/src/internal/url_utils.js +0 -33
  458. package/src/internal/url_utils.test.js +0 -39
  459. package/src/internal/windows_file_path_utils.js +0 -16
  460. package/src/jsenv_file_urls.js +0 -35
  461. package/src/jsenv_service_worker_finalizer.js +0 -55
  462. package/src/json_to_js_module.js +0 -13
  463. package/src/node_runtime.js +0 -227
  464. package/src/require_using_child_process.js +0 -67
  465. package/src/text_to_js_module.js +0 -13
@@ -1,813 +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
- import {
23
- parseHtmlString,
24
- parseHtmlAstRessources,
25
- replaceHtmlNode,
26
- getHtmlNodeAttributeByName,
27
- stringifyHtmlAst,
28
- getIdForInlineHtmlNode,
29
- removeHtmlNodeAttribute,
30
- setHtmlNodeText,
31
- getHtmlNodeTextNode,
32
- parseSrcset,
33
- stringifySrcset,
34
- getHtmlNodeLocation,
35
- removeHtmlNode,
36
- addHtmlNodeAttribute,
37
- } from "@jsenv/core/src/internal/compile_server/html/html_ast.js"
38
- import {
39
- getJavaScriptSourceMappingUrl,
40
- setJavaScriptSourceMappingUrl,
41
- getCssSourceMappingUrl,
42
- setCssSourceMappingUrl,
43
- } from "@jsenv/core/src/internal/sourcemap_utils.js"
44
- import {
45
- getRessourceAsBase64Url,
46
- isReferencedOnlyByRessourceHint,
47
- } from "../ressource_builder_util.js"
48
- import { collectNodesMutations } from "./html_node_mutations.js"
49
-
50
- import { collectSvgMutations } from "../svg/jsenv_parse_svg.js"
51
- import { moveCssUrls } from "../css/move_css_urls.js"
52
-
53
- export const parseHtmlRessource = async (
54
- htmlRessource,
55
- notifiers,
56
- {
57
- minify,
58
- minifyHtml,
59
- htmlStringToHtmlAst = (htmlString) => parseHtmlString(htmlString),
60
- htmlAstToHtmlString = (htmlAst) => stringifyHtmlAst(htmlAst),
61
- ressourceHintNeverUsedCallback = () => {},
62
- } = {},
63
- ) => {
64
- const htmlString = String(htmlRessource.bufferBeforeBuild)
65
- const htmlAst = await htmlStringToHtmlAst(htmlString)
66
- const { links, styles, scripts, imgs, images, uses, sources } =
67
- parseHtmlAstRessources(htmlAst)
68
-
69
- const linksMutations = collectNodesMutations(
70
- links,
71
- {
72
- ...notifiers,
73
- ressourceHintNeverUsedCallback,
74
- },
75
- htmlRessource,
76
- [linkStylesheetHrefVisitor, linkHrefVisitor],
77
- )
78
- const scriptsMutations = collectNodesMutations(
79
- scripts,
80
- {
81
- ...notifiers,
82
- },
83
- htmlRessource,
84
- [
85
- // regular javascript are not parseable by rollup
86
- // and we don't really care about there content
87
- // we will handle them as regular asset
88
- // but we still want to inline/minify/hash them for performance
89
- regularScriptSrcVisitor,
90
- regularScriptTextNodeVisitor,
91
- moduleScriptSrcVisitor,
92
- moduleScriptTextNodeVisitor,
93
- importmapScriptSrcVisitor,
94
- importmapScriptTextNodeVisitor,
95
- ],
96
- )
97
- const stylesMutations = collectNodesMutations(
98
- styles,
99
- notifiers,
100
- htmlRessource,
101
- [styleTextNodeVisitor],
102
- )
103
- const imgsSrcMutations = collectNodesMutations(
104
- imgs,
105
- notifiers,
106
- htmlRessource,
107
- [imgSrcVisitor],
108
- )
109
- const imgsSrcsetMutations = collectNodesMutations(
110
- imgs,
111
- notifiers,
112
- htmlRessource,
113
- [srcsetVisitor],
114
- )
115
- const sourcesSrcMutations = collectNodesMutations(
116
- sources,
117
- notifiers,
118
- htmlRessource,
119
- [sourceSrcVisitor],
120
- )
121
- const sourcesSrcsetMutations = collectNodesMutations(
122
- sources,
123
- notifiers,
124
- htmlRessource,
125
- [srcsetVisitor],
126
- )
127
- const svgMutations = collectSvgMutations(
128
- { images, uses },
129
- notifiers,
130
- htmlRessource,
131
- )
132
-
133
- const htmlMutations = [
134
- ...linksMutations,
135
- ...scriptsMutations,
136
- ...stylesMutations,
137
- ...imgsSrcMutations,
138
- ...imgsSrcsetMutations,
139
- ...sourcesSrcMutations,
140
- ...sourcesSrcsetMutations,
141
- ...svgMutations,
142
- ]
143
-
144
- return async (params) => {
145
- await htmlMutations.reduce(async (previous, mutationCallback) => {
146
- await previous
147
- await mutationCallback({
148
- ...params,
149
- })
150
- }, Promise.resolve())
151
-
152
- const htmlAfterTransformation = htmlAstToHtmlString(htmlAst)
153
- const html = minify
154
- ? await minifyHtml(htmlAfterTransformation)
155
- : htmlAfterTransformation
156
- htmlRessource.buildEnd(html)
157
- }
158
- }
159
-
160
- const regularScriptSrcVisitor = (
161
- script,
162
- { notifyReferenceFound },
163
- htmlRessource,
164
- ) => {
165
- const typeAttribute = getHtmlNodeAttributeByName(script, "type")
166
- if (
167
- typeAttribute &&
168
- (typeAttribute.value !== "text/javascript" ||
169
- typeAttribute.value !== "application/javascript")
170
- ) {
171
- return null
172
- }
173
- const srcAttribute = getHtmlNodeAttributeByName(script, "src")
174
- if (!srcAttribute) {
175
- return null
176
- }
177
- const integrityAttribute = getHtmlNodeAttributeByName(script, "integrity")
178
- const integrity = integrityAttribute ? integrityAttribute.value : ""
179
- const remoteScriptReference = notifyReferenceFound({
180
- referenceLabel: "html script",
181
- contentTypeExpected: "application/javascript",
182
- ressourceSpecifier: srcAttribute.value,
183
- integrity,
184
- ...crossoriginFromHtmlNode(script),
185
- ...referenceLocationFromHtmlNode(script, "src"),
186
- })
187
- return ({ getUrlRelativeToImporter }) => {
188
- const ressource = remoteScriptReference.ressource
189
- if (ressource.isExternal) {
190
- return
191
- }
192
- if (shouldInline({ ressource, htmlNode: script })) {
193
- removeHtmlNodeAttribute(script, srcAttribute)
194
- const { bufferAfterBuild } = ressource
195
- let jsString = String(bufferAfterBuild)
196
-
197
- const sourcemapRelativeUrl = getJavaScriptSourceMappingUrl(jsString)
198
- if (sourcemapRelativeUrl) {
199
- const { buildRelativeUrl } = ressource
200
- const jsBuildUrl = resolveUrl(buildRelativeUrl, "file:///")
201
- const sourcemapBuildUrl = resolveUrl(sourcemapRelativeUrl, jsBuildUrl)
202
- const htmlUrl = resolveUrl(htmlRessource.fileNamePattern, "file:///")
203
- const sourcemapInlineUrl = urlToRelativeUrl(sourcemapBuildUrl, htmlUrl)
204
- jsString = setJavaScriptSourceMappingUrl(jsString, sourcemapInlineUrl)
205
- }
206
- setHtmlNodeText(script, jsString)
207
- remoteScriptReference.inlinedCallback()
208
- return
209
- }
210
- const urlRelativeToImporter = getUrlRelativeToImporter(ressource)
211
- srcAttribute.value = urlRelativeToImporter
212
- if (integrityAttribute) {
213
- const base64Value = applyAlgoToRepresentationData(
214
- "sha256",
215
- ressource.bufferAfterBuild,
216
- )
217
- integrityAttribute.value = `sha256-${base64Value}`
218
- }
219
- }
220
- }
221
-
222
- const regularScriptTextNodeVisitor = (
223
- script,
224
- { notifyReferenceFound },
225
- htmlRessource,
226
- scripts,
227
- ) => {
228
- const typeAttribute = getHtmlNodeAttributeByName(script, "type")
229
- if (
230
- typeAttribute &&
231
- (typeAttribute.value !== "text/javascript" ||
232
- typeAttribute.value !== "application/javascript")
233
- ) {
234
- return null
235
- }
236
- const srcAttribute = getHtmlNodeAttributeByName(script, "src")
237
- if (srcAttribute) {
238
- return null
239
- }
240
- const textNode = getHtmlNodeTextNode(script)
241
- if (!textNode) {
242
- return null
243
- }
244
- const scriptId = getIdForInlineHtmlNode(script, scripts)
245
- const ressourceSpecifier = `${urlToFilename(
246
- htmlRessource.url,
247
- )}__inline__${scriptId}.js`
248
- const jsReference = notifyReferenceFound({
249
- referenceLabel: "html inline script",
250
- contentTypeExpected: "application/javascript",
251
- ressourceSpecifier,
252
- ...referenceLocationFromHtmlNode(script),
253
- contentType: "application/javascript",
254
- bufferBeforeBuild: Buffer.from(textNode.value),
255
- isInline: true,
256
- })
257
- return () => {
258
- const { bufferAfterBuild } = jsReference.ressource
259
- textNode.value = String(bufferAfterBuild)
260
- }
261
- }
262
-
263
- const moduleScriptSrcVisitor = (script, { format, notifyReferenceFound }) => {
264
- const typeAttribute = getHtmlNodeAttributeByName(script, "type")
265
- if (!typeAttribute) {
266
- return null
267
- }
268
- if (typeAttribute.value !== "module") {
269
- return null
270
- }
271
- const srcAttribute = getHtmlNodeAttributeByName(script, "src")
272
- if (!srcAttribute) {
273
- return null
274
- }
275
- const integrityAttribute = getHtmlNodeAttributeByName(script, "integrity")
276
- const integrity = integrityAttribute ? integrityAttribute.value : ""
277
- const remoteScriptReference = notifyReferenceFound({
278
- referenceLabel: "html module script",
279
- contentTypeExpected: "application/javascript",
280
- ressourceSpecifier: srcAttribute.value,
281
- integrity,
282
- ...crossoriginFromHtmlNode(script),
283
- ...referenceLocationFromHtmlNode(script, "src"),
284
- isJsModule: true,
285
- })
286
- return ({ getUrlRelativeToImporter }) => {
287
- const { ressource } = remoteScriptReference
288
- if (format === "systemjs") {
289
- removeHtmlNodeAttribute(script, typeAttribute)
290
- }
291
- if (ressource.isExternal) {
292
- return
293
- }
294
- if (shouldInline({ ressource, htmlNode: script })) {
295
- // here put a warning if we cannot inline importmap because it would mess
296
- // the remapping (note that it's feasible) but not yet supported
297
- removeHtmlNodeAttribute(script, srcAttribute)
298
- const { bufferAfterBuild } = ressource
299
- let jsString = String(bufferAfterBuild)
300
-
301
- // at this stage, for some reason the sourcemap url is not in the js
302
- // (it will be added shortly after by "injectSourcemapInRollupBuild")
303
- // but we know that a script type module have a sourcemap
304
- // and will be next to html file
305
- // with these assumptions we can force the sourcemap url
306
- const sourcemapUrl = `${ressource.buildRelativeUrl}.map`
307
- jsString = setJavaScriptSourceMappingUrl(jsString, sourcemapUrl)
308
- setHtmlNodeText(script, jsString)
309
- remoteScriptReference.inlinedCallback()
310
- return
311
- }
312
- const urlRelativeToImporter = getUrlRelativeToImporter(ressource)
313
- const relativeUrlNotation = ensureRelativeUrlNotation(urlRelativeToImporter)
314
- srcAttribute.value = relativeUrlNotation
315
- if (integrityAttribute) {
316
- const base64Value = applyAlgoToRepresentationData(
317
- "sha256",
318
- ressource.bufferAfterBuild,
319
- )
320
- integrityAttribute.value = `sha256-${base64Value}`
321
- }
322
- }
323
- }
324
-
325
- const moduleScriptTextNodeVisitor = (
326
- script,
327
- { format, notifyReferenceFound },
328
- htmlRessource,
329
- scripts,
330
- ) => {
331
- const typeAttribute = getHtmlNodeAttributeByName(script, "type")
332
- if (!typeAttribute) {
333
- return null
334
- }
335
- if (typeAttribute.value !== "module") {
336
- return null
337
- }
338
- const srcAttribute = getHtmlNodeAttributeByName(script, "src")
339
- if (srcAttribute) {
340
- return null
341
- }
342
- const textNode = getHtmlNodeTextNode(script)
343
- if (!textNode) {
344
- return null
345
- }
346
- const scriptId = getIdForInlineHtmlNode(script, scripts)
347
- const ressourceSpecifier = `${urlToFilename(
348
- htmlRessource.url,
349
- )}__inline__${scriptId}.js`
350
- const jsReference = notifyReferenceFound({
351
- referenceLabel: "html inline module script",
352
- contentTypeExpected: "application/javascript",
353
- ressourceSpecifier,
354
- ...referenceLocationFromHtmlNode(script),
355
- contentType: "application/javascript",
356
- bufferBeforeBuild: textNode.value,
357
- isJsModule: true,
358
- isInline: true,
359
- })
360
- return () => {
361
- if (format === "systemjs") {
362
- removeHtmlNodeAttribute(script, typeAttribute)
363
- }
364
- const { bufferAfterBuild } = jsReference.ressource
365
- const jsText = String(bufferAfterBuild)
366
- textNode.value = jsText
367
- }
368
- }
369
-
370
- const importmapScriptSrcVisitor = (
371
- script,
372
- { format, notifyReferenceFound },
373
- ) => {
374
- const typeAttribute = getHtmlNodeAttributeByName(script, "type")
375
- if (!typeAttribute) {
376
- return null
377
- }
378
- if (typeAttribute.value !== "importmap") {
379
- return null
380
- }
381
- const srcAttribute = getHtmlNodeAttributeByName(script, "src")
382
- if (!srcAttribute) {
383
- return null
384
- }
385
- const integrityAttribute = getHtmlNodeAttributeByName(script, "integrity")
386
- const integrity = integrityAttribute ? integrityAttribute.value : ""
387
- const importmapReference = notifyReferenceFound({
388
- referenceLabel: "html importmap",
389
- contentTypeExpected: "application/importmap+json",
390
- ressourceSpecifier: srcAttribute.value,
391
- integrity,
392
- ...crossoriginFromHtmlNode(script),
393
- ...referenceLocationFromHtmlNode(script, "src"),
394
- })
395
- return ({ getUrlRelativeToImporter }) => {
396
- const { ressource } = importmapReference
397
- if (format === "systemjs") {
398
- typeAttribute.value = "systemjs-importmap"
399
- }
400
- if (ressource.isExternal) {
401
- return
402
- }
403
- if (
404
- // for esmodule we always inline the importmap
405
- // as it's the only thing supported by Chrome
406
- // window.__resolveImportUrl__ also expects importmap to be inlined
407
- format === "esmodule" ||
408
- // for systemjs we inline as well to save http request for the scenario
409
- // where many ressources are inlined in the HTML file
410
- format === "systemjs" ||
411
- shouldInline({ ressource, htmlNode: script })
412
- ) {
413
- // here put a warning if we cannot inline importmap because it would mess
414
- // the remapping (note that it's feasible) but not yet supported
415
- const { bufferAfterBuild } = ressource
416
- const importmapString = String(bufferAfterBuild)
417
- removeHtmlNodeAttribute(script, srcAttribute)
418
- setHtmlNodeText(script, importmapString)
419
- removeHtmlNodeAttribute(script, integrityAttribute)
420
- importmapReference.inlinedCallback()
421
- return
422
- }
423
- const urlRelativeToImporter = getUrlRelativeToImporter(ressource)
424
- srcAttribute.value = urlRelativeToImporter
425
- if (integrityAttribute) {
426
- const base64Value = applyAlgoToRepresentationData(
427
- "sha256",
428
- ressource.bufferAfterBuild,
429
- )
430
- integrityAttribute.value = `sha256-${base64Value}`
431
- }
432
- }
433
- }
434
-
435
- const importmapScriptTextNodeVisitor = (
436
- script,
437
- { format, notifyReferenceFound },
438
- htmlRessource,
439
- scripts,
440
- ) => {
441
- const typeAttribute = getHtmlNodeAttributeByName(script, "type")
442
- if (!typeAttribute) {
443
- return null
444
- }
445
- if (typeAttribute.value !== "importmap") {
446
- return null
447
- }
448
- const srcAttribute = getHtmlNodeAttributeByName(script, "src")
449
- if (srcAttribute) {
450
- return null
451
- }
452
- const textNode = getHtmlNodeTextNode(script)
453
- if (!textNode) {
454
- return null
455
- }
456
- const importmapScriptId = getIdForInlineHtmlNode(script, scripts)
457
- const importmapReference = notifyReferenceFound({
458
- referenceLabel: "html inline importmap",
459
- contentTypeExpected: "application/importmap+json",
460
- ressourceSpecifier: `${urlToFilename(
461
- htmlRessource.url,
462
- )}__inline__${importmapScriptId}.importmap`,
463
- ...referenceLocationFromHtmlNode(script),
464
- contentType: "application/importmap+json",
465
- bufferBeforeBuild: Buffer.from(textNode.value),
466
- isInline: true,
467
- })
468
- return () => {
469
- if (format === "systemjs") {
470
- typeAttribute.value = "systemjs-importmap"
471
- }
472
- const { bufferAfterBuild } = importmapReference.ressource
473
- textNode.value = bufferAfterBuild
474
- }
475
- }
476
-
477
- const linkStylesheetHrefVisitor = (
478
- link,
479
- { notifyReferenceFound },
480
- htmlRessource,
481
- ) => {
482
- const hrefAttribute = getHtmlNodeAttributeByName(link, "href")
483
- if (!hrefAttribute) {
484
- return null
485
- }
486
- const relAttribute = getHtmlNodeAttributeByName(link, "rel")
487
- if (!relAttribute) {
488
- return null
489
- }
490
- if (relAttribute.value !== "stylesheet") {
491
- return null
492
- }
493
- const integrityAttribute = getHtmlNodeAttributeByName(link, "integrity")
494
- const integrity = integrityAttribute ? integrityAttribute.value : ""
495
- const cssReference = notifyReferenceFound({
496
- referenceLabel: "html stylesheet link",
497
- contentTypeExpected: "text/css",
498
- ressourceSpecifier: hrefAttribute.value,
499
- integrity,
500
- ...crossoriginFromHtmlNode(link),
501
- ...referenceLocationFromHtmlNode(link, "href"),
502
- })
503
- return async ({ getUrlRelativeToImporter, buildDirectoryUrl }) => {
504
- const { ressource } = cssReference
505
- if (ressource.isExternal) {
506
- return
507
- }
508
- if (shouldInline({ ressource, htmlNode: link })) {
509
- const { bufferAfterBuild } = ressource
510
- let code = String(bufferAfterBuild)
511
- const { buildRelativeUrl } = ressource
512
- const cssBuildUrl = resolveUrl(buildRelativeUrl, buildDirectoryUrl)
513
- const htmlBuildUrl = resolveUrl(
514
- htmlRessource.buildRelativeUrlWithoutHash,
515
- buildDirectoryUrl,
516
- )
517
- const moveResult = await moveCssUrls({
518
- code,
519
- from: cssBuildUrl,
520
- to: htmlBuildUrl,
521
- // moveCssUrls will change the css source code
522
- // Ideally we should update the sourcemap referenced by css
523
- // to target the one after css urls are moved.
524
- // It means we should force sourcemap ressource to the new one
525
- // until it's supported we prevent postcss from updating the
526
- // sourcemap comment, othwise css would reference a sourcemap
527
- // that won't by in the build directory
528
- sourcemapMethod: null,
529
- })
530
- code = moveResult.code
531
- const sourcemapRelativeUrl = getCssSourceMappingUrl(code)
532
- if (sourcemapRelativeUrl) {
533
- const cssBuildUrl = resolveUrl(buildRelativeUrl, buildDirectoryUrl)
534
- const sourcemapBuildUrl = resolveUrl(sourcemapRelativeUrl, cssBuildUrl)
535
- const sourcemapInlineUrl = urlToRelativeUrl(
536
- sourcemapBuildUrl,
537
- htmlBuildUrl,
538
- )
539
- code = setCssSourceMappingUrl(code, sourcemapInlineUrl)
540
- }
541
- replaceHtmlNode(link, `<style>${code}</style>`, {
542
- attributesToIgnore: [
543
- "href",
544
- "rel",
545
- "as",
546
- "crossorigin",
547
- "type",
548
- "integrity",
549
- ],
550
- })
551
- cssReference.inlinedCallback()
552
- return
553
- }
554
- const urlRelativeToImporter = getUrlRelativeToImporter(ressource)
555
- hrefAttribute.value = urlRelativeToImporter
556
- if (integrityAttribute) {
557
- const base64Value = applyAlgoToRepresentationData(
558
- "sha256",
559
- ressource.bufferAfterBuild,
560
- )
561
- integrityAttribute.value = `sha256-${base64Value}`
562
- }
563
- }
564
- }
565
-
566
- const linkHrefVisitor = (
567
- link,
568
- { format, notifyReferenceFound, ressourceHintNeverUsedCallback },
569
- ) => {
570
- const hrefAttribute = getHtmlNodeAttributeByName(link, "href")
571
- if (!hrefAttribute) {
572
- return null
573
- }
574
- const href = hrefAttribute.value
575
- const relAttribute = getHtmlNodeAttributeByName(link, "rel")
576
- const rel = relAttribute ? relAttribute.value : undefined
577
- const isRessourceHint = [
578
- "preconnect",
579
- "dns-prefetch",
580
- "prefetch",
581
- "preload",
582
- "modulepreload",
583
- ].includes(rel)
584
- let contentTypeExpected
585
- const typeAttribute = getHtmlNodeAttributeByName(link, "type")
586
- const type = typeAttribute ? typeAttribute.value : ""
587
- let isJsModule = false
588
- if (type) {
589
- contentTypeExpected = type
590
- } else if (rel === "manifest") {
591
- contentTypeExpected = "application/manifest+json"
592
- } else if (rel === "modulepreload") {
593
- contentTypeExpected = "application/javascript"
594
- isJsModule = true
595
- }
596
- const integrityAttribute = getHtmlNodeAttributeByName(link, "integrity")
597
- const integrity = integrityAttribute ? integrityAttribute.value : ""
598
- const linkReference = notifyReferenceFound({
599
- referenceLabel: rel ? `html ${rel} link href` : `html link href`,
600
- isRessourceHint,
601
- contentTypeExpected,
602
- ressourceSpecifier: href,
603
- integrity,
604
- ...crossoriginFromHtmlNode(link),
605
- ...referenceLocationFromHtmlNode(link, "href"),
606
- urlVersioningDisabled: contentTypeExpected === "application/manifest+json",
607
- isJsModule,
608
- })
609
- return ({ getUrlRelativeToImporter }) => {
610
- const { ressource } = linkReference
611
- if (isRessourceHint) {
612
- if (isReferencedOnlyByRessourceHint(ressource)) {
613
- ressourceHintNeverUsedCallback({
614
- htmlNode: link,
615
- rel,
616
- href: hrefAttribute.value,
617
- htmlAttributeName: "href",
618
- })
619
- // we could remove the HTML node but better keep it untouched and let user decide what to do
620
- return
621
- }
622
- ressource.inlinedCallbacks.push(() => {
623
- removeHtmlNode(link)
624
- })
625
- }
626
- if (ressource.isExternal) {
627
- return
628
- }
629
- if (format === "systemjs" && rel === "modulepreload") {
630
- const urlRelativeToImporter = getUrlRelativeToImporter(ressource)
631
- relAttribute.value = "preload"
632
- hrefAttribute.value = urlRelativeToImporter
633
- addHtmlNodeAttribute(link, { name: "as", value: "script" })
634
- return
635
- }
636
- if (shouldInline({ ressource, htmlNode: link })) {
637
- removeHtmlNode(link)
638
- linkReference.inlinedCallback()
639
- return
640
- }
641
- const urlRelativeToImporter = getUrlRelativeToImporter(ressource)
642
- hrefAttribute.value = urlRelativeToImporter
643
- if (integrityAttribute) {
644
- const base64Value = applyAlgoToRepresentationData(
645
- "sha256",
646
- ressource.bufferAfterBuild,
647
- )
648
- integrityAttribute.value = `sha256-${base64Value}`
649
- }
650
- }
651
- }
652
-
653
- const styleTextNodeVisitor = (
654
- style,
655
- { notifyReferenceFound },
656
- htmlRessource,
657
- styles,
658
- ) => {
659
- const textNode = getHtmlNodeTextNode(style)
660
- if (!textNode) {
661
- return null
662
- }
663
- const styleId = getIdForInlineHtmlNode(style, styles)
664
- const inlineStyleReference = notifyReferenceFound({
665
- referenceLabel: "html style",
666
- contentTypeExpected: "text/css",
667
- ressourceSpecifier: `${urlToFilename(
668
- htmlRessource.url,
669
- )}__inline__${styleId}.css`,
670
- ...referenceLocationFromHtmlNode(style),
671
- contentType: "text/css",
672
- bufferBeforeBuild: Buffer.from(textNode.value),
673
- isInline: true,
674
- })
675
- return () => {
676
- const { bufferAfterBuild } = inlineStyleReference.ressource
677
- textNode.value = bufferAfterBuild
678
- }
679
- }
680
-
681
- const imgSrcVisitor = (img, { notifyReferenceFound }) => {
682
- const srcAttribute = getHtmlNodeAttributeByName(img, "src")
683
- if (!srcAttribute) {
684
- return null
685
- }
686
- const srcReference = notifyReferenceFound({
687
- referenceLabel: "html img src",
688
- ressourceSpecifier: srcAttribute.value,
689
- ...crossoriginFromHtmlNode(img),
690
- ...referenceLocationFromHtmlNode(img, "src"),
691
- })
692
- return ({ getUrlRelativeToImporter }) => {
693
- const srcNewValue = referenceToUrl({
694
- reference: srcReference,
695
- htmlNode: img,
696
- getUrlRelativeToImporter,
697
- })
698
- srcAttribute.value = srcNewValue
699
- }
700
- }
701
-
702
- const srcsetVisitor = (htmlNode, { notifyReferenceFound }) => {
703
- const srcsetAttribute = getHtmlNodeAttributeByName(htmlNode, "srcset")
704
- if (!srcsetAttribute) {
705
- return null
706
- }
707
- const srcsetParts = parseSrcset(srcsetAttribute.value)
708
- const srcsetPartsReferences = srcsetParts.map(({ specifier }, index) =>
709
- notifyReferenceFound({
710
- referenceLabel: `html srcset ${index}`,
711
- ressourceSpecifier: specifier,
712
- ...crossoriginFromHtmlNode(htmlNode),
713
- ...referenceLocationFromHtmlNode(htmlNode, "srcset"),
714
- }),
715
- )
716
- if (srcsetParts.length === 0) {
717
- return null
718
- }
719
- return ({ getUrlRelativeToImporter }) => {
720
- srcsetParts.forEach((srcsetPart, index) => {
721
- const reference = srcsetPartsReferences[index]
722
- srcsetPart.specifier = referenceToUrl({
723
- reference,
724
- htmlNode,
725
- getUrlRelativeToImporter,
726
- })
727
- })
728
-
729
- const srcsetNewValue = stringifySrcset(srcsetParts)
730
- srcsetAttribute.value = srcsetNewValue
731
- }
732
- }
733
-
734
- const sourceSrcVisitor = (source, { notifyReferenceFound }) => {
735
- const srcAttribute = getHtmlNodeAttributeByName(source, "src")
736
- if (!srcAttribute) {
737
- return null
738
- }
739
- const typeAttribute = getHtmlNodeAttributeByName(source, "type")
740
- const srcReference = notifyReferenceFound({
741
- referenceLabel: "html source",
742
- contentTypeExpected: typeAttribute ? typeAttribute.value : undefined,
743
- ressourceSpecifier: srcAttribute.value,
744
- ...crossoriginFromHtmlNode(source),
745
- ...referenceLocationFromHtmlNode(source, "src"),
746
- })
747
- return ({ getUrlRelativeToImporter }) => {
748
- const srcNewValue = referenceToUrl({
749
- reference: srcReference,
750
- htmlNode: source,
751
- getUrlRelativeToImporter,
752
- })
753
- srcAttribute.value = srcNewValue
754
- }
755
- }
756
-
757
- const referenceToUrl = ({ reference, htmlNode, getUrlRelativeToImporter }) => {
758
- const { ressource } = reference
759
- if (ressource.isExternal) {
760
- return ressource.url
761
- }
762
- if (shouldInline({ ressource, htmlNode })) {
763
- reference.inlinedCallback()
764
- return getRessourceAsBase64Url(ressource)
765
- }
766
- return getUrlRelativeToImporter(ressource)
767
- }
768
-
769
- const crossoriginFromHtmlNode = (htmlNode) => {
770
- const crossOriginAttribute = getHtmlNodeAttributeByName(
771
- htmlNode,
772
- "crossorigin",
773
- )
774
- const crossorigin = crossOriginAttribute ? crossOriginAttribute.value : ""
775
- return { crossorigin }
776
- }
777
-
778
- const referenceLocationFromHtmlNode = (htmlNode, htmlAttributeName) => {
779
- const locInfo = getHtmlNodeLocation(htmlNode, htmlAttributeName)
780
- return locInfo
781
- ? {
782
- referenceLine: locInfo.line,
783
- referenceColumn: locInfo.column,
784
- }
785
- : {}
786
- }
787
-
788
- // otherwise systemjs handle it as a bare import
789
- const ensureRelativeUrlNotation = (relativeUrl) => {
790
- if (relativeUrl.startsWith("../")) {
791
- return relativeUrl
792
- }
793
- return `./${relativeUrl}`
794
- }
795
-
796
- const shouldInline = ({ ressource, htmlNode }) => {
797
- if (ressource.isInline) {
798
- return true
799
- }
800
- return readAndRemoveForceInline(htmlNode)
801
- }
802
-
803
- const readAndRemoveForceInline = (htmlNode) => {
804
- const jsenvForceInlineAttribute = getHtmlNodeAttributeByName(
805
- htmlNode,
806
- "data-jsenv-force-inline",
807
- )
808
- if (jsenvForceInlineAttribute) {
809
- removeHtmlNodeAttribute(htmlNode, jsenvForceInlineAttribute)
810
- return true
811
- }
812
- return false
813
- }