forked from phcode-dev/staging.phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathvirtual-server-loader.js
More file actions
72 lines (58 loc) · 2.32 KB
/
virtual-server-loader.js
File metadata and controls
72 lines (58 loc) · 2.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*
* GNU AGPL-3.0 License
*
* Copyright (c) 2021 - present core.ai . All rights reserved.
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License along
* with this program. If not, see https://opensource.org/licenses/AGPL-3.0.
*
*/
// jshint ignore: start
/*global navigator*/
/*eslint no-console: 0*/
/*eslint strict: ["error", "global"]*/
/** Sets up a web server for the local phoenix virtual file system root.
* Based on https://github.com/humphd/nohost
*
* This module should be functionally as light weight as possible with minimal deps as it is a shell component.
* **/
import { Workbox } from 'https://storage.googleapis.com/workbox-cdn/releases/4.0.0/workbox-window.prod.mjs';
function getRoute(){
const pathName = window.location.pathname;
const basePath = pathName.substring(0, pathName.lastIndexOf("/"));
return `${basePath}/phoenix/vfs`;
}
if(!window.__IS_NATIVE_SHELL__) {
window.fsServerUrl = window.location.origin + getRoute() + "/";
}
function serverReady() {
console.log(`Server ready! Serving files on url: ${window.location.origin + getRoute()}`);
}
function serverInstall() {
console.log('Web server Worker installed.');
}
/**
* Register the nohost service worker, passing `route` or other options.
*/
if ('serviceWorker' in navigator && !window.__IS_NATIVE_SHELL__) {
console.log(window.location.href);
const wb = new Workbox(`virtual-server-test.js?route=${getRoute()}`);
// for debug, use this URL`nohost-sw.js?debug&route=${basePath}/phoenix/vfs`
// Wait on the server to be fully ready to handle routing requests
wb.controlling.then(serverReady);
// Deal with first-run install, if necessary
wb.addEventListener('installed', (event) => {
if(!event.isUpdate) {
serverInstall();
}
});
wb.register();
}