@jsenv/core 24.6.3 → 25.0.0-alpha.1

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 (83) hide show
  1. package/dist/browser_runtime/asset-manifest.json +2 -1
  2. package/dist/browser_runtime/{browser_runtime-c7288751.js → browser_runtime_91c5a3b8.js} +213 -109
  3. package/dist/browser_runtime/browser_runtime_91c5a3b8.js.map +1089 -0
  4. package/dist/build_manifest.js +6 -6
  5. package/dist/compile_proxy/asset-manifest.json +2 -1
  6. package/dist/compile_proxy/{compile_proxy-28148b58.html → compile_proxy_7ad5faa6.html} +133 -40
  7. package/dist/compile_proxy/{compile_proxy.html__inline__20-4887fb1d.js.map → compile_proxy_e3b0c442_809f35f7.js.map} +7 -7
  8. package/dist/event_source_client/asset-manifest.json +2 -1
  9. package/dist/event_source_client/{event_source_client-9f14c8b9.js → event_source_client_620fbc2c.js} +6 -12
  10. package/dist/event_source_client/{event_source_client-9f14c8b9.js.map → event_source_client_620fbc2c.js.map} +2 -2
  11. package/dist/redirector/asset-manifest.json +2 -1
  12. package/dist/redirector/{redirector.html__inline__15-19e529b9.js.map → redirector_e3b0c442_e391410e.js.map} +7 -7
  13. package/dist/redirector/{redirector-3c05dbb2.html → redirector_eb92e8a7.html} +133 -40
  14. package/dist/toolbar/asset-manifest.json +11 -10
  15. package/dist/toolbar/assets/{compilation.css-209d68b4.map → compilation.css_e37c747b.map} +1 -1
  16. package/dist/toolbar/assets/{eventsource.css-38cd0a36.map → eventsource.css_c0c71e7b.map} +1 -1
  17. package/dist/toolbar/assets/{execution.css-0ebe522f.map → execution.css_f3377c10.map} +1 -1
  18. package/dist/toolbar/assets/{focus.css-3f9c156d.map → focus.css_896f3e45.map} +1 -1
  19. package/dist/toolbar/assets/{light-theme.css-78b19a80.map → light-theme.css_72a60fa3.map} +1 -1
  20. package/dist/toolbar/assets/{overflow-menu.css-d9688a1c.map → overflow-menu.css_2859d519.map} +1 -1
  21. package/dist/toolbar/assets/{settings.css-2b81b245.map → settings.css_61548139.map} +1 -1
  22. package/dist/toolbar/assets/{toolbar.main.css-846920e9.map → toolbar.main.css_269d7ce2.map} +9 -9
  23. package/dist/toolbar/assets/{tooltip.css-03395ee6.map → tooltip.css_a94a8bdd.map} +1 -1
  24. package/dist/toolbar/{toolbar.main-eb8acf83.js.map → toolbar.main2_6c1b3d82.js.map} +9 -9
  25. package/dist/toolbar/{toolbar-bab473ea.html → toolbar_04ba410c.html} +155 -62
  26. package/dist/toolbar_injector/asset-manifest.json +3 -2
  27. package/dist/toolbar_injector/assets/{jsenv-logo-188b9ca6.svg → jsenv-logo_188b9ca6.svg} +0 -0
  28. package/dist/toolbar_injector/{toolbar_injector-5e32f96a.js → toolbar_injector_4a48bc53.js} +25 -26
  29. package/dist/toolbar_injector/{toolbar_injector-5e32f96a.js.map → toolbar_injector_4a48bc53.js.map} +4 -5
  30. package/package.json +6 -5
  31. package/readme.md +34 -111
  32. package/src/buildProject.js +45 -32
  33. package/src/dev_server.js +13 -3
  34. package/src/execute.js +7 -1
  35. package/src/executeTestPlan.js +6 -0
  36. package/src/internal/browser_feature_detection/browser_feature_detection.js +18 -25
  37. package/src/internal/browser_runtime/browser_runtime.js +2 -2
  38. package/src/internal/browser_runtime/createBrowserRuntime.js +1 -1
  39. package/src/internal/browser_runtime/displayErrorInDocument.js +2 -0
  40. package/src/internal/browser_runtime/displayErrorNotification.js +1 -1
  41. package/src/internal/building/buildUsingRollup.js +12 -17
  42. package/src/internal/building/build_logs.js +2 -2
  43. package/src/internal/building/build_stats.js +11 -1
  44. package/src/internal/building/html/parseHtmlRessource.js +2 -26
  45. package/src/internal/building/js/parseJsRessource.js +3 -2
  46. package/src/internal/building/json_module.js +11 -0
  47. package/src/internal/building/parseRessource.js +1 -1
  48. package/src/internal/building/ressource_builder.js +210 -216
  49. package/src/internal/building/rollup_plugin_jsenv.js +536 -371
  50. package/src/internal/building/url_loader.js +8 -142
  51. package/src/internal/building/url_versioning.js +220 -0
  52. package/src/internal/compiling/compileHtml.js +8 -1
  53. package/src/internal/compiling/createCompiledFileService.js +32 -44
  54. package/src/internal/compiling/html_source_file_service.js +66 -51
  55. package/src/internal/compiling/js-compilation-service/babel_plugin_systemjs_prepend.js +23 -0
  56. package/src/internal/compiling/js-compilation-service/jsenvTransform.js +21 -63
  57. package/src/internal/compiling/js-compilation-service/transformJs.js +4 -4
  58. package/src/internal/compiling/jsenvCompilerForHtml.js +47 -48
  59. package/src/internal/compiling/jsenvCompilerForImportmap.js +15 -76
  60. package/src/internal/compiling/jsenvCompilerForJavaScript.js +11 -2
  61. package/src/internal/compiling/startCompileServer.js +31 -7
  62. package/src/internal/dev_server/toolbar/compilation/toolbar.compilation.js +9 -9
  63. package/src/internal/executing/executePlan.js +6 -0
  64. package/src/internal/generateGroupMap/{jsenvBabelPluginCompatMap.js → babel_plugins_compatibility.js} +0 -0
  65. package/src/internal/generateGroupMap/{featuresCompatMap.js → features_compatibility.js} +9 -1
  66. package/src/internal/generateGroupMap/generateGroupMap.js +6 -35
  67. package/src/internal/generateGroupMap/one_runtime_compat.js +9 -12
  68. package/src/internal/generateGroupMap/runtime_compat.js +10 -15
  69. package/src/internal/generateGroupMap/runtime_compat_composition.js +2 -2
  70. package/src/internal/generateGroupMap/shake_babel_plugin_map.js +21 -0
  71. package/src/internal/import-resolution/importmap_default.js +52 -0
  72. package/src/internal/node_feature_detection/node_feature_detection.js +25 -19
  73. package/src/internal/runtime/s.js +101 -6
  74. package/src/internal/unevalException.js +1 -1
  75. package/src/jsenvServiceWorkerFinalizer.js +10 -9
  76. package/dist/browser_runtime/browser_runtime-c7288751.js.map +0 -1069
  77. package/src/internal/building/asset_url_versioning.js +0 -50
  78. package/src/internal/building/rollup_build_sourcemap.js +0 -54
  79. package/src/internal/building/url-versioning.js +0 -96
  80. package/src/internal/compiling/js-compilation-service/findAsyncPluginNameInBabelPluginMap.js +0 -9
  81. package/src/internal/generateGroupMap/jsenvPluginCompatMap.js +0 -1
  82. package/src/internal/import-resolution/importmap-default.js +0 -34
  83. package/src/internal/renderNamePattern.js +0 -6
@@ -497,6 +497,8 @@
497
497
 
498
498
  var importMapPromise = Promise.resolve();
499
499
  var importMap = { imports: {}, scopes: {}, depcache: {}, integrity: {} };
500
+ systemJSPrototype.importMap = importMap;
501
+ systemJSPrototype.baseUrl = baseUrl;
500
502
 
501
503
  // Scripts are processed immediately, on the first System.import, and on DOMReady.
502
504
  // Import map scripts are processed only once (by being marked) and in order for each phase.
@@ -552,6 +554,7 @@
552
554
  return fetchPromise;
553
555
  }).then(function (text) {
554
556
  extendImportMap(importMap, text, script.src || baseUrl);
557
+ return importMap
555
558
  });
556
559
  }
557
560
  });
@@ -566,6 +569,7 @@
566
569
  }
567
570
  resolveAndComposeImportMap(newMap, newMapUrl, importMap);
568
571
  }
572
+ System.extendImportMap = extendImportMap
569
573
 
570
574
  /*
571
575
  * Script instantiation loading
@@ -719,23 +723,33 @@
719
723
  * Supports loading System.register in workers
720
724
  */
721
725
 
722
- if (hasSelf && typeof importScripts === 'function')
726
+ if (hasSelf && typeof importScripts === 'function') {
723
727
  systemJSPrototype.instantiate = function (url) {
724
728
  var loader = this;
725
- return Promise.resolve().then(function () {
726
- importScripts(url);
729
+ return self.fetch(url, {
730
+ credentials: 'same-origin',
731
+ }).then(function (response) {
732
+ if (!response.ok) {
733
+ throw Error(errMsg(7, [response.status, response.statusText, url].join(', ') ));
734
+ }
735
+ return response.text()
736
+ }).then(function (source) {
737
+ if (source.indexOf('//# sourceURL=') < 0) source += '\n//# sourceURL=' + url;
738
+ (0, eval)(source);
727
739
  return loader.getRegister(url);
728
- });
740
+ })
729
741
  };
742
+ }
730
743
 
731
744
  }());
732
745
 
733
746
  (function(){
734
747
  var envGlobal = typeof self !== 'undefined' ? self : global;
735
748
  var System = envGlobal.System;
736
- var register = System.register;
737
- var registerRegistry = Object.create(null)
738
749
 
750
+ var registerRegistry = Object.create(null)
751
+ var register = System.register;
752
+ System.registerRegistry = registerRegistry;
739
753
  System.register = function (name, deps, declare) {
740
754
  if (typeof name !== 'string') return register.apply(this, arguments);
741
755
  var define = [deps, declare];
@@ -765,4 +779,85 @@
765
779
  var result = registerRegistry[url] || register;
766
780
  return result;
767
781
  };
782
+ }());
783
+
784
+ (function () {
785
+ // worker or service worker
786
+ if (typeof WorkerGlobalScope === 'function' && self instanceof WorkerGlobalScope) {
787
+ var importMapFromParentPromise = new Promise((resolve) => {
788
+ var importmapMessageCallback = function (e) {
789
+ if (e.data === "__importmap_init__") {
790
+ self.removeEventListener("message", importmapMessageCallback)
791
+ e.ports[0].onmessage = (message) => {
792
+ resolve(message.data)
793
+ }
794
+ e.ports[0].postMessage('__importmap_request__')
795
+ }
796
+ };
797
+ self.addEventListener("message", importmapMessageCallback)
798
+ })
799
+ // var prepareImport = System.prepareImport
800
+ System.prepareImport = function () {
801
+ return importMapFromParentPromise.then(function (importmap) {
802
+ System.extendImportMap(System.importMap, JSON.stringify(importmap), System.baseUrl)
803
+ })
804
+ }
805
+
806
+ // auto import first register
807
+ var messageEvents = []
808
+ var messageCallback = (event) => {
809
+ messageEvents.push(event)
810
+ }
811
+ self.addEventListener('message', messageCallback)
812
+ var register = System.register;
813
+ System.register = function(deps, declare) {
814
+ System.register = register;
815
+ System.registerRegistry[self.location.href] = [deps, declare];
816
+ System.import(self.location.href).then(() => {
817
+ self.removeEventListener('message', messageCallback)
818
+ messageEvents.forEach((messageEvent) => {
819
+ self.dispatchEvent(messageEvent)
820
+ })
821
+ messageEvents = null
822
+ })
823
+ }
824
+ }
825
+ else if (typeof window === 'object') {
826
+ var WorkerConstructor = window.Worker;
827
+ if (typeof WorkerConstructor === 'function') {
828
+ window.Worker = function (url, options) {
829
+ var worker = new WorkerConstructor(url, options);
830
+ var importmapChannel = new MessageChannel();
831
+ importmapChannel.port1.onmessage = function (message) {
832
+ System.prepareImport().then(function (importmap) {
833
+ message.target.postMessage(importmap);
834
+ });
835
+ }
836
+ worker.postMessage('__importmap_init__', [importmapChannel.port2]);
837
+ return worker
838
+ }
839
+ }
840
+
841
+ var serviceWorker = navigator.serviceWorker;
842
+ if (serviceWorker) {
843
+ var register = serviceWorker.register;
844
+ serviceWorker.register = function(url, options) {
845
+ var registrationPromise = register.call(this, url, options);
846
+ registrationPromise.then(function(registration) {
847
+ var installing = registration.installing;
848
+ var waiting = registration.waiting;
849
+ var active = registration.active;
850
+ var worker = installing || waiting || active;
851
+ var importmapChannel = new MessageChannel();
852
+ importmapChannel.port1.onmessage = function (message) {
853
+ System.prepareImport().then(function (importmap) {
854
+ message.target.postMessage(importmap)
855
+ });
856
+ }
857
+ worker.postMessage('__importmap_init__', [importmapChannel.port2]);
858
+ })
859
+ return registrationPromise
860
+ }
861
+ }
862
+ }
768
863
  }());
@@ -1,7 +1,7 @@
1
1
  import { uneval } from "@jsenv/uneval"
2
2
 
3
3
  export const unevalException = (value) => {
4
- if (value.hasOwnProperty("toString")) {
4
+ if (value && value.hasOwnProperty("toString")) {
5
5
  delete value.toString
6
6
  }
7
7
  return uneval(value, { ignoreSymbols: true })
@@ -1,13 +1,13 @@
1
1
  import { resolveUrl, urlToRelativeUrl } from "@jsenv/filesystem"
2
2
 
3
- import { generateContentHash } from "./internal/building/url-versioning.js"
3
+ import { generateContentHash } from "./internal/building/url_versioning.js"
4
4
 
5
5
  export const jsenvServiceWorkerFinalizer = (
6
6
  code,
7
7
  {
8
8
  serviceWorkerBuildRelativeUrl,
9
9
  buildManifest,
10
- rollupBuild,
10
+ buildFileContents,
11
11
  lineBreakNormalization,
12
12
  },
13
13
  ) => {
@@ -32,7 +32,7 @@ export const jsenvServiceWorkerFinalizer = (
32
32
  return
33
33
  }
34
34
  const versioned = fileNameContainsHash(buildRelativeUrl)
35
- const rollupFile = rollupBuild[buildRelativeUrl]
35
+ const buildFileContent = buildFileContents[buildRelativeUrl]
36
36
 
37
37
  generatedUrlsConfig[urlRelativeToServiceWorker] = {
38
38
  versioned,
@@ -42,19 +42,20 @@ export const jsenvServiceWorkerFinalizer = (
42
42
  // when url is not versioned we compute a "version" for that url anyway
43
43
  // so that service worker source still changes and navigator
44
44
  // detect there is a change
45
- version: generateContentHash(
46
- rollupFile.type === "chunk" ? rollupFile.code : rollupFile.source,
47
- { lineBreakNormalization },
48
- ),
45
+ version: generateContentHash(buildFileContent, {
46
+ lineBreakNormalization,
47
+ }),
49
48
  }),
50
49
  }
51
50
  })
51
+ // TODO: ideally should use magic string to prepend code
52
+ // but it means composing 2 source maps, something not already available in jsenv codebase
52
53
 
53
54
  return `
54
- self.generatedUrlsConfig = ${JSON.stringify(generatedUrlsConfig, null, " ")}
55
+ self.generatedUrlsConfig = ${JSON.stringify(generatedUrlsConfig, null, " ")};
55
56
  ${code}
56
57
  `
57
58
  }
58
59
 
59
60
  const fileNameContainsHash = (fileName) =>
60
- /-[a-z0-9]{8,}(\..*?)?$/.test(fileName)
61
+ /_[a-z0-9]{8,}(\..*?)?$/.test(fileName)