"use strict";
// Usage: `node generate-test-wrappers.js js-filename1.js [js-filename2.js ...]` will generate:
// - js-filename1.html
// - js-filename1.sharedworker.html
// - js-filename1.dedicatedworker.html
// - js-filename1.serviceworker.https.html
// (for each passed filename)
//
// It will turn any importScripts inside the .js file into `)
.join('\n');
const basename = path.basename(jsFilename);
const noExtension = path.basename(jsFilename, '.js');
const outputs = {
'.html': `
${basename} browser context wrapper file
${importedScriptTags}
`,
'.dedicatedworker.html': `
${basename} dedicated worker wrapper file
`,
'.sharedworker.html': `
${basename} shared worker wrapper file
`,
'.serviceworker.https.html': `
${basename} service worker wrapper file
`
};
for (const [key, value] of Object.entries(outputs)) {
const destFilename = path.resolve(path.dirname(jsFilename), `${noExtension}${key}`);
fs.writeFileSync(destFilename, value, { encoding: 'utf-8' });
}
}
function findImportedScriptFilenames(inputFilename) {
const scriptContents = fs.readFileSync(inputFilename, { encoding: 'utf-8' });
const regExp = /self\.importScripts\('([^']+)'\);/g;
let result = [];
let match;
while (match = regExp.exec(scriptContents)) {
result.push(match[1]);
}
return result.filter(x => x !== '/resources/testharness.js');
}