@teamscale/javascript-instrumenter 0.0.1-beta.35 → 0.0.1-beta.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teamscale/javascript-instrumenter",
3
- "version": "0.0.1-beta.35",
3
+ "version": "0.0.1-beta.39",
4
4
  "description": "Istanbul-based coverage instrumenter with coverage forwarding via WebSockets",
5
5
  "main": "dist/src/main.js",
6
6
  "bin": "dist/src/main.js",
@@ -54,7 +54,7 @@
54
54
  "@cqse/commons": "^0.0.1-beta.1",
55
55
  "@types/micromatch": "^4.0.2",
56
56
  "argparse": "^2.0.1",
57
- "async": "^3.2.3",
57
+ "async": "^3.2.4",
58
58
  "bunyan": "^1.8.15",
59
59
  "convert-source-map": "^1.7.0",
60
60
  "foreground-child": "^2.0.0",
package/dist/src/App.js CHANGED
@@ -74,8 +74,8 @@ class App {
74
74
  help: 'External location of source-map files to consider.'
75
75
  });
76
76
  parser.add_argument('-c', '--collector', {
77
- help: 'The collector (host:port) to send coverage information to.',
78
- default: 'localhost:54678'
77
+ help: 'The collector (`host:port` or `wss://host:port/` or `ws://host:port/`) to send coverage information to.',
78
+ default: 'ws://localhost:54678'
79
79
  });
80
80
  parser.add_argument('-x', '--exclude-origin', {
81
81
  nargs: '*',
@@ -1 +1 @@
1
- {"version":3,"file":"Instrumenter.d.ts","sourceRoot":"","sources":["../../../src/instrumenter/Instrumenter.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EAGnB,WAAW,EACX,UAAU,EACV,MAAM,QAAQ,CAAC;AAUhB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,eAAO,MAAM,qBAAqB,8CAA8C,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC3D;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IACzD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IAEzC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAS;gBAEX,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IASnD;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAchE;;;;;;OAMG;IACG,aAAa,CAClB,SAAS,EAAE,kBAAkB,EAC7B,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,mBAAmB,GAChC,OAAO,CAAC,UAAU,CAAC;YA8FR,6BAA6B;YAmC7B,aAAa;IAe3B;;;;OAIG;IACH,OAAO,CAAC,WAAW;IASnB;;;;;;;OAOG;IACH,OAAO,CAAC,gCAAgC;IAQxC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAcpC;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;CAe1B"}
1
+ {"version":3,"file":"Instrumenter.d.ts","sourceRoot":"","sources":["../../../src/instrumenter/Instrumenter.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EAGnB,WAAW,EACX,UAAU,EACV,MAAM,QAAQ,CAAC;AAUhB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,eAAO,MAAM,qBAAqB,8CAA8C,CAAC;AAEjF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC7B;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC3D;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IACzD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IAEzC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAS;gBAEX,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IASnD;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAchE;;;;;;OAMG;IACG,aAAa,CAClB,SAAS,EAAE,kBAAkB,EAC7B,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,mBAAmB,GAChC,OAAO,CAAC,UAAU,CAAC;YAiGR,6BAA6B;YAmC7B,aAAa;IAe3B;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAMnB;;;;;;;OAOG;IACH,OAAO,CAAC,gCAAgC;IAQxC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;;OAGG;IACH,OAAO,CAAC,4BAA4B;IAcpC;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;CAe1B"}
@@ -110,7 +110,7 @@ class IstanbulInstrumenter {
110
110
  // The main instrumentation (adding coverage statements) is performed now:
111
111
  instrumentedSource = instrumenter
112
112
  .instrumentSync(inputFileSource, taskElement.fromFile, inputSourceMap)
113
- .replace(/return actualCoverage/g, 'return makeCoverageInterceptor(actualCoverage)')
113
+ .replace(/actualCoverage\s*=\s*coverage\[path\]/g, 'actualCoverage=makeCoverageInterceptor(coverage[path])')
114
114
  .replace(/new Function\("return this"\)\(\)/g, "typeof window === 'object' ? window : this");
115
115
  this.logger.debug('Instrumentation source maps to:', (_b = instrumenter.lastSourceMap()) === null || _b === void 0 ? void 0 : _b.sources);
116
116
  // In case of a bundle, the initial instrumentation step might have added
@@ -176,10 +176,7 @@ class IstanbulInstrumenter {
176
176
  loadVaccine(collector) {
177
177
  // We first replace parameters in the file with the
178
178
  // actual values, for example, the collector to send the coverage information to.
179
- return fs
180
- .readFileSync(this.vaccineFilePath, 'utf8')
181
- .replace(/\$REPORT_TO_HOST/g, collector.host)
182
- .replace(/\$REPORT_TO_PORT/g, `${collector.port}`);
179
+ return fs.readFileSync(this.vaccineFilePath, 'utf8').replace(/\$REPORT_TO_URL/g, collector.url);
183
180
  }
184
181
  /**
185
182
  * Should the given file be excluded from the instrumentation,
@@ -26,11 +26,9 @@ export declare class TaskElement {
26
26
  * receive the coverage information.
27
27
  */
28
28
  export declare class CollectorSpecifier {
29
- /** Hostname the collector is running on */
30
- readonly host: string;
31
- /** Port on the host the collector listens to */
32
- readonly port: number;
33
- constructor(collector: string);
29
+ /** The URL specifying the address the collector is reachable at. */
30
+ readonly url: string;
31
+ constructor(specifier: string);
34
32
  }
35
33
  /**
36
34
  * Patterns that define which parts of a given bundle to instrument or not.
@@ -1 +1 @@
1
- {"version":3,"file":"Task.d.ts","sourceRoot":"","sources":["../../../src/instrumenter/Task.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Task.d.ts","sourceRoot":"","sources":["../../../src/instrumenter/Task.ts"],"names":[],"mappings":"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"}
@@ -39,10 +39,17 @@ exports.TaskElement = TaskElement;
39
39
  * receive the coverage information.
40
40
  */
41
41
  class CollectorSpecifier {
42
- constructor(collector) {
43
- commons_1.Contract.requireStringPattern(collector, '.+:[0-9]+', 'Invalid collector pattern used!');
44
- this.host = collector.split(':')[0];
45
- this.port = Number.parseInt(collector.split(':')[1]);
42
+ constructor(specifier) {
43
+ if (specifier.indexOf('://') > 0) {
44
+ // A trailing slash will be removed
45
+ this.url = specifier.replace(/\/$/, '');
46
+ }
47
+ else {
48
+ commons_1.Contract.requireStringPattern(specifier, '.+:[0-9]+', 'Invalid collector pattern used!');
49
+ const host = specifier.split(':')[0];
50
+ const port = Number.parseInt(specifier.split(':')[1]);
51
+ this.url = `ws://${host}:${port}`;
52
+ }
46
53
  }
47
54
  }
48
55
  exports.CollectorSpecifier = CollectorSpecifier;
package/dist/vaccine.js CHANGED
@@ -1 +1 @@
1
- (()=>{var y=Object.create;var f=Object.defineProperty;var A=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var H=e=>f(e,"__esModule",{value:!0});var v=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var B=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of I(t))!L.call(e,o)&&o!=="default"&&f(e,o,{get:()=>t[o],enumerable:!(n=A(t,o))||n.enumerable});return e},C=e=>B(H(f(e!=null?y(j(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var R=v((ee,E)=>{E.exports=!1});var M=v(()=>{});function p(e){let t=new Blob([e],{type:"text/javascript"}),n=URL.createObjectURL(t),o=new Worker(n);return URL.revokeObjectURL(n),o}function m(){return p('var i=class{constructor(e){this.cachedMessages=[];this.url=e,this.socket=this.createSocket()}createSocket(){let e=new WebSocket(this.url);return e.onopen=()=>this.onopen(),e.onclose=()=>this.onclose(),e}onclose(){this.socket=this.createSocket()}onopen(){this.cachedMessages.forEach(e=>this.socket.send(e)),this.cachedMessages=[]}send(e){this.socket.readyState===WebSocket.OPEN?this.socket.send(e):this.cachedMessages.push(e)}};var u=20,l=1e3,c=class{constructor(e,t){this.milliseconds=e;this.onCountedToZero=t;this.timerHandle=null}restartCountdown(){this.stopCountdown(),this.timerHandle=self.setTimeout(()=>{this.stopCountdown(),this.onCountedToZero()},this.milliseconds)}stopCountdown(){this.timerHandle!==null&&(self.clearTimeout(this.timerHandle),this.timerHandle=null)}},n=class{constructor(e){this.socket=e,this.cachedCoveredPositions=new Map,this.numberOfCachedPositions=0,this.flushCountdown=new c(l,()=>this.flush())}add(e){let t=e.split(":");if(t.length!==5)return;let r=t[0],o=this.cachedCoveredPositions.get(r);o||(o=new Set,this.cachedCoveredPositions.set(r,o)),o.add(`${t[1]}:${t[2]}:${t[3]}:${t[4]}`),this.numberOfCachedPositions+=1,this.flushCountdown.restartCountdown(),this.numberOfCachedPositions>=u&&this.flush()}flush(){this.numberOfCachedPositions!==0&&(this.flushCountdown.stopCountdown(),this.cachedCoveredPositions.forEach((e,t)=>{this.socket.send(`${"c"} ${t} ${Array.from(e).join(" ")}`)}),this.cachedCoveredPositions=new Map,this.numberOfCachedPositions=0)}};console.log("Starting coverage forwarding worker.");var h=new i("ws://$REPORT_TO_HOST:$REPORT_TO_PORT/socket"),a=new n(h);onmessage=s=>{let e=s.data;e.startsWith("s")?h.send(e):e==="unload"?a.flush():a.add(e)};\n')}function u(){return c()}function k(){return typeof window!="undefined"}function c(){return window}function b(e,t){let n=u()[e];return n||(n=t,u()[e]=n),n}var G="s",N="b",S=class{constructor(t,n){this.coverageObj=t;this.path=n}get(t,n,o){let r=t[n];return r!==Object(r)?r:g(this.coverageObj,r,[...this.path,n])}set(t,n,o){let r=[...this.path,n];if(r[0]===G){let i=r[1],s=this.coverageObj.statementMap[i];this.broadcastCodeRangeCoverage(s)}else if(r[0]===N){let i=r[1],s=Number.parseInt(r[2]),a=this.coverageObj.branchMap[i].locations[s];this.broadcastCodeRangeCoverage(a)}return!0}broadcastCodeRangeCoverage(t){let n=this.coverageObj.hash;u()._$Bc(n,t.start.line,t.start.column,t.end.line,t.end.column)}};function g(e,t,n){return new Proxy(t,new S(e,n))}var W=C(R());function U(e){if(!(typeof WorkerGlobalScope=="function"&&self instanceof WorkerGlobalScope)){if(typeof window.addEventListener!="function")return;window.addEventListener("beforeunload",function(){e()},!0),window.addEventListener("unload",function(){e()},!0)}}var O={add:U};var T=C(M()),D=W.default?T.default:O,d=new Set,_=!1;function V(){_||(_=!0,D.add(Y))}function x(e){if(V(),typeof e!="function")throw new Error("Listener is no function");d.add(e);var t={remove:function(){return d.delete(e)},run:function(){return d.delete(e),e()}};return t}function Y(){var e=[];return d.forEach(function(t){e.push(t()),d.delete(t)}),Promise.all(e)}var l;(function(n){n.MESSAGE_TYPE_SOURCEMAP="s",n.MESSAGE_TYPE_COVERAGE="c"})(l||(l={}));var P=b("__TS_AGENT",{});function w(){return P._$BcWorker}function z(e){return P._$BcWorker=e,e}u().makeCoverageInterceptor=function(e){let t=e.hash;if(!w()){let n=z(new m);(function(){let r=function(i){let s=c()[i];c()[i]=function(...a){if(n.postMessage("unload"),s)return s.apply(this,a)},k()&&Object.defineProperty(c(),i,{get:function(){return s},set:function(a){s=a}})};r("onunload"),r("onbeforeunload"),x(()=>n.postMessage("unload"))})()}return function(){let o=b("sentMaps",new Set);e.inputSourceMap&&(o.has(e.path)||(w().postMessage(`${l.MESSAGE_TYPE_SOURCEMAP} ${t}:${JSON.stringify(e.inputSourceMap)}`),o.add(e.path)))}(),function(){let o=new Set;u()._$Bc=(r,i,s,a,$)=>{let h=`${r}:${i}:${s}:${a}:${$}`;o.has(h)||(w().postMessage(h),o.add(h))}}(),g(e,e,[])};})();
1
+ (()=>{var L=Object.create;var p=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var U=Object.getPrototypeOf,B=Object.prototype.hasOwnProperty;var P=e=>p(e,"__esModule",{value:!0});var E=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var j=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of H(t))!B.call(e,r)&&r!=="default"&&p(e,r,{get:()=>t[r],enumerable:!(n=D(t,r))||n.enumerable});return e},S=e=>j(P(p(e!=null?L(U(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var O=E((re,R)=>{R.exports=!1});var $=E(()=>{});function m(e){let t=new Blob([e],{type:"text/javascript"}),n=URL.createObjectURL(t),r=new Worker(n);return URL.revokeObjectURL(n),r}function g(){return m('var a=class{constructor(e){this.cachedMessages=[];this.url=e,this.socket=this.createSocket()}createSocket(){let e=new WebSocket(this.url);return e.onopen=()=>this.onopen(),e.onclose=()=>this.onclose(),e}onclose(){this.socket=this.createSocket()}onopen(){console.log("Connection to Coverage Collector established."),this.cachedMessages.forEach(e=>this.socket.send(e)),this.cachedMessages=[]}send(e){this.socket.readyState===WebSocket.OPEN?this.socket.send(e):(this.cachedMessages.push(e),this.cachedMessages.length%500===0&&console.log(`More than ${this.cachedMessages.length} messages are queued to be sent.`))}};var E=20,v=1e3,g=class{constructor(e,t){this.milliseconds=e;this.onCountedToZero=t;this.timerHandle=null}restartCountdown(){this.stopCountdown(),this.timerHandle=self.setTimeout(()=>{this.stopCountdown(),this.onCountedToZero()},this.milliseconds)}stopCountdown(){this.timerHandle!==null&&(self.clearTimeout(this.timerHandle),this.timerHandle=null)}},c=class{constructor(e){this.socket=e,this.cachedCoveredRanges=new Map,this.numberOfCachedPositions=0,this.flushCountdown=new g(v,()=>this.flush())}addRange(e,t){let o=this.cachedCoveredRanges.get(e);o||(o=new Set,this.cachedCoveredRanges.set(e,o)),o.add(t),this.numberOfCachedPositions+=1,this.flushCountdown.restartCountdown(),this.numberOfCachedPositions>=E&&this.flush()}flush(){this.numberOfCachedPositions!==0&&(this.flushCountdown.stopCountdown(),this.cachedCoveredRanges.forEach((e,t)=>{let o=Array.from(e).map(n=>`${n.start.line}:${n.start.column}:${n.end.line}:${n.end.column}`);this.socket.send(`${"c"} ${t} ${o.join(" ")}`),e.clear()}),this.cachedCoveredRanges.clear(),this.numberOfCachedPositions=0)}};var C="s",m="b";console.log("Starting coverage forwarding worker.");var p=new a("$REPORT_TO_URL/socket"),d=new c(p),h=new Map;onmessage=s=>{let e=s.data;if(e.startsWith("s"))p.send(e);else if(e.startsWith("i")){let t=JSON.parse(e.substring(2));h.set(t.hash,t),console.info(`Received coverage mapping information for "${t.hash}".`)}else e.startsWith("u")?S(e):e==="unload"?d.flush():console.error(`No handler for message: ${e}`)};function S(s){var l;let e=s.split(" ");if(e.length<4||h===null)return;let t=e[1],o=e[2],n=h.get(t);if(!n){console.log(`No coverage mapping information for ${t} available!`);return}if(o===C){let i=e[3],r=n.statementMap[i];r&&d.addRange(t,r)}else if(o===m){let i=e[3],r=Number.parseInt(e[4]),u=(l=n.branchMap[i])==null?void 0:l.locations[r];u&&d.addRange(t,u)}}\n')}var b="s",w="b";var a;(function(o){o.MESSAGE_TYPE_SOURCEMAP="s",o.MESSAGE_TYPE_COVERAGE="c",o.ISTANBUL_COV_OBJECT="i",o.UNRESOLVED_CODE_ENTITY="u"})(a||(a={}));var k=class{constructor(t,n,r){this.worker=t;this.fileHash=n;this.path=r}get(t,n,r){let o=t[n];return o!==Object(o)?o:C(this.worker,this.fileHash,o,[...this.path,n])}set(t,n,r){let o=[...this.path,n],i=o[0];if(i===b){let s=o[1];this.worker.postMessage(`${a.UNRESOLVED_CODE_ENTITY} ${this.fileHash} ${b} ${s}`)}else if(i===w){let s=o[1],u=o[2];this.worker.postMessage(`${a.UNRESOLVED_CODE_ENTITY} ${this.fileHash} ${w} ${s} ${u}`)}return!0}};function C(e,t,n,r){return new Proxy(n,new k(e,t,r))}var T=S(O());function G(e){if(!(typeof WorkerGlobalScope=="function"&&self instanceof WorkerGlobalScope)){if(typeof window.addEventListener!="function")return;window.addEventListener("beforeunload",function(){e()},!0),window.addEventListener("unload",function(){e()},!0)}}var _={add:G};var W=S($()),V=T.default?W.default:_,c=new Set,M=!1;function Y(){M||(M=!0,V.add(J))}function x(e){if(Y(),typeof e!="function")throw new Error("Listener is no function");c.add(e);var t={remove:function(){return c.delete(e)},run:function(){return c.delete(e),e()}};return t}function J(){var e=[];return c.forEach(function(t){e.push(t()),c.delete(t)}),Promise.all(e)}function l(){return d()}function A(){return typeof window!="undefined"}function d(){return window}function v(e,t){let n=l()[e];return n||(n=t,l()[e]=n),n}var I=v("__TS_AGENT",{});function h(){return I._$BcWorker}function z(e){return I._$BcWorker=e,e}var N=new Set;l().makeCoverageInterceptor=function(e){let t=e.hash;if(N.has(t)){console.log(`Coverage interceptor added twice for ${t}. This seems to be a bug in the instrumentation.`);return}else N.add(t);if(!h()){let n=z(new g);(function(){let o=function(i){let s=d()[i];d()[i]=function(...u){if(n.postMessage("unload"),s)return s.apply(this,u)},A()&&Object.defineProperty(d(),i,{get:function(){return s},set:function(u){s=u}})};o("onunload"),o("onbeforeunload"),x(()=>n.postMessage("unload"))})()}return function(){h().postMessage(`${a.ISTANBUL_COV_OBJECT} ${JSON.stringify(e)}`);let r=v("sentMaps",new Set);e.inputSourceMap&&(r.has(e.path)||(h().postMessage(`${a.MESSAGE_TYPE_SOURCEMAP} ${t}:${JSON.stringify(e.inputSourceMap)}`),r.add(e.path)))}(),function(){let r=new Set;l()._$Bc=(o,i,s,u,y)=>{let f=`${o}:${i}:${s}:${u}:${y}`;r.has(f)||(h().postMessage(f),r.add(f))}}(),C(h(),e.hash,e,[])};})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teamscale/javascript-instrumenter",
3
- "version": "0.0.1-beta.35",
3
+ "version": "0.0.1-beta.39",
4
4
  "description": "Istanbul-based coverage instrumenter with coverage forwarding via WebSockets",
5
5
  "main": "dist/src/main.js",
6
6
  "bin": "dist/src/main.js",
@@ -54,7 +54,7 @@
54
54
  "@cqse/commons": "^0.0.1-beta.1",
55
55
  "@types/micromatch": "^4.0.2",
56
56
  "argparse": "^2.0.1",
57
- "async": "^3.2.3",
57
+ "async": "^3.2.4",
58
58
  "bunyan": "^1.8.15",
59
59
  "convert-source-map": "^1.7.0",
60
60
  "foreground-child": "^2.0.0",