2023-03-07 20:07:52 +04:00
|
|
|
import handler from 'serve-handler';
|
|
|
|
import { createServer } from 'http';
|
|
|
|
import type { Server } from 'http';
|
|
|
|
|
|
|
|
import { dirname, join } from 'path';
|
|
|
|
import { fileURLToPath } from 'url';
|
|
|
|
|
|
|
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
|
|
|
2023-08-25 00:15:49 +07:00
|
|
|
export const CDN_PUBLIC_PATH = join(__dirname, '../../../core/js-client/dist/browser');
|
2023-03-07 20:07:52 +04:00
|
|
|
|
|
|
|
export const startCdn = (port: number) => startContentServer(port, CDN_PUBLIC_PATH);
|
|
|
|
|
|
|
|
export const startContentServer = (port: number, publicDir: string): Promise<Server> => {
|
|
|
|
const server = createServer((request, response) => {
|
|
|
|
return handler(request, response, {
|
|
|
|
public: publicDir,
|
2023-08-25 00:15:49 +07:00
|
|
|
rewrites: [{
|
|
|
|
source: '/js-client.min.js',
|
|
|
|
destination: '/source/index.umd.cjs'
|
|
|
|
}],
|
|
|
|
headers: [{
|
|
|
|
source: '**/*',
|
|
|
|
headers: [
|
|
|
|
{ key: 'Cross-Origin-Opener-Policy', value: 'same-origin' },
|
|
|
|
{ key: 'Cross-Origin-Embedder-Policy', value: 'require-corp' }
|
|
|
|
]
|
|
|
|
}]
|
2023-03-07 20:07:52 +04:00
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
return new Promise<Server>((resolve) => {
|
|
|
|
const result = server.listen(port, () => {
|
|
|
|
console.log(`server started on port ${port}`);
|
|
|
|
console.log(`public dir ${publicDir}`);
|
|
|
|
resolve(result);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
export const stopServer = (app: Server): Promise<void> => {
|
|
|
|
return new Promise<void>((resolve) => {
|
|
|
|
app.close(() => {
|
|
|
|
console.log('server stopped');
|
|
|
|
resolve();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
};
|