12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- "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.
- */
- const fse = require('fs-extra');
- const upath = require('upath');
- const bundle = require('./bundle');
- const errors = require('./errors');
- const populateSWTemplate = require('./populate-sw-template');
- module.exports = async ({
- babelPresetEnvTargets,
- cacheId,
- cleanupOutdatedCaches,
- clientsClaim,
- directoryIndex,
- disableDevLogs,
- ignoreURLParametersMatching,
- importScripts,
- inlineWorkboxRuntime,
- manifestEntries,
- mode,
- navigateFallback,
- navigateFallbackDenylist,
- navigateFallbackAllowlist,
- navigationPreload,
- offlineGoogleAnalytics,
- runtimeCaching,
- skipWaiting,
- sourcemap,
- swDest
- }) => {
- const outputDir = upath.dirname(swDest);
- try {
- await fse.mkdirp(outputDir);
- } catch (error) {
- throw new Error(`${errors['unable-to-make-sw-directory']}. ` + `'${error.message}'`);
- }
- const unbundledCode = populateSWTemplate({
- cacheId,
- cleanupOutdatedCaches,
- clientsClaim,
- directoryIndex,
- disableDevLogs,
- ignoreURLParametersMatching,
- importScripts,
- manifestEntries,
- navigateFallback,
- navigateFallbackDenylist,
- navigateFallbackAllowlist,
- navigationPreload,
- offlineGoogleAnalytics,
- runtimeCaching,
- skipWaiting
- });
- try {
- const files = await bundle({
- babelPresetEnvTargets,
- inlineWorkboxRuntime,
- mode,
- sourcemap,
- swDest,
- unbundledCode
- });
- const filePaths = [];
- for (const file of files) {
- const filePath = upath.resolve(file.name);
- filePaths.push(filePath);
- await fse.writeFile(filePath, file.contents);
- }
- return filePaths;
- } catch (error) {
- if (error.code === 'EISDIR') {
- // See https://github.com/GoogleChrome/workbox/issues/612
- throw new Error(errors['sw-write-failure-directory']);
- }
- throw new Error(`${errors['sw-write-failure']} '${error.message}'`);
- }
- };
|