feat(swdash): Add SW-Dash (Lit-based service worker dashboard), bundle & serve it; improve servertools and static handlers

This commit is contained in:
2025-12-04 13:10:15 +00:00
parent 0f171e43e7
commit 4db6fa6771
15 changed files with 1212 additions and 749 deletions

View File

@@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@api.global/typedserver',
version: '6.7.0',
version: '6.8.0',
description: 'A TypeScript-based project for easy serving of static files with support for live reloading, compression, and typed requests.'
}

View File

@@ -1,4 +1,5 @@
import * as plugins from '../plugins.js';
import * as paths from '../paths.js';
/**
* Built-in routes controller for TypedServer
@@ -122,4 +123,25 @@ export class BuiltInRoutesController {
headers: { 'Content-Type': 'text/plain' },
});
}
@plugins.smartserve.Get('/sw-dash/bundle.js')
async getSwDashBundle(ctx: plugins.smartserve.IRequestContext): Promise<Response> {
try {
const bundleContent = (await plugins.fsInstance
.file(paths.swdashBundlePath)
.encoding('utf8')
.read()) as string;
return new Response(bundleContent, {
status: 200,
headers: {
'Content-Type': 'text/javascript',
'Cache-Control': 'no-cache',
},
});
} catch (error) {
console.error('Failed to serve sw-dash bundle:', error);
return new Response('SW-Dash bundle not found', { status: 404 });
}
}
}

View File

@@ -8,4 +8,7 @@ export const packageDir = plugins.path.join(
export const injectBundleDir = plugins.path.join(packageDir, './dist_ts_web_inject');
export const injectBundlePath = plugins.path.join(injectBundleDir, './bundle.js');
export const serviceworkerBundleDir = plugins.path.join(packageDir, './dist_ts_web_serviceworker');
export const serviceworkerBundleDir = plugins.path.join(packageDir, './dist_ts_web_serviceworker');
export const swdashBundleDir = plugins.path.join(packageDir, './dist_ts_swdash');
export const swdashBundlePath = plugins.path.join(swdashBundleDir, './bundle.js');