const gulp = require('gulp'); const fs = require('fs'); gulp.task('default', function () { const standardsDefDir = "data/standards"; // Build all the standards listings into a single features.js file. const combinedStandards = fs.readdirSync(standardsDefDir) .reduce(function (prev, next) { if (next.indexOf(".json") === -1) { return prev; } const fileContents = fs.readFileSync(standardsDefDir + "/" + next, {encoding: "utf8"}); const standardContents = JSON.parse(fileContents); prev[standardContents.info.name] = standardContents; return prev; }, {}); let renderedStandardsModule = "/** This file is automatically generated by gulp. **/\n"; renderedStandardsModule += `window.WEB_API_MANAGER.standards = ${JSON.stringify(combinedStandards)};`; fs.writeFileSync("content_scripts/dist/standards.js", renderedStandardsModule); const proxyBlockSrc = fs.readFileSync("content_scripts/src/proxyblock.js", "utf8"); const instrumentSrc = fs.readFileSync("content_scripts/src/instrument.js", "utf8"); const stripCommentsFromSource = function (source) { const fileLines = source.split("\n"); const linesWithoutComments = fileLines.filter(function (aLine) { const lineStartsWithComment = ( aLine.indexOf("// ") === 0 || aLine.indexOf("/*") === 0 || aLine.indexOf(" * ") === 0 ); return !lineStartsWithComment; }); return linesWithoutComments.join("\n"); }; const proxyBlockSrcWOComments = stripCommentsFromSource(proxyBlockSrc); const instrumentSrcWOComments = stripCommentsFromSource(instrumentSrc); const instrumentSrcWithProxyInjected = instrumentSrcWOComments.replace( "###-INJECTED-PROXY-BLOCKING-CODE-###", proxyBlockSrcWOComments ); fs.writeFileSync("content_scripts/dist/instrument.js", instrumentSrcWithProxyInjected); // Last, several content script files are just copied over, unmodified, // as script files to be injected. const srcFilesToCopy = ["defaults.js", "init.js"]; srcFilesToCopy.forEach(function (aSrcPath) { fs.copyFileSync("content_scripts/src/" + aSrcPath, "content_scripts/dist/" + aSrcPath); }); });