diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/workbox-core/_default.mjs | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/workbox-core/_default.mjs')
| -rw-r--r-- | node_modules/workbox-core/_default.mjs | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/node_modules/workbox-core/_default.mjs b/node_modules/workbox-core/_default.mjs new file mode 100644 index 00000000..5e0b50bb --- /dev/null +++ b/node_modules/workbox-core/_default.mjs @@ -0,0 +1,194 @@ +/* + 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. +*/ + +import LOG_LEVELS from './models/LogLevels.mjs'; +import {WorkboxError} from './_private/WorkboxError.mjs'; +import {cacheNames} from './_private/cacheNames.mjs'; +import {logger} from './_private/logger.mjs'; +import {assert} from './_private/assert.mjs'; +import {checkSWFileCacheHeaders} from './_private/checkSWFileCacheHeaders.mjs'; +import {setLoggerLevel, getLoggerLevel} from './_private/logger.mjs'; +import './_version.mjs'; + +/** + * This class is never exposed publicly. Inidividual methods are exposed + * using jsdoc alias commands. + * + * @memberof workbox.core + * @private + */ +class WorkboxCore { + /** + * You should not instantiate this object directly. + * + * @private + */ + constructor() { + // Give our version strings something to hang off of. + try { + self.workbox.v = self.workbox.v || {}; + } catch (err) { + // NOOP + } + + // A WorkboxCore instance must be exported before we can use the logger. + // This is so it can get the current log level. + if (process.env.NODE_ENV !== 'production') { + const padding = ' '; + logger.groupCollapsed('Welcome to Workbox!'); + logger.unprefixed.log(`You are currently using a development build. ` + + `By default this will switch to prod builds when not on localhost. ` + + `You can force this with workbox.setConfig({debug: true|false}).`); + logger.unprefixed.log( + `📖 Read the guides and documentation\n` + + `${padding}https://developers.google.com/web/tools/workbox/` + ); + logger.unprefixed.log( + `❓ Use the [workbox] tag on Stack Overflow to ask questions\n` + + `${padding}https://stackoverflow.com/questions/ask?tags=workbox` + ); + logger.unprefixed.log( + `🐛 Found a bug? Report it on GitHub\n` + + `${padding}https://github.com/GoogleChrome/workbox/issues/new` + ); + logger.groupEnd(); + + if (typeof checkSWFileCacheHeaders === 'function') { + checkSWFileCacheHeaders(); + } + } + } + + /** + * Get the current cache names used by Workbox. + * + * `cacheNames.precache` is used for precached assets, + * `cacheNames.googleAnalytics` is used by `workbox-google-analytics` to + * store `analytics.js`, + * and `cacheNames.runtime` is used for everything else. + * + * @return {Object} An object with `precache` and `runtime` cache names. + * + * @alias workbox.core.cacheNames + */ + get cacheNames() { + return { + googleAnalytics: cacheNames.getGoogleAnalyticsName(), + precache: cacheNames.getPrecacheName(), + runtime: cacheNames.getRuntimeName(), + }; + } + + /** + * You can alter the default cache names used by the Workbox modules by + * changing the cache name details. + * + * Cache names are generated as `<prefix>-<Cache Name>-<suffix>`. + * + * @param {Object} details + * @param {Object} details.prefix The string to add to the beginning of + * the precache and runtime cache names. + * @param {Object} details.suffix The string to add to the end of + * the precache and runtime cache names. + * @param {Object} details.precache The cache name to use for precache + * caching. + * @param {Object} details.runtime The cache name to use for runtime caching. + * @param {Object} details.googleAnalytics The cache name to use for + * `workbox-google-analytics` caching. + * + * @alias workbox.core.setCacheNameDetails + */ + setCacheNameDetails(details) { + if (process.env.NODE_ENV !== 'production') { + Object.keys(details).forEach((key) => { + assert.isType(details[key], 'string', { + moduleName: 'workbox-core', + className: 'WorkboxCore', + funcName: 'setCacheNameDetails', + paramName: `details.${key}`, + }); + }); + + if ('precache' in details && details.precache.length === 0) { + throw new WorkboxError('invalid-cache-name', { + cacheNameId: 'precache', + value: details.precache, + }); + } + + if ('runtime' in details && details.runtime.length === 0) { + throw new WorkboxError('invalid-cache-name', { + cacheNameId: 'runtime', + value: details.runtime, + }); + } + + if ('googleAnalytics' in details && + details.googleAnalytics.length === 0) { + throw new WorkboxError('invalid-cache-name', { + cacheNameId: 'googleAnalytics', + value: details.googleAnalytics, + }); + } + } + + cacheNames.updateDetails(details); + } + + /** + * Get the current log level. + * + * @return {number}. + * + * @alias workbox.core.logLevel + */ + get logLevel() { + return getLoggerLevel(); + } + + /** + * Set the current log level passing in one of the values from + * [LOG_LEVELS]{@link module:workbox-core.LOG_LEVELS}. + * + * @param {number} newLevel The new log level to use. + * + * @alias workbox.core.setLogLevel + */ + setLogLevel(newLevel) { + if (process.env.NODE_ENV !== 'production') { + assert.isType(newLevel, 'number', { + moduleName: 'workbox-core', + className: 'WorkboxCore', + funcName: 'logLevel [setter]', + paramName: `logLevel`, + }); + } + + if (newLevel > LOG_LEVELS.silent || + newLevel < LOG_LEVELS.debug) { + throw new WorkboxError('invalid-value', { + paramName: 'logLevel', + validValueDescription: `Please use a value from LOG_LEVELS, i.e ` + + `'logLevel = workbox.core.LOG_LEVELS.debug'.`, + value: newLevel, + }); + } + + setLoggerLevel(newLevel); + } +} + +export default new WorkboxCore(); |
