MCPcopy Index your code
hub / github.com/rrweb-io/rrweb / startServer

Function startServer

packages/all/test/utils.ts:35–77  ·  view source on GitHub ↗
(defaultPort = 3030)

Source from the content-addressed store, hash-verified

33 [key: string]: string;
34}
35export const startServer = (defaultPort = 3030) =>
36 new Promise<http.Server>((resolve) => {
37 const mimeType: IMimeType = {
38 '.html': 'text/html',
39 '.js': 'text/javascript',
40 '.css': 'text/css',
41 };
42 const s = http.createServer((req, res) => {
43 const parsedUrl = url.parse(req.url!);
44 const sanitizePath = path
45 .normalize(parsedUrl.pathname!)
46 .replace(/^(\.\.[\/\\])+/, '');
47
48 let pathname = path.join(__dirname, sanitizePath);
49 if (/^\/rrweb.*\.c?js.*/.test(sanitizePath)) {
50 pathname = path.join(__dirname, `../dist`, sanitizePath);
51 }
52
53 try {
54 const data = fs.readFileSync(pathname);
55 const ext = path.parse(pathname).ext;
56 res.setHeader('Content-type', mimeType[ext] || 'text/plain');
57 res.setHeader('Access-Control-Allow-Origin', '*');
58 res.setHeader('Access-Control-Allow-Methods', 'GET');
59 res.setHeader('Access-Control-Allow-Headers', 'Content-type');
60 setTimeout(() => {
61 res.end(data);
62 // mock delay
63 }, 100);
64 } catch (error) {
65 res.end();
66 }
67 });
68 s.listen(defaultPort)
69 .on('listening', () => {
70 resolve(s);
71 })
72 .on('error', (e) => {
73 s.listen().on('listening', () => {
74 resolve(s);
75 });
76 });
77 });
78
79export function getServerURL(server: http.Server): string {
80 const address = server.address();

Callers 1

setupFunction · 0.90

Calls 2

replaceMethod · 0.65
onMethod · 0.65

Tested by 1

setupFunction · 0.72