0
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2025-03-06 11:18:57 -05:00

simplify types

This commit is contained in:
Bartek Iwańczuk 2025-01-30 23:35:58 +01:00
parent bf9e4493c6
commit b3ddde1d4d
No known key found for this signature in database
GPG key ID: 0C6BCDDC3B3AD750
2 changed files with 35 additions and 38 deletions

View file

@ -77,12 +77,13 @@ const PropFlags = {
/** @typedef {import("./40_lint_types.d.ts").VisitorFn} VisitorFn */ /** @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").CompiledVisitor} CompiledVisitor */
/** @typedef {import("./40_lint_types.d.ts").LintState} LintState */ /** @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").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").LintPlugin} LintPlugin */
/** @typedef {import("./40_lint_types.d.ts").TransformFn} TransformFn */ /** @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").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} */ /** @type {LintState} */
const state = { const state = {
@ -107,10 +108,10 @@ class CancellationToken {
} }
} }
/** @implements {Fixer} */ /** @implements {IFixer} */
class FixerHelper { class Fixer {
/** /**
* @param {Node} node * @param {INode} node
* @param {string} text * @param {string} text
*/ */
insertTextAfter(node, text) { insertTextAfter(node, text) {
@ -121,7 +122,7 @@ class FixerHelper {
} }
/** /**
* @param {Node["range"]} range * @param {INode["range"]} range
* @param {string} text * @param {string} text
*/ */
insertTextAfterRange(range, text) { insertTextAfterRange(range, text) {
@ -132,7 +133,7 @@ class FixerHelper {
} }
/** /**
* @param {Node} node * @param {INode} node
* @param {string} text * @param {string} text
*/ */
insertTextBefore(node, text) { insertTextBefore(node, text) {
@ -143,7 +144,7 @@ class FixerHelper {
} }
/** /**
* @param {Node["range"]} range * @param {INode["range"]} range
* @param {string} text * @param {string} text
*/ */
insertTextBeforeRange(range, text) { insertTextBeforeRange(range, text) {
@ -154,7 +155,7 @@ class FixerHelper {
} }
/** /**
* @param {Node} node * @param {INode} node
*/ */
remove(node) { remove(node) {
return { return {
@ -164,7 +165,7 @@ class FixerHelper {
} }
/** /**
* @param {Node["range"]} range * @param {INode["range"]} range
*/ */
removeRange(range) { removeRange(range) {
return { return {
@ -174,7 +175,7 @@ class FixerHelper {
} }
/** /**
* @param {Node} node * @param {INode} node
* @param {string} text * @param {string} text
*/ */
replaceText(node, text) { replaceText(node, text) {
@ -185,7 +186,7 @@ class FixerHelper {
} }
/** /**
* @param {Node["range"]} range * @param {INode["range"]} range
* @param {string} text * @param {string} text
*/ */
replaceTextRange(range, text) { replaceTextRange(range, text) {
@ -225,7 +226,7 @@ export class Context {
} }
/** /**
* @param {ReportData} data * @param {IReportData} data
*/ */
report(data) { report(data) {
const range = data.node ? data.node.range : data.range ? data.range : null; const range = data.node ? data.node.range : data.range ? data.range : null;
@ -241,7 +242,7 @@ export class Context {
let fix; let fix;
if (typeof data.fix === "function") { if (typeof data.fix === "function") {
const fixer = new FixerHelper(); const fixer = new Fixer();
fix = data.fix(fixer); fix = data.fix(fixer);
fix.range[0]--; fix.range[0]--;
fix.range[1]--; fix.range[1]--;
@ -458,7 +459,7 @@ function readType(buf, idx) {
/** /**
* @param {AstContext} ctx * @param {AstContext} ctx
* @param {number} idx * @param {number} idx
* @returns {Node["range"]} * @returns {INode["range"]}
*/ */
function readSpan(ctx, idx) { function readSpan(ctx, idx) {
let offset = ctx.spansOffset + (idx * SPAN_SIZE); let offset = ctx.spansOffset + (idx * SPAN_SIZE);

View file

@ -1,6 +1,6 @@
// Copyright 2018-2025 the Deno authors. MIT license. // Copyright 2018-2025 the Deno authors. MIT license.
export interface NodeFacade { export interface INode {
type: string; type: string;
range: [number, number]; range: [number, number];
[key: string]: unknown; [key: string]: unknown;
@ -11,7 +11,7 @@ export interface AstContext {
strTable: Map<number, string>; strTable: Map<number, string>;
strTableOffset: number; strTableOffset: number;
rootOffset: number; rootOffset: number;
nodes: Map<number, NodeFacade>; nodes: Map<number, INode>;
spansOffset: number; spansOffset: number;
propsOffset: number; propsOffset: number;
strByType: number[]; strByType: number[];
@ -21,40 +21,36 @@ export interface AstContext {
matcher: MatchContext; matcher: MatchContext;
} }
export interface Node { export type TRange = [number, number];
range: Range;
}
export type Range = [number, number]; export interface IFixData {
range: TRange;
export interface FixData {
range: Range;
text?: string; text?: string;
} }
export interface Fixer { export interface IFixer {
insertTextAfter(node: Node, text: string): FixData; insertTextAfter(node: INode, text: string): IFixData;
insertTextAfterRange(range: Range, text: string): FixData; insertTextAfterRange(range: TRange, text: string): IFixData;
insertTextBefore(node: Node, text: string): FixData; insertTextBefore(node: INode, text: string): IFixData;
insertTextBeforeRange(range: Range, text: string): FixData; insertTextBeforeRange(range: TRange, text: string): IFixData;
remove(node: Node): FixData; remove(node: INode): IFixData;
removeRange(range: Range): FixData; removeRange(range: TRange): IFixData;
replaceText(node: Node, text: string): FixData; replaceText(node: INode, text: string): IFixData;
replaceTextRange(range: Range, text: string): FixData; replaceTextRange(range: TRange, text: string): IFixData;
} }
export interface ReportData { export interface IReportData {
node?: Node; node?: INode;
range?: Range; range?: TRange;
message: string; message: string;
hint?: string; hint?: string;
fix?(fixer: Fixer): FixData; fix?(fixer: IFixer): IFixData;
} }
// TODO(@marvinhagemeister) Remove once we land "official" types // TODO(@marvinhagemeister) Remove once we land "official" types
export interface RuleContext { export interface RuleContext {
id: string; id: string;
report(data: ReportData): void; report(data: IReportData): void;
} }
// TODO(@marvinhagemeister) Remove once we land "official" types // TODO(@marvinhagemeister) Remove once we land "official" types