Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

mutation-testing-elements

Package Overview
Dependencies
Maintainers
3
Versions
60
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mutation-testing-elements - npm Package Compare versions

Comparing version 2.0.3 to 2.0.5

1

dist/components/app/app.component.d.ts

@@ -32,2 +32,3 @@ import { PropertyValues } from 'lit';

get title(): string;
constructor();
firstUpdated(): void;

@@ -34,0 +35,0 @@ private loadData;

34

dist/components/app/app.component.js

@@ -28,16 +28,3 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

const UPDATE_CYCLE_TIME = 100;
export let MutationTestReportAppComponent = class MutationTestReportAppComponent extends RealTimeElement {
constructor() {
super(...arguments);
this.context = { view: View.mutant, path: [] };
this.path = [];
this.mutants = new Map();
this.tests = new Map();
this.themeSwitch = (event) => {
this.theme = event.detail;
isLocalStorageAvailable() && localStorage.setItem('mutation-testing-elements-theme', this.theme);
};
this.subscriptions = [];
this.sseSubscriptions = new Set();
}
let MutationTestReportAppComponent = class MutationTestReportAppComponent extends RealTimeElement {
get themeBackgroundColor() {

@@ -59,2 +46,7 @@ return getComputedStyle(this).getPropertyValue('--mut-body-bg');

}
constructor() {
super();
this.context = { view: View.mutant, path: [] };
this.path = [];
}
firstUpdated() {

@@ -96,2 +88,4 @@ // Set the default view to "mutant" when no route is selected

}
mutants = new Map();
tests = new Map();
updated(changedProperties) {

@@ -168,2 +162,8 @@ if (changedProperties.has('theme') && this.theme) {

}
themeSwitch = (event) => {
this.theme = event.detail;
isLocalStorageAvailable() && localStorage.setItem('mutation-testing-elements-theme', this.theme);
};
static styles = [globals, unsafeCSS(theme), tailwind];
subscriptions = [];
connectedCallback() {

@@ -174,2 +174,6 @@ super.connectedCallback();

}
source;
sseSubscriptions = new Set();
theMutant;
theTest;
initializeSse() {

@@ -325,3 +329,2 @@ if (!this.sse) {

};
MutationTestReportAppComponent.styles = [globals, unsafeCSS(theme), tailwind];
__decorate([

@@ -363,2 +366,3 @@ property({ attribute: false })

], MutationTestReportAppComponent);
export { MutationTestReportAppComponent };
//# sourceMappingURL=app.component.js.map

@@ -13,3 +13,4 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

import { tailwind } from '../style';
export let MutationTestReportBreadcrumbComponent = class MutationTestReportBreadcrumbComponent extends LitElement {
let MutationTestReportBreadcrumbComponent = class MutationTestReportBreadcrumbComponent extends LitElement {
static styles = [tailwind];
get rootName() {

@@ -60,3 +61,2 @@ switch (this.view) {

};
MutationTestReportBreadcrumbComponent.styles = [tailwind];
__decorate([

@@ -71,2 +71,3 @@ property()

], MutationTestReportBreadcrumbComponent);
export { MutationTestReportBreadcrumbComponent };
//# sourceMappingURL=breadcrumb.js.map

@@ -8,2 +8,3 @@ import { MutantModel } from 'mutation-testing-metrics';

static styles: import("lit").CSSResult[];
constructor();
render(): import("lit-html").TemplateResult<1>;

@@ -10,0 +11,0 @@ private renderSummary;

@@ -16,5 +16,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

const describeTest = (test) => `${test.name}${test.sourceFile && test.location ? ` (${describeLocation(test)})` : ''}`;
export let MutationTestReportDrawerMutant = class MutationTestReportDrawerMutant extends RealTimeElement {
let MutationTestReportDrawerMutant = class MutationTestReportDrawerMutant extends RealTimeElement {
static styles = [tailwind];
constructor() {
super(...arguments);
super();
this.mode = 'closed';

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

};
MutationTestReportDrawerMutant.styles = [tailwind];
__decorate([

@@ -65,2 +65,3 @@ property()

], MutationTestReportDrawerMutant);
export { MutationTestReportDrawerMutant };
//# sourceMappingURL=drawer-mutant.component.js.map

@@ -8,2 +8,3 @@ import { TestModel } from 'mutation-testing-metrics';

static styles: import("lit").CSSResult[];
constructor();
render(): import("lit-html").TemplateResult<1>;

@@ -10,0 +11,0 @@ private renderSummary;

@@ -16,5 +16,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

const describeMutant = (mutant) => html `<code>${mutant.getMutatedLines()}</code> (${describeLocation(mutant)})`;
export let MutationTestReportDrawerTestComponent = class MutationTestReportDrawerTestComponent extends RealTimeElement {
let MutationTestReportDrawerTestComponent = class MutationTestReportDrawerTestComponent extends RealTimeElement {
static styles = [tailwind];
constructor() {
super(...arguments);
super();
this.mode = 'closed';

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

};
MutationTestReportDrawerTestComponent.styles = [tailwind];
__decorate([

@@ -64,2 +64,3 @@ property()

], MutationTestReportDrawerTestComponent);
export { MutationTestReportDrawerTestComponent };
//# sourceMappingURL=drawer-test.component.js.map

@@ -9,2 +9,3 @@ import { LitElement, nothing } from 'lit';

get toggleMoreLabel(): import("lit-html").TemplateResult<1> | typeof nothing;
constructor();
toggleReadMore: (event: MouseEvent) => void;

@@ -11,0 +12,0 @@ render(): import("lit-html").TemplateResult<1>;

@@ -14,18 +14,4 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

export const DRAWER_HALF_OPEN_SIZE = 120;
export let MutationTestReportDrawer = class MutationTestReportDrawer extends LitElement {
constructor() {
super(...arguments);
this.mode = 'closed';
this.hasDetail = false;
this.toggleReadMore = (event) => {
if (this.mode === 'open') {
this.mode = 'half';
}
else {
this.mode = 'open';
}
event.preventDefault();
event.stopImmediatePropagation();
};
}
let MutationTestReportDrawer = class MutationTestReportDrawer extends LitElement {
static styles = [unsafeCSS(style), tailwind];
get toggleMoreLabel() {

@@ -41,2 +27,17 @@ switch (this.mode) {

}
constructor() {
super();
this.mode = 'closed';
this.hasDetail = false;
}
toggleReadMore = (event) => {
if (this.mode === 'open') {
this.mode = 'half';
}
else {
this.mode = 'open';
}
event.preventDefault();
event.stopImmediatePropagation();
};
render() {

@@ -61,3 +62,2 @@ return html `<aside @click="${(event) => event.stopPropagation()}">

};
MutationTestReportDrawer.styles = [unsafeCSS(style), tailwind];
__decorate([

@@ -75,2 +75,3 @@ property({ reflect: true })

], MutationTestReportDrawer);
export { MutationTestReportDrawer };
//# sourceMappingURL=drawer.component.js.map

@@ -12,3 +12,4 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

import { classMap } from 'lit/directives/class-map.js';
export let MutationTestReportFileIconComponent = class MutationTestReportFileIconComponent extends LitElement {
let MutationTestReportFileIconComponent = class MutationTestReportFileIconComponent extends LitElement {
static styles = [unsafeCSS(style)];
get language() {

@@ -51,7 +52,8 @@ return determineLanguage(this.fileName);

case ProgrammingLanguage.gherkin:
return svg `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M16.129,2a12.348,12.348,0,0,0-2.35,24.465V30c7.371-1.114,13.9-6.982,14.384-14.684a12.8,12.8,0,0,0-5.9-11.667c-.223-.132-.449-.262-.682-.377s-.481-.231-.729-.33c-.079-.033-.156-.063-.235-.094-.216-.08-.435-.17-.658-.236A12.188,12.188,0,0,0,16.129,2Z" style="fill:var(--mut-file-gherkin-color)"/><path d="M18.68,6.563a1.345,1.345,0,0,0-1.178.472,5.493,5.493,0,0,0-.518.9,2.9,2.9,0,0,0,.377,3.023A3.317,3.317,0,0,0,19.763,9,2.388,2.388,0,0,0,20,8,1.411,1.411,0,0,0,18.68,6.563Zm-5.488.071A1.441,1.441,0,0,0,11.85,8,2.388,2.388,0,0,0,12.085,9a3.427,3.427,0,0,0,2.473,1.96,3.141,3.141,0,0,0-.212-3.85,1.322,1.322,0,0,0-1.154-.472Zm-3.7,3.637a1.3,1.3,0,0,0-.73,2.338,5.663,5.663,0,0,0,.895.543,3.386,3.386,0,0,0,3.179-.307,3.492,3.492,0,0,0-2.049-2.338,2.69,2.69,0,0,0-1.06-.236,1.369,1.369,0,0,0-.236,0Zm11.611,4.582a3.44,3.44,0,0,0-1.955.567A3.492,3.492,0,0,0,21.2,17.758a2.69,2.69,0,0,0,1.06.236,1.329,1.329,0,0,0,.966-2.362,5.47,5.47,0,0,0-.895-.52,3.247,3.247,0,0,0-1.225-.26Zm-10.292.071a3.247,3.247,0,0,0-1.225.26,2.575,2.575,0,0,0-.895.543A1.34,1.34,0,0,0,9.73,18.065a2.426,2.426,0,0,0,1.06-.236,3.185,3.185,0,0,0,1.955-2.338,3.366,3.366,0,0,0-1.931-.567Zm3.815,2.314a3.317,3.317,0,0,0-2.4,1.96,2.286,2.286,0,0,0-.236.968,1.4,1.4,0,0,0,2.426.992,5.492,5.492,0,0,0,.518-.9,3.109,3.109,0,0,0-.306-3.023Zm2.8.071a3.141,3.141,0,0,0,.212,3.85,1.47,1.47,0,0,0,2.5-.9,2.388,2.388,0,0,0-.236-.992,3.427,3.427,0,0,0-2.473-1.96Z" style="fill:#fff"/></svg>`;
return svg `<svg class="${this.cssClass}" aria-label="gherkin" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M16.129,2a12.348,12.348,0,0,0-2.35,24.465V30c7.371-1.114,13.9-6.982,14.384-14.684a12.8,12.8,0,0,0-5.9-11.667c-.223-.132-.449-.262-.682-.377s-.481-.231-.729-.33c-.079-.033-.156-.063-.235-.094-.216-.08-.435-.17-.658-.236A12.188,12.188,0,0,0,16.129,2Z" style="fill:var(--mut-file-gherkin-color)"/><path d="M18.68,6.563a1.345,1.345,0,0,0-1.178.472,5.493,5.493,0,0,0-.518.9,2.9,2.9,0,0,0,.377,3.023A3.317,3.317,0,0,0,19.763,9,2.388,2.388,0,0,0,20,8,1.411,1.411,0,0,0,18.68,6.563Zm-5.488.071A1.441,1.441,0,0,0,11.85,8,2.388,2.388,0,0,0,12.085,9a3.427,3.427,0,0,0,2.473,1.96,3.141,3.141,0,0,0-.212-3.85,1.322,1.322,0,0,0-1.154-.472Zm-3.7,3.637a1.3,1.3,0,0,0-.73,2.338,5.663,5.663,0,0,0,.895.543,3.386,3.386,0,0,0,3.179-.307,3.492,3.492,0,0,0-2.049-2.338,2.69,2.69,0,0,0-1.06-.236,1.369,1.369,0,0,0-.236,0Zm11.611,4.582a3.44,3.44,0,0,0-1.955.567A3.492,3.492,0,0,0,21.2,17.758a2.69,2.69,0,0,0,1.06.236,1.329,1.329,0,0,0,.966-2.362,5.47,5.47,0,0,0-.895-.52,3.247,3.247,0,0,0-1.225-.26Zm-10.292.071a3.247,3.247,0,0,0-1.225.26,2.575,2.575,0,0,0-.895.543A1.34,1.34,0,0,0,9.73,18.065a2.426,2.426,0,0,0,1.06-.236,3.185,3.185,0,0,0,1.955-2.338,3.366,3.366,0,0,0-1.931-.567Zm3.815,2.314a3.317,3.317,0,0,0-2.4,1.96,2.286,2.286,0,0,0-.236.968,1.4,1.4,0,0,0,2.426.992,5.492,5.492,0,0,0,.518-.9,3.109,3.109,0,0,0-.306-3.023Zm2.8.071a3.141,3.141,0,0,0,.212,3.85,1.47,1.47,0,0,0,2.5-.9,2.388,2.388,0,0,0-.236-.992,3.427,3.427,0,0,0-2.473-1.96Z" style="fill:#fff"/></svg>`;
case ProgrammingLanguage.svelte:
return svg `<svg class="${this.cssClass}" aria-label="svelte" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path xmlns="http://www.w3.org/2000/svg" d="M26.47,5.7A8.973,8.973,0,0,0,14.677,3.246L7.96,7.4a7.461,7.461,0,0,0-3.481,5.009,7.686,7.686,0,0,0,.8,5.058,7.358,7.358,0,0,0-1.151,2.8,7.789,7.789,0,0,0,1.4,6.028,8.977,8.977,0,0,0,11.794,2.458L24.04,24.6a7.468,7.468,0,0,0,3.481-5.009,7.673,7.673,0,0,0-.8-5.062,7.348,7.348,0,0,0,1.152-2.8A7.785,7.785,0,0,0,26.47,5.7" style="fill:#ff3e00"/><path xmlns="http://www.w3.org/2000/svg" d="M14.022,26.64A5.413,5.413,0,0,1,8.3,24.581a4.678,4.678,0,0,1-.848-3.625,4.307,4.307,0,0,1,.159-.61l.127-.375.344.238a8.76,8.76,0,0,0,2.628,1.274l.245.073-.025.237a1.441,1.441,0,0,0,.271.968,1.63,1.63,0,0,0,1.743.636,1.512,1.512,0,0,0,.411-.175l6.7-4.154a1.366,1.366,0,0,0,.633-.909,1.407,1.407,0,0,0-.244-1.091,1.634,1.634,0,0,0-1.726-.622,1.509,1.509,0,0,0-.413.176l-2.572,1.584a4.934,4.934,0,0,1-1.364.582,5.415,5.415,0,0,1-5.727-2.06A4.678,4.678,0,0,1,7.811,13.1,4.507,4.507,0,0,1,9.9,10.09l6.708-4.154a4.932,4.932,0,0,1,1.364-.581A5.413,5.413,0,0,1,23.7,7.414a4.679,4.679,0,0,1,.848,3.625,4.272,4.272,0,0,1-.159.61l-.127.375-.344-.237a8.713,8.713,0,0,0-2.628-1.274l-.245-.074.025-.237a1.438,1.438,0,0,0-.272-.968,1.629,1.629,0,0,0-1.725-.622,1.484,1.484,0,0,0-.411.176l-6.722,4.14a1.353,1.353,0,0,0-.631.908,1.394,1.394,0,0,0,.244,1.092,1.634,1.634,0,0,0,1.726.621,1.538,1.538,0,0,0,.413-.175l2.562-1.585a4.9,4.9,0,0,1,1.364-.581,5.417,5.417,0,0,1,5.728,2.059,4.681,4.681,0,0,1,.843,3.625A4.5,4.5,0,0,1,22.1,21.905l-6.707,4.154a4.9,4.9,0,0,1-1.364.581" style="fill:#fff"/></svg>`;
}
}
};
MutationTestReportFileIconComponent.styles = [unsafeCSS(style)];
__decorate([

@@ -66,2 +68,3 @@ property({ attribute: 'file-name' })

], MutationTestReportFileIconComponent);
export { MutationTestReportFileIconComponent };
//# sourceMappingURL=file-icon.component.js.map

@@ -15,2 +15,3 @@ import { PropertyValues } from 'lit';

private codeRef;
constructor();
private readonly filtersChanged;

@@ -17,0 +18,0 @@ private codeClicked;

@@ -20,5 +20,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

const diffNewClass = 'diff-new';
export let FileComponent = class FileComponent extends RealTimeElement {
let FileComponent = class FileComponent extends RealTimeElement {
static styles = [prismjs, tailwind, unsafeCSS(style)];
codeRef = createRef();
constructor() {
super(...arguments);
super();
this.filters = [];

@@ -28,45 +30,30 @@ this.selectedMutantStates = [];

this.mutants = [];
this.codeRef = createRef();
this.filtersChanged = (event) => {
// Pending is not filterable, but they should still be shown to the user.
this.selectedMutantStates = event.detail.concat([MutantStatus.Pending]);
};
this.codeClicked = (ev) => {
ev.stopPropagation();
if (ev.target instanceof Element) {
let maybeMutantTarget = ev.target;
const mutantsInScope = [];
for (; maybeMutantTarget instanceof Element; maybeMutantTarget = maybeMutantTarget.parentElement) {
const mutantId = maybeMutantTarget.getAttribute('mutant-id');
const mutant = this.mutants.find(({ id }) => id.toString() === mutantId);
if (mutant) {
mutantsInScope.push(mutant);
}
}
filtersChanged = (event) => {
// Pending is not filterable, but they should still be shown to the user.
this.selectedMutantStates = event.detail.concat([MutantStatus.Pending]);
};
codeClicked = (ev) => {
ev.stopPropagation();
if (ev.target instanceof Element) {
let maybeMutantTarget = ev.target;
const mutantsInScope = [];
for (; maybeMutantTarget instanceof Element; maybeMutantTarget = maybeMutantTarget.parentElement) {
const mutantId = maybeMutantTarget.getAttribute('mutant-id');
const mutant = this.mutants.find(({ id }) => id.toString() === mutantId);
if (mutant) {
mutantsInScope.push(mutant);
}
const index = (this.selectedMutant ? mutantsInScope.indexOf(this.selectedMutant) : -1) + 1;
if (mutantsInScope[index]) {
this.toggleMutant(mutantsInScope[index]);
clearSelection();
}
else if (this.selectedMutant) {
this.toggleMutant(this.selectedMutant);
clearSelection();
}
}
};
this.nextMutant = () => {
const index = this.selectedMutant ? (this.mutants.indexOf(this.selectedMutant) + 1) % this.mutants.length : 0;
if (this.mutants[index]) {
this.toggleMutant(this.mutants[index]);
const index = (this.selectedMutant ? mutantsInScope.indexOf(this.selectedMutant) : -1) + 1;
if (mutantsInScope[index]) {
this.toggleMutant(mutantsInScope[index]);
clearSelection();
}
};
this.previousMutant = () => {
const index = this.selectedMutant
? (this.mutants.indexOf(this.selectedMutant) + this.mutants.length - 1) % this.mutants.length
: this.mutants.length - 1;
if (this.mutants[index]) {
this.toggleMutant(this.mutants[index]);
else if (this.selectedMutant) {
this.toggleMutant(this.selectedMutant);
clearSelection();
}
};
}
}
};
render() {

@@ -109,2 +96,16 @@ const mutantLineMap = new Map();

}
nextMutant = () => {
const index = this.selectedMutant ? (this.mutants.indexOf(this.selectedMutant) + 1) % this.mutants.length : 0;
if (this.mutants[index]) {
this.toggleMutant(this.mutants[index]);
}
};
previousMutant = () => {
const index = this.selectedMutant
? (this.mutants.indexOf(this.selectedMutant) + this.mutants.length - 1) % this.mutants.length
: this.mutants.length - 1;
if (this.mutants[index]) {
this.toggleMutant(this.mutants[index]);
}
};
renderMutantDots(mutants) {

@@ -158,3 +159,3 @@ return mutants?.length

// This extra check is to allow mutants that have been opened before, to stay open when a realtime update comes through
this.selectedMutantsHaveChanged(changes.get('selectedMutantStates'))) {
this.selectedMutantsHaveChanged(changes.get('selectedMutantStates') ?? [])) {
this.toggleMutant(this.selectedMutant);

@@ -236,3 +237,2 @@ }

};
FileComponent.styles = [prismjs, tailwind, unsafeCSS(style)];
__decorate([

@@ -259,2 +259,3 @@ state()

], FileComponent);
export { FileComponent };
function title(mutant) {

@@ -261,0 +262,0 @@ return `${mutant.mutatorName} ${mutant.status}`;

@@ -24,2 +24,3 @@ import { PropertyValues } from 'lit';

static styles: import("lit").CSSResult[];
constructor();
private hasMultipleColspan;

@@ -26,0 +27,0 @@ willUpdate(changedProperties: PropertyValues): void;

@@ -15,5 +15,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

import { RealTimeElement } from '../real-time-element';
export let MutationTestReportTestMetricsTable = class MutationTestReportTestMetricsTable extends RealTimeElement {
let MutationTestReportTestMetricsTable = class MutationTestReportTestMetricsTable extends RealTimeElement {
static styles = [tailwind];
constructor() {
super(...arguments);
super();
this.currentPath = [];

@@ -24,4 +25,4 @@ this.thresholds = {

};
this.hasMultipleColspan = false;
}
hasMultipleColspan = false;
willUpdate(changedProperties) {

@@ -170,3 +171,2 @@ if (changedProperties.has('columns')) {

};
MutationTestReportTestMetricsTable.styles = [tailwind];
__decorate([

@@ -187,2 +187,3 @@ property()

], MutationTestReportTestMetricsTable);
export { MutationTestReportTestMetricsTable };
//# sourceMappingURL=metrics-table.component.js.map

@@ -13,2 +13,3 @@ import { PropertyValues } from 'lit';

path: string[];
constructor();
private handleClick;

@@ -15,0 +16,0 @@ private handleMutantSelected;

@@ -12,15 +12,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

import { RealTimeElement } from '../real-time-element';
export let MutationTestReportMutantViewComponent = class MutationTestReportMutantViewComponent extends RealTimeElement {
let MutationTestReportMutantViewComponent = class MutationTestReportMutantViewComponent extends RealTimeElement {
static styles = [unsafeCSS(style), tailwind];
constructor() {
super(...arguments);
super();
this.drawerMode = 'closed';
this.handleClick = () => {
// Close the drawer if the user clicks anywhere in the report (that didn't handle the click already)
this.drawerMode = 'closed';
};
this.handleMutantSelected = (event) => {
this.selectedMutant = event.detail.mutant;
this.drawerMode = event.detail.selected ? 'half' : 'closed';
};
}
handleClick = () => {
// Close the drawer if the user clicks anywhere in the report (that didn't handle the click already)
this.drawerMode = 'closed';
};
handleMutantSelected = (event) => {
this.selectedMutant = event.detail.mutant;
this.drawerMode = event.detail.selected ? 'half' : 'closed';
};
updated(changes) {

@@ -42,3 +43,2 @@ if (changes.has('result') && !this.result.file) {

};
MutationTestReportMutantViewComponent.styles = [unsafeCSS(style), tailwind];
__decorate([

@@ -62,2 +62,3 @@ property()

], MutationTestReportMutantViewComponent);
export { MutationTestReportMutantViewComponent };
const COLUMNS = [

@@ -64,0 +65,0 @@ {

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

var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _RealTimeElement_subscription;
import { LitElement } from 'lit';

@@ -11,6 +5,2 @@ import { Subscription } from 'rxjs';

export class RealTimeElement extends LitElement {
constructor() {
super(...arguments);
_RealTimeElement_subscription.set(this, new Subscription());
}
shouldReactivate() {

@@ -22,12 +12,12 @@ return true;

}
#subscription = new Subscription();
connectedCallback() {
super.connectedCallback();
__classPrivateFieldGet(this, _RealTimeElement_subscription, "f").add(mutantChanges.subscribe(() => this.shouldReactivate() && this.reactivate()));
this.#subscription.add(mutantChanges.subscribe(() => this.shouldReactivate() && this.reactivate()));
}
disconnectedCallback() {
super.disconnectedCallback();
__classPrivateFieldGet(this, _RealTimeElement_subscription, "f").unsubscribe();
this.#subscription.unsubscribe();
}
}
_RealTimeElement_subscription = new WeakMap();
//# sourceMappingURL=real-time-element.js.map

@@ -7,21 +7,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

};
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
if (kind === "m") throw new TypeError("Private method is not writable");
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
};
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
};
var _ResultStatusBar_instances, _ResultStatusBar_observer, _ResultStatusBar_renderSmallParts, _ResultStatusBar_renderSmallPart, _ResultStatusBar_renderParts, _ResultStatusBar_renderPart, _ResultStatusBar_getMetrics, _ResultStatusBar_colorFromMetric, _ResultStatusBar_calculatePercentage;
import { LitElement, html } from 'lit';
import { customElement, property, state } from 'lit/decorators.js';
import { tailwind } from '../../style';
export let ResultStatusBar = class ResultStatusBar extends LitElement {
let ResultStatusBar = class ResultStatusBar extends LitElement {
static styles = [tailwind];
#observer;
constructor() {
super();
_ResultStatusBar_instances.add(this);
this.detected = 0;

@@ -34,3 +23,2 @@ this.undetected = 0;

this.shouldBeSmall = false;
_ResultStatusBar_observer.set(this, void 0);
}

@@ -43,3 +31,3 @@ connectedCallback() {

// If this element is visible, the smaller progress-bar will fade out and it will no longer be visible.
__classPrivateFieldSet(this, _ResultStatusBar_observer, new window.IntersectionObserver(([entry]) => {
this.#observer = new window.IntersectionObserver(([entry]) => {
if (entry.isIntersecting) {

@@ -52,15 +40,15 @@ this.shouldBeSmall = false;

this.requestUpdate();
}), "f");
__classPrivateFieldGet(this, _ResultStatusBar_observer, "f").observe(this);
});
this.#observer.observe(this);
}
disconnectedCallback() {
super.disconnectedCallback();
__classPrivateFieldGet(this, _ResultStatusBar_observer, "f")?.disconnect();
this.#observer?.disconnect();
}
render() {
return html `
${__classPrivateFieldGet(this, _ResultStatusBar_instances, "m", _ResultStatusBar_renderSmallParts).call(this)}
${this.#renderSmallParts()}
<div class="my-4 rounded-md border border-gray-200 bg-white transition-all">
<div class="relative">
<div class="parts flex h-8 w-full overflow-hidden rounded bg-gray-200">${__classPrivateFieldGet(this, _ResultStatusBar_instances, "m", _ResultStatusBar_renderParts).call(this)}</div>
<div class="parts flex h-8 w-full overflow-hidden rounded bg-gray-200">${this.#renderParts()}</div>
</div>

@@ -70,58 +58,55 @@ </div>

}
};
_ResultStatusBar_observer = new WeakMap();
_ResultStatusBar_instances = new WeakSet();
_ResultStatusBar_renderSmallParts = function _ResultStatusBar_renderSmallParts() {
return html `<div
#renderSmallParts() {
return html `<div
class="${this.shouldBeSmall ? 'opacity-1' : 'opacity-0'} pointer-events-none fixed left-0 top-0 z-20 flex w-full justify-center transition-all"
>
<div class="container w-full bg-white py-2">
<div class="flex h-2 overflow-hidden rounded bg-gray-200">${__classPrivateFieldGet(this, _ResultStatusBar_instances, "m", _ResultStatusBar_getMetrics).call(this).map((metric) => __classPrivateFieldGet(this, _ResultStatusBar_instances, "m", _ResultStatusBar_renderSmallPart).call(this, metric))}</div>
<div class="flex h-2 overflow-hidden rounded bg-gray-200">${this.#getMetrics().map((metric) => this.#renderSmallPart(metric))}</div>
</div>
</div>`;
};
_ResultStatusBar_renderSmallPart = function _ResultStatusBar_renderSmallPart(metric) {
return html `<div
class="${__classPrivateFieldGet(this, _ResultStatusBar_instances, "m", _ResultStatusBar_colorFromMetric).call(this, metric.type)} z-20 h-2 transition-all"
style="width: ${__classPrivateFieldGet(this, _ResultStatusBar_instances, "m", _ResultStatusBar_calculatePercentage).call(this, metric.amount)}%"
}
#renderSmallPart(metric) {
return html `<div
class="${this.#colorFromMetric(metric.type)} z-20 h-2 transition-all"
style="width: ${this.#calculatePercentage(metric.amount)}%"
></div>`;
};
_ResultStatusBar_renderParts = function _ResultStatusBar_renderParts() {
return html `${__classPrivateFieldGet(this, _ResultStatusBar_instances, "m", _ResultStatusBar_getMetrics).call(this).map((metric) => __classPrivateFieldGet(this, _ResultStatusBar_instances, "m", _ResultStatusBar_renderPart).call(this, metric))}`;
};
_ResultStatusBar_renderPart = function _ResultStatusBar_renderPart(metric) {
return html `<div
}
#renderParts() {
return html `${this.#getMetrics().map((metric) => this.#renderPart(metric))}`;
}
#renderPart(metric) {
return html `<div
title="${metric.tooltip}"
style="width: ${__classPrivateFieldGet(this, _ResultStatusBar_instances, "m", _ResultStatusBar_calculatePercentage).call(this, metric.amount)}%"
class="${__classPrivateFieldGet(this, _ResultStatusBar_instances, "m", _ResultStatusBar_colorFromMetric).call(this, metric.type)} ${metric.amount === 0
? 'opacity-0'
: ''} relative flex h-8 items-center overflow-hidden transition-all"
style="width: ${this.#calculatePercentage(metric.amount)}%"
class="${this.#colorFromMetric(metric.type)} ${metric.amount === 0
? 'opacity-0'
: ''} relative flex h-8 items-center overflow-hidden transition-all"
>
<span class="ms-3 font-bold text-gray-800">${metric.amount}</span>
</div>`;
};
_ResultStatusBar_getMetrics = function _ResultStatusBar_getMetrics() {
return [
{ type: 'detected', amount: this.detected, tooltip: 'killed + timeout' },
{ type: 'undetected', amount: this.undetected, tooltip: 'survived + no coverage' },
{ type: 'ignored + invalid', amount: this.ignored + this.invalid, tooltip: 'ignored + runtime error + compile error' },
{ type: 'pending', amount: this.pending, tooltip: 'pending' },
];
};
_ResultStatusBar_colorFromMetric = function _ResultStatusBar_colorFromMetric(metric) {
switch (metric) {
case 'detected':
return 'bg-green-600';
case 'undetected':
return 'bg-red-600';
case 'ignored + invalid':
return 'bg-yellow-600';
default:
return 'bg-gray-200';
}
#getMetrics() {
return [
{ type: 'detected', amount: this.detected, tooltip: 'killed + timeout' },
{ type: 'undetected', amount: this.undetected, tooltip: 'survived + no coverage' },
{ type: 'ignored + invalid', amount: this.ignored + this.invalid, tooltip: 'ignored + runtime error + compile error' },
{ type: 'pending', amount: this.pending, tooltip: 'pending' },
];
}
#colorFromMetric(metric) {
switch (metric) {
case 'detected':
return 'bg-green-600';
case 'undetected':
return 'bg-red-600';
case 'ignored + invalid':
return 'bg-yellow-600';
default:
return 'bg-gray-200';
}
}
#calculatePercentage(metric) {
return this.total !== 0 ? (100 * metric) / this.total : 0;
}
};
_ResultStatusBar_calculatePercentage = function _ResultStatusBar_calculatePercentage(metric) {
return this.total !== 0 ? (100 * metric) / this.total : 0;
};
ResultStatusBar.styles = [tailwind];
__decorate([

@@ -151,2 +136,3 @@ property({ attribute: false })

], ResultStatusBar);
export { ResultStatusBar };
//# sourceMappingURL=result-status-bar.js.map

@@ -15,14 +15,4 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

import { RealTimeElement } from '../real-time-element';
export let FileStateFilterComponent = class FileStateFilterComponent extends RealTimeElement {
constructor() {
super(...arguments);
this.next = (ev) => {
ev.stopPropagation();
this.dispatchEvent(createCustomEvent('next', undefined, { bubbles: true, composed: true }));
};
this.previous = (ev) => {
ev.stopPropagation();
this.dispatchEvent(createCustomEvent('previous', undefined, { bubbles: true, composed: true }));
};
}
let FileStateFilterComponent = class FileStateFilterComponent extends RealTimeElement {
static styles = [tailwind, unsafeCSS(style)];
updated(changedProperties) {

@@ -40,2 +30,10 @@ if (changedProperties.has('filters')) {

}
next = (ev) => {
ev.stopPropagation();
this.dispatchEvent(createCustomEvent('next', undefined, { bubbles: true, composed: true }));
};
previous = (ev) => {
ev.stopPropagation();
this.dispatchEvent(createCustomEvent('previous', undefined, { bubbles: true, composed: true }));
};
render() {

@@ -108,3 +106,2 @@ return html `

};
FileStateFilterComponent.styles = [tailwind, unsafeCSS(style)];
__decorate([

@@ -116,2 +113,3 @@ property({ type: Array })

], FileStateFilterComponent);
export { FileStateFilterComponent };
//# sourceMappingURL=state-filter.component.js.map

@@ -13,2 +13,3 @@ import { PropertyValues } from 'lit';

private tests;
constructor();
private readonly filtersChanged;

@@ -15,0 +16,0 @@ private toggleTest;

@@ -19,5 +19,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

import { RealTimeElement } from '../real-time-element';
export let TestFileComponent = class TestFileComponent extends RealTimeElement {
let TestFileComponent = class TestFileComponent extends RealTimeElement {
static styles = [prismjs, tailwind, unsafeCSS(style)];
constructor() {
super(...arguments);
super();
this.filters = [];

@@ -27,19 +28,9 @@ this.lines = [];

this.tests = [];
this.filtersChanged = (event) => {
this.enabledStates = event.detail;
if (this.selectedTest && !this.enabledStates.includes(this.selectedTest.status)) {
this.toggleTest(this.selectedTest);
}
};
this.nextTest = () => {
const index = this.selectedTest ? (this.tests.findIndex(({ id }) => id === this.selectedTest.id) + 1) % this.tests.length : 0;
this.selectTest(this.tests[index]);
};
this.previousTest = () => {
const index = this.selectedTest
? (this.tests.findIndex(({ id }) => id === this.selectedTest.id) + this.tests.length - 1) % this.tests.length
: this.tests.length - 1;
this.selectTest(this.tests[index]);
};
}
filtersChanged = (event) => {
this.enabledStates = event.detail;
if (this.selectedTest && !this.enabledStates.includes(this.selectedTest.status)) {
this.toggleTest(this.selectedTest);
}
};
toggleTest(test) {

@@ -56,2 +47,12 @@ if (this.selectedTest === test) {

}
nextTest = () => {
const index = this.selectedTest ? (this.tests.findIndex(({ id }) => id === this.selectedTest.id) + 1) % this.tests.length : 0;
this.selectTest(this.tests[index]);
};
previousTest = () => {
const index = this.selectedTest
? (this.tests.findIndex(({ id }) => id === this.selectedTest.id) + this.tests.length - 1) % this.tests.length
: this.tests.length - 1;
this.selectTest(this.tests[index]);
};
selectTest(test) {

@@ -174,3 +175,2 @@ if (test) {

};
TestFileComponent.styles = [prismjs, tailwind, unsafeCSS(style)];
__decorate([

@@ -197,2 +197,3 @@ property()

], TestFileComponent);
export { TestFileComponent };
function title(test) {

@@ -199,0 +200,0 @@ return `${test.name} (${test.status})`;

@@ -11,2 +11,3 @@ import { PropertyValues } from 'lit';

static styles: import("lit").CSSResult[];
constructor();
private handleClick;

@@ -13,0 +14,0 @@ private handleTestSelected;

@@ -12,15 +12,16 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

import { RealTimeElement } from '../real-time-element';
export let MutationTestReportTestViewComponent = class MutationTestReportTestViewComponent extends RealTimeElement {
let MutationTestReportTestViewComponent = class MutationTestReportTestViewComponent extends RealTimeElement {
static styles = [unsafeCSS(style), tailwind];
constructor() {
super(...arguments);
super();
this.drawerMode = 'closed';
this.handleClick = () => {
// Close the drawer if the user clicks anywhere in the report (that didn't handle the click already)
this.drawerMode = 'closed';
};
this.handleTestSelected = (event) => {
this.selectedTest = event.detail.test;
this.drawerMode = event.detail.selected ? 'half' : 'closed';
};
}
handleClick = () => {
// Close the drawer if the user clicks anywhere in the report (that didn't handle the click already)
this.drawerMode = 'closed';
};
handleTestSelected = (event) => {
this.selectedTest = event.detail.test;
this.drawerMode = event.detail.selected ? 'half' : 'closed';
};
updated(changes) {

@@ -41,3 +42,2 @@ if (changes.has('result') && !this.result.file) {

};
MutationTestReportTestViewComponent.styles = [unsafeCSS(style), tailwind];
__decorate([

@@ -58,2 +58,3 @@ property()

], MutationTestReportTestViewComponent);
export { MutationTestReportTestViewComponent };
const COLUMNS = [

@@ -60,0 +61,0 @@ { key: 'killing', label: 'Killing', tooltip: 'These tests killed at least one mutant', width: 'normal', category: 'number' },

@@ -12,10 +12,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

import style from './theme-switch.scss';
export let MutationTestReportThemeSwitchComponent = class MutationTestReportThemeSwitchComponent extends LitElement {
constructor() {
super(...arguments);
this.dispatchThemeChangedEvent = (e) => {
const checked = e.target.checked;
this.dispatchEvent(createCustomEvent('theme-switch', checked ? 'dark' : 'light'));
};
}
let MutationTestReportThemeSwitchComponent = class MutationTestReportThemeSwitchComponent extends LitElement {
dispatchThemeChangedEvent = (e) => {
const checked = e.target.checked;
this.dispatchEvent(createCustomEvent('theme-switch', checked ? 'dark' : 'light'));
};
static styles = [tailwind, unsafeCSS(style)];
render() {

@@ -30,3 +28,2 @@ return html `

};
MutationTestReportThemeSwitchComponent.styles = [tailwind, unsafeCSS(style)];
__decorate([

@@ -38,2 +35,3 @@ property()

], MutationTestReportThemeSwitchComponent);
export { MutationTestReportThemeSwitchComponent };
//# sourceMappingURL=theme-switch.component.js.map

@@ -10,3 +10,4 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {

import { tailwind } from '../../style';
export let MutationTestReportThemeSwitchComponent = class MutationTestReportThemeSwitchComponent extends LitElement {
let MutationTestReportThemeSwitchComponent = class MutationTestReportThemeSwitchComponent extends LitElement {
static styles = [tailwind];
render() {

@@ -16,3 +17,2 @@ return html `<span class="cursor-help underline decoration-dotted" title="${this.title}"><slot></slot></span>`;

};
MutationTestReportThemeSwitchComponent.styles = [tailwind];
__decorate([

@@ -24,2 +24,3 @@ property({ attribute: true })

], MutationTestReportThemeSwitchComponent);
export { MutationTestReportThemeSwitchComponent };
//# sourceMappingURL=tooltip.component.js.map

@@ -11,3 +11,4 @@ import { Position } from 'mutation-testing-report-schema/api';

vue = "vue",
gherkin = "gherkin"
gherkin = "gherkin",
svelte = "svelte"
}

@@ -14,0 +15,0 @@ /**

@@ -13,2 +13,3 @@ import { highlight, languages } from 'prismjs/components/prism-core';

ProgrammingLanguage["gherkin"] = "gherkin";
ProgrammingLanguage["svelte"] = "svelte";
})(ProgrammingLanguage || (ProgrammingLanguage = {}));

@@ -51,2 +52,4 @@ /**

return ProgrammingLanguage.gherkin;
case 'svelte':
return ProgrammingLanguage.svelte;
default:

@@ -53,0 +56,0 @@ return undefined;

@@ -20,8 +20,2 @@ /**

/**
* @license
* Copyright 2021 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
/**
* Prism: Lightweight, robust, elegant syntax highlighting

@@ -28,0 +22,0 @@ *

@@ -13,3 +13,4 @@ import 'prismjs/components/prism-core';

import 'prismjs/components/prism-php';
import 'prism-svelte';
import 'prismjs/plugins/keep-markup/prism-keep-markup';
//# sourceMappingURL=prism-plugins.d.ts.map

@@ -15,2 +15,4 @@ import 'prismjs/components/prism-core';

import 'prismjs/components/prism-php';
// Svelte
import 'prism-svelte';
// Don't strip pre-existing HTML to keep the popups and badges working

@@ -17,0 +19,0 @@ import 'prismjs/plugins/keep-markup/prism-keep-markup';

{
"name": "mutation-testing-elements",
"version": "2.0.3",
"version": "2.0.5",
"description": "A suite of web components for a mutation testing report.",

@@ -18,3 +18,4 @@ "unpkg": "dist/mutation-test-elements.js",

"postpublish": "PUBLISH_ELEMENTS=true ../metrics-scala/npmProjPublish.sh",
"stryker": "cross-env STRYKER=true stryker run"
"stryker": "cross-env STRYKER=true stryker run",
"lint": "eslint --ext .js,.ts ."
},

@@ -32,8 +33,42 @@ "repository": {

"devDependencies": {
"@types/prismjs": "^1.16.1",
"mutation-testing-metrics": "2.0.3",
"mutation-testing-report-schema": "2.0.3",
"prismjs": "^1.21.0"
"@tailwindcss/forms": "0.5.6",
"@types/express": "4.17.20",
"@types/prismjs": "1.26.2",
"@types/resemblejs": "4.1.2",
"@types/selenium-webdriver": "4.1.19",
"@types/webpack-env": "1.18.3",
"autoprefixer": "10.4.16",
"canvas": "2.11.2",
"chromedriver": "118.0.1",
"cross-env": "7.0.3",
"css-loader": "6.8.1",
"cssnano": "6.0.1",
"eslint-config-mte": "*",
"express": "4.18.2",
"karma": "6.4.2",
"karma-chrome-launcher": "3.2.0",
"karma-mocha": "2.0.1",
"karma-sourcemap-loader": "0.4.0",
"karma-webpack": "5.0.0",
"lit": "3.0.1",
"mutation-testing-metrics": "2.0.5",
"mutation-testing-report-schema": "2.0.5",
"postcss": "8.4.31",
"postcss-loader": "7.3.3",
"prism-svelte": "0.5.0",
"prismjs": "1.29.0",
"resemblejs": "5.0.0",
"rxjs": "7.8.1",
"sass": "1.69.5",
"sass-loader": "13.3.2",
"selenium-webdriver": "4.14.0",
"tailwindcss": "3.3.5",
"ts-loader": "9.5.0",
"ts-node": "10.9.1",
"webpack": "5.89.0",
"webpack-cli": "5.1.4",
"webpack-dev-server": "4.15.1",
"webpack-merge": "5.10.0"
},
"gitHead": "ab01f017bd53bf5b0d737710a10d47ebe02a63ee"
"gitHead": "8c3f6c7d34953aa2758a514728e78866e7b9c269"
}

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

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

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

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

Sorry, the diff of this file is not supported yet

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

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc