@jsenv/core 27.0.0-alpha.9 → 27.0.0-alpha.92

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 (277) hide show
  1. package/dist/babel_helpers/AsyncGenerator/AsyncGenerator.js +95 -0
  2. package/dist/babel_helpers/AwaitValue/AwaitValue.js +3 -0
  3. package/dist/babel_helpers/applyDecoratorDescriptor/applyDecoratorDescriptor.js +29 -0
  4. package/dist/babel_helpers/applyDecs/applyDecs.js +756 -0
  5. package/dist/babel_helpers/arrayLikeToArray/arrayLikeToArray.js +9 -0
  6. package/dist/babel_helpers/arrayWithHoles/arrayWithHoles.js +4 -0
  7. package/dist/babel_helpers/arrayWithoutHoles/arrayWithoutHoles.js +5 -0
  8. package/dist/babel_helpers/assertThisInitialized/assertThisInitialized.js +8 -0
  9. package/dist/babel_helpers/asyncGeneratorDelegate/asyncGeneratorDelegate.js +52 -0
  10. package/dist/babel_helpers/asyncIterator/asyncIterator.js +78 -0
  11. package/dist/babel_helpers/asyncToGenerator/asyncToGenerator.js +39 -0
  12. package/dist/babel_helpers/awaitAsyncGenerator/awaitAsyncGenerator.js +4 -0
  13. package/dist/babel_helpers/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +24 -0
  14. package/dist/babel_helpers/classApplyDescriptorGet/classApplyDescriptorGet.js +7 -0
  15. package/dist/babel_helpers/classApplyDescriptorSet/classApplyDescriptorSet.js +14 -0
  16. package/dist/babel_helpers/classCallCheck/classCallCheck.js +5 -0
  17. package/dist/babel_helpers/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +5 -0
  18. package/dist/babel_helpers/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +6 -0
  19. package/dist/babel_helpers/classExtractFieldDescriptor/classExtractFieldDescriptor.js +8 -0
  20. package/dist/babel_helpers/classNameTDZError/classNameTDZError.js +4 -0
  21. package/dist/babel_helpers/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +6 -0
  22. package/dist/babel_helpers/classPrivateFieldGet/classPrivateFieldGet.js +6 -0
  23. package/dist/babel_helpers/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +7 -0
  24. package/dist/babel_helpers/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +5 -0
  25. package/dist/babel_helpers/classPrivateFieldSet/classPrivateFieldSet.js +7 -0
  26. package/dist/babel_helpers/classPrivateMethodGet/classPrivateMethodGet.js +7 -0
  27. package/dist/babel_helpers/classPrivateMethodSet/classPrivateMethodSet.js +3 -0
  28. package/dist/babel_helpers/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +8 -0
  29. package/dist/babel_helpers/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +9 -0
  30. package/dist/babel_helpers/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +5 -0
  31. package/dist/babel_helpers/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +3 -0
  32. package/dist/babel_helpers/construct/construct.js +15 -0
  33. package/dist/babel_helpers/createClass/createClass.js +18 -0
  34. package/dist/babel_helpers/createForOfIteratorHelper/createForOfIteratorHelper.js +63 -0
  35. package/dist/babel_helpers/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +22 -0
  36. package/dist/babel_helpers/createRawReactElement/createRawReactElement.js +50 -0
  37. package/dist/babel_helpers/createSuper/createSuper.js +22 -0
  38. package/dist/babel_helpers/decorate/decorate.js +622 -0
  39. package/dist/babel_helpers/defaults/defaults.js +14 -0
  40. package/dist/babel_helpers/defineEnumerableProperties/defineEnumerableProperties.js +26 -0
  41. package/dist/babel_helpers/defineProperty/defineProperty.js +19 -0
  42. package/dist/babel_helpers/extends/extends.js +16 -0
  43. package/dist/babel_helpers/get/get.js +21 -0
  44. package/dist/babel_helpers/getPrototypeOf/getPrototypeOf.js +2 -0
  45. package/dist/babel_helpers/identity/identity.js +3 -0
  46. package/dist/babel_helpers/inherits/inherits.js +21 -0
  47. package/dist/babel_helpers/inheritsLoose/inheritsLoose.js +6 -0
  48. package/dist/babel_helpers/initializerDefineProperty/initializerDefineProperty.js +10 -0
  49. package/dist/babel_helpers/initializerWarningHelper/initializerWarningHelper.js +3 -0
  50. package/dist/babel_helpers/instanceof/instanceof.js +7 -0
  51. package/dist/babel_helpers/interopRequireDefault/interopRequireDefault.js +5 -0
  52. package/dist/babel_helpers/interopRequireWildcard/interopRequireWildcard.js +49 -0
  53. package/dist/babel_helpers/isNativeFunction/isNativeFunction.js +4 -0
  54. package/dist/babel_helpers/isNativeReflectConstruct/isNativeReflectConstruct.js +21 -0
  55. package/dist/babel_helpers/iterableToArray/iterableToArray.js +3 -0
  56. package/dist/babel_helpers/iterableToArrayLimit/iterableToArrayLimit.js +38 -0
  57. package/dist/babel_helpers/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +13 -0
  58. package/dist/babel_helpers/jsx/jsx.js +49 -0
  59. package/dist/babel_helpers/maybeArrayLike/maybeArrayLike.js +10 -0
  60. package/dist/babel_helpers/newArrowCheck/newArrowCheck.js +5 -0
  61. package/dist/babel_helpers/nonIterableRest/nonIterableRest.js +3 -0
  62. package/dist/babel_helpers/nonIterableSpread/nonIterableSpread.js +3 -0
  63. package/dist/babel_helpers/objectDestructuringEmpty/objectDestructuringEmpty.js +3 -0
  64. package/dist/babel_helpers/objectSpread/objectSpread.js +22 -0
  65. package/dist/babel_helpers/objectSpread2/objectSpread2.js +41 -0
  66. package/dist/babel_helpers/objectWithoutProperties/objectWithoutProperties.js +20 -0
  67. package/dist/babel_helpers/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +15 -0
  68. package/dist/babel_helpers/possibleConstructorReturn/possibleConstructorReturn.js +10 -0
  69. package/dist/babel_helpers/readOnlyError/readOnlyError.js +4 -0
  70. package/dist/babel_helpers/set/set.js +51 -0
  71. package/dist/babel_helpers/setPrototypeOf/setPrototypeOf.js +5 -0
  72. package/dist/babel_helpers/skipFirstGeneratorNext/skipFirstGeneratorNext.js +8 -0
  73. package/dist/babel_helpers/slicedToArray/slicedToArray.js +5 -0
  74. package/dist/babel_helpers/slicedToArrayLoose/slicedToArrayLoose.js +7 -0
  75. package/dist/babel_helpers/superPropBase/superPropBase.js +10 -0
  76. package/dist/babel_helpers/taggedTemplateLiteral/taggedTemplateLiteral.js +11 -0
  77. package/dist/babel_helpers/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +8 -0
  78. package/dist/babel_helpers/tdz/tdz.js +4 -0
  79. package/dist/babel_helpers/temporalRef/temporalRef.js +5 -0
  80. package/dist/babel_helpers/temporalUndefined/temporalUndefined.js +3 -0
  81. package/dist/babel_helpers/toArray/toArray.js +5 -0
  82. package/dist/babel_helpers/toConsumableArray/toConsumableArray.js +5 -0
  83. package/dist/babel_helpers/toPrimitive/toPrimitive.js +14 -0
  84. package/dist/babel_helpers/toPropertyKey/toPropertyKey.js +5 -0
  85. package/dist/babel_helpers/typeof/typeof.js +7 -0
  86. package/dist/babel_helpers/unsupportedIterableToArray/unsupportedIterableToArray.js +10 -0
  87. package/dist/babel_helpers/wrapAsyncGenerator/wrapAsyncGenerator.js +7 -0
  88. package/dist/babel_helpers/wrapNativeSuper/wrapNativeSuper.js +35 -0
  89. package/dist/babel_helpers/wrapRegExp/wrapRegExp.js +67 -0
  90. package/dist/babel_helpers/writeOnlyError/writeOnlyError.js +4 -0
  91. package/dist/html/explorer.html +557 -0
  92. package/dist/js/controllable_file.mjs +227 -0
  93. package/dist/js/event_source_client.js +528 -0
  94. package/dist/js/global_this.js +32 -0
  95. package/dist/js/html_supervisor_installer.js +522 -0
  96. package/dist/js/html_supervisor_setup.js +82 -0
  97. package/dist/js/import_meta_hot.js +84 -0
  98. package/dist/js/inline_content.js +8 -0
  99. package/dist/js/new_stylesheet.js +409 -0
  100. package/dist/js/regenerator_runtime.js +721 -0
  101. package/dist/js/s.js +429 -0
  102. package/dist/js/uneval.js +804 -0
  103. package/dist/main.js +25163 -0
  104. package/dist/other/jsenv.png +0 -0
  105. package/dist/s.js +626 -0
  106. package/dist/s.js.map +205 -0
  107. package/package.json +61 -57
  108. package/readme.md +6 -14
  109. package/src/build/build.js +1040 -551
  110. package/src/build/build_urls_generator.js +65 -25
  111. package/src/build/graph_utils.js +31 -0
  112. package/src/build/inject_global_version_mappings.js +93 -0
  113. package/src/build/inject_service_worker_urls.js +79 -0
  114. package/src/build/resync_ressource_hints.js +114 -0
  115. package/src/build/start_build_server.js +217 -0
  116. package/src/build/version_generator.js +60 -0
  117. package/src/dev/plugins/explorer/client/explorer.html +1 -1
  118. package/src/dev/plugins/explorer/jsenv_plugin_explorer.js +9 -14
  119. package/src/dev/plugins/toolbar/client/util/fetching.js +1 -1
  120. package/src/dev/plugins/toolbar/jsenv_plugin_toolbar.js +6 -4
  121. package/src/dev/start_dev_server.js +173 -38
  122. package/src/execute/execute.js +35 -8
  123. package/src/execute/run.js +21 -57
  124. package/src/execute/runtimes/browsers/from_playwright.js +224 -153
  125. package/src/execute/runtimes/node/child_exec_options.js +1 -1
  126. package/src/execute/runtimes/node/controllable_file.mjs +26 -10
  127. package/src/execute/runtimes/node/kill_process_tree.js +2 -4
  128. package/src/execute/runtimes/node/node_execution_performance.js +67 -0
  129. package/src/execute/runtimes/node/node_process.js +288 -39
  130. package/src/helpers/command/command.js +73 -0
  131. package/src/{dev/plugins/autoreload/client/event_source_connection.js → helpers/event_source/event_source.js} +2 -0
  132. package/src/helpers/event_source/sse_service.js +53 -0
  133. package/src/helpers/worker_reload.js +57 -0
  134. package/src/main.js +27 -0
  135. package/src/omega/{runtime_support/features_compatibility.js → compat/features_compats.js} +30 -7
  136. package/src/omega/{runtime_support/runtime_support.js → compat/runtime_compat.js} +16 -17
  137. package/src/omega/errors.js +63 -67
  138. package/src/omega/fetched_content_compliance.js +24 -0
  139. package/src/omega/file_url_converter.js +9 -51
  140. package/src/omega/kitchen.js +607 -466
  141. package/src/omega/omega_server.js +2 -3
  142. package/src/omega/server/file_service.js +88 -41
  143. package/src/omega/server/user_agent.js +5 -5
  144. package/src/omega/url_graph/{url_graph_sort.js → sort_by_dependencies.js} +3 -5
  145. package/src/omega/url_graph/url_graph_load.js +31 -23
  146. package/src/omega/url_graph/url_graph_report.js +94 -51
  147. package/src/omega/url_graph/url_info_transformations.js +54 -24
  148. package/src/omega/url_graph.js +88 -19
  149. package/src/omega/url_specifier_encoding.js +59 -0
  150. package/src/omega/web_workers.js +42 -0
  151. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/autoreload_preference.js +0 -0
  152. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/event_source_client.js +19 -12
  153. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/reload.js +6 -3
  154. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/url_helpers.js +0 -0
  155. package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_client.js +41 -0
  156. package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_server.js +204 -0
  157. package/src/plugins/autoreload/jsenv_plugin_autoreload.js +25 -0
  158. package/src/plugins/autoreload/jsenv_plugin_hmr.js +35 -0
  159. package/src/plugins/bundling/css/bundle_css.js +140 -0
  160. package/src/plugins/bundling/js_classic_workers/bundle_js_classic_workers.js +13 -0
  161. package/src/plugins/bundling/js_module/bundle_js_module.js +362 -0
  162. package/src/plugins/bundling/jsenv_plugin_bundling.js +54 -0
  163. package/src/plugins/cache_control/jsenv_plugin_cache_control.js +34 -0
  164. package/src/{omega/core_plugins → plugins}/commonjs_globals/jsenv_plugin_commonjs_globals.js +56 -43
  165. package/src/plugins/file_urls/jsenv_plugin_file_urls.js +190 -0
  166. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_document.js +0 -0
  167. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_notification.js +0 -0
  168. package/src/plugins/html_supervisor/client/html_supervisor_installer.js +254 -0
  169. package/src/plugins/html_supervisor/client/html_supervisor_setup.js +82 -0
  170. package/src/{omega/core_plugins → plugins}/html_supervisor/client/perf_browser.js +0 -0
  171. package/src/{omega/core_plugins → plugins}/html_supervisor/client/uneval_exception.js +0 -0
  172. package/src/plugins/html_supervisor/jsenv_plugin_html_supervisor.js +239 -0
  173. package/src/plugins/http_urls/jsenv_plugin_http_urls.js +16 -0
  174. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/babel_plugin_metadata_import_meta_hot.js +4 -5
  175. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/client/import_meta_hot.js +3 -1
  176. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/html_hot_dependencies.js +15 -18
  177. package/src/plugins/import_meta_hot/jsenv_plugin_import_meta_hot.js +100 -0
  178. package/src/{omega/core_plugins → plugins}/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +35 -10
  179. package/src/plugins/import_meta_url/client/import_meta_url_browser.js +52 -0
  180. package/src/plugins/import_meta_url/client/import_meta_url_commonjs.mjs +9 -0
  181. package/src/{omega/core_plugins → plugins}/importmap/jsenv_plugin_importmap.js +56 -54
  182. package/src/plugins/inject_globals/inject_globals.js +57 -0
  183. package/src/plugins/inject_globals/jsenv_plugin_inject_globals.js +24 -0
  184. package/src/{omega/core_plugins → plugins}/inline/client/inline_content.js +0 -0
  185. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_data_urls.js +22 -21
  186. package/src/plugins/inline/jsenv_plugin_html_inline_content.js +159 -0
  187. package/src/plugins/inline/jsenv_plugin_inline.js +36 -0
  188. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_inline_query_param.js +8 -11
  189. package/src/plugins/inline/jsenv_plugin_js_inline_content.js +294 -0
  190. package/src/plugins/leading_slash/jsenv_plugin_leading_slash.js +13 -0
  191. package/src/plugins/minification/css/minify_css.js +9 -0
  192. package/src/plugins/minification/html/minify_html.js +13 -0
  193. package/src/{build/plugins/minify_js/jsenv_plugin_minify_js.js → plugins/minification/js/minify_js.js} +6 -22
  194. package/src/plugins/minification/jsenv_plugin_minification.js +78 -0
  195. package/src/plugins/minification/json/minify_json.js +8 -0
  196. package/src/plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +162 -0
  197. package/src/plugins/node_runtime/jsenv_plugin_node_runtime.js +12 -0
  198. package/src/{omega → plugins}/plugin_controller.js +57 -12
  199. package/src/plugins/plugins.js +91 -0
  200. package/src/plugins/transpilation/as_js_classic/client/s.js +429 -0
  201. package/src/plugins/transpilation/as_js_classic/helpers/babel_plugin_transform_import_meta_url.js +47 -0
  202. package/src/plugins/transpilation/as_js_classic/helpers/systemjs_old.js +43 -0
  203. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic.js +209 -0
  204. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic_html.js +282 -0
  205. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic_workers.js +55 -0
  206. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/babel_plugin_global_this_as_jsenv_import.js +2 -3
  207. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/client/global_this.js +0 -0
  208. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_babel_helpers_as_jsenv_imports.js +3 -4
  209. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_structure.js +14 -17
  210. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugins_compatibility.js +0 -0
  211. package/src/{omega/core_plugins → plugins/transpilation}/babel/jsenv_plugin_babel.js +40 -33
  212. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/babel_plugin_new_stylesheet_as_jsenv_import.js +32 -9
  213. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/client/new_stylesheet.js +0 -0
  214. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/babel_plugin_regenerator_runtime_as_jsenv_import.js +2 -3
  215. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/client/regenerator_runtime.js +0 -0
  216. package/src/plugins/transpilation/babel/require_babel_plugin.js +8 -0
  217. package/src/plugins/transpilation/css_parcel/jsenv_plugin_css_parcel.js +18 -0
  218. package/src/plugins/transpilation/import_assertions/jsenv_plugin_import_assertions.js +184 -0
  219. package/src/plugins/transpilation/jsenv_plugin_top_level_await.js +80 -0
  220. package/src/plugins/transpilation/jsenv_plugin_transpilation.js +46 -0
  221. package/src/plugins/url_analysis/css/css_urls.js +48 -0
  222. package/src/plugins/url_analysis/html/html_urls.js +257 -0
  223. package/src/plugins/url_analysis/js/js_urls.js +69 -0
  224. package/src/plugins/url_analysis/jsenv_plugin_url_analysis.js +110 -0
  225. package/src/plugins/url_analysis/webmanifest/webmanifest_urls.js +20 -0
  226. package/src/{omega/core_plugins → plugins}/url_resolution/jsenv_plugin_url_resolution.js +9 -5
  227. package/src/plugins/url_version/jsenv_plugin_url_version.js +28 -0
  228. package/src/require_from_jsenv.js +3 -0
  229. package/src/test/coverage/babel_plugin_instrument.js +82 -0
  230. package/src/test/coverage/coverage_reporter_html_directory.js +36 -0
  231. package/src/test/coverage/coverage_reporter_json_file.js +22 -0
  232. package/src/test/coverage/coverage_reporter_text_log.js +19 -0
  233. package/src/test/coverage/empty_coverage_factory.js +52 -0
  234. package/src/test/coverage/file_by_file_coverage.js +25 -0
  235. package/src/test/coverage/istanbul_coverage_composition.js +28 -0
  236. package/src/test/coverage/istanbul_coverage_map_from_coverage.js +16 -0
  237. package/src/test/coverage/list_files_not_covered.js +15 -0
  238. package/src/test/coverage/missing_coverage.js +41 -0
  239. package/src/test/coverage/report_to_coverage.js +196 -0
  240. package/src/test/coverage/v8_and_istanbul.js +37 -0
  241. package/src/test/coverage/v8_coverage_composition.js +24 -0
  242. package/src/test/coverage/v8_coverage_from_directory.js +87 -0
  243. package/src/test/coverage/v8_coverage_to_istanbul.js +99 -0
  244. package/src/test/execute_plan.js +87 -46
  245. package/src/test/execute_test_plan.js +40 -28
  246. package/src/test/execution_steps.js +2 -5
  247. package/src/test/logs_file_execution.js +56 -49
  248. package/main.js +0 -19
  249. package/src/build/inject_version_mappings.js +0 -62
  250. package/src/build/plugins/bundle_js_module/jsenv_plugin_bundle_js_module.js +0 -227
  251. package/src/build/plugins/minify_html/jsenv_plugin_minify_html.js +0 -30
  252. package/src/dev/plugins/autoreload/jsenv_plugin_autoreload.js +0 -374
  253. package/src/dev/plugins/autoreload/sse_service.js +0 -149
  254. package/src/execute/runtimes/node/controlled_process.js +0 -316
  255. package/src/omega/core_plugins/babel/new_stylesheet/client/.eslintrc.cjs +0 -24
  256. package/src/omega/core_plugins/file_urls/jsenv_plugin_file_urls.js +0 -67
  257. package/src/omega/core_plugins/filesystem_magic/jsenv_plugin_filesystem_magic.js +0 -58
  258. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_installer.js +0 -168
  259. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_setup.js +0 -77
  260. package/src/omega/core_plugins/html_supervisor/jsenv_plugin_html_supervisor.js +0 -233
  261. package/src/omega/core_plugins/import_assertions/helpers/babel_plugin_metadata_import_assertions.js +0 -98
  262. package/src/omega/core_plugins/import_assertions/helpers/json_module.js +0 -12
  263. package/src/omega/core_plugins/import_assertions/helpers/text_module.js +0 -6
  264. package/src/omega/core_plugins/import_assertions/jsenv_plugin_import_assertions.js +0 -211
  265. package/src/omega/core_plugins/inline/jsenv_plugin_inline.js +0 -13
  266. package/src/omega/core_plugins/inline/jsenv_plugin_js_and_css_inside_html.js +0 -142
  267. package/src/omega/core_plugins/inline/jsenv_plugin_new_inline_content.js +0 -207
  268. package/src/omega/core_plugins/leading_slash/jsenv_plugin_leading_slash.js +0 -12
  269. package/src/omega/core_plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +0 -77
  270. package/src/omega/core_plugins/url_version/jsenv_plugin_url_version.js +0 -50
  271. package/src/omega/core_plugins.js +0 -39
  272. package/src/omega/runtime_support/default_runtime_support.js +0 -13
  273. package/src/omega/url_mentions/css_url_mentions.js +0 -63
  274. package/src/omega/url_mentions/html_url_mentions.js +0 -185
  275. package/src/omega/url_mentions/js_module_url_mentions.js +0 -91
  276. package/src/omega/url_mentions/parse_url_mentions.js +0 -37
  277. package/src/omega/url_mentions/worker_classic_url_mentions.js +0 -37
@@ -0,0 +1,257 @@
1
+ import {
2
+ parseHtmlString,
3
+ visitHtmlNodes,
4
+ getHtmlNodeAttribute,
5
+ getHtmlNodePosition,
6
+ setHtmlNodeAttributes,
7
+ getHtmlNodeAttributePosition,
8
+ parseSrcSet,
9
+ stringifyHtmlAst,
10
+ } from "@jsenv/ast"
11
+
12
+ export const parseAndTransformHtmlUrls = async (urlInfo, context) => {
13
+ const url = urlInfo.originalUrl
14
+ const content = urlInfo.content
15
+ const { scenario, referenceUtils } = context
16
+ const htmlAst = parseHtmlString(content, {
17
+ storeOriginalPositions: scenario !== "build",
18
+ })
19
+ const actions = []
20
+ visitHtmlUrls({
21
+ url,
22
+ htmlAst,
23
+ onUrl: ({
24
+ type,
25
+ subtype,
26
+ expectedType,
27
+ line,
28
+ column,
29
+ originalLine,
30
+ originalColumn,
31
+ node,
32
+ attributeName,
33
+ specifier,
34
+ }) => {
35
+ const { crossorigin, integrity } = readFetchMetas(node)
36
+
37
+ const isRessourceHint = [
38
+ "preconnect",
39
+ "dns-prefetch",
40
+ "prefetch",
41
+ "preload",
42
+ "modulepreload",
43
+ ].includes(subtype)
44
+ const [reference] = referenceUtils.found({
45
+ type,
46
+ expectedType,
47
+ originalLine,
48
+ originalColumn,
49
+ specifier,
50
+ specifierLine: line,
51
+ specifierColumn: column,
52
+ isRessourceHint,
53
+ crossorigin,
54
+ integrity,
55
+ })
56
+ actions.push(async () => {
57
+ setHtmlNodeAttributes(node, {
58
+ [attributeName]: await referenceUtils.readGeneratedSpecifier(
59
+ reference,
60
+ ),
61
+ })
62
+ })
63
+ },
64
+ })
65
+ if (actions.length === 0) {
66
+ return null
67
+ }
68
+ await Promise.all(actions.map((action) => action()))
69
+ return {
70
+ content: stringifyHtmlAst(htmlAst),
71
+ }
72
+ }
73
+
74
+ const crossOriginCompatibleTagNames = ["script", "link", "img", "source"]
75
+ const integrityCompatibleTagNames = ["script", "link", "img", "source"]
76
+ const readFetchMetas = (node) => {
77
+ const meta = {}
78
+ if (crossOriginCompatibleTagNames.includes(node.nodeName)) {
79
+ const crossorigin = getHtmlNodeAttribute(node, "crossorigin") !== undefined
80
+ meta.crossorigin = crossorigin
81
+ }
82
+ if (integrityCompatibleTagNames.includes(node.nodeName)) {
83
+ const integrity = getHtmlNodeAttribute(node, "integrity")
84
+ meta.integrity = integrity
85
+ }
86
+ return meta
87
+ }
88
+
89
+ const visitHtmlUrls = ({ url, htmlAst, onUrl }) => {
90
+ const addDependency = ({
91
+ type,
92
+ subtype,
93
+ expectedType,
94
+ node,
95
+ attributeName,
96
+ specifier,
97
+ }) => {
98
+ const generatedFromInlineContent =
99
+ getHtmlNodeAttribute(node, "generated-from-inline-content") !== undefined
100
+ let position
101
+ if (generatedFromInlineContent) {
102
+ // when generated from inline content,
103
+ // line, column is not "src" nor "generated-from-src" but "original-position"
104
+ position = getHtmlNodePosition(node)
105
+ } else {
106
+ position = getHtmlNodeAttributePosition(node, attributeName)
107
+ }
108
+ const {
109
+ line,
110
+ column,
111
+ // originalLine, originalColumn
112
+ } = position
113
+ onUrl({
114
+ type,
115
+ subtype,
116
+ expectedType,
117
+ line,
118
+ column,
119
+ // originalLine, originalColumn
120
+ specifier,
121
+ node,
122
+ attributeName,
123
+ })
124
+ }
125
+ const visitAttributeAsUrlSpecifier = ({ node, attributeName, ...rest }) => {
126
+ const value = getHtmlNodeAttribute(node, attributeName)
127
+ if (value) {
128
+ const generatedBy = getHtmlNodeAttribute(node, "generated-by")
129
+ if (generatedBy !== undefined) {
130
+ // during build the importmap is inlined
131
+ // and shoud not be considered as a dependency anymore
132
+ return
133
+ }
134
+ addDependency({
135
+ ...rest,
136
+ node,
137
+ attributeName,
138
+ specifier:
139
+ attributeName === "generated-from-src" ||
140
+ attributeName === "generated-from-href"
141
+ ? new URL(value, url).href
142
+ : value,
143
+ })
144
+ } else if (attributeName === "src") {
145
+ visitAttributeAsUrlSpecifier({
146
+ ...rest,
147
+ node,
148
+ attributeName: "generated-from-src",
149
+ })
150
+ } else if (attributeName === "href") {
151
+ visitAttributeAsUrlSpecifier({
152
+ ...rest,
153
+ node,
154
+ attributeName: "generated-from-href",
155
+ })
156
+ }
157
+ }
158
+ const visitSrcset = ({ type, node }) => {
159
+ const srcset = getHtmlNodeAttribute(node, "srcset")
160
+ if (srcset) {
161
+ const srcCandidates = parseSrcSet(srcset)
162
+ srcCandidates.forEach((srcCandidate) => {
163
+ addDependency({
164
+ type,
165
+ node,
166
+ attributeName: "srcset",
167
+ specifier: srcCandidate.specifier,
168
+ })
169
+ })
170
+ }
171
+ }
172
+ visitHtmlNodes(htmlAst, {
173
+ link: (node) => {
174
+ const rel = getHtmlNodeAttribute(node, "rel")
175
+ const type = getHtmlNodeAttribute(node, "type")
176
+ visitAttributeAsUrlSpecifier({
177
+ type: "link_href",
178
+ subtype: rel,
179
+ node,
180
+ attributeName: "href",
181
+ expectedContentType: type,
182
+ expectedType: {
183
+ manifest: "webmanifest",
184
+ modulepreload: "js_module",
185
+ stylesheet: "css",
186
+ }[rel],
187
+ })
188
+ },
189
+ // style: () => {},
190
+ script: (node) => {
191
+ const type = getHtmlNodeAttribute(node, "type")
192
+ const expectedType = {
193
+ "undefined": "js_classic",
194
+ "text/javascript": "js_classic",
195
+ "module": "js_module",
196
+ "importmap": "importmap",
197
+ }[type]
198
+ visitAttributeAsUrlSpecifier({
199
+ type: "script_src",
200
+ expectedType,
201
+ node,
202
+ attributeName: "src",
203
+ })
204
+ },
205
+ a: (node) => {
206
+ visitAttributeAsUrlSpecifier({
207
+ type: "a_href",
208
+ node,
209
+ attributeName: "href",
210
+ })
211
+ },
212
+ iframe: (node) => {
213
+ visitAttributeAsUrlSpecifier({
214
+ type: "iframe_src",
215
+ node,
216
+ attributeName: "src",
217
+ })
218
+ },
219
+ img: (node) => {
220
+ visitAttributeAsUrlSpecifier({
221
+ type: "img_src",
222
+ node,
223
+ attributeName: "src",
224
+ })
225
+ visitSrcset({
226
+ type: "img_srcset",
227
+ node,
228
+ })
229
+ },
230
+ souce: (node) => {
231
+ visitAttributeAsUrlSpecifier({
232
+ type: "source_src",
233
+ node,
234
+ attributeName: "src",
235
+ })
236
+ visitSrcset({
237
+ type: "source_srcset",
238
+ node,
239
+ })
240
+ },
241
+ // svg <image> tag
242
+ image: (node) => {
243
+ visitAttributeAsUrlSpecifier({
244
+ type: "image_href",
245
+ node,
246
+ attributeName: "href",
247
+ })
248
+ },
249
+ use: (node) => {
250
+ visitAttributeAsUrlSpecifier({
251
+ type: "use_href",
252
+ node,
253
+ attributeName: "href",
254
+ })
255
+ },
256
+ })
257
+ }
@@ -0,0 +1,69 @@
1
+ import { createMagicSource } from "@jsenv/sourcemap"
2
+ import { parseJsUrls } from "@jsenv/ast"
3
+
4
+ import { isWebWorkerUrlInfo } from "@jsenv/core/src/omega/web_workers.js"
5
+
6
+ export const parseAndTransformJsUrls = async (urlInfo, context) => {
7
+ const jsMentions = await parseJsUrls({
8
+ js: urlInfo.content,
9
+ url: urlInfo.originalUrl,
10
+ isJsModule: urlInfo.type === "js_module",
11
+ isWebWorker: isWebWorkerUrlInfo(urlInfo),
12
+ })
13
+ const { rootDirectoryUrl, referenceUtils } = context
14
+ const actions = []
15
+ const magicSource = createMagicSource(urlInfo.content)
16
+ urlInfo.data.usesImport = false
17
+ urlInfo.data.usesExport = false
18
+ urlInfo.data.usesImportAssertion = false
19
+ jsMentions.forEach((jsMention) => {
20
+ if (jsMention.assert) {
21
+ urlInfo.data.usesImportAssertion = true
22
+ }
23
+ if (
24
+ jsMention.subtype === "import_static" ||
25
+ jsMention.subtype === "import_dynamic"
26
+ ) {
27
+ urlInfo.data.usesImport = true
28
+ }
29
+ if (jsMention.subtype === "export") {
30
+ urlInfo.data.usesExport = true
31
+ }
32
+ const [reference] = referenceUtils.found({
33
+ type: jsMention.type,
34
+ subtype: jsMention.subtype,
35
+ expectedType: jsMention.expectedType,
36
+ expectedSubtype: jsMention.expectedSubtype || urlInfo.subtype,
37
+ specifier: jsMention.specifier,
38
+ specifierStart: jsMention.specifierStart,
39
+ specifierEnd: jsMention.specifierEnd,
40
+ specifierLine: jsMention.specifierLine,
41
+ specifierColumn: jsMention.specifierColumn,
42
+ data: jsMention.data,
43
+ baseUrl: {
44
+ "StringLiteral": jsMention.baseUrl,
45
+ "window.origin": rootDirectoryUrl,
46
+ "import.meta.url": urlInfo.url,
47
+ "context.meta.url": urlInfo.url,
48
+ "document.currentScript.src": urlInfo.url,
49
+ }[jsMention.baseUrlType],
50
+ assert: jsMention.assert,
51
+ assertNode: jsMention.assertNode,
52
+ typePropertyNode: jsMention.typePropertyNode,
53
+ })
54
+ actions.push(async () => {
55
+ const replacement = await referenceUtils.readGeneratedSpecifier(reference)
56
+ magicSource.replace({
57
+ start: jsMention.specifierStart,
58
+ end: jsMention.specifierEnd,
59
+ replacement,
60
+ })
61
+ if (reference.mutation) {
62
+ reference.mutation(magicSource)
63
+ }
64
+ })
65
+ })
66
+ await Promise.all(actions.map((action) => action()))
67
+ const { content, sourcemap } = magicSource.toContentAndSourcemap()
68
+ return { content, sourcemap }
69
+ }
@@ -0,0 +1,110 @@
1
+ import { URL_META } from "@jsenv/url-meta"
2
+ import { urlToRelativeUrl } from "@jsenv/urls"
3
+
4
+ import { parseAndTransformHtmlUrls } from "./html/html_urls.js"
5
+ import { parseAndTransformCssUrls } from "./css/css_urls.js"
6
+ import { parseAndTransformJsUrls } from "./js/js_urls.js"
7
+ import { parseAndTransformWebmanifestUrls } from "./webmanifest/webmanifest_urls.js"
8
+
9
+ export const jsenvPluginUrlAnalysis = ({
10
+ rootDirectoryUrl,
11
+ include,
12
+ supportedProtocols = ["file:", "data:", "virtual:", "http:", "https:"],
13
+ }) => {
14
+ let getIncludeInfo = () => undefined
15
+ if (include) {
16
+ const associations = URL_META.resolveAssociations(
17
+ { include },
18
+ rootDirectoryUrl,
19
+ )
20
+ getIncludeInfo = (url) => {
21
+ const { include } = URL_META.applyAssociations({ url, associations })
22
+ return include
23
+ }
24
+ }
25
+
26
+ return {
27
+ name: "jsenv:url_analysis",
28
+ appliesDuring: "*",
29
+ redirectUrl: (reference) => {
30
+ if (reference.shouldHandle !== undefined) {
31
+ return
32
+ }
33
+ if (
34
+ reference.specifier[0] === "#" &&
35
+ // For Html, css and in general "#" refer to a ressource in the page
36
+ // so that urls must be kept intact
37
+ // However for js import specifiers they have a different meaning and we want
38
+ // to resolve them (https://nodejs.org/api/packages.html#imports for instance)
39
+ reference.type !== "js_import_export"
40
+ ) {
41
+ reference.shouldHandle = false
42
+ return
43
+ }
44
+ const includeInfo = getIncludeInfo(reference.url)
45
+ if (includeInfo === true) {
46
+ reference.shouldHandle = true
47
+ return
48
+ }
49
+ if (includeInfo === false) {
50
+ reference.shouldHandle = false
51
+ return
52
+ }
53
+ const { protocol } = new URL(reference.url)
54
+ const protocolIsSupported = supportedProtocols.some(
55
+ (supportedProtocol) => protocol === supportedProtocol,
56
+ )
57
+ if (protocolIsSupported) {
58
+ reference.shouldHandle = true
59
+ return
60
+ }
61
+ },
62
+ transformUrlContent: {
63
+ html: parseAndTransformHtmlUrls,
64
+ css: parseAndTransformCssUrls,
65
+ js_classic: parseAndTransformJsUrls,
66
+ js_module: parseAndTransformJsUrls,
67
+ webmanifest: parseAndTransformWebmanifestUrls,
68
+ directory: (urlInfo, context) => {
69
+ const originalDirectoryReference = findOriginalDirectoryReference(
70
+ urlInfo,
71
+ context,
72
+ )
73
+ const directoryRelativeUrl = urlToRelativeUrl(
74
+ urlInfo.url,
75
+ context.rootDirectoryUrl,
76
+ )
77
+ JSON.parse(urlInfo.content).forEach((directoryEntryName) => {
78
+ context.referenceUtils.found({
79
+ type: "filesystem",
80
+ subtype: "directory_entry",
81
+ specifier: directoryEntryName,
82
+ trace: `"${directoryRelativeUrl}${directoryEntryName}" entry in directory referenced by ${originalDirectoryReference.trace}`,
83
+ })
84
+ })
85
+ },
86
+ },
87
+ }
88
+ }
89
+
90
+ const findOriginalDirectoryReference = (urlInfo, context) => {
91
+ const findNonFileSystemAncestor = (urlInfo) => {
92
+ for (const dependentUrl of urlInfo.dependents) {
93
+ const dependentUrlInfo = context.urlGraph.getUrlInfo(dependentUrl)
94
+ if (dependentUrlInfo.type !== "directory") {
95
+ return [dependentUrlInfo, urlInfo]
96
+ }
97
+ const found = findNonFileSystemAncestor(dependentUrlInfo)
98
+ if (found) {
99
+ return found
100
+ }
101
+ }
102
+ return []
103
+ }
104
+ const [ancestor, child] = findNonFileSystemAncestor(urlInfo)
105
+ if (!ancestor) {
106
+ return null
107
+ }
108
+ const ref = ancestor.references.find((ref) => ref.url === child.url)
109
+ return ref
110
+ }
@@ -0,0 +1,20 @@
1
+ export const parseAndTransformWebmanifestUrls = async (urlInfo, context) => {
2
+ const content = urlInfo.content
3
+ const manifest = JSON.parse(content)
4
+ const actions = []
5
+ const { icons = [] } = manifest
6
+ icons.forEach((icon) => {
7
+ const [reference] = context.referenceUtils.found({
8
+ type: "webmanifest_icon_src",
9
+ specifier: icon.src,
10
+ })
11
+ actions.push(async () => {
12
+ icon.src = await context.referenceUtils.readGeneratedSpecifier(reference)
13
+ })
14
+ })
15
+ if (actions.length === 0) {
16
+ return null
17
+ }
18
+ await Promise.all(actions.map((action) => action()))
19
+ return JSON.stringify(manifest, null, " ")
20
+ }
@@ -1,13 +1,15 @@
1
1
  export const jsenvPluginUrlResolution = () => {
2
- const urlResolver = ({ parentUrl, specifier }) => {
3
- return new URL(specifier, parentUrl).href
2
+ const urlResolver = (reference) => {
3
+ return new URL(
4
+ reference.specifier,
5
+ reference.baseUrl || reference.parentUrl,
6
+ ).href
4
7
  }
5
8
  return {
6
9
  name: "jsenv:url_resolution",
7
10
  appliesDuring: "*",
8
- resolve: {
11
+ resolveUrl: {
9
12
  "entry_point": urlResolver,
10
- "js_import_export": urlResolver,
11
13
  "link_href": urlResolver,
12
14
  "script_src": urlResolver,
13
15
  "a_href": urlResolver,
@@ -21,8 +23,10 @@ export const jsenvPluginUrlResolution = () => {
21
23
  "css_@import": urlResolver,
22
24
  "css_url": urlResolver,
23
25
  "sourcemap_comment": urlResolver,
24
- "js_import_meta_url_pattern": urlResolver,
26
+ "js_import_export": urlResolver,
27
+ "js_url_specifier": urlResolver,
25
28
  "js_inline_content": urlResolver,
29
+ "webmanifest_icon_src": urlResolver,
26
30
  },
27
31
  }
28
32
  }
@@ -0,0 +1,28 @@
1
+ export const jsenvPluginUrlVersion = () => {
2
+ return {
3
+ name: "jsenv:url_version",
4
+ appliesDuring: "*",
5
+ redirectUrl: (reference) => {
6
+ // "v" search param goal is to enable long-term cache
7
+ // for server response headers
8
+ // it is also used by hmr to bypass browser cache
9
+ // this goal is achieved when we reach this part of the code
10
+ // We get rid of this params so that urlGraph and other parts of the code
11
+ // recognize the url (it is not considered as a different url)
12
+ const urlObject = new URL(reference.url)
13
+ urlObject.searchParams.delete("v")
14
+ return urlObject.href
15
+ },
16
+ transformUrlSearchParams: (reference) => {
17
+ if (!reference.data.version) {
18
+ return null
19
+ }
20
+ if (reference.searchParams.has("v")) {
21
+ return null
22
+ }
23
+ return {
24
+ v: reference.data.version,
25
+ }
26
+ },
27
+ }
28
+ }
@@ -0,0 +1,3 @@
1
+ import { createRequire } from "node:module"
2
+
3
+ export const requireFromJsenv = createRequire(import.meta.url)
@@ -0,0 +1,82 @@
1
+ import { URL_META } from "@jsenv/url-meta"
2
+ import { fileSystemPathToUrl } from "@jsenv/urls"
3
+
4
+ import { requireFromJsenv } from "@jsenv/core/src/require_from_jsenv.js"
5
+
6
+ // https://github.com/istanbuljs/babel-plugin-istanbul/blob/321740f7b25d803f881466ea819d870f7ed6a254/src/index.js
7
+
8
+ export const babelPluginInstrument = (
9
+ api,
10
+ {
11
+ rootDirectoryUrl,
12
+ useInlineSourceMaps = false,
13
+ coverageConfig = { "./**/*": true },
14
+ },
15
+ ) => {
16
+ const { programVisitor } = requireFromJsenv("istanbul-lib-instrument")
17
+
18
+ const { types } = api
19
+
20
+ const associations = URL_META.resolveAssociations(
21
+ { cover: coverageConfig },
22
+ rootDirectoryUrl,
23
+ )
24
+ const shouldInstrument = (url) => {
25
+ return URL_META.applyAssociations({ url, associations }).cover
26
+ }
27
+
28
+ return {
29
+ name: "transform-instrument",
30
+ visitor: {
31
+ Program: {
32
+ enter(path) {
33
+ const { file } = this
34
+ const { opts } = file
35
+ if (!opts.sourceFileName) {
36
+ console.warn(
37
+ `cannot instrument file when "sourceFileName" option is not set`,
38
+ )
39
+ return
40
+ }
41
+ const fileUrl = fileSystemPathToUrl(opts.sourceFileName)
42
+ if (!shouldInstrument(fileUrl)) {
43
+ return
44
+ }
45
+
46
+ this.__dv__ = null
47
+
48
+ let inputSourceMap
49
+
50
+ if (useInlineSourceMaps) {
51
+ // https://github.com/istanbuljs/babel-plugin-istanbul/commit/a9e15643d249a2985e4387e4308022053b2cd0ad#diff-1fdf421c05c1140f6d71444ea2b27638R65
52
+ inputSourceMap =
53
+ opts.inputSourceMap || file.inputMap
54
+ ? file.inputMap.sourcemap
55
+ : null
56
+ } else {
57
+ inputSourceMap = opts.inputSourceMap
58
+ }
59
+
60
+ this.__dv__ = programVisitor(
61
+ types,
62
+ opts.filenameRelative || opts.filename,
63
+ {
64
+ coverageVariable: "__coverage__",
65
+ inputSourceMap,
66
+ },
67
+ )
68
+ this.__dv__.enter(path)
69
+ },
70
+
71
+ exit(path) {
72
+ if (!this.__dv__) {
73
+ return
74
+ }
75
+ const object = this.__dv__.exit(path)
76
+ // object got two properties: fileCoverage and sourceMappingURL
77
+ this.file.metadata.coverage = object.fileCoverage
78
+ },
79
+ },
80
+ },
81
+ }
82
+ }
@@ -0,0 +1,36 @@
1
+ import { readFileSync } from "node:fs"
2
+ import { resolveUrl, urlToFileSystemPath } from "@jsenv/urls"
3
+
4
+ import { requireFromJsenv } from "@jsenv/core/src/require_from_jsenv.js"
5
+ import { istanbulCoverageMapFromCoverage } from "./istanbul_coverage_map_from_coverage.js"
6
+
7
+ export const generateCoverageHtmlDirectory = async (
8
+ coverage,
9
+ {
10
+ rootDirectoryUrl,
11
+ coverageHtmlDirectoryRelativeUrl,
12
+ coverageSkipEmpty,
13
+ coverageSkipFull,
14
+ },
15
+ ) => {
16
+ const libReport = requireFromJsenv("istanbul-lib-report")
17
+ const reports = requireFromJsenv("istanbul-reports")
18
+
19
+ const context = libReport.createContext({
20
+ dir: urlToFileSystemPath(rootDirectoryUrl),
21
+ coverageMap: istanbulCoverageMapFromCoverage(coverage),
22
+ sourceFinder: (path) => {
23
+ return readFileSync(
24
+ urlToFileSystemPath(resolveUrl(path, rootDirectoryUrl)),
25
+ "utf8",
26
+ )
27
+ },
28
+ })
29
+
30
+ const report = reports.create("html", {
31
+ skipEmpty: coverageSkipEmpty,
32
+ skipFull: coverageSkipFull,
33
+ subdir: coverageHtmlDirectoryRelativeUrl,
34
+ })
35
+ report.execute(context)
36
+ }
@@ -0,0 +1,22 @@
1
+ import { writeFile } from "@jsenv/filesystem"
2
+ import { urlToFileSystemPath } from "@jsenv/urls"
3
+ import { byteAsFileSize } from "@jsenv/log"
4
+
5
+ export const generateCoverageJsonFile = async ({
6
+ coverage,
7
+ coverageJsonFileUrl,
8
+ coverageJsonFileLog,
9
+ logger,
10
+ }) => {
11
+ const coverageAsText = JSON.stringify(coverage, null, " ")
12
+
13
+ if (coverageJsonFileLog) {
14
+ logger.info(
15
+ `-> ${urlToFileSystemPath(coverageJsonFileUrl)} (${byteAsFileSize(
16
+ Buffer.byteLength(coverageAsText),
17
+ )})`,
18
+ )
19
+ }
20
+
21
+ await writeFile(coverageJsonFileUrl, coverageAsText)
22
+ }
@@ -0,0 +1,19 @@
1
+ import { requireFromJsenv } from "@jsenv/core/src/require_from_jsenv.js"
2
+ import { istanbulCoverageMapFromCoverage } from "./istanbul_coverage_map_from_coverage.js"
3
+
4
+ export const generateCoverageTextLog = (
5
+ coverage,
6
+ { coverageSkipEmpty, coverageSkipFull },
7
+ ) => {
8
+ const libReport = requireFromJsenv("istanbul-lib-report")
9
+ const reports = requireFromJsenv("istanbul-reports")
10
+
11
+ const context = libReport.createContext({
12
+ coverageMap: istanbulCoverageMapFromCoverage(coverage),
13
+ })
14
+ const report = reports.create("text", {
15
+ skipEmpty: coverageSkipEmpty,
16
+ skipFull: coverageSkipFull,
17
+ })
18
+ report.execute(context)
19
+ }