30 lines
683 B
TypeScript
30 lines
683 B
TypeScript
import { CACHE } from "../constants";
|
|
|
|
const getCache = () => caches.open(CACHE);
|
|
|
|
/**
|
|
* Caches static files for application
|
|
*/
|
|
export const precache = async () =>
|
|
(await getCache()).addAll([
|
|
"/",
|
|
"/index.js",
|
|
"/sw.js",
|
|
"/manifest.json",
|
|
"/favicon.ico",
|
|
]);
|
|
|
|
/**
|
|
* Requests file from network or gets it from cache if offline
|
|
*/
|
|
export const fromCache = async (request: Request): Promise<Response> => {
|
|
try {
|
|
const response = await fetch(request);
|
|
(await getCache()).put(request, response.clone());
|
|
return response;
|
|
} catch (err) {
|
|
const response = await (await getCache()).match(request);
|
|
return response || new Response();
|
|
}
|
|
};
|