mirror of
https://github.com/denoland/deno.git
synced 2025-03-06 02:52:05 -05:00
more types
This commit is contained in:
parent
b3ddde1d4d
commit
46e150dcb0
3 changed files with 102 additions and 90 deletions
|
@ -77,13 +77,8 @@ 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").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").INode} INode */
|
|
||||||
/** @typedef {import("./40_lint_types.d.ts").IReportData} IReportData */
|
|
||||||
|
|
||||||
/** @type {LintState} */
|
/** @type {LintState} */
|
||||||
const state = {
|
const state = {
|
||||||
|
@ -108,10 +103,10 @@ class CancellationToken {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @implements {IFixer} */
|
/** @implements {Deno.lint.Fixer} */
|
||||||
class Fixer {
|
class Fixer {
|
||||||
/**
|
/**
|
||||||
* @param {INode} node
|
* @param {Deno.lint.Node} node
|
||||||
* @param {string} text
|
* @param {string} text
|
||||||
*/
|
*/
|
||||||
insertTextAfter(node, text) {
|
insertTextAfter(node, text) {
|
||||||
|
@ -122,7 +117,7 @@ class Fixer {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {INode["range"]} range
|
* @param {Deno.lint.Node["range"]} range
|
||||||
* @param {string} text
|
* @param {string} text
|
||||||
*/
|
*/
|
||||||
insertTextAfterRange(range, text) {
|
insertTextAfterRange(range, text) {
|
||||||
|
@ -133,7 +128,7 @@ class Fixer {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {INode} node
|
* @param {Deno.lint.Node} node
|
||||||
* @param {string} text
|
* @param {string} text
|
||||||
*/
|
*/
|
||||||
insertTextBefore(node, text) {
|
insertTextBefore(node, text) {
|
||||||
|
@ -144,7 +139,7 @@ class Fixer {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {INode["range"]} range
|
* @param {Deno.lint.Node["range"]} range
|
||||||
* @param {string} text
|
* @param {string} text
|
||||||
*/
|
*/
|
||||||
insertTextBeforeRange(range, text) {
|
insertTextBeforeRange(range, text) {
|
||||||
|
@ -155,7 +150,7 @@ class Fixer {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {INode} node
|
* @param {Deno.lint.Node} node
|
||||||
*/
|
*/
|
||||||
remove(node) {
|
remove(node) {
|
||||||
return {
|
return {
|
||||||
|
@ -165,7 +160,7 @@ class Fixer {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {INode["range"]} range
|
* @param {Deno.lint.Node["range"]} range
|
||||||
*/
|
*/
|
||||||
removeRange(range) {
|
removeRange(range) {
|
||||||
return {
|
return {
|
||||||
|
@ -175,7 +170,7 @@ class Fixer {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {INode} node
|
* @param {Deno.lint.Node} node
|
||||||
* @param {string} text
|
* @param {string} text
|
||||||
*/
|
*/
|
||||||
replaceText(node, text) {
|
replaceText(node, text) {
|
||||||
|
@ -186,7 +181,7 @@ class Fixer {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {INode["range"]} range
|
* @param {Deno.lint.Node["range"]} range
|
||||||
* @param {string} text
|
* @param {string} text
|
||||||
*/
|
*/
|
||||||
replaceTextRange(range, text) {
|
replaceTextRange(range, text) {
|
||||||
|
@ -200,7 +195,7 @@ class Fixer {
|
||||||
/**
|
/**
|
||||||
* Every rule gets their own instance of this class. This is the main
|
* Every rule gets their own instance of this class. This is the main
|
||||||
* API lint rules interact with.
|
* API lint rules interact with.
|
||||||
* @implements {RuleContext}
|
* @implements {Deno.lint.RuleContext}
|
||||||
*/
|
*/
|
||||||
export class Context {
|
export class Context {
|
||||||
id;
|
id;
|
||||||
|
@ -226,7 +221,7 @@ export class Context {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {IReportData} data
|
* @param {Deno.lint.ReportData} 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;
|
||||||
|
@ -260,7 +255,7 @@ export class Context {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {LintPlugin[]} plugins
|
* @param {Deno.lint.Plugin[]} plugins
|
||||||
* @param {string[]} exclude
|
* @param {string[]} exclude
|
||||||
*/
|
*/
|
||||||
export function installPlugins(plugins, exclude) {
|
export function installPlugins(plugins, exclude) {
|
||||||
|
@ -274,7 +269,7 @@ export function installPlugins(plugins, exclude) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {LintPlugin} plugin
|
* @param {Deno.lint.Plugin} plugin
|
||||||
*/
|
*/
|
||||||
function installPlugin(plugin) {
|
function installPlugin(plugin) {
|
||||||
if (typeof plugin !== "object") {
|
if (typeof plugin !== "object") {
|
||||||
|
@ -459,7 +454,7 @@ function readType(buf, idx) {
|
||||||
/**
|
/**
|
||||||
* @param {AstContext} ctx
|
* @param {AstContext} ctx
|
||||||
* @param {number} idx
|
* @param {number} idx
|
||||||
* @returns {INode["range"]}
|
* @returns {Deno.lint.Node["range"]}
|
||||||
*/
|
*/
|
||||||
function readSpan(ctx, idx) {
|
function readSpan(ctx, idx) {
|
||||||
let offset = ctx.spansOffset + (idx * SPAN_SIZE);
|
let offset = ctx.spansOffset + (idx * SPAN_SIZE);
|
||||||
|
|
54
cli/js/40_lint_types.d.ts
vendored
54
cli/js/40_lint_types.d.ts
vendored
|
@ -1,17 +1,11 @@
|
||||||
// Copyright 2018-2025 the Deno authors. MIT license.
|
// Copyright 2018-2025 the Deno authors. MIT license.
|
||||||
|
|
||||||
export interface INode {
|
|
||||||
type: string;
|
|
||||||
range: [number, number];
|
|
||||||
[key: string]: unknown;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface AstContext {
|
export interface AstContext {
|
||||||
buf: Uint8Array;
|
buf: Uint8Array;
|
||||||
strTable: Map<number, string>;
|
strTable: Map<number, string>;
|
||||||
strTableOffset: number;
|
strTableOffset: number;
|
||||||
rootOffset: number;
|
rootOffset: number;
|
||||||
nodes: Map<number, INode>;
|
nodes: Map<number, Deno.lint.Node>;
|
||||||
spansOffset: number;
|
spansOffset: number;
|
||||||
propsOffset: number;
|
propsOffset: number;
|
||||||
strByType: number[];
|
strByType: number[];
|
||||||
|
@ -21,52 +15,8 @@ export interface AstContext {
|
||||||
matcher: MatchContext;
|
matcher: MatchContext;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type TRange = [number, number];
|
|
||||||
|
|
||||||
export interface IFixData {
|
|
||||||
range: TRange;
|
|
||||||
text?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
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 IReportData {
|
|
||||||
node?: INode;
|
|
||||||
range?: TRange;
|
|
||||||
message: string;
|
|
||||||
hint?: string;
|
|
||||||
fix?(fixer: IFixer): IFixData;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO(@marvinhagemeister) Remove once we land "official" types
|
|
||||||
export interface RuleContext {
|
|
||||||
id: string;
|
|
||||||
report(data: IReportData): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO(@marvinhagemeister) Remove once we land "official" types
|
|
||||||
export interface LintRule {
|
|
||||||
create(ctx: RuleContext): Record<string, (node: unknown) => void>;
|
|
||||||
destroy?(ctx: RuleContext): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO(@marvinhagemeister) Remove once we land "official" types
|
|
||||||
export interface LintPlugin {
|
|
||||||
name: string;
|
|
||||||
rules: Record<string, LintRule>;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface LintState {
|
export interface LintState {
|
||||||
plugins: LintPlugin[];
|
plugins: Deno.lint.Plugin[];
|
||||||
installedPlugins: Set<string>;
|
installedPlugins: Set<string>;
|
||||||
/** format: `<plugin>/<rule>` */
|
/** format: `<plugin>/<rule>` */
|
||||||
ignoredRules: Set<string>;
|
ignoredRules: Set<string>;
|
||||||
|
|
105
cli/tsc/dts/lib.deno.unstable.d.ts
vendored
105
cli/tsc/dts/lib.deno.unstable.d.ts
vendored
|
@ -1341,24 +1341,6 @@ declare namespace Deno {
|
||||||
export {}; // only export exports
|
export {}; // only export exports
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @category Linter
|
|
||||||
* @experimental
|
|
||||||
*/
|
|
||||||
export interface LintRule {
|
|
||||||
create(context: any): any;
|
|
||||||
destroy?(context: any): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @category Linter
|
|
||||||
* @experimental
|
|
||||||
*/
|
|
||||||
export interface LintPlugin {
|
|
||||||
name: string;
|
|
||||||
rules: Record<string, LintRule>;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @category Linter
|
* @category Linter
|
||||||
* @experimental
|
* @experimental
|
||||||
|
@ -1368,7 +1350,92 @@ declare namespace Deno {
|
||||||
* @category Linter
|
* @category Linter
|
||||||
* @experimental
|
* @experimental
|
||||||
*/
|
*/
|
||||||
export interface LintFix {
|
export type Range = [number, number];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @category Linter
|
||||||
|
* @experimental
|
||||||
|
*/
|
||||||
|
export interface Node {
|
||||||
|
type: string;
|
||||||
|
range: Range;
|
||||||
|
[key: string]: unknown;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @category Linter
|
||||||
|
* @experimental
|
||||||
|
*/
|
||||||
|
export interface FixData {
|
||||||
|
range: Range;
|
||||||
|
text?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @category Linter
|
||||||
|
* @experimental
|
||||||
|
*/
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @category Linter
|
||||||
|
* @experimental
|
||||||
|
*/
|
||||||
|
export interface ReportData {
|
||||||
|
node?: Node;
|
||||||
|
range?: Range;
|
||||||
|
message: string;
|
||||||
|
hint?: string;
|
||||||
|
fix?(fixer: Fixer): FixData;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @category Linter
|
||||||
|
* @experimental
|
||||||
|
*/
|
||||||
|
export interface RuleContext {
|
||||||
|
id: string;
|
||||||
|
report(data: ReportData): void;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Rule {
|
||||||
|
create(ctx: RuleContext): Record<string, (node: unknown) => void>;
|
||||||
|
destroy?(ctx: RuleContext): void;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* In your plugins file do something like
|
||||||
|
*
|
||||||
|
* ```ts
|
||||||
|
* export default {
|
||||||
|
* name: "my-plugin",
|
||||||
|
* rules: {
|
||||||
|
* TODO:...
|
||||||
|
* }
|
||||||
|
* } satisfies Deno.lint.Plugin
|
||||||
|
* ```
|
||||||
|
* @category Linter
|
||||||
|
* @experimental
|
||||||
|
*/
|
||||||
|
export interface Plugin {
|
||||||
|
name: string;
|
||||||
|
rules: Record<string, Rule>;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @category Linter
|
||||||
|
* @experimental
|
||||||
|
*/
|
||||||
|
export interface Fix {
|
||||||
range: [number, number];
|
range: [number, number];
|
||||||
text?: string;
|
text?: string;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue