Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
export function augmentAppWithServiceWorker(projectRoot: string, appRoot: string,
outputPath: string, baseHref: string): Promise {
// Path to the worker script itself.
const workerPath = resolveProjectModule(projectRoot, '@angular/service-worker/ngsw-worker.js');
const safetyPath = path.join(path.dirname(workerPath), 'safety-worker.js');
const configPath = path.resolve(appRoot, 'ngsw-config.json');
if (!fs.existsSync(configPath)) {
throw new Error(oneLine`Error: Expected to find an ngsw-config.json configuration
file in the ${appRoot} folder. Either provide one or disable Service Worker
in .angular-cli.json.`);
}
const config = fs.readFileSync(configPath, 'utf8');
const Generator = require('@angular/service-worker/config').Generator;
const gen = new Generator(new CliFilesystem(outputPath), baseHref);
return gen
.process(JSON.parse(config))
.then((output: Object) => {
const manifest = JSON.stringify(output, null, 2);
fs.writeFileSync(path.resolve(outputPath, 'ngsw.json'), manifest);
// Copy worker script to dist directory.
const workerCode = fs.readFileSync(workerPath);
fs.writeFileSync(path.resolve(outputPath, 'ngsw-worker.js'), workerCode);
// If @angular/service-worker has the safety script, copy it into two locations.
if (fs.existsSync(safetyPath)) {
const safetyCode = fs.readFileSync(safetyPath);
fs.writeFileSync(path.resolve(outputPath, 'worker-basic.min.js'), safetyCode);
fs.writeFileSync(path.resolve(outputPath, 'safety-worker.js'), safetyCode);
}
});
function augmentAppWithServiceWorker(projectRoot, appRoot, outputPath, baseHref) {
// Path to the worker script itself.
const workerPath = require_project_module_1.resolveProjectModule(projectRoot, '@angular/service-worker/ngsw-worker.js');
const safetyPath = path.join(path.dirname(workerPath), 'safety-worker.js');
const configPath = path.resolve(appRoot, 'ngsw-config.json');
if (!fs.existsSync(configPath)) {
throw new Error(common_tags_1.oneLine `Error: Expected to find an ngsw-config.json configuration
file in the ${appRoot} folder. Either provide one or disable Service Worker
in .angular-cli.json.`);
}
const config = fs.readFileSync(configPath, 'utf8');
const Generator = require('@angular/service-worker/config').Generator;
const gen = new Generator(new CliFilesystem(outputPath), baseHref);
return gen
.process(JSON.parse(config))
.then((output) => {
const manifest = JSON.stringify(output, null, 2);
fs.writeFileSync(path.resolve(outputPath, 'ngsw.json'), manifest);
// Copy worker script to dist directory.
const workerCode = fs.readFileSync(workerPath);
fs.writeFileSync(path.resolve(outputPath, 'ngsw-worker.js'), workerCode);
// If @angular/service-worker has the safety script, copy it into two locations.
if (fs.existsSync(safetyPath)) {
const safetyCode = fs.readFileSync(safetyPath);
fs.writeFileSync(path.resolve(outputPath, 'worker-basic.min.js'), safetyCode);
fs.writeFileSync(path.resolve(outputPath, 'safety-worker.js'), safetyCode);
}
});
}