123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- "use strict";
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
- /*
- Copyright 2018 Google LLC
- Use of this source code is governed by an MIT-style
- license that can be found in the LICENSE file or at
- https://opensource.org/licenses/MIT.
- */
- const path = require('path');
- const cdnUtils = require('../lib/cdn-utils');
- const checkForDeprecatedOptions = require('../lib/check-for-deprecated-options');
- const copyWorkboxLibraries = require('../lib/copy-workbox-libraries');
- const generateSWSchema = require('./options/generate-sw-schema');
- const getFileManifestEntries = require('../lib/get-file-manifest-entries');
- const validate = require('./options/validate');
- const writeServiceWorkerUsingDefaultTemplate = require('../lib/write-sw-using-default-template');
- /**
- * This method creates a list of URLs to precache, referred to as a "precache
- * manifest", based on the options you provide.
- *
- * It also takes in additional options that configures the service worker's
- * behavior, like any `runtimeCaching` rules it should use.
- *
- * Based on the precache manifest and the additional configuration, it writes
- * a ready-to-use service worker file to disk at `swDest`.
- *
- * @param {Object} config Please refer to the
- * [configuration guide](https://developers.google.com/web/tools/workbox/modules/workbox-build#full_generatesw_config).
- * @return {Promise<{count: number, size: number, warnings: Array<string>}>}
- * A promise that resolves once the service worker file has been written to
- * `swDest`. The `size` property contains the aggregate size of all the
- * precached entries, in bytes, and the `count` property contains the total
- * number of precached entries. Any non-fatal warning messages will be returned
- * via `warnings`.
- *
- * @memberof module:workbox-build
- */
- function generateSW(_x) {
- return _generateSW.apply(this, arguments);
- }
- function _generateSW() {
- _generateSW = (0, _asyncToGenerator2.default)(function* (config) {
- // This check needs to be done before validation, since the deprecated options
- // will be renamed.
- const deprecationWarnings = checkForDeprecatedOptions(config);
- const options = validate(config, generateSWSchema);
- const destDirectory = path.dirname(options.swDest); // Do nothing if importWorkboxFrom is set to 'disabled'. Otherwise, check:
- if (options.importWorkboxFrom === 'cdn') {
- const cdnURL = cdnUtils.getModuleURL('workbox-sw');
- options.workboxSWImport = cdnURL;
- } else if (options.importWorkboxFrom === 'local') {
- // Copy over the dev + prod version of all of the core libraries.
- const workboxDirectoryName = yield copyWorkboxLibraries(destDirectory); // The Workbox library files should not be precached, since they're cached
- // automatically by virtue of being used with importScripts().
- options.globIgnores = [`**/${workboxDirectoryName}/*.+(js|mjs)*`].concat(options.globIgnores || []);
- const workboxSWPkg = require(`workbox-sw/package.json`);
- const workboxSWFilename = path.basename(workboxSWPkg.main);
- options.workboxSWImport = `${workboxDirectoryName}/${workboxSWFilename}`;
- options.modulePathPrefix = workboxDirectoryName;
- }
- const _ref = yield getFileManifestEntries(options),
- count = _ref.count,
- size = _ref.size,
- manifestEntries = _ref.manifestEntries,
- warnings = _ref.warnings;
- yield writeServiceWorkerUsingDefaultTemplate(Object.assign({
- manifestEntries
- }, options)); // Add in any deprecation warnings.
- warnings.push(...deprecationWarnings);
- return {
- count,
- size,
- warnings
- };
- });
- return _generateSW.apply(this, arguments);
- }
- module.exports = generateSW;
|