Skip to content

Commit 515977a

Browse files
committed
Add improved internal types for zwitch
1 parent 651ce97 commit 515977a

21 files changed

+198
-59
lines changed

lib/handle/blockquote.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
/**
22
* @typedef {import('mdast').Blockquote} Blockquote
3-
* @typedef {import('../types.js').Handle} Handle
3+
* @typedef {import('mdast').Root} Root
4+
* @typedef {import('mdast').Content} Content
5+
* @typedef {Root|Content} Node
6+
* @typedef {Extract<Node, import('mdast').Parent>} Parent
7+
* @typedef {import('../types.js').Context} Context
8+
* @typedef {import('../types.js').SafeOptions} SafeOptions
49
* @typedef {import('../util/indent-lines.js').Map} Map
510
*/
611

@@ -9,8 +14,11 @@ import {indentLines} from '../util/indent-lines.js'
914
import {track} from '../util/track.js'
1015

1116
/**
12-
* @type {Handle}
1317
* @param {Blockquote} node
18+
* @param {Parent|undefined} _
19+
* @param {Context} context
20+
* @param {SafeOptions} safeOptions
21+
* @returns {string}
1422
*/
1523
export function blockquote(node, _, context, safeOptions) {
1624
const exit = context.enter('blockquote')

lib/handle/break.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,23 @@
11
/**
2-
* @typedef {import('../types.js').Handle} Handle
32
* @typedef {import('mdast').Break} Break
3+
* @typedef {import('mdast').Root} Root
4+
* @typedef {import('mdast').Content} Content
5+
* @typedef {Root|Content} Node
6+
* @typedef {Extract<Node, import('mdast').Parent>} Parent
7+
* @typedef {import('../types.js').Context} Context
8+
* @typedef {import('../types.js').SafeOptions} SafeOptions
49
*/
510

611
import {patternInScope} from '../util/pattern-in-scope.js'
712

813
/**
9-
* @type {Handle}
1014
* @param {Break} _
15+
* @param {Parent|undefined} _1
16+
* @param {Context} context
17+
* @param {SafeOptions} safeOptions
18+
* @returns {string}
1119
*/
12-
export function hardBreak(_, _1, context, safe) {
20+
export function hardBreak(_, _1, context, safeOptions) {
1321
let index = -1
1422

1523
while (++index < context.unsafe.length) {
@@ -19,7 +27,7 @@ export function hardBreak(_, _1, context, safe) {
1927
context.unsafe[index].character === '\n' &&
2028
patternInScope(context.stack, context.unsafe[index])
2129
) {
22-
return /[ \t]/.test(safe.before) ? '' : ' '
30+
return /[ \t]/.test(safeOptions.before) ? '' : ' '
2331
}
2432
}
2533

lib/handle/code.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
/**
22
* @typedef {import('mdast').Code} Code
3-
* @typedef {import('../types.js').Handle} Handle
4-
* @typedef {import('../types.js').Exit} Exit
3+
* @typedef {import('mdast').Root} Root
4+
* @typedef {import('mdast').Content} Content
5+
* @typedef {Root|Content} Node
6+
* @typedef {Extract<Node, import('mdast').Parent>} Parent
7+
* @typedef {import('../types.js').Context} Context
8+
* @typedef {import('../types.js').SafeOptions} SafeOptions
59
* @typedef {import('../util/indent-lines.js').Map} Map
610
*/
711

@@ -13,8 +17,11 @@ import {safe} from '../util/safe.js'
1317
import {track} from '../util/track.js'
1418

1519
/**
16-
* @type {Handle}
1720
* @param {Code} node
21+
* @param {Parent|undefined} _
22+
* @param {Context} context
23+
* @param {SafeOptions} safeOptions
24+
* @returns {string}
1825
*/
1926
export function code(node, _, context, safeOptions) {
2027
const marker = checkFence(context)

lib/handle/definition.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
/**
22
* @typedef {import('mdast').Definition} Definition
3-
* @typedef {import('../types.js').Handle} Handle
3+
* @typedef {import('mdast').Root} Root
4+
* @typedef {import('mdast').Content} Content
5+
* @typedef {Root|Content} Node
6+
* @typedef {Extract<Node, import('mdast').Parent>} Parent
7+
* @typedef {import('../types.js').Context} Context
8+
* @typedef {import('../types.js').SafeOptions} SafeOptions
49
*/
510

611
import {association} from '../util/association.js'
@@ -9,8 +14,11 @@ import {safe} from '../util/safe.js'
914
import {track} from '../util/track.js'
1015

1116
/**
12-
* @type {Handle}
1317
* @param {Definition} node
18+
* @param {Parent|undefined} _
19+
* @param {Context} context
20+
* @param {SafeOptions} safeOptions
21+
* @returns {string}
1422
*/
1523
export function definition(node, _, context, safeOptions) {
1624
const quote = checkQuote(context)

lib/handle/emphasis.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
/**
22
* @typedef {import('mdast').Emphasis} Emphasis
3-
* @typedef {import('../types.js').Handle} Handle
3+
* @typedef {import('mdast').Root} Root
4+
* @typedef {import('mdast').Content} Content
5+
* @typedef {Root|Content} Node
6+
* @typedef {Extract<Node, import('mdast').Parent>} Parent
7+
* @typedef {import('../types.js').Context} Context
8+
* @typedef {import('../types.js').SafeOptions} SafeOptions
49
*/
510

611
import {checkEmphasis} from '../util/check-emphasis.js'
@@ -14,8 +19,11 @@ emphasis.peek = emphasisPeek
1419
// There’s no way around that though, except for injecting zero-width stuff.
1520
// Do we need to safeguard against that?
1621
/**
17-
* @type {Handle}
1822
* @param {Emphasis} node
23+
* @param {Parent|undefined} _
24+
* @param {Context} context
25+
* @param {SafeOptions} safeOptions
26+
* @returns {string}
1927
*/
2028
export function emphasis(node, _, context, safeOptions) {
2129
const marker = checkEmphasis(context)
@@ -35,8 +43,10 @@ export function emphasis(node, _, context, safeOptions) {
3543
}
3644

3745
/**
38-
* @type {Handle}
3946
* @param {Emphasis} _
47+
* @param {Parent|undefined} _1
48+
* @param {Context} context
49+
* @returns {string}
4050
*/
4151
function emphasisPeek(_, _1, context) {
4252
return context.options.emphasis || '*'

lib/handle/heading.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
11
/**
22
* @typedef {import('mdast').Heading} Heading
3-
* @typedef {import('../types.js').Handle} Handle
4-
* @typedef {import('../types.js').Exit} Exit
3+
* @typedef {import('mdast').Root} Root
4+
* @typedef {import('mdast').Content} Content
5+
* @typedef {Root|Content} Node
6+
* @typedef {Extract<Node, import('mdast').Parent>} Parent
7+
* @typedef {import('../types.js').Context} Context
8+
* @typedef {import('../types.js').SafeOptions} SafeOptions
59
*/
610

711
import {formatHeadingAsSetext} from '../util/format-heading-as-setext.js'
812
import {containerPhrasing} from '../util/container-phrasing.js'
913
import {track} from '../util/track.js'
1014

1115
/**
12-
* @type {Handle}
1316
* @param {Heading} node
17+
* @param {Parent|undefined} _
18+
* @param {Context} context
19+
* @param {SafeOptions} safeOptions
20+
* @returns {string}
1421
*/
1522
export function heading(node, _, context, safeOptions) {
1623
const rank = Math.max(Math.min(6, node.depth || 1), 1)

lib/handle/html.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
11
/**
22
* @typedef {import('mdast').HTML} HTML
3-
* @typedef {import('../types.js').Handle} Handle
3+
* @typedef {import('mdast').Root} Root
4+
* @typedef {import('mdast').Content} Content
5+
* @typedef {Root|Content} Node
46
*/
57

68
html.peek = htmlPeek
79

810
/**
9-
* @type {Handle}
1011
* @param {HTML} node
12+
* @returns {string}
1113
*/
1214
export function html(node) {
1315
return node.value || ''
1416
}
1517

1618
/**
17-
* @type {Handle}
19+
* @returns {string}
1820
*/
1921
function htmlPeek() {
2022
return '<'

lib/handle/image-reference.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
/**
22
* @typedef {import('mdast').ImageReference} ImageReference
3-
* @typedef {import('../types.js').Handle} Handle
3+
* @typedef {import('mdast').Root} Root
4+
* @typedef {import('mdast').Content} Content
5+
* @typedef {Root|Content} Node
6+
* @typedef {Extract<Node, import('mdast').Parent>} Parent
7+
* @typedef {import('../types.js').Context} Context
8+
* @typedef {import('../types.js').SafeOptions} SafeOptions
49
*/
510

611
import {association} from '../util/association.js'
@@ -10,8 +15,11 @@ import {track} from '../util/track.js'
1015
imageReference.peek = imageReferencePeek
1116

1217
/**
13-
* @type {Handle}
1418
* @param {ImageReference} node
19+
* @param {Parent|undefined} _
20+
* @param {Context} context
21+
* @param {SafeOptions} safeOptions
22+
* @returns {string}
1523
*/
1624
export function imageReference(node, _, context, safeOptions) {
1725
const type = node.referenceType
@@ -57,7 +65,7 @@ export function imageReference(node, _, context, safeOptions) {
5765
}
5866

5967
/**
60-
* @type {Handle}
68+
* @returns {string}
6169
*/
6270
function imageReferencePeek() {
6371
return '!'

lib/handle/image.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
/**
22
* @typedef {import('mdast').Image} Image
3-
* @typedef {import('../types.js').Handle} Handle
3+
* @typedef {import('mdast').Root} Root
4+
* @typedef {import('mdast').Content} Content
5+
* @typedef {Root|Content} Node
6+
* @typedef {Extract<Node, import('mdast').Parent>} Parent
7+
* @typedef {import('../types.js').Context} Context
8+
* @typedef {import('../types.js').SafeOptions} SafeOptions
49
*/
510

611
import {checkQuote} from '../util/check-quote.js'
@@ -10,8 +15,11 @@ import {track} from '../util/track.js'
1015
image.peek = imagePeek
1116

1217
/**
13-
* @type {Handle}
1418
* @param {Image} node
19+
* @param {Parent|undefined} _
20+
* @param {Context} context
21+
* @param {SafeOptions} safeOptions
22+
* @returns {string}
1523
*/
1624
export function image(node, _, context, safeOptions) {
1725
const quote = checkQuote(context)
@@ -74,7 +82,7 @@ export function image(node, _, context, safeOptions) {
7482
}
7583

7684
/**
77-
* @type {Handle}
85+
* @returns {string}
7886
*/
7987
function imagePeek() {
8088
return '!'

lib/handle/inline-code.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
/**
22
* @typedef {import('mdast').InlineCode} InlineCode
3-
* @typedef {import('../types.js').Handle} Handle
3+
* @typedef {import('mdast').Root} Root
4+
* @typedef {import('mdast').Content} Content
5+
* @typedef {Root|Content} Node
6+
* @typedef {Extract<Node, import('mdast').Parent>} Parent
7+
* @typedef {import('../types.js').Context} Context
48
*/
59

610
import {patternCompile} from '../util/pattern-compile.js'
711

812
inlineCode.peek = inlineCodePeek
913

1014
/**
11-
* @type {Handle}
1215
* @param {InlineCode} node
16+
* @param {Parent|undefined} _
17+
* @param {Context} context
18+
* @returns {string}
1319
*/
1420
export function inlineCode(node, _, context) {
1521
let value = node.value || ''
@@ -69,7 +75,7 @@ export function inlineCode(node, _, context) {
6975
}
7076

7177
/**
72-
* @type {Handle}
78+
* @returns {string}
7379
*/
7480
function inlineCodePeek() {
7581
return '`'

lib/handle/link-reference.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
/**
22
* @typedef {import('mdast').LinkReference} LinkReference
3-
* @typedef {import('../types.js').Handle} Handle
3+
* @typedef {import('mdast').Root} Root
4+
* @typedef {import('mdast').Content} Content
5+
* @typedef {Root|Content} Node
6+
* @typedef {Extract<Node, import('mdast').Parent>} Parent
7+
* @typedef {import('../types.js').Context} Context
8+
* @typedef {import('../types.js').SafeOptions} SafeOptions
49
*/
510

611
import {association} from '../util/association.js'
@@ -11,8 +16,11 @@ import {track} from '../util/track.js'
1116
linkReference.peek = linkReferencePeek
1217

1318
/**
14-
* @type {Handle}
1519
* @param {LinkReference} node
20+
* @param {Parent|undefined} _
21+
* @param {Context} context
22+
* @param {SafeOptions} safeOptions
23+
* @returns {string}
1624
*/
1725
export function linkReference(node, _, context, safeOptions) {
1826
const type = node.referenceType
@@ -58,7 +66,7 @@ export function linkReference(node, _, context, safeOptions) {
5866
}
5967

6068
/**
61-
* @type {Handle}
69+
* @returns {string}
6270
*/
6371
function linkReferencePeek() {
6472
return '['

lib/handle/link.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
/**
22
* @typedef {import('mdast').Link} Link
3-
* @typedef {import('../types.js').Handle} Handle
3+
* @typedef {import('mdast').Root} Root
4+
* @typedef {import('mdast').Content} Content
5+
* @typedef {Root|Content} Node
6+
* @typedef {Extract<Node, import('mdast').Parent>} Parent
7+
* @typedef {import('../types.js').Context} Context
8+
* @typedef {import('../types.js').SafeOptions} SafeOptions
49
* @typedef {import('../types.js').Exit} Exit
510
*/
611

@@ -13,8 +18,11 @@ import {track} from '../util/track.js'
1318
link.peek = linkPeek
1419

1520
/**
16-
* @type {Handle}
1721
* @param {Link} node
22+
* @param {Parent|undefined} _
23+
* @param {Context} context
24+
* @param {SafeOptions} safeOptions
25+
* @returns {string}
1826
*/
1927
export function link(node, _, context, safeOptions) {
2028
const quote = checkQuote(context)
@@ -104,8 +112,10 @@ export function link(node, _, context, safeOptions) {
104112
}
105113

106114
/**
107-
* @type {Handle}
108115
* @param {Link} node
116+
* @param {Parent|undefined} _
117+
* @param {Context} context
118+
* @returns {string}
109119
*/
110120
function linkPeek(node, _, context) {
111121
return formatLinkAsAutolink(node, context) ? '<' : '['

0 commit comments

Comments
 (0)