Fix any cases in md extension

For #269213
This commit is contained in:
Matt Bierner
2025-10-03 14:15:39 -07:00
parent c2ae070500
commit a8101c12b5
7 changed files with 39 additions and 42 deletions

View File

@@ -4,7 +4,6 @@
*--------------------------------------------------------------------------------------------*/
import type MarkdownIt = require('markdown-it');
import type Token = require('markdown-it/lib/token');
import * as vscode from 'vscode';
import { ILogger } from './logging';
import { MarkdownContributionProvider } from './markdownExtensions';
@@ -50,9 +49,9 @@ class TokenCache {
readonly version: number;
readonly config: MarkdownItConfig;
};
private _tokens?: Token[];
private _tokens?: MarkdownIt.Token[];
public tryGetCached(document: ITextDocument, config: MarkdownItConfig): Token[] | undefined {
public tryGetCached(document: ITextDocument, config: MarkdownItConfig): MarkdownIt.Token[] | undefined {
if (this._cachedDocument
&& this._cachedDocument.uri.toString() === document.uri.toString()
&& document.version >= 0 && this._cachedDocument.version === document.version
@@ -64,7 +63,7 @@ class TokenCache {
return undefined;
}
public update(document: ITextDocument, config: MarkdownItConfig, tokens: Token[]) {
public update(document: ITextDocument, config: MarkdownItConfig, tokens: MarkdownIt.Token[]) {
this._cachedDocument = {
uri: document.uri,
version: document.version,
@@ -93,7 +92,7 @@ interface RenderEnv {
export interface IMdParser {
readonly slugifier: Slugifier;
tokenize(document: ITextDocument): Promise<Token[]>;
tokenize(document: ITextDocument): Promise<MarkdownIt.Token[]>;
}
export class MarkdownItEngine implements IMdParser {
@@ -143,8 +142,7 @@ export class MarkdownItEngine implements IMdParser {
const frontMatterPlugin = await import('markdown-it-front-matter');
// Extract rules from front matter plugin and apply at a lower precedence
let fontMatterRule: any;
// eslint-disable-next-line local/code-no-any-casts
frontMatterPlugin.default(<any>{
frontMatterPlugin.default({
block: {
ruler: {
before: (_id: any, _id2: any, rule: any) => { fontMatterRule = rule; }
@@ -180,7 +178,7 @@ export class MarkdownItEngine implements IMdParser {
document: ITextDocument,
config: MarkdownItConfig,
engine: MarkdownIt
): Token[] {
): MarkdownIt.Token[] {
const cached = this._tokenCache.tryGetCached(document, config);
if (cached) {
this._resetSlugCount();
@@ -228,7 +226,7 @@ export class MarkdownItEngine implements IMdParser {
};
}
public async tokenize(document: ITextDocument): Promise<Token[]> {
public async tokenize(document: ITextDocument): Promise<MarkdownIt.Token[]> {
const config = this._getConfig(document.uri);
const engine = await this._getEngine(config);
return this._tokenizeDocument(document, config, engine);
@@ -249,7 +247,7 @@ export class MarkdownItEngine implements IMdParser {
private _addImageRenderer(md: MarkdownIt): void {
const original = md.renderer.rules.image;
md.renderer.rules.image = (tokens: Token[], idx: number, options, env: RenderEnv, self) => {
md.renderer.rules.image = (tokens: MarkdownIt.Token[], idx: number, options, env: RenderEnv, self) => {
const token = tokens[idx];
const src = token.attrGet('src');
if (src) {
@@ -271,7 +269,7 @@ export class MarkdownItEngine implements IMdParser {
private _addFencedRenderer(md: MarkdownIt): void {
const original = md.renderer.rules['fenced'];
md.renderer.rules['fenced'] = (tokens: Token[], idx: number, options, env, self) => {
md.renderer.rules['fenced'] = (tokens: MarkdownIt.Token[], idx: number, options, env, self) => {
const token = tokens[idx];
if (token.map?.length) {
token.attrJoin('class', 'hljs');
@@ -313,7 +311,7 @@ export class MarkdownItEngine implements IMdParser {
private _addNamedHeaders(md: MarkdownIt): void {
const original = md.renderer.rules.heading_open;
md.renderer.rules.heading_open = (tokens: Token[], idx: number, options, env, self) => {
md.renderer.rules.heading_open = (tokens: MarkdownIt.Token[], idx: number, options, env, self) => {
const title = this._tokenToPlainText(tokens[idx + 1]);
let slug = this.slugifier.fromHeading(title);
@@ -335,7 +333,7 @@ export class MarkdownItEngine implements IMdParser {
};
}
private _tokenToPlainText(token: Token): string {
private _tokenToPlainText(token: MarkdownIt.Token): string {
if (token.children) {
return token.children.map(x => this._tokenToPlainText(x)).join('');
}
@@ -353,7 +351,7 @@ export class MarkdownItEngine implements IMdParser {
private _addLinkRenderer(md: MarkdownIt): void {
const original = md.renderer.rules.link_open;
md.renderer.rules.link_open = (tokens: Token[], idx: number, options, env, self) => {
md.renderer.rules.link_open = (tokens: MarkdownIt.Token[], idx: number, options, env, self) => {
const token = tokens[idx];
const href = token.attrGet('href');
// A string, including empty string, may be `href`.