google-closure-compiler
Version:
Check, compile, optimize and compress Javascript with Closure-Compiler
740 lines (587 loc) • 18.4 kB
JavaScript
/*
* Copyright 2014 The Closure Compiler Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @fileoverview Externs for service worker.
*
* @see http://www.w3.org/TR/service-workers/
* @externs
*/
/**
* @see http://www.w3.org/TR/service-workers/#service-worker-interface
* @constructor
* @extends {Worker}
*/
function ServiceWorker() {}
/** @type {string} */
ServiceWorker.prototype.scriptURL;
/** @type {ServiceWorkerState} */
ServiceWorker.prototype.state;
/** @type {?function(!Event)} */
ServiceWorker.prototype.onstatechange;
/**
* Set of possible string values: 'installing', 'installed', 'activating',
* 'activated', 'redundant'.
* @typedef {string}
*/
var ServiceWorkerState;
/**
* @see https://w3c.github.io/ServiceWorker/#navigationpreloadmanager
* @constructor
*/
function NavigationPreloadManager() {}
/** @return {!Promise<void>} */
NavigationPreloadManager.prototype.enable = function() {};
/** @return {!Promise<void>} */
NavigationPreloadManager.prototype.disable = function() {};
/**
* @param {string=} value
* @return {!Promise<void>}
*/
NavigationPreloadManager.prototype.setHeaderValue = function(value) {};
/** @return {!Promise<NavigationPreloadState>} */
NavigationPreloadManager.prototype.getState = function() {};
/**
* @typedef {{
* enabled: (boolean|undefined),
* headerValue: (string|undefined)
* }}
*/
var NavigationPreloadState;
/** @record */
function PushSubscriptionOptions() {}
/** @type {ArrayBuffer|undefined} */
PushSubscriptionOptions.prototype.applicationServerKey;
/** @type {boolean|undefined} */
PushSubscriptionOptions.prototype.userVisibleOnly;
/** @record */
function PushSubscriptionOptionsInit() {}
/** @type {BufferSource|string|undefined} */
PushSubscriptionOptionsInit.prototype.applicationServerKey;
/** @type {boolean|undefined} */
PushSubscriptionOptionsInit.prototype.userVisibleOnly;
/**
* @see https://w3c.github.io/push-api/
* @constructor
*/
function PushSubscription() {}
/** @type {string} */
PushSubscription.prototype.endpoint;
/** @type {number|null} */
PushSubscription.prototype.expirationTime;
/**
* Please note there is an intent to deprecate this field in Chrome 43 or 44.
* See https://www.chromestatus.com/feature/5283829761703936.
* @type {string}
*/
PushSubscription.prototype.subscriptionId;
/** @type {!PushSubscriptionOptions} */
PushSubscription.prototype.options;
/** @return {!Promise<boolean>} */
PushSubscription.prototype.unsubscribe = function() {};
/**
* @param {string} name
* @return {!ArrayBuffer|null}
*/
PushSubscription.prototype.getKey = function(name) {};
/**
* @see https://w3c.github.io/push-api/#idl-def-PushManager
* @constructor
*/
function PushManager() {}
/**
* @const {!Array<string>}
*/
PushManager.supportedContentEncodings;
/**
* @param {PushSubscriptionOptionsInit=} opt_options
* @return {!Promise<!PushSubscription>}
*/
PushManager.prototype.subscribe = function(opt_options) {};
/** @return {!Promise<PushSubscription>} */
PushManager.prototype.getSubscription = function() {};
/**
* @param {PushSubscriptionOptionsInit=} options
* @return {!Promise<string>}
*/
PushManager.prototype.permissionState = function(options) {};
/**
* @see https://wicg.github.io/BackgroundSync/spec/#sync-manager-interface
* @constructor
*/
function SyncManager() {}
/**
* @param {string} tag
* @return {!Promise<void>}
*/
SyncManager.prototype.register = function(tag) {}
/**
* @return {!Promise<Array<string>>}
*/
SyncManager.prototype.getTags = function() {}
/**
* @see https://wicg.github.io/BackgroundSync/spec/#sync-event
* @constructor
* @extends{ExtendableEvent}
*/
function SyncEvent() {}
/** @type {string} */
SyncEvent.prototype.tag;
/** @type {boolean} */
SyncEvent.prototype.lastChance;
/**
* @see http://www.w3.org/TR/push-api/#idl-def-PushMessageData
* @constructor
*/
function PushMessageData() {}
/** @return {!ArrayBuffer} */
PushMessageData.prototype.arrayBuffer = function() {};
/** @return {!Blob} */
PushMessageData.prototype.blob = function() {};
/** @return {*} */
PushMessageData.prototype.json = function() {};
/** @return {string} */
PushMessageData.prototype.text = function() {};
/**
* @see http://www.w3.org/TR/push-api/#idl-def-PushEvent
* @constructor
* @param {string} type
* @param {!ExtendableEventInit=} opt_eventInitDict
* @extends {ExtendableEvent}
*/
function PushEvent(type, opt_eventInitDict) {}
/** @type {?PushMessageData} */
PushEvent.prototype.data;
/**
* @see http://www.w3.org/TR/service-workers/#service-worker-registration-interface
* @interface
* @extends {EventTarget}
*/
function ServiceWorkerRegistration() {}
/** @type {ServiceWorker} */
ServiceWorkerRegistration.prototype.installing;
/** @type {ServiceWorker} */
ServiceWorkerRegistration.prototype.waiting;
/** @type {ServiceWorker} */
ServiceWorkerRegistration.prototype.active;
/** @type {NavigationPreloadManager} */
ServiceWorkerRegistration.prototype.navigationPreload;
/** @type {string} */
ServiceWorkerRegistration.prototype.scope;
/** @return {!Promise<boolean>} */
ServiceWorkerRegistration.prototype.unregister = function() {};
/** @type {?function(!Event)} */
ServiceWorkerRegistration.prototype.onupdatefound;
/** @return {!Promise<void>} */
ServiceWorkerRegistration.prototype.update = function() {};
/**
* @see https://w3c.github.io/push-api/
* @type {!PushManager}
*/
ServiceWorkerRegistration.prototype.pushManager;
/**
* @see https://notifications.spec.whatwg.org/#service-worker-api
* @param {string} title
* @param {NotificationOptions=} opt_options
* @return {!Promise<void>}
*/
ServiceWorkerRegistration.prototype.showNotification =
function(title, opt_options) {};
/**
* @see https://notifications.spec.whatwg.org/#service-worker-api
* @param {!GetNotificationOptions=} opt_filter
* @return {!Promise<?Array<?Notification>>}
*/
ServiceWorkerRegistration.prototype.getNotifications = function(opt_filter) {};
/**
* @see https://wicg.github.io/BackgroundSync/spec/#service-worker-registration-extensions
* @type {!SyncManager}
*/
ServiceWorkerRegistration.prototype.sync;
/**
* @see http://www.w3.org/TR/service-workers/#service-worker-container-interface
* @interface
* @extends {EventTarget}
*/
function ServiceWorkerContainer() {}
/** @type {?ServiceWorker} */
ServiceWorkerContainer.prototype.controller;
/** @type {!Promise<!ServiceWorkerRegistration>} */
ServiceWorkerContainer.prototype.ready;
/**
* @param {!TrustedScriptURL|!URL|string} scriptURL
* @param {RegistrationOptions=} opt_options
* @return {!Promise<!ServiceWorkerRegistration>}
*/
ServiceWorkerContainer.prototype.register = function(scriptURL, opt_options) {};
/**
* @param {!URL|string=} documentURL
* @return {!Promise<!ServiceWorkerRegistration|undefined>}
*/
ServiceWorkerContainer.prototype.getRegistration = function(documentURL) {};
/**
* @return {!Promise<Array<!ServiceWorkerRegistration>>}
*/
ServiceWorkerContainer.prototype.getRegistrations = function() {};
/** @type {?function(!Event): void} */
ServiceWorkerContainer.prototype.oncontrollerchange;
/** @type {?function(!ExtendableMessageEvent): void} */
ServiceWorkerContainer.prototype.onmessage;
/** @type {?function(!MessageEvent<*>)} */
ServiceWorkerContainer.prototype.onmessageerror;
/** @type {?function(!ErrorEvent): void} */
ServiceWorkerContainer.prototype.onerror;
/** @return {undefined} */
ServiceWorkerContainer.prototype.startMessages = function() {};
/**
* @typedef {{scope: (string|undefined), useCache: (boolean|undefined), updateViaCache: (string|undefined)}}
*/
var RegistrationOptions;
/** @type {!ServiceWorkerContainer} */
Navigator.prototype.serviceWorker;
/**
* @see http://www.w3.org/TR/service-workers/#service-worker-global-scope-interface
* @interface
* @extends {WorkerGlobalScope}
*/
function ServiceWorkerGlobalScope() {}
/** @type {!Cache} */
ServiceWorkerGlobalScope.prototype.scriptCache;
/** @type {!CacheStorage} */
ServiceWorkerGlobalScope.prototype.caches;
/** @type {!ServiceWorkerClients} */
ServiceWorkerGlobalScope.prototype.clients;
/** @type {string} */
ServiceWorkerGlobalScope.prototype.scope;
/** @type {!ServiceWorkerRegistration} */
ServiceWorkerGlobalScope.prototype.registration;
/** @return {!Promise<void>} */
ServiceWorkerGlobalScope.prototype.skipWaiting = function() {};
/** @type {!Console} */
ServiceWorkerGlobalScope.prototype.console;
/** @type {?function(!InstallEvent)} */
ServiceWorkerGlobalScope.prototype.oninstall;
/** @type {?function(!ExtendableEvent)} */
ServiceWorkerGlobalScope.prototype.onactivate;
/** @type {?function(!FetchEvent)} */
ServiceWorkerGlobalScope.prototype.onfetch;
/**
* TODO(mtragut): This handler should get a custom event in the future.
* @type {?function(!Event)}
*/
ServiceWorkerGlobalScope.prototype.onbeforeevicted;
/**
* TODO(mtragut): This handler should get a custom event in the future.
* @type {?function(!Event)}
*/
ServiceWorkerGlobalScope.prototype.onevicted;
/** @type {?function(!MessageEvent)} */
ServiceWorkerGlobalScope.prototype.onmessage;
/**
* While not strictly correct, this should be effectively correct. Notification
* is the Notification constructor but calling it from the Service Worker throws
* (https://notifications.spec.whatwg.org/#constructors) so its only use is as
* an object holding some static properties (note that requestPermission is only
* exposed to window context - https://notifications.spec.whatwg.org/#api).
*
* @type {{
* permission: string,
* maxActions: number,
* }}
*/
ServiceWorkerGlobalScope.prototype.Notification;
/**
* @see http://www.w3.org/TR/service-workers/#service-worker-client-interface
* @constructor
*/
function ServiceWorkerClient() {}
/** @type {!Promise<void>} */
ServiceWorkerClient.prototype.ready;
/** @type {boolean} */
ServiceWorkerClient.prototype.hidden;
/** @type {boolean} */
ServiceWorkerClient.prototype.focused;
/** @type {VisibilityState} */
ServiceWorkerClient.prototype.visibilityState;
/** @type {string} */
ServiceWorkerClient.prototype.url;
/** @type {string} */
ServiceWorkerClient.prototype.id;
/**
* // TODO(mtragut): Possibly replace the type with enum ContextFrameType once
* the enum is defined.
* @type {string}
*/
ServiceWorkerClient.prototype.frameType;
/**
* @param {*} message
* @param {(!Array<!Transferable>|undefined)=} opt_transfer
* @return {undefined}
*/
ServiceWorkerClient.prototype.postMessage = function(message, opt_transfer) {};
/** @return {!Promise} */
ServiceWorkerClient.prototype.focus = function() {};
/**
* @param {!URL|string} url
* @return {!Promise<!ServiceWorkerClient>}
*/
ServiceWorkerClient.prototype.navigate = function(url) {};
/**
* @see http://www.w3.org/TR/service-workers/#service-worker-clients-interface
* @interface
*/
function ServiceWorkerClients() {}
/**
* Deprecated in Chrome M43+, use matchAll instead. Reference:
* https://github.com/slightlyoff/ServiceWorker/issues/610.
* TODO(joeltine): Remove when getAll is fully deprecated.
* @param {ServiceWorkerClientQueryOptions=} opt_options
* @return {!Promise<!Array<!ServiceWorkerClient>>}
*/
ServiceWorkerClients.prototype.getAll = function(opt_options) {};
/**
* @param {ServiceWorkerClientQueryOptions=} opt_options
* @return {!Promise<!Array<!ServiceWorkerClient>>}
*/
ServiceWorkerClients.prototype.matchAll = function(opt_options) {};
/**
* @return {!Promise<void>}
*/
ServiceWorkerClients.prototype.claim = function() {};
/**
* @param {!URL|string} url
* @return {!Promise<!ServiceWorkerClient>}
*/
ServiceWorkerClients.prototype.openWindow = function(url) {};
/**
* @param {string} id
* @return {!Promise<!ServiceWorkerClient|undefined>}
*/
ServiceWorkerClients.prototype.get = function(id) {};
/** @typedef {{includeUncontrolled: (boolean|undefined)}} */
var ServiceWorkerClientQueryOptions;
/**
* @see http://www.w3.org/TR/service-workers/#cache-interface
* @interface
*/
function Cache() {}
/**
* @param {!RequestInfo} request
* @param {CacheQueryOptions=} opt_options
* @return {!Promise<!Response|undefined>}
*/
Cache.prototype.match = function(request, opt_options) {};
/**
* @param {RequestInfo=} opt_request
* @param {CacheQueryOptions=} opt_options
* @return {!Promise<!Array<!Response>>}
*/
Cache.prototype.matchAll = function(opt_request, opt_options) {};
/**
* @param {!RequestInfo} request
* @return {!Promise<void>}
*/
Cache.prototype.add = function(request) {};
/**
* @param {!Array<!RequestInfo>} requests
* @return {!Promise<void>}
*/
Cache.prototype.addAll = function(requests) {};
/**
* @param {!RequestInfo} request
* @param {!Response} response
* @return {!Promise<void>}
*/
Cache.prototype.put = function(request, response) {};
/**
* @param {!RequestInfo} request
* @param {CacheQueryOptions=} opt_options
* @return {!Promise<boolean>}
*/
Cache.prototype.delete = function(request, opt_options) {};
/**
* @param {RequestInfo=} opt_request
* @param {CacheQueryOptions=} opt_options
* @return {!Promise<!Array<!Request>>}
*/
Cache.prototype.keys = function(opt_request, opt_options) {};
/**
* @typedef {{
* ignoreSearch: (boolean|undefined),
* ignoreMethod: (boolean|undefined),
* ignoreVary: (boolean|undefined),
* prefixMatch: (boolean|undefined),
* cacheName: (string|undefined)
* }}
*/
var CacheQueryOptions;
/**
* @see http://www.w3.org/TR/service-workers/#cache-storage-interface
* @interface
*/
function CacheStorage() {}
/**
* Window instances have a property called caches which implements CacheStorage
* @see https://www.w3.org/TR/service-workers/#cache-objects
* @type {!CacheStorage}
*/
Window.prototype.caches;
/**
* @param {!RequestInfo} request
* @param {CacheQueryOptions=} opt_options
* @return {!Promise<!Response|undefined>}
*/
CacheStorage.prototype.match = function(request, opt_options) {};
/**
* @param {string} cacheName
* @return {!Promise<boolean>}
*/
CacheStorage.prototype.has = function(cacheName) {};
/**
* @param {string} cacheName
* @return {!Promise<!Cache>}
*/
CacheStorage.prototype.open = function(cacheName) {};
/**
* @param {string} cacheName
* @return {!Promise<boolean>}
*/
CacheStorage.prototype.delete = function(cacheName) {};
/** @return {!Promise<!Array<string>>} */
CacheStorage.prototype.keys = function() {};
/**
* @see http://www.w3.org/TR/service-workers/#extendable-event-interface
* @constructor
* @param {string} type
* @param {ExtendableEventInit=} opt_eventInitDict
* @extends {Event}
*/
function ExtendableEvent(type, opt_eventInitDict) {}
/**
* @param {IThenable} f
* @return {undefined}
*/
ExtendableEvent.prototype.waitUntil = function(f) {};
/**
* @typedef {{
* bubbles: (boolean|undefined),
* cancelable: (boolean|undefined)
* }}
*/
var ExtendableEventInit;
/**
* @see http://www.w3.org/TR/service-workers/#install-event-interface
* @constructor
* @param {string} type
* @param {InstallEventInit=} opt_eventInitDict
* @extends {ExtendableEvent}
*/
function InstallEvent(type, opt_eventInitDict) {}
/** @type {ServiceWorker} */
ExtendableEvent.prototype.activeWorker;
/**
* @typedef {{
* bubbles: (boolean|undefined),
* cancelable: (boolean|undefined),
* activeWorker: (!ServiceWorker|undefined)
* }}
*/
var InstallEventInit;
/**
* @see http://www.w3.org/TR/service-workers/#fetch-event-interface
* @constructor
* @param {string} type
* @param {FetchEventInit=} opt_eventInitDict
* @extends {ExtendableEvent}
*/
function FetchEvent(type, opt_eventInitDict) {}
/** @type {!Request} */
FetchEvent.prototype.request;
/**
* @type {!Promise<Response>}
*/
FetchEvent.prototype.preloadResponse;
/**
* @type {!ServiceWorkerClient}
* @deprecated
*/
FetchEvent.prototype.client;
/** @type {?string} */
FetchEvent.prototype.clientId;
/** @type {boolean} */
FetchEvent.prototype.isReload;
/** @type {?string} */
FetchEvent.prototype.resultingClientId;
/**
* @param {(Response|IThenable<Response>)} r
* @return {undefined}
*/
FetchEvent.prototype.respondWith = function(r) {};
/**
* @param {string} url
* @return {!Promise<!Response>}
*/
FetchEvent.prototype.forwardTo = function(url) {};
/**
* @return {!Promise<!Response>}
*/
FetchEvent.prototype.default = function() {};
/**
* @typedef {{
* bubbles: (boolean|undefined),
* cancelable: (boolean|undefined),
* request: (!Request|undefined),
* preloadResponse: (!Promise<Response>),
* client: (!ServiceWorkerClient|undefined),
* isReload: (boolean|undefined)
* }}
*/
var FetchEventInit;
/**
* @see https://www.w3.org/TR/service-workers/#extendablemessage-event-interface
* @param {string} type
* @param {!ExtendableMessageEventInit<T>=} opt_eventInitDict
* @constructor
* @extends {ExtendableEvent}
* @template T
*/
function ExtendableMessageEvent(type, opt_eventInitDict) {};
/** @type {T} */
ExtendableMessageEvent.prototype.data;
/** @type {string} */
ExtendableMessageEvent.prototype.origin;
/** @type {string} */
ExtendableMessageEvent.prototype.lastEventId;
/** @type {?ServiceWorkerClient|?ServiceWorker|?MessagePort} */
ExtendableMessageEvent.prototype.source;
/** @type {?Array<!MessagePort>} */
ExtendableMessageEvent.prototype.ports;
/**
* @see https://www.w3.org/TR/service-workers/#extendablemessage-event-init-dictionary
* @record
* @extends {ExtendableEventInit}
* @template T
*/
function ExtendableMessageEventInit() {};
/** @type {T} */
ExtendableMessageEventInit.prototype.data;
/** @type {string|undefined} */
ExtendableMessageEventInit.prototype.origin;
/** @type {string|undefined} */
ExtendableMessageEventInit.prototype.lastEventId;
/** @type {!ServiceWorkerClient|!ServiceWorker|!MessagePort|undefined} */
ExtendableMessageEventInit.prototype.source;
/** @type {!Array<!MessagePort>|undefined} */
ExtendableMessageEventInit.prototype.ports;