Merge branch 'master' of github.com:netlify/netlify-cms

This commit is contained in:
Mathias Biilmann Christensen 2016-12-30 11:14:27 -08:00
commit 456c891034
22 changed files with 573 additions and 188 deletions

1
.gitignore vendored
View File

@ -1,4 +1,5 @@
dist/
bin/
node_modules/
npm-debug.log
.DS_Store

View File

@ -11,7 +11,7 @@
window.repoFiles = {
_posts: {
"2015-02-14-this-is-a-post.md": {
content: "---\ntitle: This is a post\nimage: /nf-logo.png\ndate: 2015-02-14T00:00:00.000Z\n---\n\n# I Am a Title in Markdown\n\nHello, world\n"
content: "---\ntitle: This is a post\nimage: /nf-logo.png\ndate: 2015-02-14T00:00:00.000Z\n---\n\n# I Am a Title in Markdown\n\nHello, world\n\n* One Thing\n* Another Thing\n* A Third Thing\n"
}
},
_faqs: {

View File

@ -8,6 +8,7 @@
"test": "jest",
"test:watch": "jest --watch",
"build": "NODE_ENV=production webpack --config webpack.prod.js",
"build:scripts": "NODE_ENV=production webpack --config webpack.cli.js",
"prepublish": "npm run build",
"storybook": "start-storybook -p 9001",
"storybook-build": "build-storybook -o dist",
@ -48,6 +49,8 @@
"author": "Netlify",
"license": "MIT",
"devDependencies": {
"babel": "^6.5.2",
"babel-cli": "^6.18.0",
"babel-core": "^6.5.1",
"babel-jest": "^15.0.0",
"babel-loader": "^6.2.2",
@ -92,6 +95,7 @@
"@kadira/storybook": "^1.36.0",
"autoprefixer": "^6.3.3",
"dateformat": "^1.0.12",
"deep-equal": "^1.0.1",
"fuzzy": "^0.1.1",
"immutability-helper": "^2.0.0",
"immutable": "^3.7.6",
@ -108,18 +112,18 @@
"normalize.css": "^4.2.0",
"pluralize": "^3.0.0",
"prismjs": "^1.5.1",
"prosemirror-commands": "^0.12.0",
"prosemirror-history": "^0.12.0",
"prosemirror-inputrules": "^0.12.0",
"prosemirror-keymap": "^0.12.0",
"prosemirror-markdown": "^0.12.0",
"prosemirror-model": "^0.12.0",
"prosemirror-schema-basic": "^0.12.0",
"prosemirror-schema-list": "^0.12.0",
"prosemirror-schema-table": "^0.12.0",
"prosemirror-state": "^0.12.0",
"prosemirror-transform": "^0.12.1",
"prosemirror-view": "^0.12.0",
"prosemirror-commands": "^0.16.0",
"prosemirror-history": "^0.16.0",
"prosemirror-inputrules": "^0.16.0",
"prosemirror-keymap": "^0.16.0",
"prosemirror-markdown": "^0.16.0",
"prosemirror-model": "^0.16.0",
"prosemirror-schema-basic": "^0.16.0",
"prosemirror-schema-list": "^0.16.0",
"prosemirror-schema-table": "^0.16.0",
"prosemirror-state": "^0.16.0",
"prosemirror-transform": "^0.16.0",
"prosemirror-view": "^0.16.0",
"react": "^15.1.0",
"react-addons-css-transition-group": "^15.3.1",
"react-autosuggest": "^7.0.1",

View File

@ -0,0 +1,150 @@
import fs from "fs";
import path from "path";
import process from "process";
import yaml from 'js-yaml';
import deepEqual from 'deep-equal';
import { formatByExtension } from "../src/formats/formats";
const looksLikeMarkdown = /(\[.+\]\(.+\)|\n?[#]+ [a-z0-9])/; // eslint-disable-line
const looksLikeAnImage = /^[^ ]+\.(png|jpg|svg|gif|jpeg)/;
function capitalize(name) {
return name.substr(0, 1).toUpperCase() + name.substr(1);
}
function inferWidget(name, value) {
if (value == null) {
return { widget: 'string' };
}
if (value instanceof Date) {
return { widget: value.toJSON().match(/T00:00:00\.000Z$/) ? 'date' : 'datetime' };
}
if (value instanceof Array) {
if (typeof value[0] === 'string') {
return { widget: 'list' };
}
return { widget: 'list', fields: inferFields(value) };
}
if (typeof value === 'object') {
return { widget: 'object', fields: inferFields([value]) };
}
if (value === false || value === true) {
return { widget: 'checkbox' };
}
if (typeof value === 'number') {
return { widget: 'number' };
}
if (name === 'body' || value.match(looksLikeMarkdown)) {
return { widget: 'markdown' };
}
if (value.match(/\n/)) {
return { widget: 'text' };
}
if (value.match(looksLikeAnImage)) {
return { widget: 'image' };
}
return { widget: 'string' };
}
function inferField(name, value) {
return Object.assign({
label: capitalize(name.replace(/_-/g, ' ')),
name,
}, inferWidget(name, value));
}
function inferFields(entries) {
const fields = {};
entries.forEach((entry) => {
if (entry == null) { return; }
Object.keys(entry).forEach((fieldName) => {
const field = inferField(fieldName, entry[fieldName]);
if (fields[fieldName]) {
fields[fieldName] = combineFields(fields[fieldName], field);
} else {
fields[fieldName] = field;
}
});
});
return Object.keys(fields).map(key => fields[key]);
}
const widgetRank = {
markdown: 1,
text: 2,
string: 3,
image: 4,
datetime: 4,
date: 5,
number: 5,
object: 7,
list: 7,
};
function compareWidget(a, b) {
return widgetRank[a] - widgetRank[b];
}
function combineFields(a, b) {
if (b == null && a) {
return a;
}
if (a == null && b) {
return b;
}
if (deepEqual(a, b)) {
return a;
}
if (a.widget === b.widget) {
if (a.fields && b.fields) {
const newFields = {};
a.fields.forEach((field) => {
newFields[field.name] = combineFields(field, b.fields.find(f => f.name === field.name));
});
b.fields.forEach((field) => {
if (!newFields[field.name]) {
newFields[field.name] = field;
}
});
return Object.assign({}, a, { fields: Object.keys(newFields).map(k => newFields[k]) });
}
return a;
}
return [a, b].sort((fieldA, fieldB) => compareWidget(fieldB.widget, fieldA.widget))[0];
}
if (process.argv.length !== 3) {
console.log("Usage: autoconfigure.collections.js <path-to-my-folder>");
process.exit(1);
}
const folder = process.argv[2].replace(/\/$/, '');
const files = fs.readdirSync(folder);
const extensions = {};
files.forEach((file) => {
const ext = file.split(".").pop();
if (ext) {
extensions[ext] = extensions[ext] || 0;
extensions[ext] += 1;
}
});
const name = folder.split('/').filter(s => s).pop();
const extension = Object.keys(extensions).sort((a, b) => extensions[b] - extensions[a])[0];
const format = formatByExtension(extension);
const entries = files.filter(name => name.split(".").pop() === extension).slice(0, 100).map(file => (
format.fromFile(fs.readFileSync(path.join(folder, file), { encoding: 'utf8' }))
));
const fields = inferFields(entries);
const collection = {
label: capitalize(name),
name,
folder,
extension,
fields,
};
console.log(yaml.safeDump([collection], { flowLevel: 3 }));

View File

@ -20,6 +20,11 @@
color: #dd0000;
}
.message {
font-size: 1.1em;
margin: 20px 10px;
}
.button {
padding: .25em 1em;
height: auto;

View File

@ -17,14 +17,15 @@ export default class AuthenticationPage extends React.Component {
this.props.onLogin(this.state);
};
handleEmailChange = (e) => {
this.setState({ email: e.target.value });
handleEmailChange = (value) => {
this.setState({ email: value });
};
render() {
return (<section className={styles.root}>
<Card className={styles.card}>
<img src={logo} width={100} role="presentation" />
<p className={styles.message}>This is a demo, enter your email to start</p>
<Input
type="text"
label="Email"

View File

@ -9,6 +9,15 @@ function getFile(path) {
return obj;
}
function nameFromEmail(email) {
return email
.split('@').shift().replace(/[.-_]/g, ' ')
.split(' ')
.filter(f => f)
.map(s => s.substr(0, 1).toUpperCase() + (s.substr(1) || ''))
.join(' ');
}
export default class TestRepo {
constructor(config) {
this.config = config;
@ -24,7 +33,7 @@ export default class TestRepo {
}
authenticate(state) {
return Promise.resolve({ email: state.email });
return Promise.resolve({ email: state.email, name: nameFromEmail(state.email) });
}
entriesByFolder(collection) {
@ -71,7 +80,6 @@ export default class TestRepo {
} else {
window.repoFiles[folder][fileName].content = entry.raw;
}
mediaFiles.forEach(media => media.uploaded = true);
return Promise.resolve();
}

View File

@ -10,6 +10,10 @@ import htmlSyntax from 'markup-it/syntaxes/html';
import reInline from 'markup-it/syntaxes/markdown/re/inline';
import MarkupItReactRenderer from '../';
function getMedia(path) {
return path;
}
describe('MarkitupReactRenderer', () => {
describe('basics', () => {
it('should re-render properly after a value and syntax update', () => {
@ -17,6 +21,7 @@ describe('MarkitupReactRenderer', () => {
<MarkupItReactRenderer
value="# Title"
syntax={markdownSyntax}
getMedia={getMedia}
/>
);
const tree1 = component.html();
@ -33,6 +38,7 @@ describe('MarkitupReactRenderer', () => {
<MarkupItReactRenderer
value="# Title"
syntax={markdownSyntax}
getMedia={getMedia}
/>
);
const syntax1 = component.instance().props.syntax;
@ -77,6 +83,7 @@ Text with **bold** & _em_ elements
<MarkupItReactRenderer
value={value}
syntax={markdownSyntax}
getMedia={getMedia}
/>
);
expect(component.html()).toMatchSnapshot();
@ -91,6 +98,7 @@ Text with **bold** & _em_ elements
<MarkupItReactRenderer
value={value}
syntax={markdownSyntax}
getMedia={getMedia}
/>
);
expect(component.html()).toMatchSnapshot();
@ -115,6 +123,7 @@ Text with **bold** & _em_ elements
<MarkupItReactRenderer
value={value}
syntax={markdownSyntax}
getMedia={getMedia}
/>
);
expect(component.html()).toMatchSnapshot();
@ -134,6 +143,7 @@ I get 10 times more traffic from [Google] [1] than from [Yahoo] [2] or [MSN] [3]
<MarkupItReactRenderer
value={value}
syntax={markdownSyntax}
getMedia={getMedia}
/>
);
expect(component.html()).toMatchSnapshot();
@ -147,6 +157,7 @@ I get 10 times more traffic from [Google] [1] than from [Yahoo] [2] or [MSN] [3]
<MarkupItReactRenderer
value={value}
syntax={markdownSyntax}
getMedia={getMedia}
/>
);
expect(component.html()).toMatchSnapshot();
@ -158,6 +169,7 @@ I get 10 times more traffic from [Google] [1] than from [Yahoo] [2] or [MSN] [3]
<MarkupItReactRenderer
value={value}
syntax={markdownSyntax}
getMedia={getMedia}
/>
);
expect(component.html()).toMatchSnapshot();
@ -185,6 +197,7 @@ I get 10 times more traffic from [Google] [1] than from [Yahoo] [2] or [MSN] [3]
<MarkupItReactRenderer
value={value}
syntax={markdownSyntax}
getMedia={getMedia}
/>
);
expect(component.html()).toMatchSnapshot();
@ -228,6 +241,7 @@ I get 10 times more traffic from [Google] [1] than from [Yahoo] [2] or [MSN] [3]
value={value}
syntax={myMarkdownSyntax}
schema={myCustomSchema}
getMedia={getMedia}
/>
);
expect(component.html()).toMatchSnapshot();
@ -241,6 +255,7 @@ I get 10 times more traffic from [Google] [1] than from [Yahoo] [2] or [MSN] [3]
<MarkupItReactRenderer
value={value}
syntax={htmlSyntax}
getMedia={getMedia}
/>
);
expect(component.html()).toMatchSnapshot();

View File

@ -42,11 +42,7 @@ const defaultSchema = {
[ENTITIES.HARD_BREAK]: 'br',
};
const notAllowedAttributes = ['loose'];
function sanitizeProps(props) {
return omit(props, notAllowedAttributes);
}
const notAllowedAttributes = ['loose', 'image'];
export default class MarkupItReactRenderer extends React.Component {
@ -66,6 +62,17 @@ export default class MarkupItReactRenderer extends React.Component {
}
}
sanitizeProps(props) {
const { getMedia } = this.props;
if (props.image) {
props = Object.assign({}, props, { src: getMedia(props.image).toString() });
}
return omit(props, notAllowedAttributes);
}
renderToken(schema, token, index = 0, key = '0') {
const type = token.get('type');
const data = token.get('data');
@ -85,7 +92,7 @@ export default class MarkupItReactRenderer extends React.Component {
if (nodeType !== null) {
let props = { key, token };
if (typeof nodeType !== 'function') {
props = { key, ...sanitizeProps(data.toJS()) };
props = { key, ...this.sanitizeProps(data.toJS()) };
}
// If this is a react element
return React.createElement(nodeType, props, children);
@ -108,7 +115,7 @@ export default class MarkupItReactRenderer extends React.Component {
render() {
const { value, schema } = this.props;
const { value, schema, getMedia } = this.props;
const content = this.parser.toContent(value);
return this.renderToken({ ...defaultSchema, ...schema }, content.get('token'));
}
@ -121,4 +128,5 @@ MarkupItReactRenderer.propTypes = {
PropTypes.string,
PropTypes.func,
])),
getMedia: PropTypes.func.isRequired,
};

View File

@ -6,6 +6,8 @@ import { processEditorPlugins } from './richText';
import { connect } from 'react-redux';
import { switchVisualMode } from '../../actions/editor';
const MODE_STORAGE_KEY = 'cms.md-mode';
class MarkdownControl extends React.Component {
static propTypes = {
editor: PropTypes.object.isRequired,
@ -18,7 +20,7 @@ class MarkdownControl extends React.Component {
constructor(props) {
super(props);
this.state = { mode: 'visual' };
this.state = { mode: localStorage.getItem(MODE_STORAGE_KEY) || 'visual' };
}
componentWillMount() {
@ -27,6 +29,7 @@ class MarkdownControl extends React.Component {
handleMode = (mode) => {
this.setState({ mode });
localStorage.setItem(MODE_STORAGE_KEY, mode);
};
render() {

View File

@ -1,3 +1,22 @@
.root {
position: relative;
}
.dragging { }
.shim {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
display: none;
border: 2px dashed #aaa;
background: rgba(0,0,0,0.2);
}
.dragging .shim {
z-index: 1000;
display: block;
pointer-events: none;
}

View File

@ -24,10 +24,6 @@ function processUrl(url) {
return `/${ url }`;
}
function preventDefault(e) {
e.preventDefault();
}
function cleanupPaste(paste) {
const content = html.toContent(paste);
return markdown.toText(content);
@ -76,11 +72,9 @@ export default class RawEditor extends React.Component {
},
};
}
componentDidMount() {
this.updateHeight();
this.element.addEventListener('dragenter', preventDefault, false);
this.element.addEventListener('dragover', preventDefault, false);
this.element.addEventListener('drop', this.handleDrop, false);
this.element.addEventListener('paste', this.handlePaste, false);
}
@ -93,9 +87,7 @@ export default class RawEditor extends React.Component {
}
componentWillUnmount() {
this.element.removeEventListener('dragenter', preventDefault);
this.element.removeEventListener('dragover', preventDefault);
this.element.removeEventListener('drop', this.handleDrop);
this.element.removeEventListener('paste', this.handlePaste);
}
getSelection() {
@ -256,8 +248,25 @@ export default class RawEditor extends React.Component {
};
}
handleDragEnter = (e) => {
e.preventDefault();
this.setState({ dragging: true });
};
handleDragLeave = (e) => {
e.preventDefault();
this.setState({ dragging: false });
};
handleDragOver = (e) => {
e.preventDefault();
};
handleDrop = (e) => {
e.preventDefault();
this.setState({ dragging: false });
let data;
if (e.dataTransfer.files && e.dataTransfer.files.length) {
@ -296,8 +305,19 @@ export default class RawEditor extends React.Component {
render() {
const { onAddMedia, onRemoveMedia, getMedia } = this.props;
const { showToolbar, showBlockMenu, plugins, selectionPosition } = this.state;
return (<div className={styles.root}>
const { showToolbar, showBlockMenu, plugins, selectionPosition, dragging } = this.state;
const classNames = [styles.root];
if (dragging) {
classNames.push(styles.dragging);
}
return (<div
className={classNames.join(' ')}
onDragEnter={this.handleDragEnter}
onDragLeave={this.handleDragLeave}
onDragOver={this.handleDragOver}
onDrop={this.handleDrop}
>
<Toolbar
isOpen={showToolbar}
selectionPosition={selectionPosition}
@ -324,6 +344,7 @@ export default class RawEditor extends React.Component {
onChange={this.handleChange}
onSelect={this.handleSelection}
/>
<div className={styles.shim}/>
</div>);
}
}

View File

@ -20,6 +20,13 @@
& p {
margin-bottom: 20px;
}
& hr {
border: 1px solid;
margin-bottom: 20px;
}
& li > p {
margin: 0;
}
& div[data-plugin] {
background: #fff;
border: 1px solid #aaa;
@ -28,6 +35,25 @@
}
}
.dragging { }
.shim {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
display: none;
border: 2px dashed #aaa;
background: rgba(0,0,0,0.2);
}
.dragging .shim {
z-index: 1000;
display: block;
pointer-events: none;
}
:global {
& .ProseMirror {
position: relative;

View File

@ -11,6 +11,7 @@ import { keymap } from 'prosemirror-keymap';
import { schema, defaultMarkdownSerializer } from 'prosemirror-markdown';
import { baseKeymap, setBlockType, toggleMark } from 'prosemirror-commands';
import registry from '../../../../lib/registry';
import MediaProxy from '../../../../valueObjects/MediaProxy';
import { buildKeymap } from './keymap';
import createMarkdownParser from './parser';
import Toolbar from '../Toolbar';
@ -88,7 +89,7 @@ function createSerializer(schema, plugins) {
plugins.forEach((plugin) => {
serializer.nodes[`plugin_${ plugin.get('id') }`] = (state, node) => {
const toBlock = plugin.get('toBlock');
state.write(toBlock.call(plugin, node.attrs));
state.write(toBlock.call(plugin, node.attrs) + '\n\n');
};
});
return serializer;
@ -210,7 +211,53 @@ export default class Editor extends Component {
handleBlock = (plugin, data) => {
const { schema } = this.state;
const nodeType = schema.nodes[`plugin_${ plugin.get('id') }`];
this.view.props.onAction(this.view.state.tr.replaceSelection(nodeType.create(data.toJS())).action());
this.view.props.onAction(this.view.state.tr.replaceSelectionWith(nodeType.create(data.toJS())).action());
};
handleDragEnter = (e) => {
e.preventDefault();
this.setState({ dragging: true });
};
handleDragLeave = (e) => {
e.preventDefault();
this.setState({ dragging: false });
};
handleDragOver = (e) => {
e.preventDefault();
};
handleDrop = (e) => {
e.preventDefault();
this.setState({ dragging: false });
const { schema } = this.state;
const nodes = [];
if (e.dataTransfer.files && e.dataTransfer.files.length) {
Array.from(e.dataTransfer.files).forEach((file) => {
const mediaProxy = new MediaProxy(file.name, file);
this.props.onAddMedia(mediaProxy);
if (file.type.split('/')[0] === 'image') {
nodes.push(
schema.nodes.image.create({ src: mediaProxy.public_path, alt: file.name })
);
} else {
nodes.push(
schema.marks.link.create({ href: mediaProxy.public_path, title: file.name })
);
}
});
} else {
nodes.push(schema.nodes.paragraph.create({}, e.dataTransfer.getData('text/plain')));
}
nodes.forEach((node) => {
this.view.props.onAction(this.view.state.tr.replaceSelectionWith(node).action());
});
};
handleToggle = () => {
@ -219,9 +266,19 @@ export default class Editor extends Component {
render() {
const { onAddMedia, onRemoveMedia, getMedia } = this.props;
const { plugins, showToolbar, showBlockMenu, selectionPosition } = this.state;
const { plugins, showToolbar, showBlockMenu, selectionPosition, dragging } = this.state;
const classNames = [styles.editor];
if (dragging) {
classNames.push(styles.dragging);
}
return (<div className={styles.editor}>
return (<div
className={classNames.join(' ')}
onDragEnter={this.handleDragEnter}
onDragLeave={this.handleDragLeave}
onDragOver={this.handleDragOver}
onDrop={this.handleDrop}
>
<Toolbar
isOpen={showToolbar}
selectionPosition={selectionPosition}
@ -242,6 +299,7 @@ export default class Editor extends Component {
getMedia={getMedia}
/>
<div ref={this.handleRef} />
<div className={styles.shim} />
</div>);
}
}

View File

@ -228,8 +228,11 @@ export default function createMarkdownParser(schema, plugins) {
blockquote: {block: "blockquote"},
paragraph: {block: "paragraph"},
list_item: {block: "list_item"},
bullet_list: {block: "bullet_list"},
ordered_list: {block: "ordered_list", attrs: tok => ({order: +tok.attrGet("order") || 1})},
// Note - we force lists to be tight here, while that's not ProseMirror's default
// The default behavior means list elements always have a `p` inside, and we want
// to avoid tha.
bullet_list: {block: "bullet_list", attrs: tok => ({tight: true})},
ordered_list: {block: "ordered_list", attrs: tok => ({tight: true, order: +tok.attrGet("order") || 1})},
heading: {block: "heading", attrs: tok => ({level: +tok.tag.slice(1)})},
code_block: {block: "code_block"},
fence: {block: "code_block"},

View File

@ -24,6 +24,7 @@ const MarkdownPreview = ({ value, getMedia }) => {
value={value}
syntax={markdown}
schema={schema}
getMedia={getMedia}
/>
</div>
);

View File

@ -19,16 +19,22 @@ const htmlContent = `
</ol>
`;
function getMedia(path) {
return path;
}
storiesOf('MarkupItReactRenderer', module)
.add('Markdown', () => (
<MarkupItReactRenderer
value={mdContent}
syntax={markdownSyntax}
getMedia={getMedia}
/>
)).add('HTML', () => (
<MarkupItReactRenderer
value={htmlContent}
syntax={htmlSyntax}
getMedia={getMedia}
/>
));

View File

@ -12,7 +12,7 @@ function formatByType(type) {
return YamlFrontmatterFormatter;
}
function formatByExtension(extension) {
export function formatByExtension(extension) {
return {
yml: yamlFormatter,
json: jsonFormatter,

View File

@ -17,15 +17,18 @@ const medias = (state = Map(), action) => {
export default medias;
const memoizedProxies = {};
export const getMedia = (publicFolder, state, path) => {
// No path provided, skip
if (!path) return null;
if (state.has(path)) {
let proxy = state.get(path) || memoizedProxies[path];
if (proxy) {
// There is already a MediaProxy in memmory for this path. Use it.
return state.get(path);
return proxy;
}
// Create a new MediaProxy (for consistency) and return it.
return new MediaProxy(resolvePath(path, publicFolder), null, true);
proxy = memoizedProxies[path] = new MediaProxy(resolvePath(path, publicFolder), null, true);
return proxy;
};

329
yarn.lock
View File

@ -107,12 +107,12 @@ airbnb-js-shims@^1.0.0:
string.prototype.padstart "^3.0.0"
ajv-keywords@^1.0.0:
version "1.4.1"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.4.1.tgz#f080e635e230baae26537ce727f260ae62b43802"
version "1.5.0"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.0.tgz#c11e6859eafff83e0dafc416929472eca946aa2c"
ajv@^4.7.0:
version "4.10.1"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.10.1.tgz#6e1669b62d752424a73da9175901d0327adfc2a5"
version "4.10.3"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.10.3.tgz#3e4fea9675b157de7888b80dd0ed735b83f28e11"
dependencies:
co "^4.6.0"
json-stable-stringify "^1.0.1"
@ -256,8 +256,8 @@ asap@^2.0.3, asap@~2.0.3:
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.5.tgz#522765b50c3510490e52d7dcfe085ef9ba96958f"
asn1.js@^4.0.0:
version "4.9.0"
resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.0.tgz#f71a1243f3e79d46d7b07d7fbf4824ee73af054a"
version "4.9.1"
resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.9.1.tgz#48ba240b45a9280e94748990ba597d216617fd40"
dependencies:
bn.js "^4.0.0"
inherits "^2.0.1"
@ -301,7 +301,7 @@ async@^1.3.0, async@^1.4.0, async@^1.4.2, async@^1.5.0, async@1.x:
version "1.5.2"
resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
async@^2.0.1:
async@^2.0.1, async@^2.1.4:
version "2.1.4"
resolved "https://registry.yarnpkg.com/async/-/async-2.1.4.tgz#2d2160c7788032e4dd6cbe2502f1f9a2c8f6cde4"
dependencies:
@ -334,6 +334,31 @@ aws4@^1.2.1:
version "1.5.0"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755"
babel:
version "6.5.2"
resolved "https://registry.yarnpkg.com/babel/-/babel-6.5.2.tgz#59140607438270920047ff56f02b2d8630c2d129"
babel-cli:
version "6.18.0"
resolved "https://registry.yarnpkg.com/babel-cli/-/babel-cli-6.18.0.tgz#92117f341add9dead90f6fa7d0a97c0cc08ec186"
dependencies:
babel-core "^6.18.0"
babel-polyfill "^6.16.0"
babel-register "^6.18.0"
babel-runtime "^6.9.0"
commander "^2.8.1"
convert-source-map "^1.1.0"
fs-readdir-recursive "^1.0.0"
glob "^5.0.5"
lodash "^4.2.0"
output-file-sync "^1.1.0"
path-is-absolute "^1.0.0"
slash "^1.0.0"
source-map "^0.5.0"
v8flags "^2.0.10"
optionalDependencies:
chokidar "^1.0.0"
babel-code-frame@^6.16.0, babel-code-frame@^6.20.0:
version "6.20.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.20.0.tgz#b968f839090f9a8bc6d41938fb96cb84f7387b26"
@ -962,7 +987,7 @@ babel-plugin-transform-system-register@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/babel-plugin-transform-system-register/-/babel-plugin-transform-system-register-0.0.1.tgz#9dff40390c2763ac518f0b2ad7c5ea4f65a5be25"
babel-polyfill@^6.9.1:
babel-polyfill@^6.16.0, babel-polyfill@^6.9.1:
version "6.20.0"
resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.20.0.tgz#de4a371006139e20990aac0be367d398331204e7"
dependencies:
@ -1648,7 +1673,7 @@ combined-stream@^1.0.5, combined-stream@~1.0.5:
dependencies:
delayed-stream "~1.0.0"
commander@^2.9.0, commander@2.9.x:
commander@^2.8.1, commander@^2.9.0, commander@2.9.x:
version "2.9.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
dependencies:
@ -2068,8 +2093,8 @@ dateformat@^1.0.12:
meow "^3.3.0"
debug@^2.1.1, debug@^2.2.0:
version "2.5.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.5.1.tgz#9107bb4a506052ec2a02314bc606313ed2b921c1"
version "2.6.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b"
dependencies:
ms "0.7.2"
@ -2087,7 +2112,7 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
version "1.2.0"
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
deep-equal@^1.0.0, deep-equal@^1.0.1, deep-equal@~1.0.1:
deep-equal, deep-equal@^1.0.0, deep-equal@^1.0.1, deep-equal@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5"
@ -2190,8 +2215,8 @@ detect-indent@^4.0.0:
repeating "^2.0.0"
diff@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.1.0.tgz#9406c73a401e6c2b3ba901c5e2c44eb6a60c5385"
version "3.2.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9"
diffie-hellman@^5.0.0:
version "5.0.2"
@ -2546,8 +2571,8 @@ eslint-config-airbnb@^12.0.0:
eslint-config-airbnb-base "^8.0.0"
"eslint-config-netlify@github:netlify/eslint-config-netlify":
version "0.1.2"
resolved "https://codeload.github.com/netlify/eslint-config-netlify/tar.gz/1bca27f2b6c3698a45ae8fdd5058ce634a77414b"
version "0.1.3"
resolved "https://codeload.github.com/netlify/eslint-config-netlify/tar.gz/42e46d0b50b380da88db299c3fbe33b55621b87d"
dependencies:
babel-eslint "^7.0.0"
eslint "^3.9.1"
@ -2899,10 +2924,6 @@ extend@^3.0.0, extend@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
extending-char@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/extending-char/-/extending-char-1.0.1.tgz#4c6c0eee3658a49df1600b32fc73876f418c7c6c"
extglob@^0.3.1:
version "0.3.2"
resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
@ -2931,8 +2952,8 @@ falafel@^1.0.1:
object-keys "^1.0.6"
fast-levenshtein@~2.0.4:
version "2.0.5"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.5.tgz#bd33145744519ab1c36c3ee9f31f08e9079b67f2"
version "2.0.6"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
fastparse@^1.1.1:
version "1.1.1"
@ -2999,12 +3020,12 @@ filename-regex@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
fileset@0.2.x:
version "0.2.1"
resolved "https://registry.yarnpkg.com/fileset/-/fileset-0.2.1.tgz#588ef8973c6623b2a76df465105696b96aac8067"
fileset@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/fileset/-/fileset-2.0.3.tgz#8e7548a96d3cc2327ee5e674168723a333bba2a0"
dependencies:
glob "5.x"
minimatch "2.x"
glob "^7.0.3"
minimatch "^3.0.3"
fill-range@^2.1.0:
version "2.2.3"
@ -3129,7 +3150,11 @@ fresh@0.3.0:
fs-exists-sync@^0.1.0:
version "0.1.0"
resolved "http://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add"
fs-readdir-recursive@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.0.0.tgz#8cd1745c8b4f8a29c8caec392476921ba195f560"
fs.realpath@^1.0.0:
version "1.0.0"
@ -3283,7 +3308,7 @@ glob-parent@^2.0.0:
dependencies:
is-glob "^2.0.0"
glob@^5.0.15, glob@5.0.x, glob@5.x:
glob@^5.0.15, glob@^5.0.5, glob@5.0.x:
version "5.0.15"
resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
dependencies:
@ -3411,7 +3436,7 @@ got@^5.0.0:
unzip-response "^1.0.2"
url-parse-lax "^1.0.0"
graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6:
graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.4, graceful-fs@^4.1.6:
version "4.1.11"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
@ -4048,35 +4073,34 @@ isstream@~0.1.2:
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
istanbul-api@^1.0.0-aplha.10:
version "1.0.0-aplha.10"
resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.0.0-aplha.10.tgz#902edf5cf5404e0eba7e00ef46408488a0d3e337"
version "1.1.0"
resolved "https://registry.yarnpkg.com/istanbul-api/-/istanbul-api-1.1.0.tgz#fb3f62edd5bfc6ae09da09453ded6e10ae7e483b"
dependencies:
async "1.x"
clone "^1.0.2"
fileset "0.2.x"
istanbul-lib-coverage "^1.0.0-alpha"
istanbul-lib-hook "^1.0.0-alpha"
istanbul-lib-instrument "^1.0.0-alpha"
istanbul-lib-report "^1.0.0-alpha"
istanbul-lib-source-maps "^1.0.0-alpha"
istanbul-reports "^1.0.0-alpha"
js-yaml "3.x"
mkdirp "0.5.x"
once "1.x"
async "^2.1.4"
fileset "^2.0.2"
istanbul-lib-coverage "^1.0.0"
istanbul-lib-hook "^1.0.0-alpha.4"
istanbul-lib-instrument "^1.3.0"
istanbul-lib-report "^1.0.0-alpha.3"
istanbul-lib-source-maps "^1.1.0"
istanbul-reports "^1.0.0"
js-yaml "^3.7.0"
mkdirp "^0.5.1"
once "^1.4.0"
istanbul-lib-coverage@^1.0.0, istanbul-lib-coverage@^1.0.0-alpha, istanbul-lib-coverage@^1.0.0-alpha.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.0.tgz#c3f9b6d226da12424064cce87fce0fb57fdfa7a2"
istanbul-lib-hook@^1.0.0-alpha:
istanbul-lib-hook@^1.0.0-alpha.4:
version "1.0.0-alpha.4"
resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-1.0.0-alpha.4.tgz#8c5bb9f6fbd8526e0ae6cf639af28266906b938f"
dependencies:
append-transform "^0.3.0"
istanbul-lib-instrument@^1.0.0-alpha, istanbul-lib-instrument@^1.1.1, istanbul-lib-instrument@^1.1.4:
version "1.3.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.3.0.tgz#19f0a973397454989b98330333063a5b56df0e58"
istanbul-lib-instrument@^1.1.1, istanbul-lib-instrument@^1.1.4, istanbul-lib-instrument@^1.3.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.3.1.tgz#112c25a4f2f9bc361d13d14bbff992331b974e52"
dependencies:
babel-generator "^6.18.0"
babel-template "^6.16.0"
@ -4086,7 +4110,7 @@ istanbul-lib-instrument@^1.0.0-alpha, istanbul-lib-instrument@^1.1.1, istanbul-l
istanbul-lib-coverage "^1.0.0"
semver "^5.3.0"
istanbul-lib-report@^1.0.0-alpha:
istanbul-lib-report@^1.0.0-alpha.3:
version "1.0.0-alpha.3"
resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.0.0-alpha.3.tgz#32d5f6ec7f33ca3a602209e278b2e6ff143498af"
dependencies:
@ -4097,7 +4121,7 @@ istanbul-lib-report@^1.0.0-alpha:
rimraf "^2.4.3"
supports-color "^3.1.2"
istanbul-lib-source-maps@^1.0.0-alpha:
istanbul-lib-source-maps@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.1.0.tgz#9d429218f35b823560ea300a96ff0c3bbdab785f"
dependencies:
@ -4106,7 +4130,7 @@ istanbul-lib-source-maps@^1.0.0-alpha:
rimraf "^2.4.4"
source-map "^0.5.3"
istanbul-reports@^1.0.0-alpha:
istanbul-reports@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.0.0.tgz#24b4eb2b1d29d50f103b369bd422f6e640aa0777"
dependencies:
@ -4872,8 +4896,8 @@ localforage@^1.4.2:
lie "3.0.2"
lodash-es@^4.2.0, lodash-es@^4.2.1:
version "4.17.2"
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.2.tgz#59011b585166e613eb9dd5fc256b2cd1a30f3712"
version "4.17.3"
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.3.tgz#567a08d2f0c91d92b31ce35c5565e1f337fb81db"
lodash._arraycopy@^3.0.0:
version "3.0.0"
@ -5234,8 +5258,8 @@ lodash@^3.7.0:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
lodash@^4.0.0, lodash@^4.1.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.16.2, lodash@^4.17.2, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@^4.5.1, lodash@^4.6.1, lodash@^4.7.0, "lodash@4.6.1 || ^4.16.1":
version "4.17.2"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.2.tgz#34a3055babe04ce42467b607d700072c7ff6bf42"
version "4.17.3"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.3.tgz#557ed7d2a9438cac5fd5a43043ca60cb455e01f7"
lodash@~4.16.4:
version "4.16.6"
@ -5485,12 +5509,6 @@ minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@~3.0.2, "minimat
dependencies:
brace-expansion "^1.0.0"
minimatch@2.x:
version "2.0.10"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7"
dependencies:
brace-expansion "^1.0.0"
minimatch@3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.2.tgz#0f398a7300ea441e9c348c83d98ab8c9dbf9c40a"
@ -5921,7 +5939,7 @@ on-headers@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
once@^1.3.0, once@^1.3.1, once@1.x:
once@^1.3.0, once@^1.3.1, once@^1.4.0, once@1.x:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
dependencies:
@ -5976,6 +5994,10 @@ ora@^0.2.1, ora@^0.2.3:
cli-spinners "^0.1.2"
object-assign "^4.0.1"
orderedmap@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/orderedmap/-/orderedmap-1.0.0.tgz#d90fc2ba1ed085190907d601dec6e6a53f8d41ba"
original@>=0.0.5:
version "1.0.0"
resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b"
@ -6011,6 +6033,14 @@ osenv@^0.1.0, osenv@0:
os-homedir "^1.0.0"
os-tmpdir "^1.0.0"
output-file-sync@^1.1.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/output-file-sync/-/output-file-sync-1.1.2.tgz#d0a33eefe61a205facb90092e826598d5245ce76"
dependencies:
graceful-fs "^4.1.4"
mkdirp "^0.5.1"
object-assign "^4.1.0"
package-json@^2.0.0, package-json@^2.0.1:
version "2.4.0"
resolved "https://registry.yarnpkg.com/package-json/-/package-json-2.4.0.tgz#0d15bd67d1cbbddbb2ca222ff2edb86bcb31a8bb"
@ -6497,8 +6527,8 @@ postcss-minify-gradients@^1.0.1:
postcss-value-parser "^3.3.0"
postcss-minify-params@^1.0.4:
version "1.2.1"
resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.1.tgz#c899444d9e2ff8933018befac151fbfadf10e737"
version "1.2.2"
resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz#ad2ce071373b943b3d930a3fa59a358c28d6f1f3"
dependencies:
alphanum-sort "^1.0.1"
postcss "^5.0.2"
@ -6506,8 +6536,8 @@ postcss-minify-params@^1.0.4:
uniqs "^2.0.0"
postcss-minify-selectors@^2.0.4:
version "2.0.7"
resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.0.7.tgz#bfb9248fe14db33770f036572de6b4897c48d81c"
version "2.1.0"
resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.1.0.tgz#d08c37fd15f9d543e20e2c87dcb493844ccd8f6d"
dependencies:
alphanum-sort "^1.0.2"
has "^1.0.1"
@ -6718,8 +6748,8 @@ postcss@^4.1.7:
source-map "~0.4.2"
postcss@^5.0.0, postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.18, postcss@^5.0.19, postcss@^5.0.2, postcss@^5.0.20, postcss@^5.0.21, postcss@^5.0.3, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.1.0, postcss@^5.1.1, postcss@^5.1.2, postcss@^5.2.0, postcss@^5.2.4, postcss@^5.2.5, postcss@^5.2.6:
version "5.2.6"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.6.tgz#a252cd67cd52585035f17e9ad12b35137a7bdd9e"
version "5.2.8"
resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.8.tgz#05720c49df23c79bda51fd01daeb1e9222e94390"
dependencies:
chalk "^1.1.3"
js-base64 "^2.1.9"
@ -6797,88 +6827,90 @@ proper-lockfile@^1.1.2:
graceful-fs "^4.1.2"
retry "^0.10.0"
prosemirror-commands@^0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-0.12.0.tgz#d790fe3dbabb5221e4d87e82834835e0f65881b2"
prosemirror-commands@^0.16.0:
version "0.16.0"
resolved "https://registry.yarnpkg.com/prosemirror-commands/-/prosemirror-commands-0.16.0.tgz#061ec07de7a695cc3afbf0fb8b1ce7b8feaafb3b"
dependencies:
extending-char "^1.0.0"
prosemirror-model "^0.12.0"
prosemirror-state "^0.12.0"
prosemirror-transform "^0.12.0"
prosemirror-model "^0.16.0"
prosemirror-state "^0.16.0"
prosemirror-transform "^0.16.0"
prosemirror-history@^0.12.0:
version "0.12.1"
resolved "https://registry.yarnpkg.com/prosemirror-history/-/prosemirror-history-0.12.1.tgz#cbcdb536455b6af36bd2ba3ccced5387e5cfbfe1"
prosemirror-history@^0.16.0:
version "0.16.0"
resolved "https://registry.yarnpkg.com/prosemirror-history/-/prosemirror-history-0.16.0.tgz#62babd5e048f9b035b539b297514350856b3e27f"
dependencies:
prosemirror-state "^0.12.0"
prosemirror-transform "^0.12.0"
prosemirror-state "^0.16.0"
prosemirror-transform "^0.16.0"
rope-sequence "^1.2.0"
prosemirror-inputrules@^0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-0.12.0.tgz#2e07b5cb1bfc7007c2b51ea5394303204b4b34df"
prosemirror-inputrules@^0.16.0:
version "0.16.0"
resolved "https://registry.yarnpkg.com/prosemirror-inputrules/-/prosemirror-inputrules-0.16.0.tgz#dc2d3f3e79c4c28ed7e1208608fa854f25f88aba"
dependencies:
prosemirror-state "^0.12.0"
prosemirror-transform "^0.12.0"
prosemirror-state "^0.16.0"
prosemirror-transform "^0.16.0"
prosemirror-keymap@^0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-0.12.0.tgz#b70645b5d3f5ff4843bc6d26a74fa0022b504221"
prosemirror-keymap@^0.16.0:
version "0.16.0"
resolved "https://registry.yarnpkg.com/prosemirror-keymap/-/prosemirror-keymap-0.16.0.tgz#00d98e62161f78d17bcec88dbe0dde822dfd461d"
dependencies:
prosemirror-state "^0.12.0"
prosemirror-state "^0.16.0"
w3c-keyname "^1.1.0"
prosemirror-markdown@^0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/prosemirror-markdown/-/prosemirror-markdown-0.12.0.tgz#7ff8557c159168dcb532833c0b23b5b2866715c8"
prosemirror-markdown@^0.16.0:
version "0.16.0"
resolved "https://registry.yarnpkg.com/prosemirror-markdown/-/prosemirror-markdown-0.16.0.tgz#3d5c66841340f5e4e3f81109faaa1760d93b1dfd"
dependencies:
markdown-it "^6.0.4"
prosemirror-model "~0.12.0"
prosemirror-model "~0.16.0"
prosemirror-model@^0.12.0, prosemirror-model@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-0.12.0.tgz#5430c4056f2d3fe87d36de3f73aa9d9d07b0e8a7"
prosemirror-schema-basic@^0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/prosemirror-schema-basic/-/prosemirror-schema-basic-0.12.0.tgz#9af876f8a915e75ba65847c794eebfc0df9f274e"
prosemirror-model@^0.16.0, prosemirror-model@~0.16.0:
version "0.16.1"
resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-0.16.1.tgz#02bb4d0912d9f8847c002902304b784124736f6d"
dependencies:
prosemirror-model "^0.12.0"
orderedmap "^1.0.0"
prosemirror-schema-list@^0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-0.12.0.tgz#d93ba425ed202fc113d7b3388e5d9be1f698c276"
prosemirror-schema-basic@^0.16.0:
version "0.16.0"
resolved "https://registry.yarnpkg.com/prosemirror-schema-basic/-/prosemirror-schema-basic-0.16.0.tgz#1a7c45fd25b5307e361edb16ab31f308dbacde41"
dependencies:
prosemirror-model "^0.12.0"
prosemirror-transform "^0.12.0"
prosemirror-model "^0.16.0"
prosemirror-schema-table@^0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/prosemirror-schema-table/-/prosemirror-schema-table-0.12.0.tgz#a665dcb66bbd4c0ff2eac492d82991c6c410b5f3"
prosemirror-schema-list@^0.16.0:
version "0.16.0"
resolved "https://registry.yarnpkg.com/prosemirror-schema-list/-/prosemirror-schema-list-0.16.0.tgz#b7dd1e7f42da4e487b1eb0199a9c77e78dcadc93"
dependencies:
prosemirror-model "^0.12.0"
prosemirror-state "^0.12.0"
prosemirror-transform "^0.12.0"
prosemirror-model "^0.16.0"
prosemirror-transform "^0.16.0"
prosemirror-state@^0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-0.12.0.tgz#16e13d57d91840d0c3c340d47694efabeb77e987"
prosemirror-schema-table@^0.16.0:
version "0.16.0"
resolved "https://registry.yarnpkg.com/prosemirror-schema-table/-/prosemirror-schema-table-0.16.0.tgz#b94dc190dd86b3a976faa8d6444b7a23821bb30f"
dependencies:
prosemirror-model "^0.12.0"
prosemirror-transform "^0.12.0"
prosemirror-model "^0.16.0"
prosemirror-state "^0.16.0"
prosemirror-transform "^0.16.0"
prosemirror-transform@^0.12.0, prosemirror-transform@^0.12.1:
version "0.12.1"
resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-0.12.1.tgz#69bca7e55976815e59281fbd8af4518f5ab90844"
prosemirror-state@^0.16.0:
version "0.16.0"
resolved "https://registry.yarnpkg.com/prosemirror-state/-/prosemirror-state-0.16.0.tgz#51959ff8c0624058ce2abf2481f988a7bf33fe78"
dependencies:
prosemirror-model "^0.12.0"
prosemirror-model "^0.16.0"
prosemirror-transform "^0.16.0"
prosemirror-view@^0.12.0:
version "0.12.2"
resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-0.12.2.tgz#4a48bfe2ae3119b8c0c79166d7cd73e82284c99d"
prosemirror-transform@^0.16.0:
version "0.16.0"
resolved "https://registry.yarnpkg.com/prosemirror-transform/-/prosemirror-transform-0.16.0.tgz#fec4296d0876fa7e8f698773fa0d7008e2779317"
dependencies:
prosemirror-model "^0.12.0"
prosemirror-state "^0.12.0"
prosemirror-model "^0.16.0"
prosemirror-view@^0.16.0:
version "0.16.2"
resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-0.16.2.tgz#63ed4cdfd000242d769b8cac6ea94b6de22b1954"
dependencies:
prosemirror-model "^0.16.0"
prosemirror-state "^0.16.0"
prosemirror-transform "^0.16.0"
proxy-addr@~1.1.2:
version "1.1.2"
@ -6974,7 +7006,7 @@ range-parser@^1.0.3, range-parser@~1.2.0:
range-utils@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/range-utils/-/range-utils-1.1.0.tgz#b27a9e8669d76eab7f7611f3120b39655b2e9495"
resolved "http://registry.npmjs.org/range-utils/-/range-utils-1.1.0.tgz#b27a9e8669d76eab7f7611f3120b39655b2e9495"
dependencies:
extend "^3.0.0"
is "^3.1.0"
@ -7211,7 +7243,7 @@ react-toolbox@^1.2.1:
react-topbar-progress-indicator@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/react-topbar-progress-indicator/-/react-topbar-progress-indicator-1.0.0.tgz#3379ab2cb840c1bc1bc22fb5fc871688b9104dd4"
resolved "http://registry.npmjs.org/react-topbar-progress-indicator/-/react-topbar-progress-indicator-1.0.0.tgz#3379ab2cb840c1bc1bc22fb5fc871688b9104dd4"
dependencies:
topbar "^0.1.3"
@ -7635,7 +7667,19 @@ rxjs@^5.0.0-beta.11:
dependencies:
symbol-observable "^1.0.1"
sane@^1.3.3, sane@~1.4.1:
sane@^1.3.3:
version "1.5.0"
resolved "https://registry.yarnpkg.com/sane/-/sane-1.5.0.tgz#a4adeae764d048621ecb27d5f9ecf513101939f3"
dependencies:
anymatch "^1.3.0"
exec-sh "^0.2.0"
fb-watchman "^1.8.0"
minimatch "^3.0.2"
minimist "^1.1.1"
walker "~1.0.5"
watch "~0.10.0"
sane@~1.4.1:
version "1.4.1"
resolved "https://registry.yarnpkg.com/sane/-/sane-1.4.1.tgz#88f763d74040f5f0c256b6163db399bf110ac715"
dependencies:
@ -7881,8 +7925,8 @@ source-list-map@^0.1.4, source-list-map@~0.1.0, source-list-map@~0.1.7:
resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.7.tgz#d4b5ce2a46535c72c7e8527c71a77d250618172e"
source-map-support@^0.4.0, source-map-support@^0.4.2:
version "0.4.7"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.7.tgz#7a7988e0e66241c778c78dd179199bb6bcd35bd6"
version "0.4.8"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.8.tgz#4871918d8a3af07289182e974e32844327b2e98b"
dependencies:
source-map "^0.5.3"
@ -8318,7 +8362,7 @@ symbol-observable@^1.0.1, symbol-observable@^1.0.2:
synesthesia@^1.0.1:
version "1.0.1"
resolved "http://registry.npmjs.org/synesthesia/-/synesthesia-1.0.1.tgz#5ef95ea548c0d5c6e6f9bb4b0d0731dff864a777"
resolved "https://registry.yarnpkg.com/synesthesia/-/synesthesia-1.0.1.tgz#5ef95ea548c0d5c6e6f9bb4b0d0731dff864a777"
dependencies:
css-color-names "0.0.3"
@ -8472,8 +8516,8 @@ through2@^0.6.1, through2@^0.6.2, through2@^0.6.3, through2@^0.6.5, through2@~0.
xtend ">=4.0.0 <4.1.0-0"
timed-out@^3.0.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.0.tgz#43b98b14bb712c9161c28f4dc1f3068d67a04ec2"
version "3.1.3"
resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-3.1.3.tgz#95860bfcc5c76c277f8f8326fd0f5b2e20eba217"
timers-browserify@^1.4.2:
version "1.4.2"
@ -8605,7 +8649,7 @@ uid@0.0.2:
unc-path-regex@^0.1.0:
version "0.1.2"
resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
resolved "http://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
uniq@^1.0.1:
version "1.0.1"
@ -8689,6 +8733,10 @@ url@^0.11.0:
punycode "1.3.2"
querystring "0.2.0"
user-home@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190"
user-home@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/user-home/-/user-home-2.0.0.tgz#9c70bfd8169bc1dcbf48604e0f04b8b49cde9e9f"
@ -8717,6 +8765,12 @@ uuid@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1"
v8flags@^2.0.10:
version "2.0.11"
resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881"
dependencies:
user-home "^1.1.1"
validate-npm-package-license@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
@ -9095,8 +9149,8 @@ yargs@^5.0.0:
yargs-parser "^3.2.0"
yargs@^6.0.0, yargs@^6.3.0:
version "6.5.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.5.0.tgz#a902e23a1f0fe912b2a03f6131b7ed740c9718ff"
version "6.6.0"
resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208"
dependencies:
camelcase "^3.0.0"
cliui "^3.2.0"
@ -9109,7 +9163,6 @@ yargs@^6.0.0, yargs@^6.3.0:
set-blocking "^2.0.0"
string-width "^1.0.2"
which-module "^1.0.0"
window-size "^0.2.0"
y18n "^3.2.1"
yargs-parser "^4.2.0"