Skip to content

Commit 9dd2a67

Browse files
committed
fix type errors
1 parent 2c55a47 commit 9dd2a67

File tree

4 files changed

+43
-17
lines changed

4 files changed

+43
-17
lines changed

src/core/render/compiler.js

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { marked } from 'marked';
2+
/** @import {TokensList, Marked} from 'marked' */
23
import { isAbsolutePath, getPath, getParentPath } from '../router/util.js';
3-
import { isFn, cached, isPrimitive } from '../util/core.js';
4+
import { isFn, cached } from '../util/core.js';
45
import { tree as treeTpl } from './tpl.js';
56
import { genTree } from './gen-tree.js';
67
import { slugify } from './slugify.js';
@@ -32,6 +33,7 @@ export class Compiler {
3233
this.contentBase = router.getBasePath();
3334

3435
this.renderer = this._initRenderer();
36+
/** @type {typeof marked & Marked} */
3537
let compile;
3638
const mdConf = config.markdown || {};
3739

@@ -43,10 +45,14 @@ export class Compiler {
4345
renderer: Object.assign(this.renderer, mdConf.renderer),
4446
}),
4547
);
48+
// @ts-expect-error FIXME temporary ugly Marked types
4649
compile = marked;
4750
}
4851

52+
/** @type {typeof marked & Marked} */
4953
this._marked = compile;
54+
55+
/** @param {string | TokensList} text */
5056
this.compile = text => {
5157
let isCached = true;
5258

@@ -59,8 +65,8 @@ export class Compiler {
5965
return text;
6066
}
6167

62-
if (isPrimitive(text)) {
63-
html = compile(text);
68+
if (typeof text === 'string') {
69+
html = /** @type {string} */ (compile(text));
6470
} else {
6571
html = compile.parser(text);
6672
}
@@ -113,7 +119,8 @@ export class Compiler {
113119
}
114120

115121
let media;
116-
if (config.type && (media = compileMedia[config.type])) {
122+
const configType = /** @type {string | undefined} */ (config.type);
123+
if (configType && (media = compileMedia[configType])) {
117124
embed = media.call(this, href, title);
118125
embed.type = config.type;
119126
} else {
@@ -273,8 +280,8 @@ export class Compiler {
273280

274281
/**
275282
* Compile cover page
276-
* @param {Text} text Text content
277-
* @returns {String} Cover page
283+
* @param {TokensList} text Text content
284+
* @returns {string} Cover page
278285
*/
279286
cover(text) {
280287
const cacheToc = this.toc.slice();

src/core/render/embed.js

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { stripIndent } from 'common-tags';
22
import { get } from '../util/ajax.js';
3+
/** @import { Compiler } from '../Docsify.js' */
4+
/** @import {TokensList} from 'marked' */
35

46
const cached = {};
57

@@ -32,7 +34,7 @@ function extractFragmentContent(text, fragment, fullLine) {
3234
return stripIndent((match || [])[1] || '').trim();
3335
}
3436

35-
function walkFetchEmbed({ embedTokens, compile, fetch }, cb) {
37+
function walkFetchEmbed({ embedTokens, compile }, cb) {
3638
let token;
3739
let step = 0;
3840
let count = 0;
@@ -132,7 +134,13 @@ function walkFetchEmbed({ embedTokens, compile, fetch }, cb) {
132134
}
133135
}
134136

135-
export function prerenderEmbed({ compiler, raw = '', fetch }, done) {
137+
/**
138+
* @param {Object} options
139+
* @param {Compiler} options.compiler
140+
* @param {string} [options.raw]
141+
* @param {Function} done
142+
*/
143+
export function prerenderEmbed({ compiler, raw = '' }, done) {
136144
const hit = cached[raw];
137145
if (hit) {
138146
const copy = hit.slice();
@@ -193,7 +201,7 @@ export function prerenderEmbed({ compiler, raw = '', fetch }, done) {
193201
// are returned
194202
const moves = [];
195203
walkFetchEmbed(
196-
{ compile, embedTokens, fetch },
204+
{ compile, embedTokens },
197205
({ embedToken, token, rowIndex, cellIndex, tokenRef }) => {
198206
if (token) {
199207
if (typeof rowIndex === 'number' && typeof cellIndex === 'number') {
@@ -212,9 +220,14 @@ export function prerenderEmbed({ compiler, raw = '', fetch }, done) {
212220

213221
Object.assign(links, embedToken.links);
214222

223+
// FIXME This is an actual code error caught by TypeScript, but
224+
// apparently we've not been effected by deleting the `.links` property
225+
// yet.
226+
// @ts-expect-error
215227
tokens = tokens
216-
.slice(0, index)
228+
.slice(0, index) // This deletes the original .links by returning a new array, so now we have Tokens[] instead of TokensList
217229
.concat(embedToken, tokens.slice(index + 1));
230+
218231
moves.push({ start: index, length: embedToken.length - 1 });
219232
}
220233
} else {

src/core/render/index.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -433,7 +433,6 @@ export function Render(Base) {
433433
{
434434
compiler: /** @type {Compiler} */ (this.compiler),
435435
raw: result,
436-
fetch: undefined,
437436
},
438437
tokens => {
439438
html = /** @type {Compiler} */ (this.compiler).compile(tokens);
@@ -445,8 +444,10 @@ export function Render(Base) {
445444
}
446445

447446
_renderCover(text, coverOnly, next) {
448-
const el = dom.getNode('.cover');
447+
const el = /** @type {HTMLElement} */ (dom.getNode('.cover'));
449448
const rootElm = document.documentElement;
449+
// TODO this is now unused. What did we break?
450+
// eslint-disable-next-line no-unused-vars
450451
const coverBg = getComputedStyle(rootElm).getPropertyValue('--cover-bg');
451452

452453
dom.getNode('main').classList[coverOnly ? 'add' : 'remove']('hidden');
@@ -470,7 +471,7 @@ export function Render(Base) {
470471
} else {
471472
let path = m[1];
472473

473-
dom.toggleClass(el, 'add', 'has-mask');
474+
el.classList.add('has-mask');
474475
if (!isAbsolutePath(m[1])) {
475476
path = getPath(this.router.getBasePath(), m[1]);
476477
}
@@ -495,12 +496,16 @@ export function Render(Base) {
495496
if (this.coverIsHTML) {
496497
callback(text);
497498
} else {
499+
const compiler = this.compiler;
500+
if (!compiler) {
501+
throw new Error('Compiler is not initialized');
502+
}
498503
prerenderEmbed(
499504
{
500-
compiler: this.compiler,
505+
compiler,
501506
raw: text,
502507
},
503-
tokens => callback(this.compiler.cover(tokens)),
508+
tokens => callback(compiler.cover(tokens)),
504509
);
505510
}
506511
}

src/core/util/core.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,10 @@ export function isPrimitive(value) {
3333

3434
/**
3535
* Performs no operation.
36-
* @void
36+
* @param {...any} args Any arguments ignored.
37+
* @returns {void}
3738
*/
38-
export function noop() {}
39+
export function noop(...args) {}
3940

4041
/**
4142
* Check if value is function

0 commit comments

Comments
 (0)