mirror of
https://github.com/idanoo/GoScrobble.git
synced 2024-11-23 00:45:16 +00:00
94 lines
2.0 KiB
JavaScript
94 lines
2.0 KiB
JavaScript
"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}'`);
|
|
}
|
|
}; |