123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- "use strict";
- /*
- 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.
- */
- var __importDefault = (this && this.__importDefault) || function (mod) {
- return (mod && mod.__esModule) ? mod : { "default": mod };
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.generateSW = void 0;
- const upath_1 = __importDefault(require("upath"));
- const get_file_manifest_entries_1 = require("./lib/get-file-manifest-entries");
- const rebase_path_1 = require("./lib/rebase-path");
- const validate_options_1 = require("./lib/validate-options");
- const write_sw_using_default_template_1 = 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`.
- *
- * ```
- * // The following lists some common options; see the rest of the documentation
- * // for the full set of options and defaults.
- * const {count, size, warnings} = await generateSW({
- * dontCacheBustURLsMatching: [new RegExp('...')],
- * globDirectory: '...',
- * globPatterns: ['...', '...'],
- * maximumFileSizeToCacheInBytes: ...,
- * navigateFallback: '...',
- * runtimeCaching: [{
- * // Routing via a matchCallback function:
- * urlPattern: ({request, url}) => ...,
- * handler: '...',
- * options: {
- * cacheName: '...',
- * expiration: {
- * maxEntries: ...,
- * },
- * },
- * }, {
- * // Routing via a RegExp:
- * urlPattern: new RegExp('...'),
- * handler: '...',
- * options: {
- * cacheName: '...',
- * plugins: [..., ...],
- * },
- * }],
- * skipWaiting: ...,
- * swDest: '...',
- * });
- * ```
- *
- * @memberof workbox-build
- */
- async function generateSW(config) {
- const options = (0, validate_options_1.validateGenerateSWOptions)(config);
- let entriesResult;
- if (options.globDirectory) {
- // Make sure we leave swDest out of the precache manifest.
- options.globIgnores.push((0, rebase_path_1.rebasePath)({
- baseDirectory: options.globDirectory,
- file: options.swDest,
- }));
- // If we create an extra external runtime file, ignore that, too.
- // See https://rollupjs.org/guide/en/#outputchunkfilenames for naming.
- if (!options.inlineWorkboxRuntime) {
- const swDestDir = upath_1.default.dirname(options.swDest);
- const workboxRuntimeFile = upath_1.default.join(swDestDir, 'workbox-*.js');
- options.globIgnores.push((0, rebase_path_1.rebasePath)({
- baseDirectory: options.globDirectory,
- file: workboxRuntimeFile,
- }));
- }
- // We've previously asserted that options.globDirectory is set, so this
- // should be a safe cast.
- entriesResult = await (0, get_file_manifest_entries_1.getFileManifestEntries)(options);
- }
- else {
- entriesResult = {
- count: 0,
- manifestEntries: [],
- size: 0,
- warnings: [],
- };
- }
- const filePaths = await (0, write_sw_using_default_template_1.writeSWUsingDefaultTemplate)(Object.assign({
- manifestEntries: entriesResult.manifestEntries,
- }, options));
- return {
- filePaths,
- count: entriesResult.count,
- size: entriesResult.size,
- warnings: entriesResult.warnings,
- };
- }
- exports.generateSW = generateSW;
|