1
1
mirror of https://github.com/mdx-js/mdx.git synced 2024-10-04 03:17:09 +03:00

chore: enable prettier for .md/.mdx files - close #844 (#927)

* chore: enable prettier for .md/.mdx files - close #844

* chore: fix some incorrect code types
This commit is contained in:
JounQin 2020-01-28 11:26:56 +08:00 committed by GitHub
parent 8ebde24018
commit 26a3a3c500
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
74 changed files with 965 additions and 916 deletions

View File

@ -6,6 +6,7 @@ public
.next
.*cache
*.min.js
!/.*.js
examples/**/node_modules/**/*.*

View File

@ -1,6 +1,4 @@
.next
dist
node_modules
*.md
*.mdx
*.min.*

21
.remarkrc.js Normal file
View File

@ -0,0 +1,21 @@
const unified = require('unified')
const english = require('retext-english')
const wooorm = require('retext-preset-wooorm')
module.exports = {
plugins: [
'./packages/remark-mdx',
'preset-wooorm',
'preset-prettier',
[
'retext',
unified()
.use(english)
.use(wooorm)
.use({
plugins: [[require('retext-sentence-spacing'), false]]
})
],
['validate-links', false]
]
}

View File

@ -1,3 +1,3 @@
# 404
Page not found. [Return Home](/)
Page not found. [Return Home](/)

View File

@ -1,7 +1,7 @@
# About
MDX is based on the [original `.mdx` proposal][idea] by Guillermo Rauch
([@rauchg][rauchg]). Its syntax is defined by an official [specification][].
([@rauchg][rauchg]). Its syntax is defined by an official [specification][].
The source code for MDX is available on [GitHub][] and is [MIT licensed][license].
The project is governed by the [unified collective][governance].
@ -13,10 +13,10 @@ available on [GitHub][design].
### Authors
* [John Otander][john] ([@4lpine][4lpine]) [Compositor][] + [Clearbit][]
* [Tim Neutkens][tim] ([@timneutkens][timneutkens]) [ZEIT][]
* [Guillermo Rauch][guillermo] ([@rauchg][rauchg]) [ZEIT][]
* [Brent Jackson][brent] ([@jxnblk][jxnblk]) [Compositor][]
- [John Otander][john] ([@4lpine][4lpine]) [Compositor][] + [Clearbit][]
- [Tim Neutkens][tim] ([@timneutkens][timneutkens]) [ZEIT][]
- [Guillermo Rauch][guillermo] ([@rauchg][rauchg]) [ZEIT][]
- [Brent Jackson][brent] ([@jxnblk][jxnblk]) [Compositor][]
## Related
@ -31,62 +31,45 @@ PR!
These projects define the syntax which MDX blends together (MD and JSX).
* [Markdown](https://daringfireball.net/projects/markdown/syntax)
* [JSX](https://reactjs.org/docs/introducing-jsx.html)
* [React](https://reactjs.org/)
- [Markdown](https://daringfireball.net/projects/markdown/syntax)
- [JSX](https://reactjs.org/docs/introducing-jsx.html)
- [React](https://reactjs.org/)
### Parsing and implementation
* [remark](https://remark.js.org)
* [unified](https://unifiedjs.com)
* [babel](https://babeljs.io)
- [remark](https://remark.js.org)
- [unified](https://unifiedjs.com)
- [babel](https://babeljs.io)
### Libraries
* [MDXC](https://github.com/jamesknelson/mdxc)
* [Markdown Component Loader](https://github.com/ticky/markdown-component-loader)
* [markdown-in-js](https://github.com/threepointone/markdown-in-js)
* [remark-jsx](https://github.com/fazouane-marouane/remark-jsx)
* [remark-react](https://github.com/mapbox/remark-react)
* [eslint-mdx](https://github.com/rx-ts/eslint-mdx)
- [MDXC](https://github.com/jamesknelson/mdxc)
- [Markdown Component Loader](https://github.com/ticky/markdown-component-loader)
- [markdown-in-js](https://github.com/threepointone/markdown-in-js)
- [remark-jsx](https://github.com/fazouane-marouane/remark-jsx)
- [remark-react](https://github.com/mapbox/remark-react)
- [eslint-mdx](https://github.com/rx-ts/eslint-mdx)
### Other
* [IA Markdown Content Blocks](https://github.com/iainc/Markdown-Content-Blocks)
* [Idyll: Markup language for interactive documents](https://idyll-lang.org)
- [IA Markdown Content Blocks](https://github.com/iainc/Markdown-Content-Blocks)
- [Idyll: Markup language for interactive documents](https://idyll-lang.org)
[github]: https://github.com/mdx-js/mdx
[license]: https://github.com/mdx-js/mdx/blob/master/license
[specification]: https://github.com/mdx-js/specification
[governance]: https://github.com/unifiedjs/collective
[design]: https://github.com/mdx-js/design
[idea]: https://spectrum.chat/thread/1021be59-2738-4511-aceb-c66921050b9a
[john]: https://johno.com
[tim]: https://github.com/timneutkens
[guillermo]: https://rauchg.com
[brent]: https://jxnblk.com
[4lpine]: https://twitter.com/4lpine
[rauchg]: https://twitter.com/rauchg
[timneutkens]: https://twitter.com/timneutkens
[jxnblk]: https://twitter.com/jxnblk
[evil rabbit]: https://twitter.com/evilrabbit_
[compositor]: https://compositor.io
[zeit]: https://zeit.co
[clearbit]: https://clearbit.com

View File

@ -11,8 +11,8 @@ the JSX string is created.
## Table of Contents
* [Async API](#async-api)
* [Sync API](#sync-api)
- [Async API](#async-api)
- [Sync API](#sync-api)
## Async API
@ -26,7 +26,7 @@ You should use the async API, unless you have very good reasons to use the
You can use the library directly:
```js
var mdx = require("@mdx-js/mdx")
var mdx = require('@mdx-js/mdx')
const content = `
# Hello, world!
@ -65,7 +65,7 @@ import TomatoBox from 'tomato-box'
const MDXLayout = props => <main {...props} />
const layoutProps = {
author: "Fred Flintstone"
author: 'Fred Flintstone'
}
export default function MDXContent(props) {
@ -77,10 +77,10 @@ export default function MDXContent(props) {
<TomatoBox />
</MDXLayout>
</div>
);
)
}
MDXContent.isMDXComponent = true;
MDXContent.isMDXComponent = true
```
This is pretty powerful because the output is rather readable.
@ -116,13 +116,8 @@ const jsx = mdx.sync(mdxText)
MDXs [runtime][] package has [example][] usage.
[ast]: /advanced/ast
[plugins]: /plugins
[async]: #async-api
[sync]: #sync-api
[runtime]: /advanced/runtime
[example]: https://github.com/mdx-js/mdx/blob/d5a5189e715dc28370de13f6cc0fd18a06f0f122/packages/runtime/src/index.js#L16-L18

View File

@ -1,11 +1,16 @@
import { Button } from '@rebass/emotion'
import {Button} from '@rebass/emotion'
# AST
export const AST_EXPLORER_LINK = 'https://astexplorer.net/#/gist/2befce6edce1475eb4bbec001356b222/35997d3b44347daabad8dd1a107adc22dd873de2'
export const AST_EXPLORER_LINK =
'https://astexplorer.net/#/gist/2befce6edce1475eb4bbec001356b222/35997d3b44347daabad8dd1a107adc22dd873de2'
<Button as="a" href={AST_EXPLORER_LINK}>Explore the AST</Button>
<Button as="a" ml={2} href="/playground">Use the Playground</Button>
<Button as="a" href={AST_EXPLORER_LINK}>
Explore the AST
</Button>
<Button as="a" ml={2} href="/playground">
Use the Playground
</Button>
MDX, the library, uses two syntax trees.
The first, [MDXAST][], represents markdown with embedded JSX, and is a superset of [mdast][].
@ -22,10 +27,10 @@ languages created by the community.
The majority of the MDXAST specification is defined by [mdast][].
MDXAST is a superset with the following additional node types:
* `jsx` (instead of `html`)
* `comment` (instead of `html` comments)
* `import`
* `export`
- `jsx` (instead of `html`)
- `comment` (instead of `html` comments)
- `import`
- `export`
Any MDX document without those constructs is valid [mdast][].
@ -39,29 +44,21 @@ its defined by [hast][] already.
MDXAST defines the following additional node types:
* `jsx` (instead of `html`)
* `import`
* `export`
* `inlineCode`
- `jsx` (instead of `html`)
- `import`
- `export`
- `inlineCode`
`inlineCode` is there to accurately represent Markdowns inline code.
For more information, see the [MDXHAST][] specification.
[mdxast]: #mdxast
[mdxhast]: #mdxhast
[comment]: #comment
[mdast]: https://github.com/syntax-tree/mdast
[hast]: https://github.com/syntax-tree/hast
[specification]: https://github.com/mdx-js/specification
[remark]: https://github.com/remarkjs/remark
[rehype]: https://github.com/rehypejs/rehype
[unified]: https://github.com/unifiedjs/unified

View File

@ -51,28 +51,33 @@ documents via the [MDXProvider](#mdxprovider).
### Layout props
Youll also notice that `layoutProps` is created based on your exports
and then passed to the wrapper. This allows for the wrapper to use
and then passed to the wrapper. This allows for the wrapper to use
those props automatically for handling things like adding an author
bio to the wrapped document.
## `makeShortcodes`
There is one other function added to the compiled output: `makeShortcodes`.
This is added for [shortcode support](/blog/shortcodes). Its used in order
This is added for [shortcode support](/blog/shortcodes). Its used in order
to stub any components that arent directly imported so that there wont be
any `ReferenceError`s. If theyre passed to the `MDXProvider`, the custom
any `ReferenceError`s. If theyre passed to the `MDXProvider`, the custom
JSX pragma will pull the component from context and use that in place of the
stubbed `Button`:
```js
const makeShortcode = name => function MDXDefaultShortcode(props) {
console.warn("Component " + name + " was not imported, exported, or provided by MDXProvider as global scope")
return <div {...props}/>
}
const makeShortcode = name =>
function MDXDefaultShortcode(props) {
console.warn(
'Component ' +
name +
' was not imported, exported, or provided by MDXProvider as global scope'
)
return <div {...props} />
}
// This will be ignored by MDX if you wrap your MDX document with
// <MDXProvider components={{ Button: MyCustomButton }}>
const Button = makeShortcode("Button")
const Button = makeShortcode('Button')
```
## `isMDXComponent`
@ -97,9 +102,9 @@ export default () => (
### Caveats
Because MDXProvider uses React Context directly, it is affected by
the same caveats. It is therefore important that you do not declare
your components mapping inline in the JSX. Doing so will trigger a rerender
of your entire MDX page with every render cycle. Not only is this bad for
the same caveats. It is therefore important that you do not declare
your components mapping inline in the JSX. Doing so will trigger a rerender
of your entire MDX page with every render cycle. Not only is this bad for
performance, but it can cause unwanted side affects, like breaking in-page
browser navigation.
@ -112,9 +117,9 @@ state object:
```js
import React from 'react'
import { MDXProvider } from '@mdx-js/react'
import {MDXProvider} from '@mdx-js/react'
import { Heading, Text, Pre, Code, Table } from './components'
import {Heading, Text, Pre, Code, Table} from './components'
export default class Layout extends React.Component {
state = {

View File

@ -1,3 +1,3 @@
import Redirect from 'gatsby-theme-mdx/src/components/redirect'
<Redirect to='/contributing' />
<Redirect to="/contributing" />

View File

@ -6,17 +6,17 @@ Most of the time, it “Just Works”.
But there are some reasons to interact with the MDX library and its internals
directly.
* [API](/advanced/api)
— learn about the async and sync MDX API
* [Runtime](/advanced/runtime)
— learn how to use MDX in a runtime environment (typically discouraged)
* [AST](/advanced/ast)
— learn about the intermediate abstract syntax tree
* [Components](/advanced/components)
— learn about the generated JSX
* [remark and rehype plugins](/advanced/plugins)
— learn how to inspect and change the syntax tree
* [transform content](/advanced/transform-content)
— learn how to interact with or manipulate raw MDX content
- [API](/advanced/api)
— learn about the async and sync MDX API
- [Runtime](/advanced/runtime)
— learn how to use MDX in a runtime environment (typically discouraged)
- [AST](/advanced/ast)
— learn about the intermediate abstract syntax tree
- [Components](/advanced/components)
— learn about the generated JSX
- [remark and rehype plugins](/advanced/plugins)
— learn how to inspect and change the syntax tree
- [transform content](/advanced/transform-content)
— learn how to interact with or manipulate raw MDX content
[getting-started]: /getting-started

View File

@ -25,8 +25,8 @@ table of contents][remark-toc], and many more.
For more information, see the following links:
* [List of remark plugins][remark-plugins]
* [List of rehype plugins][rehype-plugins]
- [List of remark plugins][remark-plugins]
- [List of rehype plugins][rehype-plugins]
Creating a plugin for MDX is mostly the same as creating a plugin for remark
or rehype.
@ -120,8 +120,7 @@ const retextSmartypants = require('retext-smartypants')
const mdx = require('@mdx-js/mdx')
function remarkSmartypants(options) {
const processor = retext()
.use(retextSmartypants, options)
const processor = retext().use(retextSmartypants, options)
function transformer(tree) {
visit(tree, 'text', node => {
@ -141,33 +140,21 @@ mdx.sync(mdxText, {
// regular quotes → smart quotes,
// triple dash → em dash
// etc.
[remarkSmartypants, { dashes: 'oldschool' }]
[remarkSmartypants, {dashes: 'oldschool'}]
]
})
```
[ast]: /advanced/ast
[write-plugin]: /guides/writing-a-plugin
[remark]: https://github.com/remarkjs/remark
[rehype]: https://github.com/rehypejs/rehype
[remark-capitalize]: https://github.com/zeit/remark-capitalize
[remark-toc]: https://github.com/remarkjs/remark-toc
[remark-plugins]: https://github.com/remarkjs/remark/blob/master/doc/plugins.md#list-of-plugins
[rehype-plugins]: https://github.com/rehypejs/rehype/blob/master/doc/plugins.md#list-of-plugins
[retext]: https://github.com/retextjs/retext
[remarkjs/remark#224]: https://github.com/remarkjs/remark/issues/224
[visit]: https://github.com/syntax-tree/unist-util-visit
[retext-smartypants]: https://github.com/retextjs/retext-smartypants
[create-plugin]: https://unifiedjs.com/create-a-plugin.html

View File

@ -1,3 +1,3 @@
import Redirect from 'gatsby-theme-mdx/src/components/redirect'
<Redirect to='/advanced/using-plugins#using-retext-plugins' />
<Redirect to="/advanced/using-plugins#using-retext-plugins" />

View File

@ -1,3 +1,3 @@
import Redirect from 'gatsby-theme-mdx/src/components/redirect'
<Redirect to='/advanced/ast' />
<Redirect to="/advanced/ast" />

View File

@ -1,3 +1,3 @@
import Redirect from 'gatsby-theme-mdx/src/components/redirect'
<Redirect to='/advanced/api#sync-api' />
<Redirect to="/advanced/api#sync-api" />

View File

@ -6,7 +6,7 @@ are many utilities you can use to work with MDX.
You can utilize [to-vfile][] to read and write MDX files
and you can leverage [remark][] and [remark-mdx][]
to parse and process MDX content. The remark-mdx library is a parsing
to parse and process MDX content. The remark-mdx library is a parsing
extension to enhance the Markdown [AST][] to understand MDX
(resulting in [MDXAST][]), giving you access and insight to MDX
attributes, namely imports, exports, and jsx.
@ -15,12 +15,12 @@ Lets see an example of what we have explained so far.
Say we have the following file, `example.mdx`:
```md
import Component from 'Component';
```mdx
import Component from 'Component'
export const meta = {
prop: 'value'
};
prop: 'value'
}
# Title
@ -33,24 +33,24 @@ And our script, `example.js`, looks as follows:
```js
const {read, write} = require('to-vfile')
const remark = require('remark');
const mdx = require('remark-mdx');
const remark = require('remark')
const mdx = require('remark-mdx')
(async () => {
const path = './example.mdx';
const file = await read(path);
const contents = await remark()
.use(mdx)
.use(() => (tree) => {
console.log(tree)
})
.process(file);
await write({
path,
contents
;(async () => {
const path = './example.mdx'
const file = await read(path)
const contents = await remark()
.use(mdx)
.use(() => tree => {
console.log(tree)
})
})();
.process(file)
await write({
path,
contents
})
})()
```
Now, running `node example.js` yields:
@ -89,21 +89,12 @@ generated table of contents based on the other content in the MDX file or
save the modified content back to the original file.
[ast]: /advanced/ast
[mdxast]: /advanced/ast#mdxast
[remark]: https://github.com/remarkjs/remark
[remark-mdx]: https://github.com/mdx-js/mdx/tree/master/packages/remark-mdx
[remark-mdx-metadata]: https://github.com/manovotny/remark-mdx-metadata
[remark-plugins]: /advanced/plugins
[remark-toc]: https://github.com/remarkjs/remark-toc
[to-vfile]: https://github.com/vfile/to-vfile
[unified]: https://unifiedjs.com
[writing-a-plugin]: /guides/writing-a-plugin

View File

@ -38,7 +38,7 @@ declare module '@mdx-js/react' {
| 'img'
export type Components = {
[key in ComponentType]?: React.ComponentType<{ children: React.ReactNode }>
[key in ComponentType]?: React.ComponentType<{children: React.ReactNode}>
}
export interface MDXProviderProps {
@ -49,10 +49,10 @@ declare module '@mdx-js/react' {
}
```
If you want to improve upon the types we would *love* a PR to
If you want to improve upon the types we would _love_ a PR to
improve the developer experience for TypeScript users.
* * *
---
If youre getting errors from TypeScript related to imports with an `*.mdx`
extension, create an `mdx.d.ts` file in your types directory and include it

View File

@ -4,7 +4,7 @@
`MDXTag`, for those that arent aware, is a critical piece in the way
MDX replaces HTML primitives like `<pre>` and `<h1>` with custom React
Components. [Ive previously
Components. [Ive previously
written](https://www.christopherbiscardi.com/post/codeblocks-mdx-and-mdx-utils)
about the way `MDXTag` works when trying to replace the `<pre>` tag
with a custom code component.
@ -39,7 +39,7 @@ exports.preToCodeBlock = preProps => {
```
So `MDXTag` is a real Component in the middle of all of the other MDX
rendered elements. All of the code is included here for reference.
rendered elements. All of the code is included here for reference.
```js
import React, {Component} from 'react'
@ -86,7 +86,7 @@ export default withMDXComponents(MDXTag)
`MDXTag` is used in the [mdx-hast-to-jsx
conversion](https://github.com/mdx-js/mdx/blob/e1bcf1b1a352c9728424b01c1bb5d62e450eb48d/packages/mdx/mdx-hast-to-jsx.js#L163-L165),
which is the final step in the MDX AST pipeline. Every renderable
which is the final step in the MDX AST pipeline. Every renderable
element is wrapped in an `MDXTag`, and `MDXTag` handles rendering the
element later.
@ -171,12 +171,12 @@ wrapping `MDXTag`.
Now that weve cleaned up the intermediary representation, we need to
make sure that we have the same functionality as the old
`MDXTag`. This is done through a custom `createElement`
implementation. Typically when using React, we use
`React.createElement` to render the elements on screen. This is even
`MDXTag`. This is done through a custom `createElement`
implementation. Typically when using React, we use
`React.createElement` to render the elements on screen. This is even
true if youre using JSX because JSX tags such as `<div>` compile to
`createElement` calls. So this time instead of using
`React.createElement` well be using our own. [Check it out in the MDX
`createElement` calls. So this time instead of using
`React.createElement` well be using our own. [Check it out in the MDX
repo](https://github.com/mdx-js/mdx/blob/0506708bed0ac787f605b0a97ef77d1954fa1275/packages/react/src/create-element.js)
Reproduced here is our `createElement` function and the logic for how
@ -220,12 +220,12 @@ export default function(type, props) {
One really cool application of the new output format using a custom
`createElement` is that we can now write versions of it for Vue and
other frameworks. Since the pragma insertion is the responsibility of
other frameworks. Since the pragma insertion is the responsibility of
the webpack (or other bundlers) loader, swapping the pragma can be an
option in mdx-loader as long as we have a Vue `createElement` to point
to.
* * *
---
Written by [Chris Biscardi](https://christopherbiscardi.com)

View File

@ -1,5 +1,5 @@
# Blog
* [Shortcodes](/blog/shortcodes)
* [V1: MDX goes stable](/blog/v1)
* [Custom pragma](/blog/custom-pragma)
- [Shortcodes](/blog/shortcodes)
- [V1: MDX goes stable](/blog/v1)
- [Custom pragma](/blog/custom-pragma)

View File

@ -1,12 +1,12 @@
import { Button } from '@rebass/emotion'
import {Button} from '@rebass/emotion'
[MDX Blog](/blog)
# Shortcodes
An exciting new feature in MDX v1 is global shortcodes. This
An exciting new feature in MDX v1 is global shortcodes. This
allows you to expose components to all of your documents in
your app or website. This is a useful feature for common
your app or website. This is a useful feature for common
components like YouTube embeds, Twitter cards, or anything
else frequently used in your documents.
@ -16,26 +16,24 @@ you can add in components with the `MDXProvider`:
```js
// src/App.js
import React from 'react'
import { MDXProvider } from '@mdx-js/react'
import { YouTube, Twitter, TomatoBox } from './ui'
import {MDXProvider} from '@mdx-js/react'
import {YouTube, Twitter, TomatoBox} from './ui'
const shortcodes = { YouTube, Twitter, TomatoBox }
const shortcodes = {YouTube, Twitter, TomatoBox}
export default ({ children }) => (
<MDXProvider components={shortcodes}>
{children}
</MDXProvider>
export default ({children}) => (
<MDXProvider components={shortcodes}>{children}</MDXProvider>
)
```
Then, any MDX document thats wrapped in `App` has access to
`YouTube`, `Twitter`, and `TomatoBox`. Shortcodes are nothing
`YouTube`, `Twitter`, and `TomatoBox`. Shortcodes are nothing
more than components, so you can reference them anywhere in an
MDX document with JSX.
`example.mdx`
```md
```mdx
# Hello world!
Heres a YouTube shortcode:
@ -49,18 +47,21 @@ Heres a YouTube shortcode wrapped in TomatoBox:
</TomatoBox>
```
Thats it. :tada: :rocket:
Thats it. :tada: :rocket:
<Button as="a" href="https://codesandbox.io/s/github/mdx-js/mdx/tree/master/examples/shortcodes">
<Button
as="a"
href="https://codesandbox.io/s/github/mdx-js/mdx/tree/master/examples/shortcodes"
>
Try it on CodeSandbox
</Button>
* * *
---
Huge thanks to [Chris Biscardi](https://christopherbiscardi.com)
for building out most of this functionality.
* * *
---
Written by [John Otander](https://johno.com)

View File

@ -3,11 +3,11 @@
# MDX goes stable
Its been a year and a half since the first MDX commit and a year since MDX was first announced at
ZEIT Day. MDX is a radical paradigm shift in how to write immersive content using components. Its
an open, [authorable format](https://johno.com/authorable-format) that makes it *fun* to write again.
ZEIT Day. MDX is a radical paradigm shift in how to write immersive content using components. Its
an open, [authorable format](https://johno.com/authorable-format) that makes it _fun_ to write again.
Since announcing MDX weve been working on numerous bug fixes, new features, better parsing, and integration
tests. Now, we think its ready. **Were happy to finally release v1!**
tests. Now, we think its ready. **Were happy to finally release v1!**
## 🎉 Whats new?
@ -19,15 +19,15 @@ MDX document parsing is significantly improved.
We wont get into the nitty gritty here, but weve seen how MDX is used in real-world projects, integrated
the edge cases we came across into our test suite, and now handle JSX, imports, and exports much more
intuitively.
Please open an issue if you find a case we havent covered! 😸
Please open an issue if you find a case we havent covered! 😸
### remark-mdx
`remark-mdx` is the syntactic extension for MDX in remark. It provides the parsing functionality for
MDX as a *[remark](https://github.com/remarkjs/remark) plugin*. That sounds a bit meta. What it means
is that before we had the syntax parsing bits *in* the library (unusable from the outside), and now its
externalized (usable from the outside). This is useful if you want to inspect or transform MDX documents.
For example, it allows tools like prettier to use the exact same parser used by MDX core. Or you could
`remark-mdx` is the syntactic extension for MDX in remark. It provides the parsing functionality for
MDX as a _[remark](https://github.com/remarkjs/remark) plugin_. That sounds a bit meta. What it means
is that before we had the syntax parsing bits _in_ the library (unusable from the outside), and now its
externalized (usable from the outside). This is useful if you want to inspect or transform MDX documents.
For example, it allows tools like prettier to use the exact same parser used by MDX core. Or you could
use `remark-mdx` in combination with [remark-lint](https://github.com/remarkjs/remark-lint) to check your
MDX.
@ -46,94 +46,94 @@ Special thanks to [@christopherbiscardi](https://github.com/christopherbiscardi)
**Good libraries need great docs**, so weve been working on adding content and improving the overall documentation
website experience.
* [Search (thanks Algolia)](https://mobile.twitter.com/4lpine/status/1114270174096412672)
* [Guides](https://mdxjs.com)
* [Automatic deployment via ZEIT](https://zeit.co)
* [Custom Gatsby theme](https://gatsbyjs.org)
* Reorganization of docs for intuitiveness
* Full page rewrites to improve clarity
- [Search (thanks Algolia)](https://mobile.twitter.com/4lpine/status/1114270174096412672)
- [Guides](https://mdxjs.com)
- [Automatic deployment via ZEIT](https://zeit.co)
- [Custom Gatsby theme](https://gatsbyjs.org)
- Reorganization of docs for intuitiveness
- Full page rewrites to improve clarity
Special thanks to [@jxnblk](https://github.com/jxnblks) and [@wooorm](https://github.com/wooorm) for their help
improving the docs and updating the build tooling.
## Breaking changes
In order to make some improvements we were forced to introduce a few breaking changes. **These were the
result of real-world production testing and feedback**. The community has evolved and weve come up with
newer, better ideas over the last year. We have made sure the impact is small and have written a full
In order to make some improvements we were forced to introduce a few breaking changes. **These were the
result of real-world production testing and feedback**. The community has evolved and weve come up with
newer, better ideas over the last year. We have made sure the impact is small and have written a full
migration guide.
* 🚨`@mdx-js/tag` is replaced by `@mdx-js/react` and an `@mdx` pragma - [migration guide](/migrating/v1#pragma)
* MDXProvider now merges component contexts when nested - [migration guide](/migrating/v1#mdxprovider)
* React support now requires `>= 16.8` in `@mdx-js/react` - [migration guide](/migrating/v1#react)
- 🚨`@mdx-js/tag` is replaced by `@mdx-js/react` and an `@mdx` pragma - [migration guide](/migrating/v1#pragma)
- MDXProvider now merges component contexts when nested - [migration guide](/migrating/v1#mdxprovider)
- React support now requires `>= 16.8` in `@mdx-js/react` - [migration guide](/migrating/v1#react)
[Read the full v1 migration guide](/migrating/v1)
#### Deprecations
We only needed to introduce one deprecation. The `mdPlugins` and `hastPlugins` options have been renamed
`remarkPlugins` and `rehypePlugins` respectively. For the time being we will issue a warning when the old options
are used. In v2, the old options will be removed.
We only needed to introduce one deprecation. The `mdPlugins` and `hastPlugins` options have been renamed
`remarkPlugins` and `rehypePlugins` respectively. For the time being we will issue a warning when the old options
are used. In v2, the old options will be removed.
## 📈 Growth
A major release is always a good time to take a step back and reflect on whats been happening in terms of growth
and the greater community. The ecosystem surrounding MDX has already grown larger than we ever dreamed. Weve also
and the greater community. The ecosystem surrounding MDX has already grown larger than we ever dreamed. Weve also
seen projects/products/application we never even imagined.
### Numbers
* **Downloads**: 125,000/week, 2.4M total
* **Stars**: 6,200
* **Contributors**: 50
* **Pull requests**: 281
* **Commits**: 670
- **Downloads**: 125,000/week, 2.4M total
- **Stars**: 6,200
- **Contributors**: 50
- **Pull requests**: 281
- **Commits**: 670
The contributor growth is one of the most important aspects here as we have numerous community members that are familiar
with MDX internals. This allows us to continually improve the project and spread the workload against an ever growing
with MDX internals. This allows us to continually improve the project and spread the workload against an ever growing
team of contributors.
[See the contributor graph](https://github.com/mdx-js/mdx/graphs/contributors)
### Ecosystem
* [Prettier](https://prettier.io)
* [Docz](https://docz.site)
* [MDX Deck](https://github.com/jxnblk/mdx-deck)
* [Next.js](https://nextjs.org)
* [Gatsby](https://gatsbyjs.org)
* [AST Explorer](https://astexplorer.net)
* [Vue support (alpha)](/vue)
* [Demoboard](https://frontarm.com/demoboard/)
* [Editors](/editors)
- [Prettier](https://prettier.io)
- [Docz](https://docz.site)
- [MDX Deck](https://github.com/jxnblk/mdx-deck)
- [Next.js](https://nextjs.org)
- [Gatsby](https://gatsbyjs.org)
- [AST Explorer](https://astexplorer.net)
- [Vue support (alpha)](/vue)
- [Demoboard](https://frontarm.com/demoboard/)
- [Editors](/editors)
## 🛣 Roadmap
With v1 released we have a roadmap in place that well continue working towards over the next 6 months or
so in addition to bug fixes and parsing issues we might encounter.
* MDXs: [#454](https://github.com/mdx-js/mdx/issues/454)
* Interleaving: [#195](https://github.com/mdx-js/mdx/issues/195)
* Global shortcodes: [#508](https://github.com/mdx-js/mdx/pull/508)
* Stable Vue support: [#238](https://github.com/mdx-js/mdx/issues/238)
* Blocks: MDX WYSIWYG: [blocks/blocks](https://github.com/blocks/blocks)
* MDX playground inspired by AST Explorer: [#220](https://github.com/mdx-js/mdx/issues/220)
* New splash page: [#444](https://github.com/mdx-js/mdx/issues/444)
* Showcase page: [#414](https://github.com/mdx-js/mdx/issues/414)
- MDXs: [#454](https://github.com/mdx-js/mdx/issues/454)
- Interleaving: [#195](https://github.com/mdx-js/mdx/issues/195)
- Global shortcodes: [#508](https://github.com/mdx-js/mdx/pull/508)
- Stable Vue support: [#238](https://github.com/mdx-js/mdx/issues/238)
- Blocks: MDX WYSIWYG: [blocks/blocks](https://github.com/blocks/blocks)
- MDX playground inspired by AST Explorer: [#220](https://github.com/mdx-js/mdx/issues/220)
- New splash page: [#444](https://github.com/mdx-js/mdx/issues/444)
- Showcase page: [#414](https://github.com/mdx-js/mdx/issues/414)
### Vue support
Supporting Vue is an important goal for MDX and is one of the primary reasons weve rearchitected MDX to use
custom pragma. Were delighted that **we now have an alpha version for Vue working**. Wed love it if anyone
custom pragma. Were delighted that **we now have an alpha version for Vue working**. Wed love it if anyone
from the Vue community wants to give it a try and provide feedback.
[See the Vue example](https://github.com/mdx-js/mdx/tree/master/examples/vue)
### Blocks project
One of the key missing aspects of authoring MDX documents is the editing experience. Currently, there isnt an
approachable way to write MDX unless you enjoy working in a text editor and writing raw Markdown/code. Wed
like to solve that and have begun work on an MDX “blocks editor” thats a **content-focused WYSIWYG**. Not to mention,
One of the key missing aspects of authoring MDX documents is the editing experience. Currently, there isnt an
approachable way to write MDX unless you enjoy working in a text editor and writing raw Markdown/code. Wed
like to solve that and have begun work on an MDX “blocks editor” thats a **content-focused WYSIWYG**. Not to mention,
well be doing all that we can to make sure the editor is as accessible as it can be from the beginning.
When we have a beta ready we will be open sourcing it and announcing, so stay tuned.
@ -145,15 +145,15 @@ When we have a beta ready we will be open sourcing it and announcing, so stay tu
MDX is part of the unified collective, which is an open source ecosystem for dealing with many sources of content. unified
projects are used all over the web, and it would never be possible without financial support from our fine sponsors.
* [ZEIT](https://zeit.co) 🥇
* [Gatsby](https://gatsbyjs.org) 🥇
* [Holloway](https://www.holloway.com) 🥉
* [Backers](https://opencollective.com/unified#budget) 🏆
* [You?](https://opencollective.com/unified) 👤
- [ZEIT](https://zeit.co) 🥇
- [Gatsby](https://gatsbyjs.org) 🥇
- [Holloway](https://www.holloway.com) 🥉
- [Backers](https://opencollective.com/unified#budget) 🏆
- [You?](https://opencollective.com/unified) 👤
## 🙏 Thanks
Wed like to say thanks to all our contributors and our happy users. Special thanks to
Wed like to say thanks to all our contributors and our happy users. Special thanks to
[@wooorm](https://github.com/wooorm),
[@silvenon](https://github.com/silvenon),
[@timneutkens](https://github.com/timneutkens),
@ -188,7 +188,7 @@ Wed like to say thanks to all our contributors and our happy users. Special
[@sw-yx](https://github.com/sw-yx),
and anyone we may have forgotten.
* * *
---
Written by [John Otander](https://johno.com)

View File

@ -4,10 +4,10 @@
> By interacting with this repository, organization, or community you agree to
> abide by its terms.
Hi! 👋
Hi! 👋
Were excited that youre interested in contributing!
Take a moment to read the following guidelines.
And thanks for contributing to **MDX**! 👏👌✨
And thanks for contributing to **MDX**! 👏👌✨
If youre raising an issue, please understand that people involved with this
project often do so for fun, next to their day job; you are not entitled to
@ -15,21 +15,21 @@ free customer service.
## Table of Contents
* [Support](#support)
* [Contributions](#contributions)
* [Financial support](#financial-support)
* [Improve documentation](#improve-documentation)
* [Improve issues](#improve-issues)
* [Give feedback on issues and pull requests](#give-feedback-on-issues-and-pull-requests)
* [Write code](#write-code)
* [Running the tests](#running-the-tests)
* [Running the docs site](#running-the-docs-site)
* [Submitting an issue](#submitting-an-issue)
* [Submitting a pull request](#submitting-a-pull-request)
* [Project structure](#project-structure)
* [Releases](#releases)
* [Troubleshooting](#troubleshooting)
* [Resources](#resources)
- [Support](#support)
- [Contributions](#contributions)
- [Financial support](#financial-support)
- [Improve documentation](#improve-documentation)
- [Improve issues](#improve-issues)
- [Give feedback on issues and pull requests](#give-feedback-on-issues-and-pull-requests)
- [Write code](#write-code)
- [Running the tests](#running-the-tests)
- [Running the docs site](#running-the-docs-site)
- [Submitting an issue](#submitting-an-issue)
- [Submitting a pull request](#submitting-a-pull-request)
- [Project structure](#project-structure)
- [Releases](#releases)
- [Troubleshooting](#troubleshooting)
- [Resources](#resources)
## Support
@ -69,7 +69,7 @@ Were always looking for more opinions on discussions in the issue tracker.
### Write code
Code contributions are very welcome. Its often good to first create an issue
Code contributions are very welcome. Its often good to first create an issue
to report a bug or suggest a new feature before creating a pull request to
prevent you from doing unnecessary work.
@ -80,7 +80,7 @@ prevent you from doing unnecessary work.
3. `yarn test`
Tests for an individual package can be run as a yarn workspace:
`yarn workspace remark-mdx test`. To see what packages ar available to test
`yarn workspace remark-mdx test`. To see what packages ar available to test
you can list out all workspaces with `yarn workspaces info`.
## Running the docs site
@ -91,48 +91,48 @@ you can list out all workspaces with `yarn workspaces info`.
## Submitting an issue
* The issue tracker is for issues. Use chat for support
* Search the issue tracker (including closed issues) before opening a new
issue
* Ensure youre using the latest version of our packages
* Use a clear and descriptive title
* Include as much information as possible: steps to reproduce the issue,
error message, version, operating system, etcetera
* The more time you put into an issue, the better we will be able to help you
* The best issue report is a [failing test][unit-test] proving it
- The issue tracker is for issues. Use chat for support
- Search the issue tracker (including closed issues) before opening a new
issue
- Ensure youre using the latest version of our packages
- Use a clear and descriptive title
- Include as much information as possible: steps to reproduce the issue,
error message, version, operating system, etcetera
- The more time you put into an issue, the better we will be able to help you
- The best issue report is a [failing test][unit-test] proving it
## Submitting a pull request
* Non-trivial changes are often best discussed in an issue first, to prevent
you from doing unnecessary work
* For ambitious tasks, you should try to get your work in front of the
community for feedback as soon as possible
* New features should be accompanied with tests and documentation
* Dont include unrelated changes
* Test before submitting code by running `yarn test`
* Write a convincing description of why we should land your pull request:
its your job to convince us
- Non-trivial changes are often best discussed in an issue first, to prevent
you from doing unnecessary work
- For ambitious tasks, you should try to get your work in front of the
community for feedback as soon as possible
- New features should be accompanied with tests and documentation
- Dont include unrelated changes
- Test before submitting code by running `yarn test`
- Write a convincing description of why we should land your pull request:
its your job to convince us
## Project structure
MDX is a monorepo that uses [lerna][].
* All packages are found in `./packages`
* All documentation is found in `./docs` and can be viewed with `yarn docs -- -o`
* Theres an `./examples` directory where examples for different tools and
frameworks
- All packages are found in `./packages`
- All documentation is found in `./docs` and can be viewed with `yarn docs -- -o`
- Theres an `./examples` directory where examples for different tools and
frameworks
## Releases
In order to release a new version you can follow these steps:
* Draft a release for the next version (vX.X.X)
* Release a prerelease
* `yarn lerna publish`
* Select prepatch/preminor/premajor
* Sanity check in a project or two with the prerelease
* `yarn lerna publish`
* Publish release on GitHub
- Draft a release for the next version (vX.X.X)
- Release a prerelease
- `yarn lerna publish`
- Select prepatch/preminor/premajor
- Sanity check in a project or two with the prerelease
- `yarn lerna publish`
- Publish release on GitHub
## Troubleshooting
@ -142,24 +142,18 @@ If youre having issues installing locally you might need to run
## Resources
* [Good first issues in the MDX repository](https://github.com/mdx-js/mdx/labels/good%20first%20issue%20👋)
* [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)
* [Making your first contribution](https://medium.com/@vadimdemedes/making-your-first-contribution-de6576ddb190)
* [Using Pull Requests](https://help.github.com/articles/about-pull-requests/)
* [GitHub Help](https://help.github.com)
- [Good first issues in the MDX repository](https://github.com/mdx-js/mdx/labels/good%20first%20issue%20👋)
- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)
- [Making your first contribution](https://medium.com/@vadimdemedes/making-your-first-contribution-de6576ddb190)
- [Using Pull Requests](https://help.github.com/articles/about-pull-requests/)
- [GitHub Help](https://help.github.com)
<!-- Definitions -->
[coc]: https://github.com/mdx-js/.github/blob/master/code-of-conduct.md
[support]: https://mdxjs.com/support
[unit-test]: https://twitter.com/sindresorhus/status/579306280495357953
[collective]: https://opencollective.com/unified
[micromark]: https://github.com/micromark/micromark
[lerna]: https://lernajs.io
[lerna-install]: https://github.com/lerna/lerna/issues/1457

View File

@ -2,27 +2,23 @@
The community has begun adding MDX syntax highlighting support for some editors!
* [vscode][]: VSCode
* [vscode-mdx-preview][]: MDX Preview for VS Code
* [vim][]: Vim
* [sublime][]: Sublime
- [vscode][]: VSCode
- [vscode-mdx-preview][]: MDX Preview for VS Code
- [vim][]: Vim
- [sublime][]: Sublime
### Editors needing support
* Atom
* Emacs
* [JetBrains IntelliJ/WebStorm][jetbrains]
- Atom
- Emacs
- [JetBrains IntelliJ/WebStorm][jetbrains]
* * *
---
Original GitHub issue: [#119](https://github.com/mdx-js/mdx/issues/119)
[vscode]: https://github.com/silvenon/vscode-mdx
[vscode-mdx-preview]: https://github.com/xyc/vscode-mdx-preview
[vim]: https://github.com/jxnblk/vim-mdx-js
[sublime]: https://github.com/jonsuh/mdx-sublime
[jetbrains]: https://youtrack.jetbrains.com/issue/WEB-32599

View File

@ -1,15 +1,12 @@
# Babel configuration
You will also need to configure [babel][] to support the language features that
MDX uses. One way you can achieve that is using the following `.babelrc`
MDX uses. One way you can achieve that is using the following `.babelrc`
at your project root.
```json
{
"presets": [
"@babel/env",
"@babel/react"
]
"presets": ["@babel/env", "@babel/react"]
}
```

View File

@ -17,10 +17,10 @@ Then create the following `src/App.js`:
```js
// src/App.js
import React, { lazy, Component, Suspense } from 'react';
import { importMDX } from 'mdx.macro';
import React, {lazy, Component, Suspense} from 'react'
import {importMDX} from 'mdx.macro'
const Content = lazy(() => importMDX('./Content.mdx'));
const Content = lazy(() => importMDX('./Content.mdx'))
class App extends Component {
render() {
@ -30,11 +30,11 @@ class App extends Component {
<Content />
</Suspense>
</div>
);
)
}
}
export default App;
export default App
```
And then create the following `src/Content.mdx`:
@ -46,7 +46,5 @@ And then create the following `src/Content.mdx`:
[See the full example][cra-example]
[mdx-macro]: https://www.npmjs.com/package/mdx.macro
[cra-example]: https://github.com/mdx-js/mdx/tree/master/examples/create-react-app
[known bug]: https://github.com/facebook/create-react-app/issues/5580

View File

@ -35,7 +35,5 @@ For more documentation on programmatically creating pages with Gatsby, see
the [Gatsby MDX docs][gatsby-mdx-docs].
[gatsby]: https://gatsbyjs.org
[gatsby-mdx-docs]: https://gatsbyjs.org/docs/mdx/
[gatsby-plugin-mdx]: https://gatsbyjs.org/packages/gatsby-plugin-mdx/

View File

@ -1,4 +1,4 @@
import { Box } from '@rebass/emotion'
import {Box} from '@rebass/emotion'
# Getting Started
@ -26,17 +26,17 @@ the installation guides.
## Table of contents
* [Hello World](#hello-world)
* [Syntax](#syntax)
* [Markdown](#markdown)
* [JSX](#jsx)
* [MDX](#mdx)
* [Working with components](#working-with-components)
* [MDXProvider](#mdxprovider)
* [Table of components](#table-of-components)
* [Installation guides](#installation-guides)
* [Scaffold out an app](#scaffold-out-an-app)
* [Do it yourself](#do-it-yourself)
- [Hello World](#hello-world)
- [Syntax](#syntax)
- [Markdown](#markdown)
- [JSX](#jsx)
- [MDX](#mdx)
- [Working with components](#working-with-components)
- [MDXProvider](#mdxprovider)
- [Table of components](#table-of-components)
- [Installation guides](#installation-guides)
- [Scaffold out an app](#scaffold-out-an-app)
- [Do it yourself](#do-it-yourself)
## Hello World
@ -70,14 +70,14 @@ Instead of the following HTML:
```html
<blockquote>
<p>A blockquote with <em>some</em> emphasis.</p>
<p>A blockquote with <em>some</em> emphasis.</p>
</blockquote>
```
You can write the equivalent in Markdown (or MDX) like so:
```markdown
> A blockquote with *some* emphasis.
> A blockquote with _some_ emphasis.
```
Markdown is good for **content**.
@ -194,7 +194,7 @@ Say we import our MDX file, using webpack and React, like so:
```jsx
// index.js
import React from 'react'
import MDXDocument, { metadata } from 'posts/post.mdx'
import MDXDocument, {metadata} from 'posts/post.mdx'
export default () => (
<>
@ -225,7 +225,9 @@ After bundling and evaluating, we could get something like this:
```html
<h1>Post about MDX</h1>
<p>MDX is a JSX in Markdown loader, parser, and renderer for ambitious projects.</p>
<p>
MDX is a JSX in Markdown loader, parser, and renderer for ambitious projects.
</p>
<footer><p>By: Sue, Fred.</p></footer>
```
@ -236,7 +238,7 @@ structures.
##### Defining variables with exports
If you need to define a variable in your MDX document, you can use an export
to do so. Not only do exports emit data, they instantiate data you can reference
to do so. Not only do exports emit data, they instantiate data you can reference
in JSX blocks:
```js
@ -262,8 +264,8 @@ component youd like to render.
import React from 'react'
import Hello from '../hello.mdx'
const MyH1 = props => <h1 style={{ color: 'tomato' }} {...props} />
const MyParagraph = props => <p style={{ fontSize: '18px', lineHeight: 1.6 }} />
const MyH1 = props => <h1 style={{color: 'tomato'}} {...props} />
const MyParagraph = props => <p style={{fontSize: '18px', lineHeight: 1.6}} />
const components = {
h1: MyH1,
@ -279,14 +281,9 @@ You can also import your components from another location like your UI library:
import React from 'react'
import Hello from '../hello.mdx'
import {
Text,
Heading,
Code,
InlineCode
} from '../my-ui-library'
import {Text, Heading, Code, InlineCode} from '../my-ui-library'
export default () =>
export default () => (
<Hello
components={{
h1: Heading,
@ -295,6 +292,7 @@ export default () =>
inlineCode: InlineCode
}}
/>
)
```
With the above, the `Heading` component will be rendered for any `h1`, `Text`
@ -313,9 +311,9 @@ the `MDXProvider` to only pass your components in one place:
```jsx
// src/App.js
import React from 'react'
import { MDXProvider } from '@mdx-js/react'
import {MDXProvider} from '@mdx-js/react'
import { Heading, Text, Pre, Code, Table } from './components'
import {Heading, Text, Pre, Code, Table} from './components'
const components = {
h1: Heading.H1,
@ -326,10 +324,11 @@ const components = {
inlineCode: Code
}
export default props =>
export default props => (
<MDXProvider components={components}>
<main {...props} />
</MDXProvider>
)
```
This allows you to remove duplicated component passing and importing.
@ -345,14 +344,15 @@ styling, or even manipulate the children passed to the component.
```js
// src/App.js
import React from 'react'
import { MDXProvider } from '@mdx-js/react'
import {MDXProvider} from '@mdx-js/react'
const Wrapper = props => <main style={{ padding: '20px', backgroundColor: 'tomato' }} {...props} />
const Wrapper = props => (
<main style={{padding: '20px', backgroundColor: 'tomato'}} {...props} />
)
export default ({ children }) =>
<MDXProvider components={{ wrapper: Wrapper }}>
{children}
</MDXProvider>
export default ({children}) => (
<MDXProvider components={{wrapper: Wrapper}}>{children}</MDXProvider>
)
```
If you would like to see more advanced usage, see the
@ -364,7 +364,7 @@ Sometimes from an MDX file you might want to override the wrapper.
This is especially useful when you want to override layout for a single entry
point at the page level.
To achieve this you can use the ES default [export][] and it will wrap your MDX
document *instead* of the wrapper passed to MDXProvider.
document _instead_ of the wrapper passed to MDXProvider.
You can declare a default export as a function:
@ -434,13 +434,13 @@ Now that weve gone over how MDX works, youre ready to get installing.
If youre the type of person that wants to scaffold out an app quickly and start
playing around you can use `npm init`:
* `npm init mdx` [`webpack`](/getting-started/webpack)
* `npm init mdx` [`parcel`](/getting-started/parcel)
* `npm init mdx` [`next`](/getting-started/next)
* `npm init mdx` [`create-react-app`](/getting-started/create-react-app)
* `npm init mdx` [`gatsby`](/getting-started/gatsby)
* `npm init mdx` [`x0`](/getting-started/x0)
* `npm init mdx` [`react-static`](/getting-started/react-static)
- `npm init mdx` [`webpack`](/getting-started/webpack)
- `npm init mdx` [`parcel`](/getting-started/parcel)
- `npm init mdx` [`next`](/getting-started/next)
- `npm init mdx` [`create-react-app`](/getting-started/create-react-app)
- `npm init mdx` [`gatsby`](/getting-started/gatsby)
- `npm init mdx` [`x0`](/getting-started/x0)
- `npm init mdx` [`react-static`](/getting-started/react-static)
### Do it yourself
@ -491,21 +491,12 @@ const renderWithReact = async mdxCode => {
```
[imports]: #imports
[exports]: #exports
[components]: #table-of-components
[md]: https://daringfireball.net/projects/markdown/syntax
[jsx]: https://reactjs.org/docs/introducing-jsx.html
[import]: https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/import
[export]: https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export
[rebass]: https://rebassjs.org
[transclude]: https://en.wikipedia.org/wiki/Transclusion
[context]: https://reactjs.org/docs/context.html

View File

@ -4,7 +4,7 @@ Next.js provides an [official plugin][next-plugin] to simplify MDX importing
into your project.
```shell
npm install --save @next/mdx @mdx-js/loader
npm install --save @next/mdx @mdx-js/loader
```
To configure MDX, add the following to your `next.config.js`:

View File

@ -1,3 +1,3 @@
import Redirect from 'gatsby-theme-mdx/src/components/redirect'
<Redirect to='/advanced/typescript' />
<Redirect to="/advanced/typescript" />

View File

@ -13,7 +13,7 @@ npm install --save-dev @mdx-js/loader
## Configuration
The loader needs to be used in tandem with the [babel-loader][]. Most projects will typically
The loader needs to be used in tandem with the [babel-loader][]. Most projects will typically
already include this if you are using JSX syntax.
For webpack projects you can define the following `webpack.config.js` extension
@ -29,10 +29,7 @@ module.exports = {
{
test: /\.mdx?$/,
use: [
'babel-loader',
'@mdx-js/loader'
]
use: ['babel-loader', '@mdx-js/loader']
}
]
}
@ -41,8 +38,8 @@ module.exports = {
If you only want the loader for `.mdx` files you can change the regex to `/\.mdx$/`.
The transpiled output for MDX requires [babel][] to be run. This is typically
by adding in the babel-loader to run *after* the MDX loader. Webpack starts
The transpiled output for MDX requires [babel][] to be run. This is typically
by adding in the babel-loader to run _after_ the MDX loader. Webpack starts
from the end of the loaders array and works backward, so it is important to
follow the ordering above.
@ -94,5 +91,4 @@ module.exports = {
<BabelConfig />
[babel-loader]: https://webpack.js.org/loaders/babel-loader/
[babel]: https://babeljs.io

View File

@ -1,6 +1,6 @@
# x0
[x0][] is a zero-config tool with built in support for MDX. You will need
[x0][] is a zero-config tool with built in support for MDX. You will need
to install the library and set up the npm script.
## Installation
@ -21,17 +21,17 @@ Then, in your `package.json` add the following to the `scripts`:
## Customizing the layout
[x0][] supports MDX files with either `.md` or `.mdx` file extensions out of
the box. For components requiring providers you will need to use customize
`_app.js`. Heres an example using [Rebass][] components:
the box. For components requiring providers you will need to use customize
`_app.js`. Heres an example using [Rebass][] components:
```jsx
import React from 'react'
import * as Rebass from 'rebass'
import createScope from '@rebass/markdown'
import { ScopeProvider } from '@compositor/x0/components'
import {ScopeProvider} from '@compositor/x0/components'
export default ({ route, routes, ...props }) => (
<ScopeProvider scope={{ ...Rebass, ...createScope() }}>
export default ({route, routes, ...props}) => (
<ScopeProvider scope={{...Rebass, ...createScope()}}>
<Rebass.Provider>
<Rebass.Container {...props} />
</Rebass.Provider>
@ -40,5 +40,4 @@ export default ({ route, routes, ...props }) => (
```
[x0]: https://compositor.io/x0
[rebass]: https://rebassjs.com

View File

@ -1,7 +1,7 @@
# Zero
[Zero](https://zeroserver.io) is a no-config web framework for React, MDX,
Node.js, and Vue. It has built in support for MDX. To get started, install
Node.js, and Vue. It has built in support for MDX. To get started, install
Zero (globally or locally in your project).
## Installation
@ -12,7 +12,7 @@ npm install -g zero
## Writing MDX files
Create a new directory for your project and add an `index.mdx` file with the
Create a new directory for your project and add an `index.mdx` file with the
following markdown:
```markdown
@ -27,7 +27,7 @@ Zero has some additional features for MDX, you can [read them here](https://gith
## Resources
* [Example Project](https://github.com/mdx-js/mdx/tree/master/examples/zero)
* [Zero GitHub](https://github.com/remoteinterview/zero/)
* [Zero Website](https://zeroserver.io/)
* [Zero MDX Docs](https://github.com/remoteinterview/zero/tree/master/docs/mdx)
- [Example Project](https://github.com/mdx-js/mdx/tree/master/examples/zero)
- [Zero GitHub](https://github.com/remoteinterview/zero/)
- [Zero Website](https://zeroserver.io/)
- [Zero MDX Docs](https://github.com/remoteinterview/zero/tree/master/docs/mdx)

View File

@ -1,22 +1,22 @@
# Custom loader
By design, the default MDX is very minimal and likely wont see any additional features outside of the MDX spec. However, webpack [makes it straightforward][webpack-loader] to write your own loader to add custom syntax support.
By design, the default MDX is very minimal and likely wont see any additional features outside of the MDX spec. However, webpack [makes it straightforward][webpack-loader] to write your own loader to add custom syntax support.
Consider a scenario where you wanted to add frontmatter support to all your MDX documents. You could achieve this with a remark plugin or a custom loader. Here well write a [custom loader][x0]:
Consider a scenario where you wanted to add frontmatter support to all your MDX documents. You could achieve this with a remark plugin or a custom loader. Here well write a [custom loader][x0]:
```js
// lib/fm-loader.js
const matter = require('gray-matter')
const stringifyObject = require('stringify-object')
module.exports = async function (src) {
module.exports = async function(src) {
const callback = this.async()
const { content, data } = matter(src)
const {content, data} = matter(src)
const code = `export const frontMatter = ${stringifyObject(data)}
${content}`
return callback(null, code)
}
```
@ -43,5 +43,4 @@ module.exports = {
```
[webpack-loader]: https://webpack.js.org/contribute/writing-a-loader
[x0]: https://github.com/c8r/x0/blob/master/lib/mdx-fm-loader.js

View File

@ -5,11 +5,11 @@ for common use cases, tools, and patterns.
Its intended to become the central knowledge base for MDX, so please feel free
to add to them by [contributing](/contributing)!
* [Add syntax highlighting to code blocks](/guides/syntax-highlighting)
* [Add a live code block](/guides/live-code)
* [Render MDX to the terminal](/guides/terminal)
* [**\[WIP\]** Implement a dynamic table of contents](/guides/table-of-contents)
* [**\[WIP\]** Use MDX in a Vue project](/guides/vue)
- [Add syntax highlighting to code blocks](/guides/syntax-highlighting)
- [Add a live code block](/guides/live-code)
- [Render MDX to the terminal](/guides/terminal)
- [**\[WIP\]** Implement a dynamic table of contents](/guides/table-of-contents)
- [**\[WIP\]** Use MDX in a Vue project](/guides/vue)
## Customizing
@ -17,6 +17,6 @@ At its core MDX is minimal and unopinionated, so theres often a need to
customize it.
Here are a few ways to do that:
* [Write a custom remark plugin](/guides/writing-a-plugin)
* [Building a custom webpack loader](/guides/custom-loader)
* [Wrapper customization](/guides/wrapper-customization)
- [Write a custom remark plugin](/guides/writing-a-plugin)
- [Building a custom webpack loader](/guides/custom-loader)
- [Wrapper customization](/guides/wrapper-customization)

View File

@ -5,7 +5,7 @@ If you havent read the syntax highlighting guide its recommended start the
# Live code
An increasingly common approach for live code editors is to overload the
code block. This is often done so that the code shows up nicely when rendered
code block. This is often done so that the code shows up nicely when rendered
to GitHub and its a nice usage of meta strings.
## Code block meta string
@ -14,7 +14,8 @@ After the language in code fences you can add `key=value` pairs which will
be automatically passed as props to your code block.
````md
```js live=true
```js live=true
```
````
## Component
@ -79,8 +80,7 @@ const components = {
}
export default props => (
<MDXProvider components={components}>
<main {...props}>
</main>
<main {...props}></main>
</MDXProvider>
)
```
@ -88,7 +88,7 @@ export default props => (
## Using the MDXProvider context for rendering
With the react-live editor you can ensure that your MDX components
in context are rendered in the preview. In order to do this you
in context are rendered in the preview. In order to do this you
can use the MDX custom pragma.
To achieve this, import the pragma:
@ -127,7 +127,7 @@ export default ({children, className, live, render}) => {
<LiveProvider
code={children.trim()}
transformCode={code => '/** @jsx mdx */' + code}
scope={{ mdx }}
scope={{mdx}}
>
<LivePreview />
<LiveEditor />

View File

@ -4,11 +4,17 @@ You can render math blocks via [remark-math](https://github.com/remarkjs/remark-
First, link a stylesheet and use the `$` syntax:
```md
```mdx
<!-- index.mdx -->
<!-- Apply katex css -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.11.0/dist/katex.min.css" integrity="sha384-BdGj8xC2eZkQaxoQ8nSLefg4AV4/AwB3Fj+8SUSo7pnKP6Eoy18liIKTPn9oBYNG" crossOrigin="anonymous"/>
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/katex@0.11.0/dist/katex.min.css"
integrity="sha384-BdGj8xC2eZkQaxoQ8nSLefg4AV4/AwB3Fj+8SUSo7pnKP6Eoy18liIKTPn9oBYNG"
crossOrigin="anonymous"
/>
Lift($L$) can be determined by Lift Coefficient ($C_L$) like the following equation.

View File

@ -2,8 +2,8 @@
There are two primary approaches for adding syntax highlighting to MDX:
* composition via the MDXProvider
* remark plugin
- composition via the MDXProvider
- remark plugin
Its typically preferred to take the compositional approach, but both
will be documented here.
@ -11,8 +11,8 @@ will be documented here.
## Composition
The [MDXProvider](https://mdxjs.com/getting-started/#mdxprovider) provides
a way to map components to be rendered for a given Markdown element. So,
this allows you to choose a specific component for the `code` block. To
a way to map components to be rendered for a given Markdown element. So,
this allows you to choose a specific component for the `code` block. To
get started you can wrap your app in the MDXProvider and add in a component
to ensure its being picked up:
@ -25,13 +25,12 @@ import {MDXProvider} from '@mdx-js/react'
const components = {
pre: props => <div {...props} />,
code: props => <pre style={{ color: 'tomato' }} {...props} />
code: props => <pre style={{color: 'tomato'}} {...props} />
}
export default props => (
<MDXProvider components={components}>
<main {...props}>
</main>
<main {...props}></main>
</MDXProvider>
)
```
@ -42,7 +41,7 @@ any code block found in your MDX files.
### prism-react-renderer
Now that you have a custom component being rendered for code blocks you can
choose any React component library to handle the syntax highlighting. A solid
choose any React component library to handle the syntax highlighting. A solid
library to choose is [prism-react-renderer](https://github.com/FormidableLabs/prism-react-renderer).
You can install it with:
@ -54,7 +53,7 @@ yarn add prism-react-renderer
#### Build a CodeBlock component
You can essentially cut and paste the entire example into a new
component file. The only big difference is the MDX will pass in the
component file. The only big difference is the MDX will pass in the
code string as `children` so you will need to destructure that prop
and pass it to Highlight as the `code` prop.
@ -65,7 +64,7 @@ import Highlight, {defaultProps} from 'prism-react-renderer'
export default ({children}) => {
return (
<Highlight {...defaultProps} code={children} language='javascript'>
<Highlight {...defaultProps} code={children} language="javascript">
{({className, style, tokens, getLineProps, getTokenProps}) => (
<pre className={className} style={{...style, padding: '20px'}}>
{tokens.map((line, i) => (
@ -82,9 +81,9 @@ export default ({children}) => {
}
```
Now you should see syntax highlighting in your MDX files. However, right now
`javascript` is hardcoded as the language. You will need to take the language
from the code fence and pass it to Highlight directly. MDX will pass the language
Now you should see syntax highlighting in your MDX files. However, right now
`javascript` is hardcoded as the language. You will need to take the language
from the code fence and pass it to Highlight directly. MDX will pass the language
as `className` so you can pull out the language with:
```js
@ -123,7 +122,7 @@ export default ({children, className}) => {
## Remark plugin
In addition to composition you can use any plugin from the remark
ecosystem. One solid library for syntax highlighting is
ecosystem. One solid library for syntax highlighting is
[@mapbox/rehype-prism](https://github.com/mapbox/rehype-prism).
```js

View File

@ -2,6 +2,4 @@ import Note from 'gatsby-theme-mdx/src/components/note'
# Table of contents
<Note>
This guide is a WIP
</Note>
<Note>This guide is a WIP</Note>

View File

@ -1,4 +1,4 @@
import { Tweet } from '@blocks/kit'
import {Tweet} from '@blocks/kit'
# Terminal
@ -41,15 +41,15 @@ const {MDXProvider} = require('@mdx-js/react')
const MDX = require('@mdx-js/runtime')
const components = {
h1: ({ children }) => <Text bold>{children}</Text>,
p: ({ children }) => <Text>{children}</Text>
h1: ({children}) => <Text bold>{children}</Text>,
p: ({children}) => <Text>{children}</Text>
}
render(
<MDXProvider components={components}>
<MDX>{MDXContent}</MDX>
</MDXProvider>
);
)
```
You can also provide other components to the runtime scope for additional
@ -60,8 +60,8 @@ const components = {
Box,
Color,
Text,
h1: ({ children }) => <Text bold>{children}</Text>,
p: ({ children }) => <Text>{children}</Text>
h1: ({children}) => <Text bold>{children}</Text>,
p: ({children}) => <Text>{children}</Text>
}
```
@ -71,7 +71,7 @@ This will allow you to write content like the following
```mdx
# Hello, world!
From <Color bgBlack white bold> MDX! </Color>
From <Color bgBlack white bold> MDX! </Color>
<Box marginTop={1}>
<Color bgCyan white bold>
@ -83,10 +83,10 @@ From <Color bgBlack white bold> MDX! </Color>
## All together
```js
const React = require('react');
const {render, Color, Box, Text} = require('ink');
const React = require('react')
const {render, Color, Box, Text} = require('ink')
const MDX = require('@mdx-js/runtime')
const { MDXProvider } = require('@mdx-js/react')
const {MDXProvider} = require('@mdx-js/react')
const MDXContent = `
# Hello, world!
@ -103,15 +103,15 @@ From <Color bgBlack white bold> MDX! </Color>
const components = {
Box,
Color,
h1: ({ children }) => <Text bold>{children}</Text>,
p: ({ children }) => <Text>{children}</Text>
h1: ({children}) => <Text bold>{children}</Text>,
p: ({children}) => <Text>{children}</Text>
}
render(
<MDXProvider components={components}>
<MDX>{MDXContent}</MDX>
</MDXProvider>
);
)
```
<Tweet tweetId="1141781114786160641" />
@ -119,5 +119,4 @@ render(
[See the full example](https://github.com/mdx-js/mdx/tree/master/examples/cli)
[ink]: https://github.com/vadimdemedes/ink
[runtime]: https://mdxjs.com/advanced/runtime

View File

@ -2,9 +2,7 @@ import Note from 'gatsby-theme-mdx/src/components/note'
# Vue
<Note>
This guide is a WIP
</Note>
<Note>This guide is a WIP</Note>
If you want to initialize a project to try Vue + MDX you can
[use the Vue example](https://github.com/mdx-js/mdx/tree/master/examples/vue).
@ -30,10 +28,7 @@ module.exports = {
rules: [
{
test: /.mdx?$/,
use: [
'babel-loader',
'@mdx-js/vue-loader'
]
use: ['babel-loader', '@mdx-js/vue-loader']
}
]
}
@ -41,5 +36,5 @@ module.exports = {
}
```
Thats it. Now restart your server and you should be able to create `.mdx` files
Thats it. Now restart your server and you should be able to create `.mdx` files
and import them in other components.

View File

@ -3,22 +3,22 @@ import Note from 'gatsby-theme-mdx/src/components/note'
# Wrapper customization
The [wrapper](/getting-started#using-the-wrapper) component can be used
to set the layout for the MDX document. Its often used to set container
width, borders, background colors, etc. However, its also unique because
to set the layout for the MDX document. Its often used to set container
width, borders, background colors, etc. However, its also unique because
it has access to the children passed to it.
This means that you can do powerful things with the MDX document elements.
If you arent very familiar with React children, it might be worthwile to
start with [*A deep dive into children in React*](https://mxstbr.blog/2017/02/react-children-deepdive/)
start with [_A deep dive into children in React_](https://mxstbr.blog/2017/02/react-children-deepdive/)
by Max Stoiber.
> We can render arbitrary components as children, but still control them from the
> parent instead of the component we render them from.
>
> *Max Stoiber - A deep dive into children in React*
> _Max Stoiber - A deep dive into children in React_
The implications of this are very interesting from the context of an
MDX wrapper component. This means the wrapper can do things like reordering
MDX wrapper component. This means the wrapper can do things like reordering
components, wrapping them, or even further customizing them.
## Getting started
@ -46,7 +46,7 @@ import {MDXProvider} from '@mdx-js/react'
const components = {
wrapper: props => (
<div style={{ padding: '20px', backgroundColor: 'tomato' }}>
<div style={{padding: '20px', backgroundColor: 'tomato'}}>
<main {...props} />
</div>
)
@ -62,13 +62,14 @@ export default props => (
### Inspecting types
<Note>
This only works on the latest alpha version @mdx-js/mdx@next (&gt;= 1.0.0-alpha.7)
This only works on the latest alpha version @mdx-js/mdx@next (&gt;=
1.0.0-alpha.7)
</Note>
Sometimes you might want to inspect the element type of that
MDX will be rendering with its custom pragma. You can use the
MDX will be rendering with its custom pragma. You can use the
wrapper to achieve this because it will have access to the MDX
components as children. You can check their type by accessing
components as children. You can check their type by accessing
the `mdxType` in props.
```js
@ -78,7 +79,7 @@ import React from 'react'
import {MDXProvider} from '@mdx-js/react'
const components = {
wrapper: ({ children, ...props }) => {
wrapper: ({children, ...props}) => {
console.log(children.map(child => child.props.mdxType))
return <>{children}</>
}
@ -93,7 +94,7 @@ export default props => (
### Manipulating children
You can also manipulate and modify children. Here is an example of reordering
You can also manipulate and modify children. Here is an example of reordering
them by converting them to an array and calling `reverse`.
```js
@ -103,7 +104,7 @@ import React from 'react'
import {MDXProvider} from '@mdx-js/react'
const components = {
wrapper: ({ children, ...props }) => {
wrapper: ({children, ...props}) => {
const reversedChildren = React.Children.toArray(children).reverse()
return <>{reversedChildren}</>
}
@ -119,10 +120,10 @@ export default props => (
## Related
If you would like to dive deeper, check out
[*A deep dive into children in React*](https://mxstbr.blog/2017/02/react-children-deepdive/)
[_A deep dive into children in React_](https://mxstbr.blog/2017/02/react-children-deepdive/)
or Brent Jacksons [MDX Blocks](https://github.com/jxnblk/mdx-blocks)
* * *
---
* <https://mxstbr.blog/2017/02/react-children-deepdive>
* <https://github.com/jxnblk/mdx-blocks>
- <https://mxstbr.blog/2017/02/react-children-deepdive>
- <https://github.com/jxnblk/mdx-blocks>

View File

@ -2,12 +2,12 @@
For a full-fledged introduction to plugins its recommended to read the [remark guides][remark-guides] and study up on [syntax trees][syntax-trees].
Now lets consider an example where you want to pass all headings through the [title][] module to ensure consistent capitalization. We can use [unist-util-visit][] to visit all headings and change the text nodes with `title(text)`.
Now lets consider an example where you want to pass all headings through the [title][] module to ensure consistent capitalization. We can use [unist-util-visit][] to visit all headings and change the text nodes with `title(text)`.
## Visiting heading nodes
The first thing you want to do is install the `unist-util-visit` library. This is a utility library that allows you
to visit all heading (or any other type of nodes) without having to write a lot of boiler plate code. It handles that
The first thing you want to do is install the `unist-util-visit` library. This is a utility library that allows you
to visit all heading (or any other type of nodes) without having to write a lot of boiler plate code. It handles that
for you.
Then you can first log out the nodes to see it in action:
@ -22,11 +22,11 @@ module.exports = () => (tree, file) => {
}
```
This will log out all the nodes in your document that are headings. Inside heading nodes there are text nodes. These
This will log out all the nodes in your document that are headings. Inside heading nodes there are text nodes. These
include the raw text included in the heading.
*Note*: The reason that heading nodes include multiple text node types is because there can be other
“[phrasing content][phrasing]” nodes. For example if your heading looked like `# Hello, _world_`. In addition to the
_Note_: The reason that heading nodes include multiple text node types is because there can be other
“[phrasing content][phrasing]” nodes. For example if your heading looked like `# Hello, _world_`. In addition to the
text there is also an emphasis node.
## Visiting text nodes
@ -57,7 +57,7 @@ const visit = require('unist-util-visit')
module.exports = () => (tree, file) => {
visit(tree, 'heading', node => {
visit(node, 'text', textNode => {
const text = textNode.value ? textNode.value.trim() : ''
const text = textNode.value ? textNode.value.trim() : ''
textNode.value = title(text)
})
})
@ -65,11 +65,7 @@ module.exports = () => (tree, file) => {
```
[remark-guides]: https://github.com/remarkjs/remark/blob/master/doc/plugins.md#creating-plugins
[syntax-trees]: https://github.com/syntax-tree/unist#syntax-tree
[title]: https://github.com/zeit/title
[unist-util-visit]: https://github.com/syntax-tree/unist-util-visit
[phrasing]: https://www.w3.org/TR/2011/WD-html5-author-20110809/content-models.html#phrasing-content-0

View File

@ -3,8 +3,8 @@
### Markdown for the component era
MDX is an authorable format that lets you seamlessly write JSX in your Markdown
documents. You can import components, such as interactive charts or alerts, and
embed them within your content. This makes writing long-form content with
documents. You can import components, such as interactive charts or alerts, and
embed them within your content. This makes writing long-form content with
components a blast :rocket:.
#### Try it
@ -43,16 +43,15 @@ during the build stage.
## Why?
Before MDX, some of the benefits of writing Markdown were lost when integrating
with JSX. Implementations were often template string-based which required lots
with JSX. Implementations were often template string-based which required lots
of escaping and cumbersome syntax.
MDX seeks to make writing with Markdown *and* JSX simpler while being more
expressive. Writing is fun again when you combine components, that can
MDX seeks to make writing with Markdown _and_ JSX simpler while being more
expressive. Writing is fun again when you combine components, that can
even be dynamic or load data, with the simplicity of Markdown for long-form
content.
> [Watch some of these features in action][intro]
[quote]: https://twitter.com/chrisbiscardi/status/1022304288326864896
[intro]: https://www.youtube.com/watch?v=d2sQiI5NFAM&list=PLV5CVI1eNcJgCrPH_e6d57KRUTiDZgs0u

View File

@ -6,9 +6,9 @@ In order to ensure as seamless of an upgrade as possible we plan on supporting v
## ⚠️ Breaking changes
* [🚨`@mdx-js/tag` is replaced by `@mdx-js/react` and an `mdx` pragma](#pragma) 🚨
* [MDXProvider now merges component contexts when nested](#mdxprovider)
* [React support now requires `>= 16.8` in `@mdx-js/react`](#react)
- [🚨`@mdx-js/tag` is replaced by `@mdx-js/react` and an `mdx` pragma](#pragma) 🚨
- [MDXProvider now merges component contexts when nested](#mdxprovider)
- [React support now requires `>= 16.8` in `@mdx-js/react`](#react)
## Pragma
@ -56,4 +56,4 @@ By ignoring outer context components and returning a new component mapping, you
## React
Before upgrading to `@mdx-js/mdx@1`, update your website/application to `react@16.8 react-dom@16.8` and ensure it works as expected. Then upgrade to v1.
Before upgrading to `@mdx-js/mdx@1`, update your website/application to `react@16.8 react-dom@16.8` and ensure it works as expected. Then upgrade to v1.

View File

@ -1,3 +1,3 @@
import Redirect from 'gatsby-theme-mdx/src/components/redirect'
<Redirect to='/advanced/plugins' />
<Redirect to="/advanced/plugins" />

View File

@ -2,55 +2,42 @@
## Apps
* [demoboard][]: The simplest editor alive
- [demoboard][]: The simplest editor alive
## Libraries
* [ok-mdx][]: Browser-based MDX editor
* [docz][]: Documentation framework
* [mdx-deck][]: MDX-based presentation decks
* [mdx-docs][]: Next-based documentation framework
* [mdx-paper][]: MDX-based research articles
* [spectacle-boilerplate-mdx][]: Boilerplate that facilitates using MDX with
Spectacle
* [Charge][]: An opinionated, zero-config static site generator
- [ok-mdx][]: Browser-based MDX editor
- [docz][]: Documentation framework
- [mdx-deck][]: MDX-based presentation decks
- [mdx-docs][]: Next-based documentation framework
- [mdx-paper][]: MDX-based research articles
- [spectacle-boilerplate-mdx][]: Boilerplate that facilitates using MDX with
Spectacle
- [Charge][]: An opinionated, zero-config static site generator
## Sites
* [ZEIT Docs][zeit-docs]
* [Compositor][]
* [Prisma][]
* [Max Stoibers Blog][mxstbr]
- [ZEIT Docs][zeit-docs]
- [Compositor][]
- [Prisma][]
- [Max Stoibers Blog][mxstbr]
## Other related links
* [awesome-mdx][]
* [MDX: content for kings and princesses][mdx-fairy-tale]
- [awesome-mdx][]
- [MDX: content for kings and princesses][mdx-fairy-tale]
[demoboard]: https://frontarm.com/demoboard
[ok-mdx]: https://github.com/jxnblk/ok-mdx
[mdx-deck]: https://github.com/jxnblk/mdx-deck
[mdx-docs]: https://github.com/jxnblk/mdx-docs
[mdx-paper]: https://github.com/hubgit/mdx-paper
[docz]: https://www.docz.site/
[zeit-docs]: https://github.com/zeit/docs
[compositor]: https://compositor.io
[prisma]: https://www.prisma.io/docs
[mxstbr]: https://mxstbr.com
[awesome-mdx]: https://github.com/transitive-bullshit/awesome-mdx
[spectacle-boilerplate-mdx]: https://github.com/FormidableLabs/spectacle-boilerplate-mdx
[charge]: https://charge.js.org
[mdx-fairy-tale]: https://github.com/DeveloperMode/mdx-fairy-tale

View File

@ -4,7 +4,7 @@
> By interacting with this repository, organization, or community you agree to
> abide by its terms.
Hi! 👋
Hi! 👋
Were excited that youre using **MDX** and wed love to help.
To help us help you, please read through the following guidelines.
@ -14,9 +14,9 @@ free customer service.
## Table of Contents
* [Questions](#questions)
* [Asking quality questions](#asking-quality-questions)
* [Contributions](#contributions)
- [Questions](#questions)
- [Asking quality questions](#asking-quality-questions)
- [Contributions](#contributions)
## Questions
@ -28,23 +28,23 @@ Jump in there and lurk, talk to us, and help others.
Help us help you!
Spending time framing a question and adding support links or resources makes it
much easier for us to help. Its easy to fall into the trap of asking something too
specific when youre close to a problem. Then, those trying to help you out have
much easier for us to help. Its easy to fall into the trap of asking something too
specific when youre close to a problem. Then, those trying to help you out have
to spend a lot of time asking additional questions to understand what you are
hoping to achieve.
Spending the extra time up front can help save everyone time in the long run.
* Try to define what you need help with:
* Is there something in particular you want to do?
* What problem are you encountering and what steps have you taken to try and fix it?
* Is there a concept youre not understanding?
* Learn about the [rubber duck debugging method][rubberduck]
* Avoid falling for the [XY problem][xy]
* Search on GitHub and Spectrum to see if a similar question has been asked
* Read through the [Getting Started Guide](https://mdxjs.com/getting-started)
* If possible, provide sample code, a [CodeSandbox](https://codesandbox.io), or a video
* The more time you put into asking your question, the better we can help you
- Try to define what you need help with:
- Is there something in particular you want to do?
- What problem are you encountering and what steps have you taken to try and fix it?
- Is there a concept youre not understanding?
- Learn about the [rubber duck debugging method][rubberduck]
- Avoid falling for the [XY problem][xy]
- Search on GitHub and Spectrum to see if a similar question has been asked
- Read through the [Getting Started Guide](https://mdxjs.com/getting-started)
- If possible, provide sample code, a [CodeSandbox](https://codesandbox.io), or a video
- The more time you put into asking your question, the better we can help you
## Contributions
@ -53,11 +53,7 @@ Spending the extra time up front can help save everyone time in the long run.
<!-- Definitions -->
[coc]: https://github.com/mdx-js/.github/blob/master/code-of-conduct.md
[rubberduck]: https://rubberduckdebugging.com
[xy]: https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem/66378#66378
[chat]: https://spectrum.chat/mdx
[contributing]: https://mdxjs.com/contributing

View File

@ -31,13 +31,13 @@ See the section about [deployment](https://facebook.github.io/create-react-app/d
### `npm run eject`
**Note: this is a one-way operation. Once you `eject`, you cant go back!**
**Note: this is a one-way operation. Once you `eject`, you cant go back!**
If you arent satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
If you arent satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point youre on your own.
Instead, it will copy all the configuration files and the transitive dependencies (Webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point youre on your own.
You dont have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldnt feel obligated to use this feature. However we understand that this tool wouldnt be useful if you couldnt customize it when you are ready for it.
You dont have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldnt feel obligated to use this feature. However we understand that this tool wouldnt be useful if you couldnt customize it when you are ready for it.
## Learn More

View File

@ -1,7 +1,7 @@
import React, {lazy, Component, Suspense} from 'react'
import {importMDX} from 'mdx.macro'
const Content = lazy(() => importMDX('./Content.mdx'))
const Content = lazy(() => importMDX('./content.mdx'))
class App extends Component {
render() {

View File

@ -1,7 +0,0 @@
export const Demo = () => (
<div style={{ padding: 20, backgroundColor: "tomato" }} />
);
# Hello, world!
<Demo />

View File

@ -0,0 +1,7 @@
export const Demo = () => (
<div style={{padding: 20, backgroundColor: 'tomato'}} />
)
# Hello, world!
<Demo />

View File

@ -1,3 +1,3 @@
# Hello, world!
<div style={{ padding: '20px', backgroundColor: 'tomato' }} />
<div style={{padding: '20px', backgroundColor: 'tomato'}} />

View File

@ -4,15 +4,15 @@
import React from 'react'
import Example from './place'
export default () => (
<Example />
)
export default () => <Example />
```
```js render=true
<div style={{ backgroundColor: 'rebeccapurple', padding: '20px', marginTop: '20px' }} />
<div
style={{backgroundColor: 'rebeccapurple', padding: '20px', marginTop: '20px'}}
/>
```
```js live=true
<div style={{ backgroundColor: 'tomato', padding: '20px' }} />
<div style={{backgroundColor: 'tomato', padding: '20px'}} />
```

View File

@ -1,8 +1,8 @@
import Counter from './_counter.jsx';
import Counter from './_counter.jsx'
# Hello, world!
Zero supports MDX natively.
Zero supports MDX natively.
You can import React components in an `.mdx` file.
<Counter />

View File

@ -66,7 +66,7 @@
"lerna": "3.20.2",
"lint-staged": "10.0.2",
"memory-fs": "0.5.0",
"prettier": "1.19.1",
"prettier": "prettier/prettier",
"prettier-plugin-pkg": "0.4.10",
"react": "16.12.0",
"react-dom": "16.12.0",
@ -76,9 +76,13 @@
"remark-math": "2.0.0",
"remark-mdx": "^1.5.1",
"remark-parse": "7.0.2",
"remark-preset-prettier": "^0.3.0",
"remark-preset-wooorm": "6.0.1",
"remark-slug": "5.1.2",
"remark-stringify": "7.0.4",
"retext-english": "^3.0.4",
"retext-preset-wooorm": "^2.0.0",
"retext-sentence-spacing": "^3.0.0",
"rimraf": "3.0.0",
"typescript": "3.7.5",
"unified": "8.4.2",
@ -123,23 +127,5 @@
"bracketSpacing": false,
"semi": false,
"trailingComma": "none"
},
"remarkConfig": {
"plugins": [
"./packages/remark-mdx",
"preset-wooorm",
[
"lint-no-file-name-mixed-case",
false
],
[
"lint-maximum-line-length",
false
],
[
"validate-links",
false
]
]
}
}

View File

@ -38,10 +38,7 @@ const plugin = new BabelPluginApplyMdxTypeProp()
const result = babel.transform(jsx, {
configFile: false,
plugins: [
'@babel/plugin-syntax-jsx',
plugin.plugin
]
plugins: ['@babel/plugin-syntax-jsx', plugin.plugin]
})
console.log(result.code)

View File

@ -1,7 +1,7 @@
# `babel-plugin-extract-import-names`
Babel plugin that extracts all variable names from
import statements. Used by the [MDX](https://mdxjs.com)
import statements. Used by the [MDX](https://mdxjs.com)
pragma.
## Installation

View File

@ -1,7 +1,7 @@
# `babel-plugin-html-attributes-to-jsx`
Coerce HTML attributes into something JSX and React
friendly. Used by [MDX](https://mdxjs.com).
friendly. Used by [MDX](https://mdxjs.com).
## Installation
@ -28,10 +28,7 @@ const plugin = new BabelPluginHtmlAttributesToJsx()
const result = babel.transform(jsx, {
configFile: false,
plugins: [
'@babel/plugin-syntax-jsx',
plugin
]
plugins: ['@babel/plugin-syntax-jsx', plugin]
})
console.log(result.code)

View File

@ -1,7 +1,7 @@
# `babel-plugin-remove-export-keywords`
Remove export keywords by coercing them into variable
declarations. Used by [MDX](https://mdxjs.com).
declarations. Used by [MDX](https://mdxjs.com).
## Installation
@ -28,10 +28,7 @@ const plugin = new BabelPluginApplyMdxTypeProp()
const result = babel.transform(jsx, {
configFile: false,
plugins: [
'@babel/plugin-syntax-jsx',
plugin
]
plugins: ['@babel/plugin-syntax-jsx', plugin]
})
console.log(result.code)

View File

@ -39,31 +39,17 @@ abide by its terms.
<!-- Definitions -->
[build]: https://travis-ci.com/mdx-js/mdx
[build-badge]: https://travis-ci.com/mdx-js/mdx.svg?branch=master
[lerna]: https://lernajs.io/
[lerna-badge]: https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg
[spectrum]: https://spectrum.chat/mdx
[spectrum-badge]: https://withspectrum.github.io/badge/badge.svg
[contributing]: https://mdxjs.com/contributing
[support]: https://mdxjs.com/support
[coc]: https://github.com/mdx-js/.github/blob/master/code-of-conduct.md
[mit]: https://github.com/mdx-js/mdx/blob/master/license
[compositor]: https://compositor.io
[zeit]: https://zeit.co
[mdx]: https://github.com/mdx-js/mdx
[npm]: https://docs.npmjs.com/cli/init
[next]: https://github.com/mdx-js/mdx/tree/master/examples/next

View File

@ -1,36 +1,36 @@
* [Introduction](/)
* [Getting Started](/getting-started)
* [Next.js](/getting-started/next)
* [Gatsby](/getting-started/gatsby)
* [Create React App](/getting-started/create-react-app)
* [React Static](/getting-started/react-static)
* [Webpack](/getting-started/webpack)
* [Parcel](/getting-started/parcel)
* [Zero](/getting-started/zero)
* [Playground <sup style={{ color: '#444', textTransform: 'uppercase' }}>*alpha*</sup>](/playground)
* [Guides](/guides)
* [Syntax highlighting](/guides/syntax-highlighting)
* [Live code editor](/guides/live-code)
* [Math blocks](/guides/math-blocks)
* [Table of contents](/guides/table-of-contents)
* [Writing a plugin](/guides/writing-a-plugin)
* [Custom loader](/guides/custom-loader)
* [Wrapper customization](/guides/wrapper-customization)
* [Render MDX to the terminal](/guides/terminal)
* [Vue <sup style={{ color: '#444', textTransform: 'uppercase' }}>*alpha*</sup>](/guides/vue)
* [Advanced](/advanced)
* [API](/advanced/api)
* [Runtime](/advanced/runtime)
* [AST](/advanced/ast)
* [Components](/advanced/components)
* [Plugins](/advanced/plugins)
* [Transform Content](/advanced/transform-content)
* [Typescript](/advanced/typescript)
* [Support](/support)
* [Contributing](/contributing)
* [Projects](/projects)
* [Editors](/editors)
* [Blog](/blog)
* [About](/about)
* [Migrating from v0 to v1](/migrating/v1)
* [V0](https://v0.mdxjs.com)
- [Introduction](/)
- [Getting Started](/getting-started)
- [Next.js](/getting-started/next)
- [Gatsby](/getting-started/gatsby)
- [Create React App](/getting-started/create-react-app)
- [React Static](/getting-started/react-static)
- [Webpack](/getting-started/webpack)
- [Parcel](/getting-started/parcel)
- [Zero](/getting-started/zero)
- [Playground <sup style={{ color: '#444', textTransform: 'uppercase' }}>_alpha_</sup>](/playground)
- [Guides](/guides)
- [Syntax highlighting](/guides/syntax-highlighting)
- [Live code editor](/guides/live-code)
- [Math blocks](/guides/math-blocks)
- [Table of contents](/guides/table-of-contents)
- [Writing a plugin](/guides/writing-a-plugin)
- [Custom loader](/guides/custom-loader)
- [Wrapper customization](/guides/wrapper-customization)
- [Render MDX to the terminal](/guides/terminal)
- [Vue <sup style={{ color: '#444', textTransform: 'uppercase' }}>_alpha_</sup>](/guides/vue)
- [Advanced](/advanced)
- [API](/advanced/api)
- [Runtime](/advanced/runtime)
- [AST](/advanced/ast)
- [Components](/advanced/components)
- [Plugins](/advanced/plugins)
- [Transform Content](/advanced/transform-content)
- [Typescript](/advanced/typescript)
- [Support](/support)
- [Contributing](/contributing)
- [Projects](/projects)
- [Editors](/editors)
- [Blog](/blog)
- [About](/about)
- [Migrating from v0 to v1](/migrating/v1)
- [V0](https://v0.mdxjs.com)

View File

@ -5,9 +5,9 @@ export default Layout
# Playground
Write some MDX code and see it render to the right. Below, you can also
see the output JSX and the intermediary ASTs. This can be helpful for
debugging or exploring how MDX works. All [Rebass][] components are in
Write some MDX code and see it render to the right. Below, you can also
see the output JSX and the intermediary ASTs. This can be helpful for
debugging or exploring how MDX works. All [Rebass][] components are in
scope, so you can use those in the editor.
<Playground />

View File

@ -23,23 +23,20 @@ module: {
// ...
{
test: /\.mdx?$/,
use: [
'babel-loader',
'@mdx-js/loader'
]
use: ['babel-loader', '@mdx-js/loader']
}
]
}
```
The `renderer` option specifies a string that will be prepended to the generated source allowing for the use of any `createElement` implementation. By default, that string is:
The `renderer` option specifies a string that will be prepended to the generated source allowing for the use of any `createElement` implementation. By default, that string is:
```js
import React from 'react'
import { mdx } from '@mdx-js/react'
import {mdx} from '@mdx-js/react'
```
Using the `renderer` option, one can swap out React for another implementation. The example below wraps a generic JSX compatible function named `h`.
Using the `renderer` option, one can swap out React for another implementation. The example below wraps a generic JSX compatible function named `h`.
```js
const renderer = `
@ -95,29 +92,16 @@ abide by its terms.
<!-- Definitions -->
[build]: https://travis-ci.com/mdx-js/mdx
[build-badge]: https://travis-ci.com/mdx-js/mdx.svg?branch=master
[lerna]: https://lernajs.io/
[lerna-badge]: https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg
[spectrum]: https://spectrum.chat/mdx
[spectrum-badge]: https://withspectrum.github.io/badge/badge.svg
[contributing]: https://mdxjs.com/contributing
[support]: https://mdxjs.com/support
[coc]: https://github.com/mdx-js/.github/blob/master/code-of-conduct.md
[mit]: license
[compositor]: https://compositor.io
[zeit]: https://zeit.co
[mdx]: https://github.com/mdx-js/mdx
[npm]: https://docs.npmjs.com/cli/install

View File

@ -31,8 +31,12 @@ console.log(result)
Yields:
```js
export default ({components, ...props}) => <MDXTag name="wrapper" components={components}><MDXTag name="h1" components={components}>{`Hello, MDX`}</MDXTag>
<MDXTag name="p" components={components}>{`I <3 Markdown and JSX`}</MDXTag></MDXTag>
export default ({components, ...props}) => (
<MDXTag name="wrapper" components={components}>
<MDXTag name="h1" components={components}>{`Hello, MDX`}</MDXTag>
<MDXTag name="p" components={components}>{`I <3 Markdown and JSX`}</MDXTag>
</MDXTag>
)
```
## Contribute
@ -51,31 +55,17 @@ abide by its terms.
<!-- Definitions -->
[build]: https://travis-ci.com/mdx-js/mdx
[build-badge]: https://travis-ci.com/mdx-js/mdx.svg?branch=master
[lerna]: https://lernajs.io/
[lerna-badge]: https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg
[spectrum]: https://spectrum.chat/mdx
[spectrum-badge]: https://withspectrum.github.io/badge/badge.svg
[contributing]: https://mdxjs.com/contributing
[support]: https://mdxjs.com/support
[coc]: https://github.com/mdx-js/.github/blob/master/code-of-conduct.md
[mit]: license
[remark]: https://github.com/remarkjs/remark
[compositor]: https://compositor.io
[zeit]: https://zeit.co
[mdx]: https://github.com/mdx-js/mdx
[npm]: https://docs.npmjs.com/cli/install

View File

@ -47,33 +47,18 @@ abide by its terms.
<!-- Definitions -->
[build]: https://travis-ci.com/mdx-js/mdx
[build-badge]: https://travis-ci.com/mdx-js/mdx.svg?branch=master
[lerna]: https://lernajs.io/
[lerna-badge]: https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg
[spectrum]: https://spectrum.chat/mdx
[spectrum-badge]: https://withspectrum.github.io/badge/badge.svg
[contributing]: https://mdxjs.com/contributing
[support]: https://mdxjs.com/support
[coc]: https://github.com/mdx-js/.github/blob/master/code-of-conduct.md
[mit]: https://github.com/mdx-js/mdx/blob/master/license
[compositor]: https://compositor.io
[zeit]: https://zeit.co
[mdx]: https://github.com/mdx-js/mdx
[parcel]: https://parceljs.org
[npm]: https://docs.npmjs.com/cli/install
[yarn]: https://yarnpkg.com/lang/en/docs/cli/install/

View File

@ -18,14 +18,15 @@ npm install --save @mdx-js/react
## Usage
```md
// helloworld.md
<!-- helloworld.md -->
# Hello, World!
```
```jsx
import React from 'react'
import { MDXProvider } from '@mdx-js/react'
import { renderToString } from 'react-dom/server'
import {MDXProvider} from '@mdx-js/react'
import {renderToString} from 'react-dom/server'
import HelloWorld from './helloworld.md'
@ -33,7 +34,7 @@ const H1 = props => <h1 style={{color: 'tomato'}} {...props} />
console.log(
renderToString(
<MDXProvider components={{ h1: H1 }}>
<MDXProvider components={{h1: H1}}>
<HelloWorld />
</MDXProvider>
)
@ -62,29 +63,16 @@ abide by its terms.
<!-- Definitions -->
[build]: https://travis-ci.com/mdx-js/mdx
[build-badge]: https://travis-ci.com/mdx-js/mdx.svg?branch=master
[lerna]: https://lernajs.io/
[lerna-badge]: https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg
[spectrum]: https://spectrum.chat/mdx
[spectrum-badge]: https://withspectrum.github.io/badge/badge.svg
[contributing]: https://mdxjs.com/contributing
[support]: https://mdxjs.com/support
[coc]: https://github.com/mdx-js/.github/blob/master/code-of-conduct.md
[mit]: license
[compositor]: https://compositor.io
[zeit]: https://zeit.co
[mdx]: https://github.com/mdx-js/mdx
[npm]: https://docs.npmjs.com/cli/install

View File

@ -4,7 +4,7 @@
[![lerna][lerna-badge]][lerna]
[![Join the community on Spectrum][spectrum-badge]][spectrum]
Remove export nodes from the [MDXAST][]. This is useful for scenarios where the exports arent needed like an MDX playground.
Remove export nodes from the [MDXAST][]. This is useful for scenarios where the exports arent needed like an MDX playground.
## Installation
@ -75,31 +75,17 @@ abide by its terms.
<!-- Definitions -->
[build]: https://travis-ci.com/mdx-js/mdx
[build-badge]: https://travis-ci.com/mdx-js/mdx.svg?branch=master
[lerna]: https://lernajs.io/
[lerna-badge]: https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg
[spectrum]: https://spectrum.chat/mdx
[spectrum-badge]: https://withspectrum.github.io/badge/badge.svg
[contributing]: https://mdxjs.com/contributing
[support]: https://mdxjs.com/support
[coc]: https://github.com/mdx-js/.github/blob/master/code-of-conduct.md
[mit]: license
[remark]: https://github.com/remarkjs/remark
[johno]: https://johno.com
[npm]: https://docs.npmjs.com/cli/install
[mdx]: https://mdxjs.com
[mdxast]: https://github.com/mdx-js/specification#mdxast

View File

@ -4,7 +4,7 @@
[![lerna][lerna-badge]][lerna]
[![Join the community on Spectrum][spectrum-badge]][spectrum]
Remove import nodes from the [MDXAST][]. This is useful for scenarios where the imports arent needed like an MDX playground.
Remove import nodes from the [MDXAST][]. This is useful for scenarios where the imports arent needed like an MDX playground.
## Installation
@ -73,31 +73,17 @@ abide by its terms.
<!-- Definitions -->
[build]: https://travis-ci.com/mdx-js/mdx
[build-badge]: https://travis-ci.com/mdx-js/mdx.svg?branch=master
[lerna]: https://lernajs.io/
[lerna-badge]: https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg
[spectrum]: https://spectrum.chat/mdx
[spectrum-badge]: https://withspectrum.github.io/badge/badge.svg
[contributing]: https://mdxjs.com/contributing
[support]: https://mdxjs.com/support
[coc]: https://github.com/mdx-js/.github/blob/master/code-of-conduct.md
[mit]: license
[remark]: https://github.com/remarkjs/remark
[johno]: https://johno.com
[npm]: https://docs.npmjs.com/cli/install
[mdx]: https://mdxjs.com
[mdxast]: https://github.com/mdx-js/specification#mdxast

View File

@ -30,29 +30,16 @@ abide by its terms.
<!-- Definitions -->
[build]: https://travis-ci.com/mdx-js/mdx
[build-badge]: https://travis-ci.com/mdx-js/mdx.svg?branch=master
[lerna]: https://lernajs.io/
[lerna-badge]: https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg
[spectrum]: https://spectrum.chat/mdx
[spectrum-badge]: https://withspectrum.github.io/badge/badge.svg
[contributing]: https://mdxjs.com/contributing
[support]: https://mdxjs.com/support
[coc]: https://github.com/mdx-js/.github/blob/master/code-of-conduct.md
[mit]: license
[remark]: https://github.com/remarkjs/remark
[mdx]: https://github.com/mdx-js/mdx
[author]: https://wooorm.com
[author2]: https://johno.com

View File

@ -27,7 +27,7 @@ import MDX from '@mdx-js/runtime'
// Provide custom components for markdown elements
const components = {
h1: props => <h1 style={{ color: 'tomato' }} {...props} />,
h1: props => <h1 style={{color: 'tomato'}} {...props} />,
Demo: props => <h1>This is a demo component</h1>
}
@ -43,7 +43,9 @@ const mdx = `
`
export default () => (
<MDX components={components} scope={scope}>{mdx}</MDX>
<MDX components={components} scope={scope}>
{mdx}
</MDX>
)
```
@ -63,29 +65,16 @@ abide by its terms.
<!-- Definitions -->
[build]: https://travis-ci.com/mdx-js/mdx
[build-badge]: https://travis-ci.com/mdx-js/mdx.svg?branch=master
[lerna]: https://lernajs.io/
[lerna-badge]: https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg
[spectrum]: https://spectrum.chat/mdx
[spectrum-badge]: https://withspectrum.github.io/badge/badge.svg
[contributing]: https://mdxjs.com/contributing
[support]: https://mdxjs.com/support
[coc]: https://github.com/mdx-js/.github/blob/master/code-of-conduct.md
[mit]: license
[compositor]: https://compositor.io
[zeit]: https://zeit.co
[mdx]: https://github.com/mdx-js/mdx
[npm]: https://docs.npmjs.com/cli/install

View File

@ -9,7 +9,5 @@ Test utility functions used in [MDX][].
<!-- Definitions -->
[mit]: license
[mdx]: https://github.com/mdx-js/mdx
[author]: https://johno.com

View File

@ -15,7 +15,5 @@ yarn add @mdx-js/util
<!-- Definitions -->
[mit]: license
[mdx]: https://github.com/mdx-js/mdx
[author]: https://johno.com

View File

@ -23,10 +23,7 @@ module: {
// ...
{
test: /\.mdx?$/,
use: [
'babel-loader',
'@mdx-js/vue-loader'
]
use: ['babel-loader', '@mdx-js/vue-loader']
}
]
}
@ -48,29 +45,16 @@ abide by its terms.
<!-- Definitions -->
[build]: https://travis-ci.com/mdx-js/mdx
[build-badge]: https://travis-ci.com/mdx-js/mdx.svg?branch=master
[lerna]: https://lernajs.io/
[lerna-badge]: https://img.shields.io/badge/maintained%20with-lerna-cc00ff.svg
[spectrum]: https://spectrum.chat/mdx
[spectrum-badge]: https://withspectrum.github.io/badge/badge.svg
[contributing]: https://mdxjs.com/contributing
[support]: https://mdxjs.com/support
[coc]: https://github.com/mdx-js/.github/blob/master/code-of-conduct.md
[mit]: license
[compositor]: https://compositor.io
[zeit]: https://zeit.co
[mdx]: https://github.com/mdx-js/mdx
[npm]: https://docs.npmjs.com/cli/install

View File

@ -74,22 +74,22 @@ and cumbersome syntax.
>
> — [@chrisbiscardi][tweet]
MDX seeks to make writing with markdown *and* JSX simpler while being more
MDX seeks to make writing with markdown _and_ JSX simpler while being more
expressive.
The possibilities are endless when you combine components (that can even be
dynamic or load data) with the simplicity of markdown for long-form content.
A nice example of this is [mdx-deck][], a great way to create slides with MDX.
* Fast
* No runtime compilation
* [Pluggable][remark-plugins]
* Element to React component mapping
* React component `import`/`export`
* Customizable layouts
* [Webpack loader](https://mdxjs.com/getting-started/webpack)
* [Parcel plugin](https://mdxjs.com/getting-started/parcel)
* [Next.js plugin](https://mdxjs.com/getting-started/next)
* [Gatsby plugin](https://mdxjs.com/getting-started/gatsby)
- Fast
- No runtime compilation
- [Pluggable][remark-plugins]
- Element to React component mapping
- React component `import`/`export`
- Customizable layouts
- [Webpack loader](https://mdxjs.com/getting-started/webpack)
- [Parcel plugin](https://mdxjs.com/getting-started/parcel)
- [Next.js plugin](https://mdxjs.com/getting-started/next)
- [Gatsby plugin](https://mdxjs.com/getting-started/gatsby)
## Sponsors
@ -128,10 +128,10 @@ A nice example of this is [mdx-deck][], a great way to create slides with MDX.
## Authors
* [John Otander][john] ([@4lpine][4lpine]) [Compositor][] + [Clearbit][]
* [Tim Neutkens][tim] ([@timneutkens][timneutkens]) [ZEIT][]
* [Guillermo Rauch][guillermo] ([@rauchg][rauchg]) [ZEIT][]
* [Brent Jackson][brent] ([@jxnblk][jxnblk]) [Compositor][]
- [John Otander][john] ([@4lpine][4lpine]) [Compositor][] + [Clearbit][]
- [Tim Neutkens][tim] ([@timneutkens][timneutkens]) [ZEIT][]
- [Guillermo Rauch][guillermo] ([@rauchg][rauchg]) [ZEIT][]
- [Brent Jackson][brent] ([@jxnblk][jxnblk]) [Compositor][]
## Related
@ -155,55 +155,29 @@ Join us on [Spectrum][]!
[MIT][] © [Compositor][] and [ZEIT][]
[build]: https://github.com/mdx-js/mdx/actions?query=workflow%3A%22CI%22
[build-badge]: https://github.com/mdx-js/mdx/workflows/CI/badge.svg
[spectrum]: https://spectrum.chat/mdx
[spectrum-badge]: https://withspectrum.github.io/badge/badge.svg
[intro]: https://www.youtube.com/watch?v=d2sQiI5NFAM&list=PLV5CVI1eNcJgCrPH_e6d57KRUTiDZgs0u
[tweet]: https://twitter.com/chrisbiscardi/status/1022304288326864896
[remark-plugins]: https://github.com/remarkjs/remark/blob/master/doc/plugins.md
[website]: https://mdxjs.com
[spec]: https://github.com/mdx-js/specification#related
[john]: https://johno.com
[tim]: https://github.com/timneutkens
[guillermo]: https://rauchg.com
[brent]: https://jxnblk.com
[4lpine]: https://twitter.com/4lpine
[rauchg]: https://twitter.com/rauchg
[timneutkens]: https://twitter.com/timneutkens
[jxnblk]: https://twitter.com/jxnblk
[compositor]: https://compositor.io
[zeit]: https://zeit.co
[clearbit]: https://clearbit.com
[announcement]: https://medium.com/unifiedjs/collectively-evolving-through-crowdsourcing-22c359ea95cc
[contribute]: #contribute
[contributing]: https://mdxjs.com/contributing
[support]: https://mdxjs.com/support
[coc]: https://github.com/mdx-js/.github/blob/master/code-of-conduct.md
[mdx-deck]: https://github.com/jxnblk/mdx-deck
[mit]: license

468
yarn.lock
View File

@ -33,6 +33,13 @@
resolved "https://registry.yarnpkg.com/@ampproject/toolbox-script-csp/-/toolbox-script-csp-1.1.1.tgz#0b049a1c86c99f300162a10e1b9ce83c6e354a45"
integrity sha512-gACGfsVKinCy/977FSrlVgo6jxTZ0lcTCvCnRlNwvSOcxJVm+jJR3sP7/F43fpak9Gsq/EwFaatfnNMbunPc+w==
"@angular/compiler@8.2.14":
version "8.2.14"
resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-8.2.14.tgz#46db7a9d1c17f236126518ff26480c160d5a6183"
integrity sha512-ABZO4E7eeFA1QyJ2trDezxeQM5ZFa1dXw1Mpl/+1vuXDKNjJgNyWYwKp/NwRkLmrsuV0yv4UDCDe4kJOGbPKnw==
dependencies:
tslib "^1.9.0"
"@babel/cli@^7.1.5":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.8.3.tgz#121beb7c273e0521eb2feeb3883a2b7435d12328"
@ -322,7 +329,7 @@
esutils "^2.0.2"
js-tokens "^4.0.0"
"@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.1.3", "@babel/parser@^7.4.3", "@babel/parser@^7.4.4", "@babel/parser@^7.7.5", "@babel/parser@^7.8.3":
"@babel/parser@7.8.3", "@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.1.3", "@babel/parser@^7.4.3", "@babel/parser@^7.4.4", "@babel/parser@^7.7.5", "@babel/parser@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.3.tgz#790874091d2001c9be6ec426c2eed47bc7679081"
integrity sha512-/V72F4Yp/qmHaTALizEm9Gf2eQHV3QyTL3K0cNfijwnMnb1L+LDlAubb/ZnSdGAVzVSWakujHYs1I26x66sMeQ==
@ -1504,6 +1511,26 @@
unique-filename "^1.1.1"
which "^1.3.1"
"@glimmer/interfaces@^0.41.0":
version "0.41.4"
resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.41.4.tgz#3f3e26abea8a4e1463130e9a75e94372781d154b"
integrity sha512-MzXwMyod3MlwSZezHSaVBsCEIW/giYYfTDYARR46QnYsaFVatMVbydjsI7jkAuBCbnLCyNOIc1TrYIj71i/rpg==
"@glimmer/syntax@0.41.0":
version "0.41.0"
resolved "https://registry.yarnpkg.com/@glimmer/syntax/-/syntax-0.41.0.tgz#af033e48475e29a4784900c13695925d752f462d"
integrity sha512-sYmgUMdK0jX+3ZNX9C2TKvL1YZGsKIcXRicwnzoTC7F56z29CbSCc7o6Zf0CI4L2Q7FSnHDxldlSe48wBAr6vQ==
dependencies:
"@glimmer/interfaces" "^0.41.0"
"@glimmer/util" "^0.41.0"
handlebars "^4.0.13"
simple-html-tokenizer "^0.5.7"
"@glimmer/util@^0.41.0":
version "0.41.4"
resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.41.4.tgz#508fd82ca40305416e130f0da7b537295ded7989"
integrity sha512-DwS94K+M0vtG+cymxH0rslJr09qpdjyOLdCjmpKcG/nNiZQfMA1ybAaFEmwk9UaVlUG9STENFeQwyrLevJB+7g==
"@hapi/address@2.x.x":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@hapi/address/-/address-2.0.0.tgz#9f05469c88cb2fd3dcd624776b54ee95c312126a"
@ -1546,7 +1573,7 @@
prop-types "^15.6.2"
scheduler "^0.17.0"
"@iarna/toml@^2.2.0":
"@iarna/toml@2.2.3", "@iarna/toml@^2.2.0":
version "2.2.3"
resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.3.tgz#f060bf6eaafae4d56a7dac618980838b0696e2ab"
integrity sha512-FmuxfCuolpLl0AnQ2NHSzoUKWEJDFl63qXjzdoWBVyFCXzMGm1spBzk7LeHNoVCiWCF7mRVms9e6jEV9+MoPbg==
@ -3558,6 +3585,19 @@
"@typescript-eslint/typescript-estree" "2.17.0"
eslint-visitor-keys "^1.1.0"
"@typescript-eslint/typescript-estree@2.11.0":
version "2.11.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.11.0.tgz#21ada6504274cd1644855926312c798fc697e9fb"
integrity sha512-HGY4+d4MagO6cKMcKfIKaTMxcAv7dEVnji2Zi+vi5VV8uWAM631KjAB5GxFcexMYrwKT0EekRiiGK1/Sd7VFGA==
dependencies:
debug "^4.1.1"
eslint-visitor-keys "^1.1.0"
glob "^7.1.6"
is-glob "^4.0.1"
lodash.unescape "4.0.1"
semver "^6.3.0"
tsutils "^3.17.1"
"@typescript-eslint/typescript-estree@2.17.0":
version "2.17.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.17.0.tgz#2ce1531ec0925ef8d22d7026235917c2638a82af"
@ -4196,6 +4236,21 @@ amphtml-validator@1.0.23:
commander "2.9.0"
promise "7.1.1"
angular-estree-parser@1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/angular-estree-parser/-/angular-estree-parser-1.1.5.tgz#f278e03e648a2bfb6c5dcdf17ba3273f3251b74a"
integrity sha512-M82O7HGwgS6mBfQq9ijCwuP4uYgSgycmNWQOHomToWRAdfX/c2pAwpCYdbVG9lc6Go8mr5+A2bRQnykdCVdpuA==
dependencies:
lines-and-columns "^1.1.6"
tslib "^1.9.3"
angular-html-parser@1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/angular-html-parser/-/angular-html-parser-1.3.0.tgz#2b87c3c1b7535a972a00e35604221df3c51e6c6e"
integrity sha512-FCLuM8ZUt30qwiV5KlW8uWL9cwlS2loOIGq8wUQFypkJ1QZqJk829yxTsvp2DvCMZ7uLwfjIaIrKV5N2+RLiSQ==
dependencies:
tslib "^1.9.3"
ansi-align@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
@ -6927,6 +6982,14 @@ circular-dependency-plugin@^5.0.2:
resolved "https://registry.yarnpkg.com/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz#e09dbc2dd3e2928442403e2d45b41cea06bc0a93"
integrity sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==
cjk-regex@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/cjk-regex/-/cjk-regex-2.0.0.tgz#060aa111e61092768c438ccc9c643a53e8fe1ee5"
integrity sha512-E4gFi2f3jC0zFVHpaAcupW+gv9OejZ2aV3DP/LlSO0dDcZJAXw7W0ivn+vN17edN/PhU4HCgs1bfx7lPK7FpdA==
dependencies:
regexp-util "^1.2.1"
unicode-regex "^2.0.0"
class-utils@^0.3.5:
version "0.3.6"
resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
@ -7810,7 +7873,7 @@ cors@^2.8.5:
object-assign "^4"
vary "^1"
cosmiconfig@^5.0.0, cosmiconfig@^5.0.2, cosmiconfig@^5.1.0, cosmiconfig@^5.2.1:
cosmiconfig@5.2.1, cosmiconfig@^5.0.0, cosmiconfig@^5.0.2, cosmiconfig@^5.1.0, cosmiconfig@^5.2.1:
version "5.2.1"
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
integrity sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==
@ -8401,6 +8464,11 @@ dashdash@^1.12.0:
dependencies:
assert-plus "^1.0.0"
dashify@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/dashify/-/dashify-2.0.0.tgz#fff270ca2868ca427fee571de35691d6e437a648"
integrity sha512-hpA5C/YrPjucXypHPPc0oJ1l9Hf6wWbiOL7Ik42cxnsUOhWiCB/fylKbKqqJalW9FgkNQCw16YO8uW9Hs0Iy1A==
data-urls@^1.0.0, data-urls@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe"
@ -8554,7 +8622,7 @@ decompress@^4.0.0:
pify "^2.3.0"
strip-dirs "^2.0.0"
dedent@^0.7.0:
dedent@0.7.0, dedent@^0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=
@ -8869,6 +8937,11 @@ diff-sequences@^25.1.0:
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.1.0.tgz#fd29a46f1c913fd66c22645dc75bffbe43051f32"
integrity sha512-nFIfVk5B/NStCsJ+zaPO4vYuLjlzQ6uFvPxzYyHlejNZ/UGa7G/n7peOXVrVNvRuyfstt+mZQYGpjxg9Z6N8Kw==
diff@4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
diff@^3.2.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
@ -9173,7 +9246,12 @@ ecc-jsbn@~0.1.1:
jsbn "~0.1.0"
safer-buffer "^2.1.0"
editorconfig@^0.15.3:
editorconfig-to-prettier@0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/editorconfig-to-prettier/-/editorconfig-to-prettier-0.1.1.tgz#7391c7067dfd68ffee65afc2c4fbe4fba8d4219a"
integrity sha512-MMadSSVRDb4uKdxV6bCXXN4cTsxIsXYtV4XdPu6FOCSAw6zsCIDA+QEktEU+u6h+c/mTrul5NR+pwFpPxwetiQ==
editorconfig@0.15.3, editorconfig@^0.15.3:
version "0.15.3"
resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5"
integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==
@ -9925,7 +10003,7 @@ estree-walker@^0.6.1:
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362"
integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==
esutils@^2.0.0, esutils@^2.0.2:
esutils@2.0.3, esutils@^2.0.0, esutils@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
@ -10615,6 +10693,16 @@ find-cache-dir@^3.0.0, find-cache-dir@^3.2.0:
make-dir "^3.0.0"
pkg-dir "^4.1.0"
find-parent-dir@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54"
integrity sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=
find-project-root@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/find-project-root/-/find-project-root-1.1.1.tgz#d242727a2d904725df5714f23dfdcdedda0b6ef8"
integrity sha1-0kJyei2QRyXfVxTyPf3N7doLbvg=
find-root@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4"
@ -10700,6 +10788,11 @@ flatten@^1.0.2:
resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b"
integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==
flow-parser@0.116.1:
version "0.116.1"
resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.116.1.tgz#2cded960269f702552feb5419c57c7c146ba171e"
integrity sha512-uMbaTjiMhBKa/il1esHyWyVVWfrWdG/eLmG62MQulZ59Yghpa30H1tmukFZLptsBafZ8ddiPyf7I+SiA+euZ6A==
flush-write-stream@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8"
@ -11417,6 +11510,13 @@ get-stream@3.0.0, get-stream@^3.0.0:
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14"
integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=
get-stream@4.1.0, get-stream@^4.0.0, get-stream@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
dependencies:
pump "^3.0.0"
get-stream@^2.2.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
@ -11425,13 +11525,6 @@ get-stream@^2.2.0:
object-assign "^4.0.1"
pinkie-promise "^2.0.0"
get-stream@^4.0.0, get-stream@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
dependencies:
pump "^3.0.0"
get-stream@^5.0.0, get-stream@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9"
@ -11675,6 +11768,17 @@ globby@10.0.1, globby@^10.0.1:
merge2 "^1.2.3"
slash "^3.0.0"
globby@6.1.0, globby@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=
dependencies:
array-union "^1.0.1"
glob "^7.0.3"
object-assign "^4.0.1"
pify "^2.0.0"
pinkie-promise "^2.0.0"
globby@8.0.1:
version "8.0.1"
resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.1.tgz#b5ad48b8aa80b35b814fc1281ecc851f1d2b5b50"
@ -11701,17 +11805,6 @@ globby@8.0.2:
pify "^3.0.0"
slash "^1.0.0"
globby@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c"
integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=
dependencies:
array-union "^1.0.1"
glob "^7.0.3"
object-assign "^4.0.1"
pify "^2.0.0"
pinkie-promise "^2.0.0"
globby@^7.1.1:
version "7.1.1"
resolved "https://registry.yarnpkg.com/globby/-/globby-7.1.1.tgz#fb2ccff9401f8600945dfada97440cca972b8680"
@ -11896,7 +11989,7 @@ graphql-type-json@^0.2.4:
resolved "https://registry.yarnpkg.com/graphql-type-json/-/graphql-type-json-0.2.4.tgz#545af27903e40c061edd30840a272ea0a49992f9"
integrity sha512-/tq02ayMQjrG4oDFDRLLrPk0KvJXue0nVXoItBe7uAdbNXjQUu+HYCBdAmPLQoseVzUKKMzrhq2P/sfI76ON6w==
graphql@^14.5.8:
graphql@14.5.8, graphql@^14.5.8:
version "14.5.8"
resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.5.8.tgz#504f3d3114cb9a0a3f359bbbcf38d9e5bf6a6b3c"
integrity sha512-MMwmi0zlVLQKLdGiMfWkgQD7dY/TUKt4L+zgJ/aR0Howebod3aNgP5JkgvAULiR2HPVZaP2VEElqtdidHweLkg==
@ -11976,7 +12069,7 @@ handle-thing@^2.0.0:
resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.0.tgz#0e039695ff50c93fc288557d696f3c1dc6776754"
integrity sha512-d4sze1JNC454Wdo2fkuyzCr6aHcbL6PGGuFAz0Li/NcOm1tCHGnWDRmJP85dh9IhQErTc2svWFEX5xHIOo//kQ==
handlebars@^4.0.3, handlebars@^4.1.2:
handlebars@^4.0.13, handlebars@^4.0.3, handlebars@^4.1.2:
version "4.7.2"
resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.2.tgz#01127b3840156a0927058779482031afe0e730d7"
integrity sha512-4PwqDL2laXtTWZghzzCtunQUTLbo31pcCJrd/B/9JP8XbhVzpS5ZXuKqlOzsd1rtcaLo4KqAn8nl8mkknS4MHw==
@ -12377,6 +12470,11 @@ html-comment-regex@^1.1.0:
resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.2.tgz#97d4688aeb5c81886a364faa0cad1dda14d433a7"
integrity sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==
html-element-attributes@2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/html-element-attributes/-/html-element-attributes-2.2.0.tgz#14c45a0480e1afd1f227b3a84b6f158f595f3d49"
integrity sha512-OYsGPti+liRbzedLympKEQuVVnnXrmXc+x9ZDrsk+ts1j1f6VVpQ3jk3WiYHlC5ozcSVacugyu9S+r24FyREvA==
html-encoding-sniffer@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8"
@ -12407,6 +12505,16 @@ html-minifier@^3.2.3, html-minifier@^3.5.16, html-minifier@^3.5.20:
relateurl "0.2.x"
uglify-js "3.4.x"
html-styles@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/html-styles/-/html-styles-1.0.0.tgz#a18061fd651f99c6b75c45c8e0549a3bc3e01a75"
integrity sha1-oYBh/WUfmca3XEXI4FSaO8PgGnU=
html-tag-names@1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/html-tag-names/-/html-tag-names-1.1.4.tgz#51c559e36a077b5eb6c71e6cb49b1d70fffc9124"
integrity sha512-QCOY1/oHmo2BNwsTzuYlW51JLXSxfmMvve+2/9i2cbhxXxT6SuhsUWzcIoMwUi0HZW/NIQBSyJaj7fbcsimoKg==
html-tags@^1.0.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-1.2.0.tgz#c78de65b5663aa597989dd2b7ab49200d7e4db98"
@ -12686,16 +12794,16 @@ ignore-walk@^3.0.1:
dependencies:
minimatch "^3.0.4"
ignore@4.0.6, ignore@^4.0.3, ignore@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
ignore@^3.3.5:
version "3.3.10"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043"
integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==
ignore@^4.0.3, ignore@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
ignore@^5.0.5, ignore@^5.1.1:
version "5.1.4"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf"
@ -13177,6 +13285,13 @@ is-callable@^1.1.4, is-callable@^1.1.5:
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.5.tgz#f7e46b596890456db74e7f6e976cb3273d06faab"
integrity sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==
is-ci@2.0.0, is-ci@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
dependencies:
ci-info "^2.0.0"
is-ci@^1.0.10:
version "1.2.1"
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c"
@ -13184,13 +13299,6 @@ is-ci@^1.0.10:
dependencies:
ci-info "^1.5.0"
is-ci@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c"
integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==
dependencies:
ci-info "^2.0.0"
is-color-stop@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-color-stop/-/is-color-stop-1.1.0.tgz#cfff471aee4dd5c9e158598fbe12967b5cdad345"
@ -14151,6 +14259,13 @@ jest-diff@^25.1.0:
jest-get-type "^25.1.0"
pretty-format "^25.1.0"
jest-docblock@24.9.0, jest-docblock@^24.3.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2"
integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==
dependencies:
detect-newline "^2.1.0"
jest-docblock@^23.2.0:
version "23.2.0"
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-23.2.0.tgz#f085e1f18548d99fdd69b20207e6fd55d91383a7"
@ -14158,13 +14273,6 @@ jest-docblock@^23.2.0:
dependencies:
detect-newline "^2.1.0"
jest-docblock@^24.3.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2"
integrity sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==
dependencies:
detect-newline "^2.1.0"
jest-docblock@^25.1.0:
version "25.1.0"
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.1.0.tgz#0f44bea3d6ca6dfc38373d465b347c8818eccb64"
@ -14996,6 +15104,11 @@ jest@^23.6.0:
import-local "^1.0.0"
jest-cli "^23.6.0"
js-base64@^2.1.9:
version "2.5.1"
resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121"
integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==
js-beautify@^1.6.12:
version "1.10.2"
resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.10.2.tgz#88c9099cd6559402b124cfab18754936f8a7b178"
@ -15220,7 +15333,7 @@ json-stable-stringify-without-jsonify@^1.0.1:
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=
json-stable-stringify@^1.0.1:
json-stable-stringify@1.0.1, json-stable-stringify@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=
@ -15527,16 +15640,16 @@ lerna@3.20.2:
import-local "^2.0.0"
npmlog "^4.1.2"
leven@3.1.0, leven@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
leven@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580"
integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA=
leven@^3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2"
integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
levenary@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.0.tgz#fc146fe75f32dc483a0a2c64aef720f602cd6210"
@ -15557,11 +15670,16 @@ levn@^0.3.0, levn@~0.3.0:
prelude-ls "~1.1.2"
type-check "~0.3.2"
lines-and-columns@^1.1.6:
lines-and-columns@1.1.6, lines-and-columns@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=
linguist-languages@7.7.0:
version "7.7.0"
resolved "https://registry.yarnpkg.com/linguist-languages/-/linguist-languages-7.7.0.tgz#c069731f8b307ce301980a4bac4b81bf06a2c351"
integrity sha512-6vR1OgfD/YK1xgqVBT3aUx9zurSVeHUsXpVyTilT1o7LW6MNAcGmWy5wwmQAAhvEXxG2PZmktHbQiGtJ5hpGkg==
lint-staged@10.0.2:
version "10.0.2"
resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.0.2.tgz#cfdd9fa5080b05fc6e29536897da1795bc67c7f9"
@ -15918,6 +16036,11 @@ lodash.transform@^4.6.0:
resolved "https://registry.yarnpkg.com/lodash.transform/-/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0"
integrity sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A=
lodash.unescape@4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c"
integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=
lodash.uniq@4.5.0, lodash.uniq@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
@ -15928,7 +16051,7 @@ lodash.upperfirst@^4.3.1:
resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce"
integrity sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984=
"lodash@>=3.5 <5", lodash@^4.11.1, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0:
lodash@4.17.15, "lodash@>=3.5 <5", lodash@^4.11.1, lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0:
version "4.17.15"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==
@ -16145,7 +16268,7 @@ mamacro@^0.0.3:
resolved "https://registry.yarnpkg.com/mamacro/-/mamacro-0.0.3.tgz#ad2c9576197c9f1abf308d0787865bd975a3f3e4"
integrity sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==
map-age-cleaner@^0.1.1:
map-age-cleaner@^0.1.1, map-age-cleaner@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a"
integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==
@ -16383,6 +16506,15 @@ media-typer@0.3.0:
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
mem@5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/mem/-/mem-5.1.1.tgz#7059b67bf9ac2c924c9f1cff7155a064394adfb3"
integrity sha512-qvwipnozMohxLXG1pOqoLiZKNkC4r4qqRucSoDwXowsNGDSULiqFTRUF05vcZWnwJSG22qTsynQhxbaMtnX9gw==
dependencies:
map-age-cleaner "^0.1.3"
mimic-fn "^2.1.0"
p-is-promise "^2.1.0"
mem@^4.0.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178"
@ -16706,7 +16838,7 @@ minimist@0.0.8:
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0:
minimist@1.2.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=
@ -16931,6 +17063,11 @@ mz@^2.4.0, mz@^2.5.0, mz@^2.6.0:
object-assign "^4.0.1"
thenify-all "^1.0.0"
n-readlines@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/n-readlines/-/n-readlines-1.0.0.tgz#c353797f216c253fdfef7e91da4e8b17c29a91a6"
integrity sha512-ISDqGcspVu6U3VKqtJZG1uR55SmNNF9uK0EMq1IvNVVZOui6MW6VR0+pIZhqz85ORAGp+4zW+5fJ/SE7bwEibA==
name-all-modules-plugin@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/name-all-modules-plugin/-/name-all-modules-plugin-1.0.1.tgz#0abfb6ad835718b9fb4def0674e06657a954375c"
@ -17337,6 +17474,11 @@ normalize-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-
semver "2 || 3 || 4 || 5"
validate-npm-package-license "^3.0.1"
normalize-path@3.0.0, normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
normalize-path@^2.0.1, normalize-path@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
@ -17344,11 +17486,6 @@ normalize-path@^2.0.1, normalize-path@^2.1.1:
dependencies:
remove-trailing-separator "^1.0.1"
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
normalize-range@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
@ -17888,7 +18025,7 @@ p-is-promise@^1.1.0:
resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e"
integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=
p-is-promise@^2.0.0:
p-is-promise@^2.0.0, p-is-promise@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e"
integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==
@ -18255,6 +18392,10 @@ parse-path@^4.0.0:
is-ssh "^1.3.0"
protocols "^1.4.0"
parse-srcset@ikatyang/parse-srcset#54eb9c1cb21db5c62b4d0e275d7249516df6f0ee:
version "1.0.2"
resolved "https://codeload.github.com/ikatyang/parse-srcset/tar.gz/54eb9c1cb21db5c62b4d0e275d7249516df6f0ee"
parse-unit@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/parse-unit/-/parse-unit-1.0.1.tgz#7e1bb6d5bef3874c28e392526a2541170291eecf"
@ -18860,6 +19001,13 @@ postcss-lab-function@^2.0.1:
postcss "^7.0.2"
postcss-values-parser "^2.0.0"
postcss-less@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-2.0.0.tgz#5d190b8e057ca446d60fe2e2587ad791c9029fb8"
integrity sha512-pPNsVnpCB13nBMOcl5GVh8JGmB0JGFjqkLUDzKdVpptFFKEe9wFdEzvh2j4lD2AD+7qcrUfw9Ta+oi5+Fw7jjQ==
dependencies:
postcss "^5.2.16"
postcss-load-config@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-2.1.0.tgz#c84d692b7bb7b41ddced94ee62e8ab31b417b003"
@ -18902,6 +19050,11 @@ postcss-media-minmax@^4.0.0:
dependencies:
postcss "^7.0.2"
postcss-media-query-parser@0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz#27b39c6f4d94f81b1a73b8f76351c609e5cef244"
integrity sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=
postcss-merge-longhand@^4.0.11:
version "4.0.11"
resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz#62f49a13e4a0ee04e7b98f42bb16062ca2549e24"
@ -19278,6 +19431,13 @@ postcss-safe-parser@4.0.1, postcss-safe-parser@^4.0.1:
dependencies:
postcss "^7.0.0"
postcss-scss@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-2.0.0.tgz#248b0a28af77ea7b32b1011aba0f738bda27dea1"
integrity sha512-um9zdGKaDZirMm+kZFKKVsnKPF7zF7qBAtIfTSnZXD1jZ0JNZIxdB6TxQOjCnlSzLRInVl2v3YdBh/M881C4ug==
dependencies:
postcss "^7.0.0"
postcss-selector-matches@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz#71c8248f917ba2cc93037c9637ee09c64436fcff"
@ -19294,6 +19454,15 @@ postcss-selector-not@^4.0.0:
balanced-match "^1.0.0"
postcss "^7.0.2"
postcss-selector-parser@2.2.3:
version "2.2.3"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz#f9437788606c3c9acee16ffe8d8b16297f27bb90"
integrity sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=
dependencies:
flatten "^1.0.2"
indexes-of "^1.0.1"
uniq "^1.0.1"
postcss-selector-parser@6.0.2, postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2:
version "6.0.2"
resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c"
@ -19350,7 +19519,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2:
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz#482282c09a42706d1fc9a069b73f44ec08391dc9"
integrity sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==
postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1:
postcss-values-parser@2.0.1, postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz#da8b472d901da1e205b47bdc98637b9e9e550e5f"
integrity sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==
@ -19377,6 +19546,16 @@ postcss@7.0.21:
source-map "^0.6.1"
supports-color "^6.1.0"
postcss@^5.2.16:
version "5.2.18"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5"
integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==
dependencies:
chalk "^1.1.3"
js-base64 "^2.1.9"
source-map "^0.5.6"
supports-color "^3.2.3"
postcss@^6.0.0, postcss@^6.0.1, postcss@^6.0.23:
version "6.0.23"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324"
@ -19448,11 +19627,74 @@ prettier-plugin-pkg@0.4.10:
resolved "https://registry.yarnpkg.com/prettier-plugin-pkg/-/prettier-plugin-pkg-0.4.10.tgz#e32da7f72bc5c2b91c23711497a00a26955255ad"
integrity sha512-BPv9xcqRfycXefabThMFqqmHn4OV7Utv0c5rH6b/sf+JQidmEZCn25oyujvA+yTi4gG2/KbhE5dpDbJz4IOZpQ==
prettier@1.19.1, prettier@^1.18.2:
prettier@^1.18.2:
version "1.19.1"
resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb"
integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==
prettier@prettier/prettier:
version "1.20.0-dev"
resolved "https://codeload.github.com/prettier/prettier/tar.gz/a858a315e926c21bd1ebfcde70a08419c9472a8c"
dependencies:
"@angular/compiler" "8.2.14"
"@babel/code-frame" "7.5.5"
"@babel/parser" "7.8.3"
"@glimmer/syntax" "0.41.0"
"@iarna/toml" "2.2.3"
"@typescript-eslint/typescript-estree" "2.11.0"
angular-estree-parser "1.1.5"
angular-html-parser "1.3.0"
camelcase "5.3.1"
chalk "2.4.2"
cjk-regex "2.0.0"
cosmiconfig "5.2.1"
dashify "2.0.0"
dedent "0.7.0"
diff "4.0.2"
editorconfig "0.15.3"
editorconfig-to-prettier "0.1.1"
escape-string-regexp "1.0.5"
esutils "2.0.3"
find-parent-dir "0.3.0"
find-project-root "1.1.1"
flow-parser "0.116.1"
get-stream "4.1.0"
globby "6.1.0"
graphql "14.5.8"
html-element-attributes "2.2.0"
html-styles "1.0.0"
html-tag-names "1.1.4"
ignore "4.0.6"
is-ci "2.0.0"
jest-docblock "24.9.0"
json-stable-stringify "1.0.1"
leven "3.1.0"
lines-and-columns "1.1.6"
linguist-languages "7.7.0"
lodash "4.17.15"
mem "5.1.1"
minimatch "3.0.4"
minimist "1.2.0"
n-readlines "1.0.0"
normalize-path "3.0.0"
parse-srcset ikatyang/parse-srcset#54eb9c1cb21db5c62b4d0e275d7249516df6f0ee
postcss-less "2.0.0"
postcss-media-query-parser "0.2.3"
postcss-scss "2.0.0"
postcss-selector-parser "2.2.3"
postcss-values-parser "2.0.1"
regexp-util "1.2.2"
remark-math "1.0.6"
remark-parse "5.0.0"
resolve "1.14.2"
semver "6.3.0"
string-width "4.1.0"
typescript "3.7.5"
unicode-regex "3.0.0"
unified "8.4.2"
vnopts "1.0.2"
yaml-unist-parser "1.1.1"
pretty-bytes@^5.1.0, pretty-bytes@^5.3.0:
version "5.3.0"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2"
@ -20835,6 +21077,13 @@ regex-parser@2.2.10:
resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.10.tgz#9e66a8f73d89a107616e63b39d4deddfee912b37"
integrity sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA==
regexp-util@1.2.2, regexp-util@^1.2.0, regexp-util@^1.2.1:
version "1.2.2"
resolved "https://registry.yarnpkg.com/regexp-util/-/regexp-util-1.2.2.tgz#5cf599134921eb0d776e41d41e9c0da33f0fa2fc"
integrity sha512-5/rl2UD18oAlLQEIuKBeiSIOp1hb5wCXcakl5yvHxlY1wyWI4D5cUKKzCibBeu741PA9JKvZhMqbkDQqPusX3w==
dependencies:
tslib "^1.9.0"
regexp.prototype.flags@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz#6b30724e306a27833eeb171b66ac8890ba37e41c"
@ -21618,6 +21867,13 @@ remark-lint@^6.0.0:
dependencies:
remark-message-control "^4.0.0"
remark-math@1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/remark-math/-/remark-math-1.0.6.tgz#49eb3dd15d298734c9ae21673115389793af4d1b"
integrity sha512-I43wU/QOQpXvVFXKjA4FHp5xptK65+5F6yolm8+69/JV0EqSOB64wURUZ3JK50JtnTL8FvwLiH2PZ+fvsBxviA==
dependencies:
trim-trailing-lines "^1.1.0"
remark-math@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/remark-math/-/remark-math-2.0.0.tgz#bc0e981fb7c6c79d6a5f99937709549bebe6bb04"
@ -21632,10 +21888,10 @@ remark-message-control@^4.0.0:
unified-message-control "^1.0.0"
xtend "^4.0.1"
remark-parse@7.0.2, remark-parse@^7.0.2:
version "7.0.2"
resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-7.0.2.tgz#41e7170d9c1d96c3d32cf1109600a9ed50dba7cf"
integrity sha512-9+my0lQS80IQkYXsMA8Sg6m9QfXYJBnXjWYN5U+kFc5/n69t+XZVXU/ZBYr3cYH8FheEGf1v87rkFDhJ8bVgMA==
remark-parse@5.0.0, remark-parse@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95"
integrity sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==
dependencies:
collapse-white-space "^1.0.2"
is-alphabetical "^1.0.0"
@ -21653,10 +21909,10 @@ remark-parse@7.0.2, remark-parse@^7.0.2:
vfile-location "^2.0.0"
xtend "^4.0.1"
remark-parse@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-5.0.0.tgz#4c077f9e499044d1d5c13f80d7a98cf7b9285d95"
integrity sha512-b3iXszZLH1TLoyUzrATcTQUZrwNl1rE70rVdSruJFlDaJ9z5aMkhrG43Pp68OgfHndL/ADz6V69Zow8cTQu+JA==
remark-parse@7.0.2, remark-parse@^7.0.2:
version "7.0.2"
resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-7.0.2.tgz#41e7170d9c1d96c3d32cf1109600a9ed50dba7cf"
integrity sha512-9+my0lQS80IQkYXsMA8Sg6m9QfXYJBnXjWYN5U+kFc5/n69t+XZVXU/ZBYr3cYH8FheEGf1v87rkFDhJ8bVgMA==
dependencies:
collapse-white-space "^1.0.2"
is-alphabetical "^1.0.0"
@ -21717,6 +21973,11 @@ remark-preset-lint-recommended@^3.0.1:
remark-lint-no-unused-definitions "^1.0.0"
remark-lint-ordered-list-marker-style "^1.0.0"
remark-preset-prettier@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/remark-preset-prettier/-/remark-preset-prettier-0.3.0.tgz#31ac7101eafc28815b930c04ab4fcfefbfdc7a6d"
integrity sha512-TYJfPdAn/T9+Nmm63qc7JtED9QL1hDh7V2loDPwAgfDFPTGQUzkeKLsl4z8QdjvJ/pgK/IZoKpZZbjK50CGgnw==
remark-preset-wooorm@6.0.1:
version "6.0.1"
resolved "https://registry.yarnpkg.com/remark-preset-wooorm/-/remark-preset-wooorm-6.0.1.tgz#d4ca4b37d1d4f3b56f586331ea170bd9b967cacb"
@ -22083,6 +22344,13 @@ resolve@1.12.2:
dependencies:
path-parse "^1.0.6"
resolve@1.14.2:
version "1.14.2"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.2.tgz#dbf31d0fa98b1f29aa5169783b9c290cb865fea2"
integrity sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ==
dependencies:
path-parse "^1.0.6"
resolve@^1.1.5, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.2.0, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1:
version "1.15.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.0.tgz#1b7ca96073ebb52e741ffd799f6b39ea462c67f5"
@ -22896,6 +23164,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2:
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=
simple-html-tokenizer@^0.5.7:
version "0.5.8"
resolved "https://registry.yarnpkg.com/simple-html-tokenizer/-/simple-html-tokenizer-0.5.8.tgz#3417382f75954ee34515cc4fd32d9918e693f173"
integrity sha512-0Sq4FvLlQEQODVA6PH2MIrc7tzYO0KT2HzzwvaVLYClWgIsuvaNUOrhrAvTi1pZHrcq7GDB4WiI3ukjqBMxcGQ==
simple-swizzle@^0.2.2:
version "0.2.2"
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
@ -23502,6 +23775,15 @@ string-similarity@^1.2.2:
lodash.map "^4.6.0"
lodash.maxby "^4.6.0"
string-width@4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.1.0.tgz#ba846d1daa97c3c596155308063e075ed1c99aff"
integrity sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==
dependencies:
emoji-regex "^8.0.0"
is-fullwidth-code-point "^3.0.0"
strip-ansi "^5.2.0"
string-width@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
@ -24515,10 +24797,10 @@ trim-right@^1.0.1:
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=
trim-trailing-lines@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.2.tgz#d2f1e153161152e9f02fabc670fb40bec2ea2e3a"
integrity sha512-MUjYItdrqqj2zpcHFTkMa9WAv4JHTI6gnRQGPFLrt5L9a6tRMiDnIqYl8JBvu2d2Tc3lWJKQwlGCp0K8AvCM+Q==
trim-trailing-lines@^1.0.0, trim-trailing-lines@^1.1.0:
version "1.1.3"
resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.3.tgz#7f0739881ff76657b7776e10874128004b625a94"
integrity sha512-4ku0mmjXifQcTVfYDfR5lpgV7zVqPg6zV9rdZmwOPqq0+Zq19xDqEgagqVbc4pOOShbncuAOIs59R3+3gcF3ZA==
trim@0.0.1:
version "0.0.1"
@ -24545,7 +24827,7 @@ ts-pnp@1.1.5, ts-pnp@^1.1.2:
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.1.5.tgz#840e0739c89fce5f3abd9037bb091dbff16d9dec"
integrity sha512-ti7OGMOUOzo66wLF3liskw6YQIaSsBgc4GOAlWRnIEj8htCxJUxskanMUoJOD6MDCRAXo36goXJZch+nOS0VMA==
tslib@^1.10.0, tslib@^1.6.0, tslib@^1.8.1, tslib@^1.9.0:
tslib@^1.10.0, tslib@^1.6.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3:
version "1.10.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a"
integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==
@ -24786,6 +25068,20 @@ unicode-property-aliases-ecmascript@^1.0.4:
resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57"
integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==
unicode-regex@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/unicode-regex/-/unicode-regex-3.0.0.tgz#0c20df914c6da0412b3714cd300726e0f7f24698"
integrity sha512-WiDJdORsqgxkZrjC8WsIP573130HNn7KsB0IDnUccW2BG2b19QQNloNhVe6DKk3Aef0UcoIHhNVj7IkkcYWrNw==
dependencies:
regexp-util "^1.2.0"
unicode-regex@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/unicode-regex/-/unicode-regex-2.0.0.tgz#ef8f6642c37dddcaa0c09af5b9456aabf6b436a3"
integrity sha512-5nbEG2YU7loyTvPABaKb+8B0u8L7vWCsVmCSsiaO249ZdMKlvrXlxR2ex4TUVAdzv/Cne/TdoXSSaJArGXaleQ==
dependencies:
regexp-util "^1.2.0"
unicode-trie@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/unicode-trie/-/unicode-trie-0.3.1.tgz#d671dddd89101a08bac37b6a5161010602052085"
@ -25397,6 +25693,15 @@ vm-browserify@^1.0.1:
resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019"
integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==
vnopts@1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/vnopts/-/vnopts-1.0.2.tgz#f6a331473de0179d1679112cc090572b695202f7"
integrity sha512-d2rr2EFhAGHnTlURu49G7GWmiJV80HbAnkYdD9IFAtfhmxC+kSWEaZ6ZF064DJFTv9lQZQV1vuLTntyQpoanGQ==
dependencies:
chalk "^2.4.1"
leven "^2.1.0"
tslib "^1.9.3"
vue-hot-reload-api@^2.3.0:
version "2.3.3"
resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz#2756f46cb3258054c5f4723de8ae7e87302a1ccf"
@ -26410,7 +26715,16 @@ yaml-loader@^0.5.0:
dependencies:
js-yaml "^3.5.2"
yaml@^1.7.2:
yaml-unist-parser@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/yaml-unist-parser/-/yaml-unist-parser-1.1.1.tgz#a2bc7b72578718e6e5b0ebc945dde8e1f258b561"
integrity sha512-cGtqhHBlcft+rTKiPsVcSyi43Eqm5a1buYokW9VkztroKMErBSdR9ANHx+/XxNppHZTu2KMEn4yY8MdhuGoFuA==
dependencies:
lines-and-columns "^1.1.6"
tslib "^1.10.0"
yaml "^1.7.1"
yaml@^1.7.1, yaml@^1.7.2:
version "1.7.2"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.7.2.tgz#f26aabf738590ab61efaca502358e48dc9f348b2"
integrity sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw==