Socket
Socket
Sign inDemoInstall

@stryker-mutator/typescript-checker

Package Overview
Dependencies
172
Maintainers
4
Versions
69
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 4.0.0-beta.1 to 4.0.0-beta.2

dist/src/plugin-tokens.d.ts

8

CHANGELOG.md

@@ -6,2 +6,10 @@ # Change Log

# [4.0.0-beta.2](https://github.com/stryker-mutator/stryker/compare/v4.0.0-beta.1...v4.0.0-beta.2) (2020-08-07)
**Note:** Version bump only for package @stryker-mutator/typescript-checker
# [4.0.0-beta.1](https://github.com/stryker-mutator/stryker/compare/v4.0.0-beta.0...v4.0.0-beta.1) (2020-07-17)

@@ -8,0 +16,0 @@

4

dist/src/fs/hybrid-file-system.d.ts
import ts from 'typescript';
import { Mutant } from '@stryker-mutator/api/core';
import { Logger } from '@stryker-mutator/api/logging';
import { ScriptFile } from './script-file';

@@ -12,4 +13,7 @@ /**

export declare class HybridFileSystem {
private readonly log;
private readonly files;
private mutatedFile;
static inject: ["logger"];
constructor(log: Logger);
writeFile(fileName: string, data: string): void;

@@ -16,0 +20,0 @@ mutate(mutant: Pick<Mutant, 'fileName' | 'range' | 'replacement'>): void;

@@ -6,2 +6,3 @@ "use strict";

const typescript_1 = tslib_1.__importDefault(require("typescript"));
const plugin_1 = require("@stryker-mutator/api/plugin");
const script_file_1 = require("./script-file");

@@ -19,3 +20,4 @@ function toTSFileName(fileName) {

class HybridFileSystem {
constructor() {
constructor(log) {
this.log = log;
this.files = new Map();

@@ -30,2 +32,3 @@ }

else {
this.log.trace('Writing to file "%s"', fileName);
this.files.set(fileName, new script_file_1.ScriptFile(data, fileName));

@@ -51,2 +54,3 @@ }

}
this.log.trace('Registering watcher for file "%s"', fileName);
file.watcher = watcher;

@@ -73,2 +77,3 @@ }

exports.HybridFileSystem = HybridFileSystem;
HybridFileSystem.inject = plugin_1.tokens(plugin_1.commonTokens.logger);
//# sourceMappingURL=hybrid-file-system.js.map

2

dist/src/fs/script-file.js

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

if (!this.watcher) {
throw new Error(`No watcher registered for ${this.fileName}. Changes would go unnoticed`);
throw new Error(`Tried to check file "${this.fileName}" (which is part of your typescript project), but no watcher is registered for it. Changes would go unnoticed. This probably means that you need to expand the files that are included in your project.`);
}

@@ -32,0 +32,0 @@ }

import { PluginKind } from '@stryker-mutator/api/plugin';
import { TypescriptChecker } from './typescript-checker';
export declare const strykerPlugins: import("@stryker-mutator/api/plugin").ClassPlugin<PluginKind.Checker, ["logger", "options"]>[];
export { TypescriptChecker };
import { create } from './typescript-checker';
export declare const strykerPlugins: import("@stryker-mutator/api/plugin").FactoryPlugin<PluginKind.Checker, ["$injector"]>[];
export declare const createTypescriptChecker: typeof create;
//# sourceMappingURL=index.d.ts.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TypescriptChecker = exports.strykerPlugins = void 0;
exports.createTypescriptChecker = exports.strykerPlugins = void 0;
const plugin_1 = require("@stryker-mutator/api/plugin");
const typescript_checker_1 = require("./typescript-checker");
Object.defineProperty(exports, "TypescriptChecker", { enumerable: true, get: function () { return typescript_checker_1.TypescriptChecker; } });
exports.strykerPlugins = [plugin_1.declareClassPlugin(plugin_1.PluginKind.Checker, 'typescript', typescript_checker_1.TypescriptChecker)];
exports.strykerPlugins = [plugin_1.declareFactoryPlugin(plugin_1.PluginKind.Checker, 'typescript', typescript_checker_1.create)];
exports.createTypescriptChecker = typescript_checker_1.create;
//# sourceMappingURL=index.js.map
import { Checker, CheckResult } from '@stryker-mutator/api/check';
import { OptionsContext, Injector } from '@stryker-mutator/api/plugin';
import { Logger } from '@stryker-mutator/api/logging';
import { Mutant, StrykerOptions } from '@stryker-mutator/api/core';
import { HybridFileSystem } from './fs';
export declare function create(injector: Injector<OptionsContext>): TypescriptChecker;
export declare namespace create {
var inject: ["$injector"];
}
/**

@@ -16,5 +22,5 @@ * An in-memory type checker implementation which validates type errors of mutants.

private readonly allTSConfigFiles;
static inject: ["logger", "options"];
static inject: ["logger", "options", "fs"];
private readonly tsconfigFile;
constructor(logger: Logger, options: StrykerOptions);
constructor(logger: Logger, options: StrykerOptions, fs: HybridFileSystem);
/**

@@ -21,0 +27,0 @@ * Starts the typescript compiler and does a dry run

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TypescriptChecker = void 0;
exports.TypescriptChecker = exports.create = void 0;
const tslib_1 = require("tslib");

@@ -13,2 +13,3 @@ const os_1 = require("os");

const tsconfig_helpers_1 = require("./tsconfig-helpers");
const pluginTokens = tslib_1.__importStar(require("./plugin-tokens"));
const diagnosticsHost = {

@@ -20,2 +21,18 @@ getCanonicalFileName: (fileName) => fileName,

const FILE_CHANGE_DETECTED_DIAGNOSTIC_CODE = 6032;
typescriptCheckerLoggerFactory.inject = plugin_1.tokens(plugin_1.commonTokens.getLogger, plugin_1.commonTokens.target);
// eslint-disable-next-line @typescript-eslint/ban-types
function typescriptCheckerLoggerFactory(loggerFactory, target) {
var _a;
const targetName = (_a = target === null || target === void 0 ? void 0 : target.name) !== null && _a !== void 0 ? _a : TypescriptChecker.name;
const category = targetName === TypescriptChecker.name ? TypescriptChecker.name : `${TypescriptChecker.name}.${targetName}`;
return loggerFactory(category);
}
create.inject = plugin_1.tokens(plugin_1.commonTokens.injector);
function create(injector) {
return injector
.provideFactory(plugin_1.commonTokens.logger, typescriptCheckerLoggerFactory, plugin_1.Scope.Transient)
.provideClass(pluginTokens.fs, fs_1.HybridFileSystem)
.injectClass(TypescriptChecker);
}
exports.create = create;
/**

@@ -25,5 +42,5 @@ * An in-memory type checker implementation which validates type errors of mutants.

class TypescriptChecker {
constructor(logger, options) {
constructor(logger, options, fs) {
this.logger = logger;
this.fs = new fs_1.HybridFileSystem();
this.fs = fs;
this.currentErrors = [];

@@ -54,3 +71,3 @@ this.logDiagnostic = (label) => {

}, watchFile: (path, callback) => {
this.fs.getFile(path).watcher = callback;
this.fs.watchFile(path, callback);
return {

@@ -153,3 +170,3 @@ close: () => {

exports.TypescriptChecker = TypescriptChecker;
TypescriptChecker.inject = plugin_1.tokens(plugin_1.commonTokens.logger, plugin_1.commonTokens.options);
TypescriptChecker.inject = plugin_1.tokens(plugin_1.commonTokens.logger, plugin_1.commonTokens.options, pluginTokens.fs);
//# sourceMappingURL=typescript-checker.js.map
{
"name": "@stryker-mutator/typescript-checker",
"version": "4.0.0-beta.1",
"version": "4.0.0-beta.2",
"description": "A typescript type checker plugin to be used in Stryker, the JavaScript mutation testing framework",

@@ -33,15 +33,15 @@ "main": "dist/src/index.js",

"dependencies": {
"@stryker-mutator/api": "4.0.0-beta.1",
"@stryker-mutator/util": "4.0.0-beta.1",
"@stryker-mutator/api": "4.0.0-beta.2",
"@stryker-mutator/util": "4.0.0-beta.2",
"semver": "^7.3.2"
},
"devDependencies": {
"@stryker-mutator/test-helpers": "4.0.0-beta.1",
"@stryker-mutator/test-helpers": "4.0.0-beta.2",
"@types/semver": "^7.2.0"
},
"peerDependencies": {
"@stryker-mutator/core": "3.2.4",
"@stryker-mutator/core": "4.0.0-beta.1",
"typescript": ">=3.6"
},
"gitHead": "2973eef59afb41e8ee2da8d08501c6cf3d086e8e"
"gitHead": "7095548fe9157367b77e69f301a1259222983c89"
}

@@ -73,2 +73,6 @@ **NOTE:** This readme describes a checker plugin set to release in Stryker v4. It is not usable yet!

## Troubleshooting
## Load the plugin

@@ -75,0 +79,0 @@

import ts from 'typescript';
import { Mutant } from '@stryker-mutator/api/core';
import { Logger } from '@stryker-mutator/api/logging';
import { tokens, commonTokens } from '@stryker-mutator/api/plugin';

@@ -21,2 +23,5 @@ import { ScriptFile } from './script-file';

public static inject = tokens(commonTokens.logger);
constructor(private readonly log: Logger) {}
public writeFile(fileName: string, data: string) {

@@ -28,2 +33,3 @@ fileName = toTSFileName(fileName);

} else {
this.log.trace('Writing to file "%s"', fileName);
this.files.set(fileName, new ScriptFile(data, fileName));

@@ -51,2 +57,3 @@ }

}
this.log.trace('Registering watcher for file "%s"', fileName);
file.watcher = watcher;

@@ -53,0 +60,0 @@ }

@@ -32,3 +32,5 @@ import ts from 'typescript';

if (!this.watcher) {
throw new Error(`No watcher registered for ${this.fileName}. Changes would go unnoticed`);
throw new Error(
`Tried to check file "${this.fileName}" (which is part of your typescript project), but no watcher is registered for it. Changes would go unnoticed. This probably means that you need to expand the files that are included in your project.`
);
}

@@ -35,0 +37,0 @@ }

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

import { PluginKind, declareClassPlugin } from '@stryker-mutator/api/plugin';
import { PluginKind, declareFactoryPlugin } from '@stryker-mutator/api/plugin';
import { TypescriptChecker } from './typescript-checker';
import { create } from './typescript-checker';
export const strykerPlugins = [declareClassPlugin(PluginKind.Checker, 'typescript', TypescriptChecker)];
export const strykerPlugins = [declareFactoryPlugin(PluginKind.Checker, 'typescript', create)];
export { TypescriptChecker };
export const createTypescriptChecker = create;

@@ -6,4 +6,4 @@ import { EOL } from 'os';

import { Checker, CheckResult, CheckStatus } from '@stryker-mutator/api/check';
import { tokens, commonTokens } from '@stryker-mutator/api/plugin';
import { Logger } from '@stryker-mutator/api/logging';
import { tokens, commonTokens, OptionsContext, Injector, Scope } from '@stryker-mutator/api/plugin';
import { Logger, LoggerFactoryMethod } from '@stryker-mutator/api/logging';
import { Task, propertyPath } from '@stryker-mutator/util';

@@ -14,2 +14,3 @@ import { Mutant, StrykerOptions } from '@stryker-mutator/api/core';

import { determineBuildModeEnabled, overrideOptions, retrieveReferencedProjects, guardTSVersion } from './tsconfig-helpers';
import * as pluginTokens from './plugin-tokens';

@@ -24,2 +25,18 @@ const diagnosticsHost: ts.FormatDiagnosticsHost = {

typescriptCheckerLoggerFactory.inject = tokens(commonTokens.getLogger, commonTokens.target);
// eslint-disable-next-line @typescript-eslint/ban-types
function typescriptCheckerLoggerFactory(loggerFactory: LoggerFactoryMethod, target: Function | undefined) {
const targetName = target?.name ?? TypescriptChecker.name;
const category = targetName === TypescriptChecker.name ? TypescriptChecker.name : `${TypescriptChecker.name}.${targetName}`;
return loggerFactory(category);
}
create.inject = tokens(commonTokens.injector);
export function create(injector: Injector<OptionsContext>): TypescriptChecker {
return injector
.provideFactory(commonTokens.logger, typescriptCheckerLoggerFactory, Scope.Transient)
.provideClass(pluginTokens.fs, HybridFileSystem)
.injectClass(TypescriptChecker);
}
/**

@@ -29,3 +46,2 @@ * An in-memory type checker implementation which validates type errors of mutants.

export class TypescriptChecker implements Checker {
private readonly fs = new HybridFileSystem();
private currentTask: Task<CheckResult>;

@@ -38,6 +54,6 @@ private readonly currentErrors: ts.Diagnostic[] = [];

public static inject = tokens(commonTokens.logger, commonTokens.options);
public static inject = tokens(commonTokens.logger, commonTokens.options, pluginTokens.fs);
private readonly tsconfigFile: string;
constructor(private readonly logger: Logger, options: StrykerOptions) {
constructor(private readonly logger: Logger, options: StrykerOptions, private readonly fs: HybridFileSystem) {
this.tsconfigFile = options.tsconfigFile;

@@ -67,3 +83,3 @@ this.allTSConfigFiles = new Set([path.resolve(this.tsconfigFile)]);

watchFile: (path: string, callback: ts.FileWatcherCallback) => {
this.fs.getFile(path)!.watcher = callback;
this.fs.watchFile(path, callback);
return {

@@ -70,0 +86,0 @@ close: () => {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc