@jsenv/core 27.0.0-alpha.64 → 27.0.0-alpha.67

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 (151) 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/{event_source_client.js → js/event_source_client.js} +19 -244
  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 +79 -0
  96. package/dist/{import_meta_hot.js → js/import_meta_hot.js} +1 -3
  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 +13450 -0
  102. package/dist/other/jsenv.png +0 -0
  103. package/dist/s.js.map +59 -62
  104. package/package.json +16 -12
  105. package/src/build/build.js +169 -68
  106. package/src/build/build_urls_generator.js +18 -2
  107. package/src/build/inject_service_worker_urls.js +1 -1
  108. package/src/build/resync_ressource_hints.js +56 -9
  109. package/src/dev/plugins/explorer/client/explorer.html +1 -1
  110. package/src/dev/plugins/explorer/jsenv_plugin_explorer.js +1 -1
  111. package/src/dev/start_dev_server.js +17 -3
  112. package/src/execute/execute.js +3 -0
  113. package/src/omega/errors.js +12 -9
  114. package/src/omega/kitchen.js +252 -217
  115. package/src/omega/server/file_service.js +1 -1
  116. package/src/omega/url_graph/url_graph_report.js +2 -2
  117. package/src/omega/url_graph/url_info_transformations.js +10 -5
  118. package/src/omega/url_graph.js +3 -2
  119. package/src/plugins/autoreload/dev_sse/jsenv_plugin_dev_sse_client.js +5 -10
  120. package/src/plugins/autoreload/jsenv_plugin_autoreload.js +1 -3
  121. package/src/plugins/bundling/js_module/bundle_js_module.js +66 -24
  122. package/src/plugins/file_urls/jsenv_plugin_file_urls.js +185 -53
  123. package/src/plugins/html_supervisor/jsenv_plugin_html_supervisor.js +9 -13
  124. package/src/plugins/http_urls/jsenv_plugin_http_urls.js +6 -6
  125. package/src/plugins/import_meta_hot/jsenv_plugin_import_meta_hot.js +5 -10
  126. package/src/plugins/inline/jsenv_plugin_js_inline_content.js +2 -2
  127. package/src/plugins/node_esm_resolution/jsenv_plugin_node_esm_resolution.js +12 -2
  128. package/src/plugins/node_runtime/jsenv_plugin_node_runtime.js +12 -0
  129. package/src/plugins/plugin_controller.js +17 -3
  130. package/src/plugins/plugins.js +16 -19
  131. package/src/plugins/transpilation/as_js_classic/jsenv_plugin_as_js_classic.js +17 -19
  132. package/src/plugins/transpilation/as_js_classic/{jsenv_plugin_script_type_module_as_classic.js → jsenv_plugin_as_js_classic_html.js} +0 -0
  133. package/src/plugins/transpilation/import_assertions/jsenv_plugin_import_assertions.js +9 -4
  134. package/src/plugins/transpilation/jsenv_plugin_transpilation.js +1 -2
  135. package/src/plugins/url_analysis/css/css_urls.js +1 -1
  136. package/src/plugins/url_analysis/html/html_urls.js +4 -1
  137. package/src/plugins/url_analysis/js/js_urls.js +3 -2
  138. package/src/plugins/url_analysis/jsenv_plugin_url_analysis.js +94 -1
  139. package/src/plugins/url_analysis/webmanifest/webmanifest_urls.js +3 -0
  140. package/src/plugins/url_resolution/jsenv_plugin_url_resolution.js +0 -3
  141. package/src/test/execute_plan.js +3 -1
  142. package/dist/event_source_client.js.map +0 -188
  143. package/dist/html_supervisor_installer.js +0 -1236
  144. package/dist/html_supervisor_installer.js.map +0 -337
  145. package/dist/html_supervisor_setup.js +0 -95
  146. package/dist/html_supervisor_setup.js.map +0 -57
  147. package/dist/import_meta_hot.js.map +0 -42
  148. package/src/jsenv_root_directory_url.js +0 -1
  149. package/src/omega/compat/default_runtime_compat.js +0 -11
  150. package/src/plugins/filesystem_magic/jsenv_plugin_filesystem_magic.js +0 -61
  151. package/src/plugins/transpilation/babel/new_stylesheet/client/.eslintrc.cjs +0 -24
@@ -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 queue = [];
397
+ let previousDonePromise = null;
398
+
399
+ const dequeue = () => {
400
+ const next = queue.shift();
401
+
402
+ if (next) {
403
+ __html_supervisor__.addScriptToExecute(next);
404
+ } else {
405
+ const nextDefered = deferQueue.shift();
406
+
407
+ if (nextDefered) {
408
+ __html_supervisor__.addScriptToExecute(nextDefered);
409
+ }
410
+ }
411
+ };
412
+
413
+ const deferQueue = [];
414
+ let previousDeferDonePromise = null;
415
+
416
+ __html_supervisor__.addScriptToExecute = async scriptToExecute => {
417
+ if (scriptToExecute.async) {
418
+ performExecution(scriptToExecute);
419
+ return;
420
+ }
421
+
422
+ const useDeferQueue = scriptToExecute.defer || scriptToExecute.type === "js_module";
423
+
424
+ if (useDeferQueue) {
425
+ if (document.readyState !== "interactive") {
426
+ deferQueue.push(scriptToExecute);
427
+ return;
428
+ }
429
+
430
+ if (previousDonePromise) {
431
+ // defer must wait for the regular script to be done
432
+ deferQueue.push(scriptToExecute);
433
+ return;
434
+ }
435
+
436
+ if (previousDeferDonePromise) {
437
+ deferQueue.push(scriptToExecute);
438
+ return;
439
+ }
440
+
441
+ previousDeferDonePromise = performExecution(scriptToExecute);
442
+ await previousDeferDonePromise;
443
+ previousDeferDonePromise = null;
444
+ dequeue();
445
+ return;
446
+ }
447
+
448
+ if (previousDonePromise) {
449
+ queue.push(scriptToExecute);
450
+ return;
451
+ }
452
+
453
+ previousDonePromise = performExecution(scriptToExecute);
454
+ await previousDonePromise;
455
+ previousDonePromise = null;
456
+ dequeue();
457
+ };
458
+
459
+ if (document.readyState !== "interactive" && document.readyState !== "complete") {
460
+ document.addEventListener("readystatechange", () => {
461
+ if (document.readyState === "interactive") {
462
+ const nextDefered = deferQueue.shift();
463
+
464
+ if (nextDefered) {
465
+ __html_supervisor__.addScriptToExecute(nextDefered);
466
+ }
467
+ }
468
+ });
469
+ }
470
+
471
+ __html_supervisor__.collectScriptResults = async () => {
472
+ collectCalled = true;
473
+
474
+ if (pendingExecutionCount === 0) {
475
+ resolveScriptExecutionsPromise();
476
+ } else {
477
+ await scriptExecutionsPromise;
478
+ }
479
+
480
+ let status = "completed";
481
+ let exceptionSource = "";
482
+ Object.keys(scriptExecutionResults).forEach(key => {
483
+ const scriptExecutionResult = scriptExecutionResults[key];
484
+
485
+ if (scriptExecutionResult.status === "errored") {
486
+ status = "errored";
487
+ exceptionSource = scriptExecutionResult.exceptionSource;
488
+ }
489
+ });
490
+ return {
491
+ status,
492
+ ...(status === "errored" ? {
493
+ exceptionSource
494
+ } : {}),
495
+ startTime: getNavigationStartTime(),
496
+ endTime: Date.now(),
497
+ scriptExecutionResults
498
+ };
499
+ };
500
+
501
+ const {
502
+ scriptsToExecute
503
+ } = __html_supervisor__;
504
+ const copy = scriptsToExecute.slice();
505
+ scriptsToExecute.length = 0;
506
+ copy.forEach(scriptToExecute => {
507
+ __html_supervisor__.addScriptToExecute(scriptToExecute);
508
+ });
509
+ };
510
+ const superviseScriptTypeModule = ({
511
+ src,
512
+ isInline
513
+ }) => {
514
+ __html_supervisor__.addScriptToExecute({
515
+ src,
516
+ type: "js_module",
517
+ isInline,
518
+ execute: () => import(new URL(src, document.location.href).href)
519
+ });
520
+ };
521
+
522
+ export { installHtmlSupervisor, superviseScriptTypeModule };
@@ -0,0 +1,79 @@
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
+ document.body.removeChild(script)
36
+ window.removeEventListener("error", windowErrorCallback)
37
+ }
38
+ window.addEventListener("error", windowErrorCallback)
39
+ script.addEventListener("error", () => {
40
+ cleanup()
41
+ reject(src)
42
+ })
43
+ script.addEventListener("load", () => {
44
+ cleanup()
45
+ if (lastWindowErrorUrl === scriptUrl) {
46
+ reject(lastWindowError)
47
+ } else {
48
+ resolve()
49
+ }
50
+ })
51
+ document.body.appendChild(script)
52
+ })
53
+ },
54
+ })
55
+ },
56
+ superviseScriptTypeModule: () => {
57
+ throw new Error("htmlSupervisor not installed")
58
+ },
59
+ getScriptExecutionResults: () => {
60
+ // wait for page to load before collecting script execution results
61
+ const htmlReadyPromise = new Promise((resolve) => {
62
+ if (document.readyState === "complete") {
63
+ resolve()
64
+ return
65
+ }
66
+ const loadCallback = () => {
67
+ window.removeEventListener("load", loadCallback)
68
+ resolve()
69
+ }
70
+ window.addEventListener("load", loadCallback)
71
+ })
72
+ return htmlReadyPromise.then(() => {
73
+ return window.__html_supervisor__.collectScriptResults()
74
+ })
75
+ },
76
+ collectScriptResults: () => {
77
+ throw new Error("htmlSupervisor not installed")
78
+ },
79
+ }
@@ -41,7 +41,7 @@ const createImportMetaHot = importMetaUrl => {
41
41
  return;
42
42
  }
43
43
 
44
- throw new Error("invalid call to import.meta.hot.accept(), received ".concat(firstArg));
44
+ throw new Error(`invalid call to import.meta.hot.accept(), received ${firstArg}`);
45
45
  },
46
46
  dispose: callback => {
47
47
  addUrlMeta(url, {
@@ -82,5 +82,3 @@ const asUrlWithoutHmrQuery = url => {
82
82
  };
83
83
 
84
84
  export { createImportMetaHot, urlHotMetas };
85
-
86
- //# sourceMappingURL=import_meta_hot.js.map
@@ -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 };