@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
@@ -22,20 +22,18 @@ import {
22
22
  composeTwoImportMaps,
23
23
  normalizeImportMap,
24
24
  } from "@jsenv/importmap"
25
-
25
+ import { generateInlineContentUrl } from "@jsenv/urls"
26
26
  import {
27
27
  parseHtmlString,
28
28
  stringifyHtmlAst,
29
- findNode,
30
- getHtmlNodeAttributeByName,
31
- htmlNodePosition,
32
- removeHtmlNodeAttributeByName,
29
+ findHtmlNode,
30
+ getHtmlNodeAttribute,
31
+ setHtmlNodeAttributes,
32
+ getHtmlNodePosition,
33
+ getHtmlNodeText,
33
34
  setHtmlNodeText,
34
- assignHtmlNodeAttributes,
35
- getHtmlNodeTextNode,
36
35
  removeHtmlNode,
37
- } from "@jsenv/utils/html_ast/html_ast.js"
38
- import { generateInlineContentUrl } from "@jsenv/utils/urls/inline_content_url_generator.js"
36
+ } from "@jsenv/ast"
39
37
 
40
38
  export const jsenvPluginImportmap = () => {
41
39
  let finalImportmap = null
@@ -59,16 +57,16 @@ export const jsenvPluginImportmap = () => {
59
57
  return {
60
58
  name: "jsenv:importmap",
61
59
  appliesDuring: "*",
62
- resolve: {
63
- js_import_export: ({ parentUrl, specifier }) => {
60
+ resolveUrl: {
61
+ js_import_export: (reference) => {
64
62
  if (!finalImportmap) {
65
63
  return null
66
64
  }
67
65
  try {
68
66
  let fromMapping = false
69
67
  const result = resolveImport({
70
- specifier,
71
- importer: parentUrl,
68
+ specifier: reference.specifier,
69
+ importer: reference.parentUrl,
72
70
  importMap: finalImportmap,
73
71
  onImportMapping: () => {
74
72
  fromMapping = true
@@ -91,33 +89,30 @@ export const jsenvPluginImportmap = () => {
91
89
  }
92
90
  },
93
91
  },
94
- transform: {
95
- html: async (
96
- { url, content, references },
97
- { scenario, cook, urlGraph, referenceUtils },
98
- ) => {
99
- const htmlAst = parseHtmlString(content)
100
- const importmap = findNode(htmlAst, (node) => {
92
+ transformUrlContent: {
93
+ html: async (htmlUrlInfo, context) => {
94
+ const htmlAst = parseHtmlString(htmlUrlInfo.content)
95
+ const importmap = findHtmlNode(htmlAst, (node) => {
101
96
  if (node.nodeName !== "script") {
102
97
  return false
103
98
  }
104
- const typeAttribute = getHtmlNodeAttributeByName(node, "type")
105
- if (!typeAttribute || typeAttribute.value !== "importmap") {
99
+ const type = getHtmlNodeAttribute(node, "type")
100
+ if (type === undefined || type !== "importmap") {
106
101
  return false
107
102
  }
108
103
  return true
109
104
  })
110
105
  if (!importmap) {
111
- onHtmlImportmapParsed(null, url)
106
+ onHtmlImportmapParsed(null, htmlUrlInfo.url)
112
107
  return null
113
108
  }
114
- const handleInlineImportmap = async (importmap, textNode) => {
109
+ const handleInlineImportmap = async (importmap, htmlNodeText) => {
115
110
  const { line, column, lineEnd, columnEnd, isOriginal } =
116
- htmlNodePosition.readNodePosition(importmap, {
111
+ getHtmlNodePosition(importmap, {
117
112
  preferOriginal: true,
118
113
  })
119
114
  const inlineImportmapUrl = generateInlineContentUrl({
120
- url,
115
+ url: htmlUrlInfo.url,
121
116
  extension: ".importmap",
122
117
  line,
123
118
  column,
@@ -125,21 +120,26 @@ export const jsenvPluginImportmap = () => {
125
120
  columnEnd,
126
121
  })
127
122
  const [inlineImportmapReference, inlineImportmapUrlInfo] =
128
- referenceUtils.foundInline({
123
+ context.referenceUtils.foundInline({
129
124
  type: "script_src",
130
- line: line - 1,
131
- column,
132
- isOriginal,
125
+ isOriginalPosition: isOriginal,
126
+ specifierLine: line - 1,
127
+ specifierColumn: column,
133
128
  specifier: inlineImportmapUrl,
134
129
  contentType: "application/importmap+json",
135
- content: textNode.value,
130
+ content: htmlNodeText,
136
131
  })
137
- await cook({
132
+ await context.cook(inlineImportmapUrlInfo, {
138
133
  reference: inlineImportmapReference,
139
- urlInfo: inlineImportmapUrlInfo,
140
134
  })
141
135
  setHtmlNodeText(importmap, inlineImportmapUrlInfo.content)
142
- onHtmlImportmapParsed(JSON.parse(inlineImportmapUrlInfo.content), url)
136
+ setHtmlNodeAttributes(importmap, {
137
+ "generated-by": "jsenv:importmap",
138
+ })
139
+ onHtmlImportmapParsed(
140
+ JSON.parse(inlineImportmapUrlInfo.content),
141
+ htmlUrlInfo.url,
142
+ )
143
143
  }
144
144
  const handleImportmapWithSrc = async (importmap, src) => {
145
145
  // Browser would throw on remote importmap
@@ -147,35 +147,38 @@ export const jsenvPluginImportmap = () => {
147
147
  // We must precook the importmap to know its content and inline it into the HTML
148
148
  // In this situation the ref to the importmap was already discovered
149
149
  // when parsing the HTML
150
- const importmapReference = references.find(
151
- (reference) => reference.url === src,
150
+ const importmapReference =
151
+ context.referenceUtils.findByGeneratedSpecifier(src)
152
+ const importmapUrlInfo = context.urlGraph.getUrlInfo(
153
+ importmapReference.url,
152
154
  )
153
- const importmapUrlInfo = urlGraph.getUrlInfo(importmapReference.url)
154
- await cook({
155
+ await context.cook(importmapUrlInfo, {
155
156
  reference: importmapReference,
156
- urlInfo: importmapUrlInfo,
157
- })
158
- onHtmlImportmapParsed(JSON.parse(importmapUrlInfo.content), url)
159
- removeHtmlNodeAttributeByName(importmap, "src")
160
- assignHtmlNodeAttributes(importmap, {
161
- "content-src": src,
162
- "inlined-by": "jsenv:importmap",
163
157
  })
158
+ onHtmlImportmapParsed(
159
+ JSON.parse(importmapUrlInfo.content),
160
+ htmlUrlInfo.url,
161
+ )
164
162
  setHtmlNodeText(importmap, importmapUrlInfo.content)
163
+ setHtmlNodeAttributes(importmap, {
164
+ "src": undefined,
165
+ "generated-by": "jsenv:importmap",
166
+ "generated-from-src": src,
167
+ })
165
168
 
166
169
  const { line, column, lineEnd, columnEnd, isOriginal } =
167
- htmlNodePosition.readNodePosition(importmap, {
170
+ getHtmlNodePosition(importmap, {
168
171
  preferOriginal: true,
169
172
  })
170
173
  const inlineImportmapUrl = generateInlineContentUrl({
171
- url,
174
+ url: htmlUrlInfo.url,
172
175
  extension: ".importmap",
173
176
  line,
174
177
  column,
175
178
  lineEnd,
176
179
  columnEnd,
177
180
  })
178
- referenceUtils.becomesInline(importmapReference, {
181
+ context.referenceUtils.becomesInline(importmapReference, {
179
182
  line: line - 1,
180
183
  column,
181
184
  isOriginal,
@@ -185,14 +188,13 @@ export const jsenvPluginImportmap = () => {
185
188
  })
186
189
  }
187
190
 
188
- const srcAttribute = getHtmlNodeAttributeByName(importmap, "src")
189
- const src = srcAttribute ? srcAttribute.value : undefined
191
+ const src = getHtmlNodeAttribute(importmap, "src")
190
192
  if (src) {
191
193
  await handleImportmapWithSrc(importmap, src)
192
194
  } else {
193
- const textNode = getHtmlNodeTextNode(importmap)
194
- if (textNode) {
195
- await handleInlineImportmap(importmap, textNode)
195
+ const htmlNodeText = getHtmlNodeText(importmap)
196
+ if (htmlNodeText) {
197
+ await handleInlineImportmap(importmap, htmlNodeText)
196
198
  }
197
199
  }
198
200
  // once this plugin knows the importmap, it will use it
@@ -200,7 +202,7 @@ export const jsenvPluginImportmap = () => {
200
202
  // by "formatReferencedUrl" making the importmap presence useless.
201
203
  // In dev/test we keep importmap into the HTML to see it even if useless
202
204
  // Duing build we get rid of it
203
- if (scenario === "build") {
205
+ if (context.scenario === "build") {
204
206
  removeHtmlNode(importmap)
205
207
  }
206
208
  return {
@@ -0,0 +1,57 @@
1
+ import { createMagicSource } from "@jsenv/sourcemap"
2
+ import {
3
+ parseHtmlString,
4
+ injectScriptNodeAsEarlyAsPossible,
5
+ createHtmlNode,
6
+ stringifyHtmlAst,
7
+ } from "@jsenv/ast"
8
+
9
+ export const injectGlobals = (urlInfo, globals) => {
10
+ if (urlInfo.type === "html") {
11
+ return globalInjectorOnHtml(urlInfo, globals)
12
+ }
13
+ if (urlInfo.type === "js_classic" || urlInfo.type === "js_module") {
14
+ return globalsInjectorOnJs(urlInfo, globals)
15
+ }
16
+ throw new Error(`cannot inject globals into "${urlInfo.type}"`)
17
+ }
18
+
19
+ const globalInjectorOnHtml = async (urlInfo, globals) => {
20
+ // ideally we would inject an importmap but browser support is too low
21
+ // (even worse for worker/service worker)
22
+ // so for now we inject code into entry points
23
+ const htmlAst = parseHtmlString(urlInfo.content, {
24
+ storeOriginalPositions: false,
25
+ })
26
+ const clientCode = generateClientCodeForGlobals({
27
+ globals,
28
+ isWebWorker: false,
29
+ })
30
+ injectScriptNodeAsEarlyAsPossible(
31
+ htmlAst,
32
+ createHtmlNode({
33
+ "tagName": "script",
34
+ "textContent": clientCode,
35
+ "injected-by": "jsenv:inject_globals",
36
+ }),
37
+ )
38
+ return stringifyHtmlAst(htmlAst)
39
+ }
40
+
41
+ const globalsInjectorOnJs = async (urlInfo, globals) => {
42
+ const clientCode = generateClientCodeForGlobals({
43
+ globals,
44
+ isWebWorker:
45
+ urlInfo.subtype === "worker" ||
46
+ urlInfo.subtype === "service_worker" ||
47
+ urlInfo.subtype === "shared_worker",
48
+ })
49
+ const magicSource = createMagicSource(urlInfo.content)
50
+ magicSource.prepend(clientCode)
51
+ return magicSource.toContentAndSourcemap()
52
+ }
53
+
54
+ const generateClientCodeForGlobals = ({ isWebWorker = false, globals }) => {
55
+ const globalName = isWebWorker ? "self" : "window"
56
+ return `Object.assign(${globalName}, ${JSON.stringify(globals, null, " ")});`
57
+ }
@@ -0,0 +1,24 @@
1
+ import { injectGlobals } from "./inject_globals.js"
2
+
3
+ export const jsenvPluginInjectGlobals = (urlAssociations) => {
4
+ return {
5
+ name: "jsenv:inject_globals",
6
+ appliesDuring: "*",
7
+ transformUrlContent: async (urlInfo) => {
8
+ const url = Object.keys(urlAssociations).find((url) => {
9
+ return url === urlInfo.url
10
+ })
11
+ if (!url) {
12
+ return null
13
+ }
14
+ let globals = urlAssociations[url]
15
+ if (typeof globals === "function") {
16
+ globals = await globals()
17
+ }
18
+ if (Object.keys(globals).length === 0) {
19
+ return null
20
+ }
21
+ return injectGlobals(urlInfo, globals)
22
+ },
23
+ }
24
+ }
@@ -1,45 +1,46 @@
1
- import { DataUrl } from "@jsenv/utils/urls/data_url.js"
2
- import { ContentType } from "@jsenv/utils/src/content_type.js"
1
+ import { DATA_URL } from "@jsenv/urls"
2
+ import { CONTENT_TYPE } from "@jsenv/utils/src/content_type/content_type.js"
3
3
 
4
4
  export const jsenvPluginDataUrls = () => {
5
5
  return {
6
6
  name: "jsenv:data_urls",
7
7
  appliesDuring: "*",
8
- resolve: ({ specifier }) => {
9
- if (!specifier.startsWith("data:")) {
8
+ resolveUrl: (reference) => {
9
+ if (!reference.specifier.startsWith("data:")) {
10
10
  return null
11
11
  }
12
- return specifier
12
+ return reference.specifier
13
13
  },
14
- load: ({ url, data }) => {
15
- if (!url.startsWith("data:")) {
14
+ fetchUrlContent: (urlInfo) => {
15
+ if (!urlInfo.url.startsWith("data:")) {
16
16
  return null
17
17
  }
18
- const { contentType, base64Flag, data: urlData } = DataUrl.parse(url)
19
- data.base64Flag = base64Flag
20
- return {
18
+ const {
21
19
  contentType,
20
+ base64Flag,
21
+ data: urlData,
22
+ } = DATA_URL.parse(urlInfo.url)
23
+ urlInfo.data.base64Flag = base64Flag
24
+ return {
22
25
  content: contentFromUrlData({ contentType, base64Flag, urlData }),
26
+ contentType,
23
27
  }
24
28
  },
25
- formatReferencedUrl: (reference, { urlGraph, cook }) => {
26
- if (!reference.url.startsWith("data:")) {
29
+ formatUrl: (reference, context) => {
30
+ if (!reference.generatedUrl.startsWith("data:")) {
27
31
  return null
28
32
  }
29
33
  if (reference.type === "sourcemap_comment") {
30
34
  return null
31
35
  }
32
36
  return (async () => {
33
- const urlInfo = urlGraph.getUrlInfo(reference.url)
34
- await cook({
35
- reference,
36
- urlInfo,
37
- })
37
+ const urlInfo = context.urlGraph.getUrlInfo(reference.url)
38
+ await context.cook(urlInfo, { reference })
38
39
  if (urlInfo.originalContent === urlInfo.content) {
39
- return reference.url
40
+ return reference.generatedUrl
40
41
  }
41
- const specifier = DataUrl.stringify({
42
- contentType: urlInfo.contentType,
42
+ const specifier = DATA_URL.stringify({
43
+ contentType: urlInfo.headers["content-type"],
43
44
  base64Flag: urlInfo.data.base64Flag,
44
45
  data: urlInfo.data.base64Flag
45
46
  ? dataToBase64(urlInfo.content)
@@ -52,7 +53,7 @@ export const jsenvPluginDataUrls = () => {
52
53
  }
53
54
 
54
55
  const contentFromUrlData = ({ contentType, base64Flag, urlData }) => {
55
- if (ContentType.isTextual(contentType)) {
56
+ if (CONTENT_TYPE.isTextual(contentType)) {
56
57
  if (base64Flag) {
57
58
  return base64ToString(urlData)
58
59
  }
@@ -0,0 +1,159 @@
1
+ import { generateInlineContentUrl } from "@jsenv/urls"
2
+ import {
3
+ parseHtmlString,
4
+ stringifyHtmlAst,
5
+ visitHtmlNodes,
6
+ getHtmlNodeText,
7
+ getHtmlNodePosition,
8
+ analyzeScriptNode,
9
+ setHtmlNodeAttributes,
10
+ setHtmlNodeText,
11
+ getHtmlNodeAttribute,
12
+ } from "@jsenv/ast"
13
+ import { CONTENT_TYPE } from "@jsenv/utils/src/content_type/content_type.js"
14
+
15
+ export const jsenvPluginHtmlInlineContent = ({ analyzeConvertedScripts }) => {
16
+ return {
17
+ name: "jsenv:html_inline_content",
18
+ appliesDuring: "*",
19
+ transformUrlContent: {
20
+ html: async (urlInfo, context) => {
21
+ const htmlAst = parseHtmlString(urlInfo.content)
22
+ const actions = []
23
+ const handleInlineStyle = (node) => {
24
+ const htmlNodeText = getHtmlNodeText(node)
25
+ if (!htmlNodeText) {
26
+ return
27
+ }
28
+ actions.push(async () => {
29
+ const { line, column, lineEnd, columnEnd, isOriginal } =
30
+ getHtmlNodePosition(node, {
31
+ preferOriginal: true,
32
+ })
33
+ const inlineStyleUrl = generateInlineContentUrl({
34
+ url: urlInfo.url,
35
+ extension: ".css",
36
+ line,
37
+ column,
38
+ lineEnd,
39
+ columnEnd,
40
+ })
41
+ const [inlineStyleReference, inlineStyleUrlInfo] =
42
+ context.referenceUtils.foundInline({
43
+ type: "link_href",
44
+ expectedType: "css",
45
+ isOriginalPosition: isOriginal,
46
+ // we remove 1 to the line because imagine the following html:
47
+ // <style>body { color: red; }</style>
48
+ // -> content starts same line as <style>
49
+ specifierLine: line - 1,
50
+ specifierColumn: column,
51
+ specifier: inlineStyleUrl,
52
+ contentType: "text/css",
53
+ content: htmlNodeText,
54
+ })
55
+ await context.cook(inlineStyleUrlInfo, {
56
+ reference: inlineStyleReference,
57
+ })
58
+ setHtmlNodeText(node, inlineStyleUrlInfo.content)
59
+ setHtmlNodeAttributes(node, {
60
+ "generated-by": "jsenv:html_inline_content",
61
+ })
62
+ })
63
+ }
64
+ const handleInlineScript = (node) => {
65
+ const htmlNodeText = getHtmlNodeText(node)
66
+ if (!htmlNodeText) {
67
+ return
68
+ }
69
+ // If the inline script was already handled by an other plugin, ignore it
70
+ // - we want to preserve inline scripts generated by html supervisor during dev
71
+ // - we want to avoid cooking twice a script during build
72
+ const generatedBy = getHtmlNodeAttribute(node, "generated-by")
73
+ if (
74
+ generatedBy === "jsenv:as_js_classic_html" &&
75
+ !analyzeConvertedScripts
76
+ ) {
77
+ return
78
+ }
79
+ if (generatedBy === "jsenv:html_supervisor") {
80
+ return
81
+ }
82
+ actions.push(async () => {
83
+ const scriptCategory = analyzeScriptNode(node)
84
+ const { line, column, lineEnd, columnEnd, isOriginal } =
85
+ getHtmlNodePosition(node, {
86
+ preferOriginal: true,
87
+ })
88
+ // from MDN about [type] attribute:
89
+ // "Any other value: The embedded content is treated as a data block
90
+ // which won't be processed by the browser. Developers must use a valid MIME type
91
+ // that is not a JavaScript MIME type to denote data blocks.
92
+ // The src attribute will be ignored."
93
+ // https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script#attr-type
94
+ const isJs =
95
+ scriptCategory === "classic" || scriptCategory === "module"
96
+ const isImportmap = scriptCategory === "importmap"
97
+ const contentType = isJs
98
+ ? "text/javascript"
99
+ : isImportmap
100
+ ? "application/importmap+json"
101
+ : scriptCategory
102
+
103
+ let inlineScriptUrl = generateInlineContentUrl({
104
+ url: urlInfo.url,
105
+ extension: CONTENT_TYPE.asFileExtension(contentType),
106
+ line,
107
+ column,
108
+ lineEnd,
109
+ columnEnd,
110
+ })
111
+ const [inlineScriptReference, inlineScriptUrlInfo] =
112
+ context.referenceUtils.foundInline({
113
+ node,
114
+ type: "script_src",
115
+ expectedType: {
116
+ classic: "js_classic",
117
+ module: "js_module",
118
+ importmap: "importmap",
119
+ }[scriptCategory],
120
+ // we remove 1 to the line because imagine the following html:
121
+ // <script>console.log('ok')</script>
122
+ // -> content starts same line as <script>
123
+ specifierLine: line - 1,
124
+ specifierColumn: column,
125
+ isOriginalPosition: isOriginal,
126
+ specifier: inlineScriptUrl,
127
+ contentType,
128
+ content: htmlNodeText,
129
+ })
130
+
131
+ await context.cook(inlineScriptUrlInfo, {
132
+ reference: inlineScriptReference,
133
+ })
134
+ setHtmlNodeText(node, inlineScriptUrlInfo.content)
135
+ setHtmlNodeAttributes(node, {
136
+ "generated-by": "jsenv:html_inline_content",
137
+ })
138
+ })
139
+ }
140
+ visitHtmlNodes(htmlAst, {
141
+ style: (node) => {
142
+ handleInlineStyle(node)
143
+ },
144
+ script: (node) => {
145
+ handleInlineScript(node)
146
+ },
147
+ })
148
+ if (actions.length === 0) {
149
+ return null
150
+ }
151
+ await Promise.all(actions.map((action) => action()))
152
+ const htmlModified = stringifyHtmlAst(htmlAst)
153
+ return {
154
+ content: htmlModified,
155
+ }
156
+ },
157
+ },
158
+ }
159
+ }
@@ -0,0 +1,36 @@
1
+ import { jsenvPluginHtmlInlineContent } from "./jsenv_plugin_html_inline_content.js"
2
+ import { jsenvPluginJsInlineContent } from "./jsenv_plugin_js_inline_content.js"
3
+ import { jsenvPluginDataUrls } from "./jsenv_plugin_data_urls.js"
4
+ import { jsenvPluginInlineQueryParam } from "./jsenv_plugin_inline_query_param.js"
5
+
6
+ export const jsenvPluginInline = ({
7
+ fetchInlineUrls = true,
8
+ analyzeConvertedScripts = false,
9
+ allowEscapeForVersioning = false,
10
+ } = {}) => {
11
+ return [
12
+ ...(fetchInlineUrls ? [jsenvPluginInlineUrls()] : []),
13
+ jsenvPluginHtmlInlineContent({ analyzeConvertedScripts }),
14
+ jsenvPluginJsInlineContent({ allowEscapeForVersioning }),
15
+ jsenvPluginDataUrls(),
16
+ jsenvPluginInlineQueryParam(),
17
+ ]
18
+ }
19
+
20
+ const jsenvPluginInlineUrls = () => {
21
+ return {
22
+ name: "jsenv:inline_urls",
23
+ appliesDuring: "*",
24
+ fetchUrlContent: (urlInfo) => {
25
+ if (!urlInfo.isInline) {
26
+ return null
27
+ }
28
+ return {
29
+ // we want to fetch the original content otherwise we might re-cook
30
+ // content already cooked
31
+ content: urlInfo.originalContent,
32
+ contentType: urlInfo.contentType,
33
+ }
34
+ },
35
+ }
36
+ }
@@ -1,10 +1,10 @@
1
- import { DataUrl } from "@jsenv/utils/urls/data_url.js"
1
+ import { DATA_URL } from "@jsenv/urls"
2
2
 
3
3
  export const jsenvPluginInlineQueryParam = () => {
4
4
  return {
5
5
  name: "jsenv:inline_query_param",
6
6
  appliesDuring: "*",
7
- formatReferencedUrl: {
7
+ formatUrl: {
8
8
  // <link> and <script> can be inlined in the html
9
9
  // this should be done during dev and postbuild but not build
10
10
  // so that the bundled file gets inlined and not the entry point
@@ -15,21 +15,18 @@ export const jsenvPluginInlineQueryParam = () => {
15
15
  // but maybe we should rather use ?object_url
16
16
  // or people could do this:
17
17
  // import workerText from './worker.js?text'
18
- // const blob = new Blob(workerText, { type: 'application/javascript' })
18
+ // const blob = new Blob(workerText, { type: 'text/javascript' })
19
19
  // window.URL.createObjectURL(blob)
20
20
  // in any case the recommended way is to use an url
21
21
  // to benefit from shared worker and reuse worker between tabs
22
- "*": (reference, { urlGraph, cook }) => {
23
- if (!new URL(reference.url).searchParams.has("inline")) {
22
+ "*": (reference, context) => {
23
+ if (!reference.searchParams.has("inline")) {
24
24
  return null
25
25
  }
26
26
  return (async () => {
27
- const urlInfo = urlGraph.getUrlInfo(reference.url)
28
- await cook({
29
- reference,
30
- urlInfo,
31
- })
32
- const specifier = DataUrl.stringify({
27
+ const urlInfo = context.urlGraph.getUrlInfo(reference.url)
28
+ await context.cook(urlInfo, { reference })
29
+ const specifier = DATA_URL.stringify({
33
30
  mediaType: urlInfo.contentType,
34
31
  base64Flag: true,
35
32
  data: Buffer.from(urlInfo.content).toString("base64"),