Socket
Socket
Sign inDemoInstall

micromark

Package Overview
Dependencies
Maintainers
1
Versions
40
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

micromark - npm Package Compare versions

Comparing version 2.6.1 to 2.7.0

dist/util/combine-extensions.js

231

dist/compile/html.js

@@ -5,2 +5,4 @@ module.exports = compileHtml

var assign = require('../constant/assign')
var own = require('../constant/has-own-property')

@@ -11,2 +13,3 @@

var safeFromInt = require('../util/safe-from-int')
var combineExtensions = require('../util/combine-html-extensions')

@@ -29,90 +32,102 @@ var characterReferences = {'"': 'quot', '&': 'amp', '<': 'lt', '>': 'gt'}

var handlers = configure(
{
enter: {
blockQuote: onenterblockquote,
codeFenced: onentercodefenced,
codeFencedFenceInfo: buffer,
codeFencedFenceMeta: buffer,
codeIndented: onentercodeindented,
codeText: onentercodetext,
content: onentercontent,
definition: onenterdefinition,
definitionDestinationString: onenterdefinitiondestinationstring,
definitionLabelString: buffer,
definitionTitleString: buffer,
emphasis: onenteremphasis,
htmlFlow: onenterhtmlflow,
htmlText: onenterhtml,
image: onenterimage,
label: buffer,
link: onentermedia,
listItemMarker: onenterlistitemmarker,
listItemValue: onenterlistitemvalue,
listOrdered: onenterlistordered,
listUnordered: onenterlistunordered,
paragraph: onenterparagraph,
reference: onenterreference,
resource: onenterresource,
resourceDestinationString: onenterresourcedestinationstring,
resourceTitleString: buffer,
setextHeading: onentersetextheading,
strong: onenterstrong
},
var handlers = combineExtensions(
[
{
enter: {
blockQuote: onenterblockquote,
codeFenced: onentercodefenced,
codeFencedFenceInfo: buffer,
codeFencedFenceMeta: buffer,
codeIndented: onentercodeindented,
codeText: onentercodetext,
content: onentercontent,
definition: onenterdefinition,
definitionDestinationString: onenterdefinitiondestinationstring,
definitionLabelString: buffer,
definitionTitleString: buffer,
emphasis: onenteremphasis,
htmlFlow: onenterhtmlflow,
htmlText: onenterhtml,
image: onenterimage,
label: buffer,
link: onentermedia,
listItemMarker: onenterlistitemmarker,
listItemValue: onenterlistitemvalue,
listOrdered: onenterlistordered,
listUnordered: onenterlistunordered,
paragraph: onenterparagraph,
reference: onenterreference,
resource: onenterresource,
resourceDestinationString: onenterresourcedestinationstring,
resourceTitleString: buffer,
setextHeading: onentersetextheading,
strong: onenterstrong
},
exit: {
atxHeading: onexitatxheading,
atxHeadingSequence: onexitatxheadingsequence,
autolinkEmail: onexitautolinkemail,
autolinkProtocol: onexitautolinkprotocol,
blockQuote: onexitblockquote,
characterEscapeValue: onexitcharacterescapevalue,
characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,
characterReferenceMarkerNumeric: onexitcharacterreferencemarker,
characterReferenceValue: onexitcharacterreferencevalue,
codeFenced: onexitflowcode,
codeFencedFence: onexitcodefencedfence,
codeFencedFenceInfo: onexitcodefencedfenceinfo,
codeFencedFenceMeta: resume,
codeFlowValue: onexitcodeflowvalue,
codeIndented: onexitflowcode,
codeText: onexitcodetext,
codeTextData: onexitdata,
data: onexitdata,
definition: onexitdefinition,
definitionDestinationString: onexitdefinitiondestinationstring,
definitionLabelString: onexitdefinitionlabelstring,
definitionTitleString: onexitdefinitiontitlestring,
emphasis: onexitemphasis,
hardBreakEscape: onexithardbreak,
hardBreakTrailing: onexithardbreak,
htmlFlow: onexithtml,
htmlFlowData: onexitdata,
htmlText: onexithtml,
htmlTextData: onexitdata,
image: onexitmedia,
label: onexitlabel,
labelText: onexitlabeltext,
lineEnding: onexitlineending,
link: onexitmedia,
listOrdered: onexitlistordered,
listUnordered: onexitlistunordered,
paragraph: onexitparagraph,
reference: onexitreference,
referenceString: onexitreferencestring,
resource: resume,
resourceDestinationString: onexitresourcedestinationstring,
resourceTitleString: onexitresourcetitlestring,
setextHeading: onexitsetextheading,
setextHeadingLineSequence: onexitsetextheadinglinesequence,
setextHeadingText: onexitsetextheadingtext,
strong: onexitstrong,
thematicBreak: onexitthematicbreak
exit: {
atxHeading: onexitatxheading,
atxHeadingSequence: onexitatxheadingsequence,
autolinkEmail: onexitautolinkemail,
autolinkProtocol: onexitautolinkprotocol,
blockQuote: onexitblockquote,
characterEscapeValue: onexitcharacterescapevalue,
characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,
characterReferenceMarkerNumeric: onexitcharacterreferencemarker,
characterReferenceValue: onexitcharacterreferencevalue,
codeFenced: onexitflowcode,
codeFencedFence: onexitcodefencedfence,
codeFencedFenceInfo: onexitcodefencedfenceinfo,
codeFencedFenceMeta: resume,
codeFlowValue: onexitcodeflowvalue,
codeIndented: onexitflowcode,
codeText: onexitcodetext,
codeTextData: onexitdata,
data: onexitdata,
definition: onexitdefinition,
definitionDestinationString: onexitdefinitiondestinationstring,
definitionLabelString: onexitdefinitionlabelstring,
definitionTitleString: onexitdefinitiontitlestring,
emphasis: onexitemphasis,
hardBreakEscape: onexithardbreak,
hardBreakTrailing: onexithardbreak,
htmlFlow: onexithtml,
htmlFlowData: onexitdata,
htmlText: onexithtml,
htmlTextData: onexitdata,
image: onexitmedia,
label: onexitlabel,
labelText: onexitlabeltext,
lineEnding: onexitlineending,
link: onexitmedia,
listOrdered: onexitlistordered,
listUnordered: onexitlistunordered,
paragraph: onexitparagraph,
reference: onexitreference,
referenceString: onexitreferencestring,
resource: resume,
resourceDestinationString: onexitresourcedestinationstring,
resourceTitleString: onexitresourcetitlestring,
setextHeading: onexitsetextheading,
setextHeadingLineSequence: onexitsetextheadinglinesequence,
setextHeadingText: onexitsetextheadingtext,
strong: onexitstrong,
thematicBreak: onexitthematicbreak
}
}
},
settings.htmlExtensions || []
].concat(settings.htmlExtensions || [])
)
var data = {}
var context = {
lineEndingIfNeeded: lineEndingIfNeeded,
options: settings,
encode: encode,
raw: raw,
tag: tag,
buffer: buffer,
resume: resume,
setData: setData,
getData: getData
}
var lineEndingStyle = settings.defaultLineEnding

@@ -173,4 +188,9 @@ var media

result = head.concat(body, events.slice(start, length))
index = -1
if (handlers.enter.null) {
handlers.enter.null.call(context)
}
while (++index < length) {

@@ -181,15 +201,3 @@ handler = handlers[result[index][0]]

handler[result[index][1].type].call(
{
sliceSerialize: result[index][2].sliceSerialize,
lineEndingIfNeeded: lineEndingIfNeeded,
options: settings,
encode: encode,
raw: raw,
tag: tag,
buffer: buffer,
resume: resume,
setData: setData,
getData: getData
},
assign({sliceSerialize: result[index][2].sliceSerialize}, context),
result[index][1]

@@ -200,2 +208,6 @@ )

if (handlers.exit.null) {
handlers.exit.null.call(context)
}
return buffers[0].join('')

@@ -746,28 +758,1 @@ }

}
function configure(handlers, extensions) {
var length = extensions.length
var index = -1
while (++index < length) {
extension(handlers, extensions[index])
}
return handlers
}
function extension(handlers, extension) {
var hook
var left
var right
var type
for (hook in extension) {
left = own.call(handlers, hook) ? handlers[hook] : (handlers[hook] = {})
right = extension[hook]
for (type in right) {
left[type] = right[type]
}
}
}
module.exports = createParser
var own = require('./constant/has-own-property')
var initializeContent = require('./initialize/content')

@@ -11,2 +10,3 @@ var initializeDocument = require('./initialize/document')

var createTokenizer = require('./util/create-tokenizer')
var combineExtensions = require('./util/combine-extensions')

@@ -19,3 +19,6 @@ function createParser(options) {

defined: [],
constructs: configure([constructs].concat(settings.extensions || [])),
constructs: combineExtensions(
[constructs].concat(settings.extensions || [])
),
content: create(initializeContent),

@@ -37,37 +40,1 @@ document: create(initializeDocument),

}
function configure(extensions) {
var all = {}
var length = extensions.length
var index = -1
while (++index < length) {
extension(all, extensions[index])
}
return all
}
function extension(all, extension) {
var hook
var left
var right
var code
var constructs
for (hook in extension) {
left = own.call(all, hook) ? all[hook] : (all[hook] = {})
right = extension[hook]
for (code in right) {
// Note: we prefer the extension over existing constructs.
// There’s no other precedence.
constructs = [].concat(
right[code],
own.call(left, code) ? left[code] : []
)
left[code] = constructs.length === 1 ? constructs[0] : constructs
}
}
}

@@ -38,2 +38,3 @@ exports.tokenize = tokenizeDefinition

function tokenizeDefinition(effects, ok, nok) {
var self = this
var atEnd = effects.attempt(createSpaceTokenizer('whitespace'), after)

@@ -57,5 +58,15 @@ var destinationAfter = effects.attempt(title, atEnd, atEnd)

effects.enter('definitionLabelString')
return atBreak
return atStart
}
function atStart(code) {
/* istanbul ignore next - the footnote plugin turns of definitions when they
* start with a caret. */
if ('_hiddenFootnoteSupport' in self.parser.constructs && code === 94) {
return nok(code)
}
return atBreak(code)
}
function atBreak(code) {

@@ -62,0 +73,0 @@ if (code === null || code === 91 || size > 999) {

@@ -451,5 +451,15 @@ exports.tokenize = tokenizeLabelEnd

effects.enter('chunkString').contentType = 'string'
return referenceData
return atStart
}
function atStart(code) {
/* istanbul ignore next - the footnote plugin turns of refereences when they
* start with a caret. */
if ('_hiddenFootnoteSupport' in self.parser.constructs && code === 94) {
return nok(code)
}
return referenceData(code)
}
function referenceData(code) {

@@ -456,0 +466,0 @@ var token

@@ -5,2 +5,4 @@ exports.tokenize = tokenizelabelImage

function tokenizelabelImage(effects, ok, nok) {
var self = this
return start

@@ -27,3 +29,3 @@

effects.exit('labelImage')
return ok
return after
}

@@ -33,2 +35,12 @@

}
function after(code) {
/* istanbul ignore next - the footnote plugin turns of images when they
* start with a caret. */
if ('_hiddenFootnoteSupport' in self.parser.constructs && code === 94) {
return nok(code)
}
return ok(code)
}
}

@@ -5,2 +5,4 @@ exports.tokenize = tokenizelabelLink

function tokenizelabelLink(effects, ok, nok) {
var self = this
return start

@@ -19,4 +21,14 @@

effects.exit('labelLink')
return ok
return after
}
function after(code) {
/* istanbul ignore next - the footnote plugin turns of links when they start
* with a caret. */
if ('_hiddenFootnoteSupport' in self.parser.constructs && code === 94) {
return nok(code)
}
return ok(code)
}
}

@@ -6,2 +6,3 @@ module.exports = compileHtml

var codes = require('../character/codes')
var assign = require('../constant/assign')
var constants = require('../constant/constants')

@@ -13,2 +14,3 @@ var own = require('../constant/has-own-property')

var safeFromInt = require('../util/safe-from-int')
var combineExtensions = require('../util/combine-html-extensions')

@@ -31,88 +33,100 @@ var characterReferences = {'"': 'quot', '&': 'amp', '<': 'lt', '>': 'gt'}

var handlers = configure(
{
enter: {
blockQuote: onenterblockquote,
codeFenced: onentercodefenced,
codeFencedFenceInfo: buffer,
codeFencedFenceMeta: buffer,
codeIndented: onentercodeindented,
codeText: onentercodetext,
content: onentercontent,
definition: onenterdefinition,
definitionDestinationString: onenterdefinitiondestinationstring,
definitionLabelString: buffer,
definitionTitleString: buffer,
emphasis: onenteremphasis,
htmlFlow: onenterhtmlflow,
htmlText: onenterhtml,
image: onenterimage,
label: buffer,
link: onentermedia,
listItemMarker: onenterlistitemmarker,
listItemValue: onenterlistitemvalue,
listOrdered: onenterlistordered,
listUnordered: onenterlistunordered,
paragraph: onenterparagraph,
reference: onenterreference,
resource: onenterresource,
resourceDestinationString: onenterresourcedestinationstring,
resourceTitleString: buffer,
setextHeading: onentersetextheading,
strong: onenterstrong
},
exit: {
atxHeading: onexitatxheading,
atxHeadingSequence: onexitatxheadingsequence,
autolinkEmail: onexitautolinkemail,
autolinkProtocol: onexitautolinkprotocol,
blockQuote: onexitblockquote,
characterEscapeValue: onexitcharacterescapevalue,
characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,
characterReferenceMarkerNumeric: onexitcharacterreferencemarker,
characterReferenceValue: onexitcharacterreferencevalue,
codeFenced: onexitflowcode,
codeFencedFence: onexitcodefencedfence,
codeFencedFenceInfo: onexitcodefencedfenceinfo,
codeFencedFenceMeta: resume,
codeFlowValue: onexitcodeflowvalue,
codeIndented: onexitflowcode,
codeText: onexitcodetext,
codeTextData: onexitdata,
data: onexitdata,
definition: onexitdefinition,
definitionDestinationString: onexitdefinitiondestinationstring,
definitionLabelString: onexitdefinitionlabelstring,
definitionTitleString: onexitdefinitiontitlestring,
emphasis: onexitemphasis,
hardBreakEscape: onexithardbreak,
hardBreakTrailing: onexithardbreak,
htmlFlow: onexithtml,
htmlFlowData: onexitdata,
htmlText: onexithtml,
htmlTextData: onexitdata,
image: onexitmedia,
label: onexitlabel,
labelText: onexitlabeltext,
lineEnding: onexitlineending,
link: onexitmedia,
listOrdered: onexitlistordered,
listUnordered: onexitlistunordered,
paragraph: onexitparagraph,
reference: onexitreference,
referenceString: onexitreferencestring,
resource: resume,
resourceDestinationString: onexitresourcedestinationstring,
resourceTitleString: onexitresourcetitlestring,
setextHeading: onexitsetextheading,
setextHeadingLineSequence: onexitsetextheadinglinesequence,
setextHeadingText: onexitsetextheadingtext,
strong: onexitstrong,
thematicBreak: onexitthematicbreak
var handlers = combineExtensions(
[
{
enter: {
blockQuote: onenterblockquote,
codeFenced: onentercodefenced,
codeFencedFenceInfo: buffer,
codeFencedFenceMeta: buffer,
codeIndented: onentercodeindented,
codeText: onentercodetext,
content: onentercontent,
definition: onenterdefinition,
definitionDestinationString: onenterdefinitiondestinationstring,
definitionLabelString: buffer,
definitionTitleString: buffer,
emphasis: onenteremphasis,
htmlFlow: onenterhtmlflow,
htmlText: onenterhtml,
image: onenterimage,
label: buffer,
link: onentermedia,
listItemMarker: onenterlistitemmarker,
listItemValue: onenterlistitemvalue,
listOrdered: onenterlistordered,
listUnordered: onenterlistunordered,
paragraph: onenterparagraph,
reference: onenterreference,
resource: onenterresource,
resourceDestinationString: onenterresourcedestinationstring,
resourceTitleString: buffer,
setextHeading: onentersetextheading,
strong: onenterstrong
},
exit: {
atxHeading: onexitatxheading,
atxHeadingSequence: onexitatxheadingsequence,
autolinkEmail: onexitautolinkemail,
autolinkProtocol: onexitautolinkprotocol,
blockQuote: onexitblockquote,
characterEscapeValue: onexitcharacterescapevalue,
characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,
characterReferenceMarkerNumeric: onexitcharacterreferencemarker,
characterReferenceValue: onexitcharacterreferencevalue,
codeFenced: onexitflowcode,
codeFencedFence: onexitcodefencedfence,
codeFencedFenceInfo: onexitcodefencedfenceinfo,
codeFencedFenceMeta: resume,
codeFlowValue: onexitcodeflowvalue,
codeIndented: onexitflowcode,
codeText: onexitcodetext,
codeTextData: onexitdata,
data: onexitdata,
definition: onexitdefinition,
definitionDestinationString: onexitdefinitiondestinationstring,
definitionLabelString: onexitdefinitionlabelstring,
definitionTitleString: onexitdefinitiontitlestring,
emphasis: onexitemphasis,
hardBreakEscape: onexithardbreak,
hardBreakTrailing: onexithardbreak,
htmlFlow: onexithtml,
htmlFlowData: onexitdata,
htmlText: onexithtml,
htmlTextData: onexitdata,
image: onexitmedia,
label: onexitlabel,
labelText: onexitlabeltext,
lineEnding: onexitlineending,
link: onexitmedia,
listOrdered: onexitlistordered,
listUnordered: onexitlistunordered,
paragraph: onexitparagraph,
reference: onexitreference,
referenceString: onexitreferencestring,
resource: resume,
resourceDestinationString: onexitresourcedestinationstring,
resourceTitleString: onexitresourcetitlestring,
setextHeading: onexitsetextheading,
setextHeadingLineSequence: onexitsetextheadinglinesequence,
setextHeadingText: onexitsetextheadingtext,
strong: onexitstrong,
thematicBreak: onexitthematicbreak
}
}
},
settings.htmlExtensions || []
].concat(settings.htmlExtensions || [])
)
var data = {}
var context = {
lineEndingIfNeeded: lineEndingIfNeeded,
options: settings,
encode: encode,
raw: raw,
tag: tag,
buffer: buffer,
resume: resume,
setData: setData,
getData: getData
}
var lineEndingStyle = settings.defaultLineEnding

@@ -174,4 +188,9 @@ var media

result = head.concat(body, events.slice(start, length))
index = -1
if (handlers.enter.null) {
handlers.enter.null.call(context)
}
while (++index < length) {

@@ -182,14 +201,3 @@ handler = handlers[result[index][0]]

handler[result[index][1].type].call(
{
sliceSerialize: result[index][2].sliceSerialize,
lineEndingIfNeeded: lineEndingIfNeeded,
options: settings,
encode: encode,
raw: raw,
tag: tag,
buffer: buffer,
resume: resume,
setData: setData,
getData: getData
},
assign({sliceSerialize: result[index][2].sliceSerialize}, context),
result[index][1]

@@ -200,2 +208,6 @@ )

if (handlers.exit.null) {
handlers.exit.null.call(context)
}
return buffers[0].join('')

@@ -752,28 +764,1 @@ }

}
function configure(handlers, extensions) {
var length = extensions.length
var index = -1
while (++index < length) {
extension(handlers, extensions[index])
}
return handlers
}
function extension(handlers, extension) {
var hook
var left
var right
var type
for (hook in extension) {
left = own.call(handlers, hook) ? handlers[hook] : (handlers[hook] = {})
right = extension[hook]
for (type in right) {
left[type] = right[type]
}
}
}
module.exports = createParser
var own = require('./constant/has-own-property')
var initializeContent = require('./initialize/content')

@@ -11,2 +10,3 @@ var initializeDocument = require('./initialize/document')

var createTokenizer = require('./util/create-tokenizer')
var combineExtensions = require('./util/combine-extensions')

@@ -19,3 +19,5 @@ function createParser(options) {

defined: [],
constructs: configure([constructs].concat(settings.extensions || [])),
constructs: combineExtensions(
[constructs].concat(settings.extensions || [])
),
content: create(initializeContent),

@@ -37,37 +39,1 @@ document: create(initializeDocument),

}
function configure(extensions) {
var all = {}
var length = extensions.length
var index = -1
while (++index < length) {
extension(all, extensions[index])
}
return all
}
function extension(all, extension) {
var hook
var left
var right
var code
var constructs
for (hook in extension) {
left = own.call(all, hook) ? all[hook] : (all[hook] = {})
right = extension[hook]
for (code in right) {
// Note: we prefer the extension over existing constructs.
// There’s no other precedence.
constructs = [].concat(
right[code],
own.call(left, code) ? left[code] : []
)
left[code] = constructs.length === 1 ? constructs[0] : constructs
}
}
}

@@ -40,2 +40,3 @@ exports.tokenize = tokenizeDefinition

function tokenizeDefinition(effects, ok, nok) {
var self = this
var atEnd = effects.attempt(createSpaceTokenizer(types.whitespace), after)

@@ -59,5 +60,18 @@ var destinationAfter = effects.attempt(title, atEnd, atEnd)

effects.enter(types.definitionLabelString)
return atBreak
return atStart
}
function atStart(code) {
/* istanbul ignore next - the footnote plugin turns of definitions when they
* start with a caret. */
if (
'_hiddenFootnoteSupport' in self.parser.constructs &&
code === codes.caret
) {
return nok(code)
}
return atBreak(code)
}
function atBreak(code) {

@@ -64,0 +78,0 @@ if (

@@ -470,5 +470,18 @@ exports.tokenize = tokenizeLabelEnd

effects.enter(types.chunkString).contentType = constants.contentTypeString
return referenceData
return atStart
}
function atStart(code) {
/* istanbul ignore next - the footnote plugin turns of refereences when they
* start with a caret. */
if (
'_hiddenFootnoteSupport' in self.parser.constructs &&
code === codes.caret
) {
return nok(code)
}
return referenceData(code)
}
function referenceData(code) {

@@ -475,0 +488,0 @@ var token

@@ -8,2 +8,4 @@ exports.tokenize = tokenizelabelImage

function tokenizelabelImage(effects, ok, nok) {
var self = this
return start

@@ -30,3 +32,3 @@

effects.exit(types.labelImage)
return ok
return after
}

@@ -36,2 +38,15 @@

}
function after(code) {
/* istanbul ignore next - the footnote plugin turns of images when they
* start with a caret. */
if (
'_hiddenFootnoteSupport' in self.parser.constructs &&
code === codes.caret
) {
return nok(code)
}
return ok(code)
}
}

@@ -8,2 +8,4 @@ exports.tokenize = tokenizelabelLink

function tokenizelabelLink(effects, ok, nok) {
var self = this
return start

@@ -22,4 +24,17 @@

effects.exit(types.labelLink)
return ok
return after
}
function after(code) {
/* istanbul ignore next - the footnote plugin turns of links when they start
* with a caret. */
if (
'_hiddenFootnoteSupport' in self.parser.constructs &&
code === codes.caret
) {
return nok(code)
}
return ok(code)
}
}
{
"name": "micromark",
"version": "2.6.1",
"version": "2.7.0",
"description": "small commonmark compliant markdown parser with positional info and concrete tokens",

@@ -5,0 +5,0 @@ "license": "MIT",

@@ -88,3 +88,3 @@ <h1 align="center">

Or:
Or (streaming interface):

@@ -98,3 +98,26 @@ ```js

Or use [**remark**][remark], which will soon include micromark, has ASTs, and is
Or (extensions, in this case [`micromark-extension-gfm`][gfm]):
```js
var micromark = require('micromark')
var gfmSyntax = require('micromark-extension-gfm')
var gfmHtml = require('micromark-extension-gfm/html')
var doc = '* [x] contact@example.com ~~strikethrough~~'
var result = micromark(doc, {
extensions: [gfmSyntax()],
htmlExtensions: [gfmHtml]
})
console.log(result)
```
```html
<ul>
<li><input checked="" disabled="" type="checkbox"> <a href="mailto:contact@example.com">contact@example.com</a> <del>strikethrough</del></li>
</ul>
```
Or use [**remark**][remark], which will soon include micromark and is pretty
stable.

@@ -197,2 +220,4 @@

* [`micromark/micromark-extension-footnote`](https://github.com/micromark/micromark-extension-footnote)
— support footnotes
* [`micromark/micromark-extension-frontmatter`](https://github.com/micromark/micromark-extension-frontmatter)

@@ -218,3 +243,3 @@ — support frontmatter (YAML, TOML, etc)

micromark will adhere to semver at `3.0.0`.
Use tilde ranges for now: `"micromark": "~2.0.0"`.
Use tilde ranges for now: `"micromark": "~2.7.0"`.

@@ -221,0 +246,0 @@ ## Security

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