@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,239 @@
1
+ /*
2
+ * Things happening here
3
+ * - html supervisor module injection
4
+ * - scripts are wrapped to be supervised
5
+ */
6
+
7
+ import {
8
+ parseHtmlString,
9
+ stringifyHtmlAst,
10
+ visitHtmlNodes,
11
+ getHtmlNodeAttribute,
12
+ setHtmlNodeAttributes,
13
+ analyzeScriptNode,
14
+ injectScriptNodeAsEarlyAsPossible,
15
+ createHtmlNode,
16
+ getHtmlNodePosition,
17
+ getHtmlNodeText,
18
+ removeHtmlNodeText,
19
+ setHtmlNodeText,
20
+ } from "@jsenv/ast"
21
+ import { generateInlineContentUrl } from "@jsenv/urls"
22
+
23
+ export const jsenvPluginHtmlSupervisor = ({
24
+ logs = false,
25
+ measurePerf = false,
26
+ }) => {
27
+ const htmlSupervisorSetupFileUrl = new URL(
28
+ "./client/html_supervisor_setup.js?js_classic",
29
+ import.meta.url,
30
+ ).href
31
+
32
+ const htmlSupervisorInstallerFileUrl = new URL(
33
+ "./client/html_supervisor_installer.js",
34
+ import.meta.url,
35
+ ).href
36
+
37
+ return {
38
+ name: "jsenv:html_supervisor",
39
+ appliesDuring: {
40
+ dev: true,
41
+ test: true,
42
+ },
43
+ transformUrlContent: {
44
+ html: ({ url, content }, { referenceUtils }) => {
45
+ const htmlAst = parseHtmlString(content)
46
+ const scriptsToSupervise = []
47
+
48
+ const handleInlineScript = (node, htmlNodeText) => {
49
+ const scriptCategory = analyzeScriptNode(node)
50
+ const { line, column, lineEnd, columnEnd, isOriginal } =
51
+ getHtmlNodePosition(node, {
52
+ preferOriginal: true,
53
+ })
54
+ let inlineScriptUrl = generateInlineContentUrl({
55
+ url,
56
+ extension: ".js",
57
+ line,
58
+ column,
59
+ lineEnd,
60
+ columnEnd,
61
+ })
62
+ const [inlineScriptReference] = referenceUtils.foundInline({
63
+ type: "script_src",
64
+ expectedType: { classic: "js_classic", module: "js_module" }[
65
+ scriptCategory
66
+ ],
67
+ isOriginalPosition: isOriginal,
68
+ specifierLine: line - 1,
69
+ specifierColumn: column,
70
+ specifier: inlineScriptUrl,
71
+ contentType: "text/javascript",
72
+ content: htmlNodeText,
73
+ })
74
+ removeHtmlNodeText(node)
75
+ scriptsToSupervise.push({
76
+ node,
77
+ isInline: true,
78
+ type: scriptCategory,
79
+ src: inlineScriptReference.generatedSpecifier,
80
+ })
81
+ }
82
+ const handleScriptWithSrc = (node, src) => {
83
+ const scriptCategory = analyzeScriptNode(node)
84
+ const integrity = getHtmlNodeAttribute(node, "integrity")
85
+ const crossorigin =
86
+ getHtmlNodeAttribute(node, "crossorigin") !== undefined
87
+ const defer = getHtmlNodeAttribute(node, "defer") !== undefined
88
+ const async = getHtmlNodeAttribute(node, "async") !== undefined
89
+ setHtmlNodeAttributes(node, {
90
+ src: undefined,
91
+ })
92
+ scriptsToSupervise.push({
93
+ node,
94
+ type: scriptCategory,
95
+ src,
96
+ defer,
97
+ async,
98
+ integrity,
99
+ crossorigin,
100
+ })
101
+ }
102
+ visitHtmlNodes(htmlAst, {
103
+ script: (node) => {
104
+ const scriptCategory = analyzeScriptNode(node)
105
+ if (scriptCategory !== "classic" && scriptCategory !== "module") {
106
+ return
107
+ }
108
+ const injectedBy = getHtmlNodeAttribute(node, "injected-by")
109
+ if (injectedBy !== undefined) {
110
+ return
111
+ }
112
+ const noHtmlSupervisor = getHtmlNodeAttribute(
113
+ node,
114
+ "no-html-supervisor",
115
+ )
116
+ if (noHtmlSupervisor !== undefined) {
117
+ return
118
+ }
119
+ const htmlNodeText = getHtmlNodeText(node)
120
+ if (htmlNodeText) {
121
+ handleInlineScript(node, htmlNodeText)
122
+ return
123
+ }
124
+ const src = getHtmlNodeAttribute(node, "src")
125
+ if (src) {
126
+ handleScriptWithSrc(node, src)
127
+ return
128
+ }
129
+ },
130
+ })
131
+ const [htmlSupervisorInstallerFileReference] = referenceUtils.inject({
132
+ type: "js_import_export",
133
+ expectedType: "js_module",
134
+ specifier: htmlSupervisorInstallerFileUrl,
135
+ })
136
+ injectScriptNodeAsEarlyAsPossible(
137
+ htmlAst,
138
+ createHtmlNode({
139
+ "tagName": "script",
140
+ "type": "module",
141
+ "textContent": `
142
+ import { installHtmlSupervisor } from ${
143
+ htmlSupervisorInstallerFileReference.generatedSpecifier
144
+ }
145
+ installHtmlSupervisor(${JSON.stringify(
146
+ {
147
+ logs,
148
+ measurePerf,
149
+ },
150
+ null,
151
+ " ",
152
+ )})`,
153
+ "injected-by": "jsenv:html_supervisor",
154
+ }),
155
+ )
156
+ const [htmlSupervisorSetupFileReference] = referenceUtils.inject({
157
+ type: "script_src",
158
+ expectedType: "js_classic",
159
+ specifier: htmlSupervisorSetupFileUrl,
160
+ })
161
+ injectScriptNodeAsEarlyAsPossible(
162
+ htmlAst,
163
+ createHtmlNode({
164
+ "tagName": "script",
165
+ "src": htmlSupervisorSetupFileReference.generatedSpecifier,
166
+ "injected-by": "jsenv:html_supervisor",
167
+ }),
168
+ )
169
+ scriptsToSupervise.forEach(
170
+ ({
171
+ node,
172
+ isInline,
173
+ type,
174
+ src,
175
+ defer,
176
+ async,
177
+ integrity,
178
+ crossorigin,
179
+ }) => {
180
+ setHtmlNodeText(
181
+ node,
182
+ generateCodeToSuperviseScript({
183
+ type,
184
+ src,
185
+ isInline,
186
+ defer,
187
+ async,
188
+ integrity,
189
+ crossorigin,
190
+ htmlSupervisorInstallerSpecifier:
191
+ htmlSupervisorInstallerFileReference.generatedSpecifier,
192
+ }),
193
+ )
194
+ setHtmlNodeAttributes(node, {
195
+ "generated-by": "jsenv:html_supervisor",
196
+ ...(src ? { "generated-from-src": src } : {}),
197
+ ...(isInline ? { "generated-from-inline-content": "" } : {}),
198
+ })
199
+ },
200
+ )
201
+ const htmlModified = stringifyHtmlAst(htmlAst)
202
+ return {
203
+ content: htmlModified,
204
+ }
205
+ },
206
+ },
207
+ }
208
+ }
209
+
210
+ // Ideally jsenv should take into account eventual
211
+ // "integrity" and "crossorigin" attribute during supervision
212
+ const generateCodeToSuperviseScript = ({
213
+ type,
214
+ src,
215
+ isInline,
216
+ defer,
217
+ async,
218
+ integrity,
219
+ crossorigin,
220
+ htmlSupervisorInstallerSpecifier,
221
+ }) => {
222
+ const paramsAsJson = JSON.stringify({
223
+ src,
224
+ isInline,
225
+ defer,
226
+ async,
227
+ integrity,
228
+ crossorigin,
229
+ })
230
+ if (type === "module") {
231
+ return `
232
+ import { superviseScriptTypeModule } from ${htmlSupervisorInstallerSpecifier}
233
+ superviseScriptTypeModule(${paramsAsJson})
234
+ `
235
+ }
236
+ return `
237
+ window.__html_supervisor__.superviseScript(${paramsAsJson})
238
+ `
239
+ }
@@ -0,0 +1,16 @@
1
+ export const jsenvPluginHttpUrls = () => {
2
+ return {
3
+ name: "jsenv:http_urls",
4
+ appliesDuring: "*",
5
+ redirectUrl: (reference) => {
6
+ if (
7
+ reference.url.startsWith("http:") ||
8
+ reference.url.startsWith("https:")
9
+ ) {
10
+ reference.shouldHandle = false
11
+ }
12
+ // TODO: according to some pattern matching jsenv could be allowed
13
+ // to fetch and transform http urls
14
+ },
15
+ }
16
+ }
@@ -16,13 +16,12 @@ export const babelPluginMetadataImportMetaHot = () => {
16
16
  }
17
17
  }
18
18
  const collectImportMetaProperties = (programPath) => {
19
- let importMetaHotDetected = false
19
+ const importMetaHotPaths = []
20
20
  let hotDecline = false
21
21
  let hotAcceptSelf = false
22
22
  let hotAcceptDependencies = []
23
23
  programPath.traverse({
24
24
  MemberExpression(path) {
25
- if (importMetaHotDetected) return
26
25
  const { node } = path
27
26
  const { object } = node
28
27
  if (object.type !== "MetaProperty") {
@@ -35,7 +34,7 @@ const collectImportMetaProperties = (programPath) => {
35
34
  const { property } = node
36
35
  const { name } = property
37
36
  if (name === "hot") {
38
- importMetaHotDetected = true
37
+ importMetaHotPaths.push(path)
39
38
  }
40
39
  },
41
40
  CallExpression(path) {
@@ -64,7 +63,7 @@ const collectImportMetaProperties = (programPath) => {
64
63
  )
65
64
  }
66
65
  return {
67
- specifierPath: firstArgPath.get(index),
66
+ specifierPath: firstArgPath.get(String(index)),
68
67
  }
69
68
  })
70
69
  return
@@ -79,7 +78,7 @@ const collectImportMetaProperties = (programPath) => {
79
78
  },
80
79
  })
81
80
  return {
82
- importMetaHotDetected,
81
+ importMetaHotPaths,
83
82
  hotDecline,
84
83
  hotAcceptSelf,
85
84
  hotAcceptDependencies,
@@ -40,7 +40,9 @@ export const createImportMetaHot = (importMetaUrl) => {
40
40
  })
41
41
  return
42
42
  }
43
- throw new Error(`invalid call to hot.accept()`)
43
+ throw new Error(
44
+ `invalid call to import.meta.hot.accept(), received ${firstArg}`,
45
+ )
44
46
  },
45
47
  dispose: (callback) => {
46
48
  addUrlMeta(url, {
@@ -1,8 +1,4 @@
1
- import {
2
- getHtmlNodeAttributeByName,
3
- parseLinkNode,
4
- } from "@jsenv/utils/html_ast/html_ast.js"
5
- import { htmlAttributeSrcSet } from "@jsenv/utils/html_ast/html_attribute_src_set.js"
1
+ import { getHtmlNodeAttribute, analyzeLinkNode, parseSrcSet } from "@jsenv/ast"
6
2
 
7
3
  // Some "smart" default applied to decide what should hot reload / fullreload:
8
4
  // By default:
@@ -28,8 +24,7 @@ export const collectHotDataFromHtmlAst = (htmlAst) => {
28
24
  }
29
25
 
30
26
  const visitUrlSpecifierAttribute = ({ node, attributeName, hotAccepted }) => {
31
- const attribute = getHtmlNodeAttributeByName(node, attributeName)
32
- const value = attribute ? attribute.value : undefined
27
+ const value = getHtmlNodeAttribute(node, attributeName)
33
28
  if (value) {
34
29
  onSpecifier({
35
30
  specifier: value,
@@ -53,7 +48,7 @@ export const collectHotDataFromHtmlAst = (htmlAst) => {
53
48
  })
54
49
  visitUrlSpecifierAttribute({
55
50
  node,
56
- attributeName: "content-href",
51
+ attributeName: "generated-from-href",
57
52
  hotAccepted,
58
53
  })
59
54
  }
@@ -65,15 +60,14 @@ export const collectHotDataFromHtmlAst = (htmlAst) => {
65
60
  })
66
61
  visitUrlSpecifierAttribute({
67
62
  node,
68
- attributeName: "content-src",
63
+ attributeName: "generated-from-src",
69
64
  hotAccepted,
70
65
  })
71
66
  }
72
67
  if (nodeNamesWithSrcset.includes(node.nodeName)) {
73
- const srcsetAttribute = getHtmlNodeAttributeByName(node, "srcset")
74
- const srcset = srcsetAttribute ? srcsetAttribute.value : undefined
68
+ const srcset = getHtmlNodeAttribute(node, "srcset")
75
69
  if (srcset) {
76
- const srcCandidates = htmlAttributeSrcSet.parse(srcset)
70
+ const srcCandidates = parseSrcSet(srcset)
77
71
  srcCandidates.forEach((srcCandidate) => {
78
72
  onSpecifier({
79
73
  node,
@@ -103,7 +97,7 @@ export const collectHotDataFromHtmlAst = (htmlAst) => {
103
97
  }
104
98
  iterate(htmlAst, {})
105
99
 
106
- return { hotReferences }
100
+ return hotReferences
107
101
  }
108
102
 
109
103
  const nodeNamesWithHref = ["link", "a", "image", "use"]
@@ -112,12 +106,12 @@ const nodeNamesWithSrcset = ["img", "source"]
112
106
 
113
107
  const getNodeContext = (node) => {
114
108
  const context = {}
115
- const hotAcceptAttribute = getHtmlNodeAttributeByName(node, "hot-accept")
116
- if (hotAcceptAttribute) {
109
+ const hotAccept = getHtmlNodeAttribute(node, "hot-accept")
110
+ if (hotAccept !== undefined) {
117
111
  context.hotAccepted = true
118
112
  }
119
- const hotDeclineAttribute = getHtmlNodeAttributeByName(node, "hot-decline")
120
- if (hotDeclineAttribute) {
113
+ const hotDecline = getHtmlNodeAttribute(node, "hot-decline")
114
+ if (hotDecline !== undefined) {
121
115
  context.hotAccepted = false
122
116
  }
123
117
  return context
@@ -125,7 +119,7 @@ const getNodeContext = (node) => {
125
119
 
126
120
  const htmlNodeCanHotReload = (node) => {
127
121
  if (node.nodeName === "link") {
128
- const { isStylesheet, isRessourceHint } = parseLinkNode(node)
122
+ const { isStylesheet, isRessourceHint, rel } = analyzeLinkNode(node)
129
123
  if (isStylesheet) {
130
124
  // stylesheets can be hot replaced by default
131
125
  return true
@@ -135,6 +129,9 @@ const htmlNodeCanHotReload = (node) => {
135
129
  // but we won't do anything (if the ressource is deleted we should?)
136
130
  return true
137
131
  }
132
+ if (rel === "icon") {
133
+ return true
134
+ }
138
135
  return false
139
136
  }
140
137
  return [
@@ -0,0 +1,100 @@
1
+ import { createMagicSource } from "@jsenv/sourcemap"
2
+ import { parseHtmlString, applyBabelPlugins } from "@jsenv/ast"
3
+
4
+ import { collectHotDataFromHtmlAst } from "./html_hot_dependencies.js"
5
+ import { babelPluginMetadataImportMetaHot } from "./babel_plugin_metadata_import_meta_hot.js"
6
+
7
+ export const jsenvPluginImportMetaHot = () => {
8
+ const importMetaHotClientFileUrl = new URL(
9
+ "./client/import_meta_hot.js",
10
+ import.meta.url,
11
+ ).href
12
+
13
+ return {
14
+ name: "jsenv:import_meta_hot",
15
+ appliesDuring: "*",
16
+ transformUrlContent: {
17
+ html: (htmlUrlInfo, context) => {
18
+ // during build we don't really care to parse html hot dependencies
19
+ if (context.scenario === "build") {
20
+ return
21
+ }
22
+ const htmlAst = parseHtmlString(htmlUrlInfo.content)
23
+ const hotReferences = collectHotDataFromHtmlAst(htmlAst)
24
+ htmlUrlInfo.data.hotDecline = false
25
+ htmlUrlInfo.data.hotAcceptSelf = false
26
+ htmlUrlInfo.data.hotAcceptDependencies = hotReferences.map(
27
+ ({ type, specifier }) => {
28
+ const [reference] = context.referenceUtils.found({
29
+ type,
30
+ specifier,
31
+ })
32
+ return reference.url
33
+ },
34
+ )
35
+ },
36
+ css: (cssUrlInfo) => {
37
+ cssUrlInfo.data.hotDecline = false
38
+ cssUrlInfo.data.hotAcceptSelf = false
39
+ cssUrlInfo.data.hotAcceptDependencies = []
40
+ },
41
+ js_module: async (urlInfo, context) => {
42
+ if (!urlInfo.content.includes("import.meta.hot")) {
43
+ return null
44
+ }
45
+ const { metadata } = await applyBabelPlugins({
46
+ babelPlugins: [babelPluginMetadataImportMetaHot],
47
+ urlInfo,
48
+ })
49
+ const {
50
+ importMetaHotPaths,
51
+ hotDecline,
52
+ hotAcceptSelf,
53
+ hotAcceptDependencies,
54
+ } = metadata
55
+ urlInfo.data.hotDecline = hotDecline
56
+ urlInfo.data.hotAcceptSelf = hotAcceptSelf
57
+ urlInfo.data.hotAcceptDependencies = hotAcceptDependencies
58
+ if (importMetaHotPaths.length === 0) {
59
+ return null
60
+ }
61
+ if (context.scenario === "build") {
62
+ return removeImportMetaHots(urlInfo, importMetaHotPaths)
63
+ }
64
+ return injectImportMetaHot(urlInfo, context, importMetaHotClientFileUrl)
65
+ },
66
+ },
67
+ }
68
+ }
69
+
70
+ const removeImportMetaHots = (urlInfo, importMetaHotPaths) => {
71
+ const magicSource = createMagicSource(urlInfo.content)
72
+ importMetaHotPaths.forEach((path) => {
73
+ magicSource.replace({
74
+ start: path.node.start,
75
+ end: path.node.end,
76
+ replacement: "undefined",
77
+ })
78
+ })
79
+ return magicSource.toContentAndSourcemap()
80
+ }
81
+
82
+ // For some reason using magic source here produce
83
+ // better sourcemap than doing the equivalent with babel
84
+ // I suspect it's because I was doing injectAstAfterImport(programPath, ast.program.body[0])
85
+ // which is likely not well supported by babel
86
+ const injectImportMetaHot = (urlInfo, context, importMetaHotClientFileUrl) => {
87
+ const [importMetaHotClientFileReference] = context.referenceUtils.inject({
88
+ parentUrl: urlInfo.url,
89
+ type: "js_import_export",
90
+ expectedType: "js_module",
91
+ specifier: importMetaHotClientFileUrl,
92
+ })
93
+ const magicSource = createMagicSource(urlInfo.content)
94
+ magicSource.prepend(
95
+ `import { createImportMetaHot } from ${importMetaHotClientFileReference.generatedSpecifier}
96
+ import.meta.hot = createImportMetaHot(import.meta.url)
97
+ `,
98
+ )
99
+ return magicSource.toContentAndSourcemap()
100
+ }
@@ -9,21 +9,25 @@
9
9
  * - replaced by undefined (import.meta.dev but it's build; the goal is to ensure it's tree-shaked)
10
10
  */
11
11
 
12
- import { applyBabelPlugins } from "@jsenv/utils/js_ast/apply_babel_plugins.js"
13
- import { createMagicSource } from "@jsenv/utils/sourcemap/magic_source.js"
14
-
15
- import { collectProgramImportMetas } from "@jsenv/utils/js_ast/program_import_metas.js"
12
+ import { createMagicSource } from "@jsenv/sourcemap"
13
+ import { applyBabelPlugins } from "@jsenv/ast"
16
14
 
17
15
  export const jsenvPluginImportMetaScenarios = () => {
18
16
  return {
19
17
  name: "jsenv:import_meta_scenario",
20
18
  appliesDuring: "*",
21
- transform: {
22
- js_module: async ({ url, content }, { scenario }) => {
19
+ transformUrlContent: {
20
+ js_module: async (urlInfo, { scenario }) => {
21
+ if (
22
+ !urlInfo.content.includes("import.meta.dev") &&
23
+ !urlInfo.content.includes("import.meta.test") &&
24
+ !urlInfo.content.includes("import.meta.build")
25
+ ) {
26
+ return null
27
+ }
23
28
  const { metadata } = await applyBabelPlugins({
24
29
  babelPlugins: [babelPluginMetadataImportMetaScenarios],
25
- url,
26
- content,
30
+ urlInfo,
27
31
  })
28
32
  const { dev = [], test = [], build = [] } = metadata.importMetaScenarios
29
33
  const replacements = []
@@ -59,7 +63,7 @@ export const jsenvPluginImportMetaScenarios = () => {
59
63
  replace(path, "true")
60
64
  })
61
65
  }
62
- const magicSource = createMagicSource(content)
66
+ const magicSource = createMagicSource(urlInfo.content)
63
67
  replacements.forEach(({ path, value }) => {
64
68
  magicSource.replace({
65
69
  start: path.node.start,
@@ -78,7 +82,28 @@ const babelPluginMetadataImportMetaScenarios = () => {
78
82
  name: "metadata-import-meta-scenarios",
79
83
  visitor: {
80
84
  Program(programPath, state) {
81
- const importMetas = collectProgramImportMetas(programPath)
85
+ const importMetas = {}
86
+ programPath.traverse({
87
+ MemberExpression(path) {
88
+ const { node } = path
89
+ const { object } = node
90
+ if (object.type !== "MetaProperty") {
91
+ return
92
+ }
93
+ const { property: objectProperty } = object
94
+ if (objectProperty.name !== "meta") {
95
+ return
96
+ }
97
+ const { property } = node
98
+ const { name } = property
99
+ const importMetaPaths = importMetas[name]
100
+ if (importMetaPaths) {
101
+ importMetaPaths.push(path)
102
+ } else {
103
+ importMetas[name] = [path]
104
+ }
105
+ },
106
+ })
82
107
  state.file.metadata.importMetaScenarios = {
83
108
  dev: importMetas.dev,
84
109
  test: importMetas.test,
@@ -0,0 +1,52 @@
1
+ const getCurrentScriptSrc = () => {
2
+ const { currentScript } = document
3
+ if (currentScript) return currentScript.src
4
+
5
+ // https://github.com/amiller-gh/currentScript-polyfill
6
+
7
+ const scripts = Array.prototype.slice.call(
8
+ document.getElementsByTagName("script"),
9
+ )
10
+
11
+ const readyScript = scripts.find((script) => {
12
+ return script.readyState === "interactive"
13
+ })
14
+ if (readyScript) return readyScript
15
+
16
+ try {
17
+ throw new Error()
18
+ } catch (err) {
19
+ // Find the second match for the "at" string to get file src url from stack.
20
+ // Specifically works with the format of stack traces in IE.
21
+ const stackDetails = /.*at [^(]*\((.*):(.+):(.+)\)$/gi.exec(err.stack)
22
+ const scriptLocation = (stackDetails || [false])[1]
23
+ const line = (stackDetails || [false])[2]
24
+ const currentLocation = document.location.href.replace(
25
+ document.location.hash,
26
+ "",
27
+ )
28
+
29
+ if (scriptLocation === currentLocation) {
30
+ const source = document.documentElement.outerHTML
31
+ const codeRegExp = new RegExp(
32
+ `(?:[^\\n]+?\\n){0,${
33
+ line - 2
34
+ }}[^<]*<script>([\\d\\D]*?)<\\/script>[\\d\\D]*`,
35
+ "i",
36
+ )
37
+ const code = source.replace(codeRegExp, "$1").trim()
38
+
39
+ return scripts.find((script) => {
40
+ return script.innerHTML && script.innerHTML.trim() === code
41
+ })
42
+ }
43
+
44
+ return scripts.find((script) => {
45
+ return script.src === scriptLocation
46
+ })
47
+ }
48
+ }
49
+
50
+ const url = getCurrentScriptSrc()
51
+
52
+ export default url
@@ -0,0 +1,9 @@
1
+ /* global __filename */
2
+
3
+ const filenameContainsBackSlashes = __filename.indexOf("\\") > -1
4
+
5
+ const url = filenameContainsBackSlashes
6
+ ? `file:///${__filename.replace(/\\/g, "/")}`
7
+ : `file://${__filename}`
8
+
9
+ export default url