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
@@ -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
}
}