@jsenv/core 27.0.0-alpha.56 → 27.0.0-alpha.57
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.
package/package.json
CHANGED
|
@@ -785,22 +785,88 @@
|
|
|
785
785
|
(function () {
|
|
786
786
|
// worker or service worker
|
|
787
787
|
if (typeof WorkerGlobalScope === 'function' && self instanceof WorkerGlobalScope) {
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
788
|
+
/*
|
|
789
|
+
* SystemJs loads X files before executing the worker/service worker main file
|
|
790
|
+
* It mean events dispatched during this phase could be missed
|
|
791
|
+
* A warning like the one below is displayed in chrome devtools:
|
|
792
|
+
* "Event handler of 'install' event must be added on the initial evaluation of worker script"
|
|
793
|
+
* To fix that code below listen for these events early and redispatch them later
|
|
794
|
+
* once the worker file is executed (the listeners are installed)
|
|
795
|
+
*/
|
|
796
|
+
var firstRegisterCallbacks = []
|
|
797
|
+
var isServiceWorker = typeof self.skipWaiting === 'function'
|
|
798
|
+
if (isServiceWorker) {
|
|
799
|
+
// for service worker there is more events to listen
|
|
800
|
+
// and, to get rid of the warning, we override self.addEventListener
|
|
801
|
+
var eventsToCatch = ['message', 'install', 'activate', 'fetch']
|
|
802
|
+
var eventCallbackProxies = {}
|
|
803
|
+
var firstRegisterPromise = new Promise((resolve) => {
|
|
804
|
+
firstRegisterCallbacks.push(resolve)
|
|
805
|
+
})
|
|
806
|
+
eventsToCatch.forEach(function(eventName) {
|
|
807
|
+
var eventsToDispatch = []
|
|
808
|
+
var eventCallback = function (event) {
|
|
809
|
+
const eventCallbackProxy = eventCallbackProxies[event.type]
|
|
810
|
+
if (eventCallbackProxy) {
|
|
811
|
+
eventCallbackProxy(event)
|
|
812
|
+
}
|
|
813
|
+
else {
|
|
814
|
+
eventsToDispatch.push(event)
|
|
815
|
+
event.waitUntil(firstRegisterPromise)
|
|
816
|
+
}
|
|
817
|
+
}
|
|
818
|
+
self.addEventListener(eventName, eventCallback)
|
|
819
|
+
firstRegisterCallbacks.push(function() {
|
|
820
|
+
if (eventsToDispatch.length) {
|
|
821
|
+
const eventCallbackProxy = eventCallbackProxies[eventsToDispatch[0].type]
|
|
822
|
+
if (eventCallbackProxy) {
|
|
823
|
+
eventsToDispatch.forEach(function (event) {
|
|
824
|
+
eventCallbackProxy(event)
|
|
825
|
+
})
|
|
826
|
+
}
|
|
827
|
+
eventsToDispatch.length = 0
|
|
828
|
+
}
|
|
829
|
+
})
|
|
830
|
+
})
|
|
831
|
+
|
|
832
|
+
var addEventListener = self.addEventListener
|
|
833
|
+
self.addEventListener = function (eventName, callback, options) {
|
|
834
|
+
if (eventsToCatch.indexOf(eventName) > -1) {
|
|
835
|
+
eventCallbackProxies[eventName] = callback
|
|
836
|
+
return
|
|
837
|
+
}
|
|
838
|
+
return addEventListener.call(self, eventName, callback, options)
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
else {
|
|
842
|
+
var eventsToCatch = ['message']
|
|
843
|
+
eventsToCatch.forEach(function (eventName) {
|
|
844
|
+
var eventQueue = []
|
|
845
|
+
var eventCallback = (event) => {
|
|
846
|
+
eventQueue.push(event)
|
|
847
|
+
}
|
|
848
|
+
self.addEventListener(eventName, eventCallback)
|
|
849
|
+
firstRegisterCallbacks.push(function() {
|
|
850
|
+
self.removeEventListener(eventName, eventCallback)
|
|
851
|
+
eventQueue.forEach(function (event) {
|
|
852
|
+
self.dispatchEvent(event)
|
|
853
|
+
})
|
|
854
|
+
eventQueue.length = 0
|
|
855
|
+
})
|
|
856
|
+
})
|
|
792
857
|
}
|
|
793
|
-
|
|
858
|
+
|
|
859
|
+
|
|
860
|
+
// auto import first register
|
|
794
861
|
var register = System.register;
|
|
795
862
|
System.register = function(deps, declare) {
|
|
796
863
|
System.register = register;
|
|
797
864
|
System.registerRegistry[self.location.href] = [deps, declare];
|
|
798
865
|
return System.import(self.location.href).then((result) => {
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
self.dispatchEvent(messageEvent)
|
|
866
|
+
firstRegisterCallbacks.forEach(firstRegisterCallback => {
|
|
867
|
+
firstRegisterCallback()
|
|
802
868
|
})
|
|
803
|
-
|
|
869
|
+
firstRegisterCallbacks.length = 0
|
|
804
870
|
return result
|
|
805
871
|
})
|
|
806
872
|
}
|