Socket
Socket
Sign inDemoInstall

@types/markdown-it

Package Overview
Dependencies
Maintainers
1
Versions
37
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@types/markdown-it - npm Package Compare versions

Comparing version 0.0.9 to 10.0.0

markdown-it/lib/common/entities.d.ts

11

markdown-it/index.d.ts

@@ -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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc