proxy.addFilter(function(httpData, next){ if(bOpenUrl === true){ var responseContent = httpData.responseContent; if(httpData.responseCode === 200 && responseContent !== undefined && httpData.responseType === 'js' && pagerun.isMatchUrl(httpData.url, include) ){ // beautify the js code if(beautify === true){ var syntax = esprima.parse(responseContent, { raw: true, tokens: true, range: true, comment: true }); syntax = escodegen.attachComments(syntax, syntax.comments, syntax.tokens); responseContent = escodegen.generate(syntax, { comment: true, format: { indent: { style: ' ' }, quotes: 'single' } } ); } httpData.responseContent = jscover.instrument(responseContent, httpData.url); } } next(); });
module.exports = function(source) { if (this.cacheable) { this.cacheable(); } var relative= path.relative(process.cwd(),this.resourcePath); return jscover.instrument(source, relative); };
function instrument(code, moduleName, res, next) { try { res.end(jscover.instrument(code, moduleName + '.js', { excludeHeader: true })); } catch (e) { next(e); } }
function instrument(code, moduleName, res, next) { try { res.setHeader('Content-Type', 'application/x-javascript'); res.end(jscover.instrument(code, moduleName + '.js', { excludeHeader: true })); } catch (e) { next(e); } }
proxy.addFilter(function(httpData, next, end){ if(httpData.type === 'request'){ // disable server cache var requestHeaders = httpData.requestHeaders; delete requestHeaders['if-none-match']; delete requestHeaders['if-modified-since']; // hosts var newHost = mapHosts[httpData.hostname]; if(newHost !== undefined){ httpData.hostname = newHost; } } else{ // disable browser cache var responseHeaders = httpData.responseHeaders; if(responseHeaders !== undefined){ responseHeaders['cache-control'] = 'no-cache, must-revalidate'; responseHeaders['pragma'] = 'no-cache'; } var url = httpData.url; var responseContent = httpData.responseContent; if(httpData.responseCode === 200 && httpData.responseType === 'js' && responseContent !== undefined){ // adapter for test runner var match = url.match(/(mocha|jasmine|qunit|yuitest)(\-[^\/]+?)?\.js(\?|$)/i); if(match !== null){ var testType = match[1]; var jsBridgeContent = fs.readFileSync(clientPath + '/bridge.js').toString(); var jsAdapterContent = fs.readFileSync(clientPath + '/adapter-'+testType+'.js').toString(); responseContent = responseContent + jsBridgeContent + jsAdapterContent; } // jscoverage else if(checkUrlInclude(url, coverageInclude, coverageExclude)){ if(coverageBeautify){ try{ var syntax = esprima.parse(responseContent, { raw: true, tokens: true, range: true, comment: true }); syntax = escodegen.attachComments(syntax, syntax.comments, syntax.tokens); responseContent = escodegen.generate(syntax, { comment: true, format: { indent: { style: ' ' }, quotes: 'single' } } ); } catch(e){} } var arrSource = responseContent.split(/\r?\n/); mapJsCoverageSource[url] = arrSource; try{ responseContent = jscover.instrument(responseContent, url); } catch(e){} } httpData.responseContent = responseContent; } } next(); });