mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-17 18:49:39 +02:00
Add missing organization features for Teams functionality: - PUT /auth/organizations/:id - update organization - DELETE /auth/organizations/:id - delete organization - PATCH /auth/organizations/:orgId/members/:memberId/role - update member role - GET /auth/organizations/:id/invitations - list org invitations - GET /auth/invitations - list user invitations - DELETE /auth/invitations/:id - cancel or reject invitation
124 lines
2.7 KiB
TypeScript
124 lines
2.7 KiB
TypeScript
/**
|
|
* Workbox Runtime Caching Presets
|
|
*
|
|
* Provides pre-configured caching strategies for different app types:
|
|
* - minimal: Static assets only
|
|
* - standard: + API + Images
|
|
* - full: + Fonts + External resources
|
|
*/
|
|
|
|
import type { RuntimeCaching } from 'workbox-build';
|
|
import type { WorkboxPreset } from './types.js';
|
|
|
|
/**
|
|
* API caching strategy - NetworkFirst with fallback
|
|
* Used for all *.mana.how API endpoints
|
|
*/
|
|
const API_CACHE: RuntimeCaching = {
|
|
urlPattern: /^https:\/\/.*\.mana\.how\/api\/.*/i,
|
|
handler: 'NetworkFirst',
|
|
options: {
|
|
cacheName: 'api-cache',
|
|
expiration: {
|
|
maxEntries: 100,
|
|
maxAgeSeconds: 60 * 60 * 24, // 24 hours
|
|
},
|
|
cacheableResponse: {
|
|
statuses: [0, 200],
|
|
},
|
|
},
|
|
};
|
|
|
|
/**
|
|
* Image caching strategy - CacheFirst for performance
|
|
* Caches images for 30 days
|
|
*/
|
|
const IMAGE_CACHE: RuntimeCaching = {
|
|
urlPattern: /\.(?:png|jpg|jpeg|svg|gif|webp)$/i,
|
|
handler: 'CacheFirst',
|
|
options: {
|
|
cacheName: 'image-cache',
|
|
expiration: {
|
|
maxEntries: 200,
|
|
maxAgeSeconds: 60 * 60 * 24 * 30, // 30 days
|
|
},
|
|
},
|
|
};
|
|
|
|
/**
|
|
* Font caching strategy - CacheFirst with long expiration
|
|
* For Google Fonts and other web fonts
|
|
*/
|
|
const FONT_CACHE: RuntimeCaching = {
|
|
urlPattern: /^https:\/\/fonts\.(?:googleapis|gstatic)\.com\/.*/i,
|
|
handler: 'CacheFirst',
|
|
options: {
|
|
cacheName: 'font-cache',
|
|
expiration: {
|
|
maxEntries: 30,
|
|
maxAgeSeconds: 60 * 60 * 24 * 365, // 1 year
|
|
},
|
|
cacheableResponse: {
|
|
statuses: [0, 200],
|
|
},
|
|
},
|
|
};
|
|
|
|
/**
|
|
* External resources caching - StaleWhileRevalidate
|
|
* For CDN resources and external APIs
|
|
*/
|
|
const EXTERNAL_CACHE: RuntimeCaching = {
|
|
urlPattern: /^https:\/\/cdn\..*/i,
|
|
handler: 'StaleWhileRevalidate',
|
|
options: {
|
|
cacheName: 'external-cache',
|
|
expiration: {
|
|
maxEntries: 50,
|
|
maxAgeSeconds: 60 * 60 * 24 * 7, // 7 days
|
|
},
|
|
cacheableResponse: {
|
|
statuses: [0, 200],
|
|
},
|
|
},
|
|
};
|
|
|
|
/**
|
|
* Preset configurations for different caching strategies
|
|
*/
|
|
const PRESETS: Record<WorkboxPreset, RuntimeCaching[]> = {
|
|
/**
|
|
* Minimal preset - Only static assets (precached)
|
|
* Use for simple apps without API calls
|
|
*/
|
|
minimal: [],
|
|
|
|
/**
|
|
* Standard preset - Static + API + Images
|
|
* Recommended for most apps
|
|
*/
|
|
standard: [API_CACHE, IMAGE_CACHE],
|
|
|
|
/**
|
|
* Full preset - Standard + Fonts + External resources
|
|
* Use for apps with custom fonts or external CDN resources
|
|
*/
|
|
full: [API_CACHE, IMAGE_CACHE, FONT_CACHE, EXTERNAL_CACHE],
|
|
};
|
|
|
|
/**
|
|
* Get runtime caching rules for a preset
|
|
*/
|
|
export function getPresetRuntimeCaching(preset: WorkboxPreset): RuntimeCaching[] {
|
|
return PRESETS[preset] ?? PRESETS.standard;
|
|
}
|
|
|
|
/**
|
|
* Export individual cache strategies for custom configurations
|
|
*/
|
|
export const cacheStrategies = {
|
|
api: API_CACHE,
|
|
images: IMAGE_CACHE,
|
|
fonts: FONT_CACHE,
|
|
external: EXTERNAL_CACHE,
|
|
};
|