1 | 'use strict';
|
2 |
|
3 | var path = require('path');
|
4 | var fs = require('fs');
|
5 | var loaderUtils = require('loader-utils');
|
6 |
|
7 | module.exports = function () {};
|
8 | module.exports.pitch = function pitch(remainingRequest, precedingRequest, data) {
|
9 | var _this = this;
|
10 |
|
11 | this.cacheable && this.cacheable();
|
12 |
|
13 | var callback = this.async();
|
14 | var templatePath = path.join(__dirname, 'sw-template.js');
|
15 | var query = loaderUtils.parseQuery(this.query);
|
16 | var params = JSON.parse(query.json);
|
17 |
|
18 | var request = loaderUtils.stringifyRequest(this, remainingRequest);
|
19 | var source = 'module.exports = require(' + request + ')';
|
20 |
|
21 | var loaders = (params.loaders || []).map(function (loader) {
|
22 | var loaderPath = path.join(__dirname, '../loaders', loader + '.js');
|
23 | var loaderRequest = loaderUtils.stringifyRequest(_this, '!!' + loaderPath);
|
24 |
|
25 | _this.addDependency(loaderPath);
|
26 |
|
27 | return JSON.stringify(loader) + ': require(' + loaderRequest + ')';
|
28 | });
|
29 |
|
30 | var cacheMaps = (params.cacheMaps || []).map(function (map) {
|
31 | return '{\n match: ' + map.match + ',\n to: ' + map.to + ',\n requestTypes: ' + JSON.stringify(map.requestTypes) + ',\n }';
|
32 | });
|
33 |
|
34 | this.addDependency(templatePath);
|
35 |
|
36 | var loadersCode = '{}';
|
37 |
|
38 | if (loaders.length) {
|
39 | loadersCode = '{\n ' + loaders.join(',\n') + '\n }';
|
40 | }
|
41 |
|
42 | var cacheMapsCode = '[]';
|
43 |
|
44 | if (cacheMaps.length) {
|
45 | cacheMapsCode = '[\n ' + cacheMaps.join(',\n') + '\n ]';
|
46 | }
|
47 |
|
48 | var helpersCode = [', {', 'loaders: ' + loadersCode + ',', 'cacheMaps: ' + cacheMapsCode + ',', '}'];
|
49 |
|
50 | fs.readFile(templatePath, 'utf-8', function (err, template) {
|
51 | if (err) return callback(err);
|
52 |
|
53 | template = '\n ' + template + '\n WebpackServiceWorker(' + params.data_var_name + helpersCode.join('\n') + ');\n ' + source + '\n ';
|
54 |
|
55 | callback(null, template);
|
56 | });
|
57 | }; |
\ | No newline at end of file |