Lint the workflow parser package

This commit is contained in:
Josh Gross
2023-03-15 15:58:44 -04:00
parent 28a4438faf
commit 57ebe9b9b1
7 changed files with 26 additions and 23 deletions
@@ -1,3 +1,4 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion */
import {nullTrace} from "../test-utils/null-trace";
import {parseWorkflow} from "../workflows/workflow-parser";
import {convertWorkflowTemplate, ErrorPolicy} from "./convert";
@@ -9,7 +9,7 @@ export class JSONObjectReader implements ObjectReader {
public constructor(fileId: number | undefined, input: string) {
this._fileId = fileId;
const value = JSON.parse(input);
const value: unknown = JSON.parse(input);
this._generator = this.getParseEvents(value, true);
this._current = this._generator.next();
}
@@ -76,7 +76,7 @@ export class JSONObjectReader implements ObjectReader {
public validateEnd(): void {
if (!this._current.done) {
const parseEvent = this._current.value as ParseEvent;
const parseEvent = this._current.value;
if (parseEvent.type === EventType.DocumentEnd) {
this._current = this._generator.next();
return;
@@ -88,7 +88,7 @@ export class JSONObjectReader implements ObjectReader {
public validateStart(): void {
if (!this._current.done) {
const parseEvent = this._current.value as ParseEvent;
const parseEvent = this._current.value;
if (parseEvent.type === EventType.DocumentStart) {
this._current = this._generator.next();
return;
@@ -101,7 +101,7 @@ export class JSONObjectReader implements ObjectReader {
/**
* Returns all tokens (depth first)
*/
private *getParseEvents(value: any, root?: boolean): Generator<ParseEvent, void> {
private *getParseEvents(value: unknown, root?: boolean): Generator<ParseEvent, void> {
if (root) {
yield new ParseEvent(EventType.DocumentStart, undefined);
}
@@ -124,9 +124,9 @@ export class JSONObjectReader implements ObjectReader {
yield new ParseEvent(EventType.Literal, new NullToken(this._fileId, undefined, undefined));
}
// array
else if (Object.prototype.hasOwnProperty.call(value, "length")) {
else if (Array.isArray(value)) {
yield new ParseEvent(EventType.SequenceStart, new SequenceToken(this._fileId, undefined, undefined));
for (const item of value as []) {
for (const item of value) {
for (const e of this.getParseEvents(item)) {
yield e;
}
@@ -138,7 +138,7 @@ export class JSONObjectReader implements ObjectReader {
yield new ParseEvent(EventType.MappingStart, new MappingToken(this._fileId, undefined, undefined));
for (const key of Object.keys(value)) {
yield new ParseEvent(EventType.Literal, new StringToken(this._fileId, undefined, key, undefined));
for (const e of this.getParseEvents(value[key])) {
for (const e of this.getParseEvents(value[key as keyof typeof value])) {
yield e;
}
}
@@ -25,7 +25,7 @@ export class TemplateContext {
public readonly errors: TemplateValidationErrors;
public readonly schema: TemplateSchema;
public readonly trace: TraceWriter;
public readonly state: {[key: string]: any} = {};
public readonly state: {[key: string]: unknown} = {};
public constructor(errors: TemplateValidationErrors, schema: TemplateSchema, trace: TraceWriter) {
this.errors = errors;
@@ -47,7 +47,7 @@ export class TemplateContext {
const token = tokenOrFileId as TemplateToken | undefined;
const range = tokenRange || token?.range;
const prefix = this.getErrorPrefix(token?.file ?? (tokenOrFileId as number | undefined), token?.line, token?.col);
const message = (err as Error | undefined)?.message ?? `${err}`;
const message = (err as Error | undefined)?.message ?? String(err);
const e = new TemplateValidationError(message, prefix, undefined, range);
this.errors.add(e);
@@ -84,7 +84,7 @@ export class TemplateContext {
}
private getErrorPrefix(fileId?: number, line?: number, column?: number): string {
const fileName = fileId !== undefined ? this.getFileName(fileId as number) : undefined;
const fileName = fileId !== undefined ? this.getFileName(fileId) : undefined;
if (fileName) {
if (line !== undefined && column !== undefined) {
return `${fileName} (Line: ${line}, Col: ${column})`;
@@ -1,4 +1,5 @@
// template-reader *just* does schema validation
/* eslint-disable @typescript-eslint/no-non-null-assertion */
import {ObjectReader} from "./object-reader";
import {TemplateSchema} from "./schema";
@@ -7,9 +7,15 @@ export interface TraceWriter {
}
export class NoOperationTraceWriter implements TraceWriter {
public error(message: string): void {}
public error(): void {
// do nothing
}
public info(message: string): void {}
public info(): void {
// do nothing
}
public verbose(message: string): void {}
public verbose(): void {
// do nothing
}
}
+2 -6
View File
@@ -1,7 +1,3 @@
import {TraceWriter} from "../templates/trace-writer";
import {NoOperationTraceWriter} from "../templates/trace-writer";
export const nullTrace: TraceWriter = {
info: x => {},
verbose: x => {},
error: x => {}
};
export const nullTrace = new NoOperationTraceWriter();
@@ -3,7 +3,6 @@ import type {LinePos} from "yaml/dist/errors";
import type {NodeBase} from "yaml/dist/nodes/Node";
import {ObjectReader} from "../templates/object-reader";
import {EventType, ParseEvent} from "../templates/parse-event";
import {TemplateContext} from "../templates/template-context";
import {
BooleanToken,
LiteralToken,
@@ -72,7 +71,7 @@ export class YamlObjectReader implements ObjectReader {
}
if (isScalar(node)) {
yield new ParseEvent(EventType.Literal, YamlObjectReader.getLiteralToken(this.fileId, range, node as Scalar));
yield new ParseEvent(EventType.Literal, YamlObjectReader.getLiteralToken(this.fileId, range, node));
}
if (isPair(node)) {
@@ -191,7 +190,7 @@ export class YamlObjectReader implements ObjectReader {
public validateEnd(): void {
if (!this._current.done) {
const parseEvent = this._current.value as ParseEvent;
const parseEvent = this._current.value;
if (parseEvent.type === EventType.DocumentEnd) {
this._current = this._generator.next();
return;
@@ -207,7 +206,7 @@ export class YamlObjectReader implements ObjectReader {
}
if (!this._current.done) {
const parseEvent = this._current.value as ParseEvent;
const parseEvent = this._current.value;
if (parseEvent.type === EventType.DocumentStart) {
this._current = this._generator.next();
return;