PageSourceSearch

https://chat-gpt-next-web-phi-five-55.vercel.app/serviceWorker.js

js chat-gpt-next-web-phi-five-55.vercel.app collected 2026-10-03 06:25:12 UTC 2,048 bytes, 62 lines download raw bytes

1const CHATGPT_NEXT_WEB_CACHE = "chatgpt-next-web-cache";
2const CHATGPT_NEXT_WEB_FILE_CACHE = "chatgpt-next-web-file";
3let a="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let nanoid=(e=21)=>{let t="",r=crypto.getRandomValues(new Uint8Array(e));for(let n=0;n<e;n++)t+=a[63&r[n]];return t};
4
5self.addEventListener("activate", function (event) {
6  console.log("ServiceWorker activated.");
7});
8
9self.addEventListener("install", function (event) {
10  self.skipWaiting();  // enable new version
11  event.waitUntil(
12    caches.open(CHATGPT_NEXT_WEB_CACHE).then(function (cache) {
13      return cache.addAll([]);
14    }),
15  );
16});
17
18function jsonify(data) {
19  return new Response(JSON.stringify(data), { headers: { 'content-type': 'application/json' } })
20}
21
22async function upload(request, url) {
23  const formData = await request.formData()
24  const file = formData.getAll('file')[0]
25  let ext = file.name.split('.').pop()
26  if (ext === 'blob') {
27    ext = file.type.split('/').pop()
28  }
29  const fileUrl = `${url.origin}/api/cache/${nanoid()}.${ext}`
30  // console.debug('file', file, fileUrl, request)
31  const cache = await caches.open(CHATGPT_NEXT_WEB_FILE_CACHE)
32  await cache.put(new Request(fileUrl), new Response(file, {
33    headers: {
34      'content-type': file.type,
35      'content-length': file.size,
36      'cache-control': 'no-cache', // file already store in disk
37      'server': 'ServiceWorker',
38    }
39  }))
40  return jsonify({ code: 0, data: fileUrl })
41}
42
43async function remove(request, url) {
44  const cache = await caches.open(CHATGPT_NEXT_WEB_FILE_CACHE)
45  const res = await cache.delete(request.url)
46  return jsonify({ code: 0 })
47}
48
49self.addEventListener("fetch", (e) => {
50  const url = new URL(e.request.url);
51  if (/^\/api\/cache/.test(url.pathname)) {
52    if ('GET' == e.request.method) {
53      e.respondWith(caches.match(e.request))
54    }
55    if ('POST' == e.request.method) {
56      e.respondWith(upload(e.request, url))
57    }
58    if ('DELETE' == e.request.method) {
59      e.respondWith(remove(e.request, url))
60    }
61  }
62});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.