Files
meeting-room/frontend/node_modules/workbox-recipes/offlineFallback.js
flying-hero 96f6318101 📦 添加虚拟环境和启动脚本
新增:
- backend/venv/ - Python 虚拟环境
- backend/start.sh - 启动脚本(使用虚拟环境)
- backend/requirements.txt - 依赖列表
- .gitignore - 忽略虚拟环境和缓存文件

说明:
- 每个项目使用独立虚拟环境
- 避免依赖冲突
- 启动脚本自动创建和激活虚拟环境
2026-04-04 18:29:02 +08:00

60 lines
2.4 KiB
JavaScript

/*
Copyright 2020 Google LLC
Use of this source code is governed by an MIT-style
license that can be found in the LICENSE file or at
https://opensource.org/licenses/MIT.
*/
import { setCatchHandler } from 'workbox-routing/setCatchHandler.js';
import { matchPrecache } from 'workbox-precaching/matchPrecache.js';
import './_version.js';
/**
* An implementation of the [comprehensive fallbacks recipe]{@link https://developers.google.com/web/tools/workbox/guides/advanced-recipes#comprehensive_fallbacks}. Be sure to include the fallbacks in your precache injection
*
* @memberof workbox-recipes
*
* @param {Object} [options]
* @param {string} [options.pageFallback] Precache name to match for pag fallbacks. Defaults to offline.html
* @param {string} [options.imageFallback] Precache name to match for image fallbacks.
* @param {string} [options.fontFallback] Precache name to match for font fallbacks.
*/
function offlineFallback(options = {}) {
const pageFallback = options.pageFallback || 'offline.html';
const imageFallback = options.imageFallback || false;
const fontFallback = options.fontFallback || false;
self.addEventListener('install', (event) => {
const files = [pageFallback];
if (imageFallback) {
files.push(imageFallback);
}
if (fontFallback) {
files.push(fontFallback);
}
event.waitUntil(self.caches
.open('workbox-offline-fallbacks')
.then((cache) => cache.addAll(files)));
});
const handler = async (options) => {
const dest = options.request.destination;
const cache = await self.caches.open('workbox-offline-fallbacks');
if (dest === 'document') {
const match = (await matchPrecache(pageFallback)) ||
(await cache.match(pageFallback));
return match || Response.error();
}
if (dest === 'image' && imageFallback !== false) {
const match = (await matchPrecache(imageFallback)) ||
(await cache.match(imageFallback));
return match || Response.error();
}
if (dest === 'font' && fontFallback !== false) {
const match = (await matchPrecache(fontFallback)) ||
(await cache.match(fontFallback));
return match || Response.error();
}
return Response.error();
};
setCatchHandler(handler);
}
export { offlineFallback };