@jsenv/core 25.3.0 → 25.4.0

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 (105) hide show
  1. package/dist/browser_runtime/asset-manifest.json +2 -2
  2. package/dist/browser_runtime/{browser_runtime_91c5a3b8.js → browser_runtime_0e3396a1.js} +15 -16
  3. package/dist/browser_runtime/{browser_runtime_91c5a3b8.js.map → browser_runtime_0e3396a1.js.map} +13 -13
  4. package/dist/build_manifest.js +5 -5
  5. package/dist/compile_proxy/asset-manifest.json +2 -2
  6. package/dist/compile_proxy/compile_proxy.html__inline__20_2334a374.js.map +342 -0
  7. package/dist/compile_proxy/{compile_proxy_8dfaee51.html → compile_proxy_9f737eaf.html} +357 -398
  8. package/dist/redirector/asset-manifest.json +2 -2
  9. package/dist/redirector/redirector.html__inline__12_009c47c7.js.map +348 -0
  10. package/dist/redirector/{redirector_3e9a97b9.html → redirector_96f74871.html} +378 -421
  11. package/dist/toolbar/asset-manifest.json +2 -2
  12. package/dist/toolbar/{toolbar.main_6c1b3d82.js.map → toolbar.main_86335f90.js.map} +82 -115
  13. package/dist/toolbar/{toolbar_361afb84.html → toolbar_d3a918a4.html} +487 -508
  14. package/dist/toolbar_injector/asset-manifest.json +2 -2
  15. package/dist/toolbar_injector/toolbar_injector_978bbd14.js +267 -0
  16. package/dist/toolbar_injector/toolbar_injector_978bbd14.js.map +119 -0
  17. package/package.json +12 -11
  18. package/src/buildProject.js +31 -26
  19. package/src/dev_server.js +76 -87
  20. package/src/execute.js +3 -8
  21. package/src/internal/browser_launcher/{browser_runtime_report.js → browser_runtime_profile.js} +21 -15
  22. package/src/internal/browser_launcher/executeHtmlFile.js +22 -14
  23. package/src/internal/browser_launcher/from_playwright.js +6 -4
  24. package/src/internal/browser_runtime/browser_runtime.js +12 -14
  25. package/src/internal/browser_runtime/createBrowserRuntime.js +7 -6
  26. package/src/internal/browser_utils/fetchAndEvalUsingFetch.js +1 -1
  27. package/src/internal/browser_utils/fetchJson.js +1 -1
  28. package/src/internal/browser_utils/{fetch-browser.js → fetch_browser.js} +0 -2
  29. package/src/internal/building/buildUsingRollup.js +41 -57
  30. package/src/internal/building/rollup_plugin_jsenv.js +28 -8
  31. package/src/internal/compiling/babel_parse_error.js +9 -0
  32. package/src/internal/{babel_plugin_transform_import_meta.js → compiling/babel_plugin_transform_import_meta.js} +58 -9
  33. package/src/internal/compiling/compileFile.js +2 -2
  34. package/src/internal/compiling/compileHtml.js +1 -1
  35. package/src/internal/compiling/createCompiledFileService.js +25 -74
  36. package/src/internal/compiling/js-compilation-service/transformJs.js +153 -23
  37. package/src/internal/compiling/jsenvCompilerForHtml.js +29 -32
  38. package/src/internal/compiling/jsenvCompilerForImportmap.js +2 -2
  39. package/src/internal/compiling/jsenvCompilerForJavaScript.js +2 -4
  40. package/src/internal/compiling/jsenv_directory/comparison_utils.js +24 -0
  41. package/src/internal/compiling/{compile-directory/compile-asset.js → jsenv_directory/compile_asset.js} +0 -0
  42. package/src/internal/compiling/jsenv_directory/compile_context.js +68 -0
  43. package/src/internal/compiling/jsenv_directory/compile_profile.js +218 -0
  44. package/src/internal/compiling/{compile-directory/createLockRegistry.js → jsenv_directory/file_lock_registry.js} +0 -0
  45. package/src/internal/compiling/{compile-directory/createLockRegistry.test.js → jsenv_directory/file_lock_registry.test.js} +2 -1
  46. package/src/internal/compiling/{compile-directory → jsenv_directory}/fs-optimized-for-cache.js +0 -0
  47. package/src/internal/compiling/{compile-directory → jsenv_directory}/getOrGenerateCompiledFile.js +2 -2
  48. package/src/internal/compiling/jsenv_directory/jsenv_directory.js +174 -0
  49. package/src/internal/compiling/{compile-directory → jsenv_directory}/updateMeta.js +1 -1
  50. package/src/internal/compiling/{compile-directory → jsenv_directory}/validateCache.js +0 -0
  51. package/src/internal/compiling/sse_service/sse_service.js +369 -0
  52. package/src/internal/compiling/startCompileServer.js +156 -804
  53. package/src/internal/compiling/transformResultToCompilationResult.js +2 -2
  54. package/src/internal/dev_server/exploring/exploring.js +10 -8
  55. package/src/internal/dev_server/toolbar/compilation/toolbar.compilation.js +85 -78
  56. package/src/internal/dev_server/toolbar/settings/toolbar.settings.js +13 -0
  57. package/src/internal/dev_server/toolbar/toolbar.html +40 -16
  58. package/src/internal/dev_server/toolbar/toolbar.injector.js +11 -17
  59. package/src/internal/dev_server/toolbar/toolbar.main.js +6 -6
  60. package/src/internal/executing/executeConcurrently.js +1 -1
  61. package/src/internal/executing/executePlan.js +2 -3
  62. package/src/internal/{generateGroupMap → features}/babel_plugins_compatibility.js +8 -8
  63. package/src/internal/features/browser_feature_detection/browser_feature_detect_dynamic_import.js +20 -0
  64. package/src/internal/features/browser_feature_detection/browser_feature_detect_import_assertions_css.js +23 -0
  65. package/src/internal/features/browser_feature_detection/browser_feature_detect_import_assertions_json.js +25 -0
  66. package/src/internal/features/browser_feature_detection/browser_feature_detect_importmap.js +37 -0
  67. package/src/internal/features/browser_feature_detection/browser_feature_detect_new_stylesheet.js +9 -0
  68. package/src/internal/features/browser_feature_detection/browser_feature_detect_top_level_await.js +14 -0
  69. package/src/internal/features/browser_feature_detection/browser_feature_detection.js +85 -0
  70. package/src/internal/{browser_feature_detection → features/browser_feature_detection}/compile_proxy.html +1 -1
  71. package/src/internal/features/browser_feature_detection/execute_with_script_module.js +24 -0
  72. package/src/internal/features/features_compat_from_runtime.js +38 -0
  73. package/src/internal/features/features_compat_from_runtime_support.js +31 -0
  74. package/src/internal/{generateGroupMap → features}/features_compatibility.js +3 -3
  75. package/src/internal/{node_feature_detection → features/node_feature_detection}/feature_detect_dynamic_import.mjs +0 -0
  76. package/src/internal/{node_feature_detection → features/node_feature_detection}/feature_detect_top_level_await.mjs +0 -0
  77. package/src/internal/{node_feature_detection/nodeSupportsDynamicImport.js → features/node_feature_detection/node_feature_detect_dynamic_import.js} +0 -0
  78. package/src/internal/{node_feature_detection/nodeSupportsTopLevelAwait.js → features/node_feature_detection/node_feature_detect_top_level_await.js} +0 -0
  79. package/src/internal/features/node_feature_detection/node_feature_detection.js +66 -0
  80. package/src/internal/node_launcher/createControllableNodeProcess.js +4 -3
  81. package/src/internal/node_launcher/node_runtime_report.js +15 -9
  82. package/src/internal/node_runtime/fetchSource.js +2 -4
  83. package/src/internal/node_runtime/node_execution_systemjs.js +2 -5
  84. package/src/internal/{dev_server/redirector → redirector}/redirector.html +8 -18
  85. package/src/internal/{generateGroupMap/jsenvRuntimeSupport.js → runtime_support/jsenv_runtime_support.js} +0 -0
  86. package/src/internal/{generateGroupMap → runtime_support}/runtime_support.js +0 -0
  87. package/src/internal/url_conversion.js +12 -17
  88. package/src/launchNode.js +29 -41
  89. package/dist/compile_proxy/compile_proxy.html__inline__20_809f35f7.js.map +0 -392
  90. package/dist/redirector/redirector.html__inline__15_e391410e.js.map +0 -397
  91. package/dist/toolbar_injector/toolbar_injector_fac1e995.js +0 -973
  92. package/dist/toolbar_injector/toolbar_injector_fac1e995.js.map +0 -294
  93. package/src/internal/CONSTANTS.js +0 -11
  94. package/src/internal/browser_feature_detection/browser_feature_detection.js +0 -274
  95. package/src/internal/compiling/js-compilation-service/jsenvTransform.js +0 -242
  96. package/src/internal/generateGroupMap/generateGroupMap.js +0 -65
  97. package/src/internal/generateGroupMap/one_runtime_compat.js +0 -38
  98. package/src/internal/generateGroupMap/runtime_compat.js +0 -34
  99. package/src/internal/generateGroupMap/runtime_compat_composition.js +0 -76
  100. package/src/internal/generateGroupMap/shake_babel_plugin_map.js +0 -21
  101. package/src/internal/node_feature_detection/node_feature_detection.js +0 -117
  102. package/src/internal/node_runtime/detectNode.js +0 -3
  103. package/src/internal/runtime/computeCompileIdFromGroupId.js +0 -30
  104. package/src/internal/runtime/resolveGroup.js +0 -13
  105. package/src/internal/runtime/resolveRuntimeGroup.js +0 -11
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "assets/jsenv-logo.svg": "assets/jsenv-logo_188b9ca6.svg",
3
- "toolbar_injector.js": "toolbar_injector_fac1e995.js",
4
- "toolbar_injector.js.map": "toolbar_injector_fac1e995.js.map"
3
+ "toolbar_injector.js": "toolbar_injector_978bbd14.js",
4
+ "toolbar_injector.js.map": "toolbar_injector_978bbd14.js.map"
5
5
  }
@@ -0,0 +1,267 @@
1
+ (function () {
2
+ 'use strict';
3
+
4
+ var nativeTypeOf = function nativeTypeOf(obj) {
5
+ return typeof obj;
6
+ };
7
+
8
+ var customTypeOf = function customTypeOf(obj) {
9
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
10
+ };
11
+
12
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? nativeTypeOf : customTypeOf;
13
+
14
+ var setStyles = function setStyles(element, styles) {
15
+ var elementStyle = element.style;
16
+ var restoreStyles = Object.keys(styles).map(function (styleName) {
17
+ var restore;
18
+
19
+ if (styleName in elementStyle) {
20
+ var currentStyle = elementStyle[styleName];
21
+
22
+ restore = function restore() {
23
+ elementStyle[styleName] = currentStyle;
24
+ };
25
+ } else {
26
+ restore = function restore() {
27
+ delete elementStyle[styleName];
28
+ };
29
+ }
30
+
31
+ elementStyle[styleName] = styles[styleName];
32
+ return restore;
33
+ });
34
+ return function () {
35
+ restoreStyles.forEach(function (restore) {
36
+ return restore();
37
+ });
38
+ };
39
+ };
40
+ var setAttributes = function setAttributes(element, attributes) {
41
+ Object.keys(attributes).forEach(function (name) {
42
+ element.setAttribute(name, attributes[name]);
43
+ });
44
+ };
45
+
46
+ function _await(value, then, direct) {
47
+ if (direct) {
48
+ return then ? then(value) : value;
49
+ }
50
+
51
+ if (!value || !value.then) {
52
+ value = Promise.resolve(value);
53
+ }
54
+
55
+ return then ? value.then(then) : value;
56
+ }
57
+
58
+ var TOOLBAR_BUILD_RELATIVE_URL = "dist/toolbar/toolbar_d3a918a4.html";
59
+
60
+ function _async(f) {
61
+ return function () {
62
+ for (var args = [], i = 0; i < arguments.length; i++) {
63
+ args[i] = arguments[i];
64
+ }
65
+
66
+ try {
67
+ return Promise.resolve(f.apply(this, args));
68
+ } catch (e) {
69
+ return Promise.reject(e);
70
+ }
71
+ };
72
+ }
73
+
74
+ var jsenvLogoSvgUrl = new URL("assets/jsenv-logo_188b9ca6.svg", document.currentScript && document.currentScript.src || document.baseURI);
75
+
76
+ var injectToolbar = _async(function () {
77
+ return _await(new Promise(function (resolve) {
78
+ if (window.requestIdleCallback) {
79
+ window.requestIdleCallback(resolve, {
80
+ timeout: 400
81
+ });
82
+ } else {
83
+ window.requestAnimationFrame(resolve);
84
+ }
85
+ }), function () {
86
+ var placeholder = getToolbarPlaceholder();
87
+ var iframe = document.createElement("iframe");
88
+ setAttributes(iframe, {
89
+ tabindex: -1,
90
+ // sandbox: "allow-forms allow-modals allow-pointer-lock allow-popups allow-presentation allow-same-origin allow-scripts allow-top-navigation-by-user-activation",
91
+ // allow: "accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; microphone; midi; payment; vr",
92
+ allowtransparency: true
93
+ });
94
+ setStyles(iframe, {
95
+ "position": "fixed",
96
+ "zIndex": 1000,
97
+ "bottom": 0,
98
+ "left": 0,
99
+ "width": "100%",
100
+ "height": 0,
101
+
102
+ /* ensure toolbar children are not focusable when hidden */
103
+ "visibility": "hidden",
104
+ "transition-duration": "300ms",
105
+ "transition-property": "height, visibility",
106
+ "border": "none"
107
+ });
108
+ var iframeLoadedPromise = iframeToLoadedPromise(iframe);
109
+ var jsenvToolbarHtmlServerUrl = "/".concat(TOOLBAR_BUILD_RELATIVE_URL); // set iframe src BEFORE putting it into the DOM (prevent firefox adding an history entry)
110
+
111
+ iframe.setAttribute("src", jsenvToolbarHtmlServerUrl);
112
+ placeholder.parentNode.replaceChild(iframe, placeholder);
113
+ addToolbarEventCallback(iframe, "toolbar_ready", function () {
114
+ sendCommandToToolbar(iframe, "renderToolbar");
115
+ });
116
+ return _await(iframeLoadedPromise, function () {
117
+ iframe.removeAttribute("tabindex");
118
+ var div = document.createElement("div");
119
+ div.innerHTML = "\n<div id=\"jsenv-toolbar-trigger\">\n <svg id=\"jsenv-toolbar-trigger-icon\">\n <use xlink:href=\"".concat(jsenvLogoSvgUrl, "#jsenv-logo\"></use>\n </svg>\n <style>\n #jsenv-toolbar-trigger {\n display: block;\n overflow: hidden;\n position: fixed;\n z-index: 1000;\n bottom: -32px;\n right: 20px;\n height: 40px;\n width: 40px;\n padding: 0;\n margin: 0;\n border-radius: 5px 5px 0 0;\n border: 1px solid rgba(0, 0, 0, 0.33);\n border-bottom: none;\n box-shadow: 0px 0px 6px 2px rgba(0, 0, 0, 0.46);\n background: transparent;\n text-align: center;\n transition: 600ms;\n }\n\n #jsenv-toolbar-trigger:hover {\n cursor: pointer;\n }\n\n #jsenv-toolbar-trigger[data-expanded] {\n bottom: 0;\n }\n\n #jsenv-toolbar-trigger-icon {\n width: 35px;\n height: 35px;\n opacity: 0;\n transition: 600ms;\n }\n\n #jsenv-toolbar-trigger[data-expanded] #jsenv-toolbar-trigger-icon {\n opacity: 1;\n }\n </style>\n</div>");
120
+ var toolbarTrigger = div.firstElementChild;
121
+ iframe.parentNode.appendChild(toolbarTrigger);
122
+ var timer;
123
+
124
+ toolbarTrigger.onmouseenter = function () {
125
+ toolbarTrigger.setAttribute("data-animate", "");
126
+ timer = setTimeout(expandToolbarTrigger, 500);
127
+ };
128
+
129
+ toolbarTrigger.onmouseleave = function () {
130
+ clearTimeout(timer);
131
+ collapseToolbarTrigger();
132
+ };
133
+
134
+ toolbarTrigger.onfocus = function () {
135
+ toolbarTrigger.removeAttribute("data-animate");
136
+ expandToolbarTrigger();
137
+ };
138
+
139
+ toolbarTrigger.onblur = function () {
140
+ toolbarTrigger.removeAttribute("data-animate");
141
+ clearTimeout(timer);
142
+ collapseToolbarTrigger();
143
+ };
144
+
145
+ toolbarTrigger.onclick = function () {
146
+ sendCommandToToolbar(iframe, "showToolbar");
147
+ };
148
+
149
+ var showToolbarTrigger = function showToolbarTrigger() {
150
+ toolbarTrigger.style.display = "block";
151
+ };
152
+
153
+ var hideToolbarTrigger = function hideToolbarTrigger() {
154
+ toolbarTrigger.style.display = "none";
155
+ };
156
+
157
+ var expandToolbarTrigger = function expandToolbarTrigger() {
158
+ toolbarTrigger.setAttribute("data-expanded", "");
159
+ };
160
+
161
+ var collapseToolbarTrigger = function collapseToolbarTrigger() {
162
+ toolbarTrigger.removeAttribute("data-expanded", "");
163
+ };
164
+
165
+ hideToolbarTrigger();
166
+ addToolbarEventCallback(iframe, "toolbar-visibility-change", function (visible) {
167
+ if (visible) {
168
+ hideToolbarTrigger();
169
+ } else {
170
+ showToolbarTrigger();
171
+ }
172
+ });
173
+ return iframe;
174
+ });
175
+ });
176
+ });
177
+
178
+ var addToolbarEventCallback = function addToolbarEventCallback(iframe, eventName, callback) {
179
+ var messageEventCallback = function messageEventCallback(messageEvent) {
180
+ var data = messageEvent.data;
181
+
182
+ if (_typeof(data) !== "object") {
183
+ return;
184
+ }
185
+
186
+ var __jsenv__ = data.__jsenv__;
187
+
188
+ if (!__jsenv__) {
189
+ return;
190
+ }
191
+
192
+ if (__jsenv__.event !== eventName) {
193
+ return;
194
+ }
195
+
196
+ callback(__jsenv__.data);
197
+ };
198
+
199
+ window.addEventListener("message", messageEventCallback, false);
200
+ return function () {
201
+ window.removeEventListener("message", messageEventCallback, false);
202
+ };
203
+ };
204
+
205
+ var sendCommandToToolbar = function sendCommandToToolbar(iframe, command) {
206
+ for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
207
+ args[_key - 2] = arguments[_key];
208
+ }
209
+
210
+ iframe.contentWindow.postMessage({
211
+ __jsenv__: {
212
+ command: command,
213
+ args: args
214
+ }
215
+ }, window.origin);
216
+ };
217
+
218
+ var getToolbarPlaceholder = function getToolbarPlaceholder() {
219
+ var placeholder = queryPlaceholder();
220
+
221
+ if (placeholder) {
222
+ if (document.body.contains(placeholder)) {
223
+ return placeholder;
224
+ } // otherwise iframe would not be visible because in <head>
225
+
226
+
227
+ console.warn("element with [data-jsenv-toolbar-placeholder] must be inside document.body");
228
+ return createTooolbarPlaceholder();
229
+ }
230
+
231
+ return createTooolbarPlaceholder();
232
+ };
233
+
234
+ var queryPlaceholder = function queryPlaceholder() {
235
+ return document.querySelector("[data-jsenv-toolbar-placeholder]");
236
+ };
237
+
238
+ var createTooolbarPlaceholder = function createTooolbarPlaceholder() {
239
+ var placeholder = document.createElement("span");
240
+ document.body.appendChild(placeholder);
241
+ return placeholder;
242
+ };
243
+
244
+ var iframeToLoadedPromise = function iframeToLoadedPromise(iframe) {
245
+ return new Promise(function (resolve) {
246
+ var onload = function onload() {
247
+ iframe.removeEventListener("load", onload, true);
248
+ resolve();
249
+ };
250
+
251
+ iframe.addEventListener("load", onload, true);
252
+ });
253
+ };
254
+
255
+ if (document.readyState === "complete") {
256
+ injectToolbar();
257
+ } else {
258
+ window.addEventListener("load", injectToolbar); // document.addEventListener("readystatechange", () => {
259
+ // if (document.readyState === "complete") {
260
+ // injectToolbar()
261
+ // }
262
+ // })
263
+ }
264
+
265
+ })();
266
+
267
+ //# sourceMappingURL=toolbar_injector_978bbd14.js.map
@@ -0,0 +1,119 @@
1
+ {
2
+ "version": 3,
3
+ "file": "toolbar_injector_978bbd14.js",
4
+ "sources": [
5
+ "../../helpers/babel/typeof/typeof.js",
6
+ "../../src/internal/dev_server/toolbar/util/dom.js",
7
+ "../../src/internal/dev_server/toolbar/toolbar.injector.js"
8
+ ],
9
+ "sourcesContent": [
10
+ "const nativeTypeOf = (obj) => typeof obj\n\nconst customTypeOf = (obj) => {\n return obj &&\n typeof Symbol === \"function\" &&\n obj.constructor === Symbol &&\n obj !== Symbol.prototype\n ? \"symbol\"\n : typeof obj\n}\n\nexport default typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\"\n ? nativeTypeOf\n : customTypeOf\n",
11
+ "export const updateIframeOverflowOnParentWindow = () => {\n if (!window.parent) {\n // can happen while parent iframe reloads\n return\n }\n\n const aTooltipIsOpened =\n document.querySelector(\"[data-tooltip-visible]\") ||\n document.querySelector(\"[data-tooltip-auto-visible]\")\n const settingsAreOpened = document.querySelector(\"#settings[data-active]\")\n\n if (aTooltipIsOpened || settingsAreOpened) {\n enableIframeOverflowOnParentWindow()\n } else {\n disableIframeOverflowOnParentWindow()\n }\n}\n\nlet iframeOverflowEnabled = false\nconst enableIframeOverflowOnParentWindow = () => {\n if (iframeOverflowEnabled) return\n iframeOverflowEnabled = true\n\n const iframe = getToolbarIframe()\n const transitionDuration = iframe.style.transitionDuration\n setStyles(iframe, { \"height\": \"100%\", \"transition-duration\": \"0ms\" })\n if (transitionDuration) {\n setTimeout(() => {\n setStyles(iframe, { \"transition-duration\": transitionDuration })\n })\n }\n}\n\nconst disableIframeOverflowOnParentWindow = () => {\n if (!iframeOverflowEnabled) return\n iframeOverflowEnabled = false\n\n const iframe = getToolbarIframe()\n const transitionDuration = iframe.style.transitionDuration\n setStyles(iframe, { \"height\": \"40px\", \"transition-duration\": \"0ms\" })\n if (transitionDuration) {\n setTimeout(() => {\n setStyles(iframe, { \"transition-duration\": transitionDuration })\n })\n }\n}\n\nexport const getToolbarIframe = () => {\n const iframes = Array.from(window.parent.document.querySelectorAll(\"iframe\"))\n return iframes.find((iframe) => iframe.contentWindow === window)\n}\n\nexport const forceHideElement = (element) => {\n element.setAttribute(\"data-force-hide\", \"\")\n}\n\nexport const removeForceHideElement = (element) => {\n element.removeAttribute(\"data-force-hide\")\n}\n\nexport const setStyles = (element, styles) => {\n const elementStyle = element.style\n const restoreStyles = Object.keys(styles).map((styleName) => {\n let restore\n if (styleName in elementStyle) {\n const currentStyle = elementStyle[styleName]\n restore = () => {\n elementStyle[styleName] = currentStyle\n }\n } else {\n restore = () => {\n delete elementStyle[styleName]\n }\n }\n\n elementStyle[styleName] = styles[styleName]\n\n return restore\n })\n return () => {\n restoreStyles.forEach((restore) => restore())\n }\n}\n\nexport const setAttributes = (element, attributes) => {\n Object.keys(attributes).forEach((name) => {\n element.setAttribute(name, attributes[name])\n })\n}\n\nexport const getDocumentScroll = () => {\n return {\n x: document.documentElement.scrollLeft,\n y: document.documentElement.scrollTop,\n }\n}\n\nexport const toolbarSectionIsActive = (element) => {\n return element.hasAttribute(\"data-active\")\n}\n\nexport const activateToolbarSection = (element) => {\n element.setAttribute(\"data-active\", \"\")\n}\n\nexport const deactivateToolbarSection = (element) => {\n element.removeAttribute(\"data-active\")\n}\n",
12
+ "import { setAttributes, setStyles } from \"./util/dom.js\"\n\n// eslint-disable-next-line no-undef\nconst TOOLBAR_BUILD_RELATIVE_URL = \"dist/toolbar/toolbar_d3a918a4.html\"\nconst jsenvLogoSvgUrl = new URL(\"./jsenv-logo.svg\", import.meta.url)\n\nconst injectToolbar = async () => {\n await new Promise((resolve) => {\n if (window.requestIdleCallback) {\n window.requestIdleCallback(resolve, { timeout: 400 })\n } else {\n window.requestAnimationFrame(resolve)\n }\n })\n\n const placeholder = getToolbarPlaceholder()\n\n const iframe = document.createElement(\"iframe\")\n setAttributes(iframe, {\n tabindex: -1,\n // sandbox: \"allow-forms allow-modals allow-pointer-lock allow-popups allow-presentation allow-same-origin allow-scripts allow-top-navigation-by-user-activation\",\n // allow: \"accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; microphone; midi; payment; vr\",\n allowtransparency: true,\n })\n setStyles(iframe, {\n \"position\": \"fixed\",\n \"zIndex\": 1000,\n \"bottom\": 0,\n \"left\": 0,\n \"width\": \"100%\",\n \"height\": 0,\n /* ensure toolbar children are not focusable when hidden */\n \"visibility\": \"hidden\",\n \"transition-duration\": \"300ms\",\n \"transition-property\": \"height, visibility\",\n \"border\": \"none\",\n })\n const iframeLoadedPromise = iframeToLoadedPromise(iframe)\n const jsenvToolbarHtmlServerUrl = `/${TOOLBAR_BUILD_RELATIVE_URL}`\n // set iframe src BEFORE putting it into the DOM (prevent firefox adding an history entry)\n iframe.setAttribute(\"src\", jsenvToolbarHtmlServerUrl)\n placeholder.parentNode.replaceChild(iframe, placeholder)\n\n addToolbarEventCallback(iframe, \"toolbar_ready\", () => {\n sendCommandToToolbar(iframe, \"renderToolbar\")\n })\n\n await iframeLoadedPromise\n iframe.removeAttribute(\"tabindex\")\n\n const div = document.createElement(\"div\")\n div.innerHTML = `\n<div id=\"jsenv-toolbar-trigger\">\n <svg id=\"jsenv-toolbar-trigger-icon\">\n <use xlink:href=\"${jsenvLogoSvgUrl}#jsenv-logo\"></use>\n </svg>\n <style>\n #jsenv-toolbar-trigger {\n display: block;\n overflow: hidden;\n position: fixed;\n z-index: 1000;\n bottom: -32px;\n right: 20px;\n height: 40px;\n width: 40px;\n padding: 0;\n margin: 0;\n border-radius: 5px 5px 0 0;\n border: 1px solid rgba(0, 0, 0, 0.33);\n border-bottom: none;\n box-shadow: 0px 0px 6px 2px rgba(0, 0, 0, 0.46);\n background: transparent;\n text-align: center;\n transition: 600ms;\n }\n\n #jsenv-toolbar-trigger:hover {\n cursor: pointer;\n }\n\n #jsenv-toolbar-trigger[data-expanded] {\n bottom: 0;\n }\n\n #jsenv-toolbar-trigger-icon {\n width: 35px;\n height: 35px;\n opacity: 0;\n transition: 600ms;\n }\n\n #jsenv-toolbar-trigger[data-expanded] #jsenv-toolbar-trigger-icon {\n opacity: 1;\n }\n </style>\n</div>`\n const toolbarTrigger = div.firstElementChild\n iframe.parentNode.appendChild(toolbarTrigger)\n\n let timer\n toolbarTrigger.onmouseenter = () => {\n toolbarTrigger.setAttribute(\"data-animate\", \"\")\n timer = setTimeout(expandToolbarTrigger, 500)\n }\n toolbarTrigger.onmouseleave = () => {\n clearTimeout(timer)\n collapseToolbarTrigger()\n }\n toolbarTrigger.onfocus = () => {\n toolbarTrigger.removeAttribute(\"data-animate\")\n expandToolbarTrigger()\n }\n toolbarTrigger.onblur = () => {\n toolbarTrigger.removeAttribute(\"data-animate\")\n clearTimeout(timer)\n collapseToolbarTrigger()\n }\n toolbarTrigger.onclick = () => {\n sendCommandToToolbar(iframe, \"showToolbar\")\n }\n\n const showToolbarTrigger = () => {\n toolbarTrigger.style.display = \"block\"\n }\n\n const hideToolbarTrigger = () => {\n toolbarTrigger.style.display = \"none\"\n }\n\n const expandToolbarTrigger = () => {\n toolbarTrigger.setAttribute(\"data-expanded\", \"\")\n }\n\n const collapseToolbarTrigger = () => {\n toolbarTrigger.removeAttribute(\"data-expanded\", \"\")\n }\n\n hideToolbarTrigger()\n addToolbarEventCallback(iframe, \"toolbar-visibility-change\", (visible) => {\n if (visible) {\n hideToolbarTrigger()\n } else {\n showToolbarTrigger()\n }\n })\n\n return iframe\n}\n\nconst addToolbarEventCallback = (iframe, eventName, callback) => {\n const messageEventCallback = (messageEvent) => {\n const { data } = messageEvent\n if (typeof data !== \"object\") {\n return\n }\n const { __jsenv__ } = data\n if (!__jsenv__) {\n return\n }\n if (__jsenv__.event !== eventName) {\n return\n }\n callback(__jsenv__.data)\n }\n\n window.addEventListener(\"message\", messageEventCallback, false)\n return () => {\n window.removeEventListener(\"message\", messageEventCallback, false)\n }\n}\n\nconst sendCommandToToolbar = (iframe, command, ...args) => {\n iframe.contentWindow.postMessage(\n {\n __jsenv__: {\n command,\n args,\n },\n },\n window.origin,\n )\n}\n\nconst getToolbarPlaceholder = () => {\n const placeholder = queryPlaceholder()\n if (placeholder) {\n if (document.body.contains(placeholder)) {\n return placeholder\n }\n // otherwise iframe would not be visible because in <head>\n console.warn(\n \"element with [data-jsenv-toolbar-placeholder] must be inside document.body\",\n )\n return createTooolbarPlaceholder()\n }\n return createTooolbarPlaceholder()\n}\n\nconst queryPlaceholder = () => {\n return document.querySelector(\"[data-jsenv-toolbar-placeholder]\")\n}\n\nconst createTooolbarPlaceholder = () => {\n const placeholder = document.createElement(\"span\")\n document.body.appendChild(placeholder)\n return placeholder\n}\n\nconst iframeToLoadedPromise = (iframe) => {\n return new Promise((resolve) => {\n const onload = () => {\n iframe.removeEventListener(\"load\", onload, true)\n resolve()\n }\n iframe.addEventListener(\"load\", onload, true)\n })\n}\n\nif (document.readyState === \"complete\") {\n injectToolbar()\n} else {\n window.addEventListener(\"load\", injectToolbar)\n // document.addEventListener(\"readystatechange\", () => {\n // if (document.readyState === \"complete\") {\n // injectToolbar()\n // }\n // })\n}\n"
13
+ ],
14
+ "names": [
15
+ "nativeTypeOf",
16
+ "obj",
17
+ "customTypeOf",
18
+ "Symbol",
19
+ "constructor",
20
+ "prototype",
21
+ "iterator",
22
+ "setStyles",
23
+ "element",
24
+ "styles",
25
+ "elementStyle",
26
+ "style",
27
+ "restoreStyles",
28
+ "Object",
29
+ "keys",
30
+ "map",
31
+ "styleName",
32
+ "restore",
33
+ "currentStyle",
34
+ "forEach",
35
+ "setAttributes",
36
+ "attributes",
37
+ "name",
38
+ "setAttribute",
39
+ "_await",
40
+ "value",
41
+ "then",
42
+ "direct",
43
+ "Promise",
44
+ "resolve",
45
+ "TOOLBAR_BUILD_RELATIVE_URL",
46
+ "_async",
47
+ "f",
48
+ "args",
49
+ "i",
50
+ "arguments",
51
+ "length",
52
+ "apply",
53
+ "e",
54
+ "reject",
55
+ "jsenvLogoSvgUrl",
56
+ "injectToolbar",
57
+ "window",
58
+ "requestIdleCallback",
59
+ "timeout",
60
+ "requestAnimationFrame",
61
+ "placeholder",
62
+ "getToolbarPlaceholder",
63
+ "iframe",
64
+ "document",
65
+ "createElement",
66
+ "tabindex",
67
+ "allowtransparency",
68
+ "iframeLoadedPromise",
69
+ "iframeToLoadedPromise",
70
+ "jsenvToolbarHtmlServerUrl",
71
+ "parentNode",
72
+ "replaceChild",
73
+ "addToolbarEventCallback",
74
+ "sendCommandToToolbar",
75
+ "removeAttribute",
76
+ "div",
77
+ "innerHTML",
78
+ "toolbarTrigger",
79
+ "firstElementChild",
80
+ "appendChild",
81
+ "timer",
82
+ "onmouseenter",
83
+ "setTimeout",
84
+ "expandToolbarTrigger",
85
+ "onmouseleave",
86
+ "clearTimeout",
87
+ "collapseToolbarTrigger",
88
+ "onfocus",
89
+ "onblur",
90
+ "onclick",
91
+ "showToolbarTrigger",
92
+ "display",
93
+ "hideToolbarTrigger",
94
+ "visible",
95
+ "eventName",
96
+ "callback",
97
+ "messageEventCallback",
98
+ "messageEvent",
99
+ "data",
100
+ "__jsenv__",
101
+ "event",
102
+ "addEventListener",
103
+ "removeEventListener",
104
+ "command",
105
+ "contentWindow",
106
+ "postMessage",
107
+ "origin",
108
+ "queryPlaceholder",
109
+ "body",
110
+ "contains",
111
+ "console",
112
+ "warn",
113
+ "createTooolbarPlaceholder",
114
+ "querySelector",
115
+ "onload",
116
+ "readyState"
117
+ ],
118
+ "mappings": "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"
119
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jsenv/core",
3
- "version": "25.3.0",
3
+ "version": "25.4.0",
4
4
  "description": "Tool to develop, test and build js projects",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -11,7 +11,8 @@
11
11
  "node": ">=16.13.0"
12
12
  },
13
13
  "publishConfig": {
14
- "access": "public"
14
+ "access": "public",
15
+ "registry": "https://registry.npmjs.org"
15
16
  },
16
17
  "type": "module",
17
18
  "exports": {
@@ -62,12 +63,12 @@
62
63
  "@babel/plugin-transform-modules-systemjs": "7.16.5",
63
64
  "@c88/v8-coverage": "0.1.1",
64
65
  "@jsenv/abort": "4.1.2",
65
- "@jsenv/filesystem": "2.7.0",
66
+ "@jsenv/filesystem": "2.7.1",
66
67
  "@jsenv/importmap": "1.2.0",
67
68
  "@jsenv/integrity": "0.0.1",
68
69
  "@jsenv/log": "1.5.0",
69
70
  "@jsenv/logger": "4.0.1",
70
- "@jsenv/server": "12.3.2",
71
+ "@jsenv/server": "12.4.1",
71
72
  "@jsenv/uneval": "1.6.0",
72
73
  "@rollup/plugin-commonjs": "21.0.1",
73
74
  "@rollup/plugin-json": "4.1.0",
@@ -118,13 +119,13 @@
118
119
  "@jsenv/assert": "2.4.1",
119
120
  "@jsenv/babel-preset": "1.1.2",
120
121
  "@jsenv/eslint-config": "16.0.9",
121
- "@jsenv/file-size-impact": "12.1.1",
122
- "@jsenv/github-release-package": "1.2.3",
123
- "@jsenv/https-local": "1.0.3",
122
+ "@jsenv/file-size-impact": "12.1.6",
123
+ "@jsenv/github-release-package": "1.3.4",
124
+ "@jsenv/https-local": "1.0.7",
124
125
  "@jsenv/importmap-eslint-resolver": "5.2.5",
125
- "@jsenv/importmap-node-module": "5.1.0",
126
- "@jsenv/package-publish": "1.6.2",
127
- "@jsenv/performance-impact": "2.2.1",
126
+ "@jsenv/importmap-node-module": "5.1.3",
127
+ "@jsenv/package-publish": "1.7.2",
128
+ "@jsenv/performance-impact": "2.2.6",
128
129
  "@jsenv/pwa": "4.0.1",
129
130
  "babel-plugin-transform-async-to-promises": "0.8.17",
130
131
  "eslint": "7.32.0",
@@ -141,4 +142,4 @@
141
142
  "redux": "4.1.2",
142
143
  "rollup-plugin-import-assert": "1.1.1"
143
144
  }
144
- }
145
+ }
@@ -1,9 +1,7 @@
1
- import { createLogger, createDetailedMessage } from "@jsenv/logger"
2
1
  import { resolveDirectoryUrl } from "@jsenv/filesystem"
2
+ import { createLogger, createDetailedMessage } from "@jsenv/logger"
3
3
  import { Abort, raceProcessTeardownEvents } from "@jsenv/abort"
4
4
 
5
- import { shakeBabelPluginMap } from "@jsenv/core/src/internal/generateGroupMap/shake_babel_plugin_map.js"
6
- import { COMPILE_ID_BEST } from "@jsenv/core/src/internal/CONSTANTS.js"
7
5
  import {
8
6
  assertProjectDirectoryUrl,
9
7
  assertProjectDirectoryExists,
@@ -13,7 +11,11 @@ import { buildUsingRollup } from "@jsenv/core/src/internal/building/buildUsingRo
13
11
  import {
14
12
  jsenvBrowserRuntimeSupport,
15
13
  jsenvNodeRuntimeSupport,
16
- } from "@jsenv/core/src/internal/generateGroupMap/jsenvRuntimeSupport.js"
14
+ } from "@jsenv/core/src/internal/runtime_support/jsenv_runtime_support.js"
15
+ import {
16
+ isNodePartOfSupportedRuntimes,
17
+ isBrowserPartOfSupportedRuntimes,
18
+ } from "@jsenv/core/src/internal/runtime_support/runtime_support.js"
17
19
 
18
20
  /**
19
21
  * Generate optimized version of source files into a directory
@@ -126,19 +128,15 @@ export const buildProject = async ({
126
128
  `format must be "systemjs" when importMapInWebWorkers is enabled`,
127
129
  )
128
130
  }
129
-
130
131
  projectDirectoryUrl = assertProjectDirectoryUrl({ projectDirectoryUrl })
131
132
  await assertProjectDirectoryExists({ projectDirectoryUrl })
132
-
133
- assertentryPoints({ entryPoints })
134
-
133
+ assertEntryPoints({ entryPoints })
135
134
  if (Object.keys(entryPoints).length === 0) {
136
135
  logger.error(`entryPoints is an empty object`)
137
136
  return {
138
137
  rollupBuilds: {},
139
138
  }
140
139
  }
141
-
142
140
  assertBuildDirectoryRelativeUrl({ buildDirectoryRelativeUrl })
143
141
  const buildDirectoryUrl = resolveDirectoryUrl(
144
142
  buildDirectoryRelativeUrl,
@@ -151,7 +149,6 @@ export const buildProject = async ({
151
149
 
152
150
  const buildOperation = Abort.startOperation()
153
151
  buildOperation.addAbortSignal(signal)
154
-
155
152
  if (handleSIGINT) {
156
153
  buildOperation.addAbortSource((abort) => {
157
154
  return raceProcessTeardownEvents(
@@ -162,7 +159,6 @@ export const buildProject = async ({
162
159
  )
163
160
  })
164
161
  }
165
-
166
162
  const compileServer = await startCompileServer({
167
163
  signal: buildOperation.signal,
168
164
  logLevel: compileServerLogLevel,
@@ -210,12 +206,26 @@ export const buildProject = async ({
210
206
  compileServerCanReadFromFilesystem: filesystemCache,
211
207
  compileServerCanWriteOnFilesystem: filesystemCache,
212
208
  })
213
-
214
209
  buildOperation.addEndCallback(async () => {
215
210
  await compileServer.stop(`build cleanup`)
216
211
  })
217
-
218
- const { outDirectoryRelativeUrl, origin: compileServerOrigin } = compileServer
212
+ const node = isNodePartOfSupportedRuntimes(runtimeSupport)
213
+ const browser = isBrowserPartOfSupportedRuntimes(runtimeSupport)
214
+ const { compileId, compileProfile } =
215
+ await compileServer.createCompileIdFromRuntimeReport({
216
+ env: {
217
+ browser,
218
+ node,
219
+ },
220
+ name: "jsenv_build",
221
+ version: "1",
222
+ runtimeSupport,
223
+ // "rollup_plugin_jsenv.js" expects to hit the compile server
224
+ // so we force compilation by adding a fake feature called "force_compilation"
225
+ // one day we'll test how code behaves if zero transformations is required during
226
+ // the build and update code as needed
227
+ forceCompilation: true,
228
+ })
219
229
 
220
230
  try {
221
231
  const result = await buildUsingRollup({
@@ -224,9 +234,6 @@ export const buildProject = async ({
224
234
 
225
235
  entryPoints,
226
236
  projectDirectoryUrl,
227
- compileServerOrigin,
228
- compileDirectoryRelativeUrl: `${outDirectoryRelativeUrl}${COMPILE_ID_BEST}/`,
229
- jsenvDirectoryRelativeUrl: compileServer.jsenvDirectoryRelativeUrl,
230
237
  buildDirectoryUrl,
231
238
  buildDirectoryClean,
232
239
  assetManifestFile,
@@ -244,19 +251,17 @@ export const buildProject = async ({
244
251
  systemJsUrl,
245
252
  globalName,
246
253
  globals,
247
- babelPluginMap: shakeBabelPluginMap({
248
- babelPluginMap: compileServer.babelPluginMap,
249
- missingFeatureNames:
250
- compileServer.compileServerGroupMap[COMPILE_ID_BEST]
251
- .missingFeatureNames,
252
- }),
253
- runtimeSupport,
254
254
  workers,
255
255
  serviceWorkers,
256
256
  serviceWorkerFinalizer,
257
257
  classicWorkers,
258
258
  classicServiceWorkers,
259
- importMapInWebWorkers,
259
+
260
+ node,
261
+ browser,
262
+ compileServer,
263
+ compileProfile,
264
+ compileId,
260
265
 
261
266
  urlVersioning,
262
267
  lineBreakNormalization,
@@ -287,7 +292,7 @@ export const buildProject = async ({
287
292
  }
288
293
  }
289
294
 
290
- const assertentryPoints = ({ entryPoints }) => {
295
+ const assertEntryPoints = ({ entryPoints }) => {
291
296
  if (typeof entryPoints !== "object") {
292
297
  throw new TypeError(`entryPoints must be an object, got ${entryPoints}`)
293
298
  }