@temporalio/nyc-test-coverage 1.1.0 → 1.2.0

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/lib/index.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ import { InjectedSinks } from '@temporalio/worker';
2
+ import { CoverageSinks } from './sinks';
3
+ import libCoverage from 'istanbul-lib-coverage';
4
+ export declare class WorkflowCoverage {
5
+ coverageMap: libCoverage.CoverageMap;
6
+ /**
7
+ * Interceptor to inject into `WorkerOptions.interceptors.workflowModules`
8
+ */
9
+ get interceptorModule(): string;
10
+ /**
11
+ * Contains sinks that allow Workflows to gather coverage data.
12
+ */
13
+ get sinks(): InjectedSinks<CoverageSinks>;
14
+ /**
15
+ * Merge this WorkflowCoverage's coverage map into the global coverage
16
+ * map data `global.__coverage__`.
17
+ */
18
+ mergeIntoGlobalCoverage(): void;
19
+ }
package/lib/index.js ADDED
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WorkflowCoverage = void 0;
7
+ const istanbul_lib_coverage_1 = __importDefault(require("istanbul-lib-coverage"));
8
+ class WorkflowCoverage {
9
+ constructor() {
10
+ this.coverageMap = istanbul_lib_coverage_1.default.createCoverageMap();
11
+ }
12
+ /**
13
+ * Interceptor to inject into `WorkerOptions.interceptors.workflowModules`
14
+ */
15
+ get interceptorModule() {
16
+ return require.resolve('./interceptors');
17
+ }
18
+ /**
19
+ * Contains sinks that allow Workflows to gather coverage data.
20
+ */
21
+ get sinks() {
22
+ return {
23
+ coverage: {
24
+ merge: {
25
+ fn: (_workflowInfo, testCoverage) => {
26
+ this.coverageMap.merge(testCoverage);
27
+ },
28
+ callDuringReplay: false,
29
+ },
30
+ },
31
+ };
32
+ }
33
+ /**
34
+ * Merge this WorkflowCoverage's coverage map into the global coverage
35
+ * map data `global.__coverage__`.
36
+ */
37
+ mergeIntoGlobalCoverage() {
38
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
39
+ // @ts-ignore
40
+ this.coverageMap.merge(global.__coverage__);
41
+ const coverageMapData = Object.keys(this.coverageMap.data).reduce((cur, path) => {
42
+ const fileCoverage = this.coverageMap.data[path];
43
+ cur[path] = fileCoverage.data;
44
+ return cur;
45
+ }, {});
46
+ // @ts-ignore
47
+ global.__coverage__ = coverageMapData;
48
+ }
49
+ }
50
+ exports.WorkflowCoverage = WorkflowCoverage;
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,kFAAgD;AAEhD,MAAa,gBAAgB;IAA7B;QACE,gBAAW,GAAG,+BAAW,CAAC,iBAAiB,EAAE,CAAC;IA+ChD,CAAC;IA7CC;;OAEG;IACH,IAAW,iBAAiB;QAC1B,OAAO,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO;YACL,QAAQ,EAAE;gBACR,KAAK,EAAE;oBACL,EAAE,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,EAAE;wBAClC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;oBACvC,CAAC;oBACD,gBAAgB,EAAE,KAAK;iBACxB;aACF;SACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,uBAAuB;QACrB,sDAAsD;QACtD,aAAa;QACb,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE5C,MAAM,eAAe,GAAgC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,MAAM,CAC5F,CAAC,GAAgC,EAAE,IAAI,EAAE,EAAE;YACzC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAA6B,CAAC;YAE7E,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC;YAC9B,OAAO,GAAG,CAAC;QACb,CAAC,EACD,EAAE,CACH,CAAC;QAEF,aAAa;QACb,MAAM,CAAC,YAAY,GAAG,eAAe,CAAC;IACxC,CAAC;CACF;AAhDD,4CAgDC"}
@@ -0,0 +1,2 @@
1
+ import { WorkflowInterceptors } from '@temporalio/workflow';
2
+ export declare const interceptors: () => WorkflowInterceptors;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.interceptors = void 0;
4
+ const workflow_1 = require("@temporalio/workflow");
5
+ const { coverage } = (0, workflow_1.proxySinks)();
6
+ // Export the interceptors
7
+ const interceptors = () => ({
8
+ internals: [
9
+ {
10
+ concludeActivation(input, next) {
11
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
12
+ // @ts-ignore
13
+ const globalCoverage = global.__coverage__;
14
+ coverage.merge(JSON.parse(JSON.stringify(globalCoverage)));
15
+ clearCoverage(globalCoverage);
16
+ return next(input);
17
+ },
18
+ },
19
+ ],
20
+ });
21
+ exports.interceptors = interceptors;
22
+ function clearCoverage(coverage) {
23
+ for (const path of Object.keys(coverage)) {
24
+ for (const index of Object.keys(coverage[path].s)) {
25
+ coverage[path].s[index] = 0;
26
+ }
27
+ }
28
+ }
29
+ //# sourceMappingURL=interceptors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interceptors.js","sourceRoot":"","sources":["../src/interceptors.ts"],"names":[],"mappings":";;;AAAA,mDAAwE;AAIxE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,qBAAU,GAAiB,CAAC;AAEjD,0BAA0B;AACnB,MAAM,YAAY,GAAG,GAAyB,EAAE,CAAC,CAAC;IACvD,SAAS,EAAE;QACT;YACE,kBAAkB,CAAC,KAAK,EAAE,IAAI;gBAC5B,sDAAsD;gBACtD,aAAa;gBACb,MAAM,cAAc,GAAoB,MAAM,CAAC,YAAY,CAAC;gBAE5D,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBAC3D,aAAa,CAAC,cAAc,CAAC,CAAC;gBAE9B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;SACF;KACF;CACF,CAAC,CAAC;AAfU,QAAA,YAAY,gBAetB;AAEH,SAAS,aAAa,CAAC,QAAyB;IAC9C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;QACxC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YACjD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC7B;KACF;AACH,CAAC"}
package/lib/sinks.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { Sinks } from '@temporalio/workflow';
2
+ export interface CoverageSinks extends Sinks {
3
+ coverage: {
4
+ merge(coverageMap: any): void;
5
+ };
6
+ }
package/lib/sinks.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=sinks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sinks.js","sourceRoot":"","sources":["../src/sinks.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,35 +1,35 @@
1
1
  {
2
2
  "name": "@temporalio/nyc-test-coverage",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Temporal.io SDK code coverage integration",
5
- "main": "lib/index.js",
6
- "types": "./lib/index.d.ts",
7
5
  "keywords": [
8
6
  "temporal",
9
7
  "workflow",
10
8
  "testing",
11
9
  "coverage"
12
10
  ],
13
- "author": "Temporal Technologies Inc. <sdk@temporal.io>",
14
- "license": "MIT",
15
- "dependencies": {
16
- "@temporalio/worker": "^1.1.0",
17
- "@temporalio/workflow": "^1.1.0",
18
- "istanbul-lib-coverage": "^3.2.0"
19
- },
20
- "devDependencies": {
21
- "@types/istanbul-lib-coverage": "^2.0.4"
22
- },
11
+ "homepage": "https://github.com/temporalio/sdk-typescript/tree/main/packages/testing",
23
12
  "bugs": {
24
13
  "url": "https://github.com/temporalio/sdk-typescript/issues"
25
14
  },
26
- "homepage": "https://github.com/temporalio/sdk-typescript/tree/main/packages/testing",
15
+ "license": "MIT",
16
+ "author": "Temporal Technologies Inc. <sdk@temporal.io>",
17
+ "main": "lib/index.js",
18
+ "types": "./lib/index.d.ts",
27
19
  "files": [
28
20
  "lib",
29
21
  "src"
30
22
  ],
23
+ "dependencies": {
24
+ "@temporalio/worker": "^1.2.0",
25
+ "@temporalio/workflow": "^1.2.0",
26
+ "istanbul-lib-coverage": "^3.2.0"
27
+ },
28
+ "devDependencies": {
29
+ "@types/istanbul-lib-coverage": "^2.0.4"
30
+ },
31
31
  "publishConfig": {
32
32
  "access": "public"
33
33
  },
34
- "gitHead": "132f23a47a93fecf3f39836b31f08ea837b30320"
34
+ "gitHead": "9790992f0a7da1638cd3db99518e414107651630"
35
35
  }