2021-04-26 15:37:02 +02:00

43 lines
1.4 KiB
JavaScript

/**
* Copyright (c) 2020 Gitpod GmbH. All rights reserved.
* Licensed under the GNU Affero General Public License (AGPL).
* See License-AGPL.txt in the project root for license information.
*/
// @ts-check
/**
* The proxy (shared) worker serving from the workspace origin to fetch content from the blobserve origin.
*/
// TODO(ak) importScripts is not going to work for module workers: https://web.dev/module-workers/
(function () {
var originalImportScripts = self.importScripts;
// hash contains the original worker URL to be used as a base URI to resolve script URLs
var baseURI = decodeURI(location.hash.substr(1));
self.importScripts = function (...scriptUrls) {
return originalImportScripts(...scriptUrls.map(scriptUrl => new URL(scriptUrl, baseURI).toString()));
}
var originalFetch = self.fetch;
self.fetch = function (input, init) {
if (typeof input === 'string') {
return originalFetch(new URL(input, baseURI).toString(), init);
}
return originalFetch(input, init);
}
var originalRequest = self.Request;
function RequestProxy(input, init) {
if (typeof input === 'string') {
return new originalRequest(new URL(input, baseURI).toString(), init);
}
return new originalRequest(input, init);
}
RequestProxy.prototype = Object.create(originalRequest)
self.Request = RequestProxy;
originalImportScripts(baseURI);
})();