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 * chore: fix some incorrect code types
This commit is contained in:
parent
8ebde24018
commit
26a3a3c500
@ -6,6 +6,7 @@ public
|
||||
.next
|
||||
.*cache
|
||||
*.min.js
|
||||
!/.*.js
|
||||
|
||||
examples/**/node_modules/**/*.*
|
||||
|
||||
|
@ -1,6 +1,4 @@
|
||||
.next
|
||||
dist
|
||||
node_modules
|
||||
*.md
|
||||
*.mdx
|
||||
*.min.*
|
||||
|
21
.remarkrc.js
Normal file
21
.remarkrc.js
Normal 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]
|
||||
]
|
||||
}
|
@ -1,3 +1,3 @@
|
||||
# 404
|
||||
|
||||
Page not found. [Return Home](/)
|
||||
Page not found. [Return Home](/)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
MDX’s [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
|
||||
|
@ -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 @@ it’s 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 Markdown’s 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
|
||||
|
@ -51,28 +51,33 @@ documents via the [MDXProvider](#mdxprovider).
|
||||
### Layout props
|
||||
|
||||
You’ll 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). It’s used in order
|
||||
This is added for [shortcode support](/blog/shortcodes). It’s used in order
|
||||
to stub any components that aren’t directly imported so that there won’t be
|
||||
any `ReferenceError`s. If they’re passed to the `MDXProvider`, the custom
|
||||
any `ReferenceError`s. If they’re 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 = {
|
||||
|
@ -1,3 +1,3 @@
|
||||
import Redirect from 'gatsby-theme-mdx/src/components/redirect'
|
||||
|
||||
<Redirect to='/contributing' />
|
||||
<Redirect to="/contributing" />
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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" />
|
||||
|
@ -1,3 +1,3 @@
|
||||
import Redirect from 'gatsby-theme-mdx/src/components/redirect'
|
||||
|
||||
<Redirect to='/advanced/ast' />
|
||||
<Redirect to="/advanced/ast" />
|
||||
|
@ -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" />
|
||||
|
@ -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 @@ Let’s 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
|
||||
|
@ -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 you’re getting errors from TypeScript related to imports with an `*.mdx`
|
||||
extension, create an `mdx.d.ts` file in your types directory and include it
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
`MDXTag`, for those that aren’t aware, is a critical piece in the way
|
||||
MDX replaces HTML primitives like `<pre>` and `<h1>` with custom React
|
||||
Components. [I’ve previously
|
||||
Components. [I’ve 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 we’ve 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 you’re using JSX because JSX tags such as `<div>` compile to
|
||||
`createElement` calls. So this time instead of using
|
||||
`React.createElement` we’ll be using our own. [Check it out in the MDX
|
||||
`createElement` calls. So this time instead of using
|
||||
`React.createElement` we’ll 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)
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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 that’s 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!
|
||||
|
||||
Here’s a YouTube shortcode:
|
||||
@ -49,18 +47,21 @@ Here’s a YouTube shortcode wrapped in TomatoBox:
|
||||
</TomatoBox>
|
||||
```
|
||||
|
||||
That’s it. :tada: :rocket:
|
||||
That’s 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)
|
||||
|
||||
|
118
docs/blog/v1.mdx
118
docs/blog/v1.mdx
@ -3,11 +3,11 @@
|
||||
# MDX goes stable
|
||||
|
||||
It’s 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. It’s
|
||||
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. It’s
|
||||
an open, [authorable format](https://johno.com/authorable-format) that makes it _fun_ to write again.
|
||||
|
||||
Since announcing MDX we’ve been working on numerous bug fixes, new features, better parsing, and integration
|
||||
tests. Now, we think it’s ready. **We’re happy to finally release v1!**
|
||||
tests. Now, we think it’s ready. **We’re happy to finally release v1!**
|
||||
|
||||
## 🎉 What’s new?
|
||||
|
||||
@ -19,15 +19,15 @@ MDX document parsing is significantly improved.
|
||||
We won’t get into the nitty gritty here, but we’ve 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 haven’t covered! 😸
|
||||
Please open an issue if you find a case we haven’t 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 it’s
|
||||
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 it’s
|
||||
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 we’ve 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 we’ve 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 we’ve 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 what’s been happening in terms of growth
|
||||
and the greater community. The ecosystem surrounding MDX has already grown larger than we ever dreamed. We’ve also
|
||||
and the greater community. The ecosystem surrounding MDX has already grown larger than we ever dreamed. We’ve 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 we’ll 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 we’ve rearchitected MDX to use
|
||||
custom pragma. We’re delighted that **we now have an alpha version for Vue working**. We’d love it if anyone
|
||||
custom pragma. We’re delighted that **we now have an alpha version for Vue working**. We’d 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 isn’t an
|
||||
approachable way to write MDX unless you enjoy working in a text editor and writing raw Markdown/code. We’d
|
||||
like to solve that and have begun work on an MDX “blocks editor” that’s a **content-focused WYSIWYG**. Not to mention,
|
||||
One of the key missing aspects of authoring MDX documents is the editing experience. Currently, there isn’t an
|
||||
approachable way to write MDX unless you enjoy working in a text editor and writing raw Markdown/code. We’d
|
||||
like to solve that and have begun work on an MDX “blocks editor” that’s a **content-focused WYSIWYG**. Not to mention,
|
||||
we’ll 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
|
||||
|
||||
We’d like to say thanks to all our contributors and our happy users. Special thanks to
|
||||
We’d 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 @@ We’d 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)
|
||||
|
||||
|
@ -4,10 +4,10 @@
|
||||
> By interacting with this repository, organization, or community you agree to
|
||||
> abide by its terms.
|
||||
|
||||
Hi! 👋
|
||||
Hi! 👋
|
||||
We’re excited that you’re interested in contributing!
|
||||
Take a moment to read the following guidelines.
|
||||
And thanks for contributing to **MDX**! 👏👌✨
|
||||
And thanks for contributing to **MDX**! 👏👌✨
|
||||
|
||||
If you’re 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 @@ We’re always looking for more opinions on discussions in the issue tracker.
|
||||
|
||||
### Write code
|
||||
|
||||
Code contributions are very welcome. It’s often good to first create an issue
|
||||
Code contributions are very welcome. It’s 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 you’re 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 you’re 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
|
||||
* Don’t include unrelated changes
|
||||
* Test before submitting code by running `yarn test`
|
||||
* Write a convincing description of why we should land your pull request:
|
||||
it’s 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
|
||||
- Don’t include unrelated changes
|
||||
- Test before submitting code by running `yarn test`
|
||||
- Write a convincing description of why we should land your pull request:
|
||||
it’s 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`
|
||||
* There’s 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`
|
||||
- There’s 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 you’re 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
|
||||
|
@ -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
|
||||
|
@ -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"]
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -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
|
||||
|
@ -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/
|
||||
|
@ -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 you’d 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 we’ve gone over how MDX works, you’re ready to get installing.
|
||||
If you’re 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
|
||||
|
@ -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`:
|
||||
|
@ -1,3 +1,3 @@
|
||||
import Redirect from 'gatsby-theme-mdx/src/components/redirect'
|
||||
|
||||
<Redirect to='/advanced/typescript' />
|
||||
<Redirect to="/advanced/typescript" />
|
||||
|
@ -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
|
||||
|
@ -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`. Here’s an example using [Rebass][] components:
|
||||
the box. For components requiring providers you will need to use customize
|
||||
`_app.js`. Here’s 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
|
||||
|
@ -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)
|
||||
|
@ -1,22 +1,22 @@
|
||||
# Custom loader
|
||||
|
||||
By design, the default MDX is very minimal and likely won’t 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 won’t 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 we’ll 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 we’ll 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
|
||||
|
@ -5,11 +5,11 @@ for common use cases, tools, and patterns.
|
||||
It’s 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 it’s core MDX is minimal and unopinionated, so there’s 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)
|
||||
|
@ -5,7 +5,7 @@ If you haven’t read the syntax highlighting guide it’s 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 it’s 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 />
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
||||
It’s 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 it’s 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
|
||||
|
@ -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>
|
||||
|
@ -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
|
||||
|
@ -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 = {
|
||||
}
|
||||
```
|
||||
|
||||
That’s it. Now restart your server and you should be able to create `.mdx` files
|
||||
That’s it. Now restart your server and you should be able to create `.mdx` files
|
||||
and import them in other components.
|
||||
|
@ -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. It’s often used to set container
|
||||
width, borders, background colors, etc. However, it’s also unique because
|
||||
to set the layout for the MDX document. It’s often used to set container
|
||||
width, borders, background colors, etc. However, it’s 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 aren’t 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 (>= 1.0.0-alpha.7)
|
||||
This only works on the latest alpha version @mdx-js/mdx@next (>=
|
||||
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 Jackson’s [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>
|
||||
|
@ -2,12 +2,12 @@
|
||||
|
||||
For a full-fledged introduction to plugins it’s recommended to read the [remark guides][remark-guides] and study up on [syntax trees][syntax-trees].
|
||||
|
||||
Now let’s 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 let’s 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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -1,3 +1,3 @@
|
||||
import Redirect from 'gatsby-theme-mdx/src/components/redirect'
|
||||
|
||||
<Redirect to='/advanced/plugins' />
|
||||
<Redirect to="/advanced/plugins" />
|
||||
|
@ -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 Stoiber’s Blog][mxstbr]
|
||||
- [ZEIT Docs][zeit-docs]
|
||||
- [Compositor][]
|
||||
- [Prisma][]
|
||||
- [Max Stoiber’s 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
|
||||
|
@ -4,7 +4,7 @@
|
||||
> By interacting with this repository, organization, or community you agree to
|
||||
> abide by its terms.
|
||||
|
||||
Hi! 👋
|
||||
Hi! 👋
|
||||
We’re excited that you’re using **MDX** and we’d 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. It’s easy to fall into the trap of asking something too
|
||||
specific when you’re close to a problem. Then, those trying to help you out have
|
||||
much easier for us to help. It’s easy to fall into the trap of asking something too
|
||||
specific when you’re 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 you’re 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 you’re 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
|
||||
|
@ -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 can’t go back!**
|
||||
**Note: this is a one-way operation. Once you `eject`, you can’t go back!**
|
||||
|
||||
If you aren’t 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 aren’t 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 you’re 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 you’re on your own.
|
||||
|
||||
You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.
|
||||
You don’t have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn’t feel obligated to use this feature. However we understand that this tool wouldn’t be useful if you couldn’t customize it when you are ready for it.
|
||||
|
||||
## Learn More
|
||||
|
||||
|
@ -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() {
|
||||
|
@ -1,7 +0,0 @@
|
||||
export const Demo = () => (
|
||||
<div style={{ padding: 20, backgroundColor: "tomato" }} />
|
||||
);
|
||||
|
||||
# Hello, world!
|
||||
|
||||
<Demo />
|
7
examples/create-react-app/src/content.mdx
Normal file
7
examples/create-react-app/src/content.mdx
Normal file
@ -0,0 +1,7 @@
|
||||
export const Demo = () => (
|
||||
<div style={{padding: 20, backgroundColor: 'tomato'}} />
|
||||
)
|
||||
|
||||
# Hello, world!
|
||||
|
||||
<Demo />
|
@ -1,3 +1,3 @@
|
||||
# Hello, world!
|
||||
|
||||
<div style={{ padding: '20px', backgroundColor: 'tomato' }} />
|
||||
<div style={{padding: '20px', backgroundColor: 'tomato'}} />
|
||||
|
@ -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'}} />
|
||||
```
|
||||
|
@ -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 />
|
||||
|
24
package.json
24
package.json
@ -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
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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 />
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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/
|
||||
|
@ -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
|
||||
|
@ -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 aren’t needed like an MDX playground.
|
||||
Remove export nodes from the [MDXAST][]. This is useful for scenarios where the exports aren’t 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
|
||||
|
@ -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 aren’t needed like an MDX playground.
|
||||
Remove import nodes from the [MDXAST][]. This is useful for scenarios where the imports aren’t 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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -9,7 +9,5 @@ Test utility functions used in [MDX][].
|
||||
<!-- Definitions -->
|
||||
|
||||
[mit]: license
|
||||
|
||||
[mdx]: https://github.com/mdx-js/mdx
|
||||
|
||||
[author]: https://johno.com
|
||||
|
@ -15,7 +15,5 @@ yarn add @mdx-js/util
|
||||
<!-- Definitions -->
|
||||
|
||||
[mit]: license
|
||||
|
||||
[mdx]: https://github.com/mdx-js/mdx
|
||||
|
||||
[author]: https://johno.com
|
||||
|
@ -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
|
||||
|
56
readme.md
56
readme.md
@ -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
468
yarn.lock
@ -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==
|
||||
|
Loading…
Reference in New Issue
Block a user