@types/markdown-it
Advanced tools
Comparing version 0.0.9 to 10.0.0
@@ -1,8 +0,11 @@ | ||
// Type definitions for markdown-it | ||
// Type definitions for markdown-it v10.0.0 | ||
// Project: https://github.com/markdown-it/markdown-it | ||
// Definitions by: York Yao <https://github.com/plantain-00/>, Robert Coie <https://github.com/rapropos> | ||
// Definitions by: York Yao <https://github.com/plantain-00/> | ||
// Robert Coie <https://github.com/rapropos> | ||
// duduluu <https://github.com/duduluu> | ||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped | ||
// TypeScript Version: 2.3 | ||
// TypeScript Version: 2.0 | ||
import MarkdownIt = require("./lib"); | ||
import MarkdownIt = require('./lib'); | ||
export = MarkdownIt; |
@@ -1,26 +0,104 @@ | ||
import { LinkifyIt } from 'linkify-it' | ||
import utils = require('./common/utils'); | ||
import helpers = require('./helpers'); | ||
import State = require('./rules_core/state_core'); | ||
import StateBlock = require('./rules_block/state_block'); | ||
import StateInline = require('./rules_inline/state_inline'); | ||
import Core = require('./parser_core'); | ||
import Renderer = require('./renderer'); | ||
import ParserCore = require('./parser_core'); | ||
import ParserBlock = require('./parser_block'); | ||
import ParserInline = require('./parser_inline'); | ||
import Renderer = require('./renderer'); | ||
import Ruler = require('./ruler'); | ||
import LinkifyIt = require('linkify-it'); | ||
import mdurl = require('mdurl'); | ||
import punycode = require('punycode'); | ||
import Token = require('./token'); | ||
export = MarkdownIt; | ||
export as namespace markdownit; | ||
declare namespace MarkdownIt { | ||
/** | ||
* 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/lib/presets/commonmark.js) - | ||
* configures parser to strict [CommonMark](http://commonmark.org/) mode. | ||
* - [default](https://github.com/markdown-it/markdown-it/blob/master/lib/presets/default.js) - | ||
* 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/lib/presets/zero.js) - | ||
* all rules disabled. Useful to quickly setup your config via `.enable()`. | ||
* For example, when you need only `bold` and `italic` markup and nothing else. | ||
*/ | ||
type PresetName = 'default' | 'zero' | 'commonmark'; | ||
declare const MarkdownIt: MarkdownItConstructor; | ||
interface Options { | ||
/** | ||
* Set `true` to enable HTML tags in source. Be careful! | ||
* That's not safe! You may need external sanitizer to protect output from XSS. | ||
* It's better to extend features via plugins, instead of enabling HTML. | ||
* @default false | ||
*/ | ||
html?: boolean; | ||
/** | ||
* Set `true` to add '/' when closing single tags | ||
* (`<br />`). This is needed only for full CommonMark compatibility. In real | ||
* world you will need HTML output. | ||
* @default false | ||
*/ | ||
xhtmlOut?: boolean; | ||
/** | ||
* Set `true` to convert `\n` in paragraphs into `<br>`. | ||
* @default false | ||
*/ | ||
breaks?: boolean; | ||
/** | ||
* CSS language class prefix for fenced blocks. | ||
* Can be useful for external highlighters. | ||
* @default 'language-' | ||
*/ | ||
langPrefix?: string; | ||
/** | ||
* Set `true` to autoconvert URL-like text to links. | ||
* @default false | ||
*/ | ||
linkify?: boolean; | ||
/** | ||
* Set `true` to enable [some language-neutral replacement](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/replacements.js) + | ||
* quotes beautification (smartquotes). | ||
* @default false | ||
*/ | ||
typographer?: boolean; | ||
/** | ||
* Double + single quotes replacement | ||
* pairs, when typographer enabled and smartquotes on. For example, you can | ||
* use `'«»„“'` for Russian, `'„“‚‘'` for German, and | ||
* `['«\xA0', '\xA0»', '‹\xA0', '\xA0›']` for French (including nbsp). | ||
* @default '“”‘’' | ||
*/ | ||
quotes?: string | string[]; | ||
/** | ||
* Highlighter function for fenced code blocks. | ||
* Highlighter `function (str, lang)` should return escaped HTML. It can also | ||
* return empty string if the source was not changed and should be escaped | ||
* externaly. If result starts with <pre... internal wrapper is skipped. | ||
* @default null | ||
*/ | ||
highlight?: ((str: string, lang: string) => string) | null; | ||
} | ||
type PluginSimple = (md: MarkdownIt) => void; | ||
type PluginWithOptions<T = any> = (md: MarkdownIt, options?: T) => void; | ||
type PluginWithParams = (md: MarkdownIt, ...params: any[]) => void; | ||
} | ||
interface MarkdownItConstructor { | ||
new (): MarkdownIt; | ||
new (presetName: "commonmark" | "zero" | "default", options?: MarkdownIt.Options): MarkdownIt; | ||
new (presetName: MarkdownIt.PresetName, options?: MarkdownIt.Options): MarkdownIt; | ||
new (options: MarkdownIt.Options): MarkdownIt; | ||
(): MarkdownIt; | ||
(presetName: "commonmark" | "zero" | "default", options ?: MarkdownIt.Options): MarkdownIt; | ||
(presetName: MarkdownIt.PresetName, options?: MarkdownIt.Options): MarkdownIt; | ||
(options: MarkdownIt.Options): MarkdownIt; | ||
@@ -30,85 +108,304 @@ } | ||
interface MarkdownIt { | ||
render(md: string, env?: any): string; | ||
renderInline(md: string, env?: any): string; | ||
parse(src: string, env: any): Token[]; | ||
parseInline(src: string, env: any): Token[]; | ||
/** | ||
* Instance of [[ParserInline]]. You may need it to add new rules when | ||
* writing plugins. For simple rules control use [[MarkdownIt.disable]] and | ||
* [[MarkdownIt.enable]]. | ||
*/ | ||
readonly inline: ParserInline; | ||
/* | ||
// The following only works in 3.0 | ||
// Since it's still not allowed to target 3.0, i'll leave the code commented out | ||
/** | ||
* Instance of [[ParserBlock]]. You may need it to add new rules when | ||
* writing plugins. For simple rules control use [[MarkdownIt.disable]] and | ||
* [[MarkdownIt.enable]]. | ||
*/ | ||
readonly block: ParserBlock; | ||
use<T extends Array<any> = any[]>( | ||
plugin: (md: MarkdownIt, ...params: T) => void, | ||
...params: T | ||
): MarkdownIt; | ||
*/ | ||
/** | ||
* Instance of [[Core]] chain executor. You may need it to add new rules when | ||
* writing plugins. For simple rules control use [[MarkdownIt.disable]] and | ||
* [[MarkdownIt.enable]]. | ||
*/ | ||
readonly core: ParserCore; | ||
use(plugin: (md: MarkdownIt, ...params: any[]) => void, ...params: any[]): MarkdownIt; | ||
/** | ||
* Instance of [[Renderer]]. Use it to modify output look. Or to add rendering | ||
* rules for new token types, generated by plugins. | ||
* | ||
* ##### Example | ||
* | ||
* ```javascript | ||
* var md = require('markdown-it')(); | ||
* | ||
* function myToken(tokens, idx, options, env, self) { | ||
* //... | ||
* return result; | ||
* }; | ||
* | ||
* md.renderer.rules['my_token'] = myToken | ||
* ``` | ||
* | ||
* See [[Renderer]] docs and [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js). | ||
*/ | ||
readonly renderer: Renderer; | ||
utils: { | ||
assign(obj: any): any; | ||
isString(obj: any): boolean; | ||
has(object: any, key: string): boolean; | ||
unescapeMd(str: string): string; | ||
unescapeAll(str: string): string; | ||
isValidEntityCode(str: any): boolean; | ||
fromCodePoint(str: string): string; | ||
escapeHtml(str: string): string; | ||
arrayReplaceAt(src: any[], pos: number, newElements: any[]): any[] | ||
isSpace(str: any): boolean; | ||
isWhiteSpace(str: any): boolean | ||
isMdAsciiPunct(str: any): boolean; | ||
isPunctChar(str: any): boolean; | ||
escapeRE(str: string): string; | ||
normalizeReference(str: string): string; | ||
} | ||
/** | ||
* [linkify-it](https://github.com/markdown-it/linkify-it) instance. | ||
* Used by [linkify](https://github.com/markdown-it/markdown-it/blob/master/lib/rules_core/linkify.js) | ||
* rule. | ||
*/ | ||
readonly linkify: LinkifyIt.LinkifyIt; | ||
disable(rules: string[] | string, ignoreInvalid?: boolean): MarkdownIt; | ||
enable(rules: string[] | string, ignoreInvalid?: boolean): MarkdownIt; | ||
set(options: MarkdownIt.Options): MarkdownIt; | ||
/** | ||
* Link validation function. CommonMark allows too much in links. By default | ||
* we disable `javascript:`, `vbscript:`, `file:` schemas, and almost all `data:...` schemas | ||
* except some embedded image types. | ||
* | ||
* You can change this behaviour: | ||
* | ||
* ```javascript | ||
* var md = require('markdown-it')(); | ||
* // enable everything | ||
* md.validateLink = function () { return true; } | ||
* ``` | ||
*/ | ||
validateLink(url: string): boolean; | ||
/** | ||
* Function used to encode link url to a machine-readable format, | ||
* which includes url-encoding, punycode, etc. | ||
*/ | ||
normalizeLink(url: string): string; | ||
/** | ||
* Function used to decode link url to a human-readable format` | ||
*/ | ||
normalizeLinkText(url: string): string; | ||
validateLink(url: string): boolean; | ||
block: ParserBlock; | ||
core: Core; | ||
helpers: any; | ||
inline: ParserInline; | ||
linkify: LinkifyIt; | ||
renderer: Renderer; | ||
} | ||
declare module MarkdownIt { | ||
interface Options { | ||
html?: boolean; | ||
xhtmlOut?: boolean; | ||
breaks?: boolean; | ||
langPrefix?: string; | ||
linkify?: boolean; | ||
typographer?: boolean; | ||
quotes?: string; | ||
highlight?: (str: string, lang: string) => void; | ||
} | ||
readonly utils: typeof utils; | ||
interface Rule<S extends State = State> { | ||
(state: S, silent?: boolean): boolean | void; | ||
} | ||
readonly helpers: typeof helpers; | ||
interface RuleInline extends Rule<StateInline> {} | ||
interface RuleBlock extends Rule<StateBlock> {} | ||
readonly options: MarkdownIt.Options; | ||
interface RulerInline extends Ruler<StateInline> {} | ||
interface RulerBlock extends Ruler<StateBlock> {} | ||
/** | ||
* *chainable* | ||
* | ||
* Set parser options (in the same format as in constructor). Probably, you | ||
* will never need it, but you can change options after constructor call. | ||
* | ||
* ##### Example | ||
* | ||
* ```javascript | ||
* var md = require('markdown-it')() | ||
* .set({ html: true, breaks: true }) | ||
* .set({ typographer: true }); | ||
* ``` | ||
* | ||
* __Note:__ To achieve the best possible performance, don't modify a | ||
* `markdown-it` instance options on the fly. If you need multiple configurations | ||
* it's best to create multiple instances and initialize each with separate | ||
* config. | ||
*/ | ||
set(options: MarkdownIt.Options): this; | ||
type TokenRender = (tokens: Token[], index: number, options: any, env: any, self: Renderer) => string; | ||
/** | ||
* *chainable*, *internal* | ||
* | ||
* Batch load of all options and compenent settings. This is internal method, | ||
* and you probably will not need it. But if you with - see available presets | ||
* and data structure [here](https://github.com/markdown-it/markdown-it/tree/master/lib/presets) | ||
* | ||
* We strongly recommend to use presets instead of direct config loads. That | ||
* will give better compatibility with next versions. | ||
*/ | ||
configure(presets: MarkdownIt.PresetName): this; | ||
interface Delimiter { | ||
close: boolean; | ||
end: number; | ||
jump: number; | ||
length: number; | ||
level: number; | ||
marker: number; | ||
open: boolean; | ||
token: number; | ||
} | ||
/** | ||
* *chainable* | ||
* | ||
* Enable list or rules. It will automatically find appropriate components, | ||
* containing rules with given names. If rule not found, and `ignoreInvalid` | ||
* not set - throws exception. | ||
* | ||
* ##### Example | ||
* | ||
* ```javascript | ||
* var md = require('markdown-it')() | ||
* .enable(['sub', 'sup']) | ||
* .disable('smartquotes'); | ||
* ``` | ||
* | ||
* @param list rule name or list of rule names to enable | ||
* @param ignoreInvalid set `true` to ignore errors when rule not found. | ||
*/ | ||
enable(list: string | string[], ignoreInvalid?: boolean): this; | ||
/** | ||
* *chainable* | ||
* | ||
* The same as [[MarkdownIt.enable]], but turn specified rules off. | ||
* | ||
* @param list rule name or list of rule names to disable. | ||
* @param ignoreInvalid set `true` to ignore errors when rule not found. | ||
*/ | ||
disable(list: string | string[], ignoreInvalid?: boolean): this; | ||
/** | ||
* *chainable* | ||
* | ||
* Load specified plugin with given params into current parser instance. | ||
* It's just a sugar to call `plugin(md, params)` with curring. | ||
* | ||
* ##### Example | ||
* | ||
* ```javascript | ||
* var iterator = require('markdown-it-for-inline'); | ||
* var md = require('markdown-it')() | ||
* .use(iterator, 'foo_replace', 'text', function (tokens, idx) { | ||
* tokens[idx].content = tokens[idx].content.replace(/foo/g, 'bar'); | ||
* }); | ||
* ``` | ||
*/ | ||
use(plugin: MarkdownIt.PluginSimple): this; | ||
use<T = any>(plugin: MarkdownIt.PluginWithOptions<T>, options?: T): this; | ||
use(plugin: MarkdownIt.PluginWithParams, ...params: any[]): this; | ||
/** | ||
* *internal* | ||
* | ||
* Parse input string and returns list of block tokens (special token type | ||
* "inline" will contain list of inline tokens). You should not call this | ||
* method directly, until you write custom renderer (for example, to produce | ||
* AST). | ||
* | ||
* `env` is used to pass data between "distributed" rules and return additional | ||
* metadata like reference info, needed for the renderer. It also can be used to | ||
* inject data in specific cases. Usually, you will be ok to pass `{}`, | ||
* and then pass updated object to renderer. | ||
* | ||
* @param src source string | ||
* @param env environment sandbox | ||
*/ | ||
parse(src: string, env: any): Token[]; | ||
/** | ||
* Render markdown string into html. It does all magic for you :). | ||
* | ||
* `env` can be used to inject additional metadata (`{}` by default). | ||
* But you will not need it with high probability. See also comment | ||
* in [[MarkdownIt.parse]]. | ||
* | ||
* @param src source string | ||
* @param env environment sandbox | ||
*/ | ||
render(src: string, env?: any): string; | ||
/** | ||
* *internal* | ||
* | ||
* The same as [[MarkdownIt.parse]] but skip all block rules. It returns the | ||
* block tokens list with the single `inline` element, containing parsed inline | ||
* tokens in `children` property. Also updates `env` object. | ||
* | ||
* @param src source string | ||
* @param env environment sandbox | ||
*/ | ||
parseInline(src: string, env: any): Token[]; | ||
/** | ||
* Similar to [[MarkdownIt.render]] but for single paragraph content. Result | ||
* will NOT be wrapped into `<p>` tags. | ||
* | ||
* @param src source string | ||
* @param env environment sandbox | ||
*/ | ||
renderInline(src: string, env?: any): string; | ||
} | ||
/** | ||
* Main parser/renderer class. | ||
* | ||
* ##### Usage | ||
* | ||
* ```javascript | ||
* // node.js, "classic" way: | ||
* var MarkdownIt = require('markdown-it'), | ||
* md = new MarkdownIt(); | ||
* var result = md.render('# markdown-it rulezz!'); | ||
* | ||
* // node.js, the same, but with sugar: | ||
* var md = require('markdown-it')(); | ||
* var result = md.render('# markdown-it rulezz!'); | ||
* | ||
* // browser without AMD, added to "window" on script load | ||
* // Note, there are no dash. | ||
* var md = window.markdownit(); | ||
* var result = md.render('# markdown-it rulezz!'); | ||
* ``` | ||
* | ||
* Single line rendering, without paragraph wrap: | ||
* | ||
* ```javascript | ||
* var md = require('markdown-it')(); | ||
* var result = md.renderInline('__markdown-it__ rulezz!'); | ||
* ``` | ||
* | ||
* ##### Example | ||
* | ||
* ```javascript | ||
* // commonmark mode | ||
* var md = require('markdown-it')('commonmark'); | ||
* | ||
* // default mode | ||
* var md = require('markdown-it')(); | ||
* | ||
* // enable everything | ||
* var md = require('markdown-it')({ | ||
* html: true, | ||
* linkify: true, | ||
* typographer: true | ||
* }); | ||
* ``` | ||
* | ||
* ##### Syntax highlighting | ||
* | ||
* ```js | ||
* var hljs = require('highlight.js') // https://highlightjs.org/ | ||
* | ||
* var md = require('markdown-it')({ | ||
* highlight: function (str, lang) { | ||
* if (lang && hljs.getLanguage(lang)) { | ||
* try { | ||
* return hljs.highlight(lang, str, true).value; | ||
* } catch (__) {} | ||
* } | ||
* | ||
* return ''; // use external default escaping | ||
* } | ||
* }); | ||
* ``` | ||
* | ||
* Or with full wrapper override (if you need assign class to `<pre>`): | ||
* | ||
* ```javascript | ||
* var hljs = require('highlight.js') // https://highlightjs.org/ | ||
* | ||
* // Actual default values | ||
* var md = require('markdown-it')({ | ||
* highlight: function (str, lang) { | ||
* if (lang && hljs.getLanguage(lang)) { | ||
* try { | ||
* return '<pre class="hljs"><code>' + | ||
* hljs.highlight(lang, str, true).value + | ||
* '</code></pre>'; | ||
* } catch (__) {} | ||
* } | ||
* | ||
* return '<pre class="hljs"><code>' + md.utils.escapeHtml(str) + '</code></pre>'; | ||
* } | ||
* }); | ||
* ``` | ||
*/ | ||
declare const MarkdownIt: MarkdownItConstructor; | ||
export = MarkdownIt; |
@@ -1,9 +0,29 @@ | ||
import MarkdownIt = require("."); | ||
import Token = require("./token"); | ||
import MarkdownIt = require('.'); | ||
import Ruler = require('./ruler'); | ||
import Token = require('./token'); | ||
import StateBlock = require('./rules_block/state_block'); | ||
export = ParserBlock; | ||
declare namespace ParserBlock { | ||
type RuleBlock = (state: StateBlock, startLine: number, endLine: number, silent: boolean) => boolean; | ||
} | ||
declare class ParserBlock { | ||
parse(src: string, md: MarkdownIt, env: any, outTokens: Token[]): void; | ||
ruler: MarkdownIt.RulerBlock; | ||
/** | ||
* [[Ruler]] instance. Keep configuration of block rules. | ||
*/ | ||
ruler: Ruler<ParserBlock.RuleBlock>; | ||
/** | ||
* Generate tokens for input range | ||
*/ | ||
tokenize(state: StateBlock, startLine: number, endLine: number): void; | ||
/** | ||
* Process input string and push block tokens into `outTokens` | ||
*/ | ||
parse(str: string, md: MarkdownIt, env: any, outTokens: Token[]): void; | ||
State: typeof StateBlock; | ||
} | ||
export = ParserBlock; |
@@ -1,12 +0,21 @@ | ||
import MarkdownIt = require("."); | ||
import Ruler = require("./ruler"); | ||
import Token = require("./token"); | ||
import StateCore = require("./rules_core/state_core"); | ||
import MarkdownIt = require('.'); | ||
import Ruler = require('./ruler'); | ||
import Token = require('./token'); | ||
import StateCore = require('./rules_core/state_core'); | ||
export = ParserCore; | ||
declare namespace Core { | ||
type RuleCore = (state: StateCore) => boolean; | ||
} | ||
declare class ParserCore { | ||
process(state: any): void; | ||
ruler: Ruler; | ||
State: StateCore | ||
declare class Core { | ||
ruler: Ruler<Core.RuleCore>; | ||
/** | ||
* Executes core chain rules. | ||
*/ | ||
process(state: StateCore): void; | ||
State: typeof StateCore; | ||
} | ||
export = Core; |
@@ -1,13 +0,42 @@ | ||
import MarkdownIt = require("."); | ||
import State = require("./rules_core/state_core"); | ||
import Token = require("./token"); | ||
import MarkdownIt = require('.'); | ||
import Ruler = require('./ruler'); | ||
import Token = require('./token'); | ||
import StateInline = require('./rules_inline/state_inline'); | ||
export = ParserInline; | ||
declare namespace ParserInline { | ||
type RuleInline = (state: StateInline, silent: boolean) => boolean; | ||
type RuleInline2 = (state: StateInline) => boolean; | ||
} | ||
declare class ParserInline { | ||
parse(src: string, md: MarkdownIt, env: any, outTokens: Token[]): void; | ||
tokenize(state: State): void; | ||
skipToken(state: State): void; | ||
ruler: MarkdownIt.RulerInline; | ||
ruler2: MarkdownIt.RulerInline; | ||
/** | ||
* [[Ruler]] instance. Keep configuration of inline rules. | ||
*/ | ||
ruler: Ruler<ParserInline.RuleInline>; | ||
/** | ||
* [[Ruler]] instance. Second ruler used for post-processing | ||
* (e.g. in emphasis-like rules). | ||
*/ | ||
ruler2: Ruler<ParserInline.RuleInline2>; | ||
/** | ||
* Skip single token by running all rules in validation mode; | ||
* returns `true` if any rule reported success | ||
*/ | ||
skipToken(state: StateInline): void; | ||
/** | ||
* Generate tokens for input range | ||
*/ | ||
tokenize(state: StateInline): void; | ||
/** | ||
* Process input string and push inline tokens into `outTokens` | ||
*/ | ||
parse(str: string, md: MarkdownIt, env: any, outTokens: Token[]): void; | ||
State: typeof StateInline; | ||
} | ||
export = ParserInline; |
@@ -1,12 +0,96 @@ | ||
import MarkdownIt = require("."); | ||
import Token = require("./token"); | ||
import MarkdownIt = require('.'); | ||
import Token = require('./token'); | ||
export = Renderer; | ||
declare namespace Renderer { | ||
type RenderRule = (tokens: Token[], idx: number, options: MarkdownIt.Options, env: any, self: Renderer) => string; | ||
interface RenderRuleRecord { | ||
[type: string]: RenderRule | undefined; | ||
code_inline?: RenderRule; | ||
code_block?: RenderRule; | ||
fence?: RenderRule; | ||
image?: RenderRule; | ||
hardbreak?: RenderRule; | ||
softbreak?: RenderRule; | ||
text?: RenderRule; | ||
html_block?: RenderRule; | ||
html_inline?: RenderRule; | ||
} | ||
} | ||
declare class Renderer { | ||
rules: { [name: string]: MarkdownIt.TokenRender }; | ||
render(tokens: Token[], options: any, env: any): string; | ||
/** | ||
* Contains render rules for tokens. Can be updated and extended. | ||
* | ||
* ##### Example | ||
* | ||
* ```javascript | ||
* var md = require('markdown-it')(); | ||
* | ||
* md.renderer.rules.strong_open = function () { return '<b>'; }; | ||
* md.renderer.rules.strong_close = function () { return '</b>'; }; | ||
* | ||
* var result = md.renderInline(...); | ||
* ``` | ||
* | ||
* Each rule is called as independent static function with fixed signature: | ||
* | ||
* ```javascript | ||
* function my_token_render(tokens, idx, options, env, renderer) { | ||
* // ... | ||
* return renderedHTML; | ||
* } | ||
* ``` | ||
* | ||
* See [source code](https://github.com/markdown-it/markdown-it/blob/master/lib/renderer.js) | ||
* for more details and examples. | ||
*/ | ||
rules: Renderer.RenderRuleRecord; | ||
/** | ||
* Render token attributes to string. | ||
*/ | ||
renderAttrs(token: Token): string; | ||
renderInline(tokens: Token[], options: any, env: any): string; | ||
renderToken(tokens: Token[], idx: number, options: any): string; | ||
/** | ||
* Default token renderer. Can be overriden by custom function | ||
* in [[Renderer#rules]]. | ||
* | ||
* @param tokens list of tokens | ||
* @param idx token index to render | ||
* @param options params of parser instance | ||
*/ | ||
renderToken(tokens: Token[], idx: number, options: MarkdownIt.Options): string; | ||
/** | ||
* The same as [[Renderer.render]], but for single token of `inline` type. | ||
* | ||
* @param tokens list on block tokens to renter | ||
* @param options params of parser instance | ||
* @param env additional data from parsed input (references, for example) | ||
*/ | ||
renderInline(tokens: Token[], options: MarkdownIt.Options, env: any): string; | ||
/** | ||
* Special kludge for image `alt` attributes to conform CommonMark spec. | ||
* Don't try to use it! Spec requires to show `alt` content with stripped markup, | ||
* instead of simple escaping. | ||
* | ||
* @param tokens list on block tokens to renter | ||
* @param options params of parser instance | ||
* @param env additional data from parsed input (references, for example) | ||
*/ | ||
renderInlineAsText(tokens: Token[], options: MarkdownIt.Options, env: any): string; | ||
/** | ||
* Takes token stream and generates HTML. Probably, you will never need to call | ||
* this method directly. | ||
* | ||
* @param tokens list on block tokens to renter | ||
* @param options params of parser instance | ||
* @param env additional data from parsed input (references, for example) | ||
*/ | ||
render(tokens: Token[], options: MarkdownIt.Options, env: any): string; | ||
} | ||
export = Renderer; |
@@ -1,15 +0,169 @@ | ||
import MarkdownIt = require("."); | ||
import State = require("./rules_core/state_core"); | ||
import StateCore = require('./rules_core/state_core'); | ||
export = Ruler; | ||
declare namespace Ruler { | ||
interface RuleOptions { | ||
/** | ||
* array with names of "alternate" chains. | ||
*/ | ||
alt: string[]; | ||
} | ||
} | ||
declare class Ruler<S extends State = State> { | ||
after(afterName: string, ruleName: string, rule: MarkdownIt.Rule<S>, options?: any): void; | ||
at(name: string, rule: MarkdownIt.Rule<S>, options?: any): void; | ||
before(beforeName: string, ruleName: string, rule: MarkdownIt.Rule<S>, options?: any): void; | ||
disable(rules: string | string[], ignoreInvalid?: boolean): string[]; | ||
enable(rules: string | string[], ignoreInvalid?: boolean): string[]; | ||
enableOnly(rule: string, ignoreInvalid?: boolean): void; | ||
getRules(chain: string): MarkdownIt.Rule<S>[]; | ||
push(ruleName: string, rule: MarkdownIt.Rule<S>, options?: any): void; | ||
/** | ||
* class Ruler | ||
* | ||
* Helper class, used by [[MarkdownIt#core]], [[MarkdownIt#block]] and | ||
* [[MarkdownIt#inline]] to manage sequences of functions (rules): | ||
* | ||
* - keep rules in defined order | ||
* - assign the name to each rule | ||
* - enable/disable rules | ||
* - add/replace rules | ||
* - allow assign rules to additional named chains (in the same) | ||
* - cacheing lists of active rules | ||
* | ||
* You will not need use this class directly until write plugins. For simple | ||
* rules control use [[MarkdownIt.disable]], [[MarkdownIt.enable]] and | ||
* [[MarkdownIt.use]]. | ||
*/ | ||
declare class Ruler<T> { | ||
/** | ||
* Replace rule by name with new function & options. Throws error if name not | ||
* found. | ||
* | ||
* ##### Example | ||
* | ||
* Replace existing typographer replacement rule with new one: | ||
* | ||
* ```javascript | ||
* var md = require('markdown-it')(); | ||
* | ||
* md.core.ruler.at('replacements', function replace(state) { | ||
* //... | ||
* }); | ||
* ``` | ||
* | ||
* @param name rule name to replace. | ||
* @param fn new rule function. | ||
* @param options new rule options (not mandatory). | ||
*/ | ||
at(name: string, fn: T, options?: Ruler.RuleOptions): void; | ||
/** | ||
* Add new rule to chain before one with given name. See also | ||
* [[Ruler.after]], [[Ruler.push]]. | ||
* | ||
* ##### Example | ||
* | ||
* ```javascript | ||
* var md = require('markdown-it')(); | ||
* | ||
* md.block.ruler.before('paragraph', 'my_rule', function replace(state) { | ||
* //... | ||
* }); | ||
* ``` | ||
* | ||
* @param beforeName new rule will be added before this one. | ||
* @param ruleName name of added rule. | ||
* @param fn rule function. | ||
* @param options rule options (not mandatory). | ||
*/ | ||
before(beforeName: string, ruleName: string, fn: T, options?: Ruler.RuleOptions): void; | ||
/** | ||
* Add new rule to chain after one with given name. See also | ||
* [[Ruler.before]], [[Ruler.push]]. | ||
* | ||
* ##### Options: | ||
* | ||
* - __alt__ - array with names of "alternate" chains. | ||
* | ||
* ##### Example | ||
* | ||
* ```javascript | ||
* var md = require('markdown-it')(); | ||
* | ||
* md.inline.ruler.after('text', 'my_rule', function replace(state) { | ||
* //... | ||
* }); | ||
* ``` | ||
* | ||
* @param afterName new rule will be added after this one. | ||
* @param ruleName name of added rule. | ||
* @param fn rule function. | ||
* @param options rule options (not mandatory). | ||
*/ | ||
after(afterName: string, ruleName: string, fn: T, options?: Ruler.RuleOptions): void; | ||
/** | ||
* Push new rule to the end of chain. See also | ||
* [[Ruler.before]], [[Ruler.after]]. | ||
* | ||
* ##### Options: | ||
* | ||
* - __alt__ - array with names of "alternate" chains. | ||
* | ||
* ##### Example | ||
* | ||
* ```javascript | ||
* var md = require('markdown-it')(); | ||
* | ||
* md.core.ruler.push('my_rule', function replace(state) { | ||
* //... | ||
* }); | ||
* ``` | ||
* | ||
* @param ruleName name of added rule. | ||
* @param fn rule function. | ||
* @param options rule options (not mandatory). | ||
*/ | ||
push(ruleName: string, fn: T, options?: Ruler.RuleOptions): void; | ||
/** | ||
* Enable rules with given names. If any rule name not found - throw Error. | ||
* Errors can be disabled by second param. | ||
* | ||
* Returns list of found rule names (if no exception happened). | ||
* | ||
* See also [[Ruler.disable]], [[Ruler.enableOnly]]. | ||
* | ||
* @param list list of rule names to enable. | ||
* @param ignoreInvalid set `true` to ignore errors when rule not found. | ||
*/ | ||
enable(list: string | string[], ignoreInvalid?: boolean): string[]; | ||
/** | ||
* Enable rules with given names, and disable everything else. If any rule name | ||
* not found - throw Error. Errors can be disabled by second param. | ||
* | ||
* See also [[Ruler.disable]], [[Ruler.enable]]. | ||
* | ||
* @param list list of rule names to enable (whitelist). | ||
* @param ignoreInvalid set `true` to ignore errors when rule not found. | ||
*/ | ||
enableOnly(list: string | string[], ignoreInvalid?: boolean): string[]; | ||
/** | ||
* Disable rules with given names. If any rule name not found - throw Error. | ||
* Errors can be disabled by second param. | ||
* | ||
* Returns list of found rule names (if no exception happened). | ||
* | ||
* See also [[Ruler.enable]], [[Ruler.enableOnly]]. | ||
* | ||
* @param list list of rule names to disable. | ||
* @param ignoreInvalid set `true` to ignore errors when rule not found. | ||
*/ | ||
disable(list: string | string[], ignoreInvalid?: boolean): string[]; | ||
/** | ||
* Return array of active functions (rules) for given chain name. It analyzes | ||
* rules configuration, compiles caches if not exists and returns result. | ||
* | ||
* Default chain name is `''` (empty string). It can't be skipped. That's | ||
* done intentionally, to keep signature monomorphic for high speed. | ||
*/ | ||
getRules(chainName: string): T[]; | ||
} | ||
export = Ruler; |
@@ -1,23 +0,134 @@ | ||
import MarkdownIt = require(".."); | ||
import State = require("../rules_core/state_core"); | ||
import Token = require("../token"); | ||
import MarkdownIt = require('..'); | ||
import Token = require('../token'); | ||
export = StateBlock; | ||
declare namespace StateBlock { | ||
type ParentType = 'blockquote' | 'list' | 'root' | 'paragraph' | 'reference'; | ||
} | ||
declare class StateBlock extends State { | ||
/** Used in lists to determine if they interrupt a paragraph */ | ||
parentType: 'blockquote' | 'list' | 'root' | 'paragraph' | 'reference'; | ||
declare class StateBlock { | ||
constructor(src: string, md: MarkdownIt, env: any, tokens: Token[]); | ||
src: string; | ||
/** | ||
* link to parser instance | ||
*/ | ||
md: MarkdownIt; | ||
env: any; | ||
// | ||
// Internal state vartiables | ||
// | ||
tokens: Token[]; | ||
/** | ||
* line begin offsets for fast jumps | ||
*/ | ||
bMarks: number[]; | ||
/** | ||
* line end offsets for fast jumps | ||
*/ | ||
eMarks: number[]; | ||
bMarks: number[]; | ||
bsCount: number[]; | ||
/** | ||
* offsets of the first non-space characters (tabs not expanded) | ||
*/ | ||
tShift: number[]; | ||
/** | ||
* indents for each line (tabs expanded) | ||
*/ | ||
sCount: number[]; | ||
tShift: number[]; | ||
/** | ||
* An amount of virtual spaces (tabs expanded) between beginning | ||
* of each line (bMarks) and real beginning of that line. | ||
* | ||
* It exists only as a hack because blockquotes override bMarks | ||
* losing information in the process. | ||
* | ||
* It's used only when expanding tabs, you can think about it as | ||
* an initial tab length, e.g. bsCount=21 applied to string `\t123` | ||
* means first tab should be expanded to 4-21%4 === 3 spaces. | ||
*/ | ||
bsCount: number[]; | ||
// block parser variables | ||
/** | ||
* required block content indent (for example, if we are | ||
* inside a list, it would be positioned after list marker) | ||
*/ | ||
blkIndent: number; | ||
ddIndent: number; | ||
/** | ||
* line index in src | ||
*/ | ||
line: number; | ||
/** | ||
* lines count | ||
*/ | ||
lineMax: number; | ||
/** | ||
* loose/tight mode for lists | ||
*/ | ||
tight: boolean; | ||
/** | ||
* indent of the current dd block (-1 if there isn't any) | ||
*/ | ||
ddIndent: number; | ||
/** | ||
* indent of the current list block (-1 if there isn't any) | ||
*/ | ||
listIndent: number; | ||
/** | ||
* can be 'blockquote', 'list', 'root', 'paragraph' or 'reference' | ||
* used in lists to determine if they interrupt a paragraph | ||
*/ | ||
parentType: StateBlock.ParentType; | ||
level: number; | ||
/** | ||
* renderer | ||
*/ | ||
result: string; | ||
/** | ||
* Push new token to "stream". | ||
*/ | ||
push(type: string, tag: string, nesting: Token.Nesting): Token; | ||
isEmpty(line: number): boolean; | ||
skipEmptyLines(from: number): number; | ||
/** | ||
* Skip spaces from given position. | ||
*/ | ||
skipSpaces(pos: number): number; | ||
/** | ||
* Skip spaces from given position in reverse. | ||
*/ | ||
skipSpacesBack(pos: number, min: number): number; | ||
/** | ||
* Skip char codes from given position | ||
*/ | ||
skipChars(pos: number, code: number): number; | ||
/** | ||
* Skip char codes reverse from given position - 1 | ||
*/ | ||
skipCharsBack(pos: number, code: number, min: number): number; | ||
/** | ||
* cut lines range from source. | ||
*/ | ||
getLines(begin: number, end: number, indent: number, keepLastLF: boolean): string; | ||
Token: typeof Token; | ||
} | ||
export = StateBlock; |
@@ -1,23 +0,20 @@ | ||
import MarkdownIt = require(".."); | ||
import Token = require("../token"); | ||
import MarkdownIt = require('..'); | ||
import Token = require('../token'); | ||
export = StateCore; | ||
declare class StateCore { | ||
constructor(src: string, md: MarkdownIt, env: any) | ||
constructor(src: string, md: MarkdownIt, env: any); | ||
src: string; | ||
env: any; | ||
level: number; | ||
tokens: Token[]; | ||
inlineMode: boolean; | ||
/** Link to parser instance */ | ||
/** | ||
* link to parser instance | ||
*/ | ||
md: MarkdownIt; | ||
/** The markdown source code that is being parsed. */ | ||
src: string; | ||
Token: typeof Token; | ||
} | ||
tokens: Token[]; | ||
/** Return any for a yet untyped property */ | ||
[undocumented: string]: any; | ||
} | ||
export = StateCore; |
@@ -1,46 +0,78 @@ | ||
import MarkdownIt = require(".."); | ||
import State = require("../rules_core/state_core"); | ||
import Token = require("../token"); | ||
import MarkdownIt = require('..'); | ||
import Token = require('../token'); | ||
export = StateInline; | ||
declare namespace StateInline { | ||
interface Scanned { | ||
can_open: boolean; | ||
can_close: boolean; | ||
length: number; | ||
} | ||
declare class StateInline extends State { | ||
/** | ||
* Stores `{ start: end }` pairs. Useful for backtrack | ||
* optimization of pairs parse (emphasis, strikes). | ||
*/ | ||
cache: { [start: number]: number }; | ||
interface Delimiter { | ||
marker: number; | ||
length: number; | ||
jump: number; | ||
token: number; | ||
end: number; | ||
open: boolean; | ||
close: boolean; | ||
} | ||
/** Emphasis-like delimiters */ | ||
delimiters: MarkdownIt.Delimiter[]; | ||
interface TokenMata { | ||
delimiters: Delimiter[]; | ||
} | ||
} | ||
declare class StateInline { | ||
constructor(src: string, md: MarkdownIt, env: any, outTokens: Token[]); | ||
src: string; | ||
env: any; | ||
md: MarkdownIt; | ||
tokens: Token[]; | ||
tokens_meta: StateInline.TokenMata[]; | ||
pos: number; | ||
posMax: number; | ||
level: number; | ||
pending: string; | ||
pendingLevel: number; | ||
/** Index of the first character of this token. */ | ||
pos: number; | ||
/** | ||
* Stores { start: end } pairs. Useful for backtrack | ||
* optimization of pairs parse (emphasis, strikes). | ||
*/ | ||
cache: any; | ||
/** Index of the last character that can be used (for example the one before the end of this line). */ | ||
posMax: number; | ||
/** | ||
* List of emphasis-like delimiters for current tag | ||
*/ | ||
delimiters: StateInline.Delimiter[]; | ||
// Stack of delimiter lists for upper level tags | ||
// _prev_delimiters: StateInline.Delimiter[][]; | ||
/** | ||
* Push new token to "stream". | ||
* If pending text exists, flush it as text token. | ||
* Flush pending text | ||
*/ | ||
push(type: string, tag: string, nesting: number): Token; | ||
/** Flush pending text */ | ||
pushPending(): Token; | ||
/** | ||
* Scan a sequence of emphasis-like markers and determine whether | ||
* Push new token to "stream". | ||
* If pending text exists - flush it as text token | ||
*/ | ||
push(type: string, tag: string, nesting: Token.Nesting): Token; | ||
/** | ||
* Scan a sequence of emphasis-like markers, and determine whether | ||
* it can start an emphasis sequence or end an emphasis sequence. | ||
* @param start - position to scan from (it should point to a valid marker) | ||
* @param canSplitWord - determine if these markers can be found inside a word | ||
* | ||
* @param start position to scan from (it should point at a valid marker); | ||
* @param canSplitWord determine if these markers can be found inside a word | ||
*/ | ||
scanDelims(start: number, canSplitWord: boolean): { | ||
can_open: boolean, | ||
can_close: boolean, | ||
length: number | ||
}; | ||
scanDelims(start: number, canSplitWord: boolean): StateInline.Scanned; | ||
Token: typeof Token; | ||
} | ||
export = StateInline; |
@@ -1,23 +0,111 @@ | ||
export = Token; | ||
declare namespace Token { | ||
type Nesting = 1 | 0 | -1; | ||
} | ||
/** | ||
* Create new token and fill passed properties. | ||
*/ | ||
declare class Token { | ||
constructor(type: string, tag: string, nesting: number); | ||
attrGet: (name: string) => string | null; | ||
attrIndex: (name: string) => number; | ||
attrJoin: (name: string, value: string) => void; | ||
attrPush: (attrData: string[]) => void; | ||
attrSet: (name: string, value: string) => void; | ||
attrs: string[][]; | ||
block: boolean; | ||
children: Token[]; | ||
constructor(type: string, tag: string, nesting: Token.Nesting); | ||
/** | ||
* Type of the token, e.g. "paragraph_open" | ||
*/ | ||
type: string; | ||
/** | ||
* HTML tag name, e.g. "p" | ||
*/ | ||
tag: string; | ||
/** | ||
* HTML attributes. Format: `[[name1, value1], [name2, value2]]` | ||
*/ | ||
attrs: [string, string][] | null; | ||
/** | ||
* Source map info. Format: `[line_begin, line_end]` | ||
*/ | ||
map: [number, number] | null; | ||
/** | ||
* Level change (number in {-1, 0, 1} set), where: | ||
* | ||
* - `1` means the tag is opening | ||
* - `0` means the tag is self-closing | ||
* - `-1` means the tag is closing | ||
*/ | ||
nesting: 1 | 0 | -1; | ||
/** | ||
* nesting level, the same as `state.level` | ||
*/ | ||
level: number; | ||
/** | ||
* An array of child nodes (inline and img tokens) | ||
*/ | ||
children: Token[] | null; | ||
/** | ||
* In a case of self-closing tag (code, html, fence, etc.), | ||
* it has contents of this tag. | ||
*/ | ||
content: string; | ||
hidden: boolean; | ||
/** | ||
* '*' or '_' for emphasis, fence string for fence, etc. | ||
*/ | ||
markup: string; | ||
/** | ||
* Fence info string | ||
*/ | ||
info: string; | ||
level: number; | ||
map: number[]; | ||
markup: string; | ||
/** | ||
* A place for plugins to store an arbitrary data | ||
*/ | ||
meta: any; | ||
nesting: number; | ||
tag: string; | ||
type: string; | ||
/** | ||
* True for block-level tokens, false for inline tokens. | ||
* Used in renderer to calculate line breaks | ||
*/ | ||
block: boolean; | ||
/** | ||
* If it's true, ignore this element when rendering. Used for tight lists | ||
* to hide paragraphs. | ||
*/ | ||
hidden: boolean; | ||
/** | ||
* Search attribute index by name. | ||
*/ | ||
attrIndex(name: string): number; | ||
/** | ||
* Add `[name, value]` attribute to list. Init attrs if necessary | ||
*/ | ||
attrPush(attrData: [string, string]): void; | ||
/** | ||
* Set `name` attribute to `value`. Override old value if exists. | ||
*/ | ||
attrSet(name: string, value: string): void; | ||
/** | ||
* Get the value of attribute `name`, or null if it does not exist. | ||
*/ | ||
attrGet(name: string): string | null; | ||
/** | ||
* | ||
* Join value to existing attribute via space. Or create new attribute if not | ||
* exists. Useful to operate with token classes. | ||
*/ | ||
attrJoin(name: string, value: string): void; | ||
} | ||
export = Token; |
{ | ||
"name": "@types/markdown-it", | ||
"version": "0.0.9", | ||
"version": "10.0.0", | ||
"description": "TypeScript definitions for markdown-it", | ||
@@ -9,3 +9,4 @@ "license": "MIT", | ||
"name": "York Yao", | ||
"url": "https://github.com/plantain-00/" | ||
"url": "https://github.com/plantain-00", | ||
"githubUsername": "plantain-00" | ||
}, | ||
@@ -16,6 +17,11 @@ { | ||
"githubUsername": "rapropos" | ||
}, | ||
{ | ||
"name": "duduluu", | ||
"url": "https://github.com/duduluu", | ||
"githubUsername": "duduluu" | ||
} | ||
], | ||
"main": "", | ||
"types": "index", | ||
"types": "index.d.ts", | ||
"repository": { | ||
@@ -28,6 +34,7 @@ "type": "git", | ||
"dependencies": { | ||
"@types/linkify-it": "*" | ||
"@types/linkify-it": "*", | ||
"@types/mdurl": "*" | ||
}, | ||
"typesPublisherContentHash": "9663747266d6a660ee288801cacdf3148ca3701abc6fea42cee626946a851888", | ||
"typeScriptVersion": "2.3" | ||
"typesPublisherContentHash": "583dfd41a40a67437c5d03fe03f0479ecb3bd9fc5e4d9ceb2e05d15a0f79a137", | ||
"typeScriptVersion": "2.8" | ||
} |
@@ -8,10 +8,10 @@ # Installation | ||
# Details | ||
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/markdown-it | ||
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/markdown-it. | ||
Additional Details | ||
* Last updated: Wed, 25 Sep 2019 23:38:32 GMT | ||
* Dependencies: @types/linkify-it | ||
* Global values: markdownit | ||
### Additional Details | ||
* Last updated: Fri, 10 Apr 2020 18:43:18 GMT | ||
* Dependencies: [@types/linkify-it](https://npmjs.com/package/@types/linkify-it), [@types/mdurl](https://npmjs.com/package/@types/mdurl) | ||
* Global values: none | ||
# Credits | ||
These definitions were written by York Yao <https://github.com/plantain-00/>, and Robert Coie <https://github.com/rapropos>. | ||
These definitions were written by [York Yao](https://github.com/plantain-00), [Robert Coie](https://github.com/rapropos), and [duduluu](https://github.com/duduluu). |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
38155
22
1077
1
2
1
+ Added@types/mdurl@*
+ Added@types/mdurl@2.0.0(transitive)