angular-cn/packages/service-worker/worker/src/api.ts

111 lines
3.0 KiB
TypeScript
Raw Normal View History

/**
* @license
* Copyright Google Inc. 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.io/license
*/
export enum UpdateCacheStatus {
NOT_CACHED,
CACHED_BUT_UNUSED,
CACHED,
}
/**
* A source for old versions of URL contents and other resources.
*
* Used to abstract away the fetching of old contents, to avoid a
* circular dependency between the `Driver` and `AppVersion`. Without
* this interface, `AppVersion` would need a reference to the `Driver`
* to access information from other versions.
*/
export interface UpdateSource {
/**
* Lookup an older version of a resource for which the hash is known.
*
* If an old version of the resource doesn't exist, or exists but does
* not match the hash given, this returns null.
*/
lookupResourceWithHash(url: string, hash: string): Promise<Response|null>;
/**
* Lookup an older version of a resource for which the hash is not known.
*
* This will return the most recent previous version of the resource, if
* it exists. It returns a `CacheState` object which encodes not only the
* `Response`, but the cache metadata needed to re-cache the resource in
* a newer `AppVersion`.
*/
lookupResourceWithoutHash(url: string): Promise<CacheState|null>;
/**
* List the URLs of all of the resources which were previously cached.
*
* This allows for the discovery of resources which are not listed in the
* manifest but which were picked up because they matched URL patterns.
*/
previouslyCachedResources(): Promise<string[]>;
/**
* Check whether a particular resource exists in the most recent cache.
*
* This returns a state value which indicates whether the resource was
* cached at all and whether that cache was utilized.
*/
recentCacheStatus(url: string): Promise<UpdateCacheStatus>;
}
/**
* Metadata cached along with a URL.
*/
export interface UrlMetadata {
/**
* The timestamp, in UNIX time in milliseconds, of when this URL was stored
* in the cache.
*/
ts: number;
/**
* Whether the resource was requested before for this particular cached
* instance.
*/
used: boolean;
}
/**
* The fully cached state of a resource, including both the `Response` itself
* and the cache metadata.
*/
export interface CacheState {
response: Response;
metadata?: UrlMetadata;
}
export interface DebugLogger { log(value: string|Error, context?: string): void; }
export interface DebugState {
state: string;
why: string;
latestHash: string|null;
lastUpdateCheck: number|null;
}
export interface DebugVersion {
hash: string;
manifest: Object;
clients: string[];
status: string;
}
export interface DebugIdleState {
queue: string[];
lastTrigger: number|null;
lastRun: number|null;
}
export interface Debuggable {
debugState(): Promise<DebugState>;
debugVersions(): Promise<DebugVersion[]>;
debugIdleState(): Promise<DebugIdleState>;
}