(sourceEvent: FetchEvent)
| 198 | |
| 199 | let App: any; |
| 200 | export function createSingleFlightHeaders(sourceEvent: FetchEvent) { |
| 201 | // cookie handling logic is pretty simplistic so this might be imperfect |
| 202 | // unclear if h3 internals are available on all platforms but we need a way to |
| 203 | // update request headers on the underlying H3 event. |
| 204 | |
| 205 | const headers = new Headers(sourceEvent.request.headers); |
| 206 | const cookies = parseCookies(sourceEvent.nativeEvent); |
| 207 | const SetCookies = sourceEvent.response.headers.getSetCookie(); |
| 208 | headers.delete("cookie"); |
| 209 | // let useH3Internals = false; |
| 210 | // if (sourceEvent.nativeEvent.node?.req) { |
| 211 | // useH3Internals = true; |
| 212 | // sourceEvent.nativeEvent.node.req.headers.cookie = ""; |
| 213 | // } |
| 214 | SetCookies.forEach(cookie => { |
| 215 | if (!cookie) return; |
| 216 | const { maxAge, expires, name, value } = parseSetCookie(cookie); |
| 217 | if (maxAge != null && maxAge <= 0) { |
| 218 | delete cookies[name]; |
| 219 | return; |
| 220 | } |
| 221 | if (expires != null && expires.getTime() <= Date.now()) { |
| 222 | delete cookies[name]; |
| 223 | return; |
| 224 | } |
| 225 | cookies[name] = value; |
| 226 | }); |
| 227 | Object.entries(cookies).forEach(([key, value]) => { |
| 228 | headers.append("cookie", `${key}=${value}`); |
| 229 | // useH3Internals && |
| 230 | // (sourceEvent.nativeEvent.node.req.headers.cookie += `${key}=${value};`); |
| 231 | }); |
| 232 | |
| 233 | return headers; |
| 234 | } |
| 235 | async function handleSingleFlight(sourceEvent: FetchEvent, result: any): Promise<Response> { |
| 236 | let revalidate: string[]; |
| 237 | let url = new URL(sourceEvent.request.headers.get("referer")!).toString(); |
no outgoing calls
no test coverage detected
searching dependent graphs…