Browse Source

Migrate to TS (pass 1, rename)

pull/1197/head
Vitaly Puzrin 3 months ago
parent
commit
2b49966fa6
  1. 2
      README.md
  2. 2
      benchmark/implementations/current-commonmark/index.mjs
  3. 2
      benchmark/implementations/current/index.mjs
  4. 2
      benchmark/profile.mjs
  5. 12
      docs/architecture.md
  6. 4
      docs/development.md
  7. 2
      package-lock.json
  8. 2
      package.json
  9. 0
      src/common/html_blocks.ts
  10. 0
      src/common/html_re.ts
  11. 0
      src/common/utils.ts
  12. 11
      src/helpers/index.mjs
  13. 11
      src/helpers/index.ts
  14. 2
      src/helpers/parse_link_destination.ts
  15. 0
      src/helpers/parse_link_label.ts
  16. 2
      src/helpers/parse_link_title.ts
  17. 1
      src/index.mjs
  18. 1
      src/index.ts
  19. 42
      src/markdownit.ts
  20. 1
      src/package.json
  21. 28
      src/parser_block.ts
  22. 18
      src/parser_core.ts
  23. 36
      src/parser_inline.ts
  24. 0
      src/presets/commonmark.ts
  25. 0
      src/presets/default.ts
  26. 0
      src/presets/zero.ts
  27. 4
      src/renderer.ts
  28. 0
      src/ruler.ts
  29. 2
      src/rules_block/blockquote.ts
  30. 0
      src/rules_block/code.ts
  31. 0
      src/rules_block/fence.ts
  32. 2
      src/rules_block/heading.ts
  33. 2
      src/rules_block/hr.ts
  34. 4
      src/rules_block/html_block.ts
  35. 2
      src/rules_block/lheading.ts
  36. 2
      src/rules_block/list.ts
  37. 2
      src/rules_block/paragraph.ts
  38. 2
      src/rules_block/reference.ts
  39. 4
      src/rules_block/state_block.ts
  40. 2
      src/rules_block/table.ts
  41. 0
      src/rules_core/block.ts
  42. 0
      src/rules_core/inline.ts
  43. 2
      src/rules_core/linkify.ts
  44. 0
      src/rules_core/normalize.ts
  45. 0
      src/rules_core/replacements.ts
  46. 2
      src/rules_core/smartquotes.ts
  47. 2
      src/rules_core/state_core.ts
  48. 0
      src/rules_core/text_join.ts
  49. 0
      src/rules_inline/autolink.ts
  50. 0
      src/rules_inline/backticks.ts
  51. 0
      src/rules_inline/balance_pairs.ts
  52. 0
      src/rules_inline/emphasis.ts
  53. 2
      src/rules_inline/entity.ts
  54. 2
      src/rules_inline/escape.ts
  55. 0
      src/rules_inline/fragments_join.ts
  56. 2
      src/rules_inline/html_inline.ts
  57. 2
      src/rules_inline/image.ts
  58. 2
      src/rules_inline/link.ts
  59. 0
      src/rules_inline/linkify.ts
  60. 2
      src/rules_inline/newline.ts
  61. 4
      src/rules_inline/state_inline.ts
  62. 0
      src/rules_inline/strikethrough.ts
  63. 0
      src/rules_inline/text.ts
  64. 0
      src/token.ts
  65. 8
      support/build-dist.mjs
  66. 2
      support/demo_template/index.mjs
  67. 2
      support/specsplit.mjs
  68. 2
      test/cmspec/commonmark.test.mjs
  69. 2
      test/markdown-it/markdown-it.test.mjs
  70. 2
      test/markdown-it/misc.test.mjs
  71. 2
      test/markdown-it/pathological.test.mjs
  72. 2
      test/markdown-it/ruler.test.mjs
  73. 2
      test/markdown-it/token.test.mjs
  74. 2
      test/markdown-it/utils.test.mjs
  75. 11
      tsconfig.json

2
README.md

@ -123,7 +123,7 @@ const md = markdownit({
linkify: false,
// Enable some language-neutral replacement + quotes beautification
// For the full list of replacements, see https://github.com/markdown-it/markdown-it/blob/master/src/rules_core/replacements.mjs
// For the full list of replacements, see https://github.com/markdown-it/markdown-it/blob/master/src/rules_core/replacements.ts
typographer: false,
// Double + single quotes replacement pairs, when typographer enabled,

2
benchmark/implementations/current-commonmark/index.mjs

@ -1,4 +1,4 @@
import markdownit from '../../../src/index.mjs'
import markdownit from '../../../src/index.ts'
const md = markdownit('commonmark')

2
benchmark/implementations/current/index.mjs

@ -1,4 +1,4 @@
import markdownit from '../../../src/index.mjs'
import markdownit from '../../../src/index.ts'
const md = markdownit({
html: true,

2
benchmark/profile.mjs

@ -2,7 +2,7 @@
/* eslint no-console:0 */
import { readFileSync } from 'fs'
import markdownit from '../src/index.mjs'
import markdownit from '../src/index.ts'
const md = markdownit({
html: true,

12
docs/architecture.md

@ -48,7 +48,7 @@ The difference is simple:
- There are special token objects, "inline containers", that have nested tokens.
These are sequences with inline markup, such as bold, italic, text, etc.
See the [`Token`](https://github.com/markdown-it/markdown-it/blob/master/src/token.mjs) class
See the [`Token`](https://github.com/markdown-it/markdown-it/blob/master/src/token.ts) class
for details about each token's content.
In total, a token stream is:
@ -66,8 +66,8 @@ into an AST.
More details about tokens:
- [`Renderer` source](https://github.com/markdown-it/markdown-it/blob/master/src/renderer.mjs)
- [`Token` source](https://github.com/markdown-it/markdown-it/blob/master/src/token.mjs)
- [`Renderer` source](https://github.com/markdown-it/markdown-it/blob/master/src/renderer.ts)
- [`Token` source](https://github.com/markdown-it/markdown-it/blob/master/src/token.ts)
- [Live demo](https://markdown-it.github.io/) - type your text and click the `debug` tab.
@ -179,8 +179,8 @@ And somewhere in between, you can apply additional transformations.
Source code for each chain can be seen in the following files:
- [`parser_core.mjs`](https://github.com/markdown-it/markdown-it/blob/master/src/parser_core.mjs)
- [`parser_block.mjs`](https://github.com/markdown-it/markdown-it/blob/master/src/parser_block.mjs)
- [`parser_inline.mjs`](https://github.com/markdown-it/markdown-it/blob/master/src/parser_inline.mjs)
- [`parser_core.mjs`](https://github.com/markdown-it/markdown-it/blob/master/src/parser_core.ts)
- [`parser_block.mjs`](https://github.com/markdown-it/markdown-it/blob/master/src/parser_block.ts)
- [`parser_inline.mjs`](https://github.com/markdown-it/markdown-it/blob/master/src/parser_inline.ts)
Also, you can change output directly in a [`Renderer`](https://markdown-it.github.io/markdown-it/#Renderer) for many simple cases.

4
docs/development.md

@ -64,14 +64,14 @@ in a more convenient way.
The right sequence is to split text to several tokens and add link tokens in between.
The result will be: `text` + `link_open` + `text` + `link_close` + `text`.
See implementations of [linkify](https://github.com/markdown-it/markdown-it/blob/master/src/rules_core/linkify.mjs) and [emoji](https://github.com/markdown-it/markdown-it-emoji/blob/master/lib/replace.mjs) - those do text token splits.
See implementations of [linkify](https://github.com/markdown-it/markdown-it/blob/master/src/rules_core/linkify.ts) and [emoji](https://github.com/markdown-it/markdown-it-emoji/blob/master/lib/replace.mjs) - those do text token splits.
__Note.__ Don't try to replace text with HTML markup! That's not secure.
#### Why my inline rule is not executed?
The inline parser skips pieces of texts to optimize speed. It stops only on [a small set of chars](https://github.com/markdown-it/markdown-it/blob/master/src/rules_inline/text.mjs), which can be tokens. We did not made this list extensible for performance reasons too.
The inline parser skips pieces of texts to optimize speed. It stops only on [a small set of chars](https://github.com/markdown-it/markdown-it/blob/master/src/rules_inline/text.ts), which can be tokens. We did not made this list extensible for performance reasons too.
If you are absolutely sure that something important is missing there - create a
ticket and we will consider adding it as a new charcode.

2
package-lock.json

@ -47,6 +47,7 @@
"ndoc": "^6.0.1",
"neostandard": "^0.13.0",
"tinybench": "^6.0.2",
"typescript": "^6.0.3",
"vite": "^8.1.5",
"vite-plugin-singlefile": "^2.3.3"
}
@ -6417,7 +6418,6 @@
"integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==",
"dev": true,
"license": "Apache-2.0",
"peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"

2
package.json

@ -40,6 +40,7 @@
},
"scripts": {
"lint": "eslint .",
"type-check": "tsc --noEmit",
"test": "npm run lint && npm run build && npm run test:cmspec && npm run test:markdown-it && npm run test:build",
"test:cmspec": "node --test --test-reporter=dot test/cmspec/**/*.test.mjs",
"test:markdown-it": "node --test test/markdown-it/**/*.test.mjs",
@ -88,6 +89,7 @@
"ndoc": "^6.0.1",
"neostandard": "^0.13.0",
"tinybench": "^6.0.2",
"typescript": "^6.0.3",
"vite": "^8.1.5",
"vite-plugin-singlefile": "^2.3.3"
}

0
src/common/html_blocks.mjs → src/common/html_blocks.ts

0
src/common/html_re.mjs → src/common/html_re.ts

0
src/common/utils.mjs → src/common/utils.ts

11
src/helpers/index.mjs

@ -1,11 +0,0 @@
// Just a shortcut for bulk export
import parseLinkLabel from './parse_link_label.mjs'
import parseLinkDestination from './parse_link_destination.mjs'
import parseLinkTitle from './parse_link_title.mjs'
export {
parseLinkLabel,
parseLinkDestination,
parseLinkTitle
}

11
src/helpers/index.ts

@ -0,0 +1,11 @@
// Just a shortcut for bulk export
import parseLinkLabel from './parse_link_label.ts'
import parseLinkDestination from './parse_link_destination.ts'
import parseLinkTitle from './parse_link_title.ts'
export {
parseLinkLabel,
parseLinkDestination,
parseLinkTitle
}

2
src/helpers/parse_link_destination.mjs → src/helpers/parse_link_destination.ts

@ -1,7 +1,7 @@
// Parse link destination
//
import { unescapeAll } from '../common/utils.mjs'
import { unescapeAll } from '../common/utils.ts'
export default function parseLinkDestination (str, start, max) {
let code

0
src/helpers/parse_link_label.mjs → src/helpers/parse_link_label.ts

2
src/helpers/parse_link_title.mjs → src/helpers/parse_link_title.ts

@ -1,7 +1,7 @@
// Parse link title
//
import { unescapeAll } from '../common/utils.mjs'
import { unescapeAll } from '../common/utils.ts'
// Parse link title within `str` in [start, max] range,
// or continue previous parsing if `prev_state` is defined (equal to result of last execution).

1
src/index.mjs

@ -1 +0,0 @@
export { default } from './markdownit.mjs'

1
src/index.ts

@ -0,0 +1 @@
export { default } from './markdownit.ts'

42
src/markdownit.mjs → src/markdownit.ts

@ -1,23 +1,23 @@
// Main parser class
import * as utils from './common/utils.mjs'
import * as helpers from './helpers/index.mjs'
import Token from './token.mjs'
import Ruler from './ruler.mjs'
import Renderer from './renderer.mjs'
import ParserCore from './parser_core.mjs'
import StateCore from './rules_core/state_core.mjs'
import ParserBlock from './parser_block.mjs'
import StateBlock from './rules_block/state_block.mjs'
import ParserInline from './parser_inline.mjs'
import StateInline from './rules_inline/state_inline.mjs'
import * as utils from './common/utils.ts'
import * as helpers from './helpers/index.ts'
import Token from './token.ts'
import Ruler from './ruler.ts'
import Renderer from './renderer.ts'
import ParserCore from './parser_core.ts'
import StateCore from './rules_core/state_core.ts'
import ParserBlock from './parser_block.ts'
import StateBlock from './rules_block/state_block.ts'
import ParserInline from './parser_inline.ts'
import StateInline from './rules_inline/state_inline.ts'
import { LinkifyIt } from 'linkify-it'
import * as mdurl from 'mdurl'
import punycode from 'punycode.js'
import cfg_default from './presets/default.mjs'
import cfg_zero from './presets/zero.mjs'
import cfg_commonmark from './presets/commonmark.mjs'
import cfg_default from './presets/default.ts'
import cfg_zero from './presets/zero.ts'
import cfg_commonmark from './presets/commonmark.ts'
const config = {
default: cfg_default,
@ -129,12 +129,12 @@ function normalizeLinkText (url) {
* MarkdownIt provides named presets as a convenience to quickly
* enable/disable active syntax rules and options for common use cases.
*
* - ["commonmark"](https://github.com/markdown-it/markdown-it/blob/master/src/presets/commonmark.mjs) -
* - ["commonmark"](https://github.com/markdown-it/markdown-it/blob/master/src/presets/commonmark.ts) -
* configures parser to strict [CommonMark](http://commonmark.org/) mode.
* - [default](https://github.com/markdown-it/markdown-it/blob/master/src/presets/default.mjs) -
* - [default](https://github.com/markdown-it/markdown-it/blob/master/src/presets/default.ts) -
* similar to GFM, used when no preset name given. Enables all available rules,
* but still without html, typographer & autolinker.
* - ["zero"](https://github.com/markdown-it/markdown-it/blob/master/src/presets/zero.mjs) -
* - ["zero"](https://github.com/markdown-it/markdown-it/blob/master/src/presets/zero.ts) -
* all rules disabled. Useful to quickly setup your config via `.enable()`.
* For example, when you need only `bold` and `italic` markup and nothing else.
*
@ -151,7 +151,7 @@ function normalizeLinkText (url) {
* Can be useful for external highlighters.
* - __linkify__ - `false`. Set `true` to autoconvert URL-like text to links.
* - __typographer__ - `false`. Set `true` to enable [some language-neutral
* replacement](https://github.com/markdown-it/markdown-it/blob/master/src/rules_core/replacements.mjs) +
* replacement](https://github.com/markdown-it/markdown-it/blob/master/src/rules_core/replacements.ts) +
* quotes beautification (smartquotes).
* - __quotes__ - `“”‘’`, String or Array. Double + single quotes replacement
* pairs, when typographer enabled and smartquotes on. For example, you can
@ -274,7 +274,7 @@ class MarkdownIt {
* md.renderer.rules['my_token'] = myToken
* ```
*
* See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/src/renderer.mjs).
* See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/src/renderer.ts).
**/
this.renderer = new Renderer()
@ -282,7 +282,7 @@ class MarkdownIt {
* MarkdownIt#linkify -> LinkifyIt
*
* [linkify-it](https://github.com/markdown-it/linkify-it) instance.
* Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/src/rules_core/linkify.mjs)
* Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/src/rules_core/linkify.ts)
* rule.
**/
this.linkify = new LinkifyIt()
@ -325,7 +325,7 @@ class MarkdownIt {
* MarkdownIt#utils -> utils
*
* Assorted utility functions, useful to write plugins. See details
* [here](https://github.com/markdown-it/markdown-it/blob/master/src/common/utils.mjs).
* [here](https://github.com/markdown-it/markdown-it/blob/master/src/common/utils.ts).
**/
this.utils = utils

1
src/package.json

@ -0,0 +1 @@
{ "type": "module" }

28
src/parser_block.mjs → src/parser_block.ts

@ -4,20 +4,20 @@
* Block-level tokenizer.
**/
import Ruler from './ruler.mjs'
import StateBlock from './rules_block/state_block.mjs'
import r_table from './rules_block/table.mjs'
import r_code from './rules_block/code.mjs'
import r_fence from './rules_block/fence.mjs'
import r_blockquote from './rules_block/blockquote.mjs'
import r_hr from './rules_block/hr.mjs'
import r_list from './rules_block/list.mjs'
import r_reference from './rules_block/reference.mjs'
import r_html_block from './rules_block/html_block.mjs'
import r_heading from './rules_block/heading.mjs'
import r_lheading from './rules_block/lheading.mjs'
import r_paragraph from './rules_block/paragraph.mjs'
import Ruler from './ruler.ts'
import StateBlock from './rules_block/state_block.ts'
import r_table from './rules_block/table.ts'
import r_code from './rules_block/code.ts'
import r_fence from './rules_block/fence.ts'
import r_blockquote from './rules_block/blockquote.ts'
import r_hr from './rules_block/hr.ts'
import r_list from './rules_block/list.ts'
import r_reference from './rules_block/reference.ts'
import r_html_block from './rules_block/html_block.ts'
import r_heading from './rules_block/heading.ts'
import r_lheading from './rules_block/lheading.ts'
import r_paragraph from './rules_block/paragraph.ts'
const _rules = [
// First 2 params - rule name & source. Secondary array - list of rules,

18
src/parser_core.mjs → src/parser_core.ts

@ -5,16 +5,16 @@
* transformations.
**/
import Ruler from './ruler.mjs'
import StateCore from './rules_core/state_core.mjs'
import Ruler from './ruler.ts'
import StateCore from './rules_core/state_core.ts'
import r_normalize from './rules_core/normalize.mjs'
import r_block from './rules_core/block.mjs'
import r_inline from './rules_core/inline.mjs'
import r_linkify from './rules_core/linkify.mjs'
import r_replacements from './rules_core/replacements.mjs'
import r_smartquotes from './rules_core/smartquotes.mjs'
import r_text_join from './rules_core/text_join.mjs'
import r_normalize from './rules_core/normalize.ts'
import r_block from './rules_core/block.ts'
import r_inline from './rules_core/inline.ts'
import r_linkify from './rules_core/linkify.ts'
import r_replacements from './rules_core/replacements.ts'
import r_smartquotes from './rules_core/smartquotes.ts'
import r_text_join from './rules_core/text_join.ts'
const _rules = [
['normalize', r_normalize],

36
src/parser_inline.mjs → src/parser_inline.ts

@ -4,24 +4,24 @@
* Tokenizes paragraph content.
**/
import Ruler from './ruler.mjs'
import StateInline from './rules_inline/state_inline.mjs'
import r_text from './rules_inline/text.mjs'
import r_linkify from './rules_inline/linkify.mjs'
import r_newline from './rules_inline/newline.mjs'
import r_escape from './rules_inline/escape.mjs'
import r_backticks from './rules_inline/backticks.mjs'
import r_strikethrough from './rules_inline/strikethrough.mjs'
import r_emphasis from './rules_inline/emphasis.mjs'
import r_link from './rules_inline/link.mjs'
import r_image from './rules_inline/image.mjs'
import r_autolink from './rules_inline/autolink.mjs'
import r_html_inline from './rules_inline/html_inline.mjs'
import r_entity from './rules_inline/entity.mjs'
import r_balance_pairs from './rules_inline/balance_pairs.mjs'
import r_fragments_join from './rules_inline/fragments_join.mjs'
import Ruler from './ruler.ts'
import StateInline from './rules_inline/state_inline.ts'
import r_text from './rules_inline/text.ts'
import r_linkify from './rules_inline/linkify.ts'
import r_newline from './rules_inline/newline.ts'
import r_escape from './rules_inline/escape.ts'
import r_backticks from './rules_inline/backticks.ts'
import r_strikethrough from './rules_inline/strikethrough.ts'
import r_emphasis from './rules_inline/emphasis.ts'
import r_link from './rules_inline/link.ts'
import r_image from './rules_inline/image.ts'
import r_autolink from './rules_inline/autolink.ts'
import r_html_inline from './rules_inline/html_inline.ts'
import r_entity from './rules_inline/entity.ts'
import r_balance_pairs from './rules_inline/balance_pairs.ts'
import r_fragments_join from './rules_inline/fragments_join.ts'
// Parser rules

0
src/presets/commonmark.mjs → src/presets/commonmark.ts

0
src/presets/default.mjs → src/presets/default.ts

0
src/presets/zero.mjs → src/presets/zero.ts

4
src/renderer.mjs → src/renderer.ts

@ -6,7 +6,7 @@
* rules if you create plugin and adds new token types.
**/
import { assign, unescapeAll, escapeHtml } from './common/utils.mjs'
import { assign, unescapeAll, escapeHtml } from './common/utils.ts'
const default_rules = {}
@ -138,7 +138,7 @@ class Renderer {
* }
* ```
*
* See [source code](https://github.com/markdown-it/markdown-it/blob/master/src/renderer.mjs)
* See [source code](https://github.com/markdown-it/markdown-it/blob/master/src/renderer.ts)
* for more details and examples.
**/
this.rules = assign({}, default_rules)

0
src/ruler.mjs → src/ruler.ts

2
src/rules_block/blockquote.mjs → src/rules_block/blockquote.ts

@ -1,6 +1,6 @@
// Block quotes
import { isSpace } from '../common/utils.mjs'
import { isSpace } from '../common/utils.ts'
export default function blockquote (state, startLine, endLine, silent) {
let pos = state.bMarks[startLine] + state.tShift[startLine]

0
src/rules_block/code.mjs → src/rules_block/code.ts

0
src/rules_block/fence.mjs → src/rules_block/fence.ts

2
src/rules_block/heading.mjs → src/rules_block/heading.ts

@ -1,6 +1,6 @@
// heading (#, ##, ...)
import { isSpace, asciiTrim } from '../common/utils.mjs'
import { isSpace, asciiTrim } from '../common/utils.ts'
export default function heading (state, startLine, endLine, silent) {
let pos = state.bMarks[startLine] + state.tShift[startLine]

2
src/rules_block/hr.mjs → src/rules_block/hr.ts

@ -1,6 +1,6 @@
// Horizontal rule
import { isSpace } from '../common/utils.mjs'
import { isSpace } from '../common/utils.ts'
export default function hr (state, startLine, endLine, silent) {
const max = state.eMarks[startLine]

4
src/rules_block/html_block.mjs → src/rules_block/html_block.ts

@ -1,7 +1,7 @@
// HTML block
import block_names from '../common/html_blocks.mjs'
import { HTML_OPEN_CLOSE_TAG_RE } from '../common/html_re.mjs'
import block_names from '../common/html_blocks.ts'
import { HTML_OPEN_CLOSE_TAG_RE } from '../common/html_re.ts'
// An array of opening and corresponding closing sequences for html tags,
// last argument defines whether it can terminate a paragraph or not

2
src/rules_block/lheading.mjs → src/rules_block/lheading.ts

@ -1,6 +1,6 @@
// lheading (---, ===)
import { asciiTrim } from '../common/utils.mjs'
import { asciiTrim } from '../common/utils.ts'
export default function lheading (state, startLine, endLine/*, silent */) {
const terminatorRules = state.md.block.ruler.getRules('paragraph')

2
src/rules_block/list.mjs → src/rules_block/list.ts

@ -1,6 +1,6 @@
// Lists
import { isSpace } from '../common/utils.mjs'
import { isSpace } from '../common/utils.ts'
// Search `[-+*][\n ]`, returns next pos after marker on success
// or -1 on fail.

2
src/rules_block/paragraph.mjs → src/rules_block/paragraph.ts

@ -1,6 +1,6 @@
// Paragraph
import { asciiTrim } from '../common/utils.mjs'
import { asciiTrim } from '../common/utils.ts'
export default function paragraph (state, startLine, endLine) {
const terminatorRules = state.md.block.ruler.getRules('paragraph')

2
src/rules_block/reference.mjs → src/rules_block/reference.ts

@ -1,4 +1,4 @@
import { isSpace, normalizeReference } from '../common/utils.mjs'
import { isSpace, normalizeReference } from '../common/utils.ts'
export default function reference (state, startLine, _endLine, silent) {
let pos = state.bMarks[startLine] + state.tShift[startLine]

4
src/rules_block/state_block.mjs → src/rules_block/state_block.ts

@ -1,7 +1,7 @@
// Parser state class
import Token from '../token.mjs'
import { isSpace } from '../common/utils.mjs'
import Token from '../token.ts'
import { isSpace } from '../common/utils.ts'
class StateBlock {
constructor (src, md, env, tokens) {

2
src/rules_block/table.mjs → src/rules_block/table.ts

@ -1,6 +1,6 @@
// GFM table, https://github.github.com/gfm/#tables-extension-
import { isSpace } from '../common/utils.mjs'
import { isSpace } from '../common/utils.ts'
// Limit the amount of empty autocompleted cells in a table,
// see https://github.com/markdown-it/markdown-it/issues/1000,

0
src/rules_core/block.mjs → src/rules_core/block.ts

0
src/rules_core/inline.mjs → src/rules_core/inline.ts

2
src/rules_core/linkify.mjs → src/rules_core/linkify.ts

@ -3,7 +3,7 @@
// Currently restricted by `md.validateLink()` to http/https/ftp
//
import { arrayReplaceAt } from '../common/utils.mjs'
import { arrayReplaceAt } from '../common/utils.ts'
function isLinkOpen (str) {
return /^<a[>\s]/i.test(str)

0
src/rules_core/normalize.mjs → src/rules_core/normalize.ts

0
src/rules_core/replacements.mjs → src/rules_core/replacements.ts

2
src/rules_core/smartquotes.mjs → src/rules_core/smartquotes.ts

@ -1,7 +1,7 @@
// Convert straight quotation marks to typographic ones
//
import { isWhiteSpace, isPunctCharCode, isMdAsciiPunct } from '../common/utils.mjs'
import { isWhiteSpace, isPunctCharCode, isMdAsciiPunct } from '../common/utils.ts'
const QUOTE_TEST_RE = /['"]/
const QUOTE_RE = /['"]/g

2
src/rules_core/state_core.mjs → src/rules_core/state_core.ts

@ -1,7 +1,7 @@
// Core state object
//
import Token from '../token.mjs'
import Token from '../token.ts'
class StateCore {
constructor (src, md, env) {

0
src/rules_core/text_join.mjs → src/rules_core/text_join.ts

0
src/rules_inline/autolink.mjs → src/rules_inline/autolink.ts

0
src/rules_inline/backticks.mjs → src/rules_inline/backticks.ts

0
src/rules_inline/balance_pairs.mjs → src/rules_inline/balance_pairs.ts

0
src/rules_inline/emphasis.mjs → src/rules_inline/emphasis.ts

2
src/rules_inline/entity.mjs → src/rules_inline/entity.ts

@ -1,7 +1,7 @@
// Process html entity - &#123;, &#xAF;, &quot;, ...
import { decodeHTMLStrict } from 'entities'
import { isValidEntityCode, fromCodePoint } from '../common/utils.mjs'
import { isValidEntityCode, fromCodePoint } from '../common/utils.ts'
const DIGITAL_RE = /^&#((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i
const NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i

2
src/rules_inline/escape.mjs → src/rules_inline/escape.ts

@ -1,6 +1,6 @@
// Process escaped chars and hardbreaks
import { isSpace } from '../common/utils.mjs'
import { isSpace } from '../common/utils.ts'
const ESCAPED = []

0
src/rules_inline/fragments_join.mjs → src/rules_inline/fragments_join.ts

2
src/rules_inline/html_inline.mjs → src/rules_inline/html_inline.ts

@ -1,6 +1,6 @@
// Process html tags
import { HTML_TAG_RE } from '../common/html_re.mjs'
import { HTML_TAG_RE } from '../common/html_re.ts'
function isLinkOpen (str) {
return /^<a[>\s]/i.test(str)

2
src/rules_inline/image.mjs → src/rules_inline/image.ts

@ -1,6 +1,6 @@
// Process ![image](<src> "title")
import { normalizeReference, isSpace } from '../common/utils.mjs'
import { normalizeReference, isSpace } from '../common/utils.ts'
export default function image (state, silent) {
let code, content, label, pos, ref, res, title, start

2
src/rules_inline/link.mjs → src/rules_inline/link.ts

@ -1,6 +1,6 @@
// Process [link](<to> "stuff")
import { normalizeReference, isSpace } from '../common/utils.mjs'
import { normalizeReference, isSpace } from '../common/utils.ts'
export default function link (state, silent) {
let code, label, res, ref

0
src/rules_inline/linkify.mjs → src/rules_inline/linkify.ts

2
src/rules_inline/newline.mjs → src/rules_inline/newline.ts

@ -1,6 +1,6 @@
// Proceess '\n'
import { isSpace } from '../common/utils.mjs'
import { isSpace } from '../common/utils.ts'
export default function newline (state, silent) {
let pos = state.pos

4
src/rules_inline/state_inline.mjs → src/rules_inline/state_inline.ts

@ -1,7 +1,7 @@
// Inline parser state
import Token from '../token.mjs'
import { isWhiteSpace, isPunctCharCode, isMdAsciiPunct } from '../common/utils.mjs'
import Token from '../token.ts'
import { isWhiteSpace, isPunctCharCode, isMdAsciiPunct } from '../common/utils.ts'
class StateInline {
constructor (src, md, env, outTokens) {

0
src/rules_inline/strikethrough.mjs → src/rules_inline/strikethrough.ts

0
src/rules_inline/text.mjs → src/rules_inline/text.ts

0
src/token.mjs → src/token.ts

8
support/build-dist.mjs

@ -26,7 +26,7 @@ await build({
target: 'es2015',
minify: false,
lib: {
entry: 'src/index.mjs',
entry: 'src/index.ts',
formats: ['cjs'],
fileName: () => 'markdown-it.cjs.js'
},
@ -47,7 +47,7 @@ await build({
target: 'es2018',
minify: false,
lib: {
entry: 'src/index.mjs',
entry: 'src/index.ts',
formats: ['es'],
fileName: () => 'markdown-it.mjs'
},
@ -68,7 +68,7 @@ await build({
outDir: 'dist/browser',
minify: true,
lib: {
entry: 'src/index.mjs',
entry: 'src/index.ts',
name: 'markdownit',
formats: ['umd'],
fileName: () => 'markdown-it.umd.min.js'
@ -91,7 +91,7 @@ await build({
outDir: 'dist/browser',
minify: true,
lib: {
entry: 'src/index.mjs',
entry: 'src/index.ts',
formats: ['es'],
fileName: () => 'markdown-it.esm.min.mjs'
},

2
support/demo_template/index.mjs

@ -1,4 +1,4 @@
import markdownit from '../../src/index.mjs'
import markdownit from '../../src/index.ts'
import * as mdurl from 'mdurl'
import hljs from 'highlight.js'
import 'highlight.js/styles/github.min.css'

2
support/specsplit.mjs

@ -6,7 +6,7 @@
import fs from 'node:fs'
import argparse from 'argparse'
import markdownit from '../src/index.mjs'
import markdownit from '../src/index.ts'
const cli = new argparse.ArgumentParser({
add_help: true

2
test/cmspec/commonmark.test.mjs

@ -1,7 +1,7 @@
import { readFileSync } from 'node:fs'
import assert from 'node:assert/strict'
import { describe, it } from 'node:test'
import markdownit from '../../src/index.mjs'
import markdownit from '../../src/index.ts'
function normalize (text) {
return text.replace(/<blockquote>\n<\/blockquote>/g, '<blockquote></blockquote>')

2
test/markdown-it/markdown-it.test.mjs

@ -1,7 +1,7 @@
import { fileURLToPath } from 'node:url'
import { describe } from 'node:test'
import { generateTests } from '../helpers.mjs'
import markdownit from '../../src/index.mjs'
import markdownit from '../../src/index.ts'
const fixtures = [
'commonmark_extras.txt',

2
test/markdown-it/misc.test.mjs

@ -1,6 +1,6 @@
import assert from 'node:assert/strict'
import { describe, it } from 'node:test'
import markdownit from '../../src/index.mjs'
import markdownit from '../../src/index.ts'
import forInline from 'markdown-it-for-inline'
describe('API', function () {

2
test/markdown-it/pathological.test.mjs

@ -4,7 +4,7 @@ import { Worker, isMainThread, parentPort, workerData } from 'node:worker_thread
import { fileURLToPath } from 'node:url'
if (!isMainThread) {
const { default: md } = await import('../../src/index.mjs')
const { default: md } = await import('../../src/index.ts')
parentPort.postMessage(md(workerData.opts).render(workerData.str))
process.exit(0)
}

2
test/markdown-it/ruler.test.mjs

@ -1,6 +1,6 @@
import assert from 'node:assert/strict'
import { describe, it } from 'node:test'
import Ruler from '../../src/ruler.mjs'
import Ruler from '../../src/ruler.ts'
describe('Ruler', function () {
it('should replace rule (.at)', function () {

2
test/markdown-it/token.test.mjs

@ -1,6 +1,6 @@
import assert from 'node:assert/strict'
import { describe, it } from 'node:test'
import Token from '../../src/token.mjs'
import Token from '../../src/token.ts'
describe('Token', function () {
it('attr', function () {

2
test/markdown-it/utils.test.mjs

@ -1,6 +1,6 @@
import assert from 'node:assert/strict'
import { describe, it } from 'node:test'
import * as utils from '../../src/common/utils.mjs'
import * as utils from '../../src/common/utils.ts'
describe('Utils', function () {
it('fromCodePoint', function () {

11
tsconfig.json

@ -0,0 +1,11 @@
{
"compilerOptions": {
"target": "ESNext",
"module": "ESNext",
"moduleResolution": "Bundler",
"allowImportingTsExtensions": true,
"noEmit": true,
"skipLibCheck": true
},
"include": [ "src/**/*.ts" ]
}
Loading…
Cancel
Save