Skip to content

Commit

Permalink
simplify types
Browse files Browse the repository at this point in the history
  • Loading branch information
bartlomieju committed Jan 30, 2025
1 parent bf9e449 commit b3ddde1
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 38 deletions.
31 changes: 16 additions & 15 deletions cli/js/40_lint.js
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,13 @@ const PropFlags = {
/** @typedef {import("./40_lint_types.d.ts").VisitorFn} VisitorFn */
/** @typedef {import("./40_lint_types.d.ts").CompiledVisitor} CompiledVisitor */
/** @typedef {import("./40_lint_types.d.ts").LintState} LintState */
/** @typedef {import("./40_lint_types.d.ts").IFixer} IFixer */
/** @typedef {import("./40_lint_types.d.ts").RuleContext} RuleContext */
/** @typedef {import("./40_lint_types.d.ts").NodeFacade} NodeFacade */
/** @typedef {import("./40_lint_types.d.ts").LintPlugin} LintPlugin */
/** @typedef {import("./40_lint_types.d.ts").TransformFn} TransformFn */
/** @typedef {import("./40_lint_types.d.ts").MatchContext} MatchContext */
/** @typedef {import("./40_lint_types.d.ts").Node} Node */
/** @typedef {import("./40_lint_types.d.ts").INode} INode */
/** @typedef {import("./40_lint_types.d.ts").IReportData} IReportData */

/** @type {LintState} */
const state = {
Expand All @@ -107,10 +108,10 @@ class CancellationToken {
}
}

/** @implements {Fixer} */
class FixerHelper {
/** @implements {IFixer} */
class Fixer {
/**
* @param {Node} node
* @param {INode} node
* @param {string} text
*/
insertTextAfter(node, text) {
Expand All @@ -121,7 +122,7 @@ class FixerHelper {
}

/**
* @param {Node["range"]} range
* @param {INode["range"]} range
* @param {string} text
*/
insertTextAfterRange(range, text) {
Expand All @@ -132,7 +133,7 @@ class FixerHelper {
}

/**
* @param {Node} node
* @param {INode} node
* @param {string} text
*/
insertTextBefore(node, text) {
Expand All @@ -143,7 +144,7 @@ class FixerHelper {
}

/**
* @param {Node["range"]} range
* @param {INode["range"]} range
* @param {string} text
*/
insertTextBeforeRange(range, text) {
Expand All @@ -154,7 +155,7 @@ class FixerHelper {
}

/**
* @param {Node} node
* @param {INode} node
*/
remove(node) {
return {
Expand All @@ -164,7 +165,7 @@ class FixerHelper {
}

/**
* @param {Node["range"]} range
* @param {INode["range"]} range
*/
removeRange(range) {
return {
Expand All @@ -174,7 +175,7 @@ class FixerHelper {
}

/**
* @param {Node} node
* @param {INode} node
* @param {string} text
*/
replaceText(node, text) {
Expand All @@ -185,7 +186,7 @@ class FixerHelper {
}

/**
* @param {Node["range"]} range
* @param {INode["range"]} range
* @param {string} text
*/
replaceTextRange(range, text) {
Expand Down Expand Up @@ -225,7 +226,7 @@ export class Context {
}

/**
* @param {ReportData} data
* @param {IReportData} data
*/
report(data) {
const range = data.node ? data.node.range : data.range ? data.range : null;
Expand All @@ -241,7 +242,7 @@ export class Context {
let fix;

if (typeof data.fix === "function") {
const fixer = new FixerHelper();
const fixer = new Fixer();
fix = data.fix(fixer);
fix.range[0]--;
fix.range[1]--;
Expand Down Expand Up @@ -458,7 +459,7 @@ function readType(buf, idx) {
/**
* @param {AstContext} ctx
* @param {number} idx
* @returns {Node["range"]}
* @returns {INode["range"]}
*/
function readSpan(ctx, idx) {
let offset = ctx.spansOffset + (idx * SPAN_SIZE);
Expand Down
42 changes: 19 additions & 23 deletions cli/js/40_lint_types.d.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Copyright 2018-2025 the Deno authors. MIT license.

export interface NodeFacade {
export interface INode {
type: string;
range: [number, number];
[key: string]: unknown;
Expand All @@ -11,7 +11,7 @@ export interface AstContext {
strTable: Map<number, string>;
strTableOffset: number;
rootOffset: number;
nodes: Map<number, NodeFacade>;
nodes: Map<number, INode>;
spansOffset: number;
propsOffset: number;
strByType: number[];
Expand All @@ -21,40 +21,36 @@ export interface AstContext {
matcher: MatchContext;
}

export interface Node {
range: Range;
}

export type Range = [number, number];
export type TRange = [number, number];

export interface FixData {
range: Range;
export interface IFixData {
range: TRange;
text?: string;
}

export interface Fixer {
insertTextAfter(node: Node, text: string): FixData;
insertTextAfterRange(range: Range, text: string): FixData;
insertTextBefore(node: Node, text: string): FixData;
insertTextBeforeRange(range: Range, text: string): FixData;
remove(node: Node): FixData;
removeRange(range: Range): FixData;
replaceText(node: Node, text: string): FixData;
replaceTextRange(range: Range, text: string): FixData;
export interface IFixer {
insertTextAfter(node: INode, text: string): IFixData;
insertTextAfterRange(range: TRange, text: string): IFixData;
insertTextBefore(node: INode, text: string): IFixData;
insertTextBeforeRange(range: TRange, text: string): IFixData;
remove(node: INode): IFixData;
removeRange(range: TRange): IFixData;
replaceText(node: INode, text: string): IFixData;
replaceTextRange(range: TRange, text: string): IFixData;
}

export interface ReportData {
node?: Node;
range?: Range;
export interface IReportData {
node?: INode;
range?: TRange;
message: string;
hint?: string;
fix?(fixer: Fixer): FixData;
fix?(fixer: IFixer): IFixData;
}

// TODO(@marvinhagemeister) Remove once we land "official" types
export interface RuleContext {
id: string;
report(data: ReportData): void;
report(data: IReportData): void;
}

// TODO(@marvinhagemeister) Remove once we land "official" types
Expand Down

0 comments on commit b3ddde1

Please sign in to comment.