2017-09-28 19:18:12 -04:00
|
|
|
/**
|
|
|
|
* @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;
|
|
|
|
}
|
|
|
|
|
2017-10-02 18:59:57 -04:00
|
|
|
export interface DebugLogger { log(value: string|Error, context?: string): void; }
|
|
|
|
|
2017-09-28 19:18:12 -04:00
|
|
|
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>;
|
|
|
|
}
|