( env: PreloadErrorEnvironment, error: unknown, )
| 46 | | "reported"; |
| 47 | |
| 48 | export const respondToPreloadError = async ( |
| 49 | env: PreloadErrorEnvironment, |
| 50 | error: unknown, |
| 51 | ): Promise<PreloadErrorOutcome> => { |
| 52 | if (await env.probeServer()) { |
| 53 | // The origin answers, so this is a stale chunk rather than a dead server. |
| 54 | // Exactly one reload per session, so a chunk that stays missing cannot |
| 55 | // turn into a reload loop — it gets reported instead. |
| 56 | if (env.readReloadFlag()) { |
| 57 | env.report(error); |
| 58 | return "reported"; |
| 59 | } |
| 60 | env.writeReloadFlag(); |
| 61 | env.reload(); |
| 62 | return "reloaded"; |
| 63 | } |
| 64 | |
| 65 | env.showDisconnected(); |
| 66 | for (;;) { |
| 67 | await env.delay(RECONNECT_POLL_MS); |
| 68 | if (await env.probeServer()) { |
| 69 | env.reload(); |
| 70 | return "reconnected"; |
| 71 | } |
| 72 | } |
| 73 | }; |
| 74 | |
| 75 | /** Vite dispatches the failure as `CustomEvent<{ payload: Error }>`. */ |
| 76 | const preloadErrorPayload = (event: Event): unknown => |
no outgoing calls
no test coverage detected