@jsenv/core 27.0.0-alpha.8 → 27.0.0-alpha.80

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 (253) 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/arrayLikeToArray/arrayLikeToArray.js +9 -0
  5. package/dist/babel_helpers/arrayWithHoles/arrayWithHoles.js +4 -0
  6. package/dist/babel_helpers/arrayWithoutHoles/arrayWithoutHoles.js +5 -0
  7. package/dist/babel_helpers/assertThisInitialized/assertThisInitialized.js +8 -0
  8. package/dist/babel_helpers/asyncGeneratorDelegate/asyncGeneratorDelegate.js +52 -0
  9. package/dist/babel_helpers/asyncIterator/asyncIterator.js +78 -0
  10. package/dist/babel_helpers/asyncToGenerator/asyncToGenerator.js +39 -0
  11. package/dist/babel_helpers/awaitAsyncGenerator/awaitAsyncGenerator.js +4 -0
  12. package/dist/babel_helpers/classApplyDescriptorDestructureSet/classApplyDescriptorDestructureSet.js +24 -0
  13. package/dist/babel_helpers/classApplyDescriptorGet/classApplyDescriptorGet.js +7 -0
  14. package/dist/babel_helpers/classApplyDescriptorSet/classApplyDescriptorSet.js +14 -0
  15. package/dist/babel_helpers/classCallCheck/classCallCheck.js +5 -0
  16. package/dist/babel_helpers/classCheckPrivateStaticAccess/classCheckPrivateStaticAccess.js +5 -0
  17. package/dist/babel_helpers/classCheckPrivateStaticFieldDescriptor/classCheckPrivateStaticFieldDescriptor.js +6 -0
  18. package/dist/babel_helpers/classExtractFieldDescriptor/classExtractFieldDescriptor.js +8 -0
  19. package/dist/babel_helpers/classNameTDZError/classNameTDZError.js +4 -0
  20. package/dist/babel_helpers/classPrivateFieldDestructureSet/classPrivateFieldDestructureSet.js +6 -0
  21. package/dist/babel_helpers/classPrivateFieldGet/classPrivateFieldGet.js +6 -0
  22. package/dist/babel_helpers/classPrivateFieldLooseBase/classPrivateFieldLooseBase.js +7 -0
  23. package/dist/babel_helpers/classPrivateFieldLooseKey/classPrivateFieldLooseKey.js +5 -0
  24. package/dist/babel_helpers/classPrivateFieldSet/classPrivateFieldSet.js +7 -0
  25. package/dist/babel_helpers/classPrivateMethodGet/classPrivateMethodGet.js +7 -0
  26. package/dist/babel_helpers/classPrivateMethodSet/classPrivateMethodSet.js +3 -0
  27. package/dist/babel_helpers/classStaticPrivateFieldSpecGet/classStaticPrivateFieldSpecGet.js +8 -0
  28. package/dist/babel_helpers/classStaticPrivateFieldSpecSet/classStaticPrivateFieldSpecSet.js +9 -0
  29. package/dist/babel_helpers/classStaticPrivateMethodGet/classStaticPrivateMethodGet.js +5 -0
  30. package/dist/babel_helpers/classStaticPrivateMethodSet/classStaticPrivateMethodSet.js +3 -0
  31. package/dist/babel_helpers/construct/construct.js +15 -0
  32. package/dist/babel_helpers/createClass/createClass.js +18 -0
  33. package/dist/babel_helpers/createForOfIteratorHelper/createForOfIteratorHelper.js +63 -0
  34. package/dist/babel_helpers/createForOfIteratorHelperLoose/createForOfIteratorHelperLoose.js +22 -0
  35. package/dist/babel_helpers/createRawReactElement/createRawReactElement.js +50 -0
  36. package/dist/babel_helpers/createSuper/createSuper.js +22 -0
  37. package/dist/babel_helpers/decorate/decorate.js +622 -0
  38. package/dist/babel_helpers/defaults/defaults.js +14 -0
  39. package/dist/babel_helpers/defineEnumerableProperties/defineEnumerableProperties.js +26 -0
  40. package/dist/babel_helpers/defineProperty/defineProperty.js +19 -0
  41. package/dist/babel_helpers/extends/extends.js +16 -0
  42. package/dist/babel_helpers/get/get.js +21 -0
  43. package/dist/babel_helpers/getPrototypeOf/getPrototypeOf.js +2 -0
  44. package/dist/babel_helpers/inherits/inherits.js +21 -0
  45. package/dist/babel_helpers/inheritsLoose/inheritsLoose.js +6 -0
  46. package/dist/babel_helpers/initializerDefineProperty/initializerDefineProperty.js +10 -0
  47. package/dist/babel_helpers/initializerWarningHelper/initializerWarningHelper.js +3 -0
  48. package/dist/babel_helpers/instanceof/instanceof.js +7 -0
  49. package/dist/babel_helpers/interopRequireDefault/interopRequireDefault.js +5 -0
  50. package/dist/babel_helpers/interopRequireWildcard/interopRequireWildcard.js +49 -0
  51. package/dist/babel_helpers/isNativeFunction/isNativeFunction.js +4 -0
  52. package/dist/babel_helpers/isNativeReflectConstruct/isNativeReflectConstruct.js +21 -0
  53. package/dist/babel_helpers/iterableToArray/iterableToArray.js +3 -0
  54. package/dist/babel_helpers/iterableToArrayLimit/iterableToArrayLimit.js +38 -0
  55. package/dist/babel_helpers/iterableToArrayLimitLoose/iterableToArrayLimitLoose.js +13 -0
  56. package/dist/babel_helpers/jsx/jsx.js +49 -0
  57. package/dist/babel_helpers/maybeArrayLike/maybeArrayLike.js +10 -0
  58. package/dist/babel_helpers/newArrowCheck/newArrowCheck.js +5 -0
  59. package/dist/babel_helpers/nonIterableRest/nonIterableRest.js +3 -0
  60. package/dist/babel_helpers/nonIterableSpread/nonIterableSpread.js +3 -0
  61. package/dist/babel_helpers/objectDestructuringEmpty/objectDestructuringEmpty.js +3 -0
  62. package/dist/babel_helpers/objectSpread/objectSpread.js +22 -0
  63. package/dist/babel_helpers/objectSpread2/objectSpread2.js +41 -0
  64. package/dist/babel_helpers/objectWithoutProperties/objectWithoutProperties.js +20 -0
  65. package/dist/babel_helpers/objectWithoutPropertiesLoose/objectWithoutPropertiesLoose.js +15 -0
  66. package/dist/babel_helpers/possibleConstructorReturn/possibleConstructorReturn.js +10 -0
  67. package/dist/babel_helpers/readOnlyError/readOnlyError.js +4 -0
  68. package/dist/babel_helpers/readme.md +8 -0
  69. package/dist/babel_helpers/set/set.js +51 -0
  70. package/dist/babel_helpers/setPrototypeOf/setPrototypeOf.js +5 -0
  71. package/dist/babel_helpers/skipFirstGeneratorNext/skipFirstGeneratorNext.js +8 -0
  72. package/dist/babel_helpers/slicedToArray/slicedToArray.js +5 -0
  73. package/dist/babel_helpers/slicedToArrayLoose/slicedToArrayLoose.js +7 -0
  74. package/dist/babel_helpers/superPropBase/superPropBase.js +10 -0
  75. package/dist/babel_helpers/taggedTemplateLiteral/taggedTemplateLiteral.js +11 -0
  76. package/dist/babel_helpers/taggedTemplateLiteralLoose/taggedTemplateLiteralLoose.js +8 -0
  77. package/dist/babel_helpers/tdz/tdz.js +4 -0
  78. package/dist/babel_helpers/temporalRef/temporalRef.js +5 -0
  79. package/dist/babel_helpers/temporalUndefined/temporalUndefined.js +3 -0
  80. package/dist/babel_helpers/toArray/toArray.js +5 -0
  81. package/dist/babel_helpers/toConsumableArray/toConsumableArray.js +5 -0
  82. package/dist/babel_helpers/toPrimitive/toPrimitive.js +14 -0
  83. package/dist/babel_helpers/toPropertyKey/toPropertyKey.js +5 -0
  84. package/dist/babel_helpers/typeof/typeof.js +7 -0
  85. package/dist/babel_helpers/unsupportedIterableToArray/unsupportedIterableToArray.js +10 -0
  86. package/dist/babel_helpers/wrapAsyncGenerator/wrapAsyncGenerator.js +7 -0
  87. package/dist/babel_helpers/wrapNativeSuper/wrapNativeSuper.js +35 -0
  88. package/dist/babel_helpers/wrapRegExp/wrapRegExp.js +67 -0
  89. package/dist/babel_helpers/writeOnlyError/writeOnlyError.js +4 -0
  90. package/dist/html/explorer.html +557 -0
  91. package/dist/js/controllable_file.mjs +227 -0
  92. package/dist/js/event_source_client.js +324 -0
  93. package/dist/js/global_this.js +32 -0
  94. package/dist/js/html_supervisor_installer.js +522 -0
  95. package/dist/js/html_supervisor_setup.js +82 -0
  96. package/dist/js/import_meta_hot.js +84 -0
  97. package/dist/js/inline_content.js +8 -0
  98. package/dist/js/new_stylesheet.js +409 -0
  99. package/dist/js/regenerator_runtime.js +721 -0
  100. package/dist/js/s.js +429 -0
  101. package/dist/main.js +13418 -0
  102. package/dist/other/jsenv.png +0 -0
  103. package/dist/s.js +626 -0
  104. package/dist/s.js.map +204 -0
  105. package/package.json +55 -48
  106. package/readme.md +6 -14
  107. package/src/build/build.js +1074 -563
  108. package/src/build/build_urls_generator.js +65 -24
  109. package/src/build/graph_utils.js +31 -0
  110. package/src/build/{inject_version_mappings.js → inject_global_version_mappings.js} +49 -18
  111. package/src/build/inject_service_worker_urls.js +79 -0
  112. package/src/build/resync_ressource_hints.js +115 -0
  113. package/src/build/start_build_server.js +210 -0
  114. package/src/dev/plugins/explorer/client/explorer.html +1 -1
  115. package/src/dev/plugins/explorer/jsenv_plugin_explorer.js +9 -13
  116. package/src/dev/plugins/toolbar/jsenv_plugin_toolbar.js +3 -1
  117. package/src/dev/start_dev_server.js +165 -38
  118. package/src/execute/execute.js +35 -8
  119. package/src/execute/run.js +21 -57
  120. package/src/execute/runtimes/browsers/from_playwright.js +220 -150
  121. package/src/execute/runtimes/node/child_exec_options.js +1 -1
  122. package/src/execute/runtimes/node/controllable_file.mjs +26 -10
  123. package/src/execute/runtimes/node/kill_process_tree.js +2 -4
  124. package/src/execute/runtimes/node/node_execution_performance.js +67 -0
  125. package/src/execute/runtimes/node/node_process.js +288 -39
  126. package/src/main.js +27 -0
  127. package/src/omega/{runtime_support/features_compatibility.js → compat/features_compats.js} +30 -7
  128. package/src/omega/{runtime_support/runtime_support.js → compat/runtime_compat.js} +14 -16
  129. package/src/omega/errors.js +63 -67
  130. package/src/omega/fetched_content_compliance.js +24 -0
  131. package/src/omega/file_url_converter.js +9 -51
  132. package/src/omega/kitchen.js +605 -467
  133. package/src/omega/omega_server.js +2 -3
  134. package/src/omega/server/file_service.js +88 -41
  135. package/src/omega/server/user_agent.js +5 -6
  136. package/src/omega/url_graph/url_graph_load.js +31 -23
  137. package/src/omega/url_graph/url_graph_report.js +94 -51
  138. package/src/omega/url_graph/url_info_transformations.js +37 -17
  139. package/src/omega/url_graph.js +88 -19
  140. package/src/omega/url_specifier_encoding.js +59 -0
  141. package/src/omega/web_workers.js +42 -0
  142. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/autoreload_preference.js +0 -0
  143. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/event_source_client.js +19 -12
  144. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/reload.js +0 -0
  145. package/src/{dev/plugins/autoreload → plugins/autoreload/dev_sse}/client/url_helpers.js +0 -0
  146. package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_client.js +41 -0
  147. package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_server.js +204 -0
  148. package/src/plugins/autoreload/jsenv_plugin_autoreload.js +25 -0
  149. package/src/plugins/autoreload/jsenv_plugin_hmr.js +35 -0
  150. package/src/plugins/bundling/css/bundle_css.js +140 -0
  151. package/src/plugins/bundling/js_classic_workers/bundle_js_classic_workers.js +13 -0
  152. package/src/plugins/bundling/js_module/bundle_js_module.js +343 -0
  153. package/src/plugins/bundling/jsenv_plugin_bundling.js +54 -0
  154. package/src/plugins/cache_control/jsenv_plugin_cache_control.js +34 -0
  155. package/src/{omega/core_plugins → plugins}/commonjs_globals/jsenv_plugin_commonjs_globals.js +54 -41
  156. package/src/plugins/file_urls/jsenv_plugin_file_urls.js +183 -0
  157. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_document.js +0 -0
  158. package/src/{omega/core_plugins → plugins}/html_supervisor/client/error_in_notification.js +0 -0
  159. package/src/plugins/html_supervisor/client/html_supervisor_installer.js +254 -0
  160. package/src/plugins/html_supervisor/client/html_supervisor_setup.js +82 -0
  161. package/src/{omega/core_plugins → plugins}/html_supervisor/client/perf_browser.js +0 -0
  162. package/src/{omega/core_plugins → plugins}/html_supervisor/client/uneval_exception.js +0 -0
  163. package/src/{omega/core_plugins → plugins}/html_supervisor/jsenv_plugin_html_supervisor.js +73 -55
  164. package/src/plugins/http_urls/jsenv_plugin_http_urls.js +12 -0
  165. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/babel_plugin_metadata_import_meta_hot.js +4 -5
  166. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/client/import_meta_hot.js +3 -1
  167. package/src/{dev/plugins/autoreload → plugins/import_meta_hot}/html_hot_dependencies.js +7 -4
  168. package/src/plugins/import_meta_hot/jsenv_plugin_import_meta_hot.js +100 -0
  169. package/src/{omega/core_plugins → plugins}/import_meta_scenarios/jsenv_plugin_import_meta_scenarios.js +33 -8
  170. package/src/plugins/import_meta_url/client/import_meta_url_browser.js +52 -0
  171. package/src/plugins/import_meta_url/client/import_meta_url_commonjs.mjs +9 -0
  172. package/src/{omega/core_plugins → plugins}/importmap/jsenv_plugin_importmap.js +40 -36
  173. package/src/plugins/inject_globals/inject_globals.js +57 -0
  174. package/src/plugins/inject_globals/jsenv_plugin_inject_globals.js +24 -0
  175. package/src/{omega/core_plugins → plugins}/inline/client/inline_content.js +0 -0
  176. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_data_urls.js +22 -21
  177. package/src/plugins/inline/jsenv_plugin_html_inline_content.js +161 -0
  178. package/src/plugins/inline/jsenv_plugin_inline.js +36 -0
  179. package/src/{omega/core_plugins → plugins}/inline/jsenv_plugin_inline_query_param.js +8 -11
  180. package/src/plugins/inline/jsenv_plugin_js_inline_content.js +294 -0
  181. package/src/plugins/leading_slash/jsenv_plugin_leading_slash.js +13 -0
  182. package/src/plugins/minification/css/minify_css.js +9 -0
  183. package/src/plugins/minification/html/minify_html.js +13 -0
  184. package/src/{build/plugins/minify_js/jsenv_plugin_minify_js.js → plugins/minification/js/minify_js.js} +6 -22
  185. package/src/plugins/minification/jsenv_plugin_minification.js +78 -0
  186. package/src/plugins/minification/json/minify_json.js +8 -0
  187. package/src/plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +162 -0
  188. package/src/plugins/node_runtime/jsenv_plugin_node_runtime.js +12 -0
  189. package/src/{omega → plugins}/plugin_controller.js +57 -12
  190. package/src/plugins/plugins.js +89 -0
  191. package/src/plugins/transpilation/as_js_classic/client/s.js +429 -0
  192. package/src/plugins/transpilation/as_js_classic/helpers/babel_plugin_transform_import_meta_url.js +47 -0
  193. package/src/plugins/transpilation/as_js_classic/helpers/systemjs_old.js +43 -0
  194. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic.js +211 -0
  195. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic_html.js +304 -0
  196. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic_workers.js +55 -0
  197. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/babel_plugin_global_this_as_jsenv_import.js +0 -0
  198. package/src/{omega/core_plugins → plugins/transpilation}/babel/global_this/client/global_this.js +0 -0
  199. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_babel_helpers_as_jsenv_imports.js +0 -0
  200. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugin_structure.js +14 -17
  201. package/src/{omega/core_plugins → plugins/transpilation}/babel/helpers/babel_plugins_compatibility.js +0 -0
  202. package/src/{omega/core_plugins → plugins/transpilation}/babel/jsenv_plugin_babel.js +39 -32
  203. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/babel_plugin_new_stylesheet_as_jsenv_import.js +30 -6
  204. package/src/{omega/core_plugins → plugins/transpilation}/babel/new_stylesheet/client/new_stylesheet.js +0 -0
  205. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/babel_plugin_regenerator_runtime_as_jsenv_import.js +0 -0
  206. package/src/{omega/core_plugins → plugins/transpilation}/babel/regenerator_runtime/client/regenerator_runtime.js +0 -0
  207. package/src/plugins/transpilation/babel/require_babel_plugin.js +8 -0
  208. package/src/plugins/transpilation/css_parcel/jsenv_plugin_css_parcel.js +18 -0
  209. package/src/plugins/transpilation/import_assertions/jsenv_plugin_import_assertions.js +184 -0
  210. package/src/plugins/transpilation/jsenv_plugin_top_level_await.js +79 -0
  211. package/src/plugins/transpilation/jsenv_plugin_transpilation.js +46 -0
  212. package/src/plugins/url_analysis/css/css_urls.js +49 -0
  213. package/src/plugins/url_analysis/html/html_urls.js +272 -0
  214. package/src/plugins/url_analysis/js/js_urls.js +68 -0
  215. package/src/plugins/url_analysis/jsenv_plugin_url_analysis.js +103 -0
  216. package/src/plugins/url_analysis/webmanifest/webmanifest_urls.js +20 -0
  217. package/src/{omega/core_plugins → plugins}/url_resolution/jsenv_plugin_url_resolution.js +9 -5
  218. package/src/plugins/url_version/jsenv_plugin_url_version.js +28 -0
  219. package/src/require_from_jsenv.js +3 -0
  220. package/src/test/execute_plan.js +85 -44
  221. package/src/test/execute_test_plan.js +37 -25
  222. package/src/test/execution_steps.js +2 -5
  223. package/src/test/logs_file_execution.js +56 -49
  224. package/main.js +0 -19
  225. package/src/build/plugins/bundle_js_module/jsenv_plugin_bundle_js_module.js +0 -227
  226. package/src/build/plugins/minify_html/jsenv_plugin_minify_html.js +0 -30
  227. package/src/dev/plugins/autoreload/client/event_source_connection.js +0 -195
  228. package/src/dev/plugins/autoreload/jsenv_plugin_autoreload.js +0 -374
  229. package/src/dev/plugins/autoreload/sse_service.js +0 -149
  230. package/src/execute/runtimes/node/controlled_process.js +0 -316
  231. package/src/omega/core_plugins/babel/new_stylesheet/client/.eslintrc.cjs +0 -24
  232. package/src/omega/core_plugins/file_urls/jsenv_plugin_file_urls.js +0 -67
  233. package/src/omega/core_plugins/filesystem_magic/jsenv_plugin_filesystem_magic.js +0 -58
  234. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_installer.js +0 -168
  235. package/src/omega/core_plugins/html_supervisor/client/html_supervisor_setup.js +0 -77
  236. package/src/omega/core_plugins/import_assertions/helpers/babel_plugin_metadata_import_assertions.js +0 -98
  237. package/src/omega/core_plugins/import_assertions/helpers/json_module.js +0 -12
  238. package/src/omega/core_plugins/import_assertions/helpers/text_module.js +0 -6
  239. package/src/omega/core_plugins/import_assertions/jsenv_plugin_import_assertions.js +0 -211
  240. package/src/omega/core_plugins/inline/jsenv_plugin_inline.js +0 -13
  241. package/src/omega/core_plugins/inline/jsenv_plugin_js_and_css_inside_html.js +0 -142
  242. package/src/omega/core_plugins/inline/jsenv_plugin_new_inline_content.js +0 -207
  243. package/src/omega/core_plugins/leading_slash/jsenv_plugin_leading_slash.js +0 -12
  244. package/src/omega/core_plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +0 -77
  245. package/src/omega/core_plugins/url_version/jsenv_plugin_url_version.js +0 -50
  246. package/src/omega/core_plugins.js +0 -39
  247. package/src/omega/runtime_support/default_runtime_support.js +0 -13
  248. package/src/omega/url_graph/url_graph_sort.js +0 -29
  249. package/src/omega/url_mentions/css_url_mentions.js +0 -63
  250. package/src/omega/url_mentions/html_url_mentions.js +0 -185
  251. package/src/omega/url_mentions/js_module_url_mentions.js +0 -91
  252. package/src/omega/url_mentions/parse_url_mentions.js +0 -37
  253. package/src/omega/url_mentions/worker_classic_url_mentions.js +0 -37
@@ -0,0 +1,522 @@
1
+ import { uneval } from "@jsenv/uneval";
2
+
3
+ const unevalException = value => {
4
+ if (value && value.hasOwnProperty("toString")) {
5
+ delete value.toString;
6
+ }
7
+
8
+ return uneval(value, {
9
+ ignoreSymbols: true
10
+ });
11
+ };
12
+
13
+ const displayErrorInDocument = error => {
14
+ const title = "An error occured";
15
+ let theme = error && error.cause && error.cause.code === "PARSE_ERROR" ? "light" : "dark";
16
+ let message = errorToHTML(error);
17
+ const css = `
18
+ .jsenv-console {
19
+ background: rgba(0, 0, 0, 0.95);
20
+ position: absolute;
21
+ top: 0;
22
+ left: 0;
23
+ width: 100%;
24
+ height: 100%;
25
+ display: flex;
26
+ flex-direction: column;
27
+ align-items: center;
28
+ z-index: 1000;
29
+ box-sizing: border-box;
30
+ padding: 1em;
31
+ }
32
+
33
+ .jsenv-console h1 {
34
+ color: red;
35
+ display: flex;
36
+ align-items: center;
37
+ }
38
+
39
+ #button-close-jsenv-console {
40
+ margin-left: 10px;
41
+ }
42
+
43
+ .jsenv-console pre {
44
+ overflow: auto;
45
+ max-width: 70em;
46
+ /* avoid scrollbar to hide the text behind it */
47
+ padding: 20px;
48
+ }
49
+
50
+ .jsenv-console pre[data-theme="dark"] {
51
+ background: #111;
52
+ border: 1px solid #333;
53
+ color: #eee;
54
+ }
55
+
56
+ .jsenv-console pre[data-theme="light"] {
57
+ background: #1E1E1E;
58
+ border: 1px solid white;
59
+ color: #EEEEEE;
60
+ }
61
+
62
+ .jsenv-console pre a {
63
+ color: inherit;
64
+ }
65
+ `;
66
+ const html = `
67
+ <style type="text/css">${css}></style>
68
+ <div class="jsenv-console">
69
+ <h1>${title} <button id="button-close-jsenv-console">X</button></h1>
70
+ <pre data-theme="${theme}">${message}</pre>
71
+ </div>
72
+ `;
73
+ const removeJsenvConsole = appendHMTLInside(html, document.body);
74
+
75
+ document.querySelector("#button-close-jsenv-console").onclick = () => {
76
+ removeJsenvConsole();
77
+ };
78
+ };
79
+
80
+ const escapeHtml = string => {
81
+ return string.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;");
82
+ };
83
+
84
+ const errorToHTML = error => {
85
+ let html;
86
+
87
+ if (error && error instanceof Error) {
88
+ if (error.cause && error.cause.code === "PARSE_ERROR") {
89
+ html = error.messageHTML || escapeHtml(error.message);
90
+ } // stackTrace formatted by V8
91
+ else if (Error.captureStackTrace) {
92
+ html = escapeHtml(error.stack);
93
+ } else {
94
+ // other stack trace such as firefox do not contain error.message
95
+ html = escapeHtml(`${error.message}
96
+ ${error.stack}`);
97
+ }
98
+ } else if (typeof error === "string") {
99
+ html = error;
100
+ } else if (error === undefined) {
101
+ html = "undefined";
102
+ } else {
103
+ html = JSON.stringify(error);
104
+ }
105
+
106
+ const htmlWithCorrectLineBreaks = html.replace(/\n/g, "\n");
107
+ const htmlWithLinks = stringToStringWithLink(htmlWithCorrectLineBreaks, {
108
+ transform: url => {
109
+ return {
110
+ href: url,
111
+ text: url
112
+ };
113
+ }
114
+ });
115
+ return htmlWithLinks;
116
+ }; // `Error: yo
117
+ // at Object.execute (http://127.0.0.1:57300/build/src/__test__/file-throw.js:9:13)
118
+ // at doExec (http://127.0.0.1:3000/src/__test__/file-throw.js:452:38)
119
+ // at postOrderExec (http://127.0.0.1:3000/src/__test__/file-throw.js:448:16)
120
+ // at http://127.0.0.1:3000/src/__test__/file-throw.js:399:18`.replace(/(?:https?|ftp|file):\/\/(.*+)$/gm, (...args) => {
121
+ // debugger
122
+ // })
123
+
124
+
125
+ const stringToStringWithLink = (source, {
126
+ transform = url => {
127
+ return {
128
+ href: url,
129
+ text: url
130
+ };
131
+ }
132
+ } = {}) => {
133
+ return source.replace(/(?:https?|ftp|file):\/\/\S+/gm, match => {
134
+ let linkHTML = "";
135
+ const lastChar = match[match.length - 1]; // hotfix because our url regex sucks a bit
136
+
137
+ const endsWithSeparationChar = lastChar === ")" || lastChar === ":";
138
+
139
+ if (endsWithSeparationChar) {
140
+ match = match.slice(0, -1);
141
+ }
142
+
143
+ const lineAndColumnPattern = /:([0-9]+):([0-9]+)$/;
144
+ const lineAndColumMatch = match.match(lineAndColumnPattern);
145
+
146
+ if (lineAndColumMatch) {
147
+ const lineAndColumnString = lineAndColumMatch[0];
148
+ const lineNumber = lineAndColumMatch[1];
149
+ const columnNumber = lineAndColumMatch[2];
150
+ const url = match.slice(0, -lineAndColumnString.length);
151
+ const {
152
+ href,
153
+ text
154
+ } = transform(url);
155
+ linkHTML = link({
156
+ href,
157
+ text: `${text}:${lineNumber}:${columnNumber}`
158
+ });
159
+ } else {
160
+ const linePattern = /:([0-9]+)$/;
161
+ const lineMatch = match.match(linePattern);
162
+
163
+ if (lineMatch) {
164
+ const lineString = lineMatch[0];
165
+ const lineNumber = lineMatch[1];
166
+ const url = match.slice(0, -lineString.length);
167
+ const {
168
+ href,
169
+ text
170
+ } = transform(url);
171
+ linkHTML = link({
172
+ href,
173
+ text: `${text}:${lineNumber}`
174
+ });
175
+ } else {
176
+ const url = match;
177
+ const {
178
+ href,
179
+ text
180
+ } = transform(url);
181
+ linkHTML = link({
182
+ href,
183
+ text
184
+ });
185
+ }
186
+ }
187
+
188
+ if (endsWithSeparationChar) {
189
+ return `${linkHTML}${lastChar}`;
190
+ }
191
+
192
+ return linkHTML;
193
+ });
194
+ };
195
+
196
+ const link = ({
197
+ href,
198
+ text = href
199
+ }) => `<a href="${href}">${text}</a>`;
200
+
201
+ const appendHMTLInside = (html, parentNode) => {
202
+ const temoraryParent = document.createElement("div");
203
+ temoraryParent.innerHTML = html;
204
+ return transferChildren(temoraryParent, parentNode);
205
+ };
206
+
207
+ const transferChildren = (fromNode, toNode) => {
208
+ const childNodes = [].slice.call(fromNode.childNodes, 0);
209
+ let i = 0;
210
+
211
+ while (i < childNodes.length) {
212
+ toNode.appendChild(childNodes[i]);
213
+ i++;
214
+ }
215
+
216
+ return () => {
217
+ let c = 0;
218
+
219
+ while (c < childNodes.length) {
220
+ fromNode.appendChild(childNodes[c]);
221
+ c++;
222
+ }
223
+ };
224
+ };
225
+
226
+ const {
227
+ Notification
228
+ } = window;
229
+
230
+ const displayErrorNotificationNotAvailable = () => {};
231
+
232
+ const displayErrorNotificationImplementation = (error, {
233
+ icon
234
+ } = {}) => {
235
+ if (Notification.permission === "granted") {
236
+ const notification = new Notification("An error occured", {
237
+ lang: "en",
238
+ body: error ? error.stack : "undefined",
239
+ icon
240
+ });
241
+
242
+ notification.onclick = () => {
243
+ window.focus();
244
+ };
245
+ }
246
+ };
247
+
248
+ const displayErrorNotification = typeof Notification === "function" ? displayErrorNotificationImplementation : displayErrorNotificationNotAvailable;
249
+
250
+ const {
251
+ __html_supervisor__
252
+ } = window;
253
+ const installHtmlSupervisor = ({
254
+ logs,
255
+ measurePerf
256
+ }) => {
257
+
258
+ const scriptExecutionResults = {};
259
+ let collectCalled = false;
260
+ let pendingExecutionCount = 0;
261
+ let resolveScriptExecutionsPromise;
262
+ const scriptExecutionsPromise = new Promise(resolve => {
263
+ resolveScriptExecutionsPromise = resolve;
264
+ });
265
+
266
+ const onExecutionStart = name => {
267
+ scriptExecutionResults[name] = null; // ensure execution order is reflected into the object
268
+
269
+ pendingExecutionCount++;
270
+
271
+ if (measurePerf) {
272
+ performance.mark(`execution_start`);
273
+ }
274
+ };
275
+
276
+ const onExecutionSettled = (name, executionResult) => {
277
+ if (measurePerf) {
278
+ performance.measure(`execution`, `execution_start`);
279
+ }
280
+
281
+ scriptExecutionResults[name] = executionResult;
282
+ pendingExecutionCount--;
283
+
284
+ if (pendingExecutionCount === 0 && collectCalled) {
285
+ resolveScriptExecutionsPromise();
286
+ }
287
+ };
288
+
289
+ const onExecutionError = (executionResult, {
290
+ currentScript,
291
+ errorExposureInNotification = false,
292
+ errorExposureInDocument = true
293
+ }) => {
294
+ const error = executionResult.error;
295
+
296
+ if (error && error.code === "NETWORK_FAILURE") {
297
+ if (currentScript) {
298
+ const errorEvent = new Event("error");
299
+ currentScript.dispatchEvent(errorEvent);
300
+ }
301
+ } else if (typeof error === "object") {
302
+ const globalErrorEvent = new Event("error");
303
+ globalErrorEvent.filename = error.filename;
304
+ globalErrorEvent.lineno = error.line || error.lineno;
305
+ globalErrorEvent.colno = error.column || error.columnno;
306
+ globalErrorEvent.message = error.message;
307
+ window.dispatchEvent(globalErrorEvent);
308
+ }
309
+
310
+ if (errorExposureInNotification) {
311
+ displayErrorNotification(error);
312
+ }
313
+
314
+ if (errorExposureInDocument) {
315
+ displayErrorInDocument(error);
316
+ }
317
+
318
+ executionResult.exceptionSource = unevalException(error);
319
+ delete executionResult.error;
320
+ };
321
+
322
+ const getNavigationStartTime = () => {
323
+ try {
324
+ return window.performance.timing.navigationStart;
325
+ } catch (e) {
326
+ return Date.now();
327
+ }
328
+ };
329
+
330
+ const performExecution = async ({
331
+ src,
332
+ type,
333
+ currentScript,
334
+ execute // https://developer.mozilla.org/en-US/docs/web/html/element/script
335
+
336
+ }) => {
337
+ if (logs) {
338
+ console.group(`[jsenv] loading ${type} ${src}`);
339
+ }
340
+
341
+ onExecutionStart(src);
342
+ let completed;
343
+ let result;
344
+ let error;
345
+
346
+ try {
347
+ result = await execute();
348
+ completed = true;
349
+ } catch (e) {
350
+ completed = false;
351
+ error = e;
352
+ }
353
+
354
+ if (completed) {
355
+ const executionResult = {
356
+ status: "completed",
357
+ namespace: result,
358
+ coverage: window.__coverage__
359
+ };
360
+ onExecutionSettled(src, executionResult);
361
+
362
+ if (logs) {
363
+ console.log(`${type} load ended`);
364
+ console.groupEnd();
365
+ }
366
+
367
+ return;
368
+ }
369
+
370
+ const executionResult = {
371
+ status: "errored",
372
+ coverage: window.__coverage__
373
+ };
374
+
375
+ if (error.name === "SyntaxError") ;
376
+
377
+ executionResult.error = error;
378
+ onExecutionSettled(src, executionResult);
379
+ onExecutionError(executionResult, {
380
+ currentScript
381
+ });
382
+
383
+ {
384
+ if (typeof window.reportError === "function") {
385
+ window.reportError(error);
386
+ } else {
387
+ console.error(error);
388
+ }
389
+ }
390
+
391
+ if (logs) {
392
+ console.groupEnd();
393
+ }
394
+ };
395
+
396
+ const classicExecutionQueue = createExecutionQueue(performExecution);
397
+ const deferedExecutionQueue = createExecutionQueue(performExecution);
398
+ deferedExecutionQueue.waitFor(new Promise(resolve => {
399
+ if (document.readyState === "interactive" || document.readyState === "complete") {
400
+ resolve();
401
+ } else {
402
+ document.addEventListener("readystatechange", () => {
403
+ if (document.readyState === "interactive") {
404
+ resolve();
405
+ }
406
+ });
407
+ }
408
+ }));
409
+
410
+ __html_supervisor__.addScriptToExecute = async scriptToExecute => {
411
+ if (scriptToExecute.async) {
412
+ performExecution(scriptToExecute);
413
+ return;
414
+ }
415
+
416
+ const useDeferQueue = scriptToExecute.defer || scriptToExecute.type === "js_module";
417
+
418
+ if (useDeferQueue) {
419
+ // defer must wait for classic script to be done
420
+ const classicExecutionPromise = classicExecutionQueue.getPromise();
421
+
422
+ if (classicExecutionPromise) {
423
+ deferedExecutionQueue.waitFor(classicExecutionPromise);
424
+ }
425
+
426
+ deferedExecutionQueue.executeAsap(scriptToExecute);
427
+ } else {
428
+ classicExecutionQueue.executeAsap(scriptToExecute);
429
+ }
430
+ };
431
+
432
+ __html_supervisor__.collectScriptResults = async () => {
433
+ collectCalled = true;
434
+
435
+ if (pendingExecutionCount === 0) {
436
+ resolveScriptExecutionsPromise();
437
+ } else {
438
+ await scriptExecutionsPromise;
439
+ }
440
+
441
+ let status = "completed";
442
+ let exceptionSource = "";
443
+ Object.keys(scriptExecutionResults).forEach(key => {
444
+ const scriptExecutionResult = scriptExecutionResults[key];
445
+
446
+ if (scriptExecutionResult.status === "errored") {
447
+ status = "errored";
448
+ exceptionSource = scriptExecutionResult.exceptionSource;
449
+ }
450
+ });
451
+ return {
452
+ status,
453
+ ...(status === "errored" ? {
454
+ exceptionSource
455
+ } : {}),
456
+ startTime: getNavigationStartTime(),
457
+ endTime: Date.now(),
458
+ scriptExecutionResults
459
+ };
460
+ };
461
+
462
+ const {
463
+ scriptsToExecute
464
+ } = __html_supervisor__;
465
+ const copy = scriptsToExecute.slice();
466
+ scriptsToExecute.length = 0;
467
+ copy.forEach(scriptToExecute => {
468
+ __html_supervisor__.addScriptToExecute(scriptToExecute);
469
+ });
470
+ };
471
+ const superviseScriptTypeModule = ({
472
+ src,
473
+ isInline
474
+ }) => {
475
+ __html_supervisor__.addScriptToExecute({
476
+ src,
477
+ type: "js_module",
478
+ isInline,
479
+ execute: () => import(new URL(src, document.location.href).href)
480
+ });
481
+ };
482
+
483
+ const createExecutionQueue = execute => {
484
+ const scripts = [];
485
+ let promiseToWait = null;
486
+
487
+ const waitFor = async promise => {
488
+ promiseToWait = promise;
489
+ promiseToWait.then(() => {
490
+ promiseToWait = null;
491
+ dequeue();
492
+ }, () => {
493
+ promiseToWait = null;
494
+ dequeue();
495
+ });
496
+ };
497
+
498
+ const executeAsap = async script => {
499
+ if (promiseToWait) {
500
+ scripts.push(script);
501
+ return;
502
+ }
503
+
504
+ waitFor(execute(script));
505
+ };
506
+
507
+ const dequeue = () => {
508
+ const scriptWaiting = scripts.shift();
509
+
510
+ if (scriptWaiting) {
511
+ __html_supervisor__.addScriptToExecute(scriptWaiting);
512
+ }
513
+ };
514
+
515
+ return {
516
+ waitFor,
517
+ executeAsap,
518
+ getPromise: () => promiseToWait
519
+ };
520
+ };
521
+
522
+ export { installHtmlSupervisor, superviseScriptTypeModule };
@@ -0,0 +1,82 @@
1
+ window.__html_supervisor__ = {
2
+ // "html_supervisor_installer.js" will implement
3
+ // - "addScriptToExecute"
4
+ // - "superviseScriptTypeModule"
5
+ // - "collectScriptResults"
6
+ // and take all executions in "scriptsToExecute" and implement their supervision
7
+ scriptsToExecute: [],
8
+ addScriptToExecute: (scriptToExecute) => {
9
+ window.__html_supervisor__.scriptsToExecute.push(scriptToExecute)
10
+ },
11
+ superviseScript: ({ src, isInline, crossorigin, integrity }) => {
12
+ window.__html_supervisor__.addScriptToExecute({
13
+ src,
14
+ type: "js_classic",
15
+ isInline,
16
+ currentScript: document.currentScript,
17
+ execute: () => {
18
+ return new Promise((resolve, reject) => {
19
+ const script = document.createElement("script")
20
+ if (crossorigin) {
21
+ script.crossorigin = crossorigin
22
+ }
23
+ if (integrity) {
24
+ script.integrity = integrity
25
+ }
26
+ script.src = src
27
+ const scriptUrl = new URL(src, window.location).href
28
+ let lastWindowErrorUrl
29
+ let lastWindowError
30
+ const windowErrorCallback = (e) => {
31
+ lastWindowErrorUrl = e.filename
32
+ lastWindowError = e.error
33
+ }
34
+ const cleanup = () => {
35
+ // the execution of the script itself can remove script from the page
36
+ if (script.parentNode) {
37
+ script.parentNode.removeChild(script)
38
+ }
39
+ window.removeEventListener("error", windowErrorCallback)
40
+ }
41
+ window.addEventListener("error", windowErrorCallback)
42
+ script.addEventListener("error", () => {
43
+ cleanup()
44
+ reject(src)
45
+ })
46
+ script.addEventListener("load", () => {
47
+ cleanup()
48
+ if (lastWindowErrorUrl === scriptUrl) {
49
+ reject(lastWindowError)
50
+ } else {
51
+ resolve()
52
+ }
53
+ })
54
+ document.body.appendChild(script)
55
+ })
56
+ },
57
+ })
58
+ },
59
+ superviseScriptTypeModule: () => {
60
+ throw new Error("htmlSupervisor not installed")
61
+ },
62
+ getScriptExecutionResults: () => {
63
+ // wait for page to load before collecting script execution results
64
+ const htmlReadyPromise = new Promise((resolve) => {
65
+ if (document.readyState === "complete") {
66
+ resolve()
67
+ return
68
+ }
69
+ const loadCallback = () => {
70
+ window.removeEventListener("load", loadCallback)
71
+ resolve()
72
+ }
73
+ window.addEventListener("load", loadCallback)
74
+ })
75
+ return htmlReadyPromise.then(() => {
76
+ return window.__html_supervisor__.collectScriptResults()
77
+ })
78
+ },
79
+ collectScriptResults: () => {
80
+ throw new Error("htmlSupervisor not installed")
81
+ },
82
+ }
@@ -0,0 +1,84 @@
1
+ /*
2
+ * https://vitejs.dev/guide/api-hmr.html#hot-accept-deps-cb
3
+ * https://modern-web.dev/docs/dev-server/plugins/hmr/
4
+ */
5
+ const urlHotMetas = {};
6
+ const createImportMetaHot = importMetaUrl => {
7
+ const data = {};
8
+ const url = asUrlWithoutHmrQuery(importMetaUrl);
9
+ return {
10
+ data,
11
+ accept: (firstArg, secondArg) => {
12
+ if (!firstArg) {
13
+ addUrlMeta(url, {
14
+ dependencies: [url],
15
+ acceptCallback: () => {}
16
+ });
17
+ return;
18
+ }
19
+
20
+ if (typeof firstArg === "function") {
21
+ addUrlMeta(url, {
22
+ dependencies: [url],
23
+ acceptCallback: firstArg
24
+ });
25
+ return;
26
+ }
27
+
28
+ if (typeof firstArg === "string") {
29
+ addUrlMeta(url, {
30
+ dependencies: [firstArg],
31
+ acceptCallback: secondArg
32
+ });
33
+ return;
34
+ }
35
+
36
+ if (Array.isArray(firstArg)) {
37
+ addUrlMeta(url, {
38
+ dependencies: firstArg,
39
+ acceptCallback: secondArg
40
+ });
41
+ return;
42
+ }
43
+
44
+ throw new Error(`invalid call to import.meta.hot.accept(), received ${firstArg}`);
45
+ },
46
+ dispose: callback => {
47
+ addUrlMeta(url, {
48
+ disposeCallback: () => {
49
+ return callback(data);
50
+ }
51
+ });
52
+ },
53
+ decline: () => {
54
+ addUrlMeta(url, {
55
+ declined: true
56
+ });
57
+ },
58
+ invalidate: () => {
59
+ addUrlMeta(url, {
60
+ invalidated: true
61
+ });
62
+ }
63
+ };
64
+ };
65
+
66
+ const addUrlMeta = (url, meta) => {
67
+ urlHotMetas[url] = { ...urlHotMetas[url],
68
+ ...meta
69
+ };
70
+ };
71
+
72
+ const asUrlWithoutHmrQuery = url => {
73
+ const urlObject = new URL(url);
74
+
75
+ if (urlObject.searchParams.has("hmr")) {
76
+ urlObject.searchParams.delete("hmr");
77
+ urlObject.searchParams.delete("v");
78
+ return urlObject.href;
79
+ }
80
+
81
+ return url;
82
+ };
83
+
84
+ export { createImportMetaHot, urlHotMetas };
@@ -0,0 +1,8 @@
1
+ function InlineContent(content, {
2
+ type = "text/plain"
3
+ }) {
4
+ this.text = content;
5
+ this.type = type;
6
+ }
7
+
8
+ export { InlineContent };