angular/packages/service-worker/config/src/in.ts
Henry Zhang 8ddce80a0b feat(service-worker): allow specifying maxAge for entire application (#49601)
This commit adds an `applicationMaxAge` to the service worker configuration. When set, it will only assign a cached version to clients within the `maxAge`. Afterwards, it will ignored any expired application versions and fetch exclusively from the network. The default is `undefined`, for which the behaviour is the same as it currently is.

PR Close #49601
2024-10-22 07:45:21 -07:00

65 lines
1.3 KiB
TypeScript

/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.dev/license
*/
/**
* @publicApi
*/
export type Glob = string;
/**
* @publicApi
*/
export type Duration = string;
/**
* A top-level Angular Service Worker configuration object.
*
* @publicApi
*/
export interface Config {
appData?: {};
index: string;
assetGroups?: AssetGroup[];
dataGroups?: DataGroup[];
navigationUrls?: string[];
navigationRequestStrategy?: 'freshness' | 'performance';
applicationMaxAge?: Duration;
}
/**
* Configuration for a particular group of assets.
*
* @publicApi
*/
export interface AssetGroup {
name: string;
installMode?: 'prefetch' | 'lazy';
updateMode?: 'prefetch' | 'lazy';
resources: {files?: Glob[]; urls?: Glob[]};
cacheQueryOptions?: Pick<CacheQueryOptions, 'ignoreSearch'>;
}
/**
* Configuration for a particular group of dynamic URLs.
*
* @publicApi
*/
export interface DataGroup {
name: string;
urls: Glob[];
version?: number;
cacheConfig: {
maxSize: number;
maxAge: Duration;
timeout?: Duration;
refreshAhead?: Duration;
strategy?: 'freshness' | 'performance';
cacheOpaqueResponses?: boolean;
};
cacheQueryOptions?: Pick<CacheQueryOptions, 'ignoreSearch'>;
}