| Index: polymer_1.0.4/bower_components/platinum-sw/platinum-sw-fetch.html
|
| diff --git a/polymer_1.0.4/bower_components/platinum-sw/platinum-sw-fetch.html b/polymer_1.0.4/bower_components/platinum-sw/platinum-sw-fetch.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..35d50281985a2fe5590b56d154dd94579852bf52
|
| --- /dev/null
|
| +++ b/polymer_1.0.4/bower_components/platinum-sw/platinum-sw-fetch.html
|
| @@ -0,0 +1,130 @@
|
| +<!--
|
| +Copyright (c) 2015 The Polymer Project Authors. All rights reserved.
|
| +This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
| +The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
| +The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
| +Code distributed by Google as part of the polymer project is also
|
| +subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
| +-->
|
| +<link rel="import" href="../polymer/polymer.html">
|
| +
|
| +<script>
|
| + /**
|
| + * The `<platinum-sw-fetch>` element creates custom [`fetch` event](https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#fetch-event-section)
|
| + * handlers for given URL patterns. Possible use cases include:
|
| + *
|
| + * - Using a special caching strategy for specific URLs.
|
| + * - Returning static "fallback" responses instead of network errors when a remote API
|
| + * is unavailable.
|
| + *
|
| + * In short, any scenario in which you'd like a service worker to intercept network
|
| + * requests and provide custom response handling.
|
| + *
|
| + * If you'd like a single caching policy applied to all same-origin requests, then an alternative
|
| + * to using `<platinum-sw-fetch>` is to use `<platinum-sw-cache>` with the `defaultCacheStategy`
|
| + * property set.
|
| + *
|
| + * Under the hood, the [sw-toolbox](https://github.com/googlechrome/sw-toolbox) library is used
|
| + * for all the request handling logic.
|
| + *
|
| + * `<platinum-sw-fetch>` needs to be a child element of `<platinum-sw-register>`.
|
| + *
|
| + * An example configuration is:
|
| + *
|
| + * <platinum-sw-register>
|
| + * <platinum-sw-import-script href="custom-fetch-handler.js"></platinum-sw-import-script>
|
| + * <platinum-sw-fetch handler="customFetchHandler"
|
| + * path="/(.*)/customFetch"></platinum-sw-fetch>
|
| + * </platinum-sw-register>
|
| + *
|
| + * This implies that there's a `custom-fetch-handler.js` file in the same directory as the current
|
| + * page, which defines a `sw-toolbox` compliant
|
| + * [request handler](https://github.com/googlechrome/sw-toolbox#request-handlers) named
|
| + * `customFetchHandler`. This definition is imported using `<platinum-sw-import-script>`. The
|
| + * `<platinum-sw-fetch>` element takes care of mapping which request paths are handled by
|
| + * `customFetchHandler`.
|
| + *
|
| + * Anything not matching the `path` pattern is ignored by `<platinum-sw-fetch>`,
|
| + * and it's possible to have multiple `<platinum-sw-fetch>` elements that each define different
|
| + * paths and different handlers. The path matching is performed top-down, starting with the first
|
| + * `<platinum-sw-fetch>` element.
|
| + */
|
| + Polymer({
|
| + is: 'platinum-sw-fetch',
|
| +
|
| + properties: {
|
| + /**
|
| + * The name of the request handler to use. This should be a `sw-toolbox`-style
|
| + * [request handler](https://github.com/googlechrome/sw-toolbox#request-handlers).
|
| + *
|
| + * `handler` is a `String`, not a `function`, so you're providing the name of a function, not
|
| + * the function itself. It can be a function defined in the
|
| + * [`toolbox` scope](https://github.com/googlechrome/sw-toolbox#built-in-handlers)
|
| + * (e.g. 'networkFirst', 'fastest', 'networkOnly', etc.) or a function defined in the
|
| + * [`ServiceWorkerGlobalScope`](https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#service-worker-global-scope),
|
| + * like a function that is defined in a file that's imported via `platinum-sw-import-script`.
|
| + **
|
| + * @see {@link https://github.com/GoogleChrome/sw-toolbox#built-in-handlers}
|
| + */
|
| + handler: String,
|
| +
|
| + /**
|
| + * By default, `path` will only match URLs under the current host (i.e. same-origin requests).
|
| + * If you'd like to apply `handler` to cross-origin requests, then use `origin` to specify
|
| + * which hosts will match. Setting `origin` is optional.
|
| + *
|
| + * `origin` is a `String`, but it is used internally to construct a
|
| + * [`RegExp` object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions),
|
| + * which is used for the matching. To properly escape RegExp sequences like `\.`, it's
|
| + * necessary to add in an extra level of string-escaping first ('\\.').
|
| + *
|
| + * Note that the `origin` value will be matched against the full domain name and the protocol.
|
| + * If you want to match 'http' and 'https', then use 'https?://' at the start of your string.
|
| + *
|
| + * Some examples:
|
| + * - `origin="https?://.+\\.google\\.com"` → a RegExp that matches `http` or `https` requests
|
| + * made to any domain, as long as it ends in `.google.com`.
|
| + * - `origin="https://www\\.example\\.com" → a RegExp that will only match `https` requests to
|
| + * one domain, `www.example.com`.
|
| + *
|
| + * @see {@link https://github.com/googlechrome/sw-toolbox#toolboxrouterheadurlpattern-handler-options}
|
| + */
|
| + origin: String,
|
| +
|
| + /**
|
| + * URLs with paths matching `path` will have `handler` applied to them.
|
| + *
|
| + * By default, `path` will only match same-origin URLs. If you'd like it to match
|
| + * cross-origin URLs, use `path` in conjunction with `origin`.
|
| + *
|
| + * As explained in the
|
| + * [`sw-toolbox` docs](https://github.com/googlechrome/sw-toolbox#toolboxrouterheadurlpattern-handler-options),
|
| + * the URL path matching is done using the [`path-to-regexp`](https://github.com/pillarjs/path-to-regexp)
|
| + * module, which is the same logic used in [Express-style routing](http://expressjs.com/guide/routing.html).
|
| + *
|
| + * In practice, you need to always use '/' as the first character of your `path`, and then
|
| + * can use '(.*)' as a wildcard.
|
| + *
|
| + * Some examples:
|
| + * - `path="/(.*)/customFetch"` → matches any path that ends with '/customFetch'.
|
| + * - `path="/customFetch(.*)"` → matches any path that starts with '/customFetch', optionally
|
| + * followed by other characters.
|
| + *
|
| + * @see {@link https://github.com/pillarjs/path-to-regexp}
|
| + */
|
| + path: String
|
| + },
|
| +
|
| + _getParameters: function(baseURI) {
|
| + return new Promise(function(resolve) {
|
| + var params = {
|
| + importscriptLate: new URL('bootstrap/sw-toolbox-setup.js', baseURI).href
|
| + };
|
| + if (this.path && this.handler) {
|
| + params.route = [this.path, this.handler, this.origin];
|
| + }
|
| + resolve(params);
|
| + }.bind(this));
|
| + }
|
| + });
|
| +</script>
|
|
|