|
@@ -90,7 +90,9 @@ const assets = [
|
|
|
'./js/libs/codemirror/mode/javascript.js',
|
|
|
'./js/libs/codemirror/mode/glsl.js',
|
|
|
|
|
|
+ './js/libs/es-module-shims.js',
|
|
|
'./js/libs/esprima.js',
|
|
|
+ './js/libs/ffmpeg.min.js',
|
|
|
'./js/libs/jsonlint.js',
|
|
|
|
|
|
'./js/libs/codemirror/addon/dialog.css',
|
|
@@ -231,13 +233,17 @@ self.addEventListener( 'install', async function () {
|
|
|
|
|
|
const cache = await caches.open( cacheName );
|
|
|
|
|
|
- assets.forEach( function ( asset ) {
|
|
|
+ assets.forEach( async function ( asset ) {
|
|
|
|
|
|
- cache.add( asset ).catch( function () {
|
|
|
+ try {
|
|
|
+
|
|
|
+ await cache.add( asset );
|
|
|
+
|
|
|
+ } catch {
|
|
|
|
|
|
console.warn( '[SW] Cound\'t cache:', asset );
|
|
|
|
|
|
- } );
|
|
|
+ }
|
|
|
|
|
|
} );
|
|
|
|
|
@@ -245,37 +251,46 @@ self.addEventListener( 'install', async function () {
|
|
|
|
|
|
self.addEventListener( 'fetch', async function ( event ) {
|
|
|
|
|
|
- if ( event.request.url.startsWith( 'chrome-extension' ) ) return;
|
|
|
-
|
|
|
const request = event.request;
|
|
|
+
|
|
|
+ if ( request.url.startsWith( 'chrome-extension' ) ) return;
|
|
|
+
|
|
|
event.respondWith( networkFirst( request ) );
|
|
|
|
|
|
} );
|
|
|
|
|
|
async function networkFirst( request ) {
|
|
|
|
|
|
- return fetch( request )
|
|
|
- .then( async function ( response ) {
|
|
|
+ try {
|
|
|
+
|
|
|
+ let response = await fetch( request );
|
|
|
+
|
|
|
+ if ( request.url.endsWith( 'editor/' ) || request.url.endsWith( 'editor/index.html' ) ) { // copied from coi-serviceworker
|
|
|
+
|
|
|
+ const newHeaders = new Headers( response.headers );
|
|
|
+ newHeaders.set( "Cross-Origin-Embedder-Policy", "require-corp" );
|
|
|
+ newHeaders.set( "Cross-Origin-Opener-Policy", "same-origin" );
|
|
|
|
|
|
- const cache = await caches.open( cacheName );
|
|
|
+ response = new Response( response.body, { status: response.status, statusText: response.statusText, headers: newHeaders } );
|
|
|
|
|
|
- cache.put( request, response.clone() );
|
|
|
+ }
|
|
|
|
|
|
- return response;
|
|
|
+ const cache = await caches.open( cacheName );
|
|
|
+ cache.put( request, response.clone() );
|
|
|
+ return response;
|
|
|
|
|
|
- } )
|
|
|
- .catch( async function () {
|
|
|
+ } catch {
|
|
|
|
|
|
- const cachedResponse = await caches.match( request );
|
|
|
+ const cachedResponse = await caches.match( request );
|
|
|
|
|
|
- if ( cachedResponse === undefined ) {
|
|
|
+ if ( cachedResponse === undefined ) {
|
|
|
|
|
|
- console.warn( '[SW] Not cached:', request.url );
|
|
|
+ console.warn( '[SW] Not cached:', request.url );
|
|
|
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
- return cachedResponse;
|
|
|
+ return cachedResponse;
|
|
|
|
|
|
- } );
|
|
|
+ }
|
|
|
|
|
|
}
|