@api.global/typedserver
Version:
A TypeScript-based project for easy serving of static files with support for live reloading, compression, and typed requests.
35 lines • 4.14 kB
JavaScript
import * as plugins from '../plugins.js';
import * as paths from '../paths.js';
import * as interfaces from '../../dist_ts_interfaces/index.js';
import { Handler } from './classes.handler.js';
import { HandlerTypedRouter } from './classes.handlertypedrouter.js';
const swBundleJs = plugins.smartfile.fs.toStringSync(plugins.path.join(paths.serviceworkerBundleDir, './serviceworker.bundle.js'));
const swBundleJsMap = plugins.smartfile.fs.toStringSync(plugins.path.join(paths.serviceworkerBundleDir, './serviceworker.bundle.js.map'));
let swVersionInfo = null;
const serviceworkerHandler = new Handler('GET', async (req, res) => {
if (req.path === '/serviceworker.bundle.js') {
res.status(200);
res.set('Content-Type', 'text/javascript');
res.write(swBundleJs + '\n' + `/** appSemVer: ${swVersionInfo?.appSemVer || 'not set'} */`);
}
else if (req.path === '/serviceworker.bundle.js.map') {
res.status(200);
res.set('Content-Type', 'application/json');
res.write(swBundleJsMap);
}
res.end();
});
export const addServiceWorkerRoute = (typedserverInstance, swDataFunc) => {
// lets the version info as unique string;
swVersionInfo = swDataFunc();
// the basic stuff
typedserverInstance.server.addRoute('/serviceworker{.*}', serviceworkerHandler);
// the typed stuff
const typedrouter = new plugins.typedrequest.TypedRouter();
typedrouter.addTypedHandler(new plugins.typedrequest.TypedHandler('serviceworker_versionInfo', async (req) => {
const versionInfoResponse = swDataFunc();
return versionInfoResponse;
}));
typedserverInstance.server.addRoute('/sw-typedrequest', new HandlerTypedRouter(typedrouter));
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuc2VydmljZXdvcmtlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL3NlcnZlcnRvb2xzL3Rvb2xzLnNlcnZpY2V3b3JrZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxLQUFLLEtBQUssTUFBTSxhQUFhLENBQUM7QUFFckMsT0FBTyxLQUFLLFVBQVUsTUFBTSxtQ0FBbUMsQ0FBQTtBQUMvRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFckUsTUFBTSxVQUFVLEdBQVcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUMxRCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsMkJBQTJCLENBQUMsQ0FDN0UsQ0FBQztBQUNGLE1BQU0sYUFBYSxHQUFXLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FDN0QsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLCtCQUErQixDQUFDLENBQ2pGLENBQUM7QUFDRixJQUFJLGFBQWEsR0FDZixJQUFJLENBQUM7QUFDUCxNQUFNLG9CQUFvQixHQUFHLElBQUksT0FBTyxDQUN0QyxLQUFLLEVBQ0wsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtJQUNqQixJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssMEJBQTBCLEVBQUUsQ0FBQztRQUM1QyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLEdBQUcsQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDM0MsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQUcsSUFBSSxHQUFHLGtCQUFrQixhQUFhLEVBQUUsU0FBUyxJQUFJLFNBQVMsS0FBSyxDQUFDLENBQUM7SUFDOUYsQ0FBQztTQUFNLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyw4QkFBOEIsRUFBRSxDQUFDO1FBQ3ZELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUM1QyxHQUFHLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzNCLENBQUM7SUFDRCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDWixDQUFDLENBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLENBQ25DLG1CQUFnQyxFQUNoQyxVQUFpRyxFQUNqRyxFQUFFO0lBQ0YsMENBQTBDO0lBQzFDLGFBQWEsR0FBRyxVQUFVLEVBQUUsQ0FBQztJQUU3QixrQkFBa0I7SUFDbEIsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0lBRWhGLGtCQUFrQjtJQUNsQixNQUFNLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFFM0QsV0FBVyxDQUFDLGVBQWUsQ0FDekIsSUFBSSxPQUFPLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDbkMsMkJBQTJCLEVBQzNCLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUNaLE1BQU0sbUJBQW1CLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDekMsT0FBTyxtQkFBbUIsQ0FBQztJQUM3QixDQUFDLENBQ0YsQ0FDRixDQUFDO0lBRUYsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FDakMsa0JBQWtCLEVBQ2xCLElBQUksa0JBQWtCLENBQUMsV0FBVyxDQUFDLENBQ3BDLENBQUM7QUFDSixDQUFDLENBQUMifQ==