Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@codechecks/type-coverage-watcher

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@codechecks/type-coverage-watcher - npm Package Compare versions

Comparing version
0.1.1
to
0.1.2
+2
lib/__mocks__/type-coverage-core.d.ts
import * as TypeCoverage from "type-coverage-core";
export declare const lint: typeof TypeCoverage.lint;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.lint = jest.fn();
//# sourceMappingURL=type-coverage-core.js.map
{"version":3,"file":"type-coverage-core.js","sourceRoot":"","sources":["../../src/__mocks__/type-coverage-core.ts"],"names":[],"mappings":";;AAEa,QAAA,IAAI,GAA6B,IAAI,CAAC,EAAE,EAAE,CAAC"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const formatters_1 = require("../formatters");
describe("formatters > formatShortDescription", () => {
it("should work", () => {
const actual = formatters_1.formatShortDescription({ coverageDiffPerc: 1.4, headTypeCoveragePerc: 90.2, newUntypedSymbols: 1 });
expect(actual).toMatchInlineSnapshot(`"Change: +1.40% Total: 90.20% New untyped symbols: 1"`);
});
it("should work with atLeast", () => {
const actual = formatters_1.formatShortDescription({
coverageDiffPerc: 1.4,
headTypeCoveragePerc: 90.2,
newUntypedSymbols: 1,
atLeast: 90,
});
expect(actual).toMatchInlineSnapshot(`"Change: +1.40% Total: 90.20% (min. 90.00%) New untyped symbols: 1"`);
});
});
//# sourceMappingURL=formatters.spec.js.map
{"version":3,"file":"formatters.spec.js","sourceRoot":"","sources":["../../src/__tests__/formatters.spec.ts"],"names":[],"mappings":";;AAAA,8CAAuD;AAEvD,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;QACrB,MAAM,MAAM,GAAG,mCAAsB,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC;QAEnH,MAAM,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,uDAAuD,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,MAAM,GAAG,mCAAsB,CAAC;YACpC,gBAAgB,EAAE,GAAG;YACrB,oBAAoB,EAAE,IAAI;YAC1B,iBAAiB,EAAE,CAAC;YACpB,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,qEAAqE,CAAC,CAAC;IAC9G,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
interface FormatShortDescriptionArgs {
coverageDiffPerc: number;
headTypeCoveragePerc: number;
newUntypedSymbols: number;
atLeast?: number;
}
export declare function formatShortDescription({ coverageDiffPerc, atLeast, headTypeCoveragePerc, newUntypedSymbols, }: FormatShortDescriptionArgs): string;
export declare function perc(n: number): string;
export declare function renderSign(value: number): string;
export {};
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function formatShortDescription({ coverageDiffPerc, atLeast, headTypeCoveragePerc, newUntypedSymbols, }) {
const change = renderSign(coverageDiffPerc) + perc(coverageDiffPerc);
const limit = atLeast === undefined ? "" : ` (min. ${perc(atLeast)})`;
const total = perc(headTypeCoveragePerc);
return `Change: ${change} Total: ${total}${limit} New untyped symbols: ${newUntypedSymbols}`;
}
exports.formatShortDescription = formatShortDescription;
function perc(n) {
return n.toFixed(2) + "%";
}
exports.perc = perc;
function renderSign(value) {
if (value > 0) {
return "+";
}
else {
// we dont' render signs for negative (it's part of a number xD) or 0
return "";
}
}
exports.renderSign = renderSign;
//# sourceMappingURL=formatters.js.map
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":";;AAOA,SAAgB,sBAAsB,CAAC,EACrC,gBAAgB,EAChB,OAAO,EACP,oBAAoB,EACpB,iBAAiB,GACU;IAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAEzC,OAAO,WAAW,MAAM,WAAW,KAAK,GAAG,KAAK,yBAAyB,iBAAiB,EAAE,CAAC;AAC/F,CAAC;AAXD,wDAWC;AAED,SAAgB,IAAI,CAAC,CAAS;IAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC5B,CAAC;AAFD,oBAEC;AAED,SAAgB,UAAU,CAAC,KAAa;IACtC,IAAI,KAAK,GAAG,CAAC,EAAE;QACb,OAAO,GAAG,CAAC;KACZ;SAAM;QACL,qEAAqE;QACrE,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AAPD,gCAOC"}
import * as TypeCoverage from "type-coverage-core";
export const lint: typeof TypeCoverage.lint = jest.fn();
import { formatShortDescription } from "../formatters";
describe("formatters > formatShortDescription", () => {
it("should work", () => {
const actual = formatShortDescription({ coverageDiffPerc: 1.4, headTypeCoveragePerc: 90.2, newUntypedSymbols: 1 });
expect(actual).toMatchInlineSnapshot(`"Change: +1.40% Total: 90.20% New untyped symbols: 1"`);
});
it("should work with atLeast", () => {
const actual = formatShortDescription({
coverageDiffPerc: 1.4,
headTypeCoveragePerc: 90.2,
newUntypedSymbols: 1,
atLeast: 90,
});
expect(actual).toMatchInlineSnapshot(`"Change: +1.40% Total: 90.20% (min. 90.00%) New untyped symbols: 1"`);
});
});
interface FormatShortDescriptionArgs {
coverageDiffPerc: number;
headTypeCoveragePerc: number;
newUntypedSymbols: number;
atLeast?: number;
}
export function formatShortDescription({
coverageDiffPerc,
atLeast,
headTypeCoveragePerc,
newUntypedSymbols,
}: FormatShortDescriptionArgs): string {
const change = renderSign(coverageDiffPerc) + perc(coverageDiffPerc);
const limit = atLeast === undefined ? "" : ` (min. ${perc(atLeast)})`;
const total = perc(headTypeCoveragePerc);
return `Change: ${change} Total: ${total}${limit} New untyped symbols: ${newUntypedSymbols}`;
}
export function perc(n: number): string {
return n.toFixed(2) + "%";
}
export function renderSign(value: number): string {
if (value > 0) {
return "+";
} else {
// we dont' render signs for negative (it's part of a number xD) or 0
return "";
}
}
+33
-3

@@ -7,3 +7,3 @@ "use strict";

const codechecksMock = require("../__mocks__/@codechecks/client").codechecks;
const typeCoverageMock = require("../__mocks__/type-coverage").lint;
const typeCoverageMock = require("../__mocks__/type-coverage-core").lint;
beforeEach(() => jest.resetAllMocks());

@@ -69,3 +69,3 @@ it("should work not in PR context", async () => {

"name": "Type Coverage",
"shortDescription": "Change: +25.00% Total: 75.00% New typed symbols: 1",
"shortDescription": "Change: +25.00% Total: 75.00% New untyped symbols: 0",
"status": "success",

@@ -139,3 +139,3 @@ },

"name": "Type Coverage",
"shortDescription": "Change: +100.00% Total: 100.00% New typed symbols: 2",
"shortDescription": "Change: +100.00% Total: 100.00% New untyped symbols: 0",
"status": "success",

@@ -154,3 +154,33 @@ },

});
it("should handle atLeast option", async () => {
codechecksMock.isPr.mockReturnValue(true);
typeCoverageMock.mockReturnValue({
correctCount: 4,
totalCount: 10,
anys: [],
program: undefined,
});
await index_1.typeCoverageWatcher({ tsconfigPath: "./tsconfig.json", atLeast: 50 });
expect(client_1.codechecks.report).toMatchInlineSnapshot(`
[MockFunction] {
"calls": Array [
Array [
Object {
"longDescription": "New untyped symbols: 0",
"name": "Type Coverage",
"shortDescription": "Change: +40.00% Total: 40.00% (min. 50.00%) New untyped symbols: 0",
"status": "failure",
},
],
],
"results": Array [
Object {
"isThrow": false,
"value": undefined,
},
],
}
`);
});
});
//# sourceMappingURL=index.spec.js.map
+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../src/__tests__/index.spec.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"index.spec.js","sourceRoot":"","sources":["../../src/__tests__/index.spec.ts"],"names":[],"mappings":"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"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const client_1 = require("@codechecks/client");
const type_coverage_1 = require("type-coverage");
const type_coverage_core_1 = require("type-coverage-core");
const lodash_1 = require("lodash");
const formatters_1 = require("./formatters");
async function typeCoverageWatcher(_options) {
const options = normalizeOptions(_options);
const _typeCoverage = await type_coverage_1.lint(options.tsconfigPath, true, false);
const _typeCoverage = await type_coverage_core_1.lint(options.tsconfigPath, {
debug: false,
ignoreCatch: _options.ignoreCatch,
ignoreFiles: _options.ignoreFiles,
strict: _options.strict,
});
const typeCoverage = normalizeTypeCoverage(_typeCoverage);

@@ -25,7 +31,10 @@ await client_1.codechecks.saveValue(options.artifactName, typeCoverage);

: 0;
const newTypedSymbols = headTypeCoverageArtifact.typedSymbols - (baseTypeCoverageArtifact ? baseTypeCoverageArtifact.typedSymbols : 0);
const newTypedSymbolsNote = newTypedSymbols > 0 ? `New typed symbols: ${newTypedSymbols}` : `New untyped symbols: ${-newTypedSymbols}`;
const coverageDiff = headTypeCoverage - baseTypeCoverage;
const shortDescription = `Change: ${renderSign(coverageDiff)}${perc(coverageDiff)} Total: ${perc(headTypeCoverage)} ${newTypedSymbolsNote}`;
const newUntypedSymbols = findNew(headTypeCoverageArtifact.allUntypedSymbols, baseTypeCoverageArtifact ? baseTypeCoverageArtifact.allUntypedSymbols : []);
const shortDescription = formatters_1.formatShortDescription({
coverageDiffPerc: coverageDiff,
atLeast: options.atLeast,
headTypeCoveragePerc: headTypeCoverage,
newUntypedSymbols: newUntypedSymbols.length,
});
let longDescription = `New untyped symbols: ${newUntypedSymbols.length}`;

@@ -42,5 +51,6 @@ if (newUntypedSymbols.length > 0) {

}
const status = options.atLeast === undefined || headTypeCoverage > options.atLeast ? "success" : "failure";
return {
name: options.name,
status: "success",
status,
shortDescription,

@@ -62,5 +72,2 @@ longDescription,

}
function perc(n) {
return n.toFixed(2) + "%";
}
function normalizeTypeCoverage(rawTypeCoverage) {

@@ -78,11 +85,2 @@ return {

}
function renderSign(value) {
if (value > 0) {
return "+";
}
else {
// we dont' render signs for negative (it's part of a number xD) or 0
return "";
}
}
function normalizeOptions(options = {}) {

@@ -94,4 +92,5 @@ const name = options.name || "Type Coverage";

artifactName: `type-coverage:${name}`,
atLeast: options.atLeast,
};
}
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}

@@ -1,5 +0,9 @@

import { AnyInfo } from "type-coverage/dist/interfaces";
import { AnyInfo } from "type-coverage-core";
export interface Options {
tsconfigPath?: string;
name?: string;
ignoreFiles?: string[];
ignoreCatch?: boolean;
atLeast?: number;
strict?: boolean;
}

@@ -10,2 +14,3 @@ export interface NormalizedOptions {

artifactName: string;
atLeast?: number;
}

@@ -12,0 +17,0 @@ export interface TypeCoverageArtifact {

@@ -17,3 +17,3 @@ {

"author": "Chris Kaczor <chris@kaczor.io>",
"version": "0.1.1",
"version": "0.1.2",
"main": "lib/index.js",

@@ -58,3 +58,3 @@ "types": "lib/index.d.ts",

"lodash": "^4.17.11",
"type-coverage": "^1.10.0"
"type-coverage-core": "^2.2.0"
},

@@ -61,0 +61,0 @@ "publishConfig": {

@@ -9,2 +9,3 @@ <p align="center">

<a href="/package.json"><img alt="Software License" src="https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square"></a>
<a href="https://codechecks.io"><img src="https://raw.githubusercontent.com/codechecks/docs/master/images/badges/badge-default.svg?sanitize=true" alt="codechecks.io" /></a>
</p>

@@ -19,10 +20,6 @@ </p>

or
## Usage
```sh
yarn add --dev @codechecks/type-coverage-watcher
```
Are you new to codechecks? Check out [getting started guide (it's simple)](https://github.com/codechecks/docs/blob/master/getting-started.md)!
## Usage
Add to your `codechecks.yml` file:

@@ -48,2 +45,6 @@

name?: string; // defaults to Type Coverage
ignoreFiles?: string[];
ignoreCatch?: boolean;
atLeast?: number;
strict?: boolean;
}

@@ -64,2 +65,27 @@ ```

##### ignoreFiles
optional `string[]`<br>\
Defaults: `undefined`<br>\
Specify the ignored for checks files.
##### ignoreCatch
optional `string`<br>\
Defaults: `undefined`<br>\
See [type-coverage's description](https://github.com/plantain-00/type-coverage#ignore-catch) for the reference.
##### atLeast
optional `number`<br>\
Defaults: `undefined`<br>\
Example: `atLeast: 99`<br>\
Fail if coverage rate < this value.
##### strict
optional `string`<br>\
Defaults: `undefined`<br>\
See [type-coverage's description](https://github.com/plantain-00/type-coverage#strict-mode) for the reference.
## Contributing

@@ -66,0 +92,0 @@

import { typeCoverageWatcher } from "../index";
import { lint } from "type-coverage";
import { lint } from "type-coverage-core";
import { codechecks } from "@codechecks/client";

@@ -10,3 +10,3 @@ import { TypeCoverageArtifact, RawTypeCoverageReport } from "../types";

const codechecksMock = require("../__mocks__/@codechecks/client").codechecks as Mocked<typeof codechecks>;
const typeCoverageMock = require("../__mocks__/type-coverage").lint as jest.Mock<typeof lint>;
const typeCoverageMock = require("../__mocks__/type-coverage-core").lint as jest.Mock<typeof lint>;
beforeEach(() => jest.resetAllMocks());

@@ -77,3 +77,3 @@

"name": "Type Coverage",
"shortDescription": "Change: +25.00% Total: 75.00% New typed symbols: 1",
"shortDescription": "Change: +25.00% Total: 75.00% New untyped symbols: 0",
"status": "success",

@@ -151,3 +151,3 @@ },

"name": "Type Coverage",
"shortDescription": "Change: +100.00% Total: 100.00% New typed symbols: 2",
"shortDescription": "Change: +100.00% Total: 100.00% New untyped symbols: 0",
"status": "success",

@@ -166,2 +166,34 @@ },

});
it("should handle atLeast option", async () => {
codechecksMock.isPr.mockReturnValue(true);
typeCoverageMock.mockReturnValue({
correctCount: 4,
totalCount: 10,
anys: [],
program: undefined as any,
});
await typeCoverageWatcher({ tsconfigPath: "./tsconfig.json", atLeast: 50 });
expect(codechecks.report).toMatchInlineSnapshot(`
[MockFunction] {
"calls": Array [
Array [
Object {
"longDescription": "New untyped symbols: 0",
"name": "Type Coverage",
"shortDescription": "Change: +40.00% Total: 40.00% (min. 50.00%) New untyped symbols: 0",
"status": "failure",
},
],
],
"results": Array [
Object {
"isThrow": false,
"value": undefined,
},
],
}
`);
});
});
import { codechecks, CodeChecksReport } from "@codechecks/client";
import { lint as getTypeCoverageInfo } from "type-coverage";
import { lint as getTypeCoverageInfo } from "type-coverage-core";
import { RawTypeCoverageReport, TypeCoverageArtifact, Options, SymbolInfo, NormalizedOptions } from "./types";
import { groupBy } from "lodash";
import { formatShortDescription } from "./formatters";
export async function typeCoverageWatcher(_options: Options): Promise<void> {
const options = normalizeOptions(_options);
const _typeCoverage = await getTypeCoverageInfo(options.tsconfigPath, true, false);
const _typeCoverage = await getTypeCoverageInfo(options.tsconfigPath, {
debug: false,
ignoreCatch: _options.ignoreCatch,
ignoreFiles: _options.ignoreFiles,
strict: _options.strict,
});
const typeCoverage = normalizeTypeCoverage(_typeCoverage);

@@ -34,13 +40,4 @@ await codechecks.saveValue(options.artifactName, typeCoverage);

: 0;
const newTypedSymbols =
headTypeCoverageArtifact.typedSymbols - (baseTypeCoverageArtifact ? baseTypeCoverageArtifact.typedSymbols : 0);
const newTypedSymbolsNote =
newTypedSymbols > 0 ? `New typed symbols: ${newTypedSymbols}` : `New untyped symbols: ${-newTypedSymbols}`;
const coverageDiff = headTypeCoverage - baseTypeCoverage;
const shortDescription = `Change: ${renderSign(coverageDiff)}${perc(coverageDiff)} Total: ${perc(
headTypeCoverage,
)} ${newTypedSymbolsNote}`;
const newUntypedSymbols = findNew(

@@ -51,2 +48,9 @@ headTypeCoverageArtifact.allUntypedSymbols,

const shortDescription = formatShortDescription({
coverageDiffPerc: coverageDiff,
atLeast: options.atLeast,
headTypeCoveragePerc: headTypeCoverage,
newUntypedSymbols: newUntypedSymbols.length,
});
let longDescription = `New untyped symbols: ${newUntypedSymbols.length}`;

@@ -64,5 +68,7 @@ if (newUntypedSymbols.length > 0) {

const status = options.atLeast === undefined || headTypeCoverage > options.atLeast ? "success" : "failure";
return {
name: options.name,
status: "success",
status,
shortDescription,

@@ -90,6 +96,2 @@ longDescription,

function perc(n: number): string {
return n.toFixed(2) + "%";
}
function normalizeTypeCoverage(rawTypeCoverage: RawTypeCoverageReport): TypeCoverageArtifact {

@@ -108,11 +110,2 @@ return {

function renderSign(value: number): string {
if (value > 0) {
return "+";
} else {
// we dont' render signs for negative (it's part of a number xD) or 0
return "";
}
}
function normalizeOptions(options: Options = {}): NormalizedOptions {

@@ -124,3 +117,4 @@ const name = options.name || "Type Coverage";

artifactName: `type-coverage:${name}`,
atLeast: options.atLeast,
};
}

@@ -1,2 +0,2 @@

import { AnyInfo } from "type-coverage/dist/interfaces";
import { AnyInfo } from "type-coverage-core";

@@ -6,2 +6,6 @@ export interface Options {

name?: string;
ignoreFiles?: string[];
ignoreCatch?: boolean;
atLeast?: number;
strict?: boolean;
}

@@ -13,2 +17,3 @@

artifactName: string;
atLeast?: number;
}

@@ -15,0 +20,0 @@

import * as TypeCoverage from "type-coverage";
export declare const lint: typeof TypeCoverage.lint;
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.lint = jest.fn();
//# sourceMappingURL=type-coverage.js.map
{"version":3,"file":"type-coverage.js","sourceRoot":"","sources":["../../src/__mocks__/type-coverage.ts"],"names":[],"mappings":";;AAEa,QAAA,IAAI,GAA6B,IAAI,CAAC,EAAE,EAAE,CAAC"}
import * as TypeCoverage from "type-coverage";
export const lint: typeof TypeCoverage.lint = jest.fn();

Sorry, the diff of this file is too big to display