Skip to content

Commit 5cd381b

Browse files
committed
Fix types for TS 4.9
1 parent 229bce0 commit 5cd381b

File tree

3 files changed

+134
-46
lines changed

3 files changed

+134
-46
lines changed

lib/complex-types.d.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,64 @@
1-
import {Node} from 'unist'
2-
import {Parent, Literal, BlockContent, PhrasingContent} from 'mdast'
3-
import {Program} from 'estree-jsx'
1+
import type {Node} from 'unist'
2+
import type {Parent, Literal, BlockContent, PhrasingContent} from 'mdast'
3+
import type {Program} from 'estree-jsx'
44

5+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
56
export interface MdxJsxAttributeValueExpression extends Literal {
67
type: 'mdxJsxAttributeValueExpression'
78
data?: {estree?: Program} & Literal['data']
89
}
910

11+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
1012
export interface MdxJsxAttribute extends Node {
1113
type: 'mdxJsxAttribute'
1214
name: string
1315
value?: MdxJsxAttributeValueExpression | string | null
1416
}
1517

18+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
1619
export interface MdxJsxExpressionAttribute extends Literal {
1720
type: 'mdxJsxExpressionAttribute'
1821
data?: {estree?: Program} & Literal['data']
1922
}
2023

24+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
2125
interface MdxJsxElementFields {
2226
name: string | null
2327
attributes: Array<MdxJsxAttribute | MdxJsxExpressionAttribute>
2428
}
2529

30+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
2631
export interface MdxJsxFlowElement extends MdxJsxElementFields, Parent {
2732
type: 'mdxJsxFlowElement'
2833
children: BlockContent[]
2934
}
3035

36+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
3137
export interface MdxJsxTextElement extends MdxJsxElementFields, Parent {
3238
type: 'mdxJsxTextElement'
3339
children: PhrasingContent[]
3440
}
3541

3642
declare module 'mdast' {
43+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
3744
interface StaticPhrasingContentMap {
3845
mdxJsxTextElement: MdxJsxTextElement
3946
}
4047

48+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
4149
interface BlockContentMap {
4250
mdxJsxFlowElement: MdxJsxFlowElement
4351
}
4452
}
4553

4654
declare module 'hast' {
55+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
4756
interface RootContentMap {
4857
mdxJsxTextElement: MdxJsxTextElement
4958
mdxJsxFlowElement: MdxJsxFlowElement
5059
}
5160

61+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
5262
interface ElementContentMap {
5363
mdxJsxTextElement: MdxJsxTextElement
5464
mdxJsxFlowElement: MdxJsxFlowElement

lib/index.js

Lines changed: 109 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
/**
22
* @typedef {import('mdast').Literal} Literal
33
* @typedef {import('mdast').Parent} Parent
4+
* @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext
45
* @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension
56
* @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle
67
* @typedef {import('mdast-util-from-markdown').Token} Token
8+
* @typedef {import('mdast-util-from-markdown').OnEnterError} OnEnterError
9+
* @typedef {import('mdast-util-from-markdown').OnExitError} OnExitError
710
* @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension
811
* @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle
912
* @typedef {import('mdast-util-to-markdown').Map} ToMarkdownMap
10-
* @typedef {import('mdast-util-from-markdown').OnEnterError} OnEnterError
11-
* @typedef {import('mdast-util-from-markdown').OnExitError} OnExitError
1213
* @typedef {import('estree-jsx').Program} Program
1314
* @typedef {import('./complex-types.js').MdxJsxAttributeValueExpression} MdxJsxAttributeValueExpression
1415
* @typedef {import('./complex-types.js').MdxJsxAttribute} MdxJsxAttribute
@@ -100,28 +101,43 @@ export function mdxJsxFromMarkdown() {
100101
}
101102
}
102103

103-
/** @type {FromMarkdownHandle} */
104+
/**
105+
* @this {CompileContext}
106+
* @type {FromMarkdownHandle}
107+
*/
104108
function buffer() {
105109
this.buffer()
106110
}
107111

108-
/** @type {FromMarkdownHandle} */
112+
/**
113+
* @this {CompileContext}
114+
* @type {FromMarkdownHandle}
115+
*/
109116
function data(token) {
110117
this.config.enter.data.call(this, token)
111118
this.config.exit.data.call(this, token)
112119
}
113120

114-
/** @type {FromMarkdownHandle} */
121+
/**
122+
* @this {CompileContext}
123+
* @type {FromMarkdownHandle}
124+
*/
115125
function enterMdxJsxTag(token) {
116126
/** @type {Tag} */
117127
const tag = {name: null, attributes: [], start: token.start, end: token.end}
128+
// @ts-expect-error: to do: register.
118129
if (!this.getData('mdxJsxTagStack')) this.setData('mdxJsxTagStack', [])
130+
// @ts-expect-error: to do: register.
119131
this.setData('mdxJsxTag', tag)
120132
this.buffer()
121133
}
122134

123-
/** @type {FromMarkdownHandle} */
135+
/**
136+
* @this {CompileContext}
137+
* @type {FromMarkdownHandle}
138+
*/
124139
function enterMdxJsxTagClosingMarker(token) {
140+
// @ts-expect-error: to do: register.
125141
const stack = /** @type {Tag[]} */ (this.getData('mdxJsxTagStack'))
126142

127143
if (stack.length === 0) {
@@ -133,8 +149,12 @@ export function mdxJsxFromMarkdown() {
133149
}
134150
}
135151

136-
/** @type {FromMarkdownHandle} */
152+
/**
153+
* @this {CompileContext}
154+
* @type {FromMarkdownHandle}
155+
*/
137156
function enterMdxJsxTagAnyAttribute(token) {
157+
// @ts-expect-error: to do: register.
138158
const tag = /** @type {Tag} */ (this.getData('mdxJsxTag'))
139159

140160
if (tag.close) {
@@ -146,8 +166,12 @@ export function mdxJsxFromMarkdown() {
146166
}
147167
}
148168

149-
/** @type {FromMarkdownHandle} */
169+
/**
170+
* @this {CompileContext}
171+
* @type {FromMarkdownHandle}
172+
*/
150173
function enterMdxJsxTagSelfClosingMarker(token) {
174+
// @ts-expect-error: to do: register.
151175
const tag = /** @type {Tag} */ (this.getData('mdxJsxTag'))
152176

153177
if (tag.close) {
@@ -159,47 +183,75 @@ export function mdxJsxFromMarkdown() {
159183
}
160184
}
161185

162-
/** @type {FromMarkdownHandle} */
186+
/**
187+
* @this {CompileContext}
188+
* @type {FromMarkdownHandle}
189+
*/
163190
function exitMdxJsxTagClosingMarker() {
191+
// @ts-expect-error: to do: register.
164192
const tag = /** @type {Tag} */ (this.getData('mdxJsxTag'))
165193
tag.close = true
166194
}
167195

168-
/** @type {FromMarkdownHandle} */
196+
/**
197+
* @this {CompileContext}
198+
* @type {FromMarkdownHandle}
199+
*/
169200
function exitMdxJsxTagNamePrimary(token) {
201+
// @ts-expect-error: to do: register.
170202
const tag = /** @type {Tag} */ (this.getData('mdxJsxTag'))
171203
tag.name = this.sliceSerialize(token)
172204
}
173205

174-
/** @type {FromMarkdownHandle} */
206+
/**
207+
* @this {CompileContext}
208+
* @type {FromMarkdownHandle}
209+
*/
175210
function exitMdxJsxTagNameMember(token) {
211+
// @ts-expect-error: to do: register.
176212
const tag = /** @type {Tag} */ (this.getData('mdxJsxTag'))
177213
tag.name += '.' + this.sliceSerialize(token)
178214
}
179215

180-
/** @type {FromMarkdownHandle} */
216+
/**
217+
* @this {CompileContext}
218+
* @type {FromMarkdownHandle}
219+
*/
181220
function exitMdxJsxTagNameLocal(token) {
221+
// @ts-expect-error: to do: register.
182222
const tag = /** @type {Tag} */ (this.getData('mdxJsxTag'))
183223
tag.name += ':' + this.sliceSerialize(token)
184224
}
185225

186-
/** @type {FromMarkdownHandle} */
226+
/**
227+
* @this {CompileContext}
228+
* @type {FromMarkdownHandle}
229+
*/
187230
function enterMdxJsxTagAttribute(token) {
231+
// @ts-expect-error: to do: register.
188232
const tag = /** @type {Tag} */ (this.getData('mdxJsxTag'))
189233
enterMdxJsxTagAnyAttribute.call(this, token)
190234
tag.attributes.push({type: 'mdxJsxAttribute', name: '', value: null})
191235
}
192236

193-
/** @type {FromMarkdownHandle} */
237+
/**
238+
* @this {CompileContext}
239+
* @type {FromMarkdownHandle}
240+
*/
194241
function enterMdxJsxTagExpressionAttribute(token) {
242+
// @ts-expect-error: to do: register.
195243
const tag = /** @type {Tag} */ (this.getData('mdxJsxTag'))
196244
enterMdxJsxTagAnyAttribute.call(this, token)
197245
tag.attributes.push({type: 'mdxJsxExpressionAttribute', value: ''})
198246
this.buffer()
199247
}
200248

201-
/** @type {FromMarkdownHandle} */
249+
/**
250+
* @this {CompileContext}
251+
* @type {FromMarkdownHandle}
252+
*/
202253
function exitMdxJsxTagExpressionAttribute(token) {
254+
// @ts-expect-error: to do: register.
203255
const tag = /** @type {Tag} */ (this.getData('mdxJsxTag'))
204256
const tail = /** @type {MdxJsxExpressionAttribute} */ (
205257
tag.attributes[tag.attributes.length - 1]
@@ -215,35 +267,51 @@ export function mdxJsxFromMarkdown() {
215267
}
216268
}
217269

218-
/** @type {FromMarkdownHandle} */
270+
/**
271+
* @this {CompileContext}
272+
* @type {FromMarkdownHandle}
273+
*/
219274
function exitMdxJsxTagAttributeNamePrimary(token) {
275+
// @ts-expect-error: to do: register.
220276
const tag = /** @type {Tag} */ (this.getData('mdxJsxTag'))
221277
const node = /** @type {MdxJsxAttribute} */ (
222278
tag.attributes[tag.attributes.length - 1]
223279
)
224280
node.name = this.sliceSerialize(token)
225281
}
226282

227-
/** @type {FromMarkdownHandle} */
283+
/**
284+
* @this {CompileContext}
285+
* @type {FromMarkdownHandle}
286+
*/
228287
function exitMdxJsxTagAttributeNameLocal(token) {
288+
// @ts-expect-error: to do: register.
229289
const tag = /** @type {Tag} */ (this.getData('mdxJsxTag'))
230290
const node = /** @type {MdxJsxAttribute} */ (
231291
tag.attributes[tag.attributes.length - 1]
232292
)
233293
node.name += ':' + this.sliceSerialize(token)
234294
}
235295

236-
/** @type {FromMarkdownHandle} */
296+
/**
297+
* @this {CompileContext}
298+
* @type {FromMarkdownHandle}
299+
*/
237300
function exitMdxJsxTagAttributeValueLiteral() {
301+
// @ts-expect-error: to do: register.
238302
const tag = /** @type {Tag} */ (this.getData('mdxJsxTag'))
239303
tag.attributes[tag.attributes.length - 1].value = parseEntities(
240304
this.resume(),
241305
{nonTerminated: false}
242306
)
243307
}
244308

245-
/** @type {FromMarkdownHandle} */
309+
/**
310+
* @this {CompileContext}
311+
* @type {FromMarkdownHandle}
312+
*/
246313
function exitMdxJsxTagAttributeValueExpression(token) {
314+
// @ts-expect-error: to do: register.
247315
const tag = /** @type {Tag} */ (this.getData('mdxJsxTag'))
248316
const tail = /** @type {MdxJsxAttribute} */ (
249317
tag.attributes[tag.attributes.length - 1]
@@ -261,16 +329,25 @@ export function mdxJsxFromMarkdown() {
261329
tail.value = node
262330
}
263331

264-
/** @type {FromMarkdownHandle} */
332+
/**
333+
* @this {CompileContext}
334+
* @type {FromMarkdownHandle}
335+
*/
265336
function exitMdxJsxTagSelfClosingMarker() {
337+
// @ts-expect-error: to do: register.
266338
const tag = /** @type {Tag} */ (this.getData('mdxJsxTag'))
267339

268340
tag.selfClosing = true
269341
}
270342

271-
/** @type {FromMarkdownHandle} */
343+
/**
344+
* @this {CompileContext}
345+
* @type {FromMarkdownHandle}
346+
*/
272347
function exitMdxJsxTag(token) {
348+
// @ts-expect-error: to do: register.
273349
const tag = /** @type {Tag} */ (this.getData('mdxJsxTag'))
350+
// @ts-expect-error: to do: register.
274351
const stack = /** @type {Tag[]} */ (this.getData('mdxJsxTagStack'))
275352
const tail = stack[stack.length - 1]
276353

@@ -316,8 +393,12 @@ export function mdxJsxFromMarkdown() {
316393
}
317394
}
318395

319-
/** @type {OnEnterError} */
396+
/**
397+
* @this {CompileContext}
398+
* @type {OnEnterError}
399+
*/
320400
function onErrorRightIsTag(closing, open) {
401+
// @ts-expect-error: to do: register.
321402
const tag = /** @type {Tag} */ (this.getData('mdxJsxTag'))
322403
const place = closing ? ' before the end of `' + closing.type + '`' : ''
323404
const position = closing
@@ -336,8 +417,12 @@ export function mdxJsxFromMarkdown() {
336417
)
337418
}
338419

339-
/** @type {OnExitError} */
420+
/**
421+
* @this {CompileContext}
422+
* @type {OnExitError}
423+
*/
340424
function onErrorLeftIsTag(a, b) {
425+
// @ts-expect-error: to do: register.
341426
const tag = /** @type {Tag} */ (this.getData('mdxJsxTag'))
342427
throw new VFileMessage(
343428
'Expected the closing tag `' +
@@ -414,6 +499,7 @@ export function mdxJsxToMarkdown(options = {}) {
414499
const tracker = track(safeOptions)
415500
const selfClosing =
416501
node.name && (!node.children || node.children.length === 0)
502+
// @ts-expect-error: to do: register.
417503
const exit = context.enter(node.type)
418504
let index = -1
419505
/** @type {Array<string>} */

0 commit comments

Comments
 (0)