summaryrefslogtreecommitdiff
path: root/dist/workbox-v3.2.0/workbox-broadcast-cache-update.dev.js
diff options
context:
space:
mode:
authorBrokenTalentsFun CI <ci@brokentalents.fun>2018-06-08 19:36:11 +0200
committerschneefux <schneefux+commit@schneefux.xyz>2018-12-13 17:09:16 +0100
commit10cf870629e860616899848d7f1c849d0b810342 (patch)
tree4c7e2831f3857c07681fefee1611d1c49f0ef25b /dist/workbox-v3.2.0/workbox-broadcast-cache-update.dev.js
parent505a67dc32206a0c603258d856fcbe00e53fc1f5 (diff)
downloadbrokentalents-10cf870629e860616899848d7f1c849d0b810342.tar.gz
brokentalents-10cf870629e860616899848d7f1c849d0b810342.zip
automatic build
Diffstat (limited to 'dist/workbox-v3.2.0/workbox-broadcast-cache-update.dev.js')
-rw-r--r--dist/workbox-v3.2.0/workbox-broadcast-cache-update.dev.js395
1 files changed, 395 insertions, 0 deletions
diff --git a/dist/workbox-v3.2.0/workbox-broadcast-cache-update.dev.js b/dist/workbox-v3.2.0/workbox-broadcast-cache-update.dev.js
new file mode 100644
index 0000000..ae1fec1
--- /dev/null
+++ b/dist/workbox-v3.2.0/workbox-broadcast-cache-update.dev.js
@@ -0,0 +1,395 @@
+this.workbox = this.workbox || {};
+this.workbox.broadcastUpdate = (function (exports,WorkboxError_mjs,logger_mjs,assert_mjs) {
+'use strict';
+
+try {
+ self.workbox.v['workbox:broadcast-cache-update:3.2.0'] = 1;
+} catch (e) {} // eslint-disable-line
+
+/*
+ Copyright 2016 Google Inc. All Rights Reserved.
+ 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.
+*/
+
+/**
+ * Given two `Response's`, compares several header values to see if they are
+ * the same or not.
+ *
+ * @param {Response} firstResponse
+ * @param {Response} secondResponse
+ * @param {Array<string>} headersToCheck
+ * @return {boolean}
+ *
+ * @memberof workbox.broadcastUpdate
+ * @private
+ */
+const responsesAreSame = (firstResponse, secondResponse, headersToCheck) => {
+ {
+ if (!(firstResponse instanceof Response && secondResponse instanceof Response)) {
+ throw new WorkboxError_mjs.WorkboxError('invalid-responses-are-same-args');
+ }
+ }
+
+ const atLeastOneHeaderAvailable = headersToCheck.some(header => {
+ return firstResponse.headers.has(header) && secondResponse.headers.has(header);
+ });
+
+ if (!atLeastOneHeaderAvailable) {
+ {
+ logger_mjs.logger.warn(`Unable to determine where the response has been updated ` + `because none of the headers that would be checked are present.`);
+ logger_mjs.logger.debug(`Attempting to compare the following: `, firstResponse, secondResponse, headersToCheck);
+ }
+
+ // Just return true, indicating the that responses are the same, since we
+ // can't determine otherwise.
+ return true;
+ }
+
+ return headersToCheck.every(header => {
+ const headerStateComparison = firstResponse.headers.has(header) === secondResponse.headers.has(header);
+ const headerValueComparison = firstResponse.headers.get(header) === secondResponse.headers.get(header);
+
+ return headerStateComparison && headerValueComparison;
+ });
+};
+
+/*
+ Copyright 2016 Google Inc. All Rights Reserved.
+ 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.
+*/
+
+var messageTypes = {
+ CACHE_UPDATED: 'CACHE_UPDATED'
+};
+
+/*
+ Copyright 2016 Google Inc. All Rights Reserved.
+ 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.
+*/
+
+/**
+ * You would not normally call this method directly; it's called automatically
+ * by an instance of the {@link BroadcastCacheUpdate} class. It's exposed here
+ * for the benefit of developers who would rather not use the full
+ * `BroadcastCacheUpdate` implementation.
+ *
+ * Calling this will dispatch a message on the provided
+ * {@link https://developers.google.com/web/updates/2016/09/broadcastchannel|Broadcast Channel}
+ * to notify interested subscribers about a change to a cached resource.
+ *
+ * The message that's posted has a formation inspired by the
+ * [Flux standard action](https://github.com/acdlite/flux-standard-action#introduction)
+ * format like so:
+ *
+ * ```
+ * {
+ * type: 'CACHE_UPDATED',
+ * meta: 'workbox-broadcast-cache-update',
+ * payload: {
+ * cacheName: 'the-cache-name',
+ * updatedUrl: 'https://example.com/'
+ * }
+ * }
+ * ```
+ *
+ * (Usage of [Flux](https://facebook.github.io/flux/) itself is not at
+ * all required.)
+ *
+ * @param {BroadcastChannel} channel The `BroadcastChannel` to use.
+ * @param {string} cacheName The name of the cache in which the updated
+ * `Response` was stored.
+ * @param {string} url The URL associated with the updated `Response`.
+ * @param {string} source A string identifying this library as the source
+ * of the update message.
+ *
+ * @memberof workbox.broadcastUpdate
+ */
+const broadcastUpdate = (channel, cacheName, url, source) => {
+ // There are browsers which support service workers but don't support the
+ // Broadcast Channel API.
+ // See https://github.com/GoogleChrome/workbox/issues/1304
+ if (!('BroadcastChannel' in self && channel)) {
+ {
+ logger_mjs.logger.debug(`${url} was updated, but the Broadcast Channel API is not ` + `available in the current browser.`);
+ }
+ return;
+ }
+
+ {
+ assert_mjs.assert.isInstance(channel, BroadcastChannel, {
+ moduleName: 'workbox-broadcast-cache-update',
+ className: '~',
+ funcName: 'broadcastUpdate',
+ paramName: 'channel'
+ });
+ assert_mjs.assert.isType(cacheName, 'string', {
+ moduleName: 'workbox-broadcast-cache-update',
+ className: '~',
+ funcName: 'broadcastUpdate',
+ paramName: 'cacheName'
+ });
+ assert_mjs.assert.isType(url, 'string', {
+ moduleName: 'workbox-broadcast-cache-update',
+ className: '~',
+ funcName: 'broadcastUpdate',
+ paramName: 'url'
+ });
+ assert_mjs.assert.isType(source, 'string', {
+ moduleName: 'workbox-broadcast-cache-update',
+ className: '~',
+ funcName: 'broadcastUpdate',
+ paramName: 'source'
+ });
+ }
+
+ channel.postMessage({
+ type: messageTypes.CACHE_UPDATED,
+ meta: source,
+ payload: {
+ cacheName: cacheName,
+ updatedUrl: url
+ }
+ });
+};
+
+/*
+ Copyright 2016 Google Inc. All Rights Reserved.
+ 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.
+*/
+
+/**
+ * Uses the [Broadcast Channel API]{@link https://developers.google.com/web/updates/2016/09/broadcastchannel}
+ * to notify interested parties when a cached response has been updated.
+ *
+ * For efficiency's sake, the underlying response bodies are not compared;
+ * only specific response headers are checked.
+ *
+ * @memberof workbox.broadcastUpdate
+ */
+class BroadcastCacheUpdate {
+ /**
+ * Construct a BroadcastCacheUpdate instance with a specific `channelName` to
+ * broadcast messages on
+ *
+ * @param {string} channelName The name that will be used when creating
+ * the `BroadcastChannel`.
+ * @param {Object} options
+ * @param {Array<string>}
+ * [options.headersToCheck=['content-length', 'etag', 'last-modified']] A
+ * list of headers that will be used to determine whether the responses
+ * differ.
+ * @param {string} [options.source='workbox-broadcast-cache-update'] An
+ * attribution value that indicates where the update originated.
+ */
+ constructor(channelName, { headersToCheck, source } = {}) {
+ {
+ if (typeof channelName !== 'string' || channelName.length === 0) {
+ throw new WorkboxError_mjs.WorkboxError('channel-name-required');
+ }
+ }
+
+ this._channelName = channelName;
+ this._headersToCheck = headersToCheck || ['content-length', 'etag', 'last-modified'];
+ this._source = source || 'workbox-broadcast-cache-update';
+
+ // TODO assert typeof headersToCheck instanceof Array
+ }
+
+ /**
+ * @return {BroadcastChannel|undefined} The BroadcastChannel instance used for
+ * broadcasting updates, or undefined if the browser doesn't support the
+ * Broadcast Channel API.
+ *
+ * @private
+ */
+ _getChannel() {
+ if ('BroadcastChannel' in self && !this._channel) {
+ this._channel = new BroadcastChannel(this._channelName);
+ }
+ return this._channel;
+ }
+
+ /**
+ * Compare two [Responses](https://developer.mozilla.org/en-US/docs/Web/API/Response)
+ * and send a message via the
+ * {@link https://developers.google.com/web/updates/2016/09/broadcastchannel|Broadcast Channel API}
+ * if they differ.
+ *
+ * Neither of the Responses can be {@link http://stackoverflow.com/questions/39109789|opaque}.
+ *
+ * @param {Response} firstResponse First responses to compare.
+ * @param {Response} secondResponse Second responses to compare.
+ * @param {string} url The URL of the updated request.
+ * @param {string} cacheName Name of the cache the responses belong to.
+ * This is included in the message posted on the broadcast channel.
+ */
+ notifyIfUpdated(firstResponse, secondResponse, url, cacheName) {
+ if (!responsesAreSame(firstResponse, secondResponse, this._headersToCheck)) {
+ broadcastUpdate(this._getChannel(), cacheName, url, this._source);
+ }
+ }
+}
+
+/*
+ Copyright 2016 Google Inc. All Rights Reserved.
+ 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.
+*/
+
+/**
+ * This plugin will automatically broadcast a message whenever a cached response
+ * is updated.
+ *
+ * @memberof workbox.broadcastUpdate
+ */
+class Plugin {
+ /**
+ * Construct a new instance with a specific `channelName` to
+ * broadcast messages on
+ *
+ * @param {string} channelName The name that will be used when creating
+ * the `BroadcastChannel`.
+ * @param {Object} options
+ * @param {Array<string>}
+ * [options.headersToCheck=['content-length', 'etag', 'last-modified']] A
+ * list of headers that will be used to determine whether the responses
+ * differ.
+ * @param {string} [options.source='workbox-broadcast-cache-update'] An
+ * attribution value that indicates where the update originated.
+ */
+ constructor(channelName, options) {
+ this._broadcastUpdate = new BroadcastCacheUpdate(channelName, options);
+ }
+ /**
+ * A "lifecycle" callback that will be triggered automatically by the
+ * `workbox-sw` and `workbox-runtime-caching` handlers when an entry is
+ * added to a cache.
+ *
+ * @private
+ * @param {Object} input The input object to this function.
+ * @param {string} input.cacheName Name of the cache the responses belong to.
+ * @param {Response} [input.oldResponse] The previous cached value, if any.
+ * @param {Response} input.newResponse The new value in the cache.
+ */
+ cacheDidUpdate({ cacheName, oldResponse, newResponse, request }) {
+ {
+ assert_mjs.assert.isType(cacheName, 'string', {
+ moduleName: 'workbox-broadcast-cache-update',
+ className: 'Plugin',
+ funcName: 'cacheDidUpdate',
+ paramName: 'cacheName'
+ });
+ assert_mjs.assert.isInstance(newResponse, Response, {
+ moduleName: 'workbox-broadcast-cache-update',
+ className: 'Plugin',
+ funcName: 'cacheDidUpdate',
+ paramName: 'newResponse'
+ });
+ assert_mjs.assert.isInstance(request, Request, {
+ moduleName: 'workbox-broadcast-cache-update',
+ className: 'Plugin',
+ funcName: 'cacheDidUpdate',
+ paramName: 'request'
+ });
+ }
+
+ if (!oldResponse) {
+ // Without a two responses there is nothing to compare.
+ return;
+ }
+
+ this._broadcastUpdate.notifyIfUpdated(oldResponse, newResponse, request.url, cacheName);
+ }
+}
+
+/*
+ Copyright 2017 Google Inc.
+
+ 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
+
+ https://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.
+*/
+
+/*
+ Copyright 2017 Google Inc.
+
+ 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
+
+ https://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.
+*/
+
+exports.BroadcastCacheUpdate = BroadcastCacheUpdate;
+exports.Plugin = Plugin;
+exports.broadcastUpdate = broadcastUpdate;
+exports.messageTypes = messageTypes;
+
+return exports;
+
+}({},workbox.core._private,workbox.core._private,workbox.core._private));
+
+//# sourceMappingURL=workbox-broadcast-cache-update.dev.js.map