Skip to content

Commit

Permalink
linting
Browse files Browse the repository at this point in the history
  • Loading branch information
koenekelschot committed Apr 25, 2020
1 parent 526200a commit b49ec38
Show file tree
Hide file tree
Showing 21 changed files with 280 additions and 257 deletions.
55 changes: 55 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{
"env": {
"browser": true,
"es6": true,
"node": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended"
],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 2018,
"sourceType": "module"
},
"plugins": [
"@typescript-eslint"
],
"rules": {
"@typescript-eslint/camelcase": ["error", {
"properties": "never"
}],
"@typescript-eslint/interface-name-prefix": ["off"],
"@typescript-eslint/no-empty-function": ["off"],
"@typescript-eslint/no-explicit-any": ["off"],
"@typescript-eslint/no-unused-vars": ["error", {
"argsIgnorePattern": "^_"
}],
"@typescript-eslint/no-use-before-define": ["off"],
"indent": [
"error",
4
],
"linebreak-style": [
"error",
"windows"
],
"quotes": [
"error",
"double"
],
"semi": [
"error",
"always"
],
"sort-imports": ["error", {
"ignoreCase": true
}]
}
}
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{
"scripts": {
"compile": "tsc -p ./",
"lint": "eslint src --ext ts",
"build": "npm install && npm run chrome/build && npm run vscode/build",
"lint": "eslint ./ --ext ts --fix",
"build": "npm install && npm run lint && npm run chrome/build && npm run vscode/build",
"chrome/build": "webpack --config build/webpack.chrome.js --mode development",
"chrome/watch": "webpack --config build/webpack.chrome.js --mode development --watch",
"chrome/pre-publish": "npm run test && webpack --config build/webpack.chrome.js --mode production",
Expand All @@ -11,7 +11,7 @@
"vscode/watch": "webpack --config build/webpack.vscode.js --mode development --watch",
"vscode/pre-publish": "npm run test && webpack --config build/webpack.vscode.js --mode production",
"vscode/publish": "npm run vscode/pre-publish && cd dist/vscode && vsce package --out ../../releases/vscode",
"test": "jest --coverage"
"test": "npm run lint && jest --coverage"
},
"jest": {
"testRegex": "/test/.*\\.test\\.(js|jsx|ts)$",
Expand Down
6 changes: 3 additions & 3 deletions src/chrome/buttonInject.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { exportMonitor } from "./monitorExport";

export function injectButton(modal: Element): void {
let buttons = modal.getElementsByTagName("button");
const buttons = modal.getElementsByTagName("button");
for (let i = 0; i < buttons.length; i++) {
// if (buttons[i].innerText != "Copy") {
// continue;
Expand All @@ -10,15 +10,15 @@ export function injectButton(modal: Element): void {
continue;
}

let yamlBtn = createButton(modal);
const yamlBtn = createButton(modal);
buttons[i].insertAdjacentElement("afterend", yamlBtn);
buttons[i].classList.replace("ui_form_button--primary", "ui_form_button--secondary");
return;
}
}

function createButton(modal: Element): Element {
let button = document.createElement("button");
const button = document.createElement("button");
button.classList.add("ui_form_button", "ui_form_button--md", "ui_form_button--primary");
button.textContent = "Export as YAML";
button.addEventListener("click", () => exportMonitor(modal));
Expand Down
2 changes: 1 addition & 1 deletion src/chrome/main.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { processMutations } from "./pageObserver";

export function run(): void {
let observer = new MutationObserver(processMutations);
const observer = new MutationObserver(processMutations);
observer.observe(document.body, {
attributes: true,
childList: true,
Expand Down
10 changes: 5 additions & 5 deletions src/chrome/monitorExport.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { ConversionErrorMessage, ValidationErrorMessage } from "../constants";
import { Parser } from "../parser";
import { MonitorValidator } from "../monitorValidator";
import { Parser } from "../parser";

export async function exportMonitor(modal: Element): Promise<void> {
let textareas = modal.getElementsByTagName("textarea");
const textareas = modal.getElementsByTagName("textarea");
if (textareas.length < 1) {
alert("Could not find monitor JSON");
return;
Expand All @@ -12,16 +12,16 @@ export async function exportMonitor(modal: Element): Promise<void> {
try {
const parser = new Parser(new MonitorValidator());
parser.setOnValidationErrors((errors: string[]) => {
errors.forEach(err => console.error(err));
alert(ValidationErrorMessage);
errors.forEach(err => console.error(err));
alert(ValidationErrorMessage);
});

const converted = parser.parse(textareas[0].value);
if (converted) {
navigator.clipboard.writeText(converted).then(() => {
alert("Monitor YAML copied to clipboard");
}, (rejectReason) => {
alert("Could not copy monitor YAML to clipboard")
alert("Could not copy monitor YAML to clipboard");
console.error(rejectReason);
});
}
Expand Down
2 changes: 1 addition & 1 deletion src/chrome/pageObserver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export function processMutations(mutations: MutationRecord[]): void {
if (mutation.addedNodes && mutation.addedNodes.length > 0) {
processAddedNodes(mutation.addedNodes);
}
})
});
}

function processAddedNodes(nodeList: NodeList): void {
Expand Down
2 changes: 1 addition & 1 deletion src/converter.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { safeDump } from 'js-yaml';
import { safeDump } from "js-yaml";

export function toYaml(json: any, indentSize: number): string {
if (Object.keys(json).indexOf("id") > -1) {
Expand Down
8 changes: 4 additions & 4 deletions src/monitorValidator.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Validator, Schema, ValidatorResult } from 'jsonschema';
import { Schema, Validator, ValidatorResult } from "jsonschema";

export interface IMonitorValidator {
validate(json: object): ValidatorResult
validate(json: object): ValidatorResult;
}

export class MonitorValidator implements IMonitorValidator {
Expand Down Expand Up @@ -144,9 +144,9 @@ export class MonitorValidator implements IMonitorValidator {
this.validator.addSchema(this.metricThresholdsSchema, this.metricThresholdsSchemaId);
this.validator.addSchema(this.servicethresholdsSchema, this.serviceThresholdsSchemaId);
this.validator.addSchema(this.optionsSchema, this.optionsSchemaId);
};
}

public validate(json: object): ValidatorResult {
return this.validator.validate(json, this.monitorSchema);
};
}
}
12 changes: 6 additions & 6 deletions src/parser.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { DefaultIndentSize } from "./constants";
import { IMonitorValidator } from "./monitorValidator";
import { sanitize } from "./sanitizer";
import { toYaml } from "./converter";
import { DefaultIndentSize } from "./constants";

export interface IParser {
setIndentSize(indentSize: number): void
setIndentSize(indentSize: number): void;
setOnValidationErrors(callback: (errors: string[]) => void): void;
parse(json: string): string | null;
}
Expand All @@ -13,15 +13,15 @@ export class Parser implements IParser {
private indentSize: number = DefaultIndentSize;
private onValidationErrors: ((errors: string[]) => void) | undefined;

public constructor(private readonly validator: IMonitorValidator) { };
public constructor(private readonly validator: IMonitorValidator) { }

public setIndentSize(indentSize: number): void {
this.indentSize = indentSize;
};
}

public setOnValidationErrors(callback: (errors: string[]) => void): void {
this.onValidationErrors = callback;
};
}

public parse(json: string): string | null {
const sanitized = sanitize(json);
Expand All @@ -37,5 +37,5 @@ export class Parser implements IParser {
}

return toYaml(monitor, this.indentSize);
};
}
}
51 changes: 25 additions & 26 deletions src/vscode/command.ts
Original file line number Diff line number Diff line change
@@ -1,35 +1,34 @@
import { env, Range, TextEditor, window, TextEditorOptions, TextEditorEdit } from 'vscode';
import { ConversionErrorMessage, DefaultIndentSize } from "../constants";
import { env, TextEditor, TextEditorOptions, window } from "vscode";
import { IParser } from "../parser";
import { ConversionErrorMessage, DefaultIndentSize } from '../constants';

export async function pasteMonitor(editor: TextEditor, parser: IParser): Promise<void> {
if (editor.document.languageId !== 'yaml') {
return;
}
if (editor.document.languageId !== "yaml") {
return;
}

configureIndentSize(parser, editor.options);
configureIndentSize(parser, editor.options);

try {
const clipboardContent = await env.clipboard.readText();
const converted = parser.parse(clipboardContent);
try {
const clipboardContent = await env.clipboard.readText();
const converted = parser.parse(clipboardContent);

if (converted) {
editor.edit(editBuilder => {
if (editor.selection.isEmpty) {
editBuilder.insert(editor.selection.start, converted);
} else {
//editBuilder.replace(new Range(editor.selection.start, editor.selection.end), converted);
editBuilder.replace(editor.selection, converted);
}
});
}
if (converted) {
editor.edit(editBuilder => {
if (editor.selection.isEmpty) {
editBuilder.insert(editor.selection.start, converted);
} else {
editBuilder.replace(editor.selection, converted);
}
});
}
} catch (e) {
console.error(e);
console.error(e);
window.showErrorMessage(ConversionErrorMessage);
}
};
}
}

function configureIndentSize(parser: IParser, options: TextEditorOptions) {
const indentSize = options.insertSpaces ? options.tabSize as number : DefaultIndentSize;
parser.setIndentSize(indentSize);
};
function configureIndentSize(parser: IParser, options: TextEditorOptions): void {
const indentSize = options.insertSpaces ? options.tabSize as number : DefaultIndentSize;
parser.setIndentSize(indentSize);
}
61 changes: 15 additions & 46 deletions src/vscode/extension.ts
Original file line number Diff line number Diff line change
@@ -1,51 +1,20 @@
import { commands, env, ExtensionContext, Range, TextEditor, window, TextEditorOptions, TextEditorEdit } from 'vscode';
import { IParser, Parser } from "../parser";
import { MonitorValidator } from '../monitorValidator';
import { ValidationErrorMessage, ConversionErrorMessage, DefaultIndentSize } from '../constants';
import { pasteMonitor } from './command';
import { commands, ExtensionContext, TextEditor, window } from "vscode";
import { MonitorValidator } from "../monitorValidator";
import { Parser } from "../parser";
import { pasteMonitor } from "./command";
import { ValidationErrorMessage } from "../constants";

export function activate(context: ExtensionContext): void {
const parser = new Parser(new MonitorValidator());
parser.setOnValidationErrors((errors: string[]) => {
errors.forEach(err => console.error(err));
window.showErrorMessage(ValidationErrorMessage);
});
const parser = new Parser(new MonitorValidator());
parser.setOnValidationErrors((errors: string[]) => {
errors.forEach(err => console.error(err));
window.showErrorMessage(ValidationErrorMessage);
});

const pasteCommand = commands.registerTextEditorCommand(pasteMonitor.name, (editor: TextEditor) => pasteMonitor(editor, parser));
context.subscriptions.push(pasteCommand);
};
const pasteCommand = commands.registerTextEditorCommand(pasteMonitor.name, (editor: TextEditor) => pasteMonitor(editor, parser));
context.subscriptions.push(pasteCommand);
}

export function deactivate(context: ExtensionContext): void {
context.subscriptions.forEach(subscription => subscription.dispose());
};

// export async function pasteDatadogAsYAML(editor: TextEditor, parser: IParser): Promise<void> {
// if (editor.document.languageId !== 'yaml') {
// return;
// }

// configureIndentSize(parser, editor.options);

// try {
// const clipboardContent = await env.clipboard.readText();
// const converted = parser.parse(clipboardContent);

// if (converted) {
// editor.edit(editBuilder => {
// if (editor.selection.isEmpty) {
// editBuilder.insert(editor.selection.start, converted);
// } else {
// editBuilder.replace(new Range(editor.selection.start, editor.selection.end), converted);
// }
// });
// }
// } catch (e) {
// console.error(e);
// window.showErrorMessage(ConversionErrorMessage);
// }
// };

// function configureIndentSize(parser: IParser, options: TextEditorOptions) {
// const indentSize = options.insertSpaces ? options.tabSize as number : DefaultIndentSize;
// parser.setIndentSize(indentSize);
// };
context.subscriptions.forEach(subscription => subscription.dispose());
}
Loading

0 comments on commit b49ec38

Please sign in to comment.