const fs = require('fs-extra'); const path = require('path'); const baseDir = path.dirname(path.dirname(__dirname)); const sourcePath = `${__dirname}/../../lib/randomClipperPort.js`; const clipperUtilsPath = `${__dirname}/../../lib/clipperUtils.js`; const readFileNormalized = (filePath) => { const js = fs.readFileSync(filePath, 'utf-8'); return js .replace(/^['"]use strict['"];/, [ '\'use strict\';', // Running the linter causes changes on each full rebuild, since // the original file was generated by tsc. '/* eslint-disable */', `// Copied from ${path.relative(baseDir, filePath)}`, '', ].join('\n')) // Normalize line endings to avoid unnecessary changes on Windows .replace(/\r\n/g, '\n') .trim(); }; // Mozilla insists on building the clipper from a tarball, not from the repository // so we add this check and only copy the file if it's present. Normally it rarely // changes anyway and it is committed to the repo. if (fs.pathExistsSync(sourcePath)) { const content = readFileNormalized(sourcePath); fs.writeFileSync(`${__dirname}/src/randomClipperPort.js`, content); } if (fs.pathExistsSync(clipperUtilsPath)) { fs.copySync(clipperUtilsPath, `${__dirname}/../content_scripts/clipperUtils.js`); } // These files give warnings when loading the extension in Chrome, in dev mode fs.removeSync(`${__dirname}/node_modules/public-encrypt/test/test_key.pem`); fs.removeSync(`${__dirname}/node_modules/public-encrypt/test/test_rsa_pubkey.pem`); fs.removeSync(`${__dirname}/node_modules/public-encrypt/test/test_rsa_privkey.pem`);