2025-03-18 11:24:46 +08:00

54 lines
1.5 KiB
JavaScript

async function readStream(stream) {
const reader = stream.getReader();
let result = '';
while (true) {
const { done, value } = await reader.read();
if (done) {
break;
}
result += new TextDecoder().decode(value);
}
return result;
}
self.addEventListener('fetch', async (event) => {
const url = new URL(event.request.url);
// Check if the request is for the specific path
if (url.pathname.startsWith('/api/s1/sw/js/')) {
console.log('event', event);
console.log('url', url, event.request.method, 'mode', event.request.mode, event.request.destination);
// const body = event.request.body;
// const method = event.request.method;
// const bodyText = await readStream(body);
// console.log('body', bodyText);
console.log('event.request', event.request.destination);
event.respondWith(
new Response('export const a = 1', {
status: 200,
headers: {
'Content-Type': 'application/javascript',
},
}),
);
return;
}
if (url.pathname.startsWith('/api/s1/sw/js/')) {
event.respondWith(
fetch(event.request).then((response) => {
// Clone the response to modify headers
const newHeaders = new Headers(response.headers);
newHeaders.set('Content-Type', 'application/javascript');
// Return a new response with the modified headers
return new Response(response.body, {
status: response.status,
statusText: response.statusText,
headers: newHeaders,
});
}),
);
}
});