Skip to content

Commit 65934c1

Browse files
authored
fix: remove unknown from walkTokens return types (#2955)
* fix: remove unknown from walkTokens return types * build before testing types
1 parent 5bc2fdb commit 65934c1

File tree

4 files changed

+11
-7
lines changed

4 files changed

+11
-7
lines changed

Diff for: .github/workflows/tests.yml

+3
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ jobs:
4949
run: npm run test:lint
5050

5151
Build:
52+
name: Build and Test Types
5253
runs-on: ubuntu-latest
5354
steps:
5455
- name: Checkout Code
@@ -61,6 +62,8 @@ jobs:
6162
run: npm ci
6263
- name: Build 🗜️
6364
run: npm run build
65+
- name: Run Types Tests 👩🏽‍💻
66+
run: npm run test:types
6467

6568
Release:
6669
permissions:

Diff for: src/Instance.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';
1414
import type { Token, Tokens, TokensList } from './Tokens.ts';
1515

1616
export type ResultCallback = (error: Error | null, parseResult?: string) => undefined | void;
17+
export type MaybePromise = void | Promise<void>;
1718

1819
type UnknownFunction = (...args: unknown[]) => unknown;
1920
type GenericRendererFunction = (...args: unknown[]) => string | false;
@@ -42,8 +43,8 @@ export class Marked {
4243
/**
4344
* Run callback for every token
4445
*/
45-
walkTokens <T = void>(tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {
46-
let values: T[] = [];
46+
walkTokens(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) {
47+
let values: MaybePromise[] = [];
4748
for (const token of tokens) {
4849
values = values.concat(callback.call(this, token));
4950
switch (token.type) {
@@ -215,7 +216,7 @@ export class Marked {
215216
const walkTokens = this.defaults.walkTokens;
216217
const packWalktokens = pack.walkTokens;
217218
opts.walkTokens = function(token) {
218-
let values: Array<Promise<void> | void | unknown> = [];
219+
let values: MaybePromise[] = [];
219220
values.push(packWalktokens.call(this, token));
220221
if (walkTokens) {
221222
values = values.concat(walkTokens.call(this, token));

Diff for: src/MarkedOptions.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ export interface MarkedExtension {
173173
* Each token is passed by reference so updates are persisted when passed to the parser.
174174
* The return value of the function is ignored.
175175
*/
176-
walkTokens?: ((token: Token) => void | unknown | Promise<void>) | undefined | null;
176+
walkTokens?: ((token: Token) => void | Promise<void>) | undefined | null;
177177
/**
178178
* Generate closing slash for self-closing tags (<br/> instead of <br>)
179179
* @deprecated Deprecated in v5.0.0 use marked-xhtml to emit self-closing HTML tags for void elements (<br/>, <img/>, etc.) with a "/" as required by XHTML.
@@ -213,5 +213,5 @@ export interface MarkedOptions extends Omit<MarkedExtension, 'renderer' | 'token
213213
/**
214214
* walkTokens function returns array of values for Promise.all
215215
*/
216-
walkTokens?: null | ((token: Token) => void | (unknown | Promise<void>)[]);
216+
walkTokens?: null | ((token: Token) => void | Promise<void> | (void | Promise<void>)[]);
217217
}

Diff for: src/marked.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import {
1313
} from './defaults.ts';
1414
import type { MarkedExtension, MarkedOptions } from './MarkedOptions.ts';
1515
import type { Token, TokensList } from './Tokens.ts';
16-
import type { ResultCallback } from './Instance.ts';
16+
import type { ResultCallback, MaybePromise } from './Instance.ts';
1717

1818
const markedInstance = new Marked();
1919

@@ -94,7 +94,7 @@ marked.use = function(...args: MarkedExtension[]) {
9494
* Run callback for every token
9595
*/
9696

97-
marked.walkTokens = function <T = void>(tokens: Token[] | TokensList, callback: (token: Token) => T | T[]) {
97+
marked.walkTokens = function(tokens: Token[] | TokensList, callback: (token: Token) => MaybePromise | MaybePromise[]) {
9898
return markedInstance.walkTokens(tokens, callback);
9999
};
100100

0 commit comments

Comments
 (0)